diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a319321cb26..b2188ec1be6 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -24,8 +24,8 @@ /docker-compose.yaml @hguthrie -LICENSE.txt @leslietilling +LICENSE.txt @jeff-matthews -COPYING.txt @leslietilling +COPYING.txt @jeff-matthews -CODEOWNERS @leslietilling @dshevtsov +CODEOWNERS @jeff-matthews @dshevtsov diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index 1a6f267d8e4..a02084614d5 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -1,73 +1,76 @@ -# Contributor Covenant Code of Conduct +# Magento Code of Conduct ## Our Pledge -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -education, socio-economic status, nationality, personal appearance, race, -religion, or sexual identity and orientation. +We as members, contributors, and leaders pledge to make participation in our project and community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. ## Our Standards -Examples of behavior that contributes to creating a positive environment -include: +Examples of behavior that contribute to a positive environment for our project and community include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +* Focusing on what is best, not just for us as individuals but for the overall community -Examples of unacceptable behavior by participants include: +Examples of unacceptable behavior include: -* Using sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks +* The use of sexualized language or imagery, and sexual attention or advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks * Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting +* Publishing others' private information, such as a physical or email address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. +Project maintainers are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any instances of unacceptable behavior. -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. +This Code of Conduct applies when an individual is representing the project or its community both within project spaces and in public spaces. Examples of representing a project or community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team in [Slack](https://magentocommeng.slack.com/archives/CAN932A3H). All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by first contacting the project team at `engcom@adobe.com`. Oversight of Adobe projects is handled by the Adobe Open Source Office, which has final say in any violations and enforcement of this Code of Conduct and can be reached at `Grp-opensourceoffice@adobe.com`. All complaints will be reviewed and investigated promptly and fairly. -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. +The project team must respect the privacy and security of the reporter of any incident. -## Attribution +Project maintainers who do not follow or enforce the Code of Conduct may face temporary or permanent repercussions as determined by other members of the project's leadership or the Adobe Open Source Office. + +## Enforcement Guidelines + +Project maintainers will follow these Community Impact Guidelines in determining the consequences for any action they deem to be in violation of this Code of Conduct: + +### 1. Correction + +Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. + +Consequence: A private, written warning from project maintainers describing the violation and why the behavior was unacceptable. A public apology may be requested from the violator before any further involvement in the project by violator. + +### 2. Warning + +Community Impact: A relatively minor violation through a single incident or series of actions. -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html +Consequence: A written warning from project maintainers that includes stated consequences for continued unacceptable behavior. Violator must refrain from interacting with the people involved for a specified period of time as determined by the project maintainers, including, but not limited to, unsolicited interaction with those enforcing the Code of Conduct through channels such as community spaces and social media. Continued violations may lead to a temporary or permanent ban. + +### 3. Temporary Ban + +Community Impact: A more serious violation of community standards, including sustained unacceptable behavior. + +Consequence: A temporary ban from any interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Failure to comply with the temporary ban may lead to a permanent ban. + +### 4. Permanent Ban + +Community Impact: Demonstrating a consistent pattern of violation of community standards or an egregious violation of community standards, including, but not limited to, sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. + +Consequence: A permanent ban from any interaction with the community. + +## Attribution -[homepage]: https://www.contributor-covenant.org +This Code of Conduct is adapted from the Contributor Covenant, version 2.1, +available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index e106a7b7c21..14995a92a49 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -20,16 +20,17 @@ on: ############### # Set the Job # ############### +permissions: + contents: read + jobs: mdl: name: mdl runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Ruby - uses: actions/setup-ruby@v1 - with: - ruby-version: 2.6 + uses: ruby/setup-ruby@v1 - name: Install mdl gem run: gem install mdl - name: Run mdl @@ -46,7 +47,7 @@ jobs: # Checkout the code base # ########################## - name: Checkout Code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: # Full git history is needed to get a proper list of changed files within `super-linter` fetch-depth: 0 @@ -55,7 +56,7 @@ jobs: # Run Linter against code base # ################################ - name: Lint Code Base - uses: github/super-linter/slim@v4.9.2 + uses: github/super-linter/slim@v4.9.7 env: VALIDATE_ALL_CODEBASE: false DEFAULT_BRANCH: master diff --git a/.gitignore b/.gitignore index 682bab6a230..10339208556 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,4 @@ _algolia_api_key /src/mbi/ /src/page-builder/ -/src/page-builder-migration/ -/src/guides/m1x/ /src/mftf/ diff --git a/Docfile.yml b/Docfile.yml index 8ba3ef68e6c..6b93f68f76a 100644 --- a/Docfile.yml +++ b/Docfile.yml @@ -7,12 +7,12 @@ content_map: filter: true - directory: src/mftf - repository: magento/magento2-functional-testing-framework - branch: master + repository: commerce-docs/magento2-functional-testing-framework-public + branch: migrated-docs filter: true - directory: src/mftf/v2 - repository: magento/magento2-functional-testing-framework + repository: commerce-docs/magento2-functional-testing-framework-public branch: 2.x-develop filter: true - diff --git a/Gemfile b/Gemfile index 55d297c215e..633d70e8fa0 100644 --- a/Gemfile +++ b/Gemfile @@ -2,29 +2,33 @@ source 'https://rubygems.org' -gem 'devdocs', git: 'https://github.com/magento-devdocs/devdocs-theme.git' -gem 'jekyll' +gem 'devdocs', git: 'https://github.com/commerce-docs/devdocs-theme.git' +gem 'jekyll', '4.2.2' gem 'rake' -gem 'whatsup_github' +# gem 'whatsup_github' -gem 'wdm', platform: :mswin +# gem 'wdm', platform: :mswin group :test do gem 'html-proofer' gem 'launchy' - gem 'mdl' + # gem 'mdl' end -group :optimization do - gem 'image_optim' - gem 'image_optim_pack' -end +# group :optimization do +# gem 'image_optim' +# gem 'image_optim_pack' +# end group :jekyll_plugins do - gem 'jekyll-algolia', '~> 1.0' + # gem 'jekyll-algolia', '~> 1.0' gem 'jekyll-optional-front-matter' gem 'jekyll-redirect-from' gem 'jekyll-relative-links' gem 'jekyll-sitemap' gem 'jekyll-titles-from-headings' end + +group :resolutions do + gem 'ffi', '1.15.5' +end \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index 48c4ded247c..7c5117154af 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,85 +1,38 @@ GIT - remote: https://github.com/magento-devdocs/devdocs-theme.git - revision: d8dd15c703cd55a4f04ff798df63a7238d43eb2d + remote: https://github.com/commerce-docs/devdocs-theme.git + revision: 04462e71c495bb63ecdf0fd61ca679b116da9026 specs: - devdocs (18) + devdocs (20) jekyll (>= 4.0) GEM remote: https://rubygems.org/ specs: - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) - algolia_html_extractor (2.6.4) - json (~> 2.0) - nokogiri (~> 1.10) - algoliasearch (1.27.5) - httpclient (~> 2.8, >= 2.8.3) - json (>= 1.5.1) - chef-utils (17.10.0) - concurrent-ruby + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + childprocess (5.0.0) colorator (1.1.0) - concurrent-ruby (1.1.10) + concurrent-ruby (1.3.3) em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) - ethon (0.15.0) + ethon (0.16.0) ffi (>= 1.15.0) eventmachine (1.2.7) - exifr (1.3.9) - faraday (1.10.0) - faraday-em_http (~> 1.0) - faraday-em_synchrony (~> 1.0) - faraday-excon (~> 1.1) - faraday-httpclient (~> 1.0) - faraday-multipart (~> 1.0) - faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.0) - faraday-patron (~> 1.0) - faraday-rack (~> 1.0) - faraday-retry (~> 1.0) - ruby2_keywords (>= 0.0.4) - faraday-em_http (1.0.0) - faraday-em_synchrony (1.0.0) - faraday-excon (1.1.0) - faraday-httpclient (1.0.1) - faraday-multipart (1.0.3) - multipart-post (>= 1.2, < 3) - faraday-net_http (1.0.1) - faraday-net_http_persistent (1.2.0) - faraday-patron (1.0.0) - faraday-rack (1.0.0) - faraday-retry (1.0.3) ffi (1.15.5) - filesize (0.2.0) forwardable-extended (2.6.0) - fspath (3.1.2) - html-proofer (3.19.3) + html-proofer (4.4.3) addressable (~> 2.3) mercenary (~> 0.3) - nokogiri (~> 1.12) - parallel (~> 1.3) + nokogiri (~> 1.13) + parallel (~> 1.10) rainbow (~> 3.0) typhoeus (~> 1.3) yell (~> 2.0) + zeitwerk (~> 2.5) http_parser.rb (0.8.0) - httpclient (2.8.3) - i18n (1.10.0) + i18n (1.14.5) concurrent-ruby (~> 1.0) - image_optim (0.31.1) - exifr (~> 1.2, >= 1.2.2) - fspath (~> 3.0) - image_size (>= 1.5, < 4) - in_threads (~> 1.3) - progress (~> 3.0, >= 3.0.1) - image_optim_pack (0.8.0.20220131) - fspath (>= 2.1, < 4) - image_optim (~> 0.19) - image_optim_pack (0.8.0.20220131-x86_64-darwin) - fspath (>= 2.1, < 4) - image_optim (~> 0.19) - image_size (3.0.1) - in_threads (1.6.0) jekyll (4.2.2) addressable (~> 2.4) colorator (~> 1.0) @@ -95,20 +48,11 @@ GEM rouge (~> 3.0) safe_yaml (~> 1.0) terminal-table (~> 2.0) - jekyll-algolia (1.7.1) - algolia_html_extractor (~> 2.6) - algoliasearch (~> 1.26) - filesize (~> 0.1) - jekyll (>= 3.6, < 5.0) - json (~> 2.0) - nokogiri (~> 1.6) - progressbar (~> 1.9) - verbal_expressions (~> 0.1.5) jekyll-optional-front-matter (0.3.2) jekyll (>= 3.0, < 5.0) jekyll-redirect-from (0.16.0) jekyll (>= 3.3, < 5.0) - jekyll-relative-links (0.6.1) + jekyll-relative-links (0.7.0) jekyll (>= 3.3, < 5.0) jekyll-sass-converter (2.2.0) sassc (> 2.0.1, < 3.0) @@ -118,99 +62,71 @@ GEM jekyll (>= 3.3, < 5.0) jekyll-watch (2.2.1) listen (~> 3.0) - json (2.6.1) - kramdown (2.3.2) + kramdown (2.4.0) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) - launchy (2.5.0) - addressable (~> 2.7) - liquid (4.0.3) - listen (3.7.1) + launchy (3.0.1) + addressable (~> 2.8) + childprocess (~> 5.0) + liquid (4.0.4) + listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - mdl (0.11.0) - kramdown (~> 2.3) - kramdown-parser-gfm (~> 1.1) - mixlib-cli (~> 2.1, >= 2.1.1) - mixlib-config (>= 2.2.1, < 4) - mixlib-shellout mercenary (0.4.0) - mini_portile2 (2.8.0) - mixlib-cli (2.1.8) - mixlib-config (3.0.9) - tomlrb - mixlib-shellout (3.2.6) - chef-utils - multipart-post (2.1.1) - netrc (0.11.0) - nokogiri (1.13.4) - mini_portile2 (~> 2.8.0) + mini_portile2 (2.8.7) + nokogiri (1.15.6) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + nokogiri (1.15.6-arm64-darwin) racc (~> 1.4) - nokogiri (1.13.4-x86_64-darwin) + nokogiri (1.15.6-x86_64-darwin) racc (~> 1.4) - octokit (4.22.0) - faraday (>= 0.9) - sawyer (~> 0.8.0, >= 0.5.3) - parallel (1.22.1) + parallel (1.25.1) pathutil (0.16.2) forwardable-extended (~> 2.6) - progress (3.6.0) - progressbar (1.11.0) - public_suffix (4.0.6) - racc (1.6.0) + public_suffix (5.1.1) + racc (1.8.1) rainbow (3.1.1) - rake (13.0.6) - rb-fsevent (0.11.1) - rb-inotify (0.10.1) + rake (13.2.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) ffi (~> 1.0) - rexml (3.2.5) - rouge (3.28.0) - ruby2_keywords (0.0.5) + rexml (3.3.6) + strscan + rouge (3.30.0) safe_yaml (1.0.5) sassc (2.4.0) ffi (~> 1.9) - sawyer (0.8.2) - addressable (>= 2.3.5) - faraday (> 0.8, < 2.0) + strscan (3.1.0) terminal-table (2.0.0) unicode-display_width (~> 1.1, >= 1.1.1) - thor (1.2.1) - tomlrb (2.0.1) - typhoeus (1.4.0) + typhoeus (1.4.1) ethon (>= 0.9.0) unicode-display_width (1.8.0) - verbal_expressions (0.1.5) - wdm (0.1.1) - whatsup_github (0.4.2) - netrc (~> 0.11) - octokit (~> 4.20) - thor (~> 1.1) yell (2.2.2) + zeitwerk (2.6.17) PLATFORMS + arm64-darwin-22 ruby x86-mswin32 x86_64-darwin-19 x86_64-darwin-21 + x86_64-darwin-22 DEPENDENCIES devdocs! + ffi (= 1.15.5) html-proofer - image_optim - image_optim_pack - jekyll - jekyll-algolia (~> 1.0) + jekyll (= 4.2.2) jekyll-optional-front-matter jekyll-redirect-from jekyll-relative-links jekyll-sitemap jekyll-titles-from-headings launchy - mdl rake - wdm - whatsup_github BUNDLED WITH 2.1.4 diff --git a/README.md b/README.md index 13a83832b8b..169996e61be 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,20 @@ # Adobe Commerce Developer Documentation -Welcome! This site contains the latest Adobe Commerce and Magento Open Source developer documentation for ongoing releases of both products. For additional information, see our [Contribution Guide](https://github.com/magento/devdocs/blob/master/.github/CONTRIBUTING.md). +This project contains the source code of the Adobe Commerce and Magento Open Source developer documentation website for the latest 2.3 release. > **Important update** > -> The developer documentation for Adobe Commerce and Magento Open Source is moving to the [Adobe Developer](developer.adobe.com/commerce) and [Adobe Experience League](https://experienceleague.adobe.com/docs/commerce.html) sites. After a topic is moved, use the link in the topic header to find the new location. +> Adobe Commerce and Magento Open Source 2.4.x documentation has been migrated to Adobe sites. See our new landing pages to access the most current information. > ->![Example of a topic header](https://user-images.githubusercontent.com/6391769/166058975-15c288d6-b266-4f1d-8b52-08ada3ca026f.png) +>[Adobe Commerce Developer Documentation](https://developer.adobe.com/commerce/docs/) (Adobe Developer site)—Develop, customize, integrate, extend, and use advanced capabilities > -> To track relocated topics by guide, see [Migrated Topics](https://devdocs.magento.com/migrated.html). - -## Contributors - -Our goal is to provide the Commerce and Open Source communities with comprehensive and quality technical documentation. We believe that to accomplish that goal we need experts from the community to share their knowledge with us and each other. We are thankful to all of our contributors for improving the documentation. - -![](https://raw.githubusercontent.com/wiki/magento/magento2/images/dev_docs_contributors.png) +>[Adobe Commerce Documentation](https://experienceleague.adobe.com/docs/commerce.html) (Adobe Experience League)—Plan, implement, operate, upgrade, and maintain your Commerce projects +> +> Some content was consolidated or moved to different guides. If you have trouble finding a topic, see the [Migrated topics](https://commerce-docs.github.io/devdocs-archive/migrated-topics.html). +> +> We welcome contributions to migrated content! You can find similar links to GitHub on the Adobe sites. +> +> The content at https://devdocs.magento.com is no longer supported since [the 2.3 release line has reached end of support](https://experienceleague.adobe.com/docs/commerce-operations/release/versions.html#2.3). ## Building this site @@ -24,7 +24,7 @@ You can build the site locally in the following ways: - [Installing the project dependencies locally](#build-locally) (Mac, Linux) - [Using Docker (docker-compose)](https://github.com/magento/devdocs/wiki/Build-DevDocs-with-Docker) (Mac, Linux, Windows) -- [Using a Vagrant virtual machine](https://github.com/magento-devdocs/vagrant-for-magento-devdocs) (Mac, Linux, Windows) +- [Using a Vagrant virtual machine](https://github.com/commerce-docs/vagrant-for-magento-devdocs) (Mac, Linux, Windows) - [Build DevDocs in Windows](https://github.com/magento/devdocs/wiki/Build-DevDocs-in-Windows) (Windows 7 & 10) - [Building older versions of the documentation](https://github.com/magento/devdocs/wiki/Build-DevDocs-with-Docker) @@ -129,30 +129,9 @@ Once you have completed preparing your environment, you can build locally and pr > ***TIP*** > Leave the serve terminal open and running. Every time you save changes to a file, it automatically regenerates the site so you can test the output immediately. Changing the `_config.yml` file or other YAML file with data or configuration requires a fresh build (stop and start the server again with `rake preview`). -### Exclude private repositories - -If you do not have access to the private repositories required by Docfile, you can exclude them in `_config.local.yml` to avoid the link checking report about missing pages. - -Create a `_config.local.yml` file at the root of the project directory and exclude the paths you do not want to generate: - -```yaml -exclude: - - page-builder -``` - ->**TIP** ->You can override any other configuration options using this file. - ->**TIP** ->To ignore the `_config.local.yml` file and preview the site with default configuration, use the `preview:all` option : -> ->```bash ->rake preview:all ->``` - ## Building old versions -The published website contains documentation for the most current Adobe Commerce and Magento Open Source releases only. For cases, when you need to view the content as it was for an earlier release, we created [tags](https://github.com/magento/devdocs/tags) in this repository. Typically, they point at the commit when the release notes were finalized and published. +The published website contains documentation for the latest 2.3.x Adobe Commerce and Magento Open Source release only. For cases, when you need to view the content as it was for an earlier release, we created [tags](https://github.com/magento/devdocs/tags) in this repository. Typically, they point at the commit when the release notes were finalized and published. To view the list of available tags: @@ -171,10 +150,13 @@ Find guidelines for building the site locally in the checked out README. >**NOTE** >There is no guarantee the site will be built, since it can have dependencies on the external resources that are not available anymore. +## Archived docs + +To view the archived documentation, see . + *** -If you have questions, open an issue and ask us. We're looking forward to hearing from you! +Our public channels: - [Slack](https://magentocommeng.slack.com/archives/CAN932A3H) ([Join us](https://opensource.magento.com/slack)) -- [Visit our wiki](https://github.com/magento/devdocs/wiki) - Twitter @AdobeCommrcDocs diff --git a/Rakefile b/Rakefile index d9d402b58c2..41dea3436c8 100644 --- a/Rakefile +++ b/Rakefile @@ -13,6 +13,8 @@ require 'html-proofer' require 'kramdown' require 'launchy' require 'colorator' +require 'csv' +require 'rdoc' # Require helper methods from the 'lib' directory Dir.glob('lib/**/*.rb') { |file| require_relative(file) } diff --git a/_checks/html_check_hook.rb b/_checks/html_check_hook.rb index 1883745fb88..819d57a6d04 100644 --- a/_checks/html_check_hook.rb +++ b/_checks/html_check_hook.rb @@ -19,21 +19,21 @@ # Do not exit when html-proofer raises an error begin - # Check 'url_ignore' in '_config.checks.yml' + # Check 'ignore_urls' in '_config.checks.yml' # and add 'excludes' from Jekyll configuration. # checks_config = YAML.load_file('_config.checks.yml') - url_ignore = checks_config.dig('html-proofer', :url_ignore) + ignore_urls = checks_config.dig('html-proofer', :ignore_urls) jekyll_excludes = site.config['exclude'] jekyll_excludes_as_regex = jekyll_excludes.map do |item| Regexp.new Regexp.escape(item) end - if url_ignore - url_ignore.push(jekyll_excludes_as_regex).flatten!.uniq! + if ignore_urls + ignore_urls.push(jekyll_excludes_as_regex).flatten!.uniq! else - checks_config['html-proofer'][:url_ignore] = jekyll_excludes_as_regex + checks_config['html-proofer'][:ignore_urls] = jekyll_excludes_as_regex end # Read configuration options for html-proofer diff --git a/_config.checks.yml b/_config.checks.yml index a53513ee405..789f1526c03 100644 --- a/_config.checks.yml +++ b/_config.checks.yml @@ -4,40 +4,22 @@ # html-proofer: - # Validate HTML - :check_html: true - + # Do not flag a tags missing href + :allow_missing_href: true + # Do not check external links. :disable_external: true - # Report only errors that fall within the 4xx status code range. - :only_4xx: true + # Ignore images with missing alt tags + :ignore_missing_alt: true # Ignores images with empty alt tags. - :empty_alt_ignore: true - - # Sort errors by description in the report - :error_sort: :desc - - # Use up to 3 parallel processes to speed up internal file checks. - :parallel: - :in_processes: 3 - - :cache: - :timeframe: 2w + :ignore_empty_alt: true - # Ignore entirely the files which pathname matches a specified pattern - :file_ignore: + # Ignore entirely the files which pathname matches a specified pattern + :ignore_files: - !ruby/regexp /guides\/v2\.3\/mrg/ - !ruby/regexp /guides\/v2\.4\/mrg/ - - :internal_domains: - - devdocs.magento.com - - # Ignore any link that includes a specified pattern - :url_ignore: - - !ruby/regexp /guides\/v2\.2/ - - !ruby/regexp /\/v2\.4\/mrg/ - - !ruby/regexp /\/redoc\/2\.4\// - - !ruby/regexp /\/download\// - + - !ruby/regexp /mbi/ + - !ruby/regexp /mftf/ + - !ruby/regexp /page-builder/ diff --git a/_config.yml b/_config.yml index b534866884b..f6df5bc28c5 100644 --- a/_config.yml +++ b/_config.yml @@ -9,7 +9,7 @@ description: Adobe Commerce Developer Guide # the base protocol and domain url: https://devdocs.magento.com -# Site theme: https://github.com/magento-devdocs/devdocs-theme +# Site theme: https://github.com/commerce-docs/devdocs-theme # About themes in Jekyll: https://jekyllrb.com/docs/themes/ theme: devdocs @@ -50,9 +50,9 @@ defaults: github_repo: https://github.com/magento/devdocs/ github_files: https://github.com/magento/devdocs/blob/master/ # Enables the 'Edit this page on GitHub' appearances on pages - github_link: true + github_link: false # Enables the 'Give us feedback' appearances on pages - feedback_link: true + feedback_link: false - scope: @@ -96,6 +96,7 @@ defaults: scope: path: mftf/v2 values: + guide_version: '2.3' group: mftf-v2 github_files: https://github.com/magento/magento2-functional-testing-framework/tree/2.6.5/ github_repo: https://github.com/magento/magento2-functional-testing-framework/ @@ -127,7 +128,7 @@ defaults: path: guides/v2.4/mrg values: group: module-reference-guide-2_4 - github_link: false + layout: migrated - scope: @@ -206,7 +207,7 @@ algolia: # It is safe to use in production front-end code. # Used at src/_includes/layout/header-scripts.html # For more details, refer to: https://www.algolia.com/doc/guides/security/api-keys/#search-only-api-key - search_only_key: d2d0f33ab73e291ef8d88d8b565e754c + search_only_key: d2d0f33ab73e291ef8d88d8b565e754c #gitleaks:allow google: gtm: GTM-KRCLXBB diff --git a/_plugins/generators/migrated_log.rb b/_plugins/generators/migrated_log.rb index a58abc98477..0177d92729a 100644 --- a/_plugins/generators/migrated_log.rb +++ b/_plugins/generators/migrated_log.rb @@ -3,7 +3,15 @@ # Copyright © Adobe, Inc. All rights reserved. # See COPYING.txt for license details. -# This plugin generates the page that contains a list of migrated topics. +# This plugin generates the page that contains a list of migrated topics: https://devdocs.magento.com/migrated.html +# It adds global data: +# - site.data.migration.migrated_pages +# - site.data.migration.deprecated_pages +# - site.data.migration.all_migrating_pages +# - site.data.migration.remained_migrating_pages +# +# And generates the `tmp/migrated-from-to.csv` file with the list of links "from" and "to" for the migrated pages. +# To enable the file generation, add 'migrated_log: generate_file' to _config.local.yml. # module Jekyll @@ -12,39 +20,68 @@ class MigratedLog < Generator safe true def generate(site) - # Make the site object available in any scope in this class. @site = site - migrated_pages = @site.pages.filter { |page| page.data['layout'] == 'migrated' } + pages = @site.pages + migrated_pages = pages.select { |page| page.data['status']&.include? 'migrated' } + v2_3_pages = pages.select { |page| page.data['guide_version'] == '2.3' } + remained_pages = pages - v2_3_pages + deprecated_pages = remained_pages.select { |page| page.data['group'].nil? || (page.data['redirect_to'] && !page.data['status']) } + all_migrating_pages = remained_pages - deprecated_pages + remained_migrating_pages = all_migrating_pages - migrated_pages + migrated_pages_data = [] - url_prefix = site.config['url'] + site.config['baseurl'] + if (site.config['migrated_log']&.include? 'generate_file') + # Create a CSV file that contains links 'from' and 'to' for migrated pages + migrated_pages = pages.select { |pages| pages.data['status']&.include? 'migrated' } + redirects = migrated_pages.map { |page| "https://devdocs.magento.com#{page.data['redirect']['from']},#{page.data['redirect']['to']}" } + File.write('tmp/migrated-from-to.csv', redirects.join("\n")) + end - migrated_pages_data = [] + # Create an array of JSON objects that contain metadata for migrated pages migrated_pages.each do |page| migrated_page = { path: page.path, - title: page.data['title'], - guide: @site.data['toc'][page.data['group']]['label'], - migrated_from: url_prefix + page.url, - migrated_to: page.data['migrated_to'], - migrated_to_source: if page.data['migrated_to'].start_with?('https://experienceleague.adobe.com') - 'Adobe Experience League' - elsif page.data['migrated_to'].start_with?('https://developer.adobe.com') - 'Adobe Developer' - else - abort "Error in '#{page.path}'.\nThe 'migrated_to' parameter in the front matter points to the wrong domain: #{page.data['migrated_to']}.\nShould be 'https://experienceleague.adobe.com' or 'https://developer.adobe.com'".red - end + title: page.data['title'] || abort("Error in '#{page.path}'.\n Check 'title' in the file's frontmatter.".red), + guide: if page.data['layout'].include?('video') + 'Video Tutorials' + else + @site.data.dig('toc', page.data['group'], + 'label') || abort("Error in '#{page.path}'.\n Check 'group' in the file's frontmatter or 'label' in the corresponding TOC.".red) + end, + migrated_from: site.baseurl + page.url, + redirected_to: page.data['redirect_to'] || abort("Error in '#{page.path}'.\n Check 'redirect_to' in the file's frontmatter.".red), + redirected_to_source: if page.data['redirect_to'].start_with?('https://experienceleague.adobe.com') + 'Adobe Experience League' + elsif page.data['redirect_to'].start_with?('https://developer.adobe.com') + 'Adobe Developer' + else + abort "Error in '#{page.path}'.\nThe 'redirected_to' parameter in the front matter points to the wrong domain: #{page.data['redirect_to']}.\nShould be 'https://experienceleague.adobe.com' or 'https://developer.adobe.com'".red + end } migrated_pages_data << migrated_page end - migrated_pages_by_group = migrated_pages_data.group_by { |page| page[:guide] } - - content = "The folowing is the list of topics that have been migrated and will be redirected soon.\n\n" + # Group migrated pages by guide + migrated_pages_by_group = migrated_pages_data.group_by { |page| page[:guide] }.sort.to_h + # Introductory text in the Migrated topics page + content = "The following #{migrated_pages.size} topics have been migrated and redirected.\n\n" migrated_pages_by_group.each do |guide, topics| content += "\n## #{guide}\n\n\n" topics.sort_by { |topic| topic[:title] } .each do |topic| - content += "1. [#{topic[:title]}](#{topic[:migrated_from]}) has moved to [#{topic[:migrated_to_source]}](#{topic[:migrated_to]})\n" + content += "1. [#{topic[:title]}](#{topic[:migrated_from]}) has moved to [#{topic[:redirected_to_source]}](#{topic[:redirected_to]})\n" + end + end + + content += "\n***\n\n\n" + content += "\n## Pages to be migrated\n\n\n" + + if remained_migrating_pages.empty? + content += 'All 2.4 and versionless pages were migrated' + else + remained_migrating_pages.sort_by(&:path) + .each do |page| + content += "1. `#{page.path}`\n" end end @@ -67,7 +104,17 @@ def generate(site) # Add the newly constructed page object to the rest of pages # on the site. - @site.pages << topic + pages << topic + + site.data['migration'] = + { + 'migrated_pages' => migrated_pages.map(&:path), + 'deprecated_pages' => deprecated_pages.map(&:path), + 'all_migrating_pages' => all_migrating_pages.map(&:path), + 'remained_migrating_pages' => remained_migrating_pages.map(&:path) + } + + migrated_pages_data end end end diff --git a/_plugins/generators/mrg_v2_3.rb b/_plugins/generators/mrg_v2_3.rb deleted file mode 100644 index dd21ebafb9a..00000000000 --- a/_plugins/generators/mrg_v2_3.rb +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright © Magento, Inc. All rights reserved. -# See COPYING.txt for license details. - -# frozen_string_literal: true - -# This plugin generates module-specific topics in the 'guides/v2.3/mrg'. -# It takes data from files in '_data/codebase/mrg' and generates -# a virtual .md page for it with the same name. -# - -module Jekyll - # Custom generator for MRG pages - class Mrg23PageGenerator < Generator - safe true - - def generate(site) - # Make the site object available in any scope in this class. - @site = site - - # Data from '_data/codebase/mrg' as a Hash where - # the filename is a key and its content is a value. - mrg_data = @site.data['codebase']['v2_3']['mrg'] - # Loop through the hash where a key is assigned to a 'mod' (module is a - # special token in Ruby and should not be used) and value is assigned to - # 'metadata'. - # For example, for '_data/codebase/v2_3/mrg/NewModule.yml' that contains - # - # title: Magento_NewModule - # content: Magento_NewModule is an awesome module - # - # this will create a new virtual page guides/v2.3/mrg/NewModule.md - # that would correspond to: - # --- - # title: Magento_NewModule - # --- - # Magento_NewModule is an awesome module. - # - mrg_data.each do |mod, metadata| - # PageWithoutAFile handles processing files without reading it. - # mrg_topic is a virtual '.md' file - # See details in https://www.rubydoc.info/gems/jekyll/Jekyll/PageWithoutAFile - # See tests in https://github.com/jekyll/jekyll/blob/master/test/test_page_without_a_file.rb - mrg_topic = PageWithoutAFile.new( - @site, - @site.source, - 'guides/v2.3/mrg/', - "#{mod}.md" - ) - mrg_topic.content = metadata['content'] - mrg_topic.data['title'] = metadata['title'] - mrg_topic.process("#{mod}.md") - - # Add the newly constructed page object to the rest of pages - # on the site. - @site.pages << mrg_topic - end - end - end -end diff --git a/_plugins/generators/mrg_v2_4.rb b/_plugins/generators/mrg_v2_4.rb deleted file mode 100644 index 55fe063135f..00000000000 --- a/_plugins/generators/mrg_v2_4.rb +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright © Magento, Inc. All rights reserved. -# See COPYING.txt for license details. - -# frozen_string_literal: true - -# This plugin generates module-specific topics in the 'guides/v2.4/mrg'. -# It takes data from files in '_data/codebase/mrg' and generates -# a virtual .md page for it with the same name. -# - -module Jekyll - # Custom generator for MRG pages - class Mrg24PageGenerator < Generator - safe true - - def generate(site) - # Make the site object available in any scope in this class. - @site = site - - # Data from '_data/codebase/mrg' as a Hash where - # the filename is a key and its content is a value. - mrg_data = @site.data['codebase']['v2_4']['mrg'] - # Loop through the hash where a key is assigned to a 'mod' (module is a - # special token in Ruby and should not be used) and value is assigned to - # 'metadata'. - # For example, for '_data/codebase/v2_4/mrg/NewModule.yml' that contains - # - # title: Magento_NewModule - # content: Magento_NewModule is an awesome module - # - # this will create a new virtual page guides/v2.4/mrg/NewModule.md - # that would correspond to: - # --- - # title: Magento_NewModule - # --- - # Magento_NewModule is an awesome module. - # - mrg_data.each do |mod, metadata| - # PageWithoutAFile handles processing files without reading it. - # mrg_topic is a virtual '.md' file - # See details in https://www.rubydoc.info/gems/jekyll/Jekyll/PageWithoutAFile - # See tests in https://github.com/jekyll/jekyll/blob/master/test/test_page_without_a_file.rb - mrg_topic = PageWithoutAFile.new( - @site, - @site.source, - 'guides/v2.4/mrg/', - "#{mod}.md" - ) - mrg_topic.content = metadata['content'] - mrg_topic.data['title'] = metadata['title'] - mrg_topic.process("#{mod}.md") - - # Add the newly constructed page object to the rest of pages - # on the site. - @site.pages << mrg_topic - end - end - end -end diff --git a/_plugins/page-params/page_canonical_url.rb b/_plugins/page-params/page_canonical_url.rb deleted file mode 100644 index 41244ea9a03..00000000000 --- a/_plugins/page-params/page_canonical_url.rb +++ /dev/null @@ -1,45 +0,0 @@ -# frozen_string_literal: true - -# Copyright © Magento, Inc. All rights reserved. -# See COPYING.txt for license details. - -# -# This plugin generates a canonical_url parameter for each page implicitly, unless -# canonical_url is set in front matter manually. -# The parameter is an absolute link that is intended to be used in layouts as -# a canonical link using Liquid as 'page.canonical_url'. -# For pages in 'guides' of a version different from the default version specified -# in the _config.yml, the plugin substitutes version to the default version. -# For example: if 'page.url' is '/guides/v2.3/ftf/introduction.html', -# then 'page.canonical_url' for the page is site.url + site.baseurl + '/guides/v2.4/ftf/introduction.html'. -# In all other cases, 'page.canonical_url' is site.url + site.baseurl + page.url'. -# The plugin is disabled in serving mode. -# -Jekyll::Hooks.register :pages, :post_init do |page| - # Do nothing in serving mode - next if page.site.config['serving'] - - # Do nothing for redirects - next if page.name == 'redirect.html' - - # Glossary. Create variables to be used in the script. - site_url = page.site.config['url'] - site_baseurl = page.site.baseurl - default_version = page.site.config['version'] - page_url = page.url - data = page.data - pattern_to_replace = %r{/guides/v2\.3} - page_canonical_url = data['canonical_url'] - - # Create the 'canonical_url' parameter and assign a value to it. - if page_canonical_url.nil? - relative_page_canonical_url = - if page_url.start_with? pattern_to_replace - page_url.sub pattern_to_replace, "/guides/v#{default_version}" - else - page_url - end - page_canonical_url = File.join site_url, site_baseurl, relative_page_canonical_url - data['canonical_url'] = page_canonical_url - end -end diff --git a/_plugins/page-params/redirect_23.rb b/_plugins/page-params/redirect_23.rb new file mode 100644 index 00000000000..4636ab5e805 --- /dev/null +++ b/_plugins/page-params/redirect_23.rb @@ -0,0 +1,46 @@ +# Copyright 2023 Adobe +# All Rights Reserved. +# +# NOTICE: All information contained herein is, and remains +# the property of Adobe and its suppliers, if any. The intellectual +# and technical concepts contained herein are proprietary to Adobe +# and its suppliers and are protected by all applicable intellectual +# property laws, including trade secret and copyright laws. +# Dissemination of this information or reproduction of this material +# is strictly forbidden + +# This plugin redirects 2.3 pages to the DevSite. +# It uses redirect metadata from the 2.4 version of the page. +# If there is no 2.4 version of the page, then it redirects to https://developer.adobe.com/commerce/docs/ + +# frozen_string_literal: true + +Jekyll::Hooks.register :site, :post_read do |site| + pages = site.pages + + pages.each do |page| + # Skip pages where the parameter is already set + next unless page.path.start_with? 'guides/v2.3/' + + # Process only files with 'md' and 'html' extensions + next unless File.extname(page.path).match?(/md|html/) + + # Skip redirects + next if page.name == 'redirect.html' + + # Skip pages where the parameter is already set + next if page.data['redirect_to'] + + path_23 = page.path + + path_24 = path_23.sub('v2.3', 'v2.4') + + page_24 = pages.find { |page| page.path == path_24 } + + if page_24.nil? + page.data['redirect_to'] = 'https://developer.adobe.com/commerce/docs/' + else + page.data['redirect_to'] = page_24.data['redirect_to'] + end + end +end diff --git a/_plugins/page-params/redirect_mftf_v2.rb b/_plugins/page-params/redirect_mftf_v2.rb new file mode 100644 index 00000000000..7427ea2d931 --- /dev/null +++ b/_plugins/page-params/redirect_mftf_v2.rb @@ -0,0 +1,28 @@ +# Copyright 2023 Adobe +# All Rights Reserved. +# +# NOTICE: All information contained herein is, and remains +# the property of Adobe and its suppliers, if any. The intellectual +# and technical concepts contained herein are proprietary to Adobe +# and its suppliers and are protected by all applicable intellectual +# property laws, including trade secret and copyright laws. +# Dissemination of this information or reproduction of this material +# is strictly forbidden + +# This plugin redirects MFTF v2 pages to the MFTF repo. + +# frozen_string_literal: true + +Jekyll::Hooks.register :site, :post_read do |site| + pages = site.pages + + pages.each do |page| + # Skip pages where the parameter is already set + next unless page.path.start_with? 'mftf/v2' + + # Process only files with 'md' and 'html' extensions + next unless File.extname(page.path).match?(/md/) + + page.data['redirect_to'] = "https://github.com/magento/magento2-functional-testing-framework/blob/2.x-develop/#{page.path.delete_prefix('mftf/v2/')}" + end +end diff --git a/lib/link_checker.rb b/lib/link_checker.rb index 8cf99ee1a8b..2139bfcb436 100644 --- a/lib/link_checker.rb +++ b/lib/link_checker.rb @@ -17,7 +17,7 @@ def self.options baseurl = ENV['BUILD_NUMBER'] return config['html-proofer'] unless baseurl - url_swap = { url_swap: { %r{\A/#{baseurl}} => '' } } + url_swap = { swap_urls: { %r{\A/#{baseurl}} => '' } } config['html-proofer'].merge(url_swap) end diff --git a/rakelib/multirepo.rake b/rakelib/multirepo.rake index fdcdc615e75..b05fdc734ee 100644 --- a/rakelib/multirepo.rake +++ b/rakelib/multirepo.rake @@ -34,7 +34,7 @@ namespace :multirepo do abort 'Provide a directory name for the multirepo docs. Example: dir=src/mftf' unless dir abort "'#{dir}' directory already exists" if Dir.exist? dir unless repo - abort 'Provide a repository cloning URL (SSH).Example: repo=git@github.com:magento-devdocs/magento2-functional-testing-framework.git' + abort 'Provide a repository cloning URL (SSH).Example: repo=git@github.com:commerce-docs/magento2-functional-testing-framework.git' end abort 'Provide a branch name for the multirepo docs. Example: branch=master' unless branch diff --git a/rakelib/test.rake b/rakelib/test.rake index a0cdaa83b8b..21b49b78460 100644 --- a/rakelib/test.rake +++ b/rakelib/test.rake @@ -16,9 +16,10 @@ namespace :test do desc 'Check the existing _site for broken INTERNAL links' task :html do - puts 'Checking HTML ...'.magenta + # puts 'Checking HTML ...'.magenta - LinkChecker.check_site + # LinkChecker.check_site + puts 'Link checking has been disabled since the project is no longer supported'.magenta end desc 'Check the existing _site for broken links and report to a separate file' @@ -48,19 +49,20 @@ namespace :test do desc 'Test Markdown style with mdl' task :md do - puts 'Testing Markdown style with mdl ...'.magenta - print 'List the rules: $ '.magenta - sh 'bin/mdl -l --style=_checks/styles/style-rules-prod' - puts 'Linting ...'.magenta - output = - `bin/mdl \ - --style=_checks/styles/style-rules-prod \ - --ignore-front-matter \ - --git-recurse \ - -- .` - puts output.yellow - abort 'Fix the reported issues'.red unless output.empty? - puts 'No issues found'.green + # puts 'Testing Markdown style with mdl ...'.magenta + # print 'List the rules: $ '.magenta + # sh 'bin/mdl -l --style=_checks/styles/style-rules-prod' + # puts 'Linting ...'.magenta + # output = + # `bin/mdl \ + # --style=_checks/styles/style-rules-prod \ + # --ignore-front-matter \ + # --git-recurse \ + # -- .` + # puts output.yellow + # abort 'Fix the reported issues'.red unless output.empty? + # puts 'No issues found'.green + puts 'Markdown testing has been disabled since the project is no longer supported'.magenta end desc 'Find unused images. To exclude by regex pattern, use the "exclude_img" argument. Example of excluding a "layout" directory: "rake test:unused_includes exclude_img=/layout/"' diff --git a/rakelib/update.rake b/rakelib/update.rake index 11c282a1e7e..b5128d08722 100644 --- a/rakelib/update.rake +++ b/rakelib/update.rake @@ -48,6 +48,66 @@ namespace :update do update_dir subrepo['directory'] end end + + desc "Find and replace links from 'tmp/migrated-from-to.csv' in files at the provided directory. + Arguments: + - 'dir' is an absolute path to the directory to process the links. Required. + - 'exclude' is an fnmatch pattern for paths to exclude from processing. For fnmatch format, see https://ruby-doc.org/core-2.7.5/Dir.html#method-c-glob. Optional. + Examples: + rake update:migrated_links_at dir=path/to/codebase. + rake update:migrated_links_at dir=path/to/codebase exclude='**/Test/**'" + task :migrated_links_at do + # check if 'tmp/migrated-from-to.csv' exists + links_file = 'tmp/migrated-from-to.csv' + unless File.exist? links_file + abort 'FAILED. Missing "tmp/migrated-from-to.csv" file. Make sure that your _config.local.yml file contains the "migrated_log: generate_file" parameter.' + end + # check if the provided directory ('dir') exist + dir = File.expand_path(ENV['dir']) + unless dir + abort 'FAILED. Missing argument "dir". Provide a directory to check the links. Example: rake update:migrated_links_at dir=path/to/codebase' + end + unless Dir.exist?(dir) + abort "FAILED. Check the path provided through the 'dir' argument. The provide directory does not exist: #{dir}" + end + exclude = ENV['exclude'] + # parse 'tmp/migrated-from-to.csv' + links = CSV.read links_file + # for each file in dir, find and replace all links + puts 'Work in progress...'.magenta + dir_glob_pattern = File.join(dir, '**', '*') + full_file_list = Dir[dir_glob_pattern] + # exclude paths by pattern from the file list if the 'exclude' argument was added + if exclude + exclude_glob_pattern = File.join(dir, exclude) + excluded_file_list = Dir[exclude_glob_pattern] + final_file_list = full_file_list - excluded_file_list + else + final_file_list = full_file_list + end + + final_file_list.each do |file| + # ignore directory paths + next if File.directory? file + # ignore symlinks + next if File.symlink? file + # ignore empty files + next if File.zero? file + # ignore binary files + next if RDoc::Parser.binary? file + + # read the file + content = File.read file + # iterate through the array of links + links.each do |redirect| + # replace first link from the array with the second links + content.gsub!(redirect[0], redirect[1]) + end + # write the update content back to the file + File.write(file, content) + end + puts 'Done!'.green + end end def update_dir(dir) diff --git a/src/404.md b/src/404.md index 3302aabccb7..0cf8c777b08 100644 --- a/src/404.md +++ b/src/404.md @@ -2,6 +2,7 @@ layout: full-width title: Page Not Found permalink: /404.html +redirect_to: https://developer.adobe.com/commerce/docs/ --- ## Sorry! diff --git a/src/_data/codebase/v2_3/mrg/module-admin-gws-configurable-product.yml b/src/_data/codebase/v2_3/mrg/module-admin-gws-configurable-product.yml index 3133db624c0..e7dd02be932 100644 --- a/src/_data/codebase/v2_3/mrg/module-admin-gws-configurable-product.yml +++ b/src/_data/codebase/v2_3/mrg/module-admin-gws-configurable-product.yml @@ -23,4 +23,4 @@ content: |- ## Additional information - For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](http://devdocs.magento.com). + For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](https://devdocs.magento.com). diff --git a/src/_data/codebase/v2_3/mrg/module-admin-gws-staging.yml b/src/_data/codebase/v2_3/mrg/module-admin-gws-staging.yml index 684dd29f454..ba8e6fcc175 100644 --- a/src/_data/codebase/v2_3/mrg/module-admin-gws-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-admin-gws-staging.yml @@ -23,4 +23,4 @@ content: |- ## Additional information - For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](http://devdocs.magento.com). + For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](https://devdocs.magento.com). diff --git a/src/_data/codebase/v2_3/mrg/module-advanced-search.yml b/src/_data/codebase/v2_3/mrg/module-advanced-search.yml index 93449f57c7c..2790e04e730 100644 --- a/src/_data/codebase/v2_3/mrg/module-advanced-search.yml +++ b/src/_data/codebase/v2_3/mrg/module-advanced-search.yml @@ -13,7 +13,7 @@ content: "The Magento_AdvancedSearch module introduces advanced search functiona enables you to override the functionality of the Magento_AdvancedSearch module.\n\n### Events\n\nThis module observes the following event:\n\n - `catalogsearch_query_save_after` in the `Magento\\AdvancedSearch\\Model\\Recommendations\\SaveSearchQueryRelationsObserver` - file. \n\nFor information about an event in Magento 2, see [Events and observers](http://devdocs.magento.com/guides/v2.3/extension-dev-guide/events-and-observers.html#events).\n\n### + file. \n\nFor information about an event in Magento 2, see [Events and observers](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/events-and-observers.html#events).\n\n### Layouts\n\nThe module interacts with the following layout handles in the `view/adminhtml/layout` directory:\n\n- `catalog_search_block`\n- `catalog_search_edit`\n- `catalog_search_relatedgrid`\n\nThe module interacts with the following layout handles in the `view/frontend/layout` diff --git a/src/_data/codebase/v2_3/mrg/module-authorizenet-acceptjs.yml b/src/_data/codebase/v2_3/mrg/module-authorizenet-acceptjs.yml index 751925d44a1..0ec3f71982e 100644 --- a/src/_data/codebase/v2_3/mrg/module-authorizenet-acceptjs.yml +++ b/src/_data/codebase/v2_3/mrg/module-authorizenet-acceptjs.yml @@ -13,7 +13,7 @@ content: |- `Gateway/` - the directory that contains payment gateway command interfaces and service classes. - For information about typical file structure of a module in Magento 2, see [Module file structure](http://devdocs.magento.com/guides/v2.3/extension-dev-guide/build/module-file-structure.html#module-file-structure). + For information about typical file structure of a module in Magento 2, see [Module file structure](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/build/module-file-structure.html#module-file-structure). ## Extensibility diff --git a/src/_data/codebase/v2_3/mrg/module-authorizenet.yml b/src/_data/codebase/v2_3/mrg/module-authorizenet.yml index 433fbcccad7..3bf5ffde9a6 100644 --- a/src/_data/codebase/v2_3/mrg/module-authorizenet.yml +++ b/src/_data/codebase/v2_3/mrg/module-authorizenet.yml @@ -16,7 +16,7 @@ content: "The Magento_Authorizenet module implements the integration with the Au class).\n \n\nThis module observes the following events:\n\n - `checkout_submit_all_after` event in the `Magento\\Authorizenet\\Observer\\SaveOrderAfterSubmitObserver` file.\n - `checkout_directpost_placeOrder` event in the `Magento\\Authorizenet\\Observer\\AddFieldsToResponseObserver` - file.\n\nFor information about events in Magento 2, see [Events and observers](http://devdocs.magento.com/guides/v2.3/extension-dev-guide/events-and-observers.html#events).\n\n### + file.\n\nFor information about events in Magento 2, see [Events and observers](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/events-and-observers.html#events).\n\n### Layouts\n\nThis module introduces the following layouts and layout handles in the `view/adminhtml/layout` directory:\n\n- `adminhtml_authorizenet_directpost_payment_redirect`\n\nThis module introduces the following layouts and layout handles in the `view/frontend/layout` diff --git a/src/_data/codebase/v2_3/mrg/module-b2b.yml b/src/_data/codebase/v2_3/mrg/module-b2b.yml index 732bd149f00..e46d97e311a 100644 --- a/src/_data/codebase/v2_3/mrg/module-b2b.yml +++ b/src/_data/codebase/v2_3/mrg/module-b2b.yml @@ -9,10 +9,10 @@ content: "## Overview\n\nThe Magento_b2b module is the base module for B2B. It m and it is still available in the admin panel.\n\n## Installation details\n\nThis module must be installed to use and to configure the other B2B modules. It can be uninstalled after other B2B modules are uninstalled.\n\n## Structure\n \n[Learn - about a typical file structure for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + about a typical file structure for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_B2b module. - For more information about the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_B2b module.\n \n \n## Additional information\n \nYou can track [backward incompatible changes made in a Magento B2b - mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-banner-page-builder-analytics.yml b/src/_data/codebase/v2_3/mrg/module-banner-page-builder-analytics.yml index 0d8fa409089..483e78a7294 100644 --- a/src/_data/codebase/v2_3/mrg/module-banner-page-builder-analytics.yml +++ b/src/_data/codebase/v2_3/mrg/module-banner-page-builder-analytics.yml @@ -2,4 +2,4 @@ title: BannerPageBuilderAnalytics content: The Magento_BannerPageBuilderAnalytics module configures data definitions for a data collection related to the PageBuilder module entities to be used in [Advanced - Reporting](http://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). + Reporting](https://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). diff --git a/src/_data/codebase/v2_3/mrg/module-bundle-import-export-staging.yml b/src/_data/codebase/v2_3/mrg/module-bundle-import-export-staging.yml index de030a25231..bc7e81c4ad6 100644 --- a/src/_data/codebase/v2_3/mrg/module-bundle-import-export-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-bundle-import-export-staging.yml @@ -23,4 +23,4 @@ content: |- ## Additional information - For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](http://devdocs.magento.com). + For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](https://devdocs.magento.com). diff --git a/src/_data/codebase/v2_3/mrg/module-bundle-negotiable-quote.yml b/src/_data/codebase/v2_3/mrg/module-bundle-negotiable-quote.yml index 97d9009ac90..964f332d916 100644 --- a/src/_data/codebase/v2_3/mrg/module-bundle-negotiable-quote.yml +++ b/src/_data/codebase/v2_3/mrg/module-bundle-negotiable-quote.yml @@ -9,11 +9,11 @@ content: "## Overview\n\nThe Magento_BundleNegotiableQuote module enables bundle which must be installed and enabled first. \n \nThe Magento_BundleNegotiableQuote module does not create any backward incompatible changes and can be uninstalled at any time. \n \n## Structure\n \n[Learn about a typical file structure for a Magento - 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_BundleNegotiableQuote module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_BundleNegotiableQuote module.\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-bundle-requisition-list.yml b/src/_data/codebase/v2_3/mrg/module-bundle-requisition-list.yml index 139af41296c..f97ef185f7a 100644 --- a/src/_data/codebase/v2_3/mrg/module-bundle-requisition-list.yml +++ b/src/_data/codebase/v2_3/mrg/module-bundle-requisition-list.yml @@ -9,8 +9,8 @@ content: "## Overview\n\nThe Magento_BundleRequisitionList module enables bundle which must be installed and enabled first. \n \nThe Magento_BundleRequisitionList module does not create any backward incompatible changes and can be uninstalled at any time. \n \n## Structure\n \n[Learn about a typical file structure for a Magento - 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n### Layouts\n \nYou can extend and override layouts in the `Magento\\BundleRequisitionList\\view\\frontend\\layout` - directories.\n\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n\n## + directories.\n\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-bundle-shared-catalog.yml b/src/_data/codebase/v2_3/mrg/module-bundle-shared-catalog.yml index e84e65ae324..f0147a85579 100644 --- a/src/_data/codebase/v2_3/mrg/module-bundle-shared-catalog.yml +++ b/src/_data/codebase/v2_3/mrg/module-bundle-shared-catalog.yml @@ -11,16 +11,16 @@ content: "## Overview\n\nThe Magento_BundleSharedCatalog module enables bundle p which must be installed and enabled first. \n \nThe Magento_BundleSharedCatalog module does not create any backward incompatible changes and can be uninstalled at any time. \n \n## Structure\n \n[Learn about a typical file structure for a Magento - 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_BundleSharedCatalog module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_BundleSharedCatalog module.\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\BundleSharedCatalog\\view\\adminhtml\\layout` - directories.\n\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n + directories.\n\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n \n### UI components\n\nThe following directory contains extensible UI components: \n\n* `Magento\\BundleSharedCatalog\\view\\adminhtml\\ui_component` - renderer for - pricing and structure listings\n\nFor more information, see [UI Listing/Grid Component](http://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## + pricing and structure listings\n\nFor more information, see [UI Listing/Grid Component](https://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-bundle-staging.yml b/src/_data/codebase/v2_3/mrg/module-bundle-staging.yml index 4983481ac52..65e7d007c2c 100644 --- a/src/_data/codebase/v2_3/mrg/module-bundle-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-bundle-staging.yml @@ -21,14 +21,14 @@ content: |- ## Extension Points - Extension points enable extension developers to interact with the Magento_BundleStaging module. You can interact with the Magento_BundleStaging module using the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). + Extension points enable extension developers to interact with the Magento_BundleStaging module. You can interact with the Magento_BundleStaging module using the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). - [Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_BundleStaging module. + [Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_BundleStaging module. ### UI components - You can extend Bundle updates product listing using the grid UI component located in the `Magento/BundleStaging/view/adminhtml/ui_component/bundle_update_product_listing.xml`. For more information, see [UI Listing/Grid Component](http://devdocs.magento.com/guides/v2.1/ui-components/ui-listing-grid.html). + You can extend Bundle updates product listing using the grid UI component located in the `Magento/BundleStaging/view/adminhtml/ui_component/bundle_update_product_listing.xml`. For more information, see [UI Listing/Grid Component](https://devdocs.magento.com/guides/v2.1/ui-components/ui-listing-grid.html). ## Additional information - For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](http://devdocs.magento.com). Also, there you can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](https://devdocs.magento.com). Also, there you can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-catalog-import-export-staging.yml b/src/_data/codebase/v2_3/mrg/module-catalog-import-export-staging.yml index 6656030fdb3..6db2a530151 100644 --- a/src/_data/codebase/v2_3/mrg/module-catalog-import-export-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-catalog-import-export-staging.yml @@ -22,8 +22,8 @@ content: |- The Magento_CatalogImportExportStaging module does not provide any specific extension points. You can extend it using the Magento extension mechanism. - For more information about Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html) and [Magento dependency injection](http://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html). + For more information about Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html) and [Magento dependency injection](https://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html). ## Additional information - For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](http://devdocs.magento.com). Also, there you can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](https://devdocs.magento.com). Also, there you can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-catalog-inventory-staging.yml b/src/_data/codebase/v2_3/mrg/module-catalog-inventory-staging.yml index 1f75ef39669..f680be4990f 100644 --- a/src/_data/codebase/v2_3/mrg/module-catalog-inventory-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-catalog-inventory-staging.yml @@ -9,8 +9,8 @@ content: "## Magento_CatalogInventoryStaging module\n\n## Overview\n\nThe Magent that have dependencies on the Magento_CatalogInventoryStaging module in the `require` section of the `composer.json` file. The file is located in the root directory of the module.\n\n## Extension points\n\nYou can interact with the Magento_CatalogInventoryStaging - module using the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html).\n\n[The - Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) + module using the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html).\n\n[The + Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CatalogInventoryStaging module.\n\n## Additional information\n\nYou can track [backward incompatible changes - made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html)." + made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-catalog-page-builder-analytics-staging.yml b/src/_data/codebase/v2_3/mrg/module-catalog-page-builder-analytics-staging.yml index 66b969dc5dd..55f4eb5bb97 100644 --- a/src/_data/codebase/v2_3/mrg/module-catalog-page-builder-analytics-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-catalog-page-builder-analytics-staging.yml @@ -2,4 +2,4 @@ title: CatalogPageBuilderAnalyticsStaging content: The Magento_CatalogPageBuilderAnalyticsStaging module configures data definitions for a data collection related to the PageBuilder module entities to be used in [Advanced - Reporting](http://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). + Reporting](https://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). diff --git a/src/_data/codebase/v2_3/mrg/module-catalog-page-builder-analytics.yml b/src/_data/codebase/v2_3/mrg/module-catalog-page-builder-analytics.yml index a56e802309d..a79f56f9f15 100644 --- a/src/_data/codebase/v2_3/mrg/module-catalog-page-builder-analytics.yml +++ b/src/_data/codebase/v2_3/mrg/module-catalog-page-builder-analytics.yml @@ -2,4 +2,4 @@ title: CatalogPageBuilderAnalytics content: The Magento_CatalogPageBuilderAnalytics module configures data definitions for a data collection related to the PageBuilder module entities to be used in [Advanced - Reporting](http://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). + Reporting](https://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). diff --git a/src/_data/codebase/v2_3/mrg/module-catalog-rule-staging.yml b/src/_data/codebase/v2_3/mrg/module-catalog-rule-staging.yml index 56257a9248c..3f4c6662281 100644 --- a/src/_data/codebase/v2_3/mrg/module-catalog-rule-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-catalog-rule-staging.yml @@ -37,15 +37,15 @@ content: |- ## Extension points - Extension points enable extension developers to interact with the Magento_CatalogRuleStaging module. You can interact with the Magento_CatalogRuleStaging module using the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). + Extension points enable extension developers to interact with the Magento_CatalogRuleStaging module. You can interact with the Magento_CatalogRuleStaging module using the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CatalogRuleStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CatalogRuleStaging module. ### Layouts You can extend and override layouts in the `app/code/Magento/CatalogRuleStaging/view/adminhtml/layout` directory. - For more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). + For more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). ## Additional Information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-catalog-staging.yml b/src/_data/codebase/v2_3/mrg/module-catalog-staging.yml index 0ded194517a..3fe0cd23630 100644 --- a/src/_data/codebase/v2_3/mrg/module-catalog-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-catalog-staging.yml @@ -98,18 +98,18 @@ content: |- ## Extension Points - Extension points enable extension developers to interact with the Magento_CatalogStaging module. You can interact with the Magento_CatalogStaging module using the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). + Extension points enable extension developers to interact with the Magento_CatalogStaging module. You can interact with the Magento_CatalogStaging module using the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). - [Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CatalogStaging module. + [Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CatalogStaging module. ### UI components - You can extend product and category updates using the UI components located in the `Magento\CatalogStaging\view\adminhtml\ui_component` directory. For more information, see [UI Listing/Grid Component](http://devdocs.magento.com/guides/v2.1/ui-components/ui-listing-grid.html). + You can extend product and category updates using the UI components located in the `Magento\CatalogStaging\view\adminhtml\ui_component` directory. For more information, see [UI Listing/Grid Component](https://devdocs.magento.com/guides/v2.1/ui-components/ui-listing-grid.html). ### Layouts You can extend and override layouts in the `Magento\CatalogStaging\view\adminhtml\layout` directory. - For more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). + For more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). ### Events @@ -124,4 +124,4 @@ content: |- ## Additional information - For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](http://devdocs.magento.com). Also, there you can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + For more Magento 2 developer documentation, see [Magento 2 Developer Documentation](https://devdocs.magento.com). Also, there you can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-catalog-url-rewrite-staging.yml b/src/_data/codebase/v2_3/mrg/module-catalog-url-rewrite-staging.yml index faaa6c04c1d..840b174f05c 100644 --- a/src/_data/codebase/v2_3/mrg/module-catalog-url-rewrite-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-catalog-url-rewrite-staging.yml @@ -21,4 +21,4 @@ content: |- ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-checkout-staging.yml b/src/_data/codebase/v2_3/mrg/module-checkout-staging.yml index 979fdb8283b..5d668bc1238 100644 --- a/src/_data/codebase/v2_3/mrg/module-checkout-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-checkout-staging.yml @@ -31,10 +31,10 @@ content: |- ## Extension points - Extension points enable extension developers to interact with the Magento_CheckoutStaging module. For more information about the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). + Extension points enable extension developers to interact with the Magento_CheckoutStaging module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CheckoutStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CheckoutStaging module. ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-cms-page-builder-analytics-staging.yml b/src/_data/codebase/v2_3/mrg/module-cms-page-builder-analytics-staging.yml index c1174a25c56..ba8cd50c96d 100644 --- a/src/_data/codebase/v2_3/mrg/module-cms-page-builder-analytics-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-cms-page-builder-analytics-staging.yml @@ -2,4 +2,4 @@ title: CmsPageBuilderAnalyticsStaging content: The Magento_CmsPageBuilderAnalyticsStaging module configures data definitions for a data collection related to the PageBuilder module entities to be used in [Advanced - Reporting](http://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). + Reporting](https://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). diff --git a/src/_data/codebase/v2_3/mrg/module-cms-page-builder-analytics.yml b/src/_data/codebase/v2_3/mrg/module-cms-page-builder-analytics.yml index a9efd79cd5d..1aa319923ab 100644 --- a/src/_data/codebase/v2_3/mrg/module-cms-page-builder-analytics.yml +++ b/src/_data/codebase/v2_3/mrg/module-cms-page-builder-analytics.yml @@ -2,4 +2,4 @@ title: CmsPageBuilderAnalytics content: The Magento_CmsPageBuilderAnalytics module configures data definitions for a data collection related to the PageBuilder module entities to be used in [Advanced - Reporting](http://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). + Reporting](https://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). diff --git a/src/_data/codebase/v2_3/mrg/module-cms-staging.yml b/src/_data/codebase/v2_3/mrg/module-cms-staging.yml index 7a1d85b0a94..dfa15cbd79b 100644 --- a/src/_data/codebase/v2_3/mrg/module-cms-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-cms-staging.yml @@ -21,13 +21,13 @@ content: "## Magento_CmsStaging module\n\n## Overview\n\nThe Magento_CmsStaging section of the `composer.json` file. The file is located in the root directory of the module.\n\n## Extension points\n\nExtension points enable extension developers to interact with the Magento_CmsStaging module. For more information about the Magento - extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html).\n\n[The - Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) + extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html).\n\n[The + Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CmsStaging module.\n\n### UI components\n\nYou can extend product and category updates using the UI components located in the `Magento\\CmsStaging\\view\\adminhtml\\ui_component` directory. For - more information, see [UI Listing/Grid Component](http://devdocs.magento.com/guides/v2.1/ui-components/ui-listing-grid.html).\n\n### + more information, see [UI Listing/Grid Component](https://devdocs.magento.com/guides/v2.1/ui-components/ui-listing-grid.html).\n\n### Layouts\n\nYou can extend and override layouts in the `Magento\\CmsStaging\\view\\adminhtml\\layout` - directory.\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html).\n\n## + directory.\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html).\n\n## Additional information\n\nYou can track [backward incompatible changes made in a - Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html)." + Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-company-credit.yml b/src/_data/codebase/v2_3/mrg/module-company-credit.yml index c98632be1a4..804e52aa2d0 100644 --- a/src/_data/codebase/v2_3/mrg/module-company-credit.yml +++ b/src/_data/codebase/v2_3/mrg/module-company-credit.yml @@ -12,21 +12,21 @@ content: "## Overview\n\nThe Magento_CompanyCredit module adds the \"Payment on module, which must be installed and enabled the first. The module does not create any backward incompatible changes. The CompanyCredit module can be deactivated and uninstalled at any time. \n \n## Structure\n \n[Learn about a typical file structure - for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_CompanyCredit module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CompanyCredit module.\n\n[Payment - method configuration](http://devdocs.magento.com/guides/v2.2/payments-integrations/base-integration/payment-option-config.html) + method configuration](https://devdocs.magento.com/guides/v2.2/payments-integrations/base-integration/payment-option-config.html) will allow you additional configuration to extend module functionality.\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\CompanyCredit\\view\\adminhtml\\layout` and `Magento\\CompanyCredit\\view\\frontend\\layout` directories.\n\nFor more information - about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n + about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n \n### UI components\n\nThe following directories contain extensible UI components: \n\n* `Magento\\CompanyCredit\\view\\adminhtml\\ui_component` - company form, company listing, history listing\n\n* `Magento\\CompanyCredit\\view\\frontend\\ui_component` - - balance history listing\n\nFor more information, see [UI Listing/Grid Component](http://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html) - and [UI Form Component](http://devdocs.magento.com/guides/v2.2/ui_comp_guide/components/ui-form.html)\n\n## + - balance history listing\n\nFor more information, see [UI Listing/Grid Component](https://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html) + and [UI Form Component](https://devdocs.magento.com/guides/v2.2/ui_comp_guide/components/ui-form.html)\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-company-payment.yml b/src/_data/codebase/v2_3/mrg/module-company-payment.yml index 1bc74a3e4a7..239ddc41e4e 100644 --- a/src/_data/codebase/v2_3/mrg/module-company-payment.yml +++ b/src/_data/codebase/v2_3/mrg/module-company-payment.yml @@ -8,17 +8,17 @@ content: "## Overview\n\nThe Magento_CompanyPayment module allows a merchant to details\n \nThe module has a dependency on the Magento_Company module, which must be installed and enabled first. This module does not create any backward incompatible changes. It can be deactivated and uninstalled at any time.\n \n## Structure\n \n[Learn - about a typical file structure for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + about a typical file structure for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_CompanyPayment module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CompanyPayment module.\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\CompanyPayment\\view\\frontend\\layout` - directory.\n\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n + directory.\n\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n \n### UI components\n\nThe following directory contains extensible UI components: \n\n\n\n* `Magento\\CompanyPayment\\view\\frontend\\ui_component` - - company form\n\nFor more information, see [UI Form Component](http://devdocs.magento.com/guides/v2.2/ui_comp_guide/components/ui-form.html).\n\n## + - company form\n\nFor more information, see [UI Form Component](https://devdocs.magento.com/guides/v2.2/ui_comp_guide/components/ui-form.html).\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-company.yml b/src/_data/codebase/v2_3/mrg/module-company.yml index afd206a7d07..bcadbd518fe 100644 --- a/src/_data/codebase/v2_3/mrg/module-company.yml +++ b/src/_data/codebase/v2_3/mrg/module-company.yml @@ -15,20 +15,20 @@ content: "## Overview\n\nThe Magento_Company module allows a merchant to create user, company member or company admin.\n\n## Installation details\n \nThis module does not create any backward incompatible changes. This module can be deactivated after all the other B2B modules (except QuickOrder and RequisitionList) are deactivated.\n - \n## Structure\n \n[Learn about a typical file structure for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + \n## Structure\n \n[Learn about a typical file structure for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_Company module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_Company module.\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\Company\\view\\adminhtml\\layout` and `Magento\\Company\\view\\frontend\\layout` directories.\n\nFor more information - about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n + about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n \n### UI components\n\nThe following directories contain extensible UI components: \n\n* `Magento\\Company\\view\\adminhtml\\ui_component` - customer listing, invitation form, sales order grid\n\n* `Magento\\Company\\view\\base\\ui_component` - company listing, complany creation form, customer creation form\n\n* `Magento\\Company\\view\\frontend\\ui_component` - company users listing, role listing\n\n\nFor more information, see [UI Listing/Grid - Component](http://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## + Component](https://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-configurable-negotiable-quote.yml b/src/_data/codebase/v2_3/mrg/module-configurable-negotiable-quote.yml index 3dbbe341ed9..14278f6a4f0 100644 --- a/src/_data/codebase/v2_3/mrg/module-configurable-negotiable-quote.yml +++ b/src/_data/codebase/v2_3/mrg/module-configurable-negotiable-quote.yml @@ -9,11 +9,11 @@ content: "## Overview\n\nThe Magento_ConfigurableNegotiableQuote module enables on the Magento_NegotiableQuote and Magento_Configurable modules, which must be installed and enabled first. This module does not create any backward incompatible changes. It can be uninstalled or deactivated at any time. \n \n## Structure\n \n[Learn about - a typical file structure for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + a typical file structure for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_ConfigurableNegotiableQuote module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_ConfigurableNegotiableQuote module.\n\n## Additional information\n \nYou can track [backward incompatible changes - made in a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + made in a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-configurable-product-staging.yml b/src/_data/codebase/v2_3/mrg/module-configurable-product-staging.yml index 815cd6492f8..01c2bb12963 100644 --- a/src/_data/codebase/v2_3/mrg/module-configurable-product-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-configurable-product-staging.yml @@ -21,19 +21,19 @@ content: |- ## Extension points - Extension points enable extension developers to interact with the Magento_ConfigurableProductStaging module. For more information about the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). + Extension points enable extension developers to interact with the Magento_ConfigurableProductStaging module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_ConfigurableProductStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_ConfigurableProductStaging module. ### UI components - You can extend product and category updates using the UI components located in the `Magento\ConfigurableProductStaging\view\adminhtml\ui_component` directory. For more information, see [UI Listing/Grid Component](http://devdocs.magento.com/guides/v2.1/ui-components/ui-listing-grid.html). + You can extend product and category updates using the UI components located in the `Magento\ConfigurableProductStaging\view\adminhtml\ui_component` directory. For more information, see [UI Listing/Grid Component](https://devdocs.magento.com/guides/v2.1/ui-components/ui-listing-grid.html). ### Layouts You can extend and override layouts in the `Magento\ConfigurableProductStaging\view\adminhtml\layout` directory. - For more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). + For more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-configurable-requisition-list.yml b/src/_data/codebase/v2_3/mrg/module-configurable-requisition-list.yml index 9eff914ce0e..884e5e776bf 100644 --- a/src/_data/codebase/v2_3/mrg/module-configurable-requisition-list.yml +++ b/src/_data/codebase/v2_3/mrg/module-configurable-requisition-list.yml @@ -9,8 +9,8 @@ content: "## Overview\n\nThe Magento_ConfigurableRequisitionList module enables has a dependency on the Magento_RequisitionList and Magento_Configurable modules, which must be installed and enabled first. This module does not create any backward incompatible changes. It can be uninstalled or deactivated at any time. \n \n## - Structure\n \n[Learn about a typical file structure for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n\n### + Structure\n \n[Learn about a typical file structure for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\ConfigurableRequisitionList\\view\\frontend\\layout` - directories.\n\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n\n## + directories.\n\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-configurable-shared-catalog.yml b/src/_data/codebase/v2_3/mrg/module-configurable-shared-catalog.yml index 2731488cdb0..e0e8812e8cb 100644 --- a/src/_data/codebase/v2_3/mrg/module-configurable-shared-catalog.yml +++ b/src/_data/codebase/v2_3/mrg/module-configurable-shared-catalog.yml @@ -12,17 +12,17 @@ content: "## Overview\n\nThe Magento_ConfigurableSharedCatalog module enables co module has a dependency on the Magento_SharedCatalog and Magento_Configurable modules, which must be installed and enabled first. This module does not create any backward incompatible changes. It can be uninstalled or deactivated at any time. \n \n## - Structure\n \n[Learn about a typical file structure for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + Structure\n \n[Learn about a typical file structure for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_ConfigurableSharedCatalog module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_ConfigurableSharedCatalog module.\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\ConfigurableSharedCatalog\\view\\adminhtml\\layout` - directories.\n\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n + directories.\n\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n \n### UI components\n\nThe following directory contains extensible UI components: \n\n* `Magento\\ConfigurableSharedCatalog\\view\\adminhtml\\ui_component` - renderer for pricing and structure listings\n\nFor more information, see [UI Listing/Grid - Component](http://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## + Component](https://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-downloadable-staging.yml b/src/_data/codebase/v2_3/mrg/module-downloadable-staging.yml index 1da5af82a75..8a53c09c45a 100644 --- a/src/_data/codebase/v2_3/mrg/module-downloadable-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-downloadable-staging.yml @@ -24,19 +24,19 @@ content: |- ## Extension points Extension points enable extension developers to interact with the Magento_DownloadableStaging module. - For more information about the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). + For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_DownloadableStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_DownloadableStaging module. ### UI components - You can extend product and category updates using the UI components located in the `Magento\DownloadableStaging\view\adminhtml\ui_component` directory. For more information, see [UI Listing/Grid Component](http://devdocs.magento.com/guides/v2.1/ui-components/ui-listing-grid.html). + You can extend product and category updates using the UI components located in the `Magento\DownloadableStaging\view\adminhtml\ui_component` directory. For more information, see [UI Listing/Grid Component](https://devdocs.magento.com/guides/v2.1/ui-components/ui-listing-grid.html). ### Layouts You can extend and override layouts in the `Magento\DownloadableStaging\view\adminhtml\layout` directory. - For more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). + For more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-gift-card-negotiable-quote.yml b/src/_data/codebase/v2_3/mrg/module-gift-card-negotiable-quote.yml index 506e0216cb1..46fa1855a00 100644 --- a/src/_data/codebase/v2_3/mrg/module-gift-card-negotiable-quote.yml +++ b/src/_data/codebase/v2_3/mrg/module-gift-card-negotiable-quote.yml @@ -17,8 +17,8 @@ content: |- ## Structure - [Learn about a typical file structure for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html). + [Learn about a typical file structure for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html). ## Additional information - You can track [backward incompatible changes made in a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html). + You can track [backward incompatible changes made in a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-gift-card-requisition-list.yml b/src/_data/codebase/v2_3/mrg/module-gift-card-requisition-list.yml index eb02c27a6a3..85bb25a8a73 100644 --- a/src/_data/codebase/v2_3/mrg/module-gift-card-requisition-list.yml +++ b/src/_data/codebase/v2_3/mrg/module-gift-card-requisition-list.yml @@ -9,6 +9,6 @@ content: "## Overview\n\nThe Magento_GiftCardRequisitionList module enables gift and Magento_GiftCard modules, which must be installed and enabled first. This module does not create any backward incompatible changes. It can be uninstalled or deactivated at any time.\n\n## Structure\n\n[Learn about a typical file structure for a Magento - 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n\n## + 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n\n## Additional information\n\nYou can track [backward incompatible changes made in a - Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-gift-card-shared-catalog.yml b/src/_data/codebase/v2_3/mrg/module-gift-card-shared-catalog.yml index 45ac4d20a37..8f5f1fe3297 100644 --- a/src/_data/codebase/v2_3/mrg/module-gift-card-shared-catalog.yml +++ b/src/_data/codebase/v2_3/mrg/module-gift-card-shared-catalog.yml @@ -11,16 +11,16 @@ content: "## Overview\n\nThe Magento_GiftCardSharedCatalog module enables gift c and Magento_GiftCard modules, which must be installed and enabled first. This module does not create any backward incompatible changes. It can be uninstalled or deactivated at any time.\n\n## Structure\n\n[Learn about a typical file structure for a Magento - 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n\n## + 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n\n## Extensibility\n\nExtension developers can interact with the Magento_GiftCardSharedCatalog module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n\n[The - Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n\n[The + Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GiftCardSharedCatalog module.\n\n### Layouts\n\nYou can extend and override layouts in the `Magento\\GiftCardSharedCatalog\\view\\adminhtml\\layout` - directories.\n\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n\n### + directories.\n\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n\n### UI components\n\nThe following directory contains extensible UI components:\n\n* `Magento\\GiftCardSharedCatalog\\view\\adminhtml\\ui_component` - renderer for pricing - and structure listings\n\nFor more information, see [UI Listing/Grid Component](http://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## + and structure listings\n\nFor more information, see [UI Listing/Grid Component](https://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## Additional information\n\nYou can track [backward incompatible changes made in a - Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-gift-card-staging.yml b/src/_data/codebase/v2_3/mrg/module-gift-card-staging.yml index b2457c8acce..dbd95fe6e4f 100644 --- a/src/_data/codebase/v2_3/mrg/module-gift-card-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-gift-card-staging.yml @@ -21,10 +21,10 @@ content: |- ## Extension points - Extension points enable extension developers to interact with the Magento_GiftCardStaging module. For more information about the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). + Extension points enable extension developers to interact with the Magento_GiftCardStaging module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GiftCardStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GiftCardStaging module. ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-gift-message-staging.yml b/src/_data/codebase/v2_3/mrg/module-gift-message-staging.yml index fccff512b25..149236b93ba 100644 --- a/src/_data/codebase/v2_3/mrg/module-gift-message-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-gift-message-staging.yml @@ -17,8 +17,8 @@ content: |- ## Extension points - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GiftMessageStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GiftMessageStaging module. ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-gift-wrapping-staging.yml b/src/_data/codebase/v2_3/mrg/module-gift-wrapping-staging.yml index 17055f2e73c..3d2330f2343 100644 --- a/src/_data/codebase/v2_3/mrg/module-gift-wrapping-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-gift-wrapping-staging.yml @@ -20,8 +20,8 @@ content: |- ## Extension points - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GiftWrappingStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GiftWrappingStaging module. ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-google-optimizer-staging.yml b/src/_data/codebase/v2_3/mrg/module-google-optimizer-staging.yml index 5bdffaf313d..c9bc9e603eb 100644 --- a/src/_data/codebase/v2_3/mrg/module-google-optimizer-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-google-optimizer-staging.yml @@ -21,8 +21,8 @@ content: |- ## Extension points - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GoogleOptimizerStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GoogleOptimizerStaging module. ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-grouped-product-staging.yml b/src/_data/codebase/v2_3/mrg/module-grouped-product-staging.yml index 712dda766e5..7830af897d6 100644 --- a/src/_data/codebase/v2_3/mrg/module-grouped-product-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-grouped-product-staging.yml @@ -17,8 +17,8 @@ content: |- ## Extension points - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GroupedProductStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GroupedProductStaging module. ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-grouped-requisition-list.yml b/src/_data/codebase/v2_3/mrg/module-grouped-requisition-list.yml index a31d5ea0edf..94a5a076f1f 100644 --- a/src/_data/codebase/v2_3/mrg/module-grouped-requisition-list.yml +++ b/src/_data/codebase/v2_3/mrg/module-grouped-requisition-list.yml @@ -10,13 +10,13 @@ content: "## Overview\n\nThe Magento_GroupedRequisitionList module enables group Magento_Grouped modules, which must be installed and enabled first. This module does not create any backward incompatible changes. Can be uninstalled or deactivated at any time. \n \n## Structure\n \n[Learn about a typical file structure for a Magento - 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_GroupedRequisitionList module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GroupedRequisitionList module.\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\GroupedRequistionList\\view\\frontend\\layout` - directories.\n\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n\n## + directories.\n\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-grouped-shared-catalog.yml b/src/_data/codebase/v2_3/mrg/module-grouped-shared-catalog.yml index 99955edd1bf..fce0b304cf1 100644 --- a/src/_data/codebase/v2_3/mrg/module-grouped-shared-catalog.yml +++ b/src/_data/codebase/v2_3/mrg/module-grouped-shared-catalog.yml @@ -11,17 +11,17 @@ content: "## Overview\n\nThe Magento_GroupedSharedCatalog module enables grouped \nThe module has dependency on the Magento_SharedCatalog module and Magento_Grouped modules, which must be installed and enabled first. This module does not create any backward incompatible changes. Can be uninstalled or deactivated at any time. - \n \n## Structure\n \n[Learn about a typical file structure for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + \n \n## Structure\n \n[Learn about a typical file structure for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_GroupedSharedCatalog module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GroupedSharedCatalog module.\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\GroupedSharedCatalog\\view\\adminhtml\\layout` - directories.\n\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n + directories.\n\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n \n### UI components\n\nThe following directory contains extensible UI components: \n\n* `Magento\\GroupedSharedCatalog\\view\\adminhtml\\ui_component` - renderer for pricing and structure listings\n\nFor more information, see [UI Listing/Grid - Component](http://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## + Component](https://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-layered-navigation-staging.yml b/src/_data/codebase/v2_3/mrg/module-layered-navigation-staging.yml index 7b3901c8e11..4a812b39b73 100644 --- a/src/_data/codebase/v2_3/mrg/module-layered-navigation-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-layered-navigation-staging.yml @@ -18,13 +18,13 @@ content: |- ## Extension points - Extension points enable extension developers to interact with the Magento_LayeredNavigationStaging module. [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_LayeredNavigationStaging module. + Extension points enable extension developers to interact with the Magento_LayeredNavigationStaging module. [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_LayeredNavigationStaging module. ### Layouts You can extend and override layouts in the `Magento/LayeredNavigationStaging/view/frontend/layout/` directory. - For more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). + For more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-msrp-staging.yml b/src/_data/codebase/v2_3/mrg/module-msrp-staging.yml index 4b1e8cd2ec0..4616fe74894 100644 --- a/src/_data/codebase/v2_3/mrg/module-msrp-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-msrp-staging.yml @@ -20,8 +20,8 @@ content: |- ## Extension points - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_MsrpStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_MsrpStaging module. ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-negotiable-quote-shared-catalog.yml b/src/_data/codebase/v2_3/mrg/module-negotiable-quote-shared-catalog.yml index c2995ad8bb9..5ce0e764097 100644 --- a/src/_data/codebase/v2_3/mrg/module-negotiable-quote-shared-catalog.yml +++ b/src/_data/codebase/v2_3/mrg/module-negotiable-quote-shared-catalog.yml @@ -10,11 +10,11 @@ content: "## Overview\n\nThe Magento_NegotiableQuoteSharedCatalog module enables must be installed and enabled first.\n \nThe Magento_NegotiableQuoteSharedCatalog module does not create any backward incompatible changes. It can be uninstalled at any time. \n \n## Structure\n \n[Learn about a typical file structure for a Magento - 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_NegotiableQuoteSharedCatalog module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_NegotiableQuoteSharedCatalog module.\n\n## Additional information\n \nYou can track [backward incompatible changes - made in a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + made in a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-negotiable-quote.yml b/src/_data/codebase/v2_3/mrg/module-negotiable-quote.yml index 7866b4bcabe..48337f7db6b 100644 --- a/src/_data/codebase/v2_3/mrg/module-negotiable-quote.yml +++ b/src/_data/codebase/v2_3/mrg/module-negotiable-quote.yml @@ -21,21 +21,21 @@ content: "## Overview\n\nThe Magento_NegotiableQuote module allows a customer an restricted to the products added to the shared catalog and custom prices set in the shared catalog. \n\nThe module does not create any backward incompatible changes. Can be deactivated and uninstalled at any time.\n \n## Structure\n \n[Learn about - a typical file structure for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + a typical file structure for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nMagento_NegotiableQuote uses Extensible attributes to extend Magento_Quote. For more information about the Magento extensible attributes, see - [Adding extension attributes to entity](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/extension_attributes/adding-attributes.html).\n\nExtension + [Adding extension attributes to entity](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/extension_attributes/adding-attributes.html).\n\nExtension developers can interact with the Magento_NegotiableQuote module. For more information - about the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_NegotiableQuote module.\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\NegotiableQuote\\view\\adminhtml\\layout` and `Magento\\NegotiableQuote\\view\\frontend\\layout` directories.\n\nFor more - information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n + information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n \n### UI components\n\nThe following directories contain extensible UI components: \n\n* `Magento\\NegotiableQuote\\view\\adminhtml\\ui_component` - company form, negotiable quote grid\n\n* `Magento\\NegotiableQuote\\view\\frontend\\ui_component` - - negotiable quote listing\n\nFor more information, see [UI Listing/Grid Component](http://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html) - and [UI Form Component](http://devdocs.magento.com/guides/v2.2/ui_comp_guide/components/ui-form.html).\n\n## + - negotiable quote listing\n\nFor more information, see [UI Listing/Grid Component](https://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html) + and [UI Form Component](https://devdocs.magento.com/guides/v2.2/ui_comp_guide/components/ui-form.html).\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-page-builder-analytics.yml b/src/_data/codebase/v2_3/mrg/module-page-builder-analytics.yml index 3139dba74fa..5364e955c3a 100644 --- a/src/_data/codebase/v2_3/mrg/module-page-builder-analytics.yml +++ b/src/_data/codebase/v2_3/mrg/module-page-builder-analytics.yml @@ -2,4 +2,4 @@ title: PageBuilderAnalytics content: The Magento_PageBuilderAnalytics module configures data definitions for a data collection related to the PageBuilder module entities to be used in [Advanced - Reporting](http://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). + Reporting](https://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). diff --git a/src/_data/codebase/v2_3/mrg/module-payment-staging.yml b/src/_data/codebase/v2_3/mrg/module-payment-staging.yml index f286122d7e1..dd601fc2526 100644 --- a/src/_data/codebase/v2_3/mrg/module-payment-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-payment-staging.yml @@ -17,10 +17,10 @@ content: |- ## Extension points - Extension points enable extension developers to interact with the Magento_PaymentStaging module. For more information about the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). + Extension points enable extension developers to interact with the Magento_PaymentStaging module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_PaymentStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_PaymentStaging module. ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-product-video-staging.yml b/src/_data/codebase/v2_3/mrg/module-product-video-staging.yml index 5c121b115d5..bac89179abb 100644 --- a/src/_data/codebase/v2_3/mrg/module-product-video-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-product-video-staging.yml @@ -17,13 +17,13 @@ content: |- ## Extension points - Extension points enable extension developers to interact with the Magento_ProductVideoStaging module. [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_ProductVideoStaging module. + Extension points enable extension developers to interact with the Magento_ProductVideoStaging module. [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_ProductVideoStaging module. ### Layouts You can extend and override layouts in the `app/code/Magento/ProductVideoStaging/view/adminhtml/layout` directory. - For more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). + For more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-quick-order.yml b/src/_data/codebase/v2_3/mrg/module-quick-order.yml index 021371bf782..38923412b7e 100644 --- a/src/_data/codebase/v2_3/mrg/module-quick-order.yml +++ b/src/_data/codebase/v2_3/mrg/module-quick-order.yml @@ -8,13 +8,13 @@ content: "## Overview\n\nThe Magento_QuickOrder module allows customers to impro Installation details\n \nThe module does not create any backward incompatible changes. It heavily depends on the Magento_AdvancedCheckout module and cannot work without it. Can be deactivated and uninstalled at any time. \n \n## Structure\n \n[Learn - about a typical file structure for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + about a typical file structure for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n\nExtension developers can interact with the Magento_QuickOrder module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_QuickOrder module.\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\QuickOrder\\view\\frontend\\layout` - directory.\n\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n + directory.\n\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n \n## Additional information\n \nYou can track [backward incompatible changes made - in a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + in a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-requisition-list.yml b/src/_data/codebase/v2_3/mrg/module-requisition-list.yml index f9cde1c7050..0949b6e8b81 100644 --- a/src/_data/codebase/v2_3/mrg/module-requisition-list.yml +++ b/src/_data/codebase/v2_3/mrg/module-requisition-list.yml @@ -10,16 +10,16 @@ content: "## Overview\n\nThe Magento_RequisitionList module allows a customer to configure maximum number of requisition lists per customer. \n\n## Installation details\n \nThe module does not create any backward incompatible changes. It can be deactivated and uninstalled in any time.\n \n## Structure\n \n[Learn about a - typical file structure for a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + typical file structure for a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nExtension developers can interact with the Magento_RequisitionList module. For more information about the Magento extension mechanism, see [Magento - plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_RequisitionList module.\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\RequisitionList\\view\\frontend\\layout` - directories.\n\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n + directories.\n\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n \n### UI components\n\nThe following directories contain extensible UI components: \n\n* `Magento\\RequisitionList\\view\\frontend\\ui_component` - requisition list - listing\n\nFor more information, see [UI Listing/Grid Component](http://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## + listing\n\nFor more information, see [UI Listing/Grid Component](https://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html).\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-review-staging.yml b/src/_data/codebase/v2_3/mrg/module-review-staging.yml index a531ae63cbe..74c02905359 100644 --- a/src/_data/codebase/v2_3/mrg/module-review-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-review-staging.yml @@ -10,10 +10,10 @@ content: "## Magento_ReviewStaging module\n\n## Overview\n\nThe Magento_ReviewSt section of the `composer.json` file. The file is located in the root directory of the module.\n\n## Extension points\n\nExtension points enable extension developers to interact with the Magento_ReviewStaging module. For more information about the - Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html).\n\n[The - Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) + Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html).\n\n[The + Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_ReviewStaging module.\n\n### Layouts\n\nYou can extend and override layouts in the `Magento\\ReviewStaging\\view\\adminhtml\\layout` - directory.\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html).\n\n## + directory.\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html).\n\n## Additional information\n\nYou can track [backward incompatible changes made in a - Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html)." + Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-reward-staging.yml b/src/_data/codebase/v2_3/mrg/module-reward-staging.yml index 20ca36f5306..ad603e2bee4 100644 --- a/src/_data/codebase/v2_3/mrg/module-reward-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-reward-staging.yml @@ -19,8 +19,8 @@ content: |- ## Extension points - Extension points enable extension developers to interact with the Magento_RewardStaging module. [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_RewardStaging module. + Extension points enable extension developers to interact with the Magento_RewardStaging module. [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_RewardStaging module. ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-rma-staging.yml b/src/_data/codebase/v2_3/mrg/module-rma-staging.yml index a05c025bde4..f29481d20b5 100644 --- a/src/_data/codebase/v2_3/mrg/module-rma-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-rma-staging.yml @@ -21,8 +21,8 @@ content: |- ## Extension points - Extension points enable extension developers to interact with the Magento_RmaStaging module. [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_RmaStaging module. + Extension points enable extension developers to interact with the Magento_RmaStaging module. [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_RmaStaging module. ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-sales-rule-staging.yml b/src/_data/codebase/v2_3/mrg/module-sales-rule-staging.yml index b76ac7c350f..eedfbd90ab4 100644 --- a/src/_data/codebase/v2_3/mrg/module-sales-rule-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-sales-rule-staging.yml @@ -19,10 +19,10 @@ content: "

Magento_SalesRuleStaging module

\n\n## Overview\n\nThe Magento as this `README` file.\n\n## Extension Points\n\nExtension points enable extension developers to interact with the Magento_SalesRuleStaging. However, the Magento_SalesRuleStaging module does not provide any specific extension points.\n\nFor more information about - Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html).\n\n[Magento - dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) + Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/plugins.html).\n\n[Magento + dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_SalesRuleStaging module.\n\n## Additional information\n\nFor more Magento 2 developer documentation, see [Magento - 2 Developer Documentation](http://devdocs.magento.com). Also, you can track there + 2 Developer Documentation](https://devdocs.magento.com). Also, you can track there [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 - release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html)." + release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-search-staging.yml b/src/_data/codebase/v2_3/mrg/module-search-staging.yml index 8dc0e25ccbb..a64ee55b1fb 100644 --- a/src/_data/codebase/v2_3/mrg/module-search-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-search-staging.yml @@ -18,13 +18,13 @@ content: |- ## Extension points - Extension points enable extension developers to interact with the Magento_SearchStaging module. [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_SearchStaging module. + Extension points enable extension developers to interact with the Magento_SearchStaging module. [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_SearchStaging module. ### Layouts You can extend and override layouts in the `Magento/SearchStaging/view/frontend/layout/` directory. - For more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). + For more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.1/frontend-dev-guide/layouts/layout-overview.html). ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/mrg/module-shared-catalog.yml b/src/_data/codebase/v2_3/mrg/module-shared-catalog.yml index 1a1d5d9b5a3..ce1da3b0f52 100644 --- a/src/_data/codebase/v2_3/mrg/module-shared-catalog.yml +++ b/src/_data/codebase/v2_3/mrg/module-shared-catalog.yml @@ -21,21 +21,21 @@ content: "## Overview\n\nThe Magento_SharedCatalog modules defines the visibilit module does not create any backward incompatible changes. Can be deactivated and uninstalled at any time.\n\nWhen the module is uninstalled, the other [ProductType]SharedCatalog modules won't work.\n \n## Structure\n \n[Learn about a typical file structure for - a Magento 2 module](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n + a Magento 2 module](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html).\n \n## Extensibility\n \nShared catalogs are using message queues to save prices. - For more information about queues, see [Message Queues](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/message-queues.html).\n\nExtension + For more information about queues, see [Message Queues](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/message-queues.html).\n\nExtension developers can interact with the Magento_SharedCatalog module. For more information - about the Magento extension mechanism, see [Magento plug-ins](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n - \n[The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) + about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/plugins.html).\n + \n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_SharedCatalog module.\n\n### Layouts\n \nYou can extend and override layouts in the `Magento\\SharedCatalog\\view\\adminhtml\\layout` - directory.\n\nFor more information about layouts, see the [Layout documentation](http://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n + directory.\n\nFor more information about layouts, see the [Layout documentation](https://devdocs.magento.com/guides/v2.2/frontend-dev-guide/layouts/layout-overview.html).\n \n### UI components\n\nThe `Magento\\SharedCatalog\\view\\adminhtml\\ui_component` directory contains extensible UI components.\n\n* Forms: Company, catalog rule, catalog rule staging, product, sales rule, sales rule staging update, shared catalog, shared catalog tier price.\n\n* Listings: Company, product, shared catalog company, shared catalog, shared catalog product pricing, shared catalog product listing.\n\nFor - more information, see [UI Listing/Grid Component](http://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html) - and [UI Form Component](http://devdocs.magento.com/guides/v2.2/ui_comp_guide/components/ui-form.html).\n\n## + more information, see [UI Listing/Grid Component](https://devdocs.magento.com/guides/v2.2/ui-components/ui-listing-grid.html) + and [UI Form Component](https://devdocs.magento.com/guides/v2.2/ui_comp_guide/components/ui-form.html).\n\n## Additional information\n \nYou can track [backward incompatible changes made in - a Magento B2b mainline after the Magento 2.2 release](http://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." + a Magento B2b mainline after the Magento 2.2 release](https://devdocs.magento.com/guides/v2.2/release-notes/changes/b2b_changes.html)." diff --git a/src/_data/codebase/v2_3/mrg/module-sitemap.yml b/src/_data/codebase/v2_3/mrg/module-sitemap.yml index 9f4a2b1d69c..4084855a255 100644 --- a/src/_data/codebase/v2_3/mrg/module-sitemap.yml +++ b/src/_data/codebase/v2_3/mrg/module-sitemap.yml @@ -2,4 +2,4 @@ title: Sitemap content: |- The Sitemap module allows managing the Magento application sitemap and - [sitemap.xml](http://en.wikipedia.org/wiki/Sitemaps) for searching engines. + [sitemap.xml](https://en.wikipedia.org/wiki/Sitemaps) for searching engines. diff --git a/src/_data/codebase/v2_3/mrg/module-weee-staging.yml b/src/_data/codebase/v2_3/mrg/module-weee-staging.yml index 36e38028143..76bd7b08b4d 100644 --- a/src/_data/codebase/v2_3/mrg/module-weee-staging.yml +++ b/src/_data/codebase/v2_3/mrg/module-weee-staging.yml @@ -19,10 +19,10 @@ content: |- ## Extension points - Extension points enable extension developers to interact with the Magento_WeeeStaging module. [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the module. + Extension points enable extension developers to interact with the Magento_WeeeStaging module. [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the module. - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_WeeeStaging module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.1/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_WeeeStaging module. ## Additional information - You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](http://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). + You can track [backward incompatible changes made in a Magento EE mainline after the Magento 2.0 release](https://devdocs.magento.com/guides/v2.0/release-notes/changes/ee_changes.html). diff --git a/src/_data/codebase/v2_3/system-requirements.yml b/src/_data/codebase/v2_3/system-requirements.yml index 145c487facf..58a9d58c063 100644 --- a/src/_data/codebase/v2_3/system-requirements.yml +++ b/src/_data/codebase/v2_3/system-requirements.yml @@ -1,4 +1,16 @@ --- +2.3.7-p4: + Composer: '1' + Elasticsearch: '7.16' + OpenSearch: '1.2' + MariaDB: '10.3' + MySQL: '5.7' + PHP: '7.4' + RabbitMQ: '3.8' + Redis: '6.0' + Varnish: '6.5' + Apache: '2.4' + nginx: '1.18' 2.3.7-p3: Composer: '1' Elasticsearch: '7.16' @@ -10,7 +22,7 @@ Redis: '6.0' Varnish: '6.5' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' 2.3.7: Composer: '1' Elasticsearch: '7.9' @@ -21,7 +33,7 @@ Redis: '6.0' Varnish: '6.5' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' 2.3.6: Composer: '1' Elasticsearch: '7.7' @@ -32,7 +44,7 @@ Redis: '5.0' Varnish: '6.4' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' 2.3.5: Composer: '1' Elasticsearch: '7.6' @@ -43,7 +55,7 @@ Redis: '5.0' Varnish: '6.3' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' 2.3.4: Composer: '1' Elasticsearch: '5, 6' @@ -54,7 +66,7 @@ Redis: '5.0' Varnish: '4, 5, 6.2' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' 2.3.3: Composer: '1' Elasticsearch: '5, 6' @@ -65,7 +77,7 @@ Redis: '5.0' Varnish: '6.2' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' 2.3.2: Composer: '1' Elasticsearch: '5, 6' @@ -76,7 +88,7 @@ Redis: '5.0' Varnish: '4, 5' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' 2.3.1: Composer: '1' Elasticsearch: '5, 6' @@ -87,7 +99,7 @@ Redis: '5.0' Varnish: '4, 5' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' 2.3.0: Composer: '1' Elasticsearch: '2, 5' @@ -98,4 +110,4 @@ Redis: '5' Varnish: '4, 5' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' diff --git a/src/_data/codebase/v2_4/b2b/bin-magento.json b/src/_data/codebase/v2_4/b2b/bin-magento.json index 5d07e301496..e92886a91dd 100644 --- a/src/_data/codebase/v2_4/b2b/bin-magento.json +++ b/src/_data/codebase/v2_4/b2b/bin-magento.json @@ -1,7 +1,7 @@ { "application": { "name": "Magento CLI", - "version": "2.4.4" + "version": "2.4.5" }, "commands": [ { @@ -147,6 +147,350 @@ }, "hidden": false }, + { + "name": "admin:adobe-ims:disable", + "usage": [ + "admin:adobe-ims:disable" + ], + "description": "Disable Adobe IMS Module", + "help": "Disable Adobe IMS Module", + "definition": { + "arguments": [], + "options": { + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, + { + "name": "admin:adobe-ims:enable", + "usage": [ + "admin:adobe-ims:enable [-o|--organization-id [ORGANIZATION-ID]] [-c|--client-id [CLIENT-ID]] [-s|--client-secret [CLIENT-SECRET]] [-t|--2fa [2FA]]" + ], + "description": "Enable Adobe IMS Module.", + "help": "Enable Adobe IMS Module.", + "definition": { + "arguments": [], + "options": { + "organization-id": { + "name": "--organization-id", + "shortcut": "-o", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Set Organization ID for Adobe IMS configuration. Required when enabling the module", + "default": null + }, + "client-id": { + "name": "--client-id", + "shortcut": "-c", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Set the client ID for Adobe IMS configuration. Required when enabling the module", + "default": null + }, + "client-secret": { + "name": "--client-secret", + "shortcut": "-s", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Set the client Secret for Adobe IMS configuration. Required when enabling the module", + "default": null + }, + "2fa": { + "name": "--2fa", + "shortcut": "-t", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Check if 2FA is enabled for Organization in Adobe Admin Console. Required when enabling the module", + "default": null + }, + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, + { + "name": "admin:adobe-ims:info", + "usage": [ + "admin:adobe-ims:info" + ], + "description": "Information of Adobe IMS Module configuration", + "help": "Information of Adobe IMS Module configuration", + "definition": { + "arguments": [], + "options": { + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, + { + "name": "admin:adobe-ims:status", + "usage": [ + "admin:adobe-ims:status" + ], + "description": "Status of Adobe IMS Module", + "help": "Status of Adobe IMS Module", + "definition": { + "arguments": [], + "options": { + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, { "name": "admin:user:create", "usage": [ @@ -4425,14 +4769,14 @@ "name": "indexer", "is_required": false, "is_array": false, - "description": "Indexer name [catalog_product_price]", + "description": "Indexer name [catalog_product_price|catalogpermissions_category]", "default": null }, "mode": { "name": "mode", "is_required": false, "is_array": false, - "description": "Indexer dimension modes catalog_product_price none,website,customer_group,website_and_customer_group ", + "description": "Indexer dimension modes catalog_product_price none,website,customer_group,website_and_customer_group catalogpermissions_category none,customer_group ", "default": null } }, @@ -4609,7 +4953,7 @@ "name": "indexer", "is_required": false, "is_array": true, - "description": "Space-separated list of index types or omit to apply to all indexes (catalog_product_price)", + "description": "Space-separated list of index types or omit to apply to all indexes (catalog_product_price,catalogpermissions_category)", "default": [] } }, @@ -6910,7 +7254,7 @@ { "name": "newrelic:create:deploy-marker", "usage": [ - "newrelic:create:deploy-marker []" + "newrelic:create:deploy-marker [ []]" ], "description": "Check the deploy queue for entries and create an appropriate deploy marker.", "help": "Check the deploy queue for entries and create an appropriate deploy marker.", @@ -6936,6 +7280,13 @@ "is_array": false, "description": "Deployment User", "default": null + }, + "revision": { + "name": "revision", + "is_required": false, + "is_array": false, + "description": "Revision", + "default": null } }, "options": { @@ -8079,7 +8430,7 @@ { "name": "setup:config:set", "usage": [ - "setup:config:set [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--checkout-async CHECKOUT-ASYNC] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--deferred-total-calculating DEFERRED-TOTAL-CALCULATING] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--magento-init-params MAGENTO-INIT-PARAMS]" + "setup:config:set [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--checkout-async CHECKOUT-ASYNC] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--queue-default-connection QUEUE-DEFAULT-CONNECTION] [--deferred-total-calculating DEFERRED-TOTAL-CALCULATING] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--magento-init-params MAGENTO-INIT-PARAMS]" ], "description": "Creates or modifies the deployment configuration", "help": "Creates or modifies the deployment configuration", @@ -8266,6 +8617,15 @@ "description": "Should consumers wait for a message from the queue? 1 - Yes, 0 - No", "default": null }, + "queue-default-connection": { + "name": "--queue-default-connection", + "shortcut": "", + "accept_value": true, + "is_value_required": true, + "is_multiple": false, + "description": "Message queues default connection. Can be 'db', 'amqp' or a custom queue system.The queue system must be installed and configured, otherwise messages won't be processed correctly.", + "default": null + }, "deferred-total-calculating": { "name": "--deferred-total-calculating", "shortcut": "", @@ -9872,7 +10232,7 @@ { "name": "setup:install", "usage": [ - "setup:install [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--checkout-async CHECKOUT-ASYNC] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--deferred-total-calculating DEFERRED-TOTAL-CALCULATING] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--base-url BASE-URL] [--language LANGUAGE] [--timezone TIMEZONE] [--currency CURRENCY] [--use-rewrites USE-REWRITES] [--use-secure USE-SECURE] [--base-url-secure BASE-URL-SECURE] [--use-secure-admin USE-SECURE-ADMIN] [--admin-use-security-key ADMIN-USE-SECURITY-KEY] [--admin-user [ADMIN-USER]] [--admin-password [ADMIN-PASSWORD]] [--admin-email [ADMIN-EMAIL]] [--admin-firstname [ADMIN-FIRSTNAME]] [--admin-lastname [ADMIN-LASTNAME]] [--search-engine SEARCH-ENGINE] [--elasticsearch-host ELASTICSEARCH-HOST] [--elasticsearch-port ELASTICSEARCH-PORT] [--elasticsearch-enable-auth ELASTICSEARCH-ENABLE-AUTH] [--elasticsearch-username ELASTICSEARCH-USERNAME] [--elasticsearch-password ELASTICSEARCH-PASSWORD] [--elasticsearch-index-prefix ELASTICSEARCH-INDEX-PREFIX] [--elasticsearch-timeout ELASTICSEARCH-TIMEOUT] [--cleanup-database] [--sales-order-increment-prefix SALES-ORDER-INCREMENT-PREFIX] [--use-sample-data] [--enable-modules [ENABLE-MODULES]] [--disable-modules [DISABLE-MODULES]] [--convert-old-scripts [CONVERT-OLD-SCRIPTS]] [-i|--interactive] [--safe-mode [SAFE-MODE]] [--data-restore [DATA-RESTORE]] [--dry-run [DRY-RUN]] [--magento-init-params MAGENTO-INIT-PARAMS]" + "setup:install [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--checkout-async CHECKOUT-ASYNC] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--queue-default-connection QUEUE-DEFAULT-CONNECTION] [--deferred-total-calculating DEFERRED-TOTAL-CALCULATING] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--base-url BASE-URL] [--language LANGUAGE] [--timezone TIMEZONE] [--currency CURRENCY] [--use-rewrites USE-REWRITES] [--use-secure USE-SECURE] [--base-url-secure BASE-URL-SECURE] [--use-secure-admin USE-SECURE-ADMIN] [--admin-use-security-key ADMIN-USE-SECURITY-KEY] [--admin-user [ADMIN-USER]] [--admin-password [ADMIN-PASSWORD]] [--admin-email [ADMIN-EMAIL]] [--admin-firstname [ADMIN-FIRSTNAME]] [--admin-lastname [ADMIN-LASTNAME]] [--search-engine SEARCH-ENGINE] [--elasticsearch-host ELASTICSEARCH-HOST] [--elasticsearch-port ELASTICSEARCH-PORT] [--elasticsearch-enable-auth ELASTICSEARCH-ENABLE-AUTH] [--elasticsearch-username ELASTICSEARCH-USERNAME] [--elasticsearch-password ELASTICSEARCH-PASSWORD] [--elasticsearch-index-prefix ELASTICSEARCH-INDEX-PREFIX] [--elasticsearch-timeout ELASTICSEARCH-TIMEOUT] [--cleanup-database] [--sales-order-increment-prefix SALES-ORDER-INCREMENT-PREFIX] [--use-sample-data] [--enable-modules [ENABLE-MODULES]] [--disable-modules [DISABLE-MODULES]] [--convert-old-scripts [CONVERT-OLD-SCRIPTS]] [-i|--interactive] [--safe-mode [SAFE-MODE]] [--data-restore [DATA-RESTORE]] [--dry-run [DRY-RUN]] [--magento-init-params MAGENTO-INIT-PARAMS]" ], "description": "Installs the Magento application", "help": "Installs the Magento application", @@ -10059,6 +10419,15 @@ "description": "Should consumers wait for a message from the queue? 1 - Yes, 0 - No", "default": null }, + "queue-default-connection": { + "name": "--queue-default-connection", + "shortcut": "", + "accept_value": true, + "is_value_required": true, + "is_multiple": false, + "description": "Message queues default connection. Can be 'db', 'amqp' or a custom queue system.The queue system must be installed and configured, otherwise messages won't be processed correctly.", + "default": null + }, "deferred-total-calculating": { "name": "--deferred-total-calculating", "shortcut": "", @@ -12667,6 +13036,10 @@ { "id": "admin", "commands": [ + "admin:adobe-ims:disable", + "admin:adobe-ims:enable", + "admin:adobe-ims:info", + "admin:adobe-ims:status", "admin:user:create", "admin:user:unlock" ] diff --git a/src/_data/codebase/v2_4/b2b/composer_lock.json b/src/_data/codebase/v2_4/b2b/composer_lock.json index 5f005f76dff..8ad9bf32847 100644 --- a/src/_data/codebase/v2_4/b2b/composer_lock.json +++ b/src/_data/codebase/v2_4/b2b/composer_lock.json @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a5721947b40265d7c85b30e695a53b45", + "content-hash": "6e4e466ce369a8232b5c2fe50af91bcd", "packages": [ { "name": "2tvenom/cborencode", @@ -143,16 +143,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.219.1", + "version": "3.232.4", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "b35b86022c76c7f6b13d3f1be35cb317f582e253" + "reference": "c23943f845b4418d82b8a804ebc2b961de9f9eea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/b35b86022c76c7f6b13d3f1be35cb317f582e253", - "reference": "b35b86022c76c7f6b13d3f1be35cb317f582e253", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c23943f845b4418d82b8a804ebc2b961de9f9eea", + "reference": "c23943f845b4418d82b8a804ebc2b961de9f9eea", "shasum": "" }, "require": { @@ -160,9 +160,9 @@ "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "guzzlehttp/guzzle": "^5.3.3 || ^6.2.1 || ^7.0", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", "guzzlehttp/promises": "^1.4.0", - "guzzlehttp/psr7": "^1.7.0 || ^2.1.1", + "guzzlehttp/psr7": "^1.8.5 || ^2.3", "mtdowling/jmespath.php": "^2.6", "php": ">=5.5" }, @@ -170,6 +170,7 @@ "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", + "composer/composer": "^1.10.22", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", @@ -228,9 +229,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.219.1" + "source": "https://github.com/aws/aws-sdk-php/tree/3.232.4" }, - "time": "2022-04-11T18:15:54+00:00" + "time": "2022-08-09T18:20:29+00:00" }, { "name": "bacon/bacon-qr-code", @@ -464,16 +465,16 @@ }, { "name": "brick/varexporter", - "version": "0.3.5", + "version": "0.3.7", "source": { "type": "git", "url": "https://github.com/brick/varexporter.git", - "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518" + "reference": "3e263cd718d242594c52963760fee2059fd5833c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/varexporter/zipball/05241f28dfcba2b51b11e2d750e296316ebbe518", - "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518", + "url": "https://api.github.com/repos/brick/varexporter/zipball/3e263cd718d242594c52963760fee2059fd5833c", + "reference": "3e263cd718d242594c52963760fee2059fd5833c", "shasum": "" }, "require": { @@ -483,7 +484,7 @@ "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^8.5 || ^9.0", - "vimeo/psalm": "4.4.1" + "vimeo/psalm": "4.23.0" }, "type": "library", "autoload": { @@ -501,9 +502,15 @@ ], "support": { "issues": "https://github.com/brick/varexporter/issues", - "source": "https://github.com/brick/varexporter/tree/0.3.5" + "source": "https://github.com/brick/varexporter/tree/0.3.7" }, - "time": "2021-02-10T13:53:07+00:00" + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2022-06-29T23:37:57+00:00" }, { "name": "christian-riesen/base32", @@ -643,20 +650,23 @@ }, { "name": "colinmollenhour/credis", - "version": "v1.12.1", + "version": "v1.13.0", "source": { "type": "git", "url": "https://github.com/colinmollenhour/credis.git", - "reference": "c27faa11724229986335c23f4b6d0f1d8d6547fb" + "reference": "afec8e58ec93d2291c127fa19709a048f28641e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/c27faa11724229986335c23f4b6d0f1d8d6547fb", - "reference": "c27faa11724229986335c23f4b6d0f1d8d6547fb", + "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/afec8e58ec93d2291c127fa19709a048f28641e5", + "reference": "afec8e58ec93d2291c127fa19709a048f28641e5", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=5.6.0" + }, + "suggest": { + "ext-redis": "Improved performance for communicating with redis" }, "type": "library", "autoload": { @@ -681,9 +691,9 @@ "homepage": "https://github.com/colinmollenhour/credis", "support": { "issues": "https://github.com/colinmollenhour/credis/issues", - "source": "https://github.com/colinmollenhour/credis/tree/v1.12.1" + "source": "https://github.com/colinmollenhour/credis/tree/v1.13.0" }, - "time": "2020-11-06T16:09:14+00:00" + "time": "2022-04-07T14:57:22+00:00" }, { "name": "colinmollenhour/php-redis-session-abstract", @@ -731,16 +741,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.3.1", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b" + "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", - "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/30897edbfb15e784fe55587b4f73ceefd3c4d98c", + "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c", "shasum": "" }, "require": { @@ -787,7 +797,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.1" + "source": "https://github.com/composer/ca-bundle/tree/1.3.3" }, "funding": [ { @@ -803,20 +813,20 @@ "type": "tidelift" } ], - "time": "2021-10-28T20:44:15+00:00" + "time": "2022-07-20T07:14:26+00:00" }, { "name": "composer/composer", - "version": "2.2.11", + "version": "2.2.17", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "2f5bcf0480c13b4fa1ac490aa9344e4402507538" + "reference": "a8ab5070fb99396e4710baee286478ad697724c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/2f5bcf0480c13b4fa1ac490aa9344e4402507538", - "reference": "2f5bcf0480c13b4fa1ac490aa9344e4402507538", + "url": "https://api.github.com/repos/composer/composer/zipball/a8ab5070fb99396e4710baee286478ad697724c2", + "reference": "a8ab5070fb99396e4710baee286478ad697724c2", "shasum": "" }, "require": { @@ -886,7 +896,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.2.11" + "source": "https://github.com/composer/composer/tree/2.2.17" }, "funding": [ { @@ -902,7 +912,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T20:00:52+00:00" + "time": "2022-07-13T13:27:38+00:00" }, { "name": "composer/metadata-minifier", @@ -1127,16 +1137,16 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.6", + "version": "1.5.7", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "a30d487169d799745ca7280bc90fdfa693536901" + "reference": "c848241796da2abf65837d51dce1fae55a960149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a30d487169d799745ca7280bc90fdfa693536901", - "reference": "a30d487169d799745ca7280bc90fdfa693536901", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", + "reference": "c848241796da2abf65837d51dce1fae55a960149", "shasum": "" }, "require": { @@ -1187,7 +1197,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.6" + "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" }, "funding": [ { @@ -1203,7 +1213,7 @@ "type": "tidelift" } ], - "time": "2021-11-18T10:14:14+00:00" + "time": "2022-05-23T07:37:50+00:00" }, { "name": "composer/xdebug-handler", @@ -1320,23 +1330,23 @@ }, { "name": "elasticsearch/elasticsearch", - "version": "v7.16.0", + "version": "v7.17.0", "source": { "type": "git", "url": "https://github.com/elastic/elasticsearch-php.git", - "reference": "f87f93f71f564d4bbdc5f008d296d1c37d828e10" + "reference": "1890f9d7fde076b5a3ddcf579a802af05b2e781b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/f87f93f71f564d4bbdc5f008d296d1c37d828e10", - "reference": "f87f93f71f564d4bbdc5f008d296d1c37d828e10", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/1890f9d7fde076b5a3ddcf579a802af05b2e781b", + "reference": "1890f9d7fde076b5a3ddcf579a802af05b2e781b", "shasum": "" }, "require": { "ext-json": ">=1.3.7", "ezimuel/ringphp": "^1.1.2", "php": "^7.3 || ^8.0", - "psr/log": "^1|^2" + "psr/log": "^1|^2|^3" }, "require-dev": { "ext-yaml": "*", @@ -1381,22 +1391,22 @@ ], "support": { "issues": "https://github.com/elastic/elasticsearch-php/issues", - "source": "https://github.com/elastic/elasticsearch-php/tree/v7.16.0" + "source": "https://github.com/elastic/elasticsearch-php/tree/v7.17.0" }, - "time": "2021-12-09T20:04:01+00:00" + "time": "2022-02-03T13:40:04+00:00" }, { "name": "endroid/qr-code", - "version": "4.4.8", + "version": "4.4.9", "source": { "type": "git", "url": "https://github.com/endroid/qr-code.git", - "reference": "9109eb7790ece1d46b1ab40eb7f375bbd6e7cb5d" + "reference": "bf087fa1e93a1b7310e2d94d187e26ae51db199d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/qr-code/zipball/9109eb7790ece1d46b1ab40eb7f375bbd6e7cb5d", - "reference": "9109eb7790ece1d46b1ab40eb7f375bbd6e7cb5d", + "url": "https://api.github.com/repos/endroid/qr-code/zipball/bf087fa1e93a1b7310e2d94d187e26ae51db199d", + "reference": "bf087fa1e93a1b7310e2d94d187e26ae51db199d", "shasum": "" }, "require": { @@ -1447,7 +1457,7 @@ ], "support": { "issues": "https://github.com/endroid/qr-code/issues", - "source": "https://github.com/endroid/qr-code/tree/4.4.8" + "source": "https://github.com/endroid/qr-code/tree/4.4.9" }, "funding": [ { @@ -1455,7 +1465,7 @@ "type": "github" } ], - "time": "2022-04-06T09:39:20+00:00" + "time": "2022-05-10T07:25:08+00:00" }, { "name": "ezimuel/guzzlestreams", @@ -1567,6 +1577,57 @@ }, "time": "2021-11-16T11:51:30+00:00" }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.14.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "type": "library", + "autoload": { + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" + }, + "time": "2021-12-25T01:21:49+00:00" + }, { "name": "fgrosse/phpasn1", "version": "v2.4.0", @@ -1696,22 +1757,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.4.2", + "version": "7.4.5", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4" + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ac1ec1cd9b5624694c3a40be801d94137afb12b4", - "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.1", + "guzzlehttp/psr7": "^1.9 || ^2.4", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1800,7 +1861,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.2" + "source": "https://github.com/guzzle/guzzle/tree/7.4.5" }, "funding": [ { @@ -1816,7 +1877,7 @@ "type": "tidelift" } ], - "time": "2022-03-20T14:16:28+00:00" + "time": "2022-06-20T22:16:13+00:00" }, { "name": "guzzlehttp/promises", @@ -1904,16 +1965,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.2.1", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2" + "reference": "13388f00956b1503577598873fffb5ae994b5737" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2", - "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737", + "reference": "13388f00956b1503577598873fffb5ae994b5737", "shasum": "" }, "require": { @@ -1937,7 +1998,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "2.4-dev" } }, "autoload": { @@ -1999,7 +2060,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.2.1" + "source": "https://github.com/guzzle/psr7/tree/2.4.0" }, "funding": [ { @@ -2015,20 +2076,20 @@ "type": "tidelift" } ], - "time": "2022-03-20T21:55:58+00:00" + "time": "2022-06-20T21:43:11+00:00" }, { "name": "justinrainbow/json-schema", - "version": "5.2.11", + "version": "5.2.12", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa" + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", "shasum": "" }, "require": { @@ -2083,41 +2144,41 @@ ], "support": { "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.11" + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" }, - "time": "2021-07-22T09:24:00+00:00" + "time": "2022-04-13T08:02:27+00:00" }, { "name": "laminas/laminas-captcha", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-captcha.git", - "reference": "b07e499a7df73795768aa89e0138757a7ddb9195" + "reference": "debd6783ce593cb2e4cf74c3028baf1730918d85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/b07e499a7df73795768aa89e0138757a7ddb9195", - "reference": "b07e499a7df73795768aa89e0138757a7ddb9195", + "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/debd6783ce593cb2e4cf74c3028baf1730918d85", + "reference": "debd6783ce593cb2e4cf74c3028baf1730918d85", "shasum": "" }, "require": { - "laminas/laminas-math": "^2.7 || ^3.0", - "laminas/laminas-recaptcha": "^3.0", + "laminas/laminas-recaptcha": "^3.4.0", "laminas/laminas-session": "^2.12", - "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-text": "^2.8", - "laminas/laminas-validator": "^2.14", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-stdlib": "^3.10.1", + "laminas/laminas-text": "^2.9.0", + "laminas/laminas-validator": "^2.19.0", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-captcha": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.1.4", - "phpunit/phpunit": "^9.4.3", - "psalm/plugin-phpunit": "^0.15.1", - "vimeo/psalm": "^4.6" + "ext-gd": "*", + "laminas/laminas-coding-standard": "~2.3.0", + "phpunit/phpunit": "^9.5.21", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-i18n-resources": "Translations of captcha messages" @@ -2152,20 +2213,20 @@ "type": "community_bridge" } ], - "time": "2022-04-07T10:41:09+00:00" + "time": "2022-07-24T15:35:33+00:00" }, { "name": "laminas/laminas-code", - "version": "4.5.1", + "version": "4.5.2", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e" + "reference": "da01fb74c08f37e20e7ae49f1e3ee09aa401ebad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/6fd96d4d913571a2cd056a27b123fa28cb90ac4e", - "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/da01fb74c08f37e20e7ae49f1e3ee09aa401ebad", + "reference": "da01fb74c08f37e20e7ae49f1e3ee09aa401ebad", "shasum": "" }, "require": { @@ -2218,7 +2279,7 @@ "type": "community_bridge" } ], - "time": "2021-12-19T18:06:55+00:00" + "time": "2022-06-06T11:26:02+00:00" }, { "name": "laminas/laminas-config", @@ -2414,37 +2475,38 @@ }, { "name": "laminas/laminas-di", - "version": "3.4.0", + "version": "3.9.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-di.git", - "reference": "fc8a5547db10908a25b03ed16452d22318b75090" + "reference": "9b7091c50587f7ded53519d229421a02532feb9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-di/zipball/fc8a5547db10908a25b03ed16452d22318b75090", - "reference": "fc8a5547db10908a25b03ed16452d22318b75090", + "url": "https://api.github.com/repos/laminas/laminas-di/zipball/9b7091c50587f7ded53519d229421a02532feb9a", + "reference": "9b7091c50587f7ded53519d229421a02532feb9a", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^3.6", "php": ">=7.4, <8.2", "psr/container": "^1.1.1", - "psr/log": "^1.1.4" + "psr/log": "^1.1.4 || ^3.0.0" }, "conflict": { + "laminas/laminas-servicemanager": "<3.13.0", "laminas/laminas-servicemanager-di": "*", "phpspec/prophecy": "<1.9.0", "zendframework/zend-di": "*" }, "require-dev": { - "container-interop/container-interop": "^1.2.0", "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-servicemanager": "^3.7", + "laminas/laminas-servicemanager": "^3.12", "mikey179/vfsstream": "^1.6.10@alpha", + "phpbench/phpbench": "^1.2", "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^0.12.64", - "phpunit/phpunit": "^9.5.5" + "phpunit/phpunit": "^9.5.5", + "squizlabs/php_codesniffer": "^3.6" }, "suggest": { "laminas/laminas-servicemanager": "An IoC container without auto wiring capabilities" @@ -2486,37 +2548,37 @@ "type": "community_bridge" } ], - "time": "2022-02-26T15:43:05+00:00" + "time": "2022-06-30T12:29:26+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.9.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f" + "reference": "58af67282db37d24e584a837a94ee55b9c7552be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/58af67282db37d24e584a837a94ee55b9c7552be", + "reference": "58af67282db37d24e584a837a94ee55b9c7552be", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "ext-ctype": "*", + "ext-mbstring": "*", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { + "infection/infection": "^0.26.6", "laminas/laminas-coding-standard": "~2.3.0", - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.12.2", - "vimeo/psalm": "^3.16" - }, - "suggest": { - "ext-iconv": "*", - "ext-mbstring": "*" + "maglnet/composer-require-checker": "^3.8.0", + "phpunit/phpunit": "^9.5.18", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.22.0" }, "type": "library", "autoload": { @@ -2548,7 +2610,7 @@ "type": "community_bridge" } ], - "time": "2021-09-02T17:10:53+00:00" + "time": "2022-03-08T20:15:36+00:00" }, { "name": "laminas/laminas-eventmanager", @@ -2619,40 +2681,41 @@ }, { "name": "laminas/laminas-feed", - "version": "2.17.0", + "version": "2.18.2", "source": { "type": "git", "url": "https://github.com/laminas/laminas-feed.git", - "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0" + "reference": "a57fdb9df42950d5b7f052509fbdab0d081c6b6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/1ccb024ea615606ed1d676ba0fa3f22a398f3ac0", - "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0", + "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/a57fdb9df42950d5b7f052509fbdab0d081c6b6d", + "reference": "a57fdb9df42950d5b7f052509fbdab0d081c6b6d", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "laminas/laminas-escaper": "^2.9", + "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.3", "zendframework/zend-feed": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.7.2", - "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-cache": "^2.13.2 || ^3.1.3", + "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.0.0", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-db": "^2.13.3", "laminas/laminas-http": "^2.15", - "laminas/laminas-servicemanager": "^3.7", "laminas/laminas-validator": "^2.15", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.13.0", + "psalm/plugin-phpunit": "^0.17.0", "psr/http-message": "^1.0.1", - "vimeo/psalm": "^4.1" + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", @@ -2672,11 +2735,13 @@ "license": [ "BSD-3-Clause" ], - "description": "provides functionality for consuming RSS and Atom feeds", + "description": "provides functionality for creating and consuming RSS and Atom feeds", "homepage": "https://laminas.dev", "keywords": [ + "atom", "feed", - "laminas" + "laminas", + "rss" ], "support": { "chat": "https://laminas.dev/chat", @@ -2692,7 +2757,7 @@ "type": "community_bridge" } ], - "time": "2022-03-24T10:26:04+00:00" + "time": "2022-08-08T17:02:35+00:00" }, { "name": "laminas/laminas-http", @@ -2878,45 +2943,42 @@ }, { "name": "laminas/laminas-mail", - "version": "2.16.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mail.git", - "reference": "1ee1a384b96c8af29ecad9b3a7adc27a150ebc49" + "reference": "bf7504247d5a110d941efa8eb4815f5292a8dc56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/1ee1a384b96c8af29ecad9b3a7adc27a150ebc49", - "reference": "1ee1a384b96c8af29ecad9b3a7adc27a150ebc49", + "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/bf7504247d5a110d941efa8eb4815f5292a8dc56", + "reference": "bf7504247d5a110d941efa8eb4815f5292a8dc56", "shasum": "" }, "require": { "ext-iconv": "*", - "laminas/laminas-loader": "^2.8", + "laminas/laminas-loader": "^2.8.0", "laminas/laminas-mime": "^2.9.1", - "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-validator": "^2.15", - "php": "^7.3 || ~8.0.0 || ~8.1.0", - "symfony/polyfill-intl-idn": "^1.24.0", - "symfony/polyfill-mbstring": "^1.12.0", - "webmozart/assert": "^1.10" - }, - "conflict": { - "zendframework/zend-mail": "*" + "laminas/laminas-stdlib": "^3.11.0", + "laminas/laminas-validator": "^2.23.0", + "php": "~8.0.0 || ~8.1.0", + "symfony/polyfill-intl-idn": "^1.26.0", + "symfony/polyfill-mbstring": "^1.16.0", + "webmozart/assert": "^1.11.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-crypt": "^2.6 || ^3.4", - "laminas/laminas-db": "^2.13.3", - "laminas/laminas-servicemanager": "^3.7", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", - "symfony/process": "^5.3.7", - "vimeo/psalm": "^4.7" + "laminas/laminas-coding-standard": "~2.3.0", + "laminas/laminas-crypt": "^3.8.0", + "laminas/laminas-db": "^2.15.0", + "laminas/laminas-servicemanager": "^3.16.0", + "phpunit/phpunit": "^9.5.21", + "psalm/plugin-phpunit": "^0.17.0", + "symfony/process": "^6.0.11", + "vimeo/psalm": "^4.26.0" }, "suggest": { - "laminas/laminas-crypt": "Crammd5 support in SMTP Auth", - "laminas/laminas-servicemanager": "^2.7.10 || ^3.3.1 when using SMTP to deliver messages" + "laminas/laminas-crypt": "^3.8 Crammd5 support in SMTP Auth", + "laminas/laminas-servicemanager": "^3.16 when using SMTP to deliver messages" }, "type": "library", "extra": { @@ -2954,74 +3016,7 @@ "type": "community_bridge" } ], - "time": "2022-02-23T21:08:17+00:00" - }, - { - "name": "laminas/laminas-math", - "version": "3.5.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-math.git", - "reference": "146d8187ab247ae152e811a6704a953d43537381" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-math/zipball/146d8187ab247ae152e811a6704a953d43537381", - "reference": "146d8187ab247ae152e811a6704a953d43537381", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "conflict": { - "zendframework/zend-math": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^9.5.5" - }, - "suggest": { - "ext-bcmath": "If using the bcmath functionality", - "ext-gmp": "If using the gmp functionality" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev", - "dev-develop": "3.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Laminas\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Create cryptographically secure pseudo-random numbers, and manage big integers", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "math" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-math/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-math/issues", - "rss": "https://github.com/laminas/laminas-math/releases.atom", - "source": "https://github.com/laminas/laminas-math" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-12-06T02:02:07+00:00" + "time": "2022-08-06T12:27:12+00:00" }, { "name": "laminas/laminas-mime", @@ -3303,37 +3298,36 @@ }, { "name": "laminas/laminas-router", - "version": "3.5.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-router.git", - "reference": "44759e71620030c93d99e40b394fe9fff8f0beda" + "reference": "0227cc29f62583dd1ca50d17d117b832edaa8cd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-router/zipball/44759e71620030c93d99e40b394fe9fff8f0beda", - "reference": "44759e71620030c93d99e40b394fe9fff8f0beda", + "url": "https://api.github.com/repos/laminas/laminas-router/zipball/0227cc29f62583dd1ca50d17d117b832edaa8cd8", + "reference": "0227cc29f62583dd1ca50d17d117b832edaa8cd8", "shasum": "" }, "require": { - "container-interop/container-interop": "^1.2", "laminas/laminas-http": "^2.15", - "laminas/laminas-servicemanager": "^3.7", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-servicemanager": "^3.14.0", + "laminas/laminas-stdlib": "^3.10.1", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-router": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-i18n": "^2.7.4", + "laminas/laminas-i18n": "^2.15.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", - "vimeo/psalm": "^4.7" + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" }, "suggest": { - "laminas/laminas-i18n": "^2.7.4, if defining translatable HTTP path segments" + "laminas/laminas-i18n": "^2.15.0 if defining translatable HTTP path segments" }, "type": "library", "extra": { @@ -3371,7 +3365,7 @@ "type": "community_bridge" } ], - "time": "2021-10-13T16:02:43+00:00" + "time": "2022-07-18T01:39:51+00:00" }, { "name": "laminas/laminas-server", @@ -3436,16 +3430,16 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.11.2", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "8a1f4d53ec93b2e18174f6f186922ef44d11a75a" + "reference": "863c66733740cd36ebf5e700f4258ef2c68a2a24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/8a1f4d53ec93b2e18174f6f186922ef44d11a75a", - "reference": "8a1f4d53ec93b2e18174f6f186922ef44d11a75a", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/863c66733740cd36ebf5e700f4258ef2c68a2a24", + "reference": "863c66733740cd36ebf5e700f4258ef2c68a2a24", "shasum": "" }, "require": { @@ -3468,14 +3462,14 @@ "require-dev": { "composer/package-versions-deprecated": "^1.0", "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-container-config-test": "^0.6", + "laminas/laminas-container-config-test": "^0.7", "laminas/laminas-dependency-plugin": "^2.1.2", "mikey179/vfsstream": "^1.6.10@alpha", "ocramius/proxy-manager": "^2.11", "phpbench/phpbench": "^1.1", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.16.1", + "psalm/plugin-phpunit": "^0.17.0", "vimeo/psalm": "^4.8" }, "suggest": { @@ -3523,43 +3517,44 @@ "type": "community_bridge" } ], - "time": "2022-04-07T17:21:25+00:00" + "time": "2022-07-27T14:58:17+00:00" }, { "name": "laminas/laminas-session", - "version": "2.12.1", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-session.git", - "reference": "888c6a344e9a4c9f34ab6e09346640eac9be3fcf" + "reference": "9f8a6077dd22b3b253583b1be84ddd5bf6fa1ef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-session/zipball/888c6a344e9a4c9f34ab6e09346640eac9be3fcf", - "reference": "888c6a344e9a4c9f34ab6e09346640eac9be3fcf", + "url": "https://api.github.com/repos/laminas/laminas-session/zipball/9f8a6077dd22b3b253583b1be84ddd5bf6fa1ef4", + "reference": "9f8a6077dd22b3b253583b1be84ddd5bf6fa1ef4", "shasum": "" }, "require": { - "laminas/laminas-eventmanager": "^3.4", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-eventmanager": "^3.5", + "laminas/laminas-servicemanager": "^3.15.1", + "laminas/laminas-stdlib": "^3.10.1", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-session": "*" }, "require-dev": { - "container-interop/container-interop": "^1.1", - "laminas/laminas-cache": "3.0.x-dev", - "laminas/laminas-cache-storage-adapter-memory": "2.0.x-dev", - "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-cache": "^3.1.3", + "laminas/laminas-cache-storage-adapter-memory": "^2.0.0", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-db": "^2.13.4", "laminas/laminas-http": "^2.15", - "laminas/laminas-servicemanager": "^3.7", "laminas/laminas-validator": "^2.15", - "mongodb/mongodb": "v1.9.x-dev", + "mongodb/mongodb": "~1.12.0", "php-mock/php-mock-phpunit": "^1.1.2 || ^2.0", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.9" + "phpunit/phpunit": "^9.5.9", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component", @@ -3605,7 +3600,7 @@ "type": "community_bridge" } ], - "time": "2022-02-15T16:38:29+00:00" + "time": "2022-07-22T10:26:33+00:00" }, { "name": "laminas/laminas-soap", @@ -3677,16 +3672,16 @@ }, { "name": "laminas/laminas-stdlib", - "version": "3.7.1", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "bcd869e2fe88d567800057c1434f2380354fe325" + "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/bcd869e2fe88d567800057c1434f2380354fe325", - "reference": "bcd869e2fe88d567800057c1434f2380354fe325", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f", + "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f", "shasum": "" }, "require": { @@ -3699,7 +3694,7 @@ "laminas/laminas-coding-standard": "~2.3.0", "phpbench/phpbench": "^1.0", "phpunit/phpunit": "^9.3.7", - "psalm/plugin-phpunit": "^0.16.0", + "psalm/plugin-phpunit": "^0.17.0", "vimeo/psalm": "^4.7" }, "type": "library", @@ -3732,7 +3727,7 @@ "type": "community_bridge" } ], - "time": "2022-01-21T15:50:46+00:00" + "time": "2022-07-27T12:28:58+00:00" }, { "name": "laminas/laminas-text", @@ -3852,51 +3847,47 @@ }, { "name": "laminas/laminas-validator", - "version": "2.17.0", + "version": "2.23.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "bdd503adc83d814a5c94e598ea0eb9fc7ca56339" + "reference": "6d61b6cc3b222f13807a18d9247cdfb084958b03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/bdd503adc83d814a5c94e598ea0eb9fc7ca56339", - "reference": "bdd503adc83d814a5c94e598ea0eb9fc7ca56339", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/6d61b6cc3b222f13807a18d9247cdfb084958b03", + "reference": "6d61b6cc3b222f13807a18d9247cdfb084958b03", "shasum": "" }, "require": { - "container-interop/container-interop": "^1.1", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-servicemanager": "^3.12.0", + "laminas/laminas-stdlib": "^3.10", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-validator": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.6.1", - "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-db": "^2.7", - "laminas/laminas-filter": "^2.6", + "laminas/laminas-filter": "^2.14.0", "laminas/laminas-http": "^2.14.2", - "laminas/laminas-i18n": "^2.6", - "laminas/laminas-math": "^2.6", - "laminas/laminas-servicemanager": "^2.7.11 || ^3.0.3", - "laminas/laminas-session": "^2.8", - "laminas/laminas-uri": "^2.7", + "laminas/laminas-i18n": "^2.15.0", + "laminas/laminas-session": "^2.12.1", + "laminas/laminas-uri": "^2.9.1", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.0", + "phpunit/phpunit": "^9.5.21", + "psalm/plugin-phpunit": "^0.17.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.0", - "vimeo/psalm": "^4.3" + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", "laminas/laminas-filter": "Laminas\\Filter component, required by the Digits validator", "laminas/laminas-i18n": "Laminas\\I18n component to allow translation of validation error messages", "laminas/laminas-i18n-resources": "Translations of validator messages", - "laminas/laminas-math": "Laminas\\Math component, required by the Csrf validator", "laminas/laminas-servicemanager": "Laminas\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", "laminas/laminas-session": "Laminas\\Session component, ^2.8; required by the Csrf validator", "laminas/laminas-uri": "Laminas\\Uri component, required by the Uri and Sitemap\\Loc validators", @@ -3938,60 +3929,63 @@ "type": "community_bridge" } ], - "time": "2022-03-08T18:16:51+00:00" + "time": "2022-07-27T19:17:59+00:00" }, { "name": "laminas/laminas-view", - "version": "2.14.2", + "version": "2.22.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-view.git", - "reference": "ced4133462b917c62d1efc26f982a62b5e319b4b" + "reference": "ae32391bdec45ca9fc73dd0882cd7301ab07ecf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-view/zipball/ced4133462b917c62d1efc26f982a62b5e319b4b", - "reference": "ced4133462b917c62d1efc26f982a62b5e319b4b", + "url": "https://api.github.com/repos/laminas/laminas-view/zipball/ae32391bdec45ca9fc73dd0882cd7301ab07ecf3", + "reference": "ae32391bdec45ca9fc73dd0882cd7301ab07ecf3", "shasum": "" }, "require": { + "container-interop/container-interop": "^1.2", + "ext-dom": "*", + "ext-filter": "*", "ext-json": "*", + "laminas/laminas-escaper": "^2.5", "laminas/laminas-eventmanager": "^3.4", - "laminas/laminas-json": "^2.6.1 || ^3.3", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-json": "^3.3", + "laminas/laminas-servicemanager": "^3.14.0", + "laminas/laminas-stdlib": "^3.10.1", + "php": "^7.4 || ~8.0.0 || ~8.1.0", + "psr/container": "^1 || ^2" }, "conflict": { + "container-interop/container-interop": "<1.2", "laminas/laminas-router": "<3.0.1", "laminas/laminas-servicemanager": "<3.3", + "laminas/laminas-session": "<2.12", "zendframework/zend-view": "*" }, "require-dev": { - "ext-dom": "*", "laminas/laminas-authentication": "^2.5", - "laminas/laminas-cache": "^2.6.1", - "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-console": "^2.6", - "laminas/laminas-escaper": "^2.5", "laminas/laminas-feed": "^2.15", - "laminas/laminas-filter": "^2.6.1", + "laminas/laminas-filter": "^2.13.0", "laminas/laminas-http": "^2.15", "laminas/laminas-i18n": "^2.6", "laminas/laminas-modulemanager": "^2.7.1", - "laminas/laminas-mvc": "^2.7.14 || ^3.0", + "laminas/laminas-mvc": "^3.0", "laminas/laminas-mvc-i18n": "^1.1", - "laminas/laminas-mvc-plugin-flashmessenger": "^1.2", - "laminas/laminas-navigation": "^2.8.1", - "laminas/laminas-paginator": "^2.5", + "laminas/laminas-mvc-plugin-flashmessenger": "^1.5.0", + "laminas/laminas-navigation": "^2.13.1", + "laminas/laminas-paginator": "^2.11.0", "laminas/laminas-permissions-acl": "^2.6", "laminas/laminas-router": "^3.0.1", - "laminas/laminas-servicemanager": "^3.3", - "laminas/laminas-session": "^2.12", "laminas/laminas-uri": "^2.5", "phpspec/prophecy": "^1.12", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.16.1", + "psalm/plugin-phpunit": "^0.17.0", "vimeo/psalm": "^4.10" }, "suggest": { @@ -4042,20 +4036,20 @@ "type": "community_bridge" } ], - "time": "2021-11-17T12:05:00+00:00" + "time": "2022-07-19T09:25:16+00:00" }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.5.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab" + "reference": "e112dd2c099f4f6142c16fc65fda89a638e06885" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/7f049390b756d34ba5940a8fb47634fbb51f79ab", - "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/e112dd2c099f4f6142c16fc65fda89a638e06885", + "reference": "e112dd2c099f4f6142c16fc65fda89a638e06885", "shasum": "" }, "require": { @@ -4104,20 +4098,20 @@ "type": "community_bridge" } ], - "time": "2022-02-22T22:17:01+00:00" + "time": "2022-07-29T13:28:29+00:00" }, { "name": "league/flysystem", - "version": "2.3.2", + "version": "2.4.5", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "4b6da3e75b5e8eee53bb5ee46ded15a532843f80" + "reference": "9392c5f1df57d865c406ee65e5012d566686be12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4b6da3e75b5e8eee53bb5ee46ded15a532843f80", - "reference": "4b6da3e75b5e8eee53bb5ee46ded15a532843f80", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9392c5f1df57d865c406ee65e5012d566686be12", + "reference": "9392c5f1df57d865c406ee65e5012d566686be12", "shasum": "" }, "require": { @@ -4134,6 +4128,7 @@ "aws/aws-sdk-php": "^3.132.4", "composer/semver": "^3.0", "ext-fileinfo": "*", + "ext-ftp": "*", "friendsofphp/php-cs-fixer": "^3.2", "google/cloud-storage": "^1.23", "phpseclib/phpseclib": "^2.0", @@ -4173,7 +4168,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/2.3.2" + "source": "https://github.com/thephpleague/flysystem/tree/2.4.5" }, "funding": [ { @@ -4189,7 +4184,7 @@ "type": "tidelift" } ], - "time": "2021-11-28T20:19:08+00:00" + "time": "2022-04-25T18:39:39+00:00" }, { "name": "league/flysystem-aws-s3-v3", @@ -4248,16 +4243,16 @@ }, { "name": "league/mime-type-detection", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "3e4a35d756eedc67096f30240a68a3149120dae7" + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3e4a35d756eedc67096f30240a68a3149120dae7", - "reference": "3e4a35d756eedc67096f30240a68a3149120dae7", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", "shasum": "" }, "require": { @@ -4288,7 +4283,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.10.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" }, "funding": [ { @@ -4300,41 +4295,25 @@ "type": "tidelift" } ], - "time": "2022-04-11T12:49:04+00:00" - }, - { - "name": "magento/adobe-ims", - "version": "2.1.3", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/adobe-ims/magento-adobe-ims-2.1.3.0.zip", - "shasum": "d1c366fa17d053aac4d121c4839978db56e95e3a" - }, - "require": { - "magento/module-adobe-ims": "2.1.*", - "magento/module-adobe-ims-api": "2.1.*" - }, - "type": "metapackage", - "description": "Adobe IMS Integration" + "time": "2022-04-17T13:12:02+00:00" }, { "name": "magento/adobe-stock-integration", - "version": "2.1.3", + "version": "2.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/adobe-stock-integration/magento-adobe-stock-integration-2.1.3.0.zip", - "shasum": "3b8403c4f547a141c7f1c0e7646c108ecd4295d7" + "url": "https://repo.magento.com/archives/magento/adobe-stock-integration/magento-adobe-stock-integration-2.1.4.0.zip", + "shasum": "9262dee07c84dba5243b0c923ad31cfdf39d1f6f" }, "require": { - "magento/adobe-ims": "2.1.*", - "magento/module-adobe-stock-admin-ui": "1.3.*", - "magento/module-adobe-stock-asset": "1.3.*", - "magento/module-adobe-stock-asset-api": "2.0.*", - "magento/module-adobe-stock-client": "1.3.*", - "magento/module-adobe-stock-client-api": "2.1.*", - "magento/module-adobe-stock-image": "1.3.*", - "magento/module-adobe-stock-image-admin-ui": "1.3.*", - "magento/module-adobe-stock-image-api": "1.3.*" + "magento/module-adobe-stock-admin-ui": "1.3.2", + "magento/module-adobe-stock-asset": "1.3.1", + "magento/module-adobe-stock-asset-api": "2.0.1", + "magento/module-adobe-stock-client": "1.3.2", + "magento/module-adobe-stock-client-api": "2.1.2", + "magento/module-adobe-stock-image": "1.3.3", + "magento/module-adobe-stock-image-admin-ui": "1.3.3", + "magento/module-adobe-stock-image-api": "1.3.1" }, "type": "metapackage", "description": "Adobe Stock integration" @@ -4427,56 +4406,56 @@ }, { "name": "magento/extension-b2b", - "version": "1.3.3", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/extension-b2b/magento-extension-b2b-1.3.3.0.zip", - "shasum": "a1068d064b36ee035826a71c356d285d6ae10852" - }, - "require": { - "magento/magento2-b2b-base": "1.3.3", - "magento/module-b2b": "100.3.3", - "magento/module-bundle-negotiable-quote": "100.3.3", - "magento/module-bundle-requisition-list": "100.3.3", - "magento/module-bundle-requisition-list-graph-ql": "1.3.2", - "magento/module-bundle-shared-catalog": "100.3.3", - "magento/module-checkout-address-search-negotiable-quote": "100.3.3", - "magento/module-checkout-agreements-negotiable-quote": "100.3.3", - "magento/module-checkout-agreements-purchase-order": "1.3.2", - "magento/module-company": "101.1.3", - "magento/module-company-credit": "100.3.3", - "magento/module-company-credit-graph-ql": "1.3.2", - "magento/module-company-graph-ql": "1.3.2", - "magento/module-company-payment": "100.3.3", - "magento/module-company-shipping": "1.3.3", - "magento/module-configurable-negotiable-quote": "100.3.3", - "magento/module-configurable-requisition-list": "100.3.3", - "magento/module-configurable-requisition-list-graph-ql": "1.3.2", - "magento/module-configurable-shared-catalog": "100.3.3", - "magento/module-downloadable-requisition-list-graph-ql": "1.3.2", - "magento/module-gift-card-negotiable-quote": "100.3.3", - "magento/module-gift-card-requisition-list": "100.3.3", - "magento/module-gift-card-requisition-list-graph-ql": "1.3.2", - "magento/module-gift-card-shared-catalog": "100.3.3", - "magento/module-grouped-requisition-list": "100.3.3", - "magento/module-grouped-shared-catalog": "100.3.3", - "magento/module-negotiable-quote": "100.3.3", - "magento/module-negotiable-quote-async-order": "1.3.0", - "magento/module-negotiable-quote-graph-ql": "1.3.1", - "magento/module-negotiable-quote-shared-catalog": "100.3.3", - "magento/module-negotiable-quote-weee": "100.3.3", - "magento/module-order-history-search": "100.3.3", - "magento/module-paypal-negotiable-quote": "1.3.1", - "magento/module-paypal-purchase-order": "1.3.2", - "magento/module-purchase-order": "100.3.3", - "magento/module-purchase-order-rule": "100.3.3", - "magento/module-quick-order": "100.3.3", - "magento/module-requisition-list": "100.3.3", - "magento/module-requisition-list-graph-ql": "1.3.2", - "magento/module-shared-catalog": "100.3.3", - "magento/module-shared-catalog-graph-ql": "1.3.2", - "magento/security-package-b2b": "1.0.1", - "php": "~7.4.0||~8.0.0||~8.1.0" + "version": "1.3.4", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/extension-b2b/magento-extension-b2b-1.3.4.0.zip", + "shasum": "4ce100253b1e6af5333b0f382965eda8d121435e" + }, + "require": { + "magento/magento2-b2b-base": "1.3.4", + "magento/module-b2b": "100.3.4", + "magento/module-bundle-negotiable-quote": "100.3.4", + "magento/module-bundle-requisition-list": "100.3.4", + "magento/module-bundle-requisition-list-graph-ql": "1.3.3", + "magento/module-bundle-shared-catalog": "100.3.4", + "magento/module-checkout-address-search-negotiable-quote": "100.3.4", + "magento/module-checkout-agreements-negotiable-quote": "100.3.4", + "magento/module-checkout-agreements-purchase-order": "1.3.3", + "magento/module-company": "101.1.4", + "magento/module-company-credit": "100.3.4", + "magento/module-company-credit-graph-ql": "1.3.3", + "magento/module-company-graph-ql": "1.3.3", + "magento/module-company-payment": "100.3.4", + "magento/module-company-shipping": "1.3.4", + "magento/module-configurable-negotiable-quote": "100.3.4", + "magento/module-configurable-requisition-list": "100.3.4", + "magento/module-configurable-requisition-list-graph-ql": "1.3.3", + "magento/module-configurable-shared-catalog": "100.3.4", + "magento/module-downloadable-requisition-list-graph-ql": "1.3.3", + "magento/module-gift-card-negotiable-quote": "100.3.4", + "magento/module-gift-card-requisition-list": "100.3.4", + "magento/module-gift-card-requisition-list-graph-ql": "1.3.3", + "magento/module-gift-card-shared-catalog": "100.3.4", + "magento/module-grouped-requisition-list": "100.3.4", + "magento/module-grouped-shared-catalog": "100.3.4", + "magento/module-negotiable-quote": "100.3.4", + "magento/module-negotiable-quote-async-order": "1.3.1", + "magento/module-negotiable-quote-graph-ql": "1.3.2", + "magento/module-negotiable-quote-shared-catalog": "100.3.4", + "magento/module-negotiable-quote-weee": "100.3.4", + "magento/module-order-history-search": "100.3.4", + "magento/module-paypal-negotiable-quote": "1.3.2", + "magento/module-paypal-purchase-order": "1.3.3", + "magento/module-purchase-order": "100.3.4", + "magento/module-purchase-order-rule": "100.3.4", + "magento/module-quick-order": "100.3.4", + "magento/module-requisition-list": "100.3.4", + "magento/module-requisition-list-graph-ql": "1.3.3", + "magento/module-shared-catalog": "100.3.4", + "magento/module-shared-catalog-graph-ql": "1.3.3", + "magento/security-package-b2b": "1.0.2", + "php": "~7.4.0||~8.1.0" }, "type": "metapackage", "license": [ @@ -4486,15 +4465,15 @@ }, { "name": "magento/framework", - "version": "103.0.4", + "version": "103.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/framework/magento-framework-103.0.4.0.zip", - "shasum": "9e691d759dcce81d0b1de726c5d33aca1a540b61" + "url": "https://repo.magento.com/archives/magento/framework/magento-framework-103.0.5.0.zip", + "shasum": "9c21fa7f70003323fdfefc9986a57afdebce9d73" }, "require": { "colinmollenhour/php-redis-session-abstract": "~1.4.5", - "composer/composer": "^1.9 || ^2.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", "ext-bcmath": "*", "ext-curl": "*", "ext-dom": "*", @@ -4506,25 +4485,26 @@ "ext-simplexml": "*", "ext-sodium": "*", "ext-xsl": "*", - "guzzlehttp/guzzle": "^7.3.0", + "ezyang/htmlpurifier": "^4.14", + "guzzlehttp/guzzle": "^7.4.2", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-escaper": "~2.9.0", + "laminas/laminas-escaper": "~2.10.0", "laminas/laminas-http": "^2.15.0", - "laminas/laminas-mail": "^2.15.1", + "laminas/laminas-mail": "^2.16.0", "laminas/laminas-mime": "^2.9.1", - "laminas/laminas-stdlib": "^3.6.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", + "laminas/laminas-validator": "^2.17.0", "lib-libxml": "*", "magento/composer-dependency-version-audit-plugin": "~0.1", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", + "monolog/monolog": "^2.7", "php": "~7.4.0||~8.1.0", "ramsey/uuid": "~4.2.0", "symfony/console": "~4.4.0", "symfony/process": "~4.4.0", "tedivm/jshrink": "~1.4.0", - "webonyx/graphql-php": "~14.11.3", + "webonyx/graphql-php": "~14.11.6", "wikimedia/less.php": "^3.0.0" }, "suggest": { @@ -4547,16 +4527,16 @@ }, { "name": "magento/framework-amqp", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/framework-amqp/magento-framework-amqp-100.4.2.0.zip", - "shasum": "ab518ba9e493be5c24a75778cad7fadbeb987edf" + "url": "https://repo.magento.com/archives/magento/framework-amqp/magento-framework-amqp-100.4.3.0.zip", + "shasum": "b55a39259d1d9cd706c4711ededcd745e9603f7d" }, "require": { "magento/framework": "103.0.*", "php": "~7.4.0||~8.1.0", - "php-amqplib/php-amqplib": "~3.1.0" + "php-amqplib/php-amqplib": "~3.2.0" }, "type": "magento2-library", "autoload": { @@ -4602,11 +4582,11 @@ }, { "name": "magento/framework-foreign-key", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/framework-foreign-key/magento-framework-foreign-key-100.4.3.0.zip", - "shasum": "58f2da45390ba2d6dcf9c030eb9e2fa98b8d3de1" + "url": "https://repo.magento.com/archives/magento/framework-foreign-key/magento-framework-foreign-key-100.4.4.0.zip", + "shasum": "2a40b2e82e37a9df84e549c8ee1b015ea431cf68" }, "require": { "magento/framework": "103.0.*", @@ -4629,11 +4609,11 @@ }, { "name": "magento/framework-message-queue", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/framework-message-queue/magento-framework-message-queue-100.4.4.0.zip", - "shasum": "38ba5f46176d13cea8e3a52b6c293fb6c6e3c93d" + "url": "https://repo.magento.com/archives/magento/framework-message-queue/magento-framework-message-queue-100.4.5.0.zip", + "shasum": "6b31ce9cba29824f5c2f2d29841ecc889c8c2a2d" }, "require": { "magento/framework": "103.0.*", @@ -4712,86 +4692,86 @@ }, { "name": "magento/inventory-metapackage", - "version": "1.2.4", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/inventory-metapackage/magento-inventory-metapackage-1.2.4.0.zip", - "shasum": "43cac12a1f37677c29ad8ea375081bbdd92df39b" - }, - "require": { - "magento/inventory-composer-installer": "1.2.0", - "magento/module-inventory": "1.2.*", - "magento/module-inventory-admin-ui": "1.2.*", - "magento/module-inventory-advanced-checkout": "1.2.*", - "magento/module-inventory-api": "1.2.*", - "magento/module-inventory-bundle-import-export": "1.1.*", - "magento/module-inventory-bundle-product": "1.2.*", - "magento/module-inventory-bundle-product-admin-ui": "1.2.*", - "magento/module-inventory-bundle-product-indexer": "1.1.*", - "magento/module-inventory-cache": "1.2.*", - "magento/module-inventory-catalog": "1.2.*", - "magento/module-inventory-catalog-admin-ui": "1.2.*", - "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-catalog-frontend-ui": "1.0.*", - "magento/module-inventory-catalog-search": "1.2.*", - "magento/module-inventory-catalog-search-bundle-product": "1.0.*", - "magento/module-inventory-catalog-search-configurable-product": "1.0.*", - "magento/module-inventory-configurable-product": "1.2.*", - "magento/module-inventory-configurable-product-admin-ui": "1.2.*", - "magento/module-inventory-configurable-product-frontend-ui": "1.0.*", - "magento/module-inventory-configurable-product-indexer": "1.2.*", - "magento/module-inventory-configuration": "1.2.*", - "magento/module-inventory-configuration-api": "1.2.*", - "magento/module-inventory-distance-based-source-selection": "1.2.*", - "magento/module-inventory-distance-based-source-selection-admin-ui": "1.2.*", - "magento/module-inventory-distance-based-source-selection-api": "1.2.*", - "magento/module-inventory-elasticsearch": "1.2.*", - "magento/module-inventory-export-stock": "1.2.*", - "magento/module-inventory-export-stock-api": "1.2.*", - "magento/module-inventory-graph-ql": "1.2.*", - "magento/module-inventory-grouped-product": "1.2.*", - "magento/module-inventory-grouped-product-admin-ui": "1.2.*", - "magento/module-inventory-grouped-product-indexer": "1.2.*", - "magento/module-inventory-import-export": "1.2.*", - "magento/module-inventory-in-store-pickup": "1.1.*", - "magento/module-inventory-in-store-pickup-admin-ui": "1.1.*", - "magento/module-inventory-in-store-pickup-api": "1.1.*", - "magento/module-inventory-in-store-pickup-frontend": "1.1.*", - "magento/module-inventory-in-store-pickup-graph-ql": "1.1.*", - "magento/module-inventory-in-store-pickup-multishipping": "1.1.*", - "magento/module-inventory-in-store-pickup-quote": "1.1.*", - "magento/module-inventory-in-store-pickup-quote-graph-ql": "1.1.*", - "magento/module-inventory-in-store-pickup-sales": "1.1.*", - "magento/module-inventory-in-store-pickup-sales-admin-ui": "1.1.*", - "magento/module-inventory-in-store-pickup-sales-api": "1.1.*", - "magento/module-inventory-in-store-pickup-shipping": "1.1.*", - "magento/module-inventory-in-store-pickup-shipping-admin-ui": "1.1.*", - "magento/module-inventory-in-store-pickup-shipping-api": "1.1.*", - "magento/module-inventory-in-store-pickup-webapi-extension": "1.1.*", - "magento/module-inventory-indexer": "2.1.*", - "magento/module-inventory-low-quantity-notification": "1.2.*", - "magento/module-inventory-low-quantity-notification-admin-ui": "1.2.*", - "magento/module-inventory-low-quantity-notification-api": "1.2.*", - "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", - "magento/module-inventory-product-alert": "1.2.*", - "magento/module-inventory-quote-graph-ql": "1.0.*", - "magento/module-inventory-requisition-list": "1.2.*", - "magento/module-inventory-reservation-cli": "1.2.*", - "magento/module-inventory-reservations": "1.2.*", - "magento/module-inventory-reservations-api": "1.2.*", - "magento/module-inventory-sales": "1.2.*", - "magento/module-inventory-sales-admin-ui": "1.2.*", - "magento/module-inventory-sales-api": "1.2.*", - "magento/module-inventory-sales-frontend-ui": "1.2.*", - "magento/module-inventory-setup-fixture-generator": "1.2.*", - "magento/module-inventory-shipping": "1.2.*", - "magento/module-inventory-shipping-admin-ui": "1.2.*", - "magento/module-inventory-source-deduction-api": "1.2.*", - "magento/module-inventory-source-selection": "1.2.*", - "magento/module-inventory-source-selection-api": "1.4.*", - "magento/module-inventory-swatches-frontend-ui": "1.0.*", - "magento/module-inventory-visual-merchandiser": "1.1.*", - "magento/module-inventory-wishlist": "1.0.*" + "version": "1.2.5", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/inventory-metapackage/magento-inventory-metapackage-1.2.5.0.zip", + "shasum": "43fcf8211b3f173561b33672d0f0b3522baa350b" + }, + "require": { + "magento/inventory-composer-installer": "^1.2.0", + "magento/module-inventory": "1.2.3", + "magento/module-inventory-admin-ui": "1.2.3", + "magento/module-inventory-advanced-checkout": "1.2.2", + "magento/module-inventory-api": "1.2.3", + "magento/module-inventory-bundle-import-export": "1.1.1", + "magento/module-inventory-bundle-product": "1.2.2", + "magento/module-inventory-bundle-product-admin-ui": "1.2.2", + "magento/module-inventory-bundle-product-indexer": "1.1.2", + "magento/module-inventory-cache": "1.2.3", + "magento/module-inventory-catalog": "1.3.0", + "magento/module-inventory-catalog-admin-ui": "1.2.3", + "magento/module-inventory-catalog-api": "1.3.3", + "magento/module-inventory-catalog-frontend-ui": "1.0.2", + "magento/module-inventory-catalog-search": "1.2.3", + "magento/module-inventory-catalog-search-bundle-product": "1.0.1", + "magento/module-inventory-catalog-search-configurable-product": "1.0.1", + "magento/module-inventory-configurable-product": "1.2.3", + "magento/module-inventory-configurable-product-admin-ui": "1.2.3", + "magento/module-inventory-configurable-product-frontend-ui": "1.0.3", + "magento/module-inventory-configurable-product-indexer": "1.2.3", + "magento/module-inventory-configuration": "1.2.2", + "magento/module-inventory-configuration-api": "1.2.1", + "magento/module-inventory-distance-based-source-selection": "1.2.2", + "magento/module-inventory-distance-based-source-selection-admin-ui": "1.2.1", + "magento/module-inventory-distance-based-source-selection-api": "1.2.1", + "magento/module-inventory-elasticsearch": "1.2.2", + "magento/module-inventory-export-stock": "1.2.2", + "magento/module-inventory-export-stock-api": "1.2.1", + "magento/module-inventory-graph-ql": "1.2.2", + "magento/module-inventory-grouped-product": "1.3.0", + "magento/module-inventory-grouped-product-admin-ui": "1.2.2", + "magento/module-inventory-grouped-product-indexer": "1.2.3", + "magento/module-inventory-import-export": "1.2.3", + "magento/module-inventory-in-store-pickup": "1.1.1", + "magento/module-inventory-in-store-pickup-admin-ui": "1.1.2", + "magento/module-inventory-in-store-pickup-api": "1.1.1", + "magento/module-inventory-in-store-pickup-frontend": "1.1.3", + "magento/module-inventory-in-store-pickup-graph-ql": "1.1.2", + "magento/module-inventory-in-store-pickup-multishipping": "1.1.1", + "magento/module-inventory-in-store-pickup-quote": "1.1.1", + "magento/module-inventory-in-store-pickup-quote-graph-ql": "1.1.1", + "magento/module-inventory-in-store-pickup-sales": "1.1.1", + "magento/module-inventory-in-store-pickup-sales-admin-ui": "1.1.3", + "magento/module-inventory-in-store-pickup-sales-api": "1.1.1", + "magento/module-inventory-in-store-pickup-shipping": "1.1.2", + "magento/module-inventory-in-store-pickup-shipping-admin-ui": "1.1.1", + "magento/module-inventory-in-store-pickup-shipping-api": "1.1.1", + "magento/module-inventory-in-store-pickup-webapi-extension": "1.1.1", + "magento/module-inventory-indexer": "2.2.0", + "magento/module-inventory-low-quantity-notification": "1.2.2", + "magento/module-inventory-low-quantity-notification-admin-ui": "1.2.2", + "magento/module-inventory-low-quantity-notification-api": "1.2.2", + "magento/module-inventory-multi-dimensional-indexer-api": "1.2.1", + "magento/module-inventory-product-alert": "1.2.2", + "magento/module-inventory-quote-graph-ql": "1.0.2", + "magento/module-inventory-requisition-list": "1.2.3", + "magento/module-inventory-reservation-cli": "1.2.2", + "magento/module-inventory-reservations": "1.2.1", + "magento/module-inventory-reservations-api": "1.2.1", + "magento/module-inventory-sales": "1.3.0", + "magento/module-inventory-sales-admin-ui": "1.2.3", + "magento/module-inventory-sales-api": "1.2.2", + "magento/module-inventory-sales-frontend-ui": "1.2.2", + "magento/module-inventory-setup-fixture-generator": "1.2.1", + "magento/module-inventory-shipping": "1.2.2", + "magento/module-inventory-shipping-admin-ui": "1.2.3", + "magento/module-inventory-source-deduction-api": "1.2.2", + "magento/module-inventory-source-selection": "1.2.1", + "magento/module-inventory-source-selection-api": "1.4.2", + "magento/module-inventory-swatches-frontend-ui": "1.0.1", + "magento/module-inventory-visual-merchandiser": "1.1.3", + "magento/module-inventory-wishlist": "1.0.2" }, "type": "metapackage", "description": "Metapackage with Magento Inventory modules for simple installation" @@ -5039,11 +5019,11 @@ }, { "name": "magento/magento2-b2b-base", - "version": "1.3.3", + "version": "1.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/magento2-b2b-base/magento-magento2-b2b-base-1.3.3.0.zip", - "shasum": "706e2bb859972c4f4adf7e6da27cf637af2b1ee4" + "url": "https://repo.magento.com/archives/magento/magento2-b2b-base/magento-magento2-b2b-base-1.3.4.0.zip", + "shasum": "6d939978bd67e3e1882ecf8d6c84029e195b65c8" }, "require": { "magento/magento-composer-installer": "*" @@ -5106,40 +5086,35 @@ }, { "name": "magento/magento2-base", - "version": "2.4.4", + "version": "2.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/magento2-base/magento-magento2-base-2.4.4.0.zip", - "shasum": "7440b3afbea45bad8480e7b4385050376a8c893a" + "url": "https://repo.magento.com/archives/magento/magento2-base/magento-magento2-base-2.4.5.0.zip", + "shasum": "e13eb657292ecb4851e6cead6012c27353fd4d85" }, "require": { - "composer/composer": "^1.9 || ^2.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", "ext-intl": "*", "ext-mbstring": "*", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-di": "^3.3.0", - "laminas/laminas-eventmanager": "^3.4.0", + "laminas/laminas-di": "^3.7.0", + "laminas/laminas-eventmanager": "^3.5.0", "laminas/laminas-http": "^2.15.0", - "laminas/laminas-json": "^3.3.0", "laminas/laminas-modulemanager": "^2.11.0", - "laminas/laminas-mvc": "^3.3.0", - "laminas/laminas-server": "^2.11.0", - "laminas/laminas-servicemanager": "^3.10.0", + "laminas/laminas-mvc": "^3.3.3", + "laminas/laminas-servicemanager": "^3.11.0", "laminas/laminas-soap": "^2.10.0", - "laminas/laminas-stdlib": "^3.6.0", - "laminas/laminas-text": "^2.9.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", - "laminas/laminas-view": "~2.14.1", + "laminas/laminas-validator": "^2.17.0", "magento/composer": "~1.8.0", "magento/magento-composer-installer": "*", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", + "monolog/monolog": "^2.7", "pelago/emogrifier": "^6.0.0", "php": "~7.4.0||~8.1.0", - "phpseclib/phpseclib": "~3.0.9", + "phpseclib/phpseclib": "~3.0.13", "symfony/console": "~4.4.0", - "symfony/event-dispatcher": "~4.4.0", "tedivm/jshrink": "~1.4.0", "tubalmartin/cssmin": "4.1.1" }, @@ -5483,6 +5458,14 @@ "lib/web/jquery.js", "lib/web/jquery.js" ], + [ + "lib/web/js-cookie", + "lib/web/js-cookie" + ], + [ + "lib/web/js-storage", + "lib/web/js-storage" + ], [ "lib/web/knockoutjs", "lib/web/knockoutjs" @@ -5547,6 +5530,10 @@ "lib/web/varien", "lib/web/varien" ], + [ + "lib/web/vimeo", + "lib/web/vimeo" + ], [ "nginx.conf.sample", "nginx.conf.sample" @@ -5653,40 +5640,37 @@ }, { "name": "magento/magento2-ee-base", - "version": "2.4.4", + "version": "2.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/magento2-ee-base/magento-magento2-ee-base-2.4.4.0.zip", - "shasum": "e4b61f4c014b2533696b6b5acea1186cdf62c559" + "url": "https://repo.magento.com/archives/magento/magento2-ee-base/magento-magento2-ee-base-2.4.5.0.zip", + "shasum": "6dbcfc6c57b052ee01a66d9cde9f03f6d2937e1e" }, "require": { - "composer/composer": "^1.9 || ^2.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", "ext-intl": "*", "ext-mbstring": "*", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-di": "^3.3.0", - "laminas/laminas-eventmanager": "^3.4.0", + "laminas/laminas-di": "^3.7.0", + "laminas/laminas-eventmanager": "^3.5.0", "laminas/laminas-http": "^2.15.0", "laminas/laminas-json": "^3.3.0", "laminas/laminas-modulemanager": "^2.11.0", - "laminas/laminas-mvc": "^3.3.0", - "laminas/laminas-server": "^2.11.0", - "laminas/laminas-servicemanager": "^3.10.0", + "laminas/laminas-mvc": "^3.3.3", + "laminas/laminas-server": "^2.11.1", + "laminas/laminas-servicemanager": "^3.11.0", "laminas/laminas-soap": "^2.10.0", - "laminas/laminas-stdlib": "^3.6.0", - "laminas/laminas-text": "^2.9.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", - "laminas/laminas-view": "~2.14.1", + "laminas/laminas-validator": "^2.17.0", "magento/composer": "~1.8.0", "magento/magento-composer-installer": "*", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", + "monolog/monolog": "^2.7", "pelago/emogrifier": "^6.0.0", "php": "~7.4.0||~8.1.0", - "phpseclib/phpseclib": "~3.0.9", + "phpseclib/phpseclib": "~3.0.13", "symfony/console": "~4.4.0", - "symfony/event-dispatcher": "~4.4.0", "tedivm/jshrink": "~1.4.0", "tubalmartin/cssmin": "4.1.1" }, @@ -5714,6 +5698,10 @@ "SECURITY.md", "SECURITY.md" ], + [ + "app/design/adminhtml/Magento", + "app/design/adminhtml/Magento" + ], [ "dev/tests/acceptance", "dev/tests/acceptance" @@ -5742,6 +5730,10 @@ "dev/tests/static/testsuite/Magento", "dev/tests/static/testsuite/Magento" ], + [ + "dev/tests/unit/Magento_Theme", + "dev/tests/unit/Magento_Theme" + ], [ "dev/tools", "dev/tools" @@ -5757,9 +5749,51 @@ ] }, "license": [ - "proprietary" + "proprietary" + ], + "description": "Magento 2 Base (Enterprise Edition)" + }, + { + "name": "magento/module-admin-adobe-ims", + "version": "100.4.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-admin-adobe-ims/magento-module-admin-adobe-ims-100.4.0.0.zip", + "shasum": "4156ce687b5a382100832eabdc3e16833ee448df" + }, + "require": { + "magento/framework": "103.0.*", + "magento/module-adobe-ims": "2.1.*", + "magento/module-adobe-ims-api": "2.1.*", + "magento/module-authorization": "100.4.*", + "magento/module-backend": "102.0.*", + "magento/module-captcha": "100.4.*", + "magento/module-config": "101.2.*", + "magento/module-email": "101.1.*", + "magento/module-integration": "100.4.*", + "magento/module-jwt-user-token": "100.4.*", + "magento/module-security": "100.4.*", + "magento/module-store": "101.1.*", + "magento/module-user": "101.2.*", + "php": "~7.4.0||~8.1.0" + }, + "suggest": { + "magento/module-theme": "101.1.*" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\AdminAdobeIms\\": "" + } + }, + "license": [ + "OSL-3.0", + "AFL-3.0" ], - "description": "Magento 2 Base (Enterprise Edition)" + "description": "N/A" }, { "name": "magento/module-admin-analytics", @@ -5795,11 +5829,11 @@ }, { "name": "magento/module-admin-gws", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-admin-gws/magento-module-admin-gws-100.4.4.0.zip", - "shasum": "fb4bac1bb4684b5e4d82996b09fab1a3e7f61888" + "url": "https://repo.magento.com/archives/magento/module-admin-gws/magento-module-admin-gws-100.4.5.0.zip", + "shasum": "a5ace66d19c4cca7902241e505cec1b533d94d5e" }, "require": { "magento/framework": "103.0.*", @@ -5906,11 +5940,11 @@ }, { "name": "magento/module-admin-notification", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-admin-notification/magento-module-admin-notification-100.4.3.0.zip", - "shasum": "5d988263ee6c4773be68e75c593e9377d83ce289" + "url": "https://repo.magento.com/archives/magento/module-admin-notification/magento-module-admin-notification-100.4.4.0.zip", + "shasum": "4b69f736921da0d98e7110160e34eeaa1c176867" }, "require": { "lib-libxml": "*", @@ -5939,19 +5973,19 @@ }, { "name": "magento/module-adobe-ims", - "version": "2.1.3", + "version": "2.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-ims/magento-module-adobe-ims-2.1.3.0.zip", - "shasum": "dce2f760e97eb2279bbc16c473aa2a8d9fe3fd52" + "url": "https://repo.magento.com/archives/magento/module-adobe-ims/magento-module-adobe-ims-2.1.4.0.zip", + "shasum": "b197a11dcb55ceff89040bf2effb5c86f5fe58fb" }, "require": { - "magento/framework": "*", + "magento/framework": "103.0.*", "magento/module-adobe-ims-api": "2.1.*", - "magento/module-authorization": "*", - "magento/module-backend": "*", - "magento/module-config": "*", - "magento/module-user": "*", + "magento/module-authorization": "100.4.*", + "magento/module-backend": "102.0.*", + "magento/module-config": "101.2.*", + "magento/module-user": "101.2.*", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -5971,14 +6005,14 @@ }, { "name": "magento/module-adobe-ims-api", - "version": "2.1.1", + "version": "2.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-ims-api/magento-module-adobe-ims-api-2.1.1.0.zip", - "shasum": "0946ea5f6bd9fb3b8b156f86f2de1e3fe1002e13" + "url": "https://repo.magento.com/archives/magento/module-adobe-ims-api/magento-module-adobe-ims-api-2.1.2.0.zip", + "shasum": "1a007affad473b7a2a9ea26a4eb4e5c78976a652" }, "require": { - "magento/framework": "*", + "magento/framework": "103.0.*", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -5998,15 +6032,16 @@ }, { "name": "magento/module-adobe-stock-admin-ui", - "version": "1.3.1", + "version": "1.3.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-admin-ui/magento-module-adobe-stock-admin-ui-1.3.1.0.zip", - "shasum": "540fb058a7ed45b09aa1bc5f7ee0097d01566372" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-admin-ui/magento-module-adobe-stock-admin-ui-1.3.2.0.zip", + "shasum": "ff5cbd91546731bd2b853297b43f1db5b21232f2" }, "require": { "magento/framework": "*", - "magento/module-adobe-ims-api": "2.1.*", + "magento/module-admin-adobe-ims": "*", + "magento/module-adobe-ims-api": "*", "magento/module-adobe-stock-client-api": "2.1.*", "magento/module-backend": "*", "magento/module-config": "*", @@ -6121,11 +6156,11 @@ }, { "name": "magento/module-adobe-stock-client-api", - "version": "2.1.1", + "version": "2.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-client-api/magento-module-adobe-stock-client-api-2.1.1.0.zip", - "shasum": "bce37cae6d4a5d0ad1260bb389a289240c160741" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-client-api/magento-module-adobe-stock-client-api-2.1.2.0.zip", + "shasum": "6f8432b49d8f5540209363f382cb95237c4896c3" }, "require": { "magento/framework": "*", @@ -6148,11 +6183,11 @@ }, { "name": "magento/module-adobe-stock-image", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image/magento-module-adobe-stock-image-1.3.2.0.zip", - "shasum": "a116421a7b9dbca984eece349ff51332bd74924a" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image/magento-module-adobe-stock-image-1.3.3.0.zip", + "shasum": "037ce2d3b4a06459a39f9fc1691a5f734fafd1d1" }, "require": { "magento/framework": "*", @@ -6183,16 +6218,16 @@ }, { "name": "magento/module-adobe-stock-image-admin-ui", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image-admin-ui/magento-module-adobe-stock-image-admin-ui-1.3.2.0.zip", - "shasum": "016c4e5f9ba004d444221db6aad48b330448ad93" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image-admin-ui/magento-module-adobe-stock-image-admin-ui-1.3.3.0.zip", + "shasum": "a328204741bde5fd1d954a1db8cfac1f24d8e0d1" }, "require": { "magento/framework": "*", - "magento/module-adobe-ims": "2.1.*", - "magento/module-adobe-ims-api": "2.1.*", + "magento/module-adobe-ims": "*", + "magento/module-adobe-ims-api": "*", "magento/module-adobe-stock-asset-api": "2.0.*", "magento/module-adobe-stock-client-api": "2.1.*", "magento/module-adobe-stock-image-api": "1.3.*", @@ -6279,11 +6314,11 @@ }, { "name": "magento/module-advanced-checkout", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-advanced-checkout/magento-module-advanced-checkout-100.4.4.0.zip", - "shasum": "a45d41885ae85b2d3c69e4fbf3ff9b09bcc2f26b" + "url": "https://repo.magento.com/archives/magento/module-advanced-checkout/magento-module-advanced-checkout-100.4.5.0.zip", + "shasum": "310f8106ef5a187fb128f57b4057ae6c5ca6ad47" }, "require": { "magento/framework": "103.0.*", @@ -6324,11 +6359,11 @@ }, { "name": "magento/module-advanced-pricing-import-export", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-advanced-pricing-import-export/magento-module-advanced-pricing-import-export-100.4.4.0.zip", - "shasum": "dc456cd47d71b897a5f0ed77349c39769268a08e" + "url": "https://repo.magento.com/archives/magento/module-advanced-pricing-import-export/magento-module-advanced-pricing-import-export-100.4.5.0.zip", + "shasum": "360f3aa063ca1aba96b8e6f50d418042b40cd65d" }, "require": { "magento/framework": "103.0.*", @@ -6359,11 +6394,11 @@ }, { "name": "magento/module-advanced-rule", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-advanced-rule/magento-module-advanced-rule-100.4.1.0.zip", - "shasum": "3ea6fcb83d7ccf1804aa674cd5e15ccff7b50c6e" + "url": "https://repo.magento.com/archives/magento/module-advanced-rule/magento-module-advanced-rule-100.4.2.0.zip", + "shasum": "02ce0567b9b6a5484c7561435fd697afbc760b21" }, "require": { "magento/framework": "103.0.*", @@ -6421,11 +6456,11 @@ }, { "name": "magento/module-advanced-search", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-advanced-search/magento-module-advanced-search-100.4.2.0.zip", - "shasum": "09972db7e8b51e2100e9875d30ded250c554a5ad" + "url": "https://repo.magento.com/archives/magento/module-advanced-search/magento-module-advanced-search-100.4.3.0.zip", + "shasum": "724b211b50a10f316f0b400e0e9d65ea7114a808" }, "require": { "magento/framework": "103.0.*", @@ -6482,46 +6517,13 @@ ], "description": "N/A" }, - { - "name": "magento/module-amqp-store", - "version": "100.4.2", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-amqp-store/magento-module-amqp-store-100.4.2.0.zip", - "shasum": "f9fbdb0168022ed576753c2ad15808ed2de11239" - }, - "require": { - "magento/framework": "103.0.*", - "magento/framework-amqp": "100.4.*", - "magento/module-store": "101.1.*", - "php": "~7.4.0||~8.1.0" - }, - "suggest": { - "magento/framework-message-queue": "100.4.*", - "magento/module-asynchronous-operations": "100.4.*" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\AmqpStore\\": "" - } - }, - "license": [ - "OSL-3.0", - "AFL-3.0" - ], - "description": "N/A" - }, { "name": "magento/module-analytics", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-analytics/magento-module-analytics-100.4.4.0.zip", - "shasum": "8463c99cf6ca687993a00020fdb06a5d98c6bc1d" + "url": "https://repo.magento.com/archives/magento/module-analytics/magento-module-analytics-100.4.5.0.zip", + "shasum": "55494bfc5963099ac0d2098f2e0995044baa9084" }, "require": { "magento/framework": "103.0.*", @@ -6548,11 +6550,11 @@ }, { "name": "magento/module-async-order", - "version": "100.4.0", + "version": "100.4.1", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-async-order/magento-module-async-order-100.4.0.0.zip", - "shasum": "380e8dbe2f5a12df33154fc136ccc04e4981074b" + "url": "https://repo.magento.com/archives/magento/module-async-order/magento-module-async-order-100.4.1.0.zip", + "shasum": "33dc9578c01023ab53bd64a1a9bab65915bc0eee" }, "require": { "magento/framework": "103.0.*", @@ -6620,11 +6622,11 @@ }, { "name": "magento/module-asynchronous-operations", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-asynchronous-operations/magento-module-asynchronous-operations-100.4.4.0.zip", - "shasum": "3b7cebfc7b227ba8872ff3dd768ee5781c26d844" + "url": "https://repo.magento.com/archives/magento/module-asynchronous-operations/magento-module-asynchronous-operations-100.4.5.0.zip", + "shasum": "0da25cb7acdf1862079994164bf445d8ac7f6af5" }, "require": { "magento/framework": "103.0.*", @@ -6656,11 +6658,11 @@ }, { "name": "magento/module-authorization", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-authorization/magento-module-authorization-100.4.4.0.zip", - "shasum": "7f94d3c40f8d836c84bd6547889047e00692ca09" + "url": "https://repo.magento.com/archives/magento/module-authorization/magento-module-authorization-100.4.5.0.zip", + "shasum": "06afa70d3b4b0cc033421bbac7c5aa3d24bebdbb" }, "require": { "magento/framework": "103.0.*", @@ -6684,15 +6686,13 @@ }, { "name": "magento/module-aws-s3", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-aws-s3/magento-module-aws-s3-100.4.2.0.zip", - "shasum": "3abe1e90d75ad2db23906325dbbfbc6913c58e00" + "url": "https://repo.magento.com/archives/magento/module-aws-s3/magento-module-aws-s3-100.4.3.0.zip", + "shasum": "235195c1e6193498bbed2d3fa1951a5aaf293d6b" }, "require": { - "league/flysystem": "^2.0", - "league/flysystem-aws-s3-v3": "^2.0", "magento/framework": "103.0.*", "magento/module-remote-storage": "100.4.*", "php": "~7.4.0||~8.1.0" @@ -6744,11 +6744,11 @@ }, { "name": "magento/module-aws-s3-gift-card-import-export", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-aws-s3-gift-card-import-export/magento-module-aws-s3-gift-card-import-export-100.4.1.0.zip", - "shasum": "866807716ea5012f7cbff61176d201b2ce25fb3b" + "url": "https://repo.magento.com/archives/magento/module-aws-s3-gift-card-import-export/magento-module-aws-s3-gift-card-import-export-100.4.2.0.zip", + "shasum": "1742de12a1c9f50a19122024ac03fb633e82db78" }, "require": { "magento/framework": "103.0.*", @@ -6805,11 +6805,11 @@ }, { "name": "magento/module-aws-s3-scheduled-import-export", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-aws-s3-scheduled-import-export/magento-module-aws-s3-scheduled-import-export-100.4.1.0.zip", - "shasum": "b90222a8d78c0793bb1b03f42d452377a3f8caed" + "url": "https://repo.magento.com/archives/magento/module-aws-s3-scheduled-import-export/magento-module-aws-s3-scheduled-import-export-100.4.2.0.zip", + "shasum": "d2d5a1c0354cc2abd8aff7619f5b0e20c720ae26" }, "require": { "magento/framework": "103.0.*", @@ -6836,14 +6836,14 @@ }, { "name": "magento/module-b2b", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-b2b/magento-module-b2b-100.3.3.0.zip", - "shasum": "92a2de5f2801f5fa7c8436da51366717d356efa2" + "url": "https://repo.magento.com/archives/magento/module-b2b/magento-module-b2b-100.3.4.0.zip", + "shasum": "1fe170dd27bae85bd027992380922d4dcdbee138" }, "require": { - "magento/framework": "103.0.4", + "magento/framework": "103.0.5", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -6862,11 +6862,11 @@ }, { "name": "magento/module-backend", - "version": "102.0.4", + "version": "102.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-backend/magento-module-backend-102.0.4.0.zip", - "shasum": "4f75d59880b3a8af1c8b0299e47f322e4b38ebba" + "url": "https://repo.magento.com/archives/magento/module-backend/magento-module-backend-102.0.5.0.zip", + "shasum": "2a4f15e0c559c680151184e75d318c077c78d306" }, "require": { "magento/framework": "103.0.*", @@ -6910,11 +6910,11 @@ }, { "name": "magento/module-backup", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-backup/magento-module-backup-100.4.4.0.zip", - "shasum": "2ed47abed34b081913c248bc52ba6dafc151f809" + "url": "https://repo.magento.com/archives/magento/module-backup/magento-module-backup-100.4.5.0.zip", + "shasum": "9d5b5a27ddb44e4f657973e8b1a9bac810cad8b3" }, "require": { "magento/framework": "103.0.*", @@ -6940,11 +6940,11 @@ }, { "name": "magento/module-banner", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-banner/magento-module-banner-101.2.4.0.zip", - "shasum": "c57c6cadf39139e7875953c48fa465db37899704" + "url": "https://repo.magento.com/archives/magento/module-banner/magento-module-banner-101.2.5.0.zip", + "shasum": "bd9f083e5c90d3c1e93a22ae8b4ff761af9e9b50" }, "require": { "magento/framework": "103.0.*", @@ -6978,11 +6978,11 @@ }, { "name": "magento/module-banner-customer-segment", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-banner-customer-segment/magento-module-banner-customer-segment-100.4.2.0.zip", - "shasum": "8d33e8d5f7e57e65eaf98a5947ea45f7d9ffc2d2" + "url": "https://repo.magento.com/archives/magento/module-banner-customer-segment/magento-module-banner-customer-segment-100.4.3.0.zip", + "shasum": "0192bc2f2dce6b852ea08bafc91bf0b7564be260" }, "require": { "magento/framework": "103.0.*", @@ -7038,11 +7038,11 @@ }, { "name": "magento/module-banner-page-builder", - "version": "2.2.2", + "version": "2.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-banner-page-builder/magento-module-banner-page-builder-2.2.2.0.zip", - "shasum": "2928123c2fa3912a4a22c1f6d9ce3597a47813b7" + "url": "https://repo.magento.com/archives/magento/module-banner-page-builder/magento-module-banner-page-builder-2.2.3.0.zip", + "shasum": "f7684c4135b83ab0809a3531e68163cf8ddeb8e4" }, "require": { "magento/framework": "*", @@ -7099,11 +7099,11 @@ }, { "name": "magento/module-bundle", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle/magento-module-bundle-101.0.4.0.zip", - "shasum": "1d6820458bd78a2042179df3787f178a2c665455" + "url": "https://repo.magento.com/archives/magento/module-bundle/magento-module-bundle-101.0.5.0.zip", + "shasum": "61ebcbfa47ff60a56c573229038c3f57fba09515" }, "require": { "magento/framework": "103.0.*", @@ -7147,11 +7147,11 @@ }, { "name": "magento/module-bundle-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-graph-ql/magento-module-bundle-graph-ql-100.4.4.0.zip", - "shasum": "87ab4371ee816aa6547040735d40760ae96716e9" + "url": "https://repo.magento.com/archives/magento/module-bundle-graph-ql/magento-module-bundle-graph-ql-100.4.5.0.zip", + "shasum": "86f8582bf18bfa03e4adc6c725db5dcc78ba394b" }, "require": { "magento/framework": "103.0.*", @@ -7183,11 +7183,11 @@ }, { "name": "magento/module-bundle-import-export", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-import-export/magento-module-bundle-import-export-100.4.3.0.zip", - "shasum": "eaadc576dccaa1729cc05153cd4405e93530ffd5" + "url": "https://repo.magento.com/archives/magento/module-bundle-import-export/magento-module-bundle-import-export-100.4.4.0.zip", + "shasum": "4b61f9344da386dc09f1eb375c95563c1e02b3c5" }, "require": { "magento/framework": "103.0.*", @@ -7246,17 +7246,17 @@ }, { "name": "magento/module-bundle-negotiable-quote", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-negotiable-quote/magento-module-bundle-negotiable-quote-100.3.3.0.zip", - "shasum": "923b9ec5209f1370e352cc8ccc8ab98a17b8dd77" + "url": "https://repo.magento.com/archives/magento/module-bundle-negotiable-quote/magento-module-bundle-negotiable-quote-100.3.4.0.zip", + "shasum": "59ef91d95704993898eadabee808a6ed4b2dcaa8" }, "require": { - "magento/framework": "103.0.4", - "magento/module-bundle": "101.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-negotiable-quote": "100.3.3", + "magento/framework": "103.0.5", + "magento/module-bundle": "101.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-negotiable-quote": "100.3.4", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -7275,21 +7275,21 @@ }, { "name": "magento/module-bundle-requisition-list", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-requisition-list/magento-module-bundle-requisition-list-100.3.3.0.zip", - "shasum": "7eb7e993fa0a4275790d34fc7587be188e7b8037" + "url": "https://repo.magento.com/archives/magento/module-bundle-requisition-list/magento-module-bundle-requisition-list-100.3.4.0.zip", + "shasum": "1da3ea517db6ed1dc5a1af05ede6d54a69d6ddcd" }, "require": { - "magento/framework": "103.0.4", + "magento/framework": "103.0.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-bundle": "101.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-catalog-inventory": "100.4.4", - "magento/module-requisition-list": "100.3.3" + "magento/module-bundle": "101.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-catalog-inventory": "100.4.5", + "magento/module-requisition-list": "100.3.4" }, "type": "magento2-module", "autoload": { @@ -7307,18 +7307,18 @@ }, { "name": "magento/module-bundle-requisition-list-graph-ql", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-requisition-list-graph-ql/magento-module-bundle-requisition-list-graph-ql-1.3.2.0.zip", - "shasum": "5eece2c4b7c5a38ca090cb1030bbd2b0b06d008a" + "url": "https://repo.magento.com/archives/magento/module-bundle-requisition-list-graph-ql/magento-module-bundle-requisition-list-graph-ql-1.3.3.0.zip", + "shasum": "7f551e9539d5e9f050e2798737b9bb15efe8695a" }, "require": { - "magento/framework": "103.0.4", - "magento/module-bundle": "101.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-requisition-list": "100.3.3", - "magento/module-requisition-list-graph-ql": "1.3.2", + "magento/framework": "103.0.5", + "magento/module-bundle": "101.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-requisition-list": "100.3.4", + "magento/module-requisition-list-graph-ql": "1.3.3", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -7337,20 +7337,20 @@ }, { "name": "magento/module-bundle-shared-catalog", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-shared-catalog/magento-module-bundle-shared-catalog-100.3.3.0.zip", - "shasum": "825c8b9a5bcffb55b78d6ae30183a46cba771edf" + "url": "https://repo.magento.com/archives/magento/module-bundle-shared-catalog/magento-module-bundle-shared-catalog-100.3.4.0.zip", + "shasum": "ad707f4e18b55e1f60aadf39a56cff73c39c1583" }, "require": { - "magento/framework": "103.0.4", - "magento/module-bundle": "101.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-customer": "103.0.4", - "magento/module-shared-catalog": "100.3.3", - "magento/module-store": "101.1.4", - "magento/module-ui": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-bundle": "101.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-customer": "103.0.5", + "magento/module-shared-catalog": "100.3.4", + "magento/module-store": "101.1.5", + "magento/module-ui": "101.2.5", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -7369,11 +7369,11 @@ }, { "name": "magento/module-bundle-staging", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-staging/magento-module-bundle-staging-100.4.4.0.zip", - "shasum": "7f6eb286f875f0214fe431543f380f402415774e" + "url": "https://repo.magento.com/archives/magento/module-bundle-staging/magento-module-bundle-staging-100.4.5.0.zip", + "shasum": "3a7ef8b714a42e2e64691fcb892d58092bad95e6" }, "require": { "magento/framework": "103.0.*", @@ -7401,11 +7401,11 @@ }, { "name": "magento/module-cache-invalidate", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cache-invalidate/magento-module-cache-invalidate-100.4.2.0.zip", - "shasum": "cc5b37b7da1e68775844e6285c79d1d1ca3a4d28" + "url": "https://repo.magento.com/archives/magento/module-cache-invalidate/magento-module-cache-invalidate-100.4.3.0.zip", + "shasum": "d90ac3d37cc4eadd8e258b57991ff18e82b837df" }, "require": { "magento/framework": "103.0.*", @@ -7429,16 +7429,15 @@ }, { "name": "magento/module-captcha", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-captcha/magento-module-captcha-100.4.4.0.zip", - "shasum": "290e51dafbf7038c28629ff5cd8e312176e984d1" + "url": "https://repo.magento.com/archives/magento/module-captcha/magento-module-captcha-100.4.5.0.zip", + "shasum": "034fd81fcb31abf823863c1a12b2646b890f8868" }, "require": { - "laminas/laminas-captcha": "^2.11.0", + "laminas/laminas-captcha": "^2.12", "laminas/laminas-db": "^2.13.4", - "laminas/laminas-session": "^2.12.0", "magento/framework": "103.0.*", "magento/module-authorization": "100.4.*", "magento/module-backend": "102.0.*", @@ -7465,11 +7464,11 @@ }, { "name": "magento/module-cardinal-commerce", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cardinal-commerce/magento-module-cardinal-commerce-100.4.2.0.zip", - "shasum": "dcd16d3c86e3ede1c0d61640f4e4c9b2fc5390d7" + "url": "https://repo.magento.com/archives/magento/module-cardinal-commerce/magento-module-cardinal-commerce-100.4.3.0.zip", + "shasum": "c459e12648b37b408c48065ff6a9ff010eb2557f" }, "require": { "magento/framework": "103.0.*", @@ -7495,11 +7494,11 @@ }, { "name": "magento/module-catalog", - "version": "104.0.4", + "version": "104.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog/magento-module-catalog-104.0.4.0.zip", - "shasum": "68b81961013b9b661aa44ddebe814cb714b543d1" + "url": "https://repo.magento.com/archives/magento/module-catalog/magento-module-catalog-104.0.5.0.zip", + "shasum": "b5d8ff541fa0f8b3abfcb2c0126e07c984c82672" }, "require": { "magento/framework": "103.0.*", @@ -7681,11 +7680,11 @@ }, { "name": "magento/module-catalog-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-graph-ql/magento-module-catalog-graph-ql-100.4.4.0.zip", - "shasum": "17be5a9565265cc04e2b4da2a0795fcfd9b539d4" + "url": "https://repo.magento.com/archives/magento/module-catalog-graph-ql/magento-module-catalog-graph-ql-100.4.5.0.zip", + "shasum": "4ab6bdbe56bdab75a8f3df746e54b0a55ce7a897" }, "require": { "magento/framework": "103.0.*", @@ -7722,11 +7721,11 @@ }, { "name": "magento/module-catalog-import-export", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-import-export/magento-module-catalog-import-export-101.1.4.0.zip", - "shasum": "7de989e9b9128c4048d95d3add36ea42996ded52" + "url": "https://repo.magento.com/archives/magento/module-catalog-import-export/magento-module-catalog-import-export-101.1.5.0.zip", + "shasum": "8630a9ad0887181f35ed10b153d9fa31a4523efb" }, "require": { "ext-ctype": "*", @@ -7792,11 +7791,11 @@ }, { "name": "magento/module-catalog-inventory", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-inventory/magento-module-catalog-inventory-100.4.4.0.zip", - "shasum": "f6fe6467ba5fb05307ef1071466375d1d045ed2a" + "url": "https://repo.magento.com/archives/magento/module-catalog-inventory/magento-module-catalog-inventory-100.4.5.0.zip", + "shasum": "919dbee1a07ec5f1f4728f23262534936ba05e9b" }, "require": { "magento/framework": "103.0.*", @@ -7826,11 +7825,11 @@ }, { "name": "magento/module-catalog-inventory-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-inventory-graph-ql/magento-module-catalog-inventory-graph-ql-100.4.1.0.zip", - "shasum": "54a70525aa0eb0746133cd289fa44d3a513b5700" + "url": "https://repo.magento.com/archives/magento/module-catalog-inventory-graph-ql/magento-module-catalog-inventory-graph-ql-100.4.2.0.zip", + "shasum": "330f1044214ef81be907e39939292cf4ed2c4464" }, "require": { "magento/framework": "103.0.*", @@ -7948,17 +7947,18 @@ }, { "name": "magento/module-catalog-permissions", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-permissions/magento-module-catalog-permissions-100.4.4.0.zip", - "shasum": "284a6fb0b9b5a658a0b3fd98e2608511b73840b8" + "url": "https://repo.magento.com/archives/magento/module-catalog-permissions/magento-module-catalog-permissions-100.4.5.0.zip", + "shasum": "31ebf7b8415ffb81f17cbf86561e6913673e753b" }, "require": { "magento/framework": "103.0.*", "magento/module-backend": "102.0.*", "magento/module-catalog": "104.0.*", "magento/module-customer": "103.0.*", + "magento/module-indexer": "100.4.*", "magento/module-quote": "101.2.*", "magento/module-store": "101.1.*", "magento/module-ui": "101.2.*", @@ -8021,11 +8021,11 @@ }, { "name": "magento/module-catalog-rule", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-rule/magento-module-catalog-rule-101.2.4.0.zip", - "shasum": "0b46c28faedfbb1ad98dfa7928f7207901592b5e" + "url": "https://repo.magento.com/archives/magento/module-catalog-rule/magento-module-catalog-rule-101.2.5.0.zip", + "shasum": "44e412c064b910bf20bb83b36e7152f925d4d98f" }, "require": { "magento/framework": "103.0.*", @@ -8059,11 +8059,11 @@ }, { "name": "magento/module-catalog-rule-configurable", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-rule-configurable/magento-module-catalog-rule-configurable-100.4.3.0.zip", - "shasum": "ba8ae1e197a7438ce74380b22be0610e2b5ba805" + "url": "https://repo.magento.com/archives/magento/module-catalog-rule-configurable/magento-module-catalog-rule-configurable-100.4.4.0.zip", + "shasum": "f12cfaa125b5d23cfdfee247cfdbaa27adff8663" }, "require": { "magento/framework": "103.0.*", @@ -8123,11 +8123,11 @@ }, { "name": "magento/module-catalog-rule-staging", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-rule-staging/magento-module-catalog-rule-staging-100.4.4.0.zip", - "shasum": "c072f5e29eca908ed1d32734b72e367a80d10811" + "url": "https://repo.magento.com/archives/magento/module-catalog-rule-staging/magento-module-catalog-rule-staging-100.4.5.0.zip", + "shasum": "78b2c80257352ec63964d1843bd7245ca7c3fd8d" }, "require": { "magento/framework": "103.0.*", @@ -8158,11 +8158,11 @@ }, { "name": "magento/module-catalog-search", - "version": "102.0.4", + "version": "102.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-search/magento-module-catalog-search-102.0.4.0.zip", - "shasum": "86f8676d034e5744772b99f143fb338158fc5135" + "url": "https://repo.magento.com/archives/magento/module-catalog-search/magento-module-catalog-search-102.0.5.0.zip", + "shasum": "3e3da7f22b6dade0d9c3259919e56d3bbb990e08" }, "require": { "magento/framework": "103.0.*", @@ -8199,11 +8199,11 @@ }, { "name": "magento/module-catalog-staging", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-staging/magento-module-catalog-staging-100.4.4.0.zip", - "shasum": "9b89d53226d580f9ea2ad7ceae871e3193b045f2" + "url": "https://repo.magento.com/archives/magento/module-catalog-staging/magento-module-catalog-staging-100.4.5.0.zip", + "shasum": "b85048edf09f66415f76e40dc3d9af6ead910990" }, "require": { "lib-libxml": "*", @@ -8212,6 +8212,7 @@ "magento/module-backend": "102.0.*", "magento/module-catalog": "104.0.*", "magento/module-catalog-event": "101.1.*", + "magento/module-catalog-inventory": "100.4.*", "magento/module-catalog-permissions": "100.4.*", "magento/module-catalog-search": "102.0.*", "magento/module-customer": "103.0.*", @@ -8318,11 +8319,11 @@ }, { "name": "magento/module-catalog-url-rewrite", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-url-rewrite/magento-module-catalog-url-rewrite-100.4.4.0.zip", - "shasum": "ea899afea444a981d3e468118038a280c75f86a8" + "url": "https://repo.magento.com/archives/magento/module-catalog-url-rewrite/magento-module-catalog-url-rewrite-100.4.5.0.zip", + "shasum": "1bd5ff2eb854696a84be74c33892c42e622ecc90" }, "require": { "magento/framework": "103.0.*", @@ -8392,11 +8393,11 @@ }, { "name": "magento/module-catalog-url-rewrite-staging", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-url-rewrite-staging/magento-module-catalog-url-rewrite-staging-100.4.3.0.zip", - "shasum": "368f5695d414b0db362e46259a81b878f25c20f5" + "url": "https://repo.magento.com/archives/magento/module-catalog-url-rewrite-staging/magento-module-catalog-url-rewrite-staging-100.4.4.0.zip", + "shasum": "04de01719cc50c42389a70392293ba98f400a0fb" }, "require": { "magento/framework": "103.0.*", @@ -8423,11 +8424,11 @@ }, { "name": "magento/module-catalog-widget", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-widget/magento-module-catalog-widget-100.4.4.0.zip", - "shasum": "0df1204f3de4c39b099a4c4933a8096d29010515" + "url": "https://repo.magento.com/archives/magento/module-catalog-widget/magento-module-catalog-widget-100.4.5.0.zip", + "shasum": "fb050b11f646398e68f0f9c9b2c70a1c29531842" }, "require": { "magento/framework": "103.0.*", @@ -8459,11 +8460,11 @@ }, { "name": "magento/module-checkout", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout/magento-module-checkout-100.4.4.0.zip", - "shasum": "7565754344c67aea344a07fb2058cf53561127e3" + "url": "https://repo.magento.com/archives/magento/module-checkout/magento-module-checkout-100.4.5.0.zip", + "shasum": "c29a27d1314282080c7f89bc05cb6f80194a22dd" }, "require": { "magento/framework": "103.0.*", @@ -8509,11 +8510,11 @@ }, { "name": "magento/module-checkout-address-search", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout-address-search/magento-module-checkout-address-search-100.4.3.0.zip", - "shasum": "6682057b05cab155391d1722a249dc3cac722ecd" + "url": "https://repo.magento.com/archives/magento/module-checkout-address-search/magento-module-checkout-address-search-100.4.4.0.zip", + "shasum": "b0f43ccdb77a172320c25764f2031749c7521b6c" }, "require": { "magento/framework": "103.0.*", @@ -8571,17 +8572,17 @@ }, { "name": "magento/module-checkout-address-search-negotiable-quote", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout-address-search-negotiable-quote/magento-module-checkout-address-search-negotiable-quote-100.3.3.0.zip", - "shasum": "99a38d0c2d1fa80e781eddacda58dae4352ad1d3" + "url": "https://repo.magento.com/archives/magento/module-checkout-address-search-negotiable-quote/magento-module-checkout-address-search-negotiable-quote-100.3.4.0.zip", + "shasum": "b16791107d48bac87782f43f4f334eaa55b55d2a" }, "require": { - "magento/framework": "103.0.4", - "magento/module-checkout": "100.4.4", - "magento/module-checkout-address-search": "100.4.3", - "magento/module-negotiable-quote": "100.3.3", + "magento/framework": "103.0.5", + "magento/module-checkout": "100.4.5", + "magento/module-checkout-address-search": "100.4.4", + "magento/module-negotiable-quote": "100.3.4", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -8600,11 +8601,11 @@ }, { "name": "magento/module-checkout-agreements", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout-agreements/magento-module-checkout-agreements-100.4.3.0.zip", - "shasum": "2e05ba5e61339a31e01560c22ae069fdcdfacb2a" + "url": "https://repo.magento.com/archives/magento/module-checkout-agreements/magento-module-checkout-agreements-100.4.4.0.zip", + "shasum": "3ea175aac3a181b5eb4120a1a6d93dc0ae9b0567" }, "require": { "magento/framework": "103.0.*", @@ -8663,19 +8664,19 @@ }, { "name": "magento/module-checkout-agreements-negotiable-quote", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout-agreements-negotiable-quote/magento-module-checkout-agreements-negotiable-quote-100.3.3.0.zip", - "shasum": "9727e2167c29e09fd0155427cf36ead7c8bfe3de" + "url": "https://repo.magento.com/archives/magento/module-checkout-agreements-negotiable-quote/magento-module-checkout-agreements-negotiable-quote-100.3.4.0.zip", + "shasum": "b0c1134c81de3d3a00f860367dd1c2d3b9b064a4" }, "require": { - "magento/framework": "103.0.4", + "magento/framework": "103.0.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-checkout-agreements": "100.4.3", - "magento/module-negotiable-quote": "100.3.3" + "magento/module-checkout-agreements": "100.4.4", + "magento/module-negotiable-quote": "100.3.4" }, "type": "magento2-module", "autoload": { @@ -8693,19 +8694,19 @@ }, { "name": "magento/module-checkout-agreements-purchase-order", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout-agreements-purchase-order/magento-module-checkout-agreements-purchase-order-1.3.2.0.zip", - "shasum": "87b3ca129dffd99a8ece0857daba23751be2394e" + "url": "https://repo.magento.com/archives/magento/module-checkout-agreements-purchase-order/magento-module-checkout-agreements-purchase-order-1.3.3.0.zip", + "shasum": "09ce3b99701895323999f67c318f8ee969372bbe" }, "require": { - "magento/framework": "103.0.4", + "magento/framework": "103.0.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-checkout-agreements": "100.4.3", - "magento/module-purchase-order": "100.3.3" + "magento/module-checkout-agreements": "100.4.4", + "magento/module-purchase-order": "100.3.4" }, "type": "magento2-module", "autoload": { @@ -8723,11 +8724,11 @@ }, { "name": "magento/module-checkout-staging", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout-staging/magento-module-checkout-staging-100.4.3.0.zip", - "shasum": "09b284c1965b8b433977affa1550098919200a17" + "url": "https://repo.magento.com/archives/magento/module-checkout-staging/magento-module-checkout-staging-100.4.4.0.zip", + "shasum": "55b750efeb64d353d2c1228b3c8edd35d5609e7d" }, "require": { "magento/framework": "103.0.*", @@ -8757,11 +8758,11 @@ }, { "name": "magento/module-cms", - "version": "104.0.4", + "version": "104.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cms/magento-module-cms-104.0.4.0.zip", - "shasum": "c3b0a5b87f4245732334fd9571d41a382f3bf5db" + "url": "https://repo.magento.com/archives/magento/module-cms/magento-module-cms-104.0.5.0.zip", + "shasum": "46493eaca20ee9f1fdc01cb9ad0ad4ce8d884b1a" }, "require": { "magento/framework": "103.0.*", @@ -8887,11 +8888,11 @@ }, { "name": "magento/module-cms-staging", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cms-staging/magento-module-cms-staging-100.4.4.0.zip", - "shasum": "af81b248096c2cc438e8b5c8fc34e2e19a96b8a2" + "url": "https://repo.magento.com/archives/magento/module-cms-staging/magento-module-cms-staging-100.4.5.0.zip", + "shasum": "282d1f21dd5601a956af9459b1d5e5f246f2be2a" }, "require": { "magento/framework": "103.0.*", @@ -8918,11 +8919,11 @@ }, { "name": "magento/module-cms-url-rewrite", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite/magento-module-cms-url-rewrite-100.4.3.0.zip", - "shasum": "5a8de8093d7d4e6ffe8f9cb9bc42f8259dee97a0" + "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite/magento-module-cms-url-rewrite-100.4.4.0.zip", + "shasum": "58feb0325230324416a662735e85a2c5a4689dd6" }, "require": { "magento/framework": "103.0.*", @@ -8948,11 +8949,11 @@ }, { "name": "magento/module-cms-url-rewrite-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite-graph-ql/magento-module-cms-url-rewrite-graph-ql-100.4.2.0.zip", - "shasum": "43b3fa95a3bf776732105bc6e78c563737786ce2" + "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite-graph-ql/magento-module-cms-url-rewrite-graph-ql-100.4.3.0.zip", + "shasum": "795d725c0e8e0da0f287c8278cd88c024d1271d8" }, "require": { "magento/framework": "103.0.*", @@ -8983,39 +8984,39 @@ }, { "name": "magento/module-company", - "version": "101.1.3", + "version": "101.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-company/magento-module-company-101.1.3.0.zip", - "shasum": "ec4dc8d8b7a59bd56b1b35c0becae228d3a21dd5" + "url": "https://repo.magento.com/archives/magento/module-company/magento-module-company-101.1.4.0.zip", + "shasum": "d1d9302cfe3ec78a2fba6e830d8cb6d260520153" }, "require": { - "magento/framework": "103.0.4", - "magento/module-authorization": "100.4.4", - "magento/module-backend": "102.0.4", - "magento/module-captcha": "100.4.4", - "magento/module-cms": "104.0.4", - "magento/module-customer": "103.0.4", - "magento/module-directory": "100.4.4", - "magento/module-eav": "102.1.4", - "magento/module-negotiable-quote": "100.3.3", - "magento/module-sales": "103.0.4", - "magento/module-store": "101.1.4", - "magento/module-theme": "101.1.4", - "magento/module-ui": "101.2.4", - "magento/module-user": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-authorization": "100.4.5", + "magento/module-backend": "102.0.5", + "magento/module-captcha": "100.4.5", + "magento/module-cms": "104.0.5", + "magento/module-customer": "103.0.5", + "magento/module-directory": "100.4.5", + "magento/module-eav": "102.1.5", + "magento/module-negotiable-quote": "100.3.4", + "magento/module-sales": "103.0.5", + "magento/module-store": "101.1.5", + "magento/module-theme": "101.1.5", + "magento/module-ui": "101.2.5", + "magento/module-user": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-catalog": "104.0.4", - "magento/module-checkout": "100.4.4", - "magento/module-customer-custom-attributes": "100.4.4", - "magento/module-multishipping": "100.4.4", - "magento/module-quote": "101.2.4", - "magento/module-rma": "101.2.4", + "magento/module-catalog": "104.0.5", + "magento/module-checkout": "100.4.5", + "magento/module-customer-custom-attributes": "100.4.5", + "magento/module-multishipping": "100.4.5", + "magento/module-quote": "101.2.5", + "magento/module-rma": "101.2.5", "magento/module-scalable-oms": "100.4.3", - "magento/module-webapi": "100.4.3", - "magento/module-wishlist": "101.2.4" + "magento/module-webapi": "100.4.4", + "magento/module-wishlist": "101.2.5" }, "type": "magento2-module", "autoload": { @@ -9033,38 +9034,38 @@ }, { "name": "magento/module-company-credit", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-company-credit/magento-module-company-credit-100.3.3.0.zip", - "shasum": "a35a9c9508c18ef1d63b4721ba5b72c2bd37b258" + "url": "https://repo.magento.com/archives/magento/module-company-credit/magento-module-company-credit-100.3.4.0.zip", + "shasum": "d3b4190e2d4d458d31f8cd3a8d1fa0c7576b2624" }, "require": { - "magento/framework": "103.0.4", - "magento/module-authorization": "100.4.4", - "magento/module-backend": "102.0.4", - "magento/module-checkout": "100.4.4", - "magento/module-company": "101.1.3", - "magento/module-customer": "103.0.4", - "magento/module-directory": "100.4.4", - "magento/module-eav": "102.1.4", - "magento/module-integration": "100.4.4", - "magento/module-logging": "101.2.4", - "magento/module-negotiable-quote": "100.3.3", - "magento/module-payment": "100.4.4", - "magento/module-quote": "101.2.4", - "magento/module-sales": "103.0.4", - "magento/module-store": "101.1.4", - "magento/module-ui": "101.2.4", - "magento/module-user": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-authorization": "100.4.5", + "magento/module-backend": "102.0.5", + "magento/module-checkout": "100.4.5", + "magento/module-company": "101.1.4", + "magento/module-customer": "103.0.5", + "magento/module-directory": "100.4.5", + "magento/module-eav": "102.1.5", + "magento/module-integration": "100.4.5", + "magento/module-logging": "101.2.5", + "magento/module-negotiable-quote": "100.3.4", + "magento/module-payment": "100.4.5", + "magento/module-quote": "101.2.5", + "magento/module-sales": "103.0.5", + "magento/module-store": "101.1.5", + "magento/module-ui": "101.2.5", + "magento/module-user": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-company-payment": "100.3.3", - "magento/module-config": "101.2.4", - "magento/module-customer-balance": "100.4.4", - "magento/module-multishipping": "100.4.4", - "magento/module-rma": "101.2.4" + "magento/module-company-payment": "100.3.4", + "magento/module-config": "101.2.5", + "magento/module-customer-balance": "100.4.5", + "magento/module-multishipping": "100.4.5", + "magento/module-rma": "101.2.5" }, "type": "magento2-module", "autoload": { @@ -9082,19 +9083,19 @@ }, { "name": "magento/module-company-credit-graph-ql", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-company-credit-graph-ql/magento-module-company-credit-graph-ql-1.3.2.0.zip", - "shasum": "a01871f8662d6c58f4013f8756b791ec388472c6" + "url": "https://repo.magento.com/archives/magento/module-company-credit-graph-ql/magento-module-company-credit-graph-ql-1.3.3.0.zip", + "shasum": "8bfa9213ae60acaec57e696d80b0c24da06f42b6" }, "require": { - "magento/framework": "103.0.4", - "magento/module-authorization": "100.4.4", - "magento/module-company-credit": "100.3.3", - "magento/module-company-graph-ql": "1.3.2", - "magento/module-customer": "103.0.4", - "magento/module-user": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-authorization": "100.4.5", + "magento/module-company-credit": "100.3.4", + "magento/module-company-graph-ql": "1.3.3", + "magento/module-customer": "103.0.5", + "magento/module-user": "101.2.5", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -9114,22 +9115,22 @@ }, { "name": "magento/module-company-graph-ql", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-company-graph-ql/magento-module-company-graph-ql-1.3.2.0.zip", - "shasum": "324537674d7f298c0ffd44517b367995c0ad8d6d" + "url": "https://repo.magento.com/archives/magento/module-company-graph-ql/magento-module-company-graph-ql-1.3.3.0.zip", + "shasum": "39f7997401c03b2cb4ff541c5a6e3dc6161a86c8" }, "require": { - "magento/framework": "103.0.4", - "magento/module-backend": "102.0.4", - "magento/module-company": "101.1.3", - "magento/module-customer": "103.0.4", - "magento/module-customer-graph-ql": "100.4.4", - "magento/module-directory": "100.4.4", - "magento/module-graph-ql": "100.4.4", - "magento/module-store": "101.1.4", - "magento/module-user": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-backend": "102.0.5", + "magento/module-company": "101.1.4", + "magento/module-customer": "103.0.5", + "magento/module-customer-graph-ql": "100.4.5", + "magento/module-directory": "100.4.5", + "magento/module-graph-ql": "100.4.5", + "magento/module-store": "101.1.5", + "magento/module-user": "101.2.5", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -9149,27 +9150,29 @@ }, { "name": "magento/module-company-payment", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-company-payment/magento-module-company-payment-100.3.3.0.zip", - "shasum": "674896a20c3155260d95e685ec0db56bf4b6158c" + "url": "https://repo.magento.com/archives/magento/module-company-payment/magento-module-company-payment-100.3.4.0.zip", + "shasum": "fd5fe5ae3b149b429553f59c56066cdc43e63589" }, "require": { - "magento/framework": "103.0.4", - "magento/module-authorization": "100.4.4", - "magento/module-backend": "102.0.4", - "magento/module-company": "101.1.3", - "magento/module-config": "101.2.4", - "magento/module-payment": "100.4.4", - "magento/module-quote": "101.2.4", - "magento/module-store": "101.1.4", - "magento/module-ui": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-authorization": "100.4.5", + "magento/module-backend": "102.0.5", + "magento/module-company": "101.1.4", + "magento/module-config": "101.2.5", + "magento/module-payment": "100.4.5", + "magento/module-quote": "101.2.5", + "magento/module-sales": "103.0.5", + "magento/module-store": "101.1.5", + "magento/module-ui": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-multishipping": "100.4.4", - "magento/module-sales": "103.0.4" + "magento/module-checkout": "100.4.5", + "magento/module-customer-balance": "100.4.5", + "magento/module-multishipping": "100.4.5" }, "type": "magento2-module", "autoload": { @@ -9187,24 +9190,24 @@ }, { "name": "magento/module-company-shipping", - "version": "1.3.3", + "version": "1.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-company-shipping/magento-module-company-shipping-1.3.3.0.zip", - "shasum": "e16b094067b79a57af49a2f4ee7d6039bf44d4ab" + "url": "https://repo.magento.com/archives/magento/module-company-shipping/magento-module-company-shipping-1.3.4.0.zip", + "shasum": "41c53d45a285f3724a86ce81db46b383b3fc58f0" }, "require": { - "magento/framework": "103.0.4", - "magento/module-authorization": "100.4.4", - "magento/module-backend": "102.0.4", - "magento/module-company": "101.1.3", - "magento/module-config": "101.2.4", - "magento/module-shipping": "100.4.4", - "magento/module-ui": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-authorization": "100.4.5", + "magento/module-backend": "102.0.5", + "magento/module-company": "101.1.4", + "magento/module-config": "101.2.5", + "magento/module-shipping": "100.4.5", + "magento/module-ui": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-quote": "101.2.4" + "magento/module-quote": "101.2.5" }, "type": "magento2-module", "autoload": { @@ -9251,11 +9254,11 @@ }, { "name": "magento/module-config", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-config/magento-module-config-101.2.4.0.zip", - "shasum": "9392da7243f39fad1e90ff4709394ab3dd6657d7" + "url": "https://repo.magento.com/archives/magento/module-config/magento-module-config-101.2.5.0.zip", + "shasum": "29b1ef19022f790adc92d434b63aa673c2d49da4" }, "require": { "magento/framework": "103.0.*", @@ -9285,11 +9288,11 @@ }, { "name": "magento/module-configurable-import-export", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-import-export/magento-module-configurable-import-export-100.4.2.0.zip", - "shasum": "603d6c9eac912e43a402b56d0948ad68add15c02" + "url": "https://repo.magento.com/archives/magento/module-configurable-import-export/magento-module-configurable-import-export-100.4.3.0.zip", + "shasum": "a17ea30a737183e89f768827ac5dc79dfab3f8d2" }, "require": { "magento/framework": "103.0.*", @@ -9318,17 +9321,17 @@ }, { "name": "magento/module-configurable-negotiable-quote", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-negotiable-quote/magento-module-configurable-negotiable-quote-100.3.3.0.zip", - "shasum": "22f6274dc192ed6c814d5fb4c347e6e4cde277d2" + "url": "https://repo.magento.com/archives/magento/module-configurable-negotiable-quote/magento-module-configurable-negotiable-quote-100.3.4.0.zip", + "shasum": "0f3c77b15b6e34801287e96c2b9079e102413eba" }, "require": { - "magento/framework": "103.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-configurable-product": "100.4.4", - "magento/module-negotiable-quote": "100.3.3", + "magento/framework": "103.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-configurable-product": "100.4.5", + "magento/module-negotiable-quote": "100.3.4", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -9347,11 +9350,11 @@ }, { "name": "magento/module-configurable-product", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-product/magento-module-configurable-product-100.4.4.0.zip", - "shasum": "9766e5966fed032917558e1f7ed09c69c3626da0" + "url": "https://repo.magento.com/archives/magento/module-configurable-product/magento-module-configurable-product-100.4.5.0.zip", + "shasum": "a6b2a438775e10b315da352207f326b25d2847f6" }, "require": { "magento/framework": "103.0.*", @@ -9394,11 +9397,11 @@ }, { "name": "magento/module-configurable-product-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-product-graph-ql/magento-module-configurable-product-graph-ql-100.4.4.0.zip", - "shasum": "3d27a65010bb681027cf5a250045f20b9731fcd9" + "url": "https://repo.magento.com/archives/magento/module-configurable-product-graph-ql/magento-module-configurable-product-graph-ql-100.4.5.0.zip", + "shasum": "d43550da49c0626cedac90aab27aaa23c8fc046c" }, "require": { "magento/framework": "103.0.*", @@ -9459,11 +9462,11 @@ }, { "name": "magento/module-configurable-product-staging", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-product-staging/magento-module-configurable-product-staging-100.4.3.0.zip", - "shasum": "4950946b7eebc21c9ee586400e651f258999c5df" + "url": "https://repo.magento.com/archives/magento/module-configurable-product-staging/magento-module-configurable-product-staging-100.4.4.0.zip", + "shasum": "293a3b4a13ce2994a11d067235a7a8a3c2be900c" }, "require": { "lib-libxml": "*", @@ -9472,6 +9475,7 @@ "magento/module-catalog": "104.0.*", "magento/module-catalog-staging": "100.4.*", "magento/module-configurable-product": "100.4.*", + "magento/module-staging": "101.2.*", "magento/module-ui": "101.2.*", "php": "~7.4.0||~8.1.0" }, @@ -9494,20 +9498,20 @@ }, { "name": "magento/module-configurable-requisition-list", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-requisition-list/magento-module-configurable-requisition-list-100.3.3.0.zip", - "shasum": "1fe428811d47de660d18f15c14e7e714bc3ab1bf" + "url": "https://repo.magento.com/archives/magento/module-configurable-requisition-list/magento-module-configurable-requisition-list-100.3.4.0.zip", + "shasum": "f20bc6c7bfa570f34cb8bfca3bd82b03900b2e9b" }, "require": { - "magento/framework": "103.0.4", + "magento/framework": "103.0.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-catalog": "104.0.4", - "magento/module-configurable-product": "100.4.4", - "magento/module-requisition-list": "100.3.3" + "magento/module-catalog": "104.0.5", + "magento/module-configurable-product": "100.4.5", + "magento/module-requisition-list": "100.3.4" }, "type": "magento2-module", "autoload": { @@ -9525,18 +9529,18 @@ }, { "name": "magento/module-configurable-requisition-list-graph-ql", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-requisition-list-graph-ql/magento-module-configurable-requisition-list-graph-ql-1.3.2.0.zip", - "shasum": "312bfad74db7e68dbf666c5df4b64b9e91dc4dbb" + "url": "https://repo.magento.com/archives/magento/module-configurable-requisition-list-graph-ql/magento-module-configurable-requisition-list-graph-ql-1.3.3.0.zip", + "shasum": "69e2a81c69128015f8fd5e1bf2d46a00e1012e6d" }, "require": { - "magento/framework": "103.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-configurable-product": "100.4.4", - "magento/module-requisition-list": "100.3.3", - "magento/module-requisition-list-graph-ql": "1.3.2", + "magento/framework": "103.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-configurable-product": "100.4.5", + "magento/module-requisition-list": "100.3.4", + "magento/module-requisition-list-graph-ql": "1.3.3", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -9555,23 +9559,23 @@ }, { "name": "magento/module-configurable-shared-catalog", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-shared-catalog/magento-module-configurable-shared-catalog-100.3.3.0.zip", - "shasum": "fa7847367da13c9fd1f8ae09e2d68d60ef465cb7" + "url": "https://repo.magento.com/archives/magento/module-configurable-shared-catalog/magento-module-configurable-shared-catalog-100.3.4.0.zip", + "shasum": "20bf44bc00e93e6e11a97fbad3b09c19744405e4" }, "require": { - "magento/framework": "103.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-customer": "103.0.4", - "magento/module-shared-catalog": "100.3.3", - "magento/module-store": "101.1.4", - "magento/module-ui": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-customer": "103.0.5", + "magento/module-shared-catalog": "100.3.4", + "magento/module-store": "101.1.5", + "magento/module-ui": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-configurable-product": "100.4.4" + "magento/module-configurable-product": "100.4.5" }, "type": "magento2-module", "autoload": { @@ -9620,11 +9624,11 @@ }, { "name": "magento/module-cookie", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cookie/magento-module-cookie-100.4.4.0.zip", - "shasum": "028bc4a3d6758ec00e63451b66b529b03ddb0ea2" + "url": "https://repo.magento.com/archives/magento/module-cookie/magento-module-cookie-100.4.5.0.zip", + "shasum": "4f25ec33123b391b2f6a7cbba0797afb412609d5" }, "require": { "magento/framework": "103.0.*", @@ -9651,11 +9655,11 @@ }, { "name": "magento/module-cron", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cron/magento-module-cron-100.4.4.0.zip", - "shasum": "3ac0f4fc89416ac589e7a22749f1825bf8c0ae36" + "url": "https://repo.magento.com/archives/magento/module-cron/magento-module-cron-100.4.5.0.zip", + "shasum": "21c72975a3851a4cdb57380674a0afff02379d22" }, "require": { "magento/framework": "103.0.*", @@ -9682,11 +9686,11 @@ }, { "name": "magento/module-csp", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-csp/magento-module-csp-100.4.3.0.zip", - "shasum": "8df45e885e6287ed0b1380d2a1416c9ba0bccc8a" + "url": "https://repo.magento.com/archives/magento/module-csp/magento-module-csp-100.4.4.0.zip", + "shasum": "efc91377bea43c015a2e89e625b17f86d5971e67" }, "require": { "magento/framework": "103.0.*", @@ -9742,11 +9746,11 @@ }, { "name": "magento/module-custom-attribute-management", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-custom-attribute-management/magento-module-custom-attribute-management-100.4.3.0.zip", - "shasum": "ea3a45b89389e87f1c81eca34988acfdf8f74118" + "url": "https://repo.magento.com/archives/magento/module-custom-attribute-management/magento-module-custom-attribute-management-100.4.4.0.zip", + "shasum": "1aa19d933f3b7b5596afa0c48bed8edab7cca3e8" }, "require": { "magento/framework": "103.0.*", @@ -9772,11 +9776,11 @@ }, { "name": "magento/module-customer", - "version": "103.0.4", + "version": "103.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer/magento-module-customer-103.0.4.0.zip", - "shasum": "a9b5e4fb9a4bd904bc6c4fd8951a42c5f28f1f4f" + "url": "https://repo.magento.com/archives/magento/module-customer/magento-module-customer-103.0.5.0.zip", + "shasum": "a54992e45b4d2aee5007a683f25eeea0079c9dba" }, "require": { "magento/framework": "103.0.*", @@ -9851,11 +9855,11 @@ }, { "name": "magento/module-customer-balance", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-balance/magento-module-customer-balance-100.4.4.0.zip", - "shasum": "a0d3b9215106f1c96321098eea3e738e7be7b6cd" + "url": "https://repo.magento.com/archives/magento/module-customer-balance/magento-module-customer-balance-100.4.5.0.zip", + "shasum": "3cf267bc08c10e045b7ce5dd5a66513c936b4790" }, "require": { "magento/framework": "103.0.*", @@ -9921,11 +9925,11 @@ }, { "name": "magento/module-customer-custom-attributes", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-custom-attributes/magento-module-customer-custom-attributes-100.4.4.0.zip", - "shasum": "d0974e438a36440f56eaa8916749b766902d00e8" + "url": "https://repo.magento.com/archives/magento/module-customer-custom-attributes/magento-module-customer-custom-attributes-100.4.5.0.zip", + "shasum": "d2b1476be7d8c902e1e97fc11fd17715c2ffeaf1" }, "require": { "magento/framework": "103.0.*", @@ -9944,6 +9948,9 @@ "magento/module-ui": "101.2.*", "php": "~7.4.0||~8.1.0" }, + "suggest": { + "magento/module-catalog": "104.0.*" + }, "type": "magento2-module", "autoload": { "files": [ @@ -10026,11 +10033,11 @@ }, { "name": "magento/module-customer-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-graph-ql/magento-module-customer-graph-ql-100.4.4.0.zip", - "shasum": "8784253f465b269a4db27b15f297168994fae874" + "url": "https://repo.magento.com/archives/magento/module-customer-graph-ql/magento-module-customer-graph-ql-100.4.5.0.zip", + "shasum": "602fdc6011df59605229070182fd47c757f48e3c" }, "require": { "magento/framework": "103.0.*", @@ -10063,11 +10070,11 @@ }, { "name": "magento/module-customer-import-export", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-import-export/magento-module-customer-import-export-100.4.4.0.zip", - "shasum": "6974e693afef3f09453310edc2c7a05180aa26ef" + "url": "https://repo.magento.com/archives/magento/module-customer-import-export/magento-module-customer-import-export-100.4.5.0.zip", + "shasum": "6d6805918020b4ceb9823ecdbec2ab42203cbb35" }, "require": { "magento/framework": "103.0.*", @@ -10096,11 +10103,11 @@ }, { "name": "magento/module-customer-segment", - "version": "102.1.4", + "version": "102.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-segment/magento-module-customer-segment-102.1.4.0.zip", - "shasum": "7e91eb6edc3982e06e2e5f1b9b577ecee18a8572" + "url": "https://repo.magento.com/archives/magento/module-customer-segment/magento-module-customer-segment-102.1.5.0.zip", + "shasum": "942bc03460e0b726c438b0b6dcba90f54c75f672" }, "require": { "magento/framework": "103.0.*", @@ -10172,11 +10179,11 @@ }, { "name": "magento/module-deploy", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-deploy/magento-module-deploy-100.4.4.0.zip", - "shasum": "d019c83f5d2117b74ede903f9e8e4f9efc807886" + "url": "https://repo.magento.com/archives/magento/module-deploy/magento-module-deploy-100.4.5.0.zip", + "shasum": "a213853f0a0fdb9c4253dd3fc733e5a0fd73ba60" }, "require": { "magento/framework": "103.0.*", @@ -10204,11 +10211,11 @@ }, { "name": "magento/module-developer", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-developer/magento-module-developer-100.4.4.0.zip", - "shasum": "130d066e02afc49ea5e499a38c2d207b316897bf" + "url": "https://repo.magento.com/archives/magento/module-developer/magento-module-developer-100.4.5.0.zip", + "shasum": "dfa60efc615392b056754cb6a81c78a6ffef80f8" }, "require": { "magento/framework": "103.0.*", @@ -10233,11 +10240,11 @@ }, { "name": "magento/module-dhl", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-dhl/magento-module-dhl-100.4.3.0.zip", - "shasum": "be0b7ce303b59aaea9bb5e9c262916e7600efc1c" + "url": "https://repo.magento.com/archives/magento/module-dhl/magento-module-dhl-100.4.4.0.zip", + "shasum": "48ccc4512f35d3fe6ebb761a9e663e37f4160455" }, "require": { "lib-libxml": "*", @@ -10273,11 +10280,11 @@ }, { "name": "magento/module-directory", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-directory/magento-module-directory-100.4.4.0.zip", - "shasum": "a227ad0a86e7ef636dc996d1d366eff3f2a38898" + "url": "https://repo.magento.com/archives/magento/module-directory/magento-module-directory-100.4.5.0.zip", + "shasum": "42bab61cd7e480a9c1d0a0afc164f4587f4b1fcc" }, "require": { "lib-libxml": "*", @@ -10304,11 +10311,11 @@ }, { "name": "magento/module-directory-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-directory-graph-ql/magento-module-directory-graph-ql-100.4.2.0.zip", - "shasum": "8c1d22fe9534fec4f7ac3b472c41bf78aa3efc75" + "url": "https://repo.magento.com/archives/magento/module-directory-graph-ql/magento-module-directory-graph-ql-100.4.3.0.zip", + "shasum": "c4da9001b43d6c14063060594cb6c9eaced6b904" }, "require": { "magento/framework": "103.0.*", @@ -10334,11 +10341,11 @@ }, { "name": "magento/module-downloadable", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable/magento-module-downloadable-100.4.4.0.zip", - "shasum": "9612442d3c202c19dfbbced3e118cc084cef6878" + "url": "https://repo.magento.com/archives/magento/module-downloadable/magento-module-downloadable-100.4.5.0.zip", + "shasum": "78a7f641efd6f7297cd5f046bfda9565de415192" }, "require": { "magento/framework": "103.0.*", @@ -10380,11 +10387,11 @@ }, { "name": "magento/module-downloadable-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable-graph-ql/magento-module-downloadable-graph-ql-100.4.4.0.zip", - "shasum": "00c6b314ff17ea4d6b5d49137cf360bbdf6ea985" + "url": "https://repo.magento.com/archives/magento/module-downloadable-graph-ql/magento-module-downloadable-graph-ql-100.4.5.0.zip", + "shasum": "e9b7443eada7b328cefb0a3c290481a789d8a2ba" }, "require": { "magento/framework": "103.0.*", @@ -10417,11 +10424,11 @@ }, { "name": "magento/module-downloadable-import-export", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable-import-export/magento-module-downloadable-import-export-100.4.3.0.zip", - "shasum": "d6a9258cbc4ad68778067782980cfa483ef2faa2" + "url": "https://repo.magento.com/archives/magento/module-downloadable-import-export/magento-module-downloadable-import-export-100.4.4.0.zip", + "shasum": "4d50455fba9fa7714ccc90d2ef3326a13d5162dc" }, "require": { "magento/framework": "103.0.*", @@ -10450,19 +10457,19 @@ }, { "name": "magento/module-downloadable-requisition-list-graph-ql", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable-requisition-list-graph-ql/magento-module-downloadable-requisition-list-graph-ql-1.3.2.0.zip", - "shasum": "410ee318abf0b3246953a30d4a83aee32fc647f6" + "url": "https://repo.magento.com/archives/magento/module-downloadable-requisition-list-graph-ql/magento-module-downloadable-requisition-list-graph-ql-1.3.3.0.zip", + "shasum": "c0f2e757cb882cdc7a5cb25ea5b1a0412eb874dd" }, "require": { - "magento/framework": "103.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-downloadable": "100.4.4", - "magento/module-downloadable-graph-ql": "100.4.4", - "magento/module-requisition-list": "100.3.3", - "magento/module-requisition-list-graph-ql": "1.3.2", + "magento/framework": "103.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-downloadable": "100.4.5", + "magento/module-downloadable-graph-ql": "100.4.5", + "magento/module-requisition-list": "100.3.4", + "magento/module-requisition-list-graph-ql": "1.3.3", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -10481,11 +10488,11 @@ }, { "name": "magento/module-downloadable-staging", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable-staging/magento-module-downloadable-staging-100.4.3.0.zip", - "shasum": "e5934117e3b790640b1b5e57e332c00233473d86" + "url": "https://repo.magento.com/archives/magento/module-downloadable-staging/magento-module-downloadable-staging-100.4.4.0.zip", + "shasum": "5a5865478222f09599d089e9c9721eaf1ce98326" }, "require": { "lib-libxml": "*", @@ -10516,11 +10523,11 @@ }, { "name": "magento/module-eav", - "version": "102.1.4", + "version": "102.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-eav/magento-module-eav-102.1.4.0.zip", - "shasum": "c3be158f50ef1f618bfde852c22555cb12e31840" + "url": "https://repo.magento.com/archives/magento/module-eav/magento-module-eav-102.1.5.0.zip", + "shasum": "c340cf0993448f1abd5ad0caf61734249611943e" }, "require": { "magento/framework": "103.0.*", @@ -10579,14 +10586,14 @@ }, { "name": "magento/module-elasticsearch", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-elasticsearch/magento-module-elasticsearch-101.0.4.0.zip", - "shasum": "59cc0bd8094bc28f68339244532a85f35bf1ec9d" + "url": "https://repo.magento.com/archives/magento/module-elasticsearch/magento-module-elasticsearch-101.0.5.0.zip", + "shasum": "e596d6ae4542e44ac18acb5714a2fe8af201da2e" }, "require": { - "elasticsearch/elasticsearch": "~7.16.0", + "elasticsearch/elasticsearch": "~7.17.0", "magento/framework": "103.0.*", "magento/module-advanced-search": "100.4.*", "magento/module-catalog": "104.0.*", @@ -10618,14 +10625,14 @@ }, { "name": "magento/module-elasticsearch-6", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-elasticsearch-6/magento-module-elasticsearch-6-100.4.4.0.zip", - "shasum": "7ff2c20a5dbd04904aea96d06b957d7b9d5500cb" + "url": "https://repo.magento.com/archives/magento/module-elasticsearch-6/magento-module-elasticsearch-6-100.4.5.0.zip", + "shasum": "25afea3df20a62529a3ab27d7d45058ea8b85707" }, "require": { - "elasticsearch/elasticsearch": "~7.16.0", + "elasticsearch/elasticsearch": "~7.17.0", "magento/framework": "103.0.*", "magento/module-advanced-search": "100.4.*", "magento/module-catalog-search": "102.0.*", @@ -10653,14 +10660,14 @@ }, { "name": "magento/module-elasticsearch-7", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-elasticsearch-7/magento-module-elasticsearch-7-100.4.4.0.zip", - "shasum": "3a085edd82d218a166901e6abad3ad1080b1630c" + "url": "https://repo.magento.com/archives/magento/module-elasticsearch-7/magento-module-elasticsearch-7-100.4.5.0.zip", + "shasum": "f1cd194fd49688ce3c416c4a6678865a5dcf4d1f" }, "require": { - "elasticsearch/elasticsearch": "~7.16.0", + "elasticsearch/elasticsearch": "~7.17.0", "magento/framework": "103.0.*", "magento/module-advanced-search": "100.4.*", "magento/module-catalog-search": "102.0.*", @@ -10755,11 +10762,11 @@ }, { "name": "magento/module-email", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-email/magento-module-email-101.1.4.0.zip", - "shasum": "d1af5680086a5a9bf12f25164d4b4e9acbb10688" + "url": "https://repo.magento.com/archives/magento/module-email/magento-module-email-101.1.5.0.zip", + "shasum": "ca393c2beae425fdcbc56cafa12718a0a6e1b440" }, "require": { "magento/framework": "103.0.*", @@ -10823,11 +10830,11 @@ }, { "name": "magento/module-enterprise", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-enterprise/magento-module-enterprise-100.4.2.0.zip", - "shasum": "487ec8e9d7570a9ea5af5bdef42333f6d7bb5534" + "url": "https://repo.magento.com/archives/magento/module-enterprise/magento-module-enterprise-100.4.3.0.zip", + "shasum": "684538b62c94d98b162c19c8d3909b57b8e4a4f6" }, "require": { "magento/framework": "103.0.*", @@ -10912,11 +10919,11 @@ }, { "name": "magento/module-gift-card", - "version": "101.3.4", + "version": "101.3.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-card/magento-module-gift-card-101.3.4.0.zip", - "shasum": "45fe646f900dbda2bbe74479238efc67919e2411" + "url": "https://repo.magento.com/archives/magento/module-gift-card/magento-module-gift-card-101.3.5.0.zip", + "shasum": "ae509712be04a8133a36ab10ab07d5dc124baa95" }, "require": { "magento/framework": "103.0.*", @@ -10961,11 +10968,11 @@ }, { "name": "magento/module-gift-card-account", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-card-account/magento-module-gift-card-account-101.2.4.0.zip", - "shasum": "8e3d07e773c71480e2cfe0cc7a92bd6aeae2d9e9" + "url": "https://repo.magento.com/archives/magento/module-gift-card-account/magento-module-gift-card-account-101.2.5.0.zip", + "shasum": "6a47a0e46eebb1ab97bb21bd7a6355d62e6aa36f" }, "require": { "magento/framework": "103.0.*", @@ -11028,11 +11035,11 @@ }, { "name": "magento/module-gift-card-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-card-graph-ql/magento-module-gift-card-graph-ql-100.4.4.0.zip", - "shasum": "1acaac6450267766fa521b3147b48e8948f9f9e0" + "url": "https://repo.magento.com/archives/magento/module-gift-card-graph-ql/magento-module-gift-card-graph-ql-100.4.5.0.zip", + "shasum": "c3d8a15c6a0536021540e9f0baac6b394c0afb0f" }, "require": { "magento/framework": "103.0.*", @@ -11098,19 +11105,19 @@ }, { "name": "magento/module-gift-card-negotiable-quote", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-card-negotiable-quote/magento-module-gift-card-negotiable-quote-100.3.3.0.zip", - "shasum": "e9af1649138f2bfd6a108fc5a26c0efb84ff128c" + "url": "https://repo.magento.com/archives/magento/module-gift-card-negotiable-quote/magento-module-gift-card-negotiable-quote-100.3.4.0.zip", + "shasum": "1591c6d7905952cd1797f75672c59f45aeb0682b" }, "require": { - "magento/framework": "103.0.4", + "magento/framework": "103.0.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-gift-card": "101.3.4", - "magento/module-negotiable-quote": "100.3.3" + "magento/module-gift-card": "101.3.5", + "magento/module-negotiable-quote": "100.3.4" }, "type": "magento2-module", "autoload": { @@ -11128,21 +11135,21 @@ }, { "name": "magento/module-gift-card-requisition-list", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-card-requisition-list/magento-module-gift-card-requisition-list-100.3.3.0.zip", - "shasum": "993b362f781e6df2531cf61f94a53995e7605ed5" + "url": "https://repo.magento.com/archives/magento/module-gift-card-requisition-list/magento-module-gift-card-requisition-list-100.3.4.0.zip", + "shasum": "264e1e811cf90250cafe71a88cfd082168fd2a64" }, "require": { - "magento/framework": "103.0.4", - "magento/module-quote": "101.2.4", - "magento/module-requisition-list": "100.3.3", + "magento/framework": "103.0.5", + "magento/module-quote": "101.2.5", + "magento/module-requisition-list": "100.3.4", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-catalog": "104.0.4", - "magento/module-gift-card": "101.3.4" + "magento/module-catalog": "104.0.5", + "magento/module-gift-card": "101.3.5" }, "type": "magento2-module", "autoload": { @@ -11160,19 +11167,19 @@ }, { "name": "magento/module-gift-card-requisition-list-graph-ql", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-card-requisition-list-graph-ql/magento-module-gift-card-requisition-list-graph-ql-1.3.2.0.zip", - "shasum": "70cc112602df0f3f717d105c0a491d09476edade" + "url": "https://repo.magento.com/archives/magento/module-gift-card-requisition-list-graph-ql/magento-module-gift-card-requisition-list-graph-ql-1.3.3.0.zip", + "shasum": "41404600d41faed793116323542b153325e6845a" }, "require": { - "magento/framework": "103.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-gift-card": "101.3.4", - "magento/module-graph-ql": "100.4.4", - "magento/module-requisition-list": "100.3.3", - "magento/module-requisition-list-graph-ql": "1.3.2", + "magento/framework": "103.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-gift-card": "101.3.5", + "magento/module-graph-ql": "100.4.5", + "magento/module-requisition-list": "100.3.4", + "magento/module-requisition-list-graph-ql": "1.3.3", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -11191,20 +11198,20 @@ }, { "name": "magento/module-gift-card-shared-catalog", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-card-shared-catalog/magento-module-gift-card-shared-catalog-100.3.3.0.zip", - "shasum": "a21e0f24432f83489e7f902ca61504bb7dfb0c13" + "url": "https://repo.magento.com/archives/magento/module-gift-card-shared-catalog/magento-module-gift-card-shared-catalog-100.3.4.0.zip", + "shasum": "6160f514ca651735a8972b32e6c0ff1521af81a5" }, "require": { - "magento/framework": "103.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-ui": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-ui": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-shared-catalog": "100.3.3" + "magento/module-shared-catalog": "100.3.4" }, "type": "magento2-module", "autoload": { @@ -11249,11 +11256,11 @@ }, { "name": "magento/module-gift-message", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-message/magento-module-gift-message-100.4.3.0.zip", - "shasum": "599c56fecf3c26ff9d1b59011255ab32eb9ed4e3" + "url": "https://repo.magento.com/archives/magento/module-gift-message/magento-module-gift-message-100.4.4.0.zip", + "shasum": "921b0e4ec989c1e9038b96a32a747498f3932b94" }, "require": { "magento/framework": "103.0.*", @@ -11288,11 +11295,11 @@ }, { "name": "magento/module-gift-message-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-message-graph-ql/magento-module-gift-message-graph-ql-100.4.2.0.zip", - "shasum": "03c5e036bcb950dff7b2fd8b5a93c91cec6919db" + "url": "https://repo.magento.com/archives/magento/module-gift-message-graph-ql/magento-module-gift-message-graph-ql-100.4.3.0.zip", + "shasum": "fbe42991c130a066fa97bb9bec4aff4ef908e2a0" }, "require": { "magento/framework": "103.0.*", @@ -11351,11 +11358,11 @@ }, { "name": "magento/module-gift-registry", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-registry/magento-module-gift-registry-101.2.4.0.zip", - "shasum": "4cfa4b0636cc0622f8a2b1dba29dadb7aac4e3d7" + "url": "https://repo.magento.com/archives/magento/module-gift-registry/magento-module-gift-registry-101.2.5.0.zip", + "shasum": "6bbfb43398db9bb1df8e4c01f77e64c0ebb994fd" }, "require": { "magento/framework": "103.0.*", @@ -11433,11 +11440,11 @@ }, { "name": "magento/module-gift-wrapping", - "version": "101.2.3", + "version": "101.2.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-wrapping/magento-module-gift-wrapping-101.2.3.0.zip", - "shasum": "28b0ec799a10415b3f12faa153fd379121d66421" + "url": "https://repo.magento.com/archives/magento/module-gift-wrapping/magento-module-gift-wrapping-101.2.4.0.zip", + "shasum": "c786839eb1eee6ea39094ffed638760f9763af19" }, "require": { "magento/framework": "103.0.*", @@ -11598,13 +11605,46 @@ ], "description": "N/A" }, + { + "name": "magento/module-google-gtag", + "version": "100.4.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-google-gtag/magento-module-google-gtag-100.4.0.0.zip", + "shasum": "60adbe5904d419485a1c710ce8fefa0dd9213b49" + }, + "require": { + "magento/framework": "103.0.*", + "magento/module-cookie": "100.4.*", + "magento/module-sales": "103.0.*", + "magento/module-store": "101.1.*", + "php": "~7.4.0||~8.1.0" + }, + "suggest": { + "magento/module-config": "101.2.*" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\GoogleGtag\\": "" + } + }, + "license": [ + "OSL-3.0", + "AFL-3.0" + ], + "description": "N/A" + }, { "name": "magento/module-google-optimizer", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-google-optimizer/magento-module-google-optimizer-100.4.3.0.zip", - "shasum": "6c45412c39e296e2bba714944a4213923a072ea1" + "url": "https://repo.magento.com/archives/magento/module-google-optimizer/magento-module-google-optimizer-100.4.4.0.zip", + "shasum": "562fe885296e5d3a4289f1f8df6498f8322406a0" }, "require": { "magento/framework": "103.0.*", @@ -11612,6 +11652,7 @@ "magento/module-catalog": "104.0.*", "magento/module-cms": "104.0.*", "magento/module-google-analytics": "100.4.*", + "magento/module-google-gtag": "100.4.*", "magento/module-store": "101.1.*", "magento/module-ui": "101.2.*", "php": "~7.4.0||~8.1.0" @@ -11665,11 +11706,11 @@ }, { "name": "magento/module-google-tag-manager", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-google-tag-manager/magento-module-google-tag-manager-100.4.4.0.zip", - "shasum": "4927957b00591b04d82c52833e406eb15493fc1f" + "url": "https://repo.magento.com/archives/magento/module-google-tag-manager/magento-module-google-tag-manager-100.4.5.0.zip", + "shasum": "5d1bcfca9874872c6499a60daf7498da77ea4ea9" }, "require": { "magento/framework": "103.0.*", @@ -11680,6 +11721,7 @@ "magento/module-cookie": "100.4.*", "magento/module-customer": "103.0.*", "magento/module-google-analytics": "100.4.*", + "magento/module-google-gtag": "100.4.*", "magento/module-page-cache": "100.4.*", "magento/module-sales": "103.0.*", "magento/module-store": "101.1.*", @@ -11705,11 +11747,11 @@ }, { "name": "magento/module-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-graph-ql/magento-module-graph-ql-100.4.4.0.zip", - "shasum": "e33fc6b44c60ac57ee855ef48de034ffd5bdb959" + "url": "https://repo.magento.com/archives/magento/module-graph-ql/magento-module-graph-ql-100.4.5.0.zip", + "shasum": "a956f4de6dd170b23705701c08d351a627500758" }, "require": { "magento/framework": "103.0.*", @@ -11718,7 +11760,7 @@ "magento/module-new-relic-reporting": "100.4.*", "magento/module-webapi": "100.4.*", "php": "~7.4.0||~8.1.0", - "webonyx/graphql-php": "~14.11.3" + "webonyx/graphql-php": "~14.11.5" }, "suggest": { "magento/module-graph-ql-cache": "100.4.*" @@ -11740,11 +11782,11 @@ }, { "name": "magento/module-graph-ql-cache", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-graph-ql-cache/magento-module-graph-ql-cache-100.4.1.0.zip", - "shasum": "0145042f6360087d8f54cad4998a1e1459d5d5f7" + "url": "https://repo.magento.com/archives/magento/module-graph-ql-cache/magento-module-graph-ql-cache-100.4.2.0.zip", + "shasum": "ba6b7676af0b686ae6a89f8aa8335e32ca68dc27" }, "require": { "magento/framework": "103.0.*", @@ -11771,11 +11813,11 @@ }, { "name": "magento/module-grouped-catalog-inventory", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-catalog-inventory/magento-module-grouped-catalog-inventory-100.4.1.0.zip", - "shasum": "2b379e8f6334f565440c4f738dc965e21e4e75b1" + "url": "https://repo.magento.com/archives/magento/module-grouped-catalog-inventory/magento-module-grouped-catalog-inventory-100.4.2.0.zip", + "shasum": "ff1404f454d460b4fb54db48de9fd701ff4c7686" }, "require": { "magento/framework": "103.0.*", @@ -11801,11 +11843,11 @@ }, { "name": "magento/module-grouped-import-export", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-import-export/magento-module-grouped-import-export-100.4.2.0.zip", - "shasum": "f902e7c7563ebd987f292c34b011b8c5160af6e8" + "url": "https://repo.magento.com/archives/magento/module-grouped-import-export/magento-module-grouped-import-export-100.4.3.0.zip", + "shasum": "ac071186b6f3f875d1045231f5ddd83ecc46081e" }, "require": { "magento/framework": "103.0.*", @@ -11833,11 +11875,11 @@ }, { "name": "magento/module-grouped-product", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-product/magento-module-grouped-product-100.4.4.0.zip", - "shasum": "f270edece8c486b09e4ad6013cf6211c431ec860" + "url": "https://repo.magento.com/archives/magento/module-grouped-product/magento-module-grouped-product-100.4.5.0.zip", + "shasum": "d70bf64e35d023697a13bee7d34e7d6b6c8ea8e8" }, "require": { "magento/framework": "103.0.*", @@ -11876,11 +11918,11 @@ }, { "name": "magento/module-grouped-product-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-product-graph-ql/magento-module-grouped-product-graph-ql-100.4.4.0.zip", - "shasum": "5baed8343dc5e6d32c29939e8596c447b1b295c6" + "url": "https://repo.magento.com/archives/magento/module-grouped-product-graph-ql/magento-module-grouped-product-graph-ql-100.4.5.0.zip", + "shasum": "3485298a82d7aa23bcae3ecd12d980569420b44d" }, "require": { "magento/framework": "103.0.*", @@ -11906,11 +11948,11 @@ }, { "name": "magento/module-grouped-product-staging", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-product-staging/magento-module-grouped-product-staging-100.4.2.0.zip", - "shasum": "ab68381a08fe3968229183eaab0261ec7b0f86d0" + "url": "https://repo.magento.com/archives/magento/module-grouped-product-staging/magento-module-grouped-product-staging-100.4.3.0.zip", + "shasum": "600e25fcce702281db62bd4e92b9d507f4b8d4fc" }, "require": { "lib-libxml": "*", @@ -11941,17 +11983,17 @@ }, { "name": "magento/module-grouped-requisition-list", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-requisition-list/magento-module-grouped-requisition-list-100.3.3.0.zip", - "shasum": "b0a5ddad6778444362650017ccea7d2e718b95ca" + "url": "https://repo.magento.com/archives/magento/module-grouped-requisition-list/magento-module-grouped-requisition-list-100.3.4.0.zip", + "shasum": "454a5aedd7dac2c19cdf642306deae7d0686e6bb" }, "require": { - "magento/framework": "103.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-grouped-product": "100.4.4", - "magento/module-requisition-list": "100.3.3", + "magento/framework": "103.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-grouped-product": "100.4.5", + "magento/module-requisition-list": "100.3.4", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -11970,21 +12012,21 @@ }, { "name": "magento/module-grouped-shared-catalog", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-shared-catalog/magento-module-grouped-shared-catalog-100.3.3.0.zip", - "shasum": "b96d9c81b0f9f834eb7d785e56ec2afdeeaf8e3f" + "url": "https://repo.magento.com/archives/magento/module-grouped-shared-catalog/magento-module-grouped-shared-catalog-100.3.4.0.zip", + "shasum": "8e291c54ab71d07ee6722436066ff41c4f1def3d" }, "require": { - "magento/framework": "103.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-shared-catalog": "100.3.3", - "magento/module-ui": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-shared-catalog": "100.3.4", + "magento/module-ui": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-grouped-product": "100.4.4" + "magento/module-grouped-product": "100.4.5" }, "type": "magento2-module", "autoload": { @@ -12002,11 +12044,11 @@ }, { "name": "magento/module-import-export", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-import-export/magento-module-import-export-101.0.4.0.zip", - "shasum": "3087bdbb3e5e28efa45f1fd7b7e0b347480d2225" + "url": "https://repo.magento.com/archives/magento/module-import-export/magento-module-import-export-101.0.5.0.zip", + "shasum": "d83b1dd4c0dac78116eb9c750c3ce0e50a5bd514" }, "require": { "ext-ctype": "*", @@ -12036,11 +12078,11 @@ }, { "name": "magento/module-indexer", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-indexer/magento-module-indexer-100.4.4.0.zip", - "shasum": "d5fd2a2d9db69e8f9901b9b84059fc7b50a003f3" + "url": "https://repo.magento.com/archives/magento/module-indexer/magento-module-indexer-100.4.5.0.zip", + "shasum": "6b16b0e77c9b562b93a6489dacc3602726f0f970" }, "require": { "magento/framework": "103.0.*", @@ -12064,11 +12106,11 @@ }, { "name": "magento/module-instant-purchase", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-instant-purchase/magento-module-instant-purchase-100.4.3.0.zip", - "shasum": "f17aa3a22a310898ccb7003a032b2cacbac191aa" + "url": "https://repo.magento.com/archives/magento/module-instant-purchase/magento-module-instant-purchase-100.4.4.0.zip", + "shasum": "04849d6cf80a8755c9382ec4c2c68a5b84cafed9" }, "require": { "magento/framework": "103.0.*", @@ -12098,11 +12140,11 @@ }, { "name": "magento/module-integration", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-integration/magento-module-integration-100.4.4.0.zip", - "shasum": "9822538189688906a2a4805b9d29c50823305517" + "url": "https://repo.magento.com/archives/magento/module-integration/magento-module-integration-100.4.5.0.zip", + "shasum": "9128a75504ec75ae3f6c9eb241e47cd59ca0a79a" }, "require": { "magento/framework": "103.0.*", @@ -12132,11 +12174,11 @@ }, { "name": "magento/module-inventory", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory/magento-module-inventory-1.2.2.0.zip", - "shasum": "4bb63e6907c1c2e72bf3e45ad1bb2e2093e05fdb" + "url": "https://repo.magento.com/archives/magento/module-inventory/magento-module-inventory-1.2.3.0.zip", + "shasum": "95762911d52281f6f2c83bc4a1d4a424c7e9c8e4" }, "require": { "magento/framework": "*", @@ -12160,11 +12202,11 @@ }, { "name": "magento/module-inventory-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-admin-ui/magento-module-inventory-admin-ui-1.2.2.0.zip", - "shasum": "53b93bfad430202fb849e88c8b5c29bdb87a4c23" + "url": "https://repo.magento.com/archives/magento/module-inventory-admin-ui/magento-module-inventory-admin-ui-1.2.3.0.zip", + "shasum": "5a3570a7c41ace3ce43e008b08a12d3a963b994c" }, "require": { "magento/framework": "*", @@ -12193,11 +12235,11 @@ }, { "name": "magento/module-inventory-advanced-checkout", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-advanced-checkout/magento-module-inventory-advanced-checkout-1.2.1.0.zip", - "shasum": "9933ec6f37431cdf3434ef124ea3c1c2c3e010ab" + "url": "https://repo.magento.com/archives/magento/module-inventory-advanced-checkout/magento-module-inventory-advanced-checkout-1.2.2.0.zip", + "shasum": "7a97a63c8df73993061a8245152ff8ab1d1efc1f" }, "require": { "magento/framework": "*", @@ -12226,11 +12268,11 @@ }, { "name": "magento/module-inventory-api", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-api/magento-module-inventory-api-1.2.2.0.zip", - "shasum": "8b3187fe488715330e995fa9f5c30113c3e7a205" + "url": "https://repo.magento.com/archives/magento/module-inventory-api/magento-module-inventory-api-1.2.3.0.zip", + "shasum": "1c18de713cfd76017feab2fd3dcfbf98ed06d23f" }, "require": { "magento/framework": "*", @@ -12284,11 +12326,11 @@ }, { "name": "magento/module-inventory-bundle-product", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product/magento-module-inventory-bundle-product-1.2.1.0.zip", - "shasum": "ee029870f26635a42c7b02890ca14c063e692068" + "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product/magento-module-inventory-bundle-product-1.2.2.0.zip", + "shasum": "a59d6856469b947d34060eaf607d3883812705dc" }, "require": { "magento/framework": "*", @@ -12302,7 +12344,8 @@ "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-catalog-inventory": "*" + "magento/module-catalog-inventory": "*", + "magento/module-inventory": "1.2.*" }, "type": "magento2-module", "autoload": { @@ -12356,11 +12399,11 @@ }, { "name": "magento/module-inventory-bundle-product-indexer", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product-indexer/magento-module-inventory-bundle-product-indexer-1.1.1.0.zip", - "shasum": "b0c37d374a497e79ce5a3c8330ead9c5fdfff7d6" + "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product-indexer/magento-module-inventory-bundle-product-indexer-1.1.2.0.zip", + "shasum": "c31b980f56a832a8ca4ddd3c0e0a4c9265ef8756" }, "require": { "magento/framework": "*", @@ -12368,7 +12411,7 @@ "magento/module-catalog": "*", "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -12392,16 +12435,16 @@ }, { "name": "magento/module-inventory-cache", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-cache/magento-module-inventory-cache-1.2.2.0.zip", - "shasum": "6fdc88f3b63bba2518f70c8bc034f01d1b6c45f0" + "url": "https://repo.magento.com/archives/magento/module-inventory-cache/magento-module-inventory-cache-1.2.3.0.zip", + "shasum": "c706f5eddf9e17263d547285cde654213ab14ed8" }, "require": { "magento/framework": "*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "php": "~7.4.0||~8.1.0" }, "suggest": { @@ -12424,11 +12467,11 @@ }, { "name": "magento/module-inventory-catalog", - "version": "1.2.2", + "version": "1.3.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog/magento-module-inventory-catalog-1.2.2.0.zip", - "shasum": "03a80e7330a5cc9b8148980bc787aff5c4df8774" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog/magento-module-inventory-catalog-1.3.0.0.zip", + "shasum": "bd8a6f795fdeb474199f6c3de5c753999f5b06d8" }, "require": { "magento/framework": "*", @@ -12439,7 +12482,7 @@ "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration": "1.2.*", "magento/module-inventory-configuration-api": "1.2.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -12464,11 +12507,11 @@ }, { "name": "magento/module-inventory-catalog-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-admin-ui/magento-module-inventory-catalog-admin-ui-1.2.2.0.zip", - "shasum": "0e03dd0e3970d3d6a98710036fa8d56739da696d" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-admin-ui/magento-module-inventory-catalog-admin-ui-1.2.3.0.zip", + "shasum": "3f58ba52984b657f01bd920cd63f54b25b0476c6" }, "require": { "magento/framework": "*", @@ -12479,7 +12522,7 @@ "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-ui": "*", "php": "~7.4.0||~8.1.0" }, @@ -12503,11 +12546,11 @@ }, { "name": "magento/module-inventory-catalog-api", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-api/magento-module-inventory-catalog-api-1.3.2.0.zip", - "shasum": "67f67ac031d060bc8879b65f39da8d125a66a1f7" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-api/magento-module-inventory-catalog-api-1.3.3.0.zip", + "shasum": "aa8bcc447d6990a1d85c6984d0f8c5093c26d057" }, "require": { "magento/framework": "*", @@ -12563,18 +12606,18 @@ }, { "name": "magento/module-inventory-catalog-search", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-search/magento-module-inventory-catalog-search-1.2.2.0.zip", - "shasum": "253ea183349fd502a5f171562515978856d6deee" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-search/magento-module-inventory-catalog-search-1.2.3.0.zip", + "shasum": "745e2b237b9165ccdf7699eee7667f8630657a26" }, "require": { "magento/framework": "*", "magento/module-catalog-inventory": "*", "magento/module-catalog-search": "*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -12658,19 +12701,21 @@ }, { "name": "magento/module-inventory-configurable-product", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product/magento-module-inventory-configurable-product-1.2.2.0.zip", - "shasum": "ad8eb9c6e97ec76dfa0009a097212acf962b1399" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product/magento-module-inventory-configurable-product-1.2.3.0.zip", + "shasum": "80834ce90b323094f7e5bd087670fae139f37f4e" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", "magento/module-catalog-inventory": "*", "magento/module-configurable-product": "*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-configuration": "1.2.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-sales": "*", "magento/module-store": "*", @@ -12697,11 +12742,11 @@ }, { "name": "magento/module-inventory-configurable-product-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-admin-ui/magento-module-inventory-configurable-product-admin-ui-1.2.2.0.zip", - "shasum": "2ba385af6decc80a58b5a4fd933d821378a266c2" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-admin-ui/magento-module-inventory-configurable-product-admin-ui-1.2.3.0.zip", + "shasum": "3b4778a054792c0b8a0a6d26800c6826ceb2b30f" }, "require": { "magento/framework": "*", @@ -12729,11 +12774,11 @@ }, { "name": "magento/module-inventory-configurable-product-frontend-ui", - "version": "1.0.2", + "version": "1.0.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-frontend-ui/magento-module-inventory-configurable-product-frontend-ui-1.0.2.0.zip", - "shasum": "c70203555cd7197a3d805eeef836e14f10624856" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-frontend-ui/magento-module-inventory-configurable-product-frontend-ui-1.0.3.0.zip", + "shasum": "d0d3fa89eaa7b634a767b2844a13340239f8e457" }, "require": { "magento/framework": "*", @@ -12743,7 +12788,7 @@ "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-configurable-product": "1.2.*" }, "type": "magento2-module", @@ -12763,18 +12808,18 @@ }, { "name": "magento/module-inventory-configurable-product-indexer", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-indexer/magento-module-inventory-configurable-product-indexer-1.2.2.0.zip", - "shasum": "5b446a185e3df420f8c1743a27a4fdbebe188780" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-indexer/magento-module-inventory-configurable-product-indexer-1.2.3.0.zip", + "shasum": "53830f28064354070f57b5789efbbf9693cbb0f8" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -12943,18 +12988,18 @@ }, { "name": "magento/module-inventory-elasticsearch", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-elasticsearch/magento-module-inventory-elasticsearch-1.2.1.0.zip", - "shasum": "23d8198b76b2a623e7d0bb862e5d74d5ccb64bbc" + "url": "https://repo.magento.com/archives/magento/module-inventory-elasticsearch/magento-module-inventory-elasticsearch-1.2.2.0.zip", + "shasum": "bd5c9005fd40928b783d41cae1bef66324624d9a" }, "require": { "magento/framework": "*", "magento/module-catalog-inventory": "*", "magento/module-catalog-search": "*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -12976,11 +13021,11 @@ }, { "name": "magento/module-inventory-export-stock", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-export-stock/magento-module-inventory-export-stock-1.2.1.0.zip", - "shasum": "fad446b29c587b59488a0802a61625445f443106" + "url": "https://repo.magento.com/archives/magento/module-inventory-export-stock/magento-module-inventory-export-stock-1.2.2.0.zip", + "shasum": "fc59b1eb23bbf38d0b146deec03818a05dfb45f9" }, "require": { "magento/framework": "*", @@ -12992,8 +13037,8 @@ "magento/module-inventory-configuration": "1.2.*", "magento/module-inventory-configuration-api": "1.2.*", "magento/module-inventory-export-stock-api": "1.2.*", - "magento/module-inventory-indexer": "2.1.*", - "magento/module-inventory-sales": "1.2.*", + "magento/module-inventory-indexer": "2.2.*", + "magento/module-inventory-sales": "1.3.*", "magento/module-inventory-sales-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -13042,16 +13087,16 @@ }, { "name": "magento/module-inventory-graph-ql", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-graph-ql/magento-module-inventory-graph-ql-1.2.1.0.zip", - "shasum": "2ea1ee7d52365e6f8cf5dae709bbffa8b9b986ac" + "url": "https://repo.magento.com/archives/magento/module-inventory-graph-ql/magento-module-inventory-graph-ql-1.2.2.0.zip", + "shasum": "13fe79e0a209e8f4b8802f376f7ed5c78033c9ea" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*", "magento/module-inventory-sales-api": "1.2.*", "php": "~7.4.0||~8.1.0" @@ -13073,11 +13118,11 @@ }, { "name": "magento/module-inventory-grouped-product", - "version": "1.2.2", + "version": "1.3.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product/magento-module-inventory-grouped-product-1.2.2.0.zip", - "shasum": "14428f762e93a2a67f5602aafdeaf2f51a1d2bad" + "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product/magento-module-inventory-grouped-product-1.3.0.0.zip", + "shasum": "adc82ef5c6200042e435c3e02a1ac5fd1eddfaea" }, "require": { "magento/framework": "*", @@ -13085,7 +13130,9 @@ "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory": "1.2.*", + "magento/module-inventory-api": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*" }, @@ -13142,11 +13189,11 @@ }, { "name": "magento/module-inventory-grouped-product-indexer", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product-indexer/magento-module-inventory-grouped-product-indexer-1.2.2.0.zip", - "shasum": "b832f6c85e65bf0bacbb98e0930c5a9ff076a85b" + "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product-indexer/magento-module-inventory-grouped-product-indexer-1.2.3.0.zip", + "shasum": "5c59f02bc9c546d5ea951bca28d47a476375b576" }, "require": { "magento/framework": "*", @@ -13154,7 +13201,7 @@ "magento/module-grouped-product": "*", "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -13178,11 +13225,11 @@ }, { "name": "magento/module-inventory-import-export", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-import-export/magento-module-inventory-import-export-1.2.2.0.zip", - "shasum": "6b0908f2762854d758f25cd9013d132f48824c95" + "url": "https://repo.magento.com/archives/magento/module-inventory-import-export/magento-module-inventory-import-export-1.2.3.0.zip", + "shasum": "4da076d2b7f17b0f2e3cb7f177ba4f29a04e451e" }, "require": { "magento/framework": "*", @@ -13250,11 +13297,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-admin-ui", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-admin-ui/magento-module-inventory-in-store-pickup-admin-ui-1.1.1.0.zip", - "shasum": "42178b7dc79541c756781455cbf5f02c007ea124" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-admin-ui/magento-module-inventory-in-store-pickup-admin-ui-1.1.2.0.zip", + "shasum": "90ccb79901dac65e512ccf7c108db13dc85b8e86" }, "require": { "magento/framework": "*", @@ -13310,11 +13357,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-frontend", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-frontend/magento-module-inventory-in-store-pickup-frontend-1.1.2.0.zip", - "shasum": "24ac803405f8ea0332b9513b1ae30e36db2c61cd" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-frontend/magento-module-inventory-in-store-pickup-frontend-1.1.3.0.zip", + "shasum": "74656159bd3ce588f5753293d1f3727d4a11efcb" }, "require": { "magento/framework": "*", @@ -13342,11 +13389,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-graph-ql", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-graph-ql/magento-module-inventory-in-store-pickup-graph-ql-1.1.1.0.zip", - "shasum": "3d05dbd9393d1a8b6dfe369629df073a78168492" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-graph-ql/magento-module-inventory-in-store-pickup-graph-ql-1.1.2.0.zip", + "shasum": "0070833a277daace18e32a0a56221c52fedc1085" }, "require": { "magento/framework": "*", @@ -13498,11 +13545,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-sales-admin-ui", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-sales-admin-ui/magento-module-inventory-in-store-pickup-sales-admin-ui-1.1.2.0.zip", - "shasum": "ab15da29b0f01e44450db535ed0937f083c5f23b" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-sales-admin-ui/magento-module-inventory-in-store-pickup-sales-admin-ui-1.1.3.0.zip", + "shasum": "b743a3b50262cdf785894d7b2b30373e7edec095" }, "require": { "magento/framework": "*", @@ -13561,11 +13608,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-shipping", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-shipping/magento-module-inventory-in-store-pickup-shipping-1.1.1.0.zip", - "shasum": "44e46745848b85a67a64603366e63867c066fb51" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-shipping/magento-module-inventory-in-store-pickup-shipping-1.1.2.0.zip", + "shasum": "55e273b1c4c562da7253f7aba4ef989558ba6dd0" }, "require": { "magento/framework": "*", @@ -13683,11 +13730,11 @@ }, { "name": "magento/module-inventory-indexer", - "version": "2.1.2", + "version": "2.2.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-indexer/magento-module-inventory-indexer-2.1.2.0.zip", - "shasum": "ecbaa18d6186081218c80f3f3c72cecbf9566d74" + "url": "https://repo.magento.com/archives/magento/module-inventory-indexer/magento-module-inventory-indexer-2.2.0.0.zip", + "shasum": "a75708ded25fa8487eaf492e856eec0208dd55d3" }, "require": { "magento/framework": "*", @@ -13697,7 +13744,7 @@ "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", - "magento/module-inventory-sales": "1.2.*", + "magento/module-inventory-sales": "1.3.*", "magento/module-inventory-sales-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -13721,11 +13768,11 @@ }, { "name": "magento/module-inventory-low-quantity-notification", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification/magento-module-inventory-low-quantity-notification-1.2.1.0.zip", - "shasum": "5833d1a793883ce4ae78eb48774fd645537c6340" + "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification/magento-module-inventory-low-quantity-notification-1.2.2.0.zip", + "shasum": "70af3497ec61d7f65a4184bc0819397823b60e7e" }, "require": { "magento/framework": "*", @@ -13793,11 +13840,11 @@ }, { "name": "magento/module-inventory-low-quantity-notification-api", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification-api/magento-module-inventory-low-quantity-notification-api-1.2.1.0.zip", - "shasum": "0fb0e01c229aef5e7069616bd03b1577d7f9937d" + "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification-api/magento-module-inventory-low-quantity-notification-api-1.2.2.0.zip", + "shasum": "76c5cb447576246350587be50778b97d2ececece" }, "require": { "magento/framework": "*", @@ -13883,15 +13930,15 @@ }, { "name": "magento/module-inventory-quote-graph-ql", - "version": "1.0.1", + "version": "1.0.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-quote-graph-ql/magento-module-inventory-quote-graph-ql-1.0.1.0.zip", - "shasum": "4f270910188389f21166a19aafd568693c4e6791" + "url": "https://repo.magento.com/archives/magento/module-inventory-quote-graph-ql/magento-module-inventory-quote-graph-ql-1.0.2.0.zip", + "shasum": "353666ad869e094f0c5369b845852db9fea1488b" }, "require": { "magento/framework": "*", - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-quote": "*", "magento/module-quote-graph-ql": "*", @@ -13914,11 +13961,11 @@ }, { "name": "magento/module-inventory-requisition-list", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-requisition-list/magento-module-inventory-requisition-list-1.2.2.0.zip", - "shasum": "1aae798848ceceab7d59d0d057c2da81a4541ac6" + "url": "https://repo.magento.com/archives/magento/module-inventory-requisition-list/magento-module-inventory-requisition-list-1.2.3.0.zip", + "shasum": "b9f6581f60cfb4249f1a3270d5ae32eaffacf821" }, "require": { "magento/framework": "*", @@ -14033,11 +14080,11 @@ }, { "name": "magento/module-inventory-sales", - "version": "1.2.2", + "version": "1.3.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-sales/magento-module-inventory-sales-1.2.2.0.zip", - "shasum": "f2fd9ab2b4cbdb982b7ce467c1a6a4323dd5715a" + "url": "https://repo.magento.com/archives/magento/module-inventory-sales/magento-module-inventory-sales-1.3.0.0.zip", + "shasum": "abd02e8c8e9f5dc6c008f11b33d6e09c7d7739c0" }, "require": { "magento/framework": "*", @@ -14060,7 +14107,7 @@ "magento/module-inventory-indexer": "*" }, "suggest": { - "magento/module-inventory-catalog": "1.2.*" + "magento/module-inventory-catalog": "1.3.*" }, "type": "magento2-module", "autoload": { @@ -14079,11 +14126,11 @@ }, { "name": "magento/module-inventory-sales-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-sales-admin-ui/magento-module-inventory-sales-admin-ui-1.2.2.0.zip", - "shasum": "e2f5cc0489661885f7c1199bfe3068de83024c99" + "url": "https://repo.magento.com/archives/magento/module-inventory-sales-admin-ui/magento-module-inventory-sales-admin-ui-1.2.3.0.zip", + "shasum": "d30ef3bc7f23e8041961d4bd5e435520ddcef448" }, "require": { "magento/framework": "*", @@ -14119,11 +14166,11 @@ }, { "name": "magento/module-inventory-sales-api", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-sales-api/magento-module-inventory-sales-api-1.2.1.0.zip", - "shasum": "d2e6bd3c5528b313d8c9de95f350a983a6373c05" + "url": "https://repo.magento.com/archives/magento/module-inventory-sales-api/magento-module-inventory-sales-api-1.2.2.0.zip", + "shasum": "467ab9d52944df86b9fdd5fba0f90880e51e7389" }, "require": { "magento/framework": "*", @@ -14241,11 +14288,11 @@ }, { "name": "magento/module-inventory-shipping-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-shipping-admin-ui/magento-module-inventory-shipping-admin-ui-1.2.2.0.zip", - "shasum": "d71a3e7987e4208f961de4a5c58a18bd5f2c4e7c" + "url": "https://repo.magento.com/archives/magento/module-inventory-shipping-admin-ui/magento-module-inventory-shipping-admin-ui-1.2.3.0.zip", + "shasum": "c2ac5ede4b57a3867e16d6b902d6bc009c3b8c58" }, "require": { "magento/framework": "*", @@ -14336,11 +14383,11 @@ }, { "name": "magento/module-inventory-source-selection-api", - "version": "1.4.1", + "version": "1.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-source-selection-api/magento-module-inventory-source-selection-api-1.4.1.0.zip", - "shasum": "ad89e01a9be6b34ff55b7e58c724df6859444592" + "url": "https://repo.magento.com/archives/magento/module-inventory-source-selection-api/magento-module-inventory-source-selection-api-1.4.2.0.zip", + "shasum": "a75b7cbad48bd870065ab223025d1db4c8bdb557" }, "require": { "magento/framework": "*", @@ -14398,18 +14445,18 @@ }, { "name": "magento/module-inventory-visual-merchandiser", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-visual-merchandiser/magento-module-inventory-visual-merchandiser-1.1.2.0.zip", - "shasum": "d01ca2ece52c64d24f55933fe433be59b5aa8d7a" + "url": "https://repo.magento.com/archives/magento/module-inventory-visual-merchandiser/magento-module-inventory-visual-merchandiser-1.1.3.0.zip", + "shasum": "e4b58f90e087e3ee5c942180e077562386e8c596" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", "magento/module-inventory": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -14438,11 +14485,11 @@ }, { "name": "magento/module-inventory-wishlist", - "version": "1.0.1", + "version": "1.0.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-wishlist/magento-module-inventory-wishlist-1.0.1.0.zip", - "shasum": "f77fa1a0164fe29b63fd1f8c86a54badd68b499f" + "url": "https://repo.magento.com/archives/magento/module-inventory-wishlist/magento-module-inventory-wishlist-1.0.2.0.zip", + "shasum": "41c2b5a4a914dddeb3167f6d473edde45ef6d1e4" }, "require": { "magento/framework": "*", @@ -14469,11 +14516,11 @@ }, { "name": "magento/module-invitation", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-invitation/magento-module-invitation-100.4.3.0.zip", - "shasum": "e96514df29191e45958bb87e094afce8b76785a7" + "url": "https://repo.magento.com/archives/magento/module-invitation/magento-module-invitation-100.4.4.0.zip", + "shasum": "9ae623c03c5d75b66062baab25721b2399c9b83d" }, "require": { "magento/framework": "103.0.*", @@ -14564,11 +14611,11 @@ }, { "name": "magento/module-layered-navigation", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-layered-navigation/magento-module-layered-navigation-100.4.4.0.zip", - "shasum": "2bf329a8c208a400b6dfb6915c01277caf363463" + "url": "https://repo.magento.com/archives/magento/module-layered-navigation/magento-module-layered-navigation-100.4.5.0.zip", + "shasum": "041332d2eba4f0e72e4411c75fa57ebab90681ef" }, "require": { "magento/framework": "103.0.*", @@ -14622,11 +14669,11 @@ }, { "name": "magento/module-logging", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-logging/magento-module-logging-101.2.4.0.zip", - "shasum": "99e66ccaf0d6abbed298f97e40c5d24a0f246cf6" + "url": "https://repo.magento.com/archives/magento/module-logging/magento-module-logging-101.2.5.0.zip", + "shasum": "82ca25a904a20926e28847ebc5a797e306b7259f" }, "require": { "magento/framework": "103.0.*", @@ -14656,11 +14703,11 @@ }, { "name": "magento/module-login-as-customer", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer/magento-module-login-as-customer-100.4.4.0.zip", - "shasum": "114ae73b8319f3173d14c2796c0b18d8c863a9e3" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer/magento-module-login-as-customer-100.4.5.0.zip", + "shasum": "1376e771612b41176ca91a05631335db0f75f20b" }, "require": { "magento/framework": "103.0.*", @@ -14689,11 +14736,11 @@ }, { "name": "magento/module-login-as-customer-admin-ui", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-admin-ui/magento-module-login-as-customer-admin-ui-100.4.4.0.zip", - "shasum": "8ab74540c0109c756148aa0ba329c0f05a12a16a" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-admin-ui/magento-module-login-as-customer-admin-ui-100.4.5.0.zip", + "shasum": "4e86c5f465e7cd9fe3f54c93d0c97a621fa82453" }, "require": { "magento/framework": "103.0.*", @@ -14724,11 +14771,11 @@ }, { "name": "magento/module-login-as-customer-api", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-api/magento-module-login-as-customer-api-100.4.3.0.zip", - "shasum": "74b923b14a6912c1b0b887912171c520f030ff81" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-api/magento-module-login-as-customer-api-100.4.4.0.zip", + "shasum": "c0f84e01b3d0bdc3af53ecc7f5d58d504dd5fdcb" }, "require": { "magento/framework": "103.0.*", @@ -14751,11 +14798,11 @@ }, { "name": "magento/module-login-as-customer-assistance", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-assistance/magento-module-login-as-customer-assistance-100.4.3.0.zip", - "shasum": "af4e2a7066621f1109c01c4b1f48efbaf2c8fcc3" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-assistance/magento-module-login-as-customer-assistance-100.4.4.0.zip", + "shasum": "9b046099d5486eab457c61fa4a38550eccad7fc1" }, "require": { "magento/framework": "103.0.*", @@ -14815,11 +14862,11 @@ }, { "name": "magento/module-login-as-customer-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-graph-ql/magento-module-login-as-customer-graph-ql-100.4.1.0.zip", - "shasum": "1f573808b1bf2c486f28a1a1d83ded398bcaeb60" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-graph-ql/magento-module-login-as-customer-graph-ql-100.4.2.0.zip", + "shasum": "1528b2b3c62fb996a616efcf04473151e6cb89e0" }, "require": { "magento/framework": "103.0.*", @@ -14884,11 +14931,11 @@ }, { "name": "magento/module-login-as-customer-logging", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-logging/magento-module-login-as-customer-logging-100.4.4.0.zip", - "shasum": "d5de725112ee832fe7ba98f6321bd8b7910119cb" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-logging/magento-module-login-as-customer-logging-100.4.5.0.zip", + "shasum": "cb1b8249f62a06952e50afca44712836b908e805" }, "require": { "magento/framework": "103.0.*", @@ -15101,11 +15148,11 @@ }, { "name": "magento/module-media-content-api", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-content-api/magento-module-media-content-api-100.4.3.0.zip", - "shasum": "7bafa26cbd67a38d77a787543072d7c2bb2c64fa" + "url": "https://repo.magento.com/archives/magento/module-media-content-api/magento-module-media-content-api-100.4.4.0.zip", + "shasum": "e235e273fc88a016d1bd3bb81d50002eb092b6de" }, "require": { "magento/framework": "103.0.*", @@ -15219,11 +15266,11 @@ }, { "name": "magento/module-media-content-synchronization", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization/magento-module-media-content-synchronization-100.4.3.0.zip", - "shasum": "a6f821d4a57165d3b5a267b5f25dd2ec1074df3f" + "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization/magento-module-media-content-synchronization-100.4.4.0.zip", + "shasum": "f5235ec268cb902322e6ba1befe6dfa6960859b5" }, "require": { "magento/framework": "103.0.*", @@ -15253,11 +15300,11 @@ }, { "name": "magento/module-media-content-synchronization-api", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization-api/magento-module-media-content-synchronization-api-100.4.2.0.zip", - "shasum": "a8f633156abd62b341ccbd1a0881257310edc0cd" + "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization-api/magento-module-media-content-synchronization-api-100.4.3.0.zip", + "shasum": "55cab31f4c51604df8f417aa21e4314b45707ff8" }, "require": { "magento/framework": "103.0.*", @@ -15341,11 +15388,11 @@ }, { "name": "magento/module-media-gallery", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery/magento-module-media-gallery-100.4.3.0.zip", - "shasum": "8b8dc16349ba001dece052df1a95fc2e7056e2cf" + "url": "https://repo.magento.com/archives/magento/module-media-gallery/magento-module-media-gallery-100.4.4.0.zip", + "shasum": "a8c451eeaf64b4ee2ad79f23702982e9ae9f74d8" }, "require": { "magento/framework": "103.0.*", @@ -15370,11 +15417,11 @@ }, { "name": "magento/module-media-gallery-api", - "version": "101.0.3", + "version": "101.0.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-api/magento-module-media-gallery-api-101.0.3.0.zip", - "shasum": "f04cb38b143a96c0bbeadb29eff877e455163ac8" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-api/magento-module-media-gallery-api-101.0.4.0.zip", + "shasum": "8eefc82cff3278c0c04b295c71c8c689bd790d8c" }, "require": { "magento/framework": "103.0.*", @@ -15521,11 +15568,11 @@ }, { "name": "magento/module-media-gallery-integration", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-integration/magento-module-media-gallery-integration-100.4.3.0.zip", - "shasum": "a97ced3f07c725026d37211a8f1e5a7818ce5be4" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-integration/magento-module-media-gallery-integration-100.4.4.0.zip", + "shasum": "e3aa33bb7297034c6a59bc8fa6a836b35af70201" }, "require": { "magento/framework": "103.0.*", @@ -15559,11 +15606,11 @@ }, { "name": "magento/module-media-gallery-metadata", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata/magento-module-media-gallery-metadata-100.4.2.0.zip", - "shasum": "dc0ec2fe025be985e2e5016797b267b5546874b9" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata/magento-module-media-gallery-metadata-100.4.3.0.zip", + "shasum": "b8d1b916247a3ab2a73d5112ce7a38b4834c7474" }, "require": { "magento/framework": "103.0.*", @@ -15587,11 +15634,11 @@ }, { "name": "magento/module-media-gallery-metadata-api", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata-api/magento-module-media-gallery-metadata-api-100.4.1.0.zip", - "shasum": "da3051194151ab4e66cce1be05c61eee6bb15ec5" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata-api/magento-module-media-gallery-metadata-api-100.4.2.0.zip", + "shasum": "a167dd435a3c6aadbf4ea436bb88ad7392a02be1" }, "require": { "magento/framework": "103.0.*", @@ -15614,11 +15661,11 @@ }, { "name": "magento/module-media-gallery-renditions", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions/magento-module-media-gallery-renditions-100.4.2.0.zip", - "shasum": "82ffa1e7db6aa2fbdd5d329cf243ed343e131366" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions/magento-module-media-gallery-renditions-100.4.3.0.zip", + "shasum": "d3c9da3d4bda169f9b687595281b056cc0db5020" }, "require": { "magento/framework": "103.0.*", @@ -15648,11 +15695,11 @@ }, { "name": "magento/module-media-gallery-renditions-api", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions-api/magento-module-media-gallery-renditions-api-100.4.1.0.zip", - "shasum": "8c1e522c1e4de823877d1a2a13552dc1fe945ffb" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions-api/magento-module-media-gallery-renditions-api-100.4.2.0.zip", + "shasum": "c684de95cd58a68a5ded32ab1d54bc840eda078a" }, "require": { "magento/framework": "103.0.*", @@ -15675,11 +15722,11 @@ }, { "name": "magento/module-media-gallery-synchronization", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization/magento-module-media-gallery-synchronization-100.4.3.0.zip", - "shasum": "df985d270669d11f4acd77960cc48bea568cf313" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization/magento-module-media-gallery-synchronization-100.4.4.0.zip", + "shasum": "02578232663d1a7637f2d8c08ef49ae6421c449d" }, "require": { "magento/framework": "103.0.*", @@ -15705,11 +15752,11 @@ }, { "name": "magento/module-media-gallery-synchronization-api", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization-api/magento-module-media-gallery-synchronization-api-100.4.2.0.zip", - "shasum": "f87dc814bd9c921dfedd5b123c4dee573afc94cc" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization-api/magento-module-media-gallery-synchronization-api-100.4.3.0.zip", + "shasum": "be6d4f82a76fcc39db835401e2e9bd332ce78266" }, "require": { "magento/framework": "103.0.*", @@ -15763,11 +15810,11 @@ }, { "name": "magento/module-media-gallery-ui", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui/magento-module-media-gallery-ui-100.4.3.0.zip", - "shasum": "a3fd101844ef89b5dfef2d4fe4cb8ee534a3a419" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui/magento-module-media-gallery-ui-100.4.4.0.zip", + "shasum": "66c54e0b853754f695253a23286a88c4bce8fd82" }, "require": { "magento/framework": "103.0.*", @@ -15801,11 +15848,11 @@ }, { "name": "magento/module-media-gallery-ui-api", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui-api/magento-module-media-gallery-ui-api-100.4.2.0.zip", - "shasum": "904fe7463a82ef25832080bc373c6df78710e7bf" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui-api/magento-module-media-gallery-ui-api-100.4.3.0.zip", + "shasum": "eb813d47915354b0f5a3ad49381d5f55658d0f6c" }, "require": { "magento/framework": "103.0.*", @@ -15831,11 +15878,11 @@ }, { "name": "magento/module-media-storage", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-storage/magento-module-media-storage-100.4.3.0.zip", - "shasum": "d6d7bda754468621063b5b238fc3e84079cae0ee" + "url": "https://repo.magento.com/archives/magento/module-media-storage/magento-module-media-storage-100.4.4.0.zip", + "shasum": "6e3b469674fe41e8f8bd36b296908734028fd45b" }, "require": { "magento/framework": "103.0.*", @@ -15866,11 +15913,11 @@ }, { "name": "magento/module-message-queue", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-message-queue/magento-module-message-queue-100.4.4.0.zip", - "shasum": "35d67930b7773bafde64bb33c6a4a798f75dc48f" + "url": "https://repo.magento.com/archives/magento/module-message-queue/magento-module-message-queue-100.4.5.0.zip", + "shasum": "c22f018c65c4699bd606f1f8997f914d13886cf1" }, "require": { "magento/framework": "103.0.*", @@ -15895,11 +15942,11 @@ }, { "name": "magento/module-msrp", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-msrp/magento-module-msrp-100.4.3.0.zip", - "shasum": "5e15e57618e975581e0096857d1624d0f6d5a010" + "url": "https://repo.magento.com/archives/magento/module-msrp/magento-module-msrp-100.4.4.0.zip", + "shasum": "bd055d354e6ac6d952af52deb3b4cffd58f20b26" }, "require": { "magento/framework": "103.0.*", @@ -15991,11 +16038,11 @@ }, { "name": "magento/module-msrp-staging", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-msrp-staging/magento-module-msrp-staging-100.4.2.0.zip", - "shasum": "630b84dff9cc07532e2712a491aebc5d387e1825" + "url": "https://repo.magento.com/archives/magento/module-msrp-staging/magento-module-msrp-staging-100.4.3.0.zip", + "shasum": "29ca00d1f0345498052d8df88c77664c64d923a2" }, "require": { "lib-libxml": "*", @@ -16023,11 +16070,11 @@ }, { "name": "magento/module-multiple-wishlist", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-multiple-wishlist/magento-module-multiple-wishlist-100.4.4.0.zip", - "shasum": "fef80378740e6183b1af3c492fa392cfcca8b8ac" + "url": "https://repo.magento.com/archives/magento/module-multiple-wishlist/magento-module-multiple-wishlist-100.4.5.0.zip", + "shasum": "4683536cd5537aa5a7caea553db8f687ed2d6e91" }, "require": { "magento/framework": "103.0.*", @@ -16093,11 +16140,11 @@ }, { "name": "magento/module-multishipping", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-multishipping/magento-module-multishipping-100.4.4.0.zip", - "shasum": "541ef110683b9377bd76f6db4fc8627f881c76e0" + "url": "https://repo.magento.com/archives/magento/module-multishipping/magento-module-multishipping-100.4.5.0.zip", + "shasum": "86c08ce0688695d8f4dba94a98c96a11a725f19d" }, "require": { "magento/framework": "103.0.*", @@ -16130,11 +16177,11 @@ }, { "name": "magento/module-mysql-mq", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-mysql-mq/magento-module-mysql-mq-100.4.2.0.zip", - "shasum": "5cad1edddead40f38e51f8446f1eac4e51f097dc" + "url": "https://repo.magento.com/archives/magento/module-mysql-mq/magento-module-mysql-mq-100.4.3.0.zip", + "shasum": "244ce82923f4b37efc9da06bda19dc194280ecab" }, "require": { "magento/framework": "103.0.*", @@ -16160,49 +16207,50 @@ }, { "name": "magento/module-negotiable-quote", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-negotiable-quote/magento-module-negotiable-quote-100.3.3.0.zip", - "shasum": "5ff7c9183cfaa9d1d2630e2887ab55d2af461dcb" + "url": "https://repo.magento.com/archives/magento/module-negotiable-quote/magento-module-negotiable-quote-100.3.4.0.zip", + "shasum": "41fbedbbca03f860e2d9691e6400968a95b45f09" }, "require": { - "magento/framework": "103.0.4", + "laminas/laminas-json": "^3.3.0", + "magento/framework": "103.0.5", "magento/framework-bulk": "101.0.1", - "magento/framework-message-queue": "100.4.4", - "magento/module-advanced-checkout": "100.4.4", - "magento/module-asynchronous-operations": "100.4.4", - "magento/module-authorization": "100.4.4", - "magento/module-backend": "102.0.4", - "magento/module-bundle": "101.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-catalog-inventory": "100.4.4", - "magento/module-checkout": "100.4.4", - "magento/module-company": "101.1.3", - "magento/module-config": "101.2.4", - "magento/module-configurable-product": "100.4.4", - "magento/module-customer": "103.0.4", - "magento/module-directory": "100.4.4", - "magento/module-downloadable": "100.4.4", - "magento/module-gift-card": "101.3.4", - "magento/module-gift-card-account": "101.2.4", - "magento/module-grouped-product": "100.4.4", - "magento/module-integration": "100.4.4", - "magento/module-msrp": "100.4.3", - "magento/module-quote": "101.2.4", - "magento/module-sales": "103.0.4", - "magento/module-sales-rule": "101.2.4", - "magento/module-store": "101.1.4", - "magento/module-tax": "100.4.4", - "magento/module-theme": "101.1.4", - "magento/module-ui": "101.2.4", - "magento/module-user": "101.2.4", + "magento/framework-message-queue": "100.4.5", + "magento/module-advanced-checkout": "100.4.5", + "magento/module-asynchronous-operations": "100.4.5", + "magento/module-authorization": "100.4.5", + "magento/module-backend": "102.0.5", + "magento/module-bundle": "101.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-catalog-inventory": "100.4.5", + "magento/module-checkout": "100.4.5", + "magento/module-company": "101.1.4", + "magento/module-config": "101.2.5", + "magento/module-configurable-product": "100.4.5", + "magento/module-customer": "103.0.5", + "magento/module-directory": "100.4.5", + "magento/module-downloadable": "100.4.5", + "magento/module-gift-card": "101.3.5", + "magento/module-gift-card-account": "101.2.5", + "magento/module-grouped-product": "100.4.5", + "magento/module-integration": "100.4.5", + "magento/module-msrp": "100.4.4", + "magento/module-quote": "101.2.5", + "magento/module-sales": "103.0.5", + "magento/module-sales-rule": "101.2.5", + "magento/module-store": "101.1.5", + "magento/module-tax": "100.4.5", + "magento/module-theme": "101.1.5", + "magento/module-ui": "101.2.5", + "magento/module-user": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-checkout-agreements": "100.4.3", - "magento/module-scalable-checkout": "100.4.3", - "magento/module-shared-catalog": "100.3.3" + "magento/module-checkout-agreements": "100.4.4", + "magento/module-scalable-checkout": "100.4.4", + "magento/module-shared-catalog": "100.3.4" }, "type": "magento2-module", "autoload": { @@ -16220,22 +16268,22 @@ }, { "name": "magento/module-negotiable-quote-async-order", - "version": "1.3.0", + "version": "1.3.1", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-negotiable-quote-async-order/magento-module-negotiable-quote-async-order-1.3.0.0.zip", - "shasum": "648014bf05a8418a7fa44357a708f3552d67105b" + "url": "https://repo.magento.com/archives/magento/module-negotiable-quote-async-order/magento-module-negotiable-quote-async-order-1.3.1.0.zip", + "shasum": "56dd6cdb36bbff312dea245b2b629e068e605337" }, "require": { - "magento/framework": "103.0.4", - "magento/module-async-order": "100.4.0", - "magento/module-negotiable-quote": "100.3.3", - "magento/module-quote": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-async-order": "100.4.1", + "magento/module-negotiable-quote": "100.3.4", + "magento/module-quote": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-checkout-staging": "100.4.3", - "magento/module-payment": "100.4.4" + "magento/module-checkout-staging": "100.4.4", + "magento/module-payment": "100.4.5" }, "type": "magento2-module", "autoload": { @@ -16253,31 +16301,31 @@ }, { "name": "magento/module-negotiable-quote-graph-ql", - "version": "1.3.1", + "version": "1.3.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-negotiable-quote-graph-ql/magento-module-negotiable-quote-graph-ql-1.3.1.0.zip", - "shasum": "db32499d75af471d66ba59640757d73e665d296b" + "url": "https://repo.magento.com/archives/magento/module-negotiable-quote-graph-ql/magento-module-negotiable-quote-graph-ql-1.3.2.0.zip", + "shasum": "2c5c83a046221a5912daa5d4137a5c1463e9bedc" }, "require": { - "magento/framework": "103.0.4", - "magento/module-authorization": "100.4.4", - "magento/module-catalog-graph-ql": "100.4.4", - "magento/module-checkout": "100.4.4", - "magento/module-company": "101.1.3", - "magento/module-customer": "103.0.4", - "magento/module-graph-ql": "100.4.4", - "magento/module-negotiable-quote": "100.3.3", - "magento/module-quote": "101.2.4", - "magento/module-quote-graph-ql": "100.4.4", - "magento/module-sales": "103.0.4", - "magento/module-store": "101.1.4", - "magento/module-tax": "100.4.4", + "magento/framework": "103.0.5", + "magento/module-authorization": "100.4.5", + "magento/module-catalog-graph-ql": "100.4.5", + "magento/module-checkout": "100.4.5", + "magento/module-company": "101.1.4", + "magento/module-customer": "103.0.5", + "magento/module-graph-ql": "100.4.5", + "magento/module-negotiable-quote": "100.3.4", + "magento/module-quote": "101.2.5", + "magento/module-quote-graph-ql": "100.4.5", + "magento/module-sales": "103.0.5", + "magento/module-store": "101.1.5", + "magento/module-tax": "100.4.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-catalog-inventory-graph-ql": "100.4.1", - "magento/module-graph-ql": "100.4.4", + "magento/module-catalog-inventory-graph-ql": "100.4.2", + "magento/module-graph-ql": "100.4.5", "magento/module-payment-graph-ql": "100.4.0" }, "type": "magento2-module", @@ -16297,25 +16345,25 @@ }, { "name": "magento/module-negotiable-quote-shared-catalog", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-negotiable-quote-shared-catalog/magento-module-negotiable-quote-shared-catalog-100.3.3.0.zip", - "shasum": "f71116dfaffbd314001ea7e6d5c2831d3e5a301a" + "url": "https://repo.magento.com/archives/magento/module-negotiable-quote-shared-catalog/magento-module-negotiable-quote-shared-catalog-100.3.4.0.zip", + "shasum": "3ca65c143b75706cad966bc5d1012cf253754ac5" }, "require": { - "magento/framework": "103.0.4", - "magento/module-backend": "102.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-company": "101.1.3", - "magento/module-negotiable-quote": "100.3.3", - "magento/module-quote": "101.2.4", - "magento/module-shared-catalog": "100.3.3", - "magento/module-store": "101.1.4", + "magento/framework": "103.0.5", + "magento/module-backend": "102.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-company": "101.1.4", + "magento/module-negotiable-quote": "100.3.4", + "magento/module-quote": "101.2.5", + "magento/module-shared-catalog": "100.3.4", + "magento/module-store": "101.1.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-customer": "103.0.4" + "magento/module-customer": "103.0.5" }, "type": "magento2-module", "autoload": { @@ -16333,19 +16381,19 @@ }, { "name": "magento/module-negotiable-quote-weee", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-negotiable-quote-weee/magento-module-negotiable-quote-weee-100.3.3.0.zip", - "shasum": "ab0ad6588114461ef65727e9cfed9100bc45bc51" + "url": "https://repo.magento.com/archives/magento/module-negotiable-quote-weee/magento-module-negotiable-quote-weee-100.3.4.0.zip", + "shasum": "6894f5b68c0ce1b1f9cad4b20d8e4551669bad8d" }, "require": { - "magento/framework": "103.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-negotiable-quote": "100.3.3", - "magento/module-quote": "101.2.4", - "magento/module-tax": "100.4.4", - "magento/module-weee": "100.4.4", + "magento/framework": "103.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-negotiable-quote": "100.3.4", + "magento/module-quote": "101.2.5", + "magento/module-tax": "100.4.5", + "magento/module-weee": "100.4.5", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -16364,11 +16412,11 @@ }, { "name": "magento/module-new-relic-reporting", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-new-relic-reporting/magento-module-new-relic-reporting-100.4.2.0.zip", - "shasum": "fee191801653dd71f556f3f7b93ff132b403610f" + "url": "https://repo.magento.com/archives/magento/module-new-relic-reporting/magento-module-new-relic-reporting-100.4.3.0.zip", + "shasum": "8bd8d00d689cb7cc2203ae0e6f3aab77c5f81496" }, "require": { "magento/framework": "103.0.*", @@ -16398,11 +16446,11 @@ }, { "name": "magento/module-newsletter", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-newsletter/magento-module-newsletter-100.4.4.0.zip", - "shasum": "cf43af43a4d0f074c640c1f9b25fe0305fe736b5" + "url": "https://repo.magento.com/archives/magento/module-newsletter/magento-module-newsletter-100.4.5.0.zip", + "shasum": "fb7c42f608275e4c6a234287edb5a89f1c9a2d58" }, "require": { "magento/framework": "103.0.*", @@ -16434,11 +16482,11 @@ }, { "name": "magento/module-newsletter-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-newsletter-graph-ql/magento-module-newsletter-graph-ql-100.4.1.0.zip", - "shasum": "9625fab7c5320b8f3f0f7affc4646e99a6951ad9" + "url": "https://repo.magento.com/archives/magento/module-newsletter-graph-ql/magento-module-newsletter-graph-ql-100.4.2.0.zip", + "shasum": "570aed7c33d87714a1b812e5316d9903ba865ae4" }, "require": { "magento/framework": "103.0.*", @@ -16500,11 +16548,11 @@ }, { "name": "magento/module-offline-shipping", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-offline-shipping/magento-module-offline-shipping-100.4.3.0.zip", - "shasum": "9435b928d6833e745e801137b35a397cbb41a01f" + "url": "https://repo.magento.com/archives/magento/module-offline-shipping/magento-module-offline-shipping-100.4.4.0.zip", + "shasum": "02167bd6af953e852803fe11b4b79bb799e8a9ee" }, "require": { "magento/framework": "103.0.*", @@ -16540,19 +16588,19 @@ }, { "name": "magento/module-order-history-search", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-order-history-search/magento-module-order-history-search-100.3.3.0.zip", - "shasum": "4bf7af7d1218d3bb5ed39f09ab5b7dbfff1f37d1" + "url": "https://repo.magento.com/archives/magento/module-order-history-search/magento-module-order-history-search-100.3.4.0.zip", + "shasum": "8b729479f3ad6f91ad248df7dcdfb12e5cdd4eb6" }, "require": { - "magento/framework": "103.0.4", - "magento/module-company": "101.1.3", - "magento/module-customer": "103.0.4", - "magento/module-sales": "103.0.4", - "magento/module-store": "101.1.4", - "magento/module-theme": "101.1.4", + "magento/framework": "103.0.5", + "magento/module-company": "101.1.4", + "magento/module-customer": "103.0.5", + "magento/module-sales": "103.0.5", + "magento/module-store": "101.1.5", + "magento/module-theme": "101.1.5", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -16572,11 +16620,11 @@ }, { "name": "magento/module-page-builder", - "version": "2.2.2", + "version": "2.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-page-builder/magento-module-page-builder-2.2.2.0.zip", - "shasum": "21f3d7f30d83795c1920308acb3e936e7666b876" + "url": "https://repo.magento.com/archives/magento/module-page-builder/magento-module-page-builder-2.2.3.0.zip", + "shasum": "5e754e262ebaa46dc7f08cd258c5e3b9a8b3487b" }, "require": { "magento/framework": "103.0.*", @@ -16711,15 +16759,16 @@ }, { "name": "magento/module-page-cache", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-page-cache/magento-module-page-cache-100.4.4.0.zip", - "shasum": "86488eb5329f143529d35dfbb6a8108e471d8198" + "url": "https://repo.magento.com/archives/magento/module-page-cache/magento-module-page-cache-100.4.5.0.zip", + "shasum": "b6c3ab1dad0318b147d8a722d994e8241e2681a8" }, "require": { "magento/framework": "103.0.*", "magento/module-backend": "102.0.*", + "magento/module-catalog": "104.0.*", "magento/module-config": "101.2.*", "magento/module-store": "101.1.*", "php": "~7.4.0||~8.1.0" @@ -16741,11 +16790,11 @@ }, { "name": "magento/module-payment", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-payment/magento-module-payment-100.4.4.0.zip", - "shasum": "ba16255ab4a4e232de422128c83fb3817ea4aea0" + "url": "https://repo.magento.com/archives/magento/module-payment/magento-module-payment-100.4.5.0.zip", + "shasum": "1729b982a9c1ce9419459e06991ed8d63b4af6cc" }, "require": { "magento/framework": "103.0.*", @@ -16839,11 +16888,11 @@ }, { "name": "magento/module-paypal", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-paypal/magento-module-paypal-101.0.4.0.zip", - "shasum": "29225b4cbce7895c709a96682390126e99ab0f86" + "url": "https://repo.magento.com/archives/magento/module-paypal/magento-module-paypal-101.0.5.0.zip", + "shasum": "71c9e4667fd9eda0f2e2f87c987a65c60044221c" }, "require": { "lib-libxml": "*", @@ -16920,11 +16969,11 @@ }, { "name": "magento/module-paypal-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-paypal-graph-ql/magento-module-paypal-graph-ql-100.4.2.0.zip", - "shasum": "c21161b1a9343876979f10855968b906d196253c" + "url": "https://repo.magento.com/archives/magento/module-paypal-graph-ql/magento-module-paypal-graph-ql-100.4.3.0.zip", + "shasum": "4d59ba2805e7540fda1f6e5979145d9fce0a5cb6" }, "require": { "magento/framework": "103.0.*", @@ -16959,22 +17008,22 @@ }, { "name": "magento/module-paypal-negotiable-quote", - "version": "1.3.1", + "version": "1.3.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-paypal-negotiable-quote/magento-module-paypal-negotiable-quote-1.3.1.0.zip", - "shasum": "b00f7035fb363aadd29896df3dab49a13f614791" + "url": "https://repo.magento.com/archives/magento/module-paypal-negotiable-quote/magento-module-paypal-negotiable-quote-1.3.2.0.zip", + "shasum": "9d228557f9163f579b0454ddb218e9e655c8e6b7" }, "require": { - "magento/framework": "103.0.4", - "magento/module-checkout": "100.4.4", - "magento/module-negotiable-quote": "100.3.3", - "magento/module-quote": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-checkout": "100.4.5", + "magento/module-negotiable-quote": "100.3.4", + "magento/module-quote": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-payment": "100.4.4", - "magento/module-paypal": "101.0.4" + "magento/module-payment": "100.4.5", + "magento/module-paypal": "101.0.5" }, "type": "magento2-module", "autoload": { @@ -16993,20 +17042,20 @@ }, { "name": "magento/module-paypal-purchase-order", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-paypal-purchase-order/magento-module-paypal-purchase-order-1.3.2.0.zip", - "shasum": "bc9da8baf81ccfb239adf74fa3ffb6ad093bcb8a" + "url": "https://repo.magento.com/archives/magento/module-paypal-purchase-order/magento-module-paypal-purchase-order-1.3.3.0.zip", + "shasum": "aace331d3183a515b3dcf17ed21555701de3a905" }, "require": { - "magento/framework": "103.0.4", - "magento/module-checkout": "100.4.4", - "magento/module-purchase-order": "100.3.3", + "magento/framework": "103.0.5", + "magento/module-checkout": "100.4.5", + "magento/module-purchase-order": "100.3.4", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-paypal": "101.0.4" + "magento/module-paypal": "101.0.5" }, "type": "magento2-module", "autoload": { @@ -17025,11 +17074,11 @@ }, { "name": "magento/module-persistent", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-persistent/magento-module-persistent-100.4.4.0.zip", - "shasum": "062dab52db6a05bcb25875dfddf1054760878bf5" + "url": "https://repo.magento.com/archives/magento/module-persistent/magento-module-persistent-100.4.5.0.zip", + "shasum": "950b3b9856f49aa0c5e8b6eef0e41cd231a74896" }, "require": { "magento/framework": "103.0.*", @@ -17134,11 +17183,11 @@ }, { "name": "magento/module-product-alert", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-product-alert/magento-module-product-alert-100.4.3.0.zip", - "shasum": "4d6c67208028fdb74bcc1bde4336ae70b2246d9e" + "url": "https://repo.magento.com/archives/magento/module-product-alert/magento-module-product-alert-100.4.4.0.zip", + "shasum": "d46bb9bd950e11d3d012a44d1a3602858559b2f4" }, "require": { "magento/framework": "103.0.*", @@ -17172,11 +17221,11 @@ }, { "name": "magento/module-product-video", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-product-video/magento-module-product-video-100.4.4.0.zip", - "shasum": "9d3518be12de9631c1faf916966222b05cfd3951" + "url": "https://repo.magento.com/archives/magento/module-product-video/magento-module-product-video-100.4.5.0.zip", + "shasum": "2f9b406f585e479cb2da5a90cc5467a6e429fd9d" }, "require": { "magento/framework": "103.0.*", @@ -17190,7 +17239,8 @@ }, "suggest": { "magento/module-config": "101.2.*", - "magento/module-customer": "103.0.*" + "magento/module-customer": "103.0.*", + "magento/module-theme": "101.1.*" }, "type": "magento2-module", "autoload": { @@ -17275,37 +17325,37 @@ }, { "name": "magento/module-purchase-order", - "version": "100.3.3", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-purchase-order/magento-module-purchase-order-100.3.3.0.zip", - "shasum": "0bfd3451cb952fb5e46503b293c77edfad9202a5" - }, - "require": { - "magento/framework": "103.0.4", - "magento/framework-message-queue": "100.4.4", - "magento/module-authorization": "100.4.4", - "magento/module-catalog": "104.0.4", - "magento/module-checkout": "100.4.4", - "magento/module-company": "101.1.3", - "magento/module-customer": "103.0.4", - "magento/module-directory": "100.4.4", - "magento/module-gift-card-account": "101.2.4", - "magento/module-msrp": "100.4.3", - "magento/module-negotiable-quote": "100.3.3", - "magento/module-payment": "100.4.4", - "magento/module-quote": "101.2.4", - "magento/module-sales": "103.0.4", + "version": "100.3.4", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-purchase-order/magento-module-purchase-order-100.3.4.0.zip", + "shasum": "c9f72ffd06a322372dedcd0ae479c71dbb0aff91" + }, + "require": { + "magento/framework": "103.0.5", + "magento/framework-message-queue": "100.4.5", + "magento/module-authorization": "100.4.5", + "magento/module-catalog": "104.0.5", + "magento/module-checkout": "100.4.5", + "magento/module-company": "101.1.4", + "magento/module-customer": "103.0.5", + "magento/module-directory": "100.4.5", + "magento/module-gift-card-account": "101.2.5", + "magento/module-msrp": "100.4.4", + "magento/module-negotiable-quote": "100.3.4", + "magento/module-payment": "100.4.5", + "magento/module-quote": "101.2.5", + "magento/module-sales": "103.0.5", "magento/module-sales-sequence": "100.4.2", - "magento/module-store": "101.1.4", - "magento/module-tax": "100.4.4", - "magento/module-theme": "101.1.4", - "magento/module-ui": "101.2.4", + "magento/module-store": "101.1.5", + "magento/module-tax": "100.4.5", + "magento/module-theme": "101.1.5", + "magento/module-ui": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-company-credit": "100.3.3", - "magento/module-sales-rule": "101.2.4" + "magento/module-company-credit": "100.3.4", + "magento/module-sales-rule": "101.2.5" }, "type": "magento2-module", "autoload": { @@ -17324,26 +17374,26 @@ }, { "name": "magento/module-purchase-order-rule", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-purchase-order-rule/magento-module-purchase-order-rule-100.3.3.0.zip", - "shasum": "fbc80462a5444fc66f427be85ecb25f9ea92eafd" + "url": "https://repo.magento.com/archives/magento/module-purchase-order-rule/magento-module-purchase-order-rule-100.3.4.0.zip", + "shasum": "b430872307f052a3d9b3b37fb39d39a068b0a0a9" }, "require": { - "magento/framework": "103.0.4", - "magento/framework-message-queue": "100.4.4", - "magento/module-company": "101.1.3", - "magento/module-customer": "103.0.4", - "magento/module-directory": "100.4.4", - "magento/module-payment": "100.4.4", - "magento/module-purchase-order": "100.3.3", - "magento/module-quote": "101.2.4", - "magento/module-rule": "100.4.3", - "magento/module-sales-rule": "101.2.4", - "magento/module-shipping": "100.4.4", - "magento/module-theme": "101.1.4", - "magento/module-ui": "101.2.4", + "magento/framework": "103.0.5", + "magento/framework-message-queue": "100.4.5", + "magento/module-company": "101.1.4", + "magento/module-customer": "103.0.5", + "magento/module-directory": "100.4.5", + "magento/module-payment": "100.4.5", + "magento/module-purchase-order": "100.3.4", + "magento/module-quote": "101.2.5", + "magento/module-rule": "100.4.4", + "magento/module-sales-rule": "101.2.5", + "magento/module-shipping": "100.4.5", + "magento/module-theme": "101.1.5", + "magento/module-ui": "101.2.5", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -17363,27 +17413,27 @@ }, { "name": "magento/module-quick-order", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-quick-order/magento-module-quick-order-100.3.3.0.zip", - "shasum": "afd0edc3df9687dfe29cb27957a182bef04e4ceb" + "url": "https://repo.magento.com/archives/magento/module-quick-order/magento-module-quick-order-100.3.4.0.zip", + "shasum": "28b036307693e75cdd5a864de5f8ac66aaff7054" }, "require": { - "magento/framework": "103.0.4", - "magento/module-advanced-checkout": "100.4.4", - "magento/module-authorization": "100.4.4", - "magento/module-catalog": "104.0.4", - "magento/module-catalog-inventory": "100.4.4", - "magento/module-catalog-permissions": "100.4.4", - "magento/module-catalog-search": "102.0.4", - "magento/module-customer": "103.0.4", - "magento/module-search": "101.1.4", - "magento/module-store": "101.1.4", + "magento/framework": "103.0.5", + "magento/module-advanced-checkout": "100.4.5", + "magento/module-authorization": "100.4.5", + "magento/module-catalog": "104.0.5", + "magento/module-catalog-inventory": "100.4.5", + "magento/module-catalog-permissions": "100.4.5", + "magento/module-catalog-search": "102.0.5", + "magento/module-customer": "103.0.5", + "magento/module-search": "101.1.5", + "magento/module-store": "101.1.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-config": "101.2.4" + "magento/module-config": "101.2.5" }, "type": "magento2-module", "autoload": { @@ -17401,11 +17451,11 @@ }, { "name": "magento/module-quote", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-quote/magento-module-quote-101.2.4.0.zip", - "shasum": "841d3a277436875eda36913cfc71e8968ac5f79f" + "url": "https://repo.magento.com/archives/magento/module-quote/magento-module-quote-101.2.5.0.zip", + "shasum": "92dafbe73d3b3142724a7664cba3720e97e6afa1" }, "require": { "magento/framework": "103.0.*", @@ -17586,11 +17636,11 @@ }, { "name": "magento/module-quote-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-quote-graph-ql/magento-module-quote-graph-ql-100.4.4.0.zip", - "shasum": "e415b9e084f891e2629e34aec5bdd1c7c1a5433b" + "url": "https://repo.magento.com/archives/magento/module-quote-graph-ql/magento-module-quote-graph-ql-100.4.5.0.zip", + "shasum": "760f3c37cc1cb60701eb17a14c90f7bd135e071f" }, "require": { "magento/framework": "103.0.*", @@ -17629,11 +17679,11 @@ }, { "name": "magento/module-quote-staging", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-quote-staging/magento-module-quote-staging-100.4.1.0.zip", - "shasum": "c77b0050c1f03957b8e220a73920963f1958c3cd" + "url": "https://repo.magento.com/archives/magento/module-quote-staging/magento-module-quote-staging-100.4.2.0.zip", + "shasum": "0fde8e470bd847bd1520ef4cd7294fedf84a8bb9" }, "require": { "magento/framework": "103.0.*", @@ -17721,11 +17771,11 @@ }, { "name": "magento/module-re-captcha-checkout-sales-rule", - "version": "1.1.0", + "version": "1.1.1", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-re-captcha-checkout-sales-rule/magento-module-re-captcha-checkout-sales-rule-1.1.0.0.zip", - "shasum": "325a360dcf9fb05ec64cc751ca43de83bd35a988" + "url": "https://repo.magento.com/archives/magento/module-re-captcha-checkout-sales-rule/magento-module-re-captcha-checkout-sales-rule-1.1.1.0.zip", + "shasum": "681d9b35cd5f9654c2e4f121108af84d54802b7b" }, "require": { "magento/framework": "*", @@ -17816,11 +17866,11 @@ }, { "name": "magento/module-re-captcha-customer", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-re-captcha-customer/magento-module-re-captcha-customer-1.1.2.0.zip", - "shasum": "858ad4b3d639ba7da86d380738da9d42fb6b6a55" + "url": "https://repo.magento.com/archives/magento/module-re-captcha-customer/magento-module-re-captcha-customer-1.1.3.0.zip", + "shasum": "4aacce4909811f75da30401696e5bfa0aaca1c45" }, "require": { "magento/framework": "*", @@ -17846,11 +17896,11 @@ }, { "name": "magento/module-re-captcha-frontend-ui", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-re-captcha-frontend-ui/magento-module-re-captcha-frontend-ui-1.1.2.0.zip", - "shasum": "77e37acce0e38f199e15b123bfa0377c971a311a" + "url": "https://repo.magento.com/archives/magento/module-re-captcha-frontend-ui/magento-module-re-captcha-frontend-ui-1.1.3.0.zip", + "shasum": "478b8b65b2dcdfcda38d065774b69a4ca5603c1f" }, "require": { "magento/framework": "*", @@ -17872,6 +17922,76 @@ ], "description": "Google reCAPTCHA integration for Magento2" }, + { + "name": "magento/module-re-captcha-gift-card", + "version": "1.0.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-re-captcha-gift-card/magento-module-re-captcha-gift-card-1.0.0.0.zip", + "shasum": "13c97d993b06fb572e4b69336db3aa34a5c47fc5" + }, + "require": { + "magento/framework": "*", + "magento/module-checkout": "*", + "magento/module-customer": "*", + "magento/module-gift-card-account": "*", + "magento/module-gift-card-account-graph-ql": "*", + "magento/module-re-captcha-admin-ui": "*", + "magento/module-re-captcha-frontend-ui": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-webapi-api": "*", + "magento/module-re-captcha-webapi-graph-ql": "*", + "magento/module-re-captcha-webapi-rest": "*", + "magento/module-re-captcha-webapi-ui": "*", + "php": "~7.4.0||~8.0.0||~8.1.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaGiftCard\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2 Gift Cards" + }, + { + "name": "magento/module-re-captcha-invitation", + "version": "1.0.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-re-captcha-invitation/magento-module-re-captcha-invitation-1.0.0.0.zip", + "shasum": "64287f9a60d0a7c67ada7225f9c5539ad7022e9e" + }, + "require": { + "magento/framework": "*", + "magento/module-customer": "*", + "magento/module-invitation": "*", + "magento/module-re-captcha-admin-ui": "*", + "magento/module-re-captcha-frontend-ui": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "php": "~7.4.0||~8.0.0||~8.1.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaInvitation\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA for Invitation Module" + }, { "name": "magento/module-re-captcha-migration", "version": "1.1.2", @@ -17899,6 +18019,33 @@ ], "description": "Google reCAPTCHA config migration for Magento2" }, + { + "name": "magento/module-re-captcha-multiple-wishlist", + "version": "1.0.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-re-captcha-multiple-wishlist/magento-module-re-captcha-multiple-wishlist-1.0.0.0.zip", + "shasum": "8979f3f6683294410b16bfb7e894276d0e659484" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-ui": "*", + "php": "~7.4.0||~8.0.0||~8.1.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaMultipleWishlist\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2" + }, { "name": "magento/module-re-captcha-newsletter", "version": "1.1.2", @@ -18408,11 +18555,11 @@ }, { "name": "magento/module-release-notification", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-release-notification/magento-module-release-notification-100.4.2.0.zip", - "shasum": "56dfc07c4b0f63883a7b673dbb987b40379d9be4" + "url": "https://repo.magento.com/archives/magento/module-release-notification/magento-module-release-notification-100.4.3.0.zip", + "shasum": "cbcfb4e11a3961944e15971be5d76655867502f4" }, "require": { "magento/framework": "103.0.*", @@ -18441,11 +18588,11 @@ }, { "name": "magento/module-reminder", - "version": "101.2.3", + "version": "101.2.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-reminder/magento-module-reminder-101.2.3.0.zip", - "shasum": "6489824452ce8df3ce4b2445383742e91f2bb28f" + "url": "https://repo.magento.com/archives/magento/module-reminder/magento-module-reminder-101.2.4.0.zip", + "shasum": "755c797993d662bba9aedfbc730a72ff8478f5eb" }, "require": { "magento/framework": "103.0.*", @@ -18478,13 +18625,15 @@ }, { "name": "magento/module-remote-storage", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-remote-storage/magento-module-remote-storage-100.4.2.0.zip", - "shasum": "820a8757e558fb1779768a3dcefb7d78953beceb" + "url": "https://repo.magento.com/archives/magento/module-remote-storage/magento-module-remote-storage-100.4.3.0.zip", + "shasum": "3047e17d09a6b74bfff57e33f318f78e91c67622" }, "require": { + "league/flysystem": "~2.4.3", + "league/flysystem-aws-s3-v3": "^2.4.3", "magento/framework": "103.0.*", "php": "~7.4.0||~8.1.0" }, @@ -18551,11 +18700,11 @@ }, { "name": "magento/module-reports", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-reports/magento-module-reports-100.4.4.0.zip", - "shasum": "54cdf7898e9ce88835c70bd98e6bf3768da1c0a8" + "url": "https://repo.magento.com/archives/magento/module-reports/magento-module-reports-100.4.5.0.zip", + "shasum": "f83a31e94a46f6ffdbf2c62d6ec0db87e7ebdd34" }, "require": { "magento/framework": "103.0.*", @@ -18622,33 +18771,33 @@ }, { "name": "magento/module-requisition-list", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-requisition-list/magento-module-requisition-list-100.3.3.0.zip", - "shasum": "71309230d8f593b0c12deda4d3ec7db7ece2aa3b" + "url": "https://repo.magento.com/archives/magento/module-requisition-list/magento-module-requisition-list-100.3.4.0.zip", + "shasum": "59efa5732618f08b19285baf20aaf12818b127db" }, "require": { - "magento/framework": "103.0.4", - "magento/module-authorization": "100.4.4", - "magento/module-backend": "102.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-catalog-inventory": "100.4.4", - "magento/module-checkout": "100.4.4", - "magento/module-configurable-product": "100.4.4", - "magento/module-customer": "103.0.4", - "magento/module-import-export": "101.0.4", - "magento/module-quote": "101.2.4", - "magento/module-sales": "103.0.4", - "magento/module-store": "101.1.4", - "magento/module-tax": "100.4.4", - "magento/module-theme": "101.1.4", - "magento/module-ui": "101.2.4", - "magento/module-wishlist": "101.2.4", + "magento/framework": "103.0.5", + "magento/module-authorization": "100.4.5", + "magento/module-backend": "102.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-catalog-inventory": "100.4.5", + "magento/module-checkout": "100.4.5", + "magento/module-configurable-product": "100.4.5", + "magento/module-customer": "103.0.5", + "magento/module-import-export": "101.0.5", + "magento/module-quote": "101.2.5", + "magento/module-sales": "103.0.5", + "magento/module-store": "101.1.5", + "magento/module-tax": "100.4.5", + "magento/module-theme": "101.1.5", + "magento/module-ui": "101.2.5", + "magento/module-wishlist": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-bundle": "101.0.4" + "magento/module-bundle": "101.0.5" }, "type": "magento2-module", "autoload": { @@ -18666,18 +18815,18 @@ }, { "name": "magento/module-requisition-list-graph-ql", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-requisition-list-graph-ql/magento-module-requisition-list-graph-ql-1.3.2.0.zip", - "shasum": "40b231d7f9820744e4ef5f8ffced8d69da93faae" + "url": "https://repo.magento.com/archives/magento/module-requisition-list-graph-ql/magento-module-requisition-list-graph-ql-1.3.3.0.zip", + "shasum": "05d9117b4c2f4b5667b7c092cc8195ddf87797df" }, "require": { - "magento/framework": "103.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-quote": "101.2.4", - "magento/module-quote-graph-ql": "100.4.4", - "magento/module-requisition-list": "100.3.3", + "magento/framework": "103.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-quote": "101.2.5", + "magento/module-quote-graph-ql": "100.4.5", + "magento/module-requisition-list": "100.3.4", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -18723,11 +18872,11 @@ }, { "name": "magento/module-review", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-review/magento-module-review-100.4.4.0.zip", - "shasum": "54e088ec5c4fb4ca107a01092ddb3a4223ef0c3c" + "url": "https://repo.magento.com/archives/magento/module-review/magento-module-review-100.4.5.0.zip", + "shasum": "70e4692bf3f0da7b5e607f736b32a87e4b5124f2" }, "require": { "magento/framework": "103.0.*", @@ -18858,11 +19007,11 @@ }, { "name": "magento/module-reward", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-reward/magento-module-reward-101.2.4.0.zip", - "shasum": "56ac2c08ae85c4510038fa82a878faaf815a2db7" + "url": "https://repo.magento.com/archives/magento/module-reward/magento-module-reward-101.2.5.0.zip", + "shasum": "0789e5e5ce633d993530844f60215eb51e952eb6" }, "require": { "magento/framework": "103.0.*", @@ -18904,11 +19053,11 @@ }, { "name": "magento/module-reward-graph-ql", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-reward-graph-ql/magento-module-reward-graph-ql-100.4.3.0.zip", - "shasum": "3b363e29178653a5528aff15b91cb7e80206e8dc" + "url": "https://repo.magento.com/archives/magento/module-reward-graph-ql/magento-module-reward-graph-ql-100.4.4.0.zip", + "shasum": "e21df6a41d08df4c9af9f7720e823a77b3fd0261" }, "require": { "magento/framework": "103.0.*", @@ -18972,11 +19121,11 @@ }, { "name": "magento/module-rma", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-rma/magento-module-rma-101.2.4.0.zip", - "shasum": "fb1b7adea348619afa2fc395b796d3844e6f5422" + "url": "https://repo.magento.com/archives/magento/module-rma/magento-module-rma-101.2.5.0.zip", + "shasum": "7439632c89a05794b494221a00e6e75b81e5a48d" }, "require": { "ext-gd": "*", @@ -19023,11 +19172,11 @@ }, { "name": "magento/module-rma-graph-ql", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-rma-graph-ql/magento-module-rma-graph-ql-100.4.3.0.zip", - "shasum": "5ee7a7b0af3ee6219123d04424748fb6d83a09a7" + "url": "https://repo.magento.com/archives/magento/module-rma-graph-ql/magento-module-rma-graph-ql-100.4.4.0.zip", + "shasum": "1317a31b08634dfa06deee4db0cb50e199392dd7" }, "require": { "magento/framework": "103.0.*", @@ -19154,11 +19303,11 @@ }, { "name": "magento/module-rule", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-rule/magento-module-rule-100.4.3.0.zip", - "shasum": "1165df5b96f157a0cc5fad73926fc5385b26d90b" + "url": "https://repo.magento.com/archives/magento/module-rule/magento-module-rule-100.4.4.0.zip", + "shasum": "98fe15231d183581f48dcfe72813705fe3327389" }, "require": { "lib-libxml": "*", @@ -19186,11 +19335,11 @@ }, { "name": "magento/module-sales", - "version": "103.0.4", + "version": "103.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales/magento-module-sales-103.0.4.0.zip", - "shasum": "39837e3d9beab675da50c8cdd6055ca46267414f" + "url": "https://repo.magento.com/archives/magento/module-sales/magento-module-sales-103.0.5.0.zip", + "shasum": "15c3b85e28ec26ce31bb8e45ef6855eed526ab41" }, "require": { "magento/framework": "103.0.*", @@ -19301,11 +19450,11 @@ }, { "name": "magento/module-sales-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales-graph-ql/magento-module-sales-graph-ql-100.4.4.0.zip", - "shasum": "34fff9a44fed763cdd1958fa1a58b04960f62764" + "url": "https://repo.magento.com/archives/magento/module-sales-graph-ql/magento-module-sales-graph-ql-100.4.5.0.zip", + "shasum": "b38fd2a06e289ea121309cb191dcb20d8d427eb5" }, "require": { "magento/framework": "103.0.*", @@ -19335,11 +19484,11 @@ }, { "name": "magento/module-sales-inventory", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales-inventory/magento-module-sales-inventory-100.4.1.0.zip", - "shasum": "8c675f61107484177c9c379b9a17d67644263535" + "url": "https://repo.magento.com/archives/magento/module-sales-inventory/magento-module-sales-inventory-100.4.2.0.zip", + "shasum": "1a7b00a475ebc016a11b32097571cd39cf8a81e9" }, "require": { "magento/framework": "103.0.*", @@ -19366,11 +19515,11 @@ }, { "name": "magento/module-sales-rule", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales-rule/magento-module-sales-rule-101.2.4.0.zip", - "shasum": "988865b771330b426721a225321e54cbe8f4afa6" + "url": "https://repo.magento.com/archives/magento/module-sales-rule/magento-module-sales-rule-101.2.5.0.zip", + "shasum": "0f28d3088948906a11ff089d6bd81eff3dadf5e2" }, "require": { "magento/framework": "103.0.*", @@ -19417,11 +19566,11 @@ }, { "name": "magento/module-sales-rule-staging", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales-rule-staging/magento-module-sales-rule-staging-100.4.3.0.zip", - "shasum": "fc176e0f603e6c7d178b007159ecfcdf6515e028" + "url": "https://repo.magento.com/archives/magento/module-sales-rule-staging/magento-module-sales-rule-staging-100.4.4.0.zip", + "shasum": "16b0764e260b5467154d07437ef41375f7399de1" }, "require": { "magento/framework": "103.0.*", @@ -19481,11 +19630,11 @@ }, { "name": "magento/module-sample-data", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sample-data/magento-module-sample-data-100.4.2.0.zip", - "shasum": "c744e1b02a66aa6366a24d434edcd94caa04c556" + "url": "https://repo.magento.com/archives/magento/module-sample-data/magento-module-sample-data-100.4.3.0.zip", + "shasum": "513b197c79b839c7a2db1239646606dc527f9816" }, "require": { "magento/framework": "103.0.*", @@ -19512,11 +19661,11 @@ }, { "name": "magento/module-scalable-checkout", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-scalable-checkout/magento-module-scalable-checkout-100.4.3.0.zip", - "shasum": "b0d54c39df4d116aec2068e95658d13daa1f29ed" + "url": "https://repo.magento.com/archives/magento/module-scalable-checkout/magento-module-scalable-checkout-100.4.4.0.zip", + "shasum": "158c363c231003c0bd440c0843c124b772b383dc" }, "require": { "magento/framework": "103.0.*", @@ -19546,11 +19695,11 @@ }, { "name": "magento/module-scalable-inventory", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-scalable-inventory/magento-module-scalable-inventory-100.4.2.0.zip", - "shasum": "0dcf49f82d6db48941e6427feaf13fd085bd52ac" + "url": "https://repo.magento.com/archives/magento/module-scalable-inventory/magento-module-scalable-inventory-100.4.3.0.zip", + "shasum": "b18c5e0e75ddbf4917dca3469c9bded346087341" }, "require": { "magento/framework": "103.0.*", @@ -19606,11 +19755,11 @@ }, { "name": "magento/module-scheduled-import-export", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-scheduled-import-export/magento-module-scheduled-import-export-101.2.4.0.zip", - "shasum": "132e73fecbc5aaee00b3c1432a4433ba82b35b9e" + "url": "https://repo.magento.com/archives/magento/module-scheduled-import-export/magento-module-scheduled-import-export-101.2.5.0.zip", + "shasum": "e29db9f662358b5164617042acf861e7da5eef94" }, "require": { "magento/framework": "103.0.*", @@ -19638,11 +19787,11 @@ }, { "name": "magento/module-search", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-search/magento-module-search-101.1.4.0.zip", - "shasum": "3dedc0872f8976e26bb230eed7372498e1459436" + "url": "https://repo.magento.com/archives/magento/module-search/magento-module-search-101.1.5.0.zip", + "shasum": "51a4bddd43f04a866473760721b7f9799abe4bc5" }, "require": { "magento/framework": "103.0.*", @@ -19670,11 +19819,11 @@ }, { "name": "magento/module-search-staging", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-search-staging/magento-module-search-staging-100.4.2.0.zip", - "shasum": "d18e5542a9c8fee3b9122382f301fd5c090e5905" + "url": "https://repo.magento.com/archives/magento/module-search-staging/magento-module-search-staging-100.4.3.0.zip", + "shasum": "2b34c0841f1d4fe4ab00ff76c0cd6bcfb6311113" }, "require": { "lib-libxml": "*", @@ -19699,11 +19848,11 @@ }, { "name": "magento/module-security", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-security/magento-module-security-100.4.4.0.zip", - "shasum": "8dc34acc5886991e372557e64df325bae8ff1e68" + "url": "https://repo.magento.com/archives/magento/module-security/magento-module-security-100.4.5.0.zip", + "shasum": "324e5973bdf16cf28690873edb6b2cf21edefb4f" }, "require": { "magento/framework": "103.0.*", @@ -19831,40 +19980,40 @@ }, { "name": "magento/module-shared-catalog", - "version": "100.3.3", + "version": "100.3.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-shared-catalog/magento-module-shared-catalog-100.3.3.0.zip", - "shasum": "a930332a5e38207e1defaa2619eeaab9e870ae44" + "url": "https://repo.magento.com/archives/magento/module-shared-catalog/magento-module-shared-catalog-100.3.4.0.zip", + "shasum": "2ead47ab50bf9e8ebf58320098bdca537c4d5335" }, "require": { - "magento/framework": "103.0.4", + "magento/framework": "103.0.5", "magento/framework-bulk": "101.0.1", - "magento/framework-message-queue": "100.4.4", - "magento/module-asynchronous-operations": "100.4.4", - "magento/module-authorization": "100.4.4", - "magento/module-b2b": "100.3.3", - "magento/module-backend": "102.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-catalog-permissions": "100.4.4", - "magento/module-company": "101.1.3", - "magento/module-config": "101.2.4", - "magento/module-customer": "103.0.4", - "magento/module-directory": "100.4.4", - "magento/module-eav": "102.1.4", - "magento/module-logging": "101.2.4", - "magento/module-quote": "101.2.4", - "magento/module-store": "101.1.4", - "magento/module-tax": "100.4.4", - "magento/module-ui": "101.2.4", - "magento/module-user": "101.2.4", + "magento/framework-message-queue": "100.4.5", + "magento/module-asynchronous-operations": "100.4.5", + "magento/module-authorization": "100.4.5", + "magento/module-b2b": "100.3.4", + "magento/module-backend": "102.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-catalog-permissions": "100.4.5", + "magento/module-company": "101.1.4", + "magento/module-config": "101.2.5", + "magento/module-customer": "103.0.5", + "magento/module-directory": "100.4.5", + "magento/module-eav": "102.1.5", + "magento/module-logging": "101.2.5", + "magento/module-quote": "101.2.5", + "magento/module-store": "101.1.5", + "magento/module-tax": "100.4.5", + "magento/module-ui": "101.2.5", + "magento/module-user": "101.2.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-advanced-checkout": "100.4.4", - "magento/module-customer-segment": "102.1.4", - "magento/module-downloadable": "100.4.4", - "magento/module-sales-rule": "101.2.4" + "magento/module-advanced-checkout": "100.4.5", + "magento/module-customer-segment": "102.1.5", + "magento/module-downloadable": "100.4.5", + "magento/module-sales-rule": "101.2.5" }, "type": "magento2-module", "autoload": { @@ -19882,24 +20031,24 @@ }, { "name": "magento/module-shared-catalog-graph-ql", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-shared-catalog-graph-ql/magento-module-shared-catalog-graph-ql-1.3.2.0.zip", - "shasum": "dba38951d7457bf4811d99ef0a7a5aaea07701d5" + "url": "https://repo.magento.com/archives/magento/module-shared-catalog-graph-ql/magento-module-shared-catalog-graph-ql-1.3.3.0.zip", + "shasum": "15f8e5948b80f32708b5a7b1eba263f60eeebc42" }, "require": { - "magento/framework": "103.0.4", - "magento/module-catalog": "104.0.4", - "magento/module-catalog-graph-ql": "100.4.4", + "magento/framework": "103.0.5", + "magento/module-catalog": "104.0.5", + "magento/module-catalog-graph-ql": "100.4.5", "magento/module-catalog-permissions-graph-ql": "100.4.3", - "magento/module-graph-ql": "100.4.4", - "magento/module-shared-catalog": "100.3.3", - "magento/module-store": "101.1.4", + "magento/module-graph-ql": "100.4.5", + "magento/module-shared-catalog": "100.3.4", + "magento/module-store": "101.1.5", "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-catalog-graph-ql": "100.4.4" + "magento/module-catalog-graph-ql": "100.4.5" }, "type": "magento2-module", "autoload": { @@ -19918,11 +20067,11 @@ }, { "name": "magento/module-shipping", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-shipping/magento-module-shipping-100.4.4.0.zip", - "shasum": "503a898158ff301be00856671a270ca5dff7bda9" + "url": "https://repo.magento.com/archives/magento/module-shipping/magento-module-shipping-100.4.5.0.zip", + "shasum": "325b2b9f9b77143187698d4a2d815887e6a563f8" }, "require": { "ext-gd": "*", @@ -19964,11 +20113,11 @@ }, { "name": "magento/module-sitemap", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sitemap/magento-module-sitemap-100.4.3.0.zip", - "shasum": "2e62d36fde01d8b78511f2c56e5d50c872fdcfe6" + "url": "https://repo.magento.com/archives/magento/module-sitemap/magento-module-sitemap-100.4.4.0.zip", + "shasum": "88daf14b4c318d32bb142272f0609a9a5aafeeea" }, "require": { "magento/framework": "103.0.*", @@ -20003,16 +20152,18 @@ }, { "name": "magento/module-staging", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-staging/magento-module-staging-101.2.4.0.zip", - "shasum": "973e283ccdee4135e0943e6c1fe61a7a9336377f" + "url": "https://repo.magento.com/archives/magento/module-staging/magento-module-staging-101.2.5.0.zip", + "shasum": "79d58f9eb52cc704d1c51f1e33b3bf2381e37378" }, "require": { "lib-libxml": "*", "magento/framework": "103.0.*", + "magento/framework-bulk": "101.0.*", "magento/magento-composer-installer": "*", + "magento/module-asynchronous-operations": "100.4.*", "magento/module-backend": "102.0.*", "magento/module-require-js": "100.4.*", "magento/module-store": "101.1.*", @@ -20041,11 +20192,11 @@ }, { "name": "magento/module-staging-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-staging-graph-ql/magento-module-staging-graph-ql-100.4.1.0.zip", - "shasum": "a3a9c8337472b23a48abec62c1e1aca98a86bd11" + "url": "https://repo.magento.com/archives/magento/module-staging-graph-ql/magento-module-staging-graph-ql-100.4.2.0.zip", + "shasum": "acc60f9f28d1bfafc80a75b33e9455ec0c8353cf" }, "require": { "magento/framework": "103.0.*", @@ -20070,11 +20221,11 @@ }, { "name": "magento/module-staging-page-builder", - "version": "2.2.2", + "version": "2.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-staging-page-builder/magento-module-staging-page-builder-2.2.2.0.zip", - "shasum": "33a08bba23113c084a60c5884fec9cad7e966c4e" + "url": "https://repo.magento.com/archives/magento/module-staging-page-builder/magento-module-staging-page-builder-2.2.3.0.zip", + "shasum": "7a5786e15109699b3a7d8e055fa80365953bf685" }, "require": { "magento/framework": "*", @@ -20100,11 +20251,11 @@ }, { "name": "magento/module-store", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-store/magento-module-store-101.1.4.0.zip", - "shasum": "5a6b0a8e70e5c11734db21b1e86ee0cf022203ff" + "url": "https://repo.magento.com/archives/magento/module-store/magento-module-store-101.1.5.0.zip", + "shasum": "d1b0806e3abfc83f1d559961c884646b0ed05a19" }, "require": { "magento/framework": "103.0.*", @@ -20168,11 +20319,11 @@ }, { "name": "magento/module-support", - "version": "101.2.3", + "version": "101.2.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-support/magento-module-support-101.2.3.0.zip", - "shasum": "da73765bc25acffb75deabd3d62838a3f8215a2c" + "url": "https://repo.magento.com/archives/magento/module-support/magento-module-support-101.2.4.0.zip", + "shasum": "72142d6a3c1da89d24568791287f27207f6d4981" }, "require": { "lib-libxml": "*", @@ -20215,11 +20366,11 @@ }, { "name": "magento/module-swagger", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-swagger/magento-module-swagger-100.4.3.0.zip", - "shasum": "15fc18a594860c2afe91185c498a47a27c644679" + "url": "https://repo.magento.com/archives/magento/module-swagger/magento-module-swagger-100.4.4.0.zip", + "shasum": "12effdc034ed2d0ea15db474fcfb36342747712b" }, "require": { "magento/framework": "103.0.*", @@ -20301,11 +20452,11 @@ }, { "name": "magento/module-swat", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-swat/magento-module-swat-100.4.2.0.zip", - "shasum": "421095a2f676712e065a1d97717d32fd64a006ae" + "url": "https://repo.magento.com/archives/magento/module-swat/magento-module-swat-100.4.3.0.zip", + "shasum": "8065cfe642c15e5f87e8548f009401b39b2c8eae" }, "require": { "magento/framework": "103.0.*", @@ -20329,11 +20480,11 @@ }, { "name": "magento/module-swatches", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-swatches/magento-module-swatches-100.4.4.0.zip", - "shasum": "d2f16565e5f5cbecd8fe92da60f4f09745a37d78" + "url": "https://repo.magento.com/archives/magento/module-swatches/magento-module-swatches-100.4.5.0.zip", + "shasum": "f789c22ee41334d072d6caaac88ad3e7734ebccf" }, "require": { "magento/framework": "103.0.*", @@ -20431,11 +20582,11 @@ }, { "name": "magento/module-target-rule", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-target-rule/magento-module-target-rule-101.2.4.0.zip", - "shasum": "3a853109521d866f3ab6b4ad8bcba811df4d614f" + "url": "https://repo.magento.com/archives/magento/module-target-rule/magento-module-target-rule-101.2.5.0.zip", + "shasum": "35d097a6be5ddea88874601976011171bb29828a" }, "require": { "magento/framework": "103.0.*", @@ -20472,11 +20623,11 @@ }, { "name": "magento/module-target-rule-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-target-rule-graph-ql/magento-module-target-rule-graph-ql-100.4.1.0.zip", - "shasum": "c975f466231a7066d90e08375f410f1e2900aea2" + "url": "https://repo.magento.com/archives/magento/module-target-rule-graph-ql/magento-module-target-rule-graph-ql-100.4.2.0.zip", + "shasum": "7afecc9c872d84338ec9c0e67fdbdce84f22a7b3" }, "require": { "magento/framework": "103.0.*", @@ -20502,11 +20653,11 @@ }, { "name": "magento/module-tax", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-tax/magento-module-tax-100.4.4.0.zip", - "shasum": "a65794f2053094a757a16a33dba14c4588e1d5e1" + "url": "https://repo.magento.com/archives/magento/module-tax/magento-module-tax-100.4.5.0.zip", + "shasum": "3753012abcbffe5ce171a1b0b9d545f56c49f1d3" }, "require": { "magento/framework": "103.0.*", @@ -20609,11 +20760,11 @@ }, { "name": "magento/module-theme", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-theme/magento-module-theme-101.1.4.0.zip", - "shasum": "0d42df06aec2580a16f87d2fb0deaa46fcf64fe3" + "url": "https://repo.magento.com/archives/magento/module-theme/magento-module-theme-101.1.5.0.zip", + "shasum": "ba3c3fbb5755319774bf11d3104b302637bc7dcb" }, "require": { "magento/framework": "103.0.*", @@ -20681,15 +20832,16 @@ }, { "name": "magento/module-translation", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-translation/magento-module-translation-100.4.4.0.zip", - "shasum": "cf12c0a7493629dcf952f7af91a95eb30784f194" + "url": "https://repo.magento.com/archives/magento/module-translation/magento-module-translation-100.4.5.0.zip", + "shasum": "a8ff494922576f2874b66a913f14528f9ee1418b" }, "require": { "magento/framework": "103.0.*", "magento/module-backend": "102.0.*", + "magento/module-deploy": "100.4.*", "magento/module-developer": "100.4.*", "magento/module-store": "101.1.*", "magento/module-theme": "101.1.*", @@ -20715,11 +20867,11 @@ }, { "name": "magento/module-two-factor-auth", - "version": "1.1.3", + "version": "1.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-two-factor-auth/magento-module-two-factor-auth-1.1.3.0.zip", - "shasum": "cfab7bd98fdc8fe161cd2d38b8199ef4201889c3" + "url": "https://repo.magento.com/archives/magento/module-two-factor-auth/magento-module-two-factor-auth-1.1.4.0.zip", + "shasum": "b497c3cc70df873ce6bcfe26e2f101076aa47096" }, "require": { "2tvenom/cborencode": "^1.0", @@ -20727,6 +20879,7 @@ "endroid/qr-code": "^4.3.5", "magento/framework": "*", "magento/magento-composer-installer": "*", + "magento/module-admin-adobe-ims": "*", "magento/module-authorization": "*", "magento/module-backend": "*", "magento/module-config": "*", @@ -20753,11 +20906,11 @@ }, { "name": "magento/module-ui", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-ui/magento-module-ui-101.2.4.0.zip", - "shasum": "285bbc4d9c6241512eaf9dafbf0c1259fefcab03" + "url": "https://repo.magento.com/archives/magento/module-ui/magento-module-ui-101.2.5.0.zip", + "shasum": "7a2f25eba5ec07a4b26bdda98b60fb393f5bfff4" }, "require": { "magento/framework": "103.0.*", @@ -20788,11 +20941,11 @@ }, { "name": "magento/module-ups", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-ups/magento-module-ups-100.4.4.0.zip", - "shasum": "8de4d2736ba82124ccf3fdc10066c991dfef1969" + "url": "https://repo.magento.com/archives/magento/module-ups/magento-module-ups-100.4.5.0.zip", + "shasum": "bb5eac9f59db16a90951109c3baa3bc0f91ad0ae" }, "require": { "magento/framework": "103.0.*", @@ -20825,11 +20978,11 @@ }, { "name": "magento/module-url-rewrite", - "version": "102.0.3", + "version": "102.0.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-url-rewrite/magento-module-url-rewrite-102.0.3.0.zip", - "shasum": "f624555ea5fbb891aacd64901b43b472bd2f8aab" + "url": "https://repo.magento.com/archives/magento/module-url-rewrite/magento-module-url-rewrite-102.0.4.0.zip", + "shasum": "ff14fc9bc2d9153a4ace238d20cd7e3524839a26" }, "require": { "magento/framework": "103.0.*", @@ -20859,11 +21012,11 @@ }, { "name": "magento/module-url-rewrite-graph-ql", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-url-rewrite-graph-ql/magento-module-url-rewrite-graph-ql-100.4.3.0.zip", - "shasum": "6e75f207719672b1f679f885ed1ec9011470d73c" + "url": "https://repo.magento.com/archives/magento/module-url-rewrite-graph-ql/magento-module-url-rewrite-graph-ql-100.4.4.0.zip", + "shasum": "0f9bbcbb7ff349dc5fdf5c2f886dff57441473fd" }, "require": { "magento/framework": "103.0.*", @@ -20890,11 +21043,11 @@ }, { "name": "magento/module-user", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-user/magento-module-user-101.2.4.0.zip", - "shasum": "787d34763f773826e23a9e4d696507e677aff4da" + "url": "https://repo.magento.com/archives/magento/module-user/magento-module-user-101.2.5.0.zip", + "shasum": "7940b349b7adaac56d97b87d85304a28c21d6592" }, "require": { "magento/framework": "103.0.*", @@ -20924,11 +21077,11 @@ }, { "name": "magento/module-usps", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-usps/magento-module-usps-100.4.3.0.zip", - "shasum": "3c07dd84b24d346c5bcf7b62087db872a38d0cec" + "url": "https://repo.magento.com/archives/magento/module-usps/magento-module-usps-100.4.4.0.zip", + "shasum": "c743d1e7e1b9c05b9333c76484a8a835c7a67074" }, "require": { "lib-libxml": "*", @@ -20960,11 +21113,11 @@ }, { "name": "magento/module-variable", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-variable/magento-module-variable-100.4.2.0.zip", - "shasum": "b67c8e4a7e13590bbf6040844ae8e2a189687a8b" + "url": "https://repo.magento.com/archives/magento/module-variable/magento-module-variable-100.4.3.0.zip", + "shasum": "2246cbc8bf2a87ec0a6f2bae77e3b73813b18bb9" }, "require": { "magento/framework": "103.0.*", @@ -20991,11 +21144,11 @@ }, { "name": "magento/module-vault", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-vault/magento-module-vault-101.2.4.0.zip", - "shasum": "bf8b3adda9099c9d1b24e96fae8bdf956a210a75" + "url": "https://repo.magento.com/archives/magento/module-vault/magento-module-vault-101.2.5.0.zip", + "shasum": "ab162c592b0847efb837c19bc334bf605f8154f0" }, "require": { "magento/framework": "103.0.*", @@ -21053,11 +21206,11 @@ }, { "name": "magento/module-version", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-version/magento-module-version-100.4.1.0.zip", - "shasum": "dd01c5e0810fe535c43fc060b7bb738ef12776df" + "url": "https://repo.magento.com/archives/magento/module-version/magento-module-version-100.4.2.0.zip", + "shasum": "d8fde8cf95fcace1d55a97d7b88fe2fdd53856bd" }, "require": { "magento/framework": "103.0.*", @@ -21080,11 +21233,11 @@ }, { "name": "magento/module-versions-cms", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-versions-cms/magento-module-versions-cms-101.2.4.0.zip", - "shasum": "cca7b2127a117774ab0c42c351665e281b003aec" + "url": "https://repo.magento.com/archives/magento/module-versions-cms/magento-module-versions-cms-101.2.5.0.zip", + "shasum": "218a10686bb0d2471003280df811da52750c62a2" }, "require": { "magento/framework": "103.0.*", @@ -21140,14 +21293,16 @@ }, { "name": "magento/module-versions-cms-url-rewrite", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-versions-cms-url-rewrite/magento-module-versions-cms-url-rewrite-100.4.2.0.zip", - "shasum": "a8768d3ce9cfd394033a4fdcba0501f6c528aeb4" + "url": "https://repo.magento.com/archives/magento/module-versions-cms-url-rewrite/magento-module-versions-cms-url-rewrite-100.4.3.0.zip", + "shasum": "bb2e1de27eb58a65d4d458b3985e309ae241ae01" }, "require": { "magento/framework": "103.0.*", + "magento/module-cms": "104.0.*", + "magento/module-cms-url-rewrite": "100.4.*", "magento/module-store": "101.1.*", "magento/module-url-rewrite": "102.0.*", "magento/module-versions-cms": "101.2.*", @@ -21202,11 +21357,11 @@ }, { "name": "magento/module-visual-merchandiser", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-visual-merchandiser/magento-module-visual-merchandiser-100.4.4.0.zip", - "shasum": "f8d8bc804e6f8034be2648064d322b2b058f35cb" + "url": "https://repo.magento.com/archives/magento/module-visual-merchandiser/magento-module-visual-merchandiser-100.4.5.0.zip", + "shasum": "c52c24e92349df8129f23a06b9c488aaf98439e7" }, "require": { "magento/framework": "103.0.*", @@ -21237,11 +21392,11 @@ }, { "name": "magento/module-webapi", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-webapi/magento-module-webapi-100.4.3.0.zip", - "shasum": "626e768a7fe8680dd272f6c0b94eab7c6d50ae86" + "url": "https://repo.magento.com/archives/magento/module-webapi/magento-module-webapi-100.4.4.0.zip", + "shasum": "0d10c69864a2432446b30384b51736d45fb4e392" }, "require": { "magento/framework": "103.0.*", @@ -21272,16 +21427,16 @@ }, { "name": "magento/module-webapi-async", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-webapi-async/magento-module-webapi-async-100.4.2.0.zip", - "shasum": "f81181ab0f8efde42e2dd16d18fc819664f95df7" + "url": "https://repo.magento.com/archives/magento/module-webapi-async/magento-module-webapi-async-100.4.3.0.zip", + "shasum": "3bd32d42f8659697f3748634d9986af9b8cde618" }, "require": { "magento/framework": "103.0.*", - "magento/framework-message-queue": "100.4.*", "magento/module-asynchronous-operations": "100.4.*", + "magento/module-store": "101.1.*", "magento/module-webapi": "100.4.*", "php": "~7.4.0||~8.1.0" }, @@ -21334,11 +21489,11 @@ }, { "name": "magento/module-website-restriction", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-website-restriction/magento-module-website-restriction-100.4.3.0.zip", - "shasum": "678d770bd153b6343905915913b0e31bd48e7351" + "url": "https://repo.magento.com/archives/magento/module-website-restriction/magento-module-website-restriction-100.4.4.0.zip", + "shasum": "3188d7d77a95ada484275871172e30942c4b510b" }, "require": { "magento/framework": "103.0.*", @@ -21366,11 +21521,11 @@ }, { "name": "magento/module-weee", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-weee/magento-module-weee-100.4.4.0.zip", - "shasum": "4fc9597008912ab53ee1106b17d581a4406d0ad8" + "url": "https://repo.magento.com/archives/magento/module-weee/magento-module-weee-100.4.5.0.zip", + "shasum": "5a6f293df6d8207dce4a00a4fef0cbbacc922bbb" }, "require": { "magento/framework": "103.0.*", @@ -21474,11 +21629,11 @@ }, { "name": "magento/module-widget", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-widget/magento-module-widget-101.2.4.0.zip", - "shasum": "b803c2b00d38a63b52c9d0ec45a58043f41d5d02" + "url": "https://repo.magento.com/archives/magento/module-widget/magento-module-widget-101.2.5.0.zip", + "shasum": "eed0cbbc112ec23dada39cc6f1556de69550c2db" }, "require": { "magento/framework": "103.0.*", @@ -21512,11 +21667,11 @@ }, { "name": "magento/module-wishlist", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-wishlist/magento-module-wishlist-101.2.4.0.zip", - "shasum": "5d298143aab4b1abbd2e0618cbdc9a61bbe99f1d" + "url": "https://repo.magento.com/archives/magento/module-wishlist/magento-module-wishlist-101.2.5.0.zip", + "shasum": "f7f5356260017811c073b2ee7058cd862ac6c36b" }, "require": { "magento/framework": "103.0.*", @@ -21644,11 +21799,11 @@ }, { "name": "magento/module-wishlist-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-wishlist-graph-ql/magento-module-wishlist-graph-ql-100.4.4.0.zip", - "shasum": "6cf8bb8bb762b93994a32d62b83ce6ecb9a398e0" + "url": "https://repo.magento.com/archives/magento/module-wishlist-graph-ql/magento-module-wishlist-graph-ql-100.4.5.0.zip", + "shasum": "f89448ee10c35b82e0c7b1a4d293a079cddc3a63" }, "require": { "magento/framework": "103.0.*", @@ -21677,59 +21832,59 @@ }, { "name": "magento/page-builder", - "version": "1.7.1", + "version": "1.7.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/page-builder/magento-page-builder-1.7.1.0.zip", - "shasum": "3d4a0a455399aa51074a0d28a9a2d7ffb5945491" + "url": "https://repo.magento.com/archives/magento/page-builder/magento-page-builder-1.7.2.0.zip", + "shasum": "eca2944e5b85cea6589be86dd5c5ba52eaa70581" }, "require": { - "magento/module-aws-s3-page-builder": "1.0.*", - "magento/module-catalog-page-builder-analytics": "1.6.*", - "magento/module-cms-page-builder-analytics": "1.6.*", - "magento/module-page-builder": "2.2.*", - "magento/module-page-builder-admin-analytics": "1.1.*", - "magento/module-page-builder-analytics": "1.6.*" + "magento/module-aws-s3-page-builder": "1.0.2", + "magento/module-catalog-page-builder-analytics": "1.6.2", + "magento/module-cms-page-builder-analytics": "1.6.2", + "magento/module-page-builder": "2.2.3", + "magento/module-page-builder-admin-analytics": "1.1.2", + "magento/module-page-builder-analytics": "1.6.2" }, "type": "metapackage", "description": "Page Builder metapackage" }, { "name": "magento/page-builder-commerce", - "version": "1.7.1", + "version": "1.7.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/page-builder-commerce/magento-page-builder-commerce-1.7.1.0.zip", - "shasum": "59c25647bf132b9e829aa26f3e6ce7995a263602" + "url": "https://repo.magento.com/archives/magento/page-builder-commerce/magento-page-builder-commerce-1.7.2.0.zip", + "shasum": "4eff75d8e4f94e16f4d2dcb1d8c1e55170d1d7c8" }, "require": { - "magento/module-banner-page-builder": "2.2.*", - "magento/module-banner-page-builder-analytics": "1.7.*", - "magento/module-catalog-page-builder-analytics-staging": "1.7.*", - "magento/module-catalog-staging-page-builder": "1.7.*", - "magento/module-cms-page-builder-analytics-staging": "1.7.*", - "magento/module-page-builder-admin-gws-admin-ui": "1.7.*", - "magento/module-staging-page-builder": "2.2.*", - "magento/page-builder": "1.7.*" + "magento/module-banner-page-builder": "2.2.3", + "magento/module-banner-page-builder-analytics": "1.7.1", + "magento/module-catalog-page-builder-analytics-staging": "1.7.1", + "magento/module-catalog-staging-page-builder": "1.7.1", + "magento/module-cms-page-builder-analytics-staging": "1.7.1", + "magento/module-page-builder-admin-gws-admin-ui": "1.7.1", + "magento/module-staging-page-builder": "2.2.3", + "magento/page-builder": "1.7.2" }, "type": "metapackage", "description": "Page Builder Commerce metapackage" }, { "name": "magento/product-community-edition", - "version": "2.4.4", + "version": "2.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/product-community-edition/magento-product-community-edition-2.4.4.0.zip", - "shasum": "81d3b227819ed523ccbf35d5d6e7dc94556cff12" + "url": "https://repo.magento.com/archives/magento/product-community-edition/magento-product-community-edition-2.4.5.0.zip", + "shasum": "8a95004a1f5cac0b88ca74dfe03749ab033bf218" }, "require": { "colinmollenhour/cache-backend-file": "~1.4.1", "colinmollenhour/cache-backend-redis": "1.14.2", - "colinmollenhour/credis": "1.12.1", + "colinmollenhour/credis": "1.13.0", "colinmollenhour/php-redis-session-abstract": "~1.4.5", - "composer/composer": "^1.9 || ^2.0", - "elasticsearch/elasticsearch": "~7.16.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", + "elasticsearch/elasticsearch": "~7.17.0", "ext-bcmath": "*", "ext-ctype": "*", "ext-curl": "*", @@ -21746,43 +21901,38 @@ "ext-sodium": "*", "ext-xsl": "*", "ext-zip": "*", - "guzzlehttp/guzzle": "^7.3.0", - "laminas/laminas-captcha": "^2.11", + "ezyang/htmlpurifier": "^4.14", + "guzzlehttp/guzzle": "^7.4.2", + "laminas/laminas-captcha": "^2.12", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-db": "^2.13.4", + "laminas/laminas-db": "^2.15.0", "laminas/laminas-dependency-plugin": "^2.2.0", - "laminas/laminas-di": "^3.3.0", - "laminas/laminas-escaper": "~2.9.0", - "laminas/laminas-eventmanager": "^3.4.0", - "laminas/laminas-feed": "^2.15.0", + "laminas/laminas-di": "^3.7.0", + "laminas/laminas-escaper": "~2.10.0", + "laminas/laminas-eventmanager": "^3.5.0", + "laminas/laminas-feed": "^2.17.0", "laminas/laminas-http": "^2.15.0", - "laminas/laminas-json": "^3.3.0", - "laminas/laminas-mail": "^2.15.1", + "laminas/laminas-mail": "^2.16.0", "laminas/laminas-mime": "^2.9.1", "laminas/laminas-modulemanager": "^2.11.0", - "laminas/laminas-mvc": "^3.3.0", - "laminas/laminas-server": "^2.11.0", - "laminas/laminas-servicemanager": "^3.10.0", - "laminas/laminas-session": "^2.12.0", + "laminas/laminas-mvc": "^3.3.3", + "laminas/laminas-servicemanager": "^3.11.0", "laminas/laminas-soap": "^2.10.0", - "laminas/laminas-stdlib": "^3.6.0", - "laminas/laminas-text": "^2.9.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", - "laminas/laminas-view": "~2.14.1", - "league/flysystem": "~2.3.2", - "league/flysystem-aws-s3-v3": "^2.0", + "laminas/laminas-validator": "^2.17.0", + "league/flysystem": "~2.4.5", + "league/flysystem-aws-s3-v3": "^2.4.3", "lib-libxml": "*", - "magento/adobe-ims": "2.1.3", - "magento/adobe-stock-integration": "2.1.3", + "magento/adobe-stock-integration": "2.1.4", "magento/composer": "~1.8.0", "magento/composer-dependency-version-audit-plugin": "~0.1", - "magento/framework": "103.0.4", - "magento/framework-amqp": "100.4.2", + "magento/framework": "103.0.5", + "magento/framework-amqp": "100.4.3", "magento/framework-bulk": "101.0.1", - "magento/framework-message-queue": "100.4.4", + "magento/framework-message-queue": "100.4.5", "magento/google-shopping-ads": "4.0.1", - "magento/inventory-metapackage": "1.2.4", + "magento/inventory-metapackage": "1.2.5", "magento/language-de_de": "100.4.0", "magento/language-en_us": "100.4.0", "magento/language-es_es": "100.4.0", @@ -21791,238 +21941,240 @@ "magento/language-pt_br": "100.4.0", "magento/language-zh_hans_cn": "100.4.0", "magento/magento-composer-installer": ">=0.3.0", - "magento/magento2-base": "2.4.4", + "magento/magento2-base": "2.4.5", + "magento/module-admin-adobe-ims": "100.4.0", "magento/module-admin-analytics": "100.4.4", - "magento/module-admin-notification": "100.4.3", - "magento/module-advanced-pricing-import-export": "100.4.4", - "magento/module-advanced-search": "100.4.2", + "magento/module-admin-notification": "100.4.4", + "magento/module-adobe-ims": "2.1.4", + "magento/module-adobe-ims-api": "2.1.2", + "magento/module-advanced-pricing-import-export": "100.4.5", + "magento/module-advanced-search": "100.4.3", "magento/module-amqp": "100.4.2", - "magento/module-amqp-store": "100.4.2", - "magento/module-analytics": "100.4.4", - "magento/module-asynchronous-operations": "100.4.4", - "magento/module-authorization": "100.4.4", - "magento/module-aws-s3": "100.4.2", - "magento/module-backend": "102.0.4", - "magento/module-backup": "100.4.4", - "magento/module-bundle": "101.0.4", - "magento/module-bundle-graph-ql": "100.4.4", - "magento/module-bundle-import-export": "100.4.3", - "magento/module-cache-invalidate": "100.4.2", - "magento/module-captcha": "100.4.4", - "magento/module-cardinal-commerce": "100.4.2", - "magento/module-catalog": "104.0.4", + "magento/module-analytics": "100.4.5", + "magento/module-asynchronous-operations": "100.4.5", + "magento/module-authorization": "100.4.5", + "magento/module-aws-s3": "100.4.3", + "magento/module-backend": "102.0.5", + "magento/module-backup": "100.4.5", + "magento/module-bundle": "101.0.5", + "magento/module-bundle-graph-ql": "100.4.5", + "magento/module-bundle-import-export": "100.4.4", + "magento/module-cache-invalidate": "100.4.3", + "magento/module-captcha": "100.4.5", + "magento/module-cardinal-commerce": "100.4.3", + "magento/module-catalog": "104.0.5", "magento/module-catalog-analytics": "100.4.2", "magento/module-catalog-cms-graph-ql": "100.4.1", "magento/module-catalog-customer-graph-ql": "100.4.4", - "magento/module-catalog-graph-ql": "100.4.4", - "magento/module-catalog-import-export": "101.1.4", - "magento/module-catalog-inventory": "100.4.4", - "magento/module-catalog-inventory-graph-ql": "100.4.1", - "magento/module-catalog-rule": "101.2.4", - "magento/module-catalog-rule-configurable": "100.4.3", + "magento/module-catalog-graph-ql": "100.4.5", + "magento/module-catalog-import-export": "101.1.5", + "magento/module-catalog-inventory": "100.4.5", + "magento/module-catalog-inventory-graph-ql": "100.4.2", + "magento/module-catalog-rule": "101.2.5", + "magento/module-catalog-rule-configurable": "100.4.4", "magento/module-catalog-rule-graph-ql": "100.4.2", - "magento/module-catalog-search": "102.0.4", - "magento/module-catalog-url-rewrite": "100.4.4", + "magento/module-catalog-search": "102.0.5", + "magento/module-catalog-url-rewrite": "100.4.5", "magento/module-catalog-url-rewrite-graph-ql": "100.4.3", - "magento/module-catalog-widget": "100.4.4", - "magento/module-checkout": "100.4.4", - "magento/module-checkout-agreements": "100.4.3", + "magento/module-catalog-widget": "100.4.5", + "magento/module-checkout": "100.4.5", + "magento/module-checkout-agreements": "100.4.4", "magento/module-checkout-agreements-graph-ql": "100.4.1", - "magento/module-cms": "104.0.4", + "magento/module-cms": "104.0.5", "magento/module-cms-graph-ql": "100.4.2", - "magento/module-cms-url-rewrite": "100.4.3", - "magento/module-cms-url-rewrite-graph-ql": "100.4.2", + "magento/module-cms-url-rewrite": "100.4.4", + "magento/module-cms-url-rewrite-graph-ql": "100.4.3", "magento/module-compare-list-graph-ql": "100.4.1", - "magento/module-config": "101.2.4", - "magento/module-configurable-import-export": "100.4.2", - "magento/module-configurable-product": "100.4.4", - "magento/module-configurable-product-graph-ql": "100.4.4", + "magento/module-config": "101.2.5", + "magento/module-configurable-import-export": "100.4.3", + "magento/module-configurable-product": "100.4.5", + "magento/module-configurable-product-graph-ql": "100.4.5", "magento/module-configurable-product-sales": "100.4.2", "magento/module-contact": "100.4.4", - "magento/module-cookie": "100.4.4", - "magento/module-cron": "100.4.4", - "magento/module-csp": "100.4.3", + "magento/module-cookie": "100.4.5", + "magento/module-cron": "100.4.5", + "magento/module-csp": "100.4.4", "magento/module-currency-symbol": "100.4.3", - "magento/module-customer": "103.0.4", + "magento/module-customer": "103.0.5", "magento/module-customer-analytics": "100.4.2", "magento/module-customer-downloadable-graph-ql": "100.4.1", - "magento/module-customer-graph-ql": "100.4.4", - "magento/module-customer-import-export": "100.4.4", - "magento/module-deploy": "100.4.4", - "magento/module-developer": "100.4.4", - "magento/module-dhl": "100.4.3", - "magento/module-directory": "100.4.4", - "magento/module-directory-graph-ql": "100.4.2", - "magento/module-downloadable": "100.4.4", - "magento/module-downloadable-graph-ql": "100.4.4", - "magento/module-downloadable-import-export": "100.4.3", - "magento/module-eav": "102.1.4", + "magento/module-customer-graph-ql": "100.4.5", + "magento/module-customer-import-export": "100.4.5", + "magento/module-deploy": "100.4.5", + "magento/module-developer": "100.4.5", + "magento/module-dhl": "100.4.4", + "magento/module-directory": "100.4.5", + "magento/module-directory-graph-ql": "100.4.3", + "magento/module-downloadable": "100.4.5", + "magento/module-downloadable-graph-ql": "100.4.5", + "magento/module-downloadable-import-export": "100.4.4", + "magento/module-eav": "102.1.5", "magento/module-eav-graph-ql": "100.4.2", - "magento/module-elasticsearch": "101.0.4", - "magento/module-elasticsearch-6": "100.4.4", - "magento/module-elasticsearch-7": "100.4.4", - "magento/module-email": "101.1.4", + "magento/module-elasticsearch": "101.0.5", + "magento/module-elasticsearch-6": "100.4.5", + "magento/module-elasticsearch-7": "100.4.5", + "magento/module-email": "101.1.5", "magento/module-encryption-key": "100.4.3", "magento/module-fedex": "100.4.3", - "magento/module-gift-message": "100.4.3", - "magento/module-gift-message-graph-ql": "100.4.2", + "magento/module-gift-message": "100.4.4", + "magento/module-gift-message-graph-ql": "100.4.3", "magento/module-google-adwords": "100.4.2", "magento/module-google-analytics": "100.4.1", - "magento/module-google-optimizer": "100.4.3", - "magento/module-graph-ql": "100.4.4", - "magento/module-graph-ql-cache": "100.4.1", - "magento/module-grouped-catalog-inventory": "100.4.1", - "magento/module-grouped-import-export": "100.4.2", - "magento/module-grouped-product": "100.4.4", - "magento/module-grouped-product-graph-ql": "100.4.4", - "magento/module-import-export": "101.0.4", - "magento/module-indexer": "100.4.4", - "magento/module-instant-purchase": "100.4.3", - "magento/module-integration": "100.4.4", + "magento/module-google-gtag": "100.4.0", + "magento/module-google-optimizer": "100.4.4", + "magento/module-graph-ql": "100.4.5", + "magento/module-graph-ql-cache": "100.4.2", + "magento/module-grouped-catalog-inventory": "100.4.2", + "magento/module-grouped-import-export": "100.4.3", + "magento/module-grouped-product": "100.4.5", + "magento/module-grouped-product-graph-ql": "100.4.5", + "magento/module-import-export": "101.0.5", + "magento/module-indexer": "100.4.5", + "magento/module-instant-purchase": "100.4.4", + "magento/module-integration": "100.4.5", "magento/module-jwt-framework-adapter": "100.4.1", "magento/module-jwt-user-token": "100.4.0", - "magento/module-layered-navigation": "100.4.4", - "magento/module-login-as-customer": "100.4.4", - "magento/module-login-as-customer-admin-ui": "100.4.4", - "magento/module-login-as-customer-api": "100.4.3", - "magento/module-login-as-customer-assistance": "100.4.3", + "magento/module-layered-navigation": "100.4.5", + "magento/module-login-as-customer": "100.4.5", + "magento/module-login-as-customer-admin-ui": "100.4.5", + "magento/module-login-as-customer-api": "100.4.4", + "magento/module-login-as-customer-assistance": "100.4.4", "magento/module-login-as-customer-frontend-ui": "100.4.4", - "magento/module-login-as-customer-graph-ql": "100.4.1", + "magento/module-login-as-customer-graph-ql": "100.4.2", "magento/module-login-as-customer-log": "100.4.3", "magento/module-login-as-customer-page-cache": "100.4.4", "magento/module-login-as-customer-quote": "100.4.3", "magento/module-login-as-customer-sales": "100.4.4", "magento/module-marketplace": "100.4.3", "magento/module-media-content": "100.4.3", - "magento/module-media-content-api": "100.4.3", + "magento/module-media-content-api": "100.4.4", "magento/module-media-content-catalog": "100.4.3", "magento/module-media-content-cms": "100.4.3", - "magento/module-media-content-synchronization": "100.4.3", - "magento/module-media-content-synchronization-api": "100.4.2", + "magento/module-media-content-synchronization": "100.4.4", + "magento/module-media-content-synchronization-api": "100.4.3", "magento/module-media-content-synchronization-catalog": "100.4.2", "magento/module-media-content-synchronization-cms": "100.4.2", - "magento/module-media-gallery": "100.4.3", - "magento/module-media-gallery-api": "101.0.3", + "magento/module-media-gallery": "100.4.4", + "magento/module-media-gallery-api": "101.0.4", "magento/module-media-gallery-catalog": "100.4.2", "magento/module-media-gallery-catalog-integration": "100.4.2", "magento/module-media-gallery-catalog-ui": "100.4.2", "magento/module-media-gallery-cms-ui": "100.4.2", - "magento/module-media-gallery-integration": "100.4.3", - "magento/module-media-gallery-metadata": "100.4.2", - "magento/module-media-gallery-metadata-api": "100.4.1", - "magento/module-media-gallery-renditions": "100.4.2", - "magento/module-media-gallery-renditions-api": "100.4.1", - "magento/module-media-gallery-synchronization": "100.4.3", - "magento/module-media-gallery-synchronization-api": "100.4.2", + "magento/module-media-gallery-integration": "100.4.4", + "magento/module-media-gallery-metadata": "100.4.3", + "magento/module-media-gallery-metadata-api": "100.4.2", + "magento/module-media-gallery-renditions": "100.4.3", + "magento/module-media-gallery-renditions-api": "100.4.2", + "magento/module-media-gallery-synchronization": "100.4.4", + "magento/module-media-gallery-synchronization-api": "100.4.3", "magento/module-media-gallery-synchronization-metadata": "100.4.1", - "magento/module-media-gallery-ui": "100.4.3", - "magento/module-media-gallery-ui-api": "100.4.2", - "magento/module-media-storage": "100.4.3", - "magento/module-message-queue": "100.4.4", - "magento/module-msrp": "100.4.3", + "magento/module-media-gallery-ui": "100.4.4", + "magento/module-media-gallery-ui-api": "100.4.3", + "magento/module-media-storage": "100.4.4", + "magento/module-message-queue": "100.4.5", + "magento/module-msrp": "100.4.4", "magento/module-msrp-configurable-product": "100.4.2", "magento/module-msrp-grouped-product": "100.4.2", - "magento/module-multishipping": "100.4.4", - "magento/module-mysql-mq": "100.4.2", - "magento/module-new-relic-reporting": "100.4.2", - "magento/module-newsletter": "100.4.4", - "magento/module-newsletter-graph-ql": "100.4.1", + "magento/module-multishipping": "100.4.5", + "magento/module-mysql-mq": "100.4.3", + "magento/module-new-relic-reporting": "100.4.3", + "magento/module-newsletter": "100.4.5", + "magento/module-newsletter-graph-ql": "100.4.2", "magento/module-offline-payments": "100.4.3", - "magento/module-offline-shipping": "100.4.3", - "magento/module-page-cache": "100.4.4", - "magento/module-payment": "100.4.4", + "magento/module-offline-shipping": "100.4.4", + "magento/module-page-cache": "100.4.5", + "magento/module-payment": "100.4.5", "magento/module-payment-graph-ql": "100.4.0", - "magento/module-paypal": "101.0.4", + "magento/module-paypal": "101.0.5", "magento/module-paypal-captcha": "100.4.2", - "magento/module-paypal-graph-ql": "100.4.2", - "magento/module-persistent": "100.4.4", - "magento/module-product-alert": "100.4.3", - "magento/module-product-video": "100.4.4", - "magento/module-quote": "101.2.4", + "magento/module-paypal-graph-ql": "100.4.3", + "magento/module-persistent": "100.4.5", + "magento/module-product-alert": "100.4.4", + "magento/module-product-video": "100.4.5", + "magento/module-quote": "101.2.5", "magento/module-quote-analytics": "100.4.4", "magento/module-quote-bundle-options": "100.4.1", "magento/module-quote-configurable-options": "100.4.1", "magento/module-quote-downloadable-links": "100.4.1", - "magento/module-quote-graph-ql": "100.4.4", + "magento/module-quote-graph-ql": "100.4.5", "magento/module-related-product-graph-ql": "100.4.2", - "magento/module-release-notification": "100.4.2", - "magento/module-remote-storage": "100.4.2", - "magento/module-reports": "100.4.4", + "magento/module-release-notification": "100.4.3", + "magento/module-remote-storage": "100.4.3", + "magento/module-reports": "100.4.5", "magento/module-require-js": "100.4.1", - "magento/module-review": "100.4.4", + "magento/module-review": "100.4.5", "magento/module-review-analytics": "100.4.2", "magento/module-review-graph-ql": "100.4.1", "magento/module-robots": "101.1.1", "magento/module-rss": "100.4.3", - "magento/module-rule": "100.4.3", - "magento/module-sales": "103.0.4", + "magento/module-rule": "100.4.4", + "magento/module-sales": "103.0.5", "magento/module-sales-analytics": "100.4.2", - "magento/module-sales-graph-ql": "100.4.4", - "magento/module-sales-inventory": "100.4.1", - "magento/module-sales-rule": "101.2.4", + "magento/module-sales-graph-ql": "100.4.5", + "magento/module-sales-inventory": "100.4.2", + "magento/module-sales-rule": "101.2.5", "magento/module-sales-sequence": "100.4.2", - "magento/module-sample-data": "100.4.2", - "magento/module-search": "101.1.4", - "magento/module-security": "100.4.4", + "magento/module-sample-data": "100.4.3", + "magento/module-search": "101.1.5", + "magento/module-security": "100.4.5", "magento/module-send-friend": "100.4.3", "magento/module-send-friend-graph-ql": "100.4.1", - "magento/module-shipping": "100.4.4", - "magento/module-sitemap": "100.4.3", - "magento/module-store": "101.1.4", + "magento/module-shipping": "100.4.5", + "magento/module-sitemap": "100.4.4", + "magento/module-store": "101.1.5", "magento/module-store-graph-ql": "100.4.3", - "magento/module-swagger": "100.4.3", + "magento/module-swagger": "100.4.4", "magento/module-swagger-webapi": "100.4.1", "magento/module-swagger-webapi-async": "100.4.1", - "magento/module-swatches": "100.4.4", + "magento/module-swatches": "100.4.5", "magento/module-swatches-graph-ql": "100.4.3", "magento/module-swatches-layered-navigation": "100.4.1", - "magento/module-tax": "100.4.4", + "magento/module-tax": "100.4.5", "magento/module-tax-graph-ql": "100.4.1", "magento/module-tax-import-export": "100.4.4", - "magento/module-theme": "101.1.4", + "magento/module-theme": "101.1.5", "magento/module-theme-graph-ql": "100.4.2", - "magento/module-translation": "100.4.4", - "magento/module-ui": "101.2.4", - "magento/module-ups": "100.4.4", - "magento/module-url-rewrite": "102.0.3", - "magento/module-url-rewrite-graph-ql": "100.4.3", - "magento/module-user": "101.2.4", - "magento/module-usps": "100.4.3", - "magento/module-variable": "100.4.2", - "magento/module-vault": "101.2.4", + "magento/module-translation": "100.4.5", + "magento/module-ui": "101.2.5", + "magento/module-ups": "100.4.5", + "magento/module-url-rewrite": "102.0.4", + "magento/module-url-rewrite-graph-ql": "100.4.4", + "magento/module-user": "101.2.5", + "magento/module-usps": "100.4.4", + "magento/module-variable": "100.4.3", + "magento/module-vault": "101.2.5", "magento/module-vault-graph-ql": "100.4.1", - "magento/module-version": "100.4.1", - "magento/module-webapi": "100.4.3", - "magento/module-webapi-async": "100.4.2", + "magento/module-version": "100.4.2", + "magento/module-webapi": "100.4.4", + "magento/module-webapi-async": "100.4.3", "magento/module-webapi-security": "100.4.2", - "magento/module-weee": "100.4.4", + "magento/module-weee": "100.4.5", "magento/module-weee-graph-ql": "100.4.2", - "magento/module-widget": "101.2.4", - "magento/module-wishlist": "101.2.4", + "magento/module-widget": "101.2.5", + "magento/module-wishlist": "101.2.5", "magento/module-wishlist-analytics": "100.4.3", - "magento/module-wishlist-graph-ql": "100.4.4", - "magento/page-builder": "1.7.1", - "magento/security-package": "1.1.3", - "magento/theme-adminhtml-backend": "100.4.4", - "magento/theme-frontend-blank": "100.4.4", - "magento/theme-frontend-luma": "100.4.4", + "magento/module-wishlist-graph-ql": "100.4.5", + "magento/page-builder": "1.7.2", + "magento/security-package": "1.1.4", + "magento/theme-adminhtml-backend": "100.4.5", + "magento/theme-frontend-blank": "100.4.5", + "magento/theme-frontend-luma": "100.4.5", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", - "paypal/module-braintree": "4.3.0", + "monolog/monolog": "^2.7", + "paypal/module-braintree": "4.4.0", "pelago/emogrifier": "^6.0.0", "php": "~7.4.0||~8.1.0", - "php-amqplib/php-amqplib": "~3.1.0", - "phpseclib/mcrypt_compat": "~2.0.0", - "phpseclib/phpseclib": "~3.0.9", + "php-amqplib/php-amqplib": "~3.2.0", + "phpseclib/mcrypt_compat": "~2.0.2", + "phpseclib/phpseclib": "~3.0.13", "ramsey/uuid": "~4.2.0", "symfony/console": "~4.4.0", - "symfony/event-dispatcher": "~4.4.0", "symfony/process": "~4.4.0", "tedivm/jshrink": "~1.4.0", "temando/module-shipping": "2.0.0", "tubalmartin/cssmin": "4.1.1", "web-token/jwt-framework": "^v2.2.7", - "webonyx/graphql-php": "~14.11.3", + "webonyx/graphql-php": "~14.11.6", "wikimedia/less.php": "^3.0.0" }, "type": "metapackage", @@ -22034,19 +22186,19 @@ }, { "name": "magento/product-enterprise-edition", - "version": "2.4.4", + "version": "2.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/product-enterprise-edition/magento-product-enterprise-edition-2.4.4.0.zip", - "shasum": "a87c14b41b4206226db46f5142e195b79c6a803d" + "url": "https://repo.magento.com/archives/magento/product-enterprise-edition/magento-product-enterprise-edition-2.4.5.0.zip", + "shasum": "572ad7cc2ef98745ef31deff57328f4abfb5b2e1" }, "require": { "colinmollenhour/cache-backend-file": "~1.4.1", "colinmollenhour/cache-backend-redis": "1.14.2", - "colinmollenhour/credis": "1.12.1", + "colinmollenhour/credis": "1.13.0", "colinmollenhour/php-redis-session-abstract": "~1.4.5", - "composer/composer": "^1.9 || ^2.0", - "elasticsearch/elasticsearch": "~7.16.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", + "elasticsearch/elasticsearch": "~7.17.0", "ext-bcmath": "*", "ext-ctype": "*", "ext-curl": "*", @@ -22064,103 +22216,101 @@ "ext-spl": "*", "ext-xsl": "*", "ext-zip": "*", - "guzzlehttp/guzzle": "^7.3.0", - "laminas/laminas-captcha": "^2.11", + "ezyang/htmlpurifier": "^4.14", + "guzzlehttp/guzzle": "^7.4.2", + "laminas/laminas-captcha": "^2.12", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-db": "^2.13.4", + "laminas/laminas-db": "^2.15.0", "laminas/laminas-dependency-plugin": "^2.2.0", - "laminas/laminas-di": "^3.3.0", - "laminas/laminas-escaper": "~2.9.0", - "laminas/laminas-eventmanager": "^3.4.0", - "laminas/laminas-feed": "^2.15.0", + "laminas/laminas-di": "^3.7.0", + "laminas/laminas-escaper": "~2.10.0", + "laminas/laminas-eventmanager": "^3.5.0", + "laminas/laminas-feed": "^2.17.0", "laminas/laminas-http": "^2.15.0", "laminas/laminas-json": "^3.3.0", - "laminas/laminas-mail": "^2.15.1", + "laminas/laminas-mail": "^2.16.0", "laminas/laminas-mime": "^2.9.1", "laminas/laminas-modulemanager": "^2.11.0", - "laminas/laminas-mvc": "^3.3.0", - "laminas/laminas-server": "^2.11.0", - "laminas/laminas-servicemanager": "^3.10.0", - "laminas/laminas-session": "^2.12.0", + "laminas/laminas-mvc": "^3.3.3", + "laminas/laminas-server": "^2.11.1", + "laminas/laminas-servicemanager": "^3.11.0", "laminas/laminas-soap": "^2.10.0", - "laminas/laminas-stdlib": "^3.6.0", - "laminas/laminas-text": "^2.9.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", - "laminas/laminas-view": "~2.14.1", - "league/flysystem": "~2.3.2", - "league/flysystem-aws-s3-v3": "^2.0", + "laminas/laminas-validator": "^2.17.0", + "league/flysystem": "~2.4.5", + "league/flysystem-aws-s3-v3": "^2.4.3", "lib-libxml": "*", "magento/composer": "~1.8.0", "magento/composer-dependency-version-audit-plugin": "~0.1", - "magento/framework-foreign-key": "100.4.3", + "magento/framework-foreign-key": "100.4.4", "magento/magento-composer-installer": ">=0.3.0", - "magento/magento2-ee-base": "2.4.4", - "magento/module-admin-gws": "100.4.4", + "magento/magento2-ee-base": "2.4.5", + "magento/module-admin-gws": "100.4.5", "magento/module-admin-gws-configurable-product": "100.4.2", "magento/module-admin-gws-staging": "100.4.2", "magento/module-advanced-catalog": "100.4.2", - "magento/module-advanced-checkout": "100.4.4", - "magento/module-advanced-rule": "100.4.1", + "magento/module-advanced-checkout": "100.4.5", + "magento/module-advanced-rule": "100.4.2", "magento/module-advanced-sales-rule": "100.4.2", - "magento/module-async-order": "100.4.0", + "magento/module-async-order": "100.4.1", "magento/module-async-order-graph-ql": "100.4.0", "magento/module-aws-s3-customer-custom-attributes": "100.4.2", - "magento/module-aws-s3-gift-card-import-export": "100.4.1", - "magento/module-aws-s3-scheduled-import-export": "100.4.1", - "magento/module-banner": "101.2.4", - "magento/module-banner-customer-segment": "100.4.2", + "magento/module-aws-s3-gift-card-import-export": "100.4.2", + "magento/module-aws-s3-scheduled-import-export": "100.4.2", + "magento/module-banner": "101.2.5", + "magento/module-banner-customer-segment": "100.4.3", "magento/module-banner-graph-ql": "100.4.1", "magento/module-bundle-import-export-staging": "100.4.2", - "magento/module-bundle-staging": "100.4.4", + "magento/module-bundle-staging": "100.4.5", "magento/module-catalog-event": "101.1.4", "magento/module-catalog-import-export-staging": "100.4.2", "magento/module-catalog-inventory-staging": "100.4.3", - "magento/module-catalog-permissions": "100.4.4", + "magento/module-catalog-permissions": "100.4.5", "magento/module-catalog-permissions-graph-ql": "100.4.3", - "magento/module-catalog-rule-staging": "100.4.4", - "magento/module-catalog-staging": "100.4.4", + "magento/module-catalog-rule-staging": "100.4.5", + "magento/module-catalog-staging": "100.4.5", "magento/module-catalog-staging-graph-ql": "100.4.4", - "magento/module-catalog-url-rewrite-staging": "100.4.3", - "magento/module-checkout-address-search": "100.4.3", + "magento/module-catalog-url-rewrite-staging": "100.4.4", + "magento/module-checkout-address-search": "100.4.4", "magento/module-checkout-address-search-gift-registry": "100.4.1", - "magento/module-checkout-staging": "100.4.3", - "magento/module-cms-staging": "100.4.4", - "magento/module-configurable-product-staging": "100.4.3", - "magento/module-custom-attribute-management": "100.4.3", - "magento/module-customer-balance": "100.4.4", + "magento/module-checkout-staging": "100.4.4", + "magento/module-cms-staging": "100.4.5", + "magento/module-configurable-product-staging": "100.4.4", + "magento/module-custom-attribute-management": "100.4.4", + "magento/module-customer-balance": "100.4.5", "magento/module-customer-balance-graph-ql": "100.4.2", - "magento/module-customer-custom-attributes": "100.4.4", + "magento/module-customer-custom-attributes": "100.4.5", "magento/module-customer-finance": "100.4.2", - "magento/module-customer-segment": "102.1.4", + "magento/module-customer-segment": "102.1.5", "magento/module-deferred-total-calculating": "100.4.0", - "magento/module-downloadable-staging": "100.4.3", + "magento/module-downloadable-staging": "100.4.4", "magento/module-elasticsearch-catalog-permissions": "100.4.1", "magento/module-elasticsearch-catalog-permissions-graph-ql": "100.4.0", - "magento/module-enterprise": "100.4.2", - "magento/module-gift-card": "101.3.4", - "magento/module-gift-card-account": "101.2.4", + "magento/module-enterprise": "100.4.3", + "magento/module-gift-card": "101.3.5", + "magento/module-gift-card-account": "101.2.5", "magento/module-gift-card-account-graph-ql": "100.4.3", - "magento/module-gift-card-graph-ql": "100.4.4", + "magento/module-gift-card-graph-ql": "100.4.5", "magento/module-gift-card-import-export": "100.4.2", "magento/module-gift-card-staging": "100.4.2", "magento/module-gift-message-staging": "100.4.2", - "magento/module-gift-registry": "101.2.4", + "magento/module-gift-registry": "101.2.5", "magento/module-gift-registry-graph-ql": "100.4.1", - "magento/module-gift-wrapping": "101.2.3", + "magento/module-gift-wrapping": "101.2.4", "magento/module-gift-wrapping-graph-ql": "100.4.2", "magento/module-gift-wrapping-staging": "100.4.2", "magento/module-google-optimizer-staging": "100.4.2", - "magento/module-google-tag-manager": "100.4.4", - "magento/module-grouped-product-staging": "100.4.2", - "magento/module-invitation": "100.4.3", + "magento/module-google-tag-manager": "100.4.5", + "magento/module-grouped-product-staging": "100.4.3", + "magento/module-invitation": "100.4.4", "magento/module-layered-navigation-staging": "100.4.2", - "magento/module-logging": "101.2.4", - "magento/module-login-as-customer-logging": "100.4.4", + "magento/module-logging": "101.2.5", + "magento/module-login-as-customer-logging": "100.4.5", "magento/module-login-as-customer-website-restriction": "100.4.3", "magento/module-media-content-catalog-staging": "100.4.2", - "magento/module-msrp-staging": "100.4.2", - "magento/module-multiple-wishlist": "100.4.4", + "magento/module-msrp-staging": "100.4.3", + "magento/module-multiple-wishlist": "100.4.5", "magento/module-multiple-wishlist-graph-ql": "100.4.1", "magento/module-payment-staging": "100.4.2", "magento/module-persistent-history": "100.4.2", @@ -22168,56 +22318,57 @@ "magento/module-product-video-staging": "100.4.2", "magento/module-promotion-permissions": "100.4.2", "magento/module-quote-gift-card-options": "100.4.2", - "magento/module-quote-staging": "100.4.1", - "magento/module-reminder": "101.2.3", + "magento/module-quote-staging": "100.4.2", + "magento/module-reminder": "101.2.4", "magento/module-remote-storage-commerce": "100.4.1", "magento/module-resource-connections": "100.4.2", "magento/module-review-staging": "100.4.2", - "magento/module-reward": "101.2.4", - "magento/module-reward-graph-ql": "100.4.3", + "magento/module-reward": "101.2.5", + "magento/module-reward-graph-ql": "100.4.4", "magento/module-reward-staging": "100.4.2", - "magento/module-rma": "101.2.4", - "magento/module-rma-graph-ql": "100.4.3", + "magento/module-rma": "101.2.5", + "magento/module-rma-graph-ql": "100.4.4", "magento/module-rma-staging": "100.4.2", "magento/module-sales-archive": "101.0.3", - "magento/module-sales-rule-staging": "100.4.3", - "magento/module-scalable-checkout": "100.4.3", - "magento/module-scalable-inventory": "100.4.2", + "magento/module-sales-rule-staging": "100.4.4", + "magento/module-scalable-checkout": "100.4.4", + "magento/module-scalable-inventory": "100.4.3", "magento/module-scalable-oms": "100.4.3", - "magento/module-scheduled-import-export": "101.2.4", - "magento/module-search-staging": "100.4.2", - "magento/module-staging": "101.2.4", - "magento/module-staging-graph-ql": "100.4.1", - "magento/module-support": "101.2.3", - "magento/module-swat": "100.4.2", - "magento/module-target-rule": "101.2.4", - "magento/module-target-rule-graph-ql": "100.4.1", - "magento/module-versions-cms": "101.2.4", + "magento/module-scheduled-import-export": "101.2.5", + "magento/module-search-staging": "100.4.3", + "magento/module-staging": "101.2.5", + "magento/module-staging-graph-ql": "100.4.2", + "magento/module-support": "101.2.4", + "magento/module-swat": "100.4.3", + "magento/module-target-rule": "101.2.5", + "magento/module-target-rule-graph-ql": "100.4.2", + "magento/module-versions-cms": "101.2.5", "magento/module-versions-cms-page-cache": "100.4.1", - "magento/module-versions-cms-url-rewrite": "100.4.2", + "magento/module-versions-cms-url-rewrite": "100.4.3", "magento/module-versions-cms-url-rewrite-graph-ql": "100.4.1", - "magento/module-visual-merchandiser": "100.4.4", - "magento/module-website-restriction": "100.4.3", + "magento/module-visual-merchandiser": "100.4.5", + "magento/module-website-restriction": "100.4.4", "magento/module-weee-staging": "100.4.2", "magento/module-wishlist-gift-card": "100.4.1", "magento/module-wishlist-gift-card-graph-ql": "100.4.1", - "magento/page-builder-commerce": "1.7.1", - "magento/product-community-edition": "2.4.4", + "magento/page-builder-commerce": "1.7.2", + "magento/product-community-edition": "2.4.5", + "magento/security-package-ee": "1.0.0", + "magento/theme-adminhtml-spectrum": "100.4.0", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", + "monolog/monolog": "^2.7", "pelago/emogrifier": "^6.0.0", "php": "~7.4.0||~8.1.0", - "php-amqplib/php-amqplib": "~3.1.0", - "phpseclib/mcrypt_compat": "~2.0.0", - "phpseclib/phpseclib": "~3.0.9", + "php-amqplib/php-amqplib": "~3.2.0", + "phpseclib/mcrypt_compat": "~2.0.2", + "phpseclib/phpseclib": "~3.0.13", "ramsey/uuid": "~4.2.0", "symfony/console": "~4.4.0", - "symfony/event-dispatcher": "~4.4.0", "symfony/process": "~4.4.0", "tedivm/jshrink": "~1.4.0", "tubalmartin/cssmin": "4.1.1", "web-token/jwt-framework": "^v2.2.7", - "webonyx/graphql-php": "~14.11.3", + "webonyx/graphql-php": "~14.11.6", "wikimedia/less.php": "^3.0.0" }, "type": "metapackage", @@ -22228,67 +22379,108 @@ }, { "name": "magento/security-package", - "version": "1.1.3", + "version": "1.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/security-package/magento-security-package-1.1.3.0.zip", - "shasum": "e477fcc0afacb67f17930e07c85b1642958d44be" + "url": "https://repo.magento.com/archives/magento/security-package/magento-security-package-1.1.4.0.zip", + "shasum": "a6dea777ac5824d76d1099334f886ce327d3c714" }, "require": { "google/recaptcha": "^1.2", - "magento/module-re-captcha-admin-ui": "1.1.*", - "magento/module-re-captcha-checkout": "1.1.*", - "magento/module-re-captcha-checkout-sales-rule": "1.1.*", - "magento/module-re-captcha-contact": "1.1.*", - "magento/module-re-captcha-customer": "1.1.*", - "magento/module-re-captcha-frontend-ui": "1.1.*", - "magento/module-re-captcha-migration": "1.1.*", - "magento/module-re-captcha-newsletter": "1.1.*", - "magento/module-re-captcha-paypal": "1.1.*", - "magento/module-re-captcha-review": "1.1.*", - "magento/module-re-captcha-send-friend": "1.1.*", - "magento/module-re-captcha-store-pickup": "1.0.*", - "magento/module-re-captcha-ui": "1.1.*", - "magento/module-re-captcha-user": "1.1.*", - "magento/module-re-captcha-validation": "1.1.*", - "magento/module-re-captcha-validation-api": "1.1.*", - "magento/module-re-captcha-version-2-checkbox": "2.0.*", - "magento/module-re-captcha-version-2-invisible": "2.0.*", - "magento/module-re-captcha-version-3-invisible": "2.0.*", - "magento/module-re-captcha-webapi-api": "1.0.*", - "magento/module-re-captcha-webapi-graph-ql": "1.0.*", - "magento/module-re-captcha-webapi-rest": "1.0.*", - "magento/module-re-captcha-webapi-ui": "1.0.*", - "magento/module-securitytxt": "1.1.*", - "magento/module-two-factor-auth": "1.1.*" + "magento/module-re-captcha-admin-ui": "1.1.2", + "magento/module-re-captcha-checkout": "1.1.2", + "magento/module-re-captcha-checkout-sales-rule": "1.1.1", + "magento/module-re-captcha-contact": "1.1.1", + "magento/module-re-captcha-customer": "1.1.3", + "magento/module-re-captcha-frontend-ui": "1.1.3", + "magento/module-re-captcha-migration": "1.1.2", + "magento/module-re-captcha-newsletter": "1.1.2", + "magento/module-re-captcha-paypal": "1.1.2", + "magento/module-re-captcha-review": "1.1.2", + "magento/module-re-captcha-send-friend": "1.1.2", + "magento/module-re-captcha-store-pickup": "1.0.1", + "magento/module-re-captcha-ui": "1.1.2", + "magento/module-re-captcha-user": "1.1.2", + "magento/module-re-captcha-validation": "1.1.1", + "magento/module-re-captcha-validation-api": "1.1.1", + "magento/module-re-captcha-version-2-checkbox": "2.0.2", + "magento/module-re-captcha-version-2-invisible": "2.0.2", + "magento/module-re-captcha-version-3-invisible": "2.0.2", + "magento/module-re-captcha-webapi-api": "1.0.1", + "magento/module-re-captcha-webapi-graph-ql": "1.0.1", + "magento/module-re-captcha-webapi-rest": "1.0.1", + "magento/module-re-captcha-webapi-ui": "1.0.1", + "magento/module-securitytxt": "1.1.1", + "magento/module-two-factor-auth": "1.1.4" }, "type": "metapackage", "description": "Magento Security Package" }, { "name": "magento/security-package-b2b", - "version": "1.0.1", + "version": "1.0.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/security-package-b2b/magento-security-package-b2b-1.0.1.0.zip", - "shasum": "f4b2c3a952bf6b16b69529ff056cc41b68487a18" + "url": "https://repo.magento.com/archives/magento/security-package-b2b/magento-security-package-b2b-1.0.2.0.zip", + "shasum": "edbfb7a2aec47c4c484e09cc49b153cae1f6d85c" }, "require": { - "magento/module-re-captcha-company": "1.0.*" + "magento/module-re-captcha-company": "1.0.1" }, "type": "metapackage", "description": "Magento B2B Security Package" }, + { + "name": "magento/security-package-ee", + "version": "1.0.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/security-package-ee/magento-security-package-ee-1.0.0.0.zip", + "shasum": "dbd410e88cbe152f7f8d62bf8e49eda78d10951b" + }, + "require": { + "magento/module-re-captcha-gift-card": "1.0.0", + "magento/module-re-captcha-invitation": "1.0.0", + "magento/module-re-captcha-multiple-wishlist": "1.0.0" + }, + "type": "metapackage", + "description": "Magento Security Package for Enterprise Edition" + }, { "name": "magento/theme-adminhtml-backend", - "version": "100.4.4", + "version": "100.4.5", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/theme-adminhtml-backend/magento-theme-adminhtml-backend-100.4.5.0.zip", + "shasum": "f5ee6da339ccd2c9cf11de4a7e1e37aeb85af4a4" + }, + "require": { + "magento/framework": "103.0.*", + "php": "~7.4.0||~8.1.0" + }, + "type": "magento2-theme", + "autoload": { + "files": [ + "registration.php" + ] + }, + "license": [ + "OSL-3.0", + "AFL-3.0" + ], + "description": "N/A" + }, + { + "name": "magento/theme-adminhtml-spectrum", + "version": "100.4.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/theme-adminhtml-backend/magento-theme-adminhtml-backend-100.4.4.0.zip", - "shasum": "da992046f7fbe5d42c89942202c36803416049f9" + "url": "https://repo.magento.com/archives/magento/theme-adminhtml-spectrum/magento-theme-adminhtml-spectrum-100.4.0.0.zip", + "shasum": "0157ff0d45aa05dcf3da4250fff809e794de9114" }, "require": { "magento/framework": "103.0.*", + "magento/theme-adminhtml-backend": "100.4.*", "php": "~7.4.0||~8.1.0" }, "type": "magento2-theme", @@ -22305,11 +22497,11 @@ }, { "name": "magento/theme-frontend-blank", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/theme-frontend-blank/magento-theme-frontend-blank-100.4.4.0.zip", - "shasum": "34a9d0c65132de3893e10bd278eaaa43f4a49c29" + "url": "https://repo.magento.com/archives/magento/theme-frontend-blank/magento-theme-frontend-blank-100.4.5.0.zip", + "shasum": "8f64b9681da80b037adae028426fbe15fefa9a60" }, "require": { "magento/framework": "103.0.*", @@ -22329,11 +22521,11 @@ }, { "name": "magento/theme-frontend-luma", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/theme-frontend-luma/magento-theme-frontend-luma-100.4.4.0.zip", - "shasum": "ad978a364c5a1813e358eb23c9674b8bc8bf1833" + "url": "https://repo.magento.com/archives/magento/theme-frontend-luma/magento-theme-frontend-luma-100.4.5.0.zip", + "shasum": "abf5ec4b08e6cdb076038a1d4069b904aa9eb412" }, "require": { "magento/framework": "103.0.*", @@ -22354,16 +22546,16 @@ }, { "name": "magento/zendframework1", - "version": "1.15.0", + "version": "1.15.1", "source": { "type": "git", "url": "https://github.com/magento/zf1.git", - "reference": "f241f5be1820784e7f54a36115e1324b5bb8a4ab" + "reference": "2381396d2a9a528be2f367b5ce2dddf650eac1d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/zf1/zipball/f241f5be1820784e7f54a36115e1324b5bb8a4ab", - "reference": "f241f5be1820784e7f54a36115e1324b5bb8a4ab", + "url": "https://api.github.com/repos/magento/zf1/zipball/2381396d2a9a528be2f367b5ce2dddf650eac1d0", + "reference": "2381396d2a9a528be2f367b5ce2dddf650eac1d0", "shasum": "" }, "require": { @@ -22399,22 +22591,22 @@ ], "support": { "issues": "https://github.com/magento/zf1/issues", - "source": "https://github.com/magento/zf1/tree/1.15.0" + "source": "https://github.com/magento/zf1/tree/1.15.1" }, - "time": "2022-01-18T21:55:54+00:00" + "time": "2022-06-21T01:22:39+00:00" }, { "name": "monolog/monolog", - "version": "2.5.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "4192345e260f1d51b365536199744b987e160edc" + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4192345e260f1d51b365536199744b987e160edc", - "reference": "4192345e260f1d51b365536199744b987e160edc", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", "shasum": "" }, "require": { @@ -22427,18 +22619,22 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", "graylog2/gelf-php": "^1.4.2", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", + "phpspec/prophecy": "^1.15", "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", "rollbar/rollbar": "^1.3 || ^2 || ^3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -22453,7 +22649,6 @@ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, @@ -22488,7 +22683,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.5.0" + "source": "https://github.com/Seldaek/monolog/tree/2.8.0" }, "funding": [ { @@ -22500,7 +22695,7 @@ "type": "tidelift" } ], - "time": "2022-04-08T15:43:54+00:00" + "time": "2022-07-24T11:55:47+00:00" }, { "name": "mtdowling/jmespath.php", @@ -22565,16 +22760,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.13.2", + "version": "v4.14.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", "shasum": "" }, "require": { @@ -22615,22 +22810,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" }, - "time": "2021-11-30T19:35:32+00:00" + "time": "2022-05-31T20:59:12+00:00" }, { "name": "paragonie/constant_time_encoding", - "version": "v2.5.0", + "version": "v2.6.3", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "9229e15f2e6ba772f0c55dd6986c563b937170a8" + "reference": "58c3f47f650c94ec05a151692652a868995d2938" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/9229e15f2e6ba772f0c55dd6986c563b937170a8", - "reference": "9229e15f2e6ba772f0c55dd6986c563b937170a8", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", + "reference": "58c3f47f650c94ec05a151692652a868995d2938", "shasum": "" }, "require": { @@ -22684,7 +22879,7 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2022-01-17T05:32:27+00:00" + "time": "2022-06-14T06:56:20+00:00" }, { "name": "paragonie/random_compat", @@ -22738,15 +22933,18 @@ }, { "name": "paypal/module-braintree", - "version": "4.3.0", + "version": "4.4.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/paypal/module-braintree/paypal-module-braintree-4.3.0.0.zip", - "shasum": "bbb137aa2f504c6e848f5f0bec302f575b71bf5a" + "url": "https://repo.magento.com/archives/paypal/module-braintree/paypal-module-braintree-4.4.0.0.zip", + "shasum": "d9ab16d9607bfc62fce64712c02facc88510e5f0" }, "require": { - "paypal/module-braintree-core": "4.3.0", - "paypal/module-braintree-graph-ql": "4.3.0" + "braintree/braintree_php": "6.5.1", + "magento/framework": "*", + "paypal/module-braintree-core": "4.4.0", + "paypal/module-braintree-graph-ql": "4.4.0", + "php": "~7.4.0||~8.1.0" }, "type": "metapackage", "license": [ @@ -22756,31 +22954,49 @@ }, { "name": "paypal/module-braintree-core", - "version": "4.3.0", + "version": "4.4.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/paypal/module-braintree-core/paypal-module-braintree-core-4.3.0.0.zip", - "shasum": "41eb8a10e0b222184c065a453e942ca7d5e75bfc" + "url": "https://repo.magento.com/archives/paypal/module-braintree-core/paypal-module-braintree-core-4.4.0.0.zip", + "shasum": "0ed21d22c65ed82cfcb765b684b50e47d6addf17" }, "require": { "braintree/braintree_php": "6.5.1", "ext-json": "*", "ext-simplexml": "*", + "magento/framework": "*", + "magento/module-authorization": "100.4.*", "magento/module-backend": "100.2.*||101.0.*||^102.0.0", "magento/module-catalog": "102.0.*||103.0.*||^104.0.0", "magento/module-checkout": "100.2.*||100.3.*||^100.4.0", + "magento/module-checkout-agreements": "100.4.*", "magento/module-config": "101.0.*||101.1.*||^101.2.0", + "magento/module-configurable-product": "100.4.*", "magento/module-customer": "101.0.*||102.0.*||^103.0.0", "magento/module-directory": "100.2.*||100.3.*||^100.4.0", + "magento/module-downloadable": "100.4.*", + "magento/module-grouped-product": "100.4.*", + "magento/module-instant-purchase": "100.4.*", + "magento/module-multishipping": "100.4.*", "magento/module-payment": "100.2.*||100.3.*||^100.4.0", "magento/module-paypal": "100.2.*||100.3.*||^101.0.0", "magento/module-quote": "101.0.*||101.1.*||^101.2.0", + "magento/module-re-captcha-admin-ui": "1.1.*", + "magento/module-re-captcha-frontend-ui": "1.1.*", "magento/module-re-captcha-ui": "1.1.*", "magento/module-re-captcha-validation-api": "1.1.*", + "magento/module-re-captcha-version-2-checkbox": "2.0.*", + "magento/module-re-captcha-version-2-invisible": "2.0.*", + "magento/module-re-captcha-version-3-invisible": "2.0.*", + "magento/module-re-captcha-webapi-api": "1.0.*", + "magento/module-re-captcha-webapi-ui": "1.0.*", "magento/module-sales": "101.0.*||102.0.*||^102.1.0||^103", + "magento/module-store": "101.1.*", "magento/module-theme": "100.2.*||101.0.*||^101.1.0", "magento/module-ui": "101.0.*||101.1.*||^101.2.0", - "magento/module-vault": "101.0.*||101.1.*||^101.2.0" + "magento/module-vault": "101.0.*||101.1.*||^101.2.0", + "magento/module-webapi": "100.4.*", + "php": "~7.4.0||~8.1.0" }, "conflict": { "gene/module-braintree": "*", @@ -22802,18 +23018,19 @@ }, { "name": "paypal/module-braintree-graph-ql", - "version": "4.3.0", + "version": "4.4.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/paypal/module-braintree-graph-ql/paypal-module-braintree-graph-ql-4.3.0.0.zip", - "shasum": "599955ba1b7f530e75ed427e0e9378b43d2bd109" + "url": "https://repo.magento.com/archives/paypal/module-braintree-graph-ql/paypal-module-braintree-graph-ql-4.4.0.0.zip", + "shasum": "aeda8bc856162c4d7bda04cd363296f138d2a03e" }, "require": { "magento/framework": "^102||^103", "magento/module-quote": "^101", "magento/module-quote-graph-ql": "^100", "magento/module-store": "^101", - "paypal/module-braintree-core": "^4.1" + "paypal/module-braintree-core": "^4.4", + "php": "~7.4.0||~8.1.0" }, "suggest": { "magento/module-graph-ql": "^100" @@ -22913,16 +23130,16 @@ }, { "name": "php-amqplib/php-amqplib", - "version": "v3.1.2", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "e8aba06c4e1c467612f2d99304f672f2660e8492" + "reference": "0bec5b392428e0ac3b3f34fbc4e02d706995833e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/e8aba06c4e1c467612f2d99304f672f2660e8492", - "reference": "e8aba06c4e1c467612f2d99304f672f2660e8492", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/0bec5b392428e0ac3b3f34fbc4e02d706995833e", + "reference": "0bec5b392428e0ac3b3f34fbc4e02d706995833e", "shasum": "" }, "require": { @@ -22988,9 +23205,9 @@ ], "support": { "issues": "https://github.com/php-amqplib/php-amqplib/issues", - "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.1.2" + "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.2.0" }, - "time": "2022-01-18T17:08:01+00:00" + "time": "2022-03-10T19:16:00+00:00" }, { "name": "phpgt/cssxpath", @@ -24301,16 +24518,16 @@ }, { "name": "symfony/config", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "05624c386afa1b4ccc1357463d830fade8d9d404" + "reference": "ec79e03125c1d2477e43dde8528535d90cc78379" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/05624c386afa1b4ccc1357463d830fade8d9d404", - "reference": "05624c386afa1b4ccc1357463d830fade8d9d404", + "url": "https://api.github.com/repos/symfony/config/zipball/ec79e03125c1d2477e43dde8528535d90cc78379", + "reference": "ec79e03125c1d2477e43dde8528535d90cc78379", "shasum": "" }, "require": { @@ -24360,7 +24577,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.7" + "source": "https://github.com/symfony/config/tree/v5.4.11" }, "funding": [ { @@ -24376,20 +24593,20 @@ "type": "tidelift" } ], - "time": "2022-03-21T13:42:03+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/console", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "bdcc66f3140421038f495e5b50e3ca6ffa14c773" + "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/bdcc66f3140421038f495e5b50e3ca6ffa14c773", - "reference": "bdcc66f3140421038f495e5b50e3ca6ffa14c773", + "url": "https://api.github.com/repos/symfony/console/zipball/c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", + "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", "shasum": "" }, "require": { @@ -24450,7 +24667,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.40" + "source": "https://github.com/symfony/console/tree/v4.4.44" }, "funding": [ { @@ -24466,20 +24683,20 @@ "type": "tidelift" } ], - "time": "2022-03-26T22:12:04+00:00" + "time": "2022-07-20T09:59:04+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.3", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e" + "reference": "c1681789f059ab756001052164726ae88512ae3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/c1681789f059ab756001052164726ae88512ae3d", + "reference": "c1681789f059ab756001052164726ae88512ae3d", "shasum": "" }, "require": { @@ -24516,7 +24733,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.3" + "source": "https://github.com/symfony/css-selector/tree/v5.4.11" }, "funding": [ { @@ -24532,20 +24749,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/debug", - "version": "v4.4.37", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "5de6c6e7f52b364840e53851c126be4d71e60470" + "reference": "1a692492190773c5310bc7877cb590c04c2f05be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/5de6c6e7f52b364840e53851c126be4d71e60470", - "reference": "5de6c6e7f52b364840e53851c126be4d71e60470", + "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", + "reference": "1a692492190773c5310bc7877cb590c04c2f05be", "shasum": "" }, "require": { @@ -24584,7 +24801,7 @@ "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.37" + "source": "https://github.com/symfony/debug/tree/v4.4.44" }, "funding": [ { @@ -24600,20 +24817,21 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "abandoned": "symfony/error-handler", + "time": "2022-07-28T16:29:46+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "35588b2afb08ea3a142d62fefdcad4cb09be06ed" + "reference": "a8b9251016e9476db73e25fa836904bc0bf74c62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/35588b2afb08ea3a142d62fefdcad4cb09be06ed", - "reference": "35588b2afb08ea3a142d62fefdcad4cb09be06ed", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a8b9251016e9476db73e25fa836904bc0bf74c62", + "reference": "a8b9251016e9476db73e25fa836904bc0bf74c62", "shasum": "" }, "require": { @@ -24673,7 +24891,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.7" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.11" }, "funding": [ { @@ -24689,29 +24907,29 @@ "type": "tidelift" } ], - "time": "2022-03-08T15:43:06+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.1", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -24740,7 +24958,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1" }, "funding": [ { @@ -24756,20 +24974,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "2d0c9c229d995bef5e87fe4e83b717541832b448" + "reference": "be731658121ef2d8be88f3a1ec938148a9237291" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/2d0c9c229d995bef5e87fe4e83b717541832b448", - "reference": "2d0c9c229d995bef5e87fe4e83b717541832b448", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/be731658121ef2d8be88f3a1ec938148a9237291", + "reference": "be731658121ef2d8be88f3a1ec938148a9237291", "shasum": "" }, "require": { @@ -24808,7 +25026,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.40" + "source": "https://github.com/symfony/error-handler/tree/v4.4.44" }, "funding": [ { @@ -24824,20 +25042,20 @@ "type": "tidelift" } ], - "time": "2022-03-07T13:29:34+00:00" + "time": "2022-07-28T16:29:46+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.37", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc" + "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", - "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", "shasum": "" }, "require": { @@ -24892,7 +25110,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.37" + "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44" }, "funding": [ { @@ -24908,11 +25126,11 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2022-07-20T09:59:04+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.12", + "version": "v1.1.13", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -24971,7 +25189,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.12" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" }, "funding": [ { @@ -24991,16 +25209,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f" + "reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3a4442138d80c9f7b600fb297534ac718b61d37f", - "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/6699fb0228d1bc35b12aed6dd5e7455457609ddd", + "reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd", "shasum": "" }, "require": { @@ -25035,7 +25253,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.7" + "source": "https://github.com/symfony/filesystem/tree/v5.4.11" }, "funding": [ { @@ -25051,20 +25269,20 @@ "type": "tidelift" } ], - "time": "2022-04-01T12:33:59+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/finder", - "version": "v5.4.3", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d" + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/231313534dded84c7ecaa79d14bc5da4ccb69b7d", - "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d", + "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", "shasum": "" }, "require": { @@ -25098,7 +25316,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.3" + "source": "https://github.com/symfony/finder/tree/v5.4.11" }, "funding": [ { @@ -25114,20 +25332,20 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:34:36+00:00" + "time": "2022-07-29T07:37:50+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.5.1", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5" + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1a4f708e4e87f335d1b1be6148060739152f0bd5", - "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", "shasum": "" }, "require": { @@ -25176,7 +25394,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" }, "funding": [ { @@ -25192,20 +25410,20 @@ "type": "tidelift" } ], - "time": "2022-03-13T20:07:29+00:00" + "time": "2022-04-12T15:48:08+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.4.6", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "34e89bc147633c0f9dd6caaaf56da3b806a21465" + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/34e89bc147633c0f9dd6caaaf56da3b806a21465", - "reference": "34e89bc147633c0f9dd6caaaf56da3b806a21465", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0a5868e0999e9d47859ba3d918548ff6943e6389", + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389", "shasum": "" }, "require": { @@ -25249,7 +25467,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.6" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.11" }, "funding": [ { @@ -25265,20 +25483,20 @@ "type": "tidelift" } ], - "time": "2022-03-05T21:03:43+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "330a859a7ec9d7e7d82f2569b1c0700a26ffb1e3" + "reference": "9e444442334fae9637ef3209bc2abddfef49e714" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/330a859a7ec9d7e7d82f2569b1c0700a26ffb1e3", - "reference": "330a859a7ec9d7e7d82f2569b1c0700a26ffb1e3", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9e444442334fae9637ef3209bc2abddfef49e714", + "reference": "9e444442334fae9637ef3209bc2abddfef49e714", "shasum": "" }, "require": { @@ -25353,7 +25571,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.40" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.44" }, "funding": [ { @@ -25369,20 +25587,20 @@ "type": "tidelift" } ], - "time": "2022-04-02T05:55:50+00:00" + "time": "2022-07-29T12:23:38+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", "shasum": "" }, "require": { @@ -25397,7 +25615,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -25435,7 +25653,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" }, "funding": [ { @@ -25451,20 +25669,20 @@ "type": "tidelift" } ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", "shasum": "" }, "require": { @@ -25478,7 +25696,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -25522,7 +25740,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" }, "funding": [ { @@ -25538,20 +25756,20 @@ "type": "tidelift" } ], - "time": "2021-09-14T14:02:44+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "219aa369ceff116e673852dce47c3a41794c14bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd", "shasum": "" }, "require": { @@ -25563,7 +25781,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -25606,7 +25824,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" }, "funding": [ { @@ -25622,20 +25840,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", "shasum": "" }, "require": { @@ -25650,7 +25868,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -25689,7 +25907,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" }, "funding": [ { @@ -25705,20 +25923,20 @@ "type": "tidelift" } ], - "time": "2021-11-30T18:21:41+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", "shasum": "" }, "require": { @@ -25727,7 +25945,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -25765,7 +25983,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" }, "funding": [ { @@ -25781,20 +25999,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", "shasum": "" }, "require": { @@ -25803,7 +26021,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -25844,7 +26062,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" }, "funding": [ { @@ -25860,20 +26078,20 @@ "type": "tidelift" } ], - "time": "2021-06-05T21:20:04+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", "shasum": "" }, "require": { @@ -25882,7 +26100,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -25927,7 +26145,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" }, "funding": [ { @@ -25943,20 +26161,20 @@ "type": "tidelift" } ], - "time": "2022-03-04T08:16:47+00:00" + "time": "2022-05-10T07:21:04+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", "shasum": "" }, "require": { @@ -25965,7 +26183,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -26006,7 +26224,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" }, "funding": [ { @@ -26022,20 +26240,20 @@ "type": "tidelift" } ], - "time": "2021-09-13T13:58:11+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/process", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "54e9d763759268e07eb13b921d8631fc2816206f" + "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/54e9d763759268e07eb13b921d8631fc2816206f", - "reference": "54e9d763759268e07eb13b921d8631fc2816206f", + "url": "https://api.github.com/repos/symfony/process/zipball/5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", + "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", "shasum": "" }, "require": { @@ -26068,7 +26286,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.40" + "source": "https://github.com/symfony/process/tree/v4.4.44" }, "funding": [ { @@ -26084,20 +26302,20 @@ "type": "tidelift" } ], - "time": "2022-03-18T16:18:39+00:00" + "time": "2022-06-27T13:16:42+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.1", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { @@ -26151,7 +26369,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -26167,20 +26385,20 @@ "type": "tidelift" } ], - "time": "2022-03-13T20:07:29+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.6", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "294e9da6e2e0dd404e983daa5aa74253d92c05d0" + "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/294e9da6e2e0dd404e983daa5aa74253d92c05d0", - "reference": "294e9da6e2e0dd404e983daa5aa74253d92c05d0", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8f306d7b8ef34fb3db3305be97ba8e088fb4861", + "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861", "shasum": "" }, "require": { @@ -26240,7 +26458,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.6" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.11" }, "funding": [ { @@ -26256,7 +26474,7 @@ "type": "tidelift" } ], - "time": "2022-03-02T12:42:23+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "tedivm/jshrink", @@ -26795,21 +27013,21 @@ }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -26847,22 +27065,22 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "time": "2021-03-09T10:59:23+00:00" + "time": "2022-06-03T18:03:27+00:00" }, { "name": "webonyx/graphql-php", - "version": "v14.11.5", + "version": "v14.11.6", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "ffa431c0821821839370a68dab3c2597c06bf7f0" + "reference": "6070542725b61fc7d0654a8a9855303e5e157434" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/ffa431c0821821839370a68dab3c2597c06bf7f0", - "reference": "ffa431c0821821839370a68dab3c2597c06bf7f0", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/6070542725b61fc7d0654a8a9855303e5e157434", + "reference": "6070542725b61fc7d0654a8a9855303e5e157434", "shasum": "" }, "require": { @@ -26907,7 +27125,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v14.11.5" + "source": "https://github.com/webonyx/graphql-php/tree/v14.11.6" }, "funding": [ { @@ -26915,7 +27133,7 @@ "type": "open_collective" } ], - "time": "2022-01-24T11:13:31+00:00" + "time": "2022-04-13T16:25:32+00:00" }, { "name": "wikimedia/less.php", @@ -27230,16 +27448,16 @@ }, { "name": "codeception/codeception", - "version": "4.1.31", + "version": "4.2.1", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "15524571ae0686a7facc2eb1f40f600e5bbce9e5" + "reference": "77b3e2003fd4446b35826cb9dc397129c521c888" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/15524571ae0686a7facc2eb1f40f600e5bbce9e5", - "reference": "15524571ae0686a7facc2eb1f40f600e5bbce9e5", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/77b3e2003fd4446b35826cb9dc397129c521c888", + "reference": "77b3e2003fd4446b35826cb9dc397129c521c888", "shasum": "" }, "require": { @@ -27302,11 +27520,11 @@ { "name": "Michael Bodnarchuk", "email": "davert@mail.ua", - "homepage": "http://codegyre.com" + "homepage": "https://codegyre.com" } ], "description": "BDD-style testing framework", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "BDD", "TDD", @@ -27316,7 +27534,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.1.31" + "source": "https://github.com/Codeception/Codeception/tree/4.2.1" }, "funding": [ { @@ -27324,7 +27542,7 @@ "type": "open_collective" } ], - "time": "2022-03-13T17:07:08+00:00" + "time": "2022-06-22T06:18:59+00:00" }, { "name": "codeception/lib-asserts", @@ -27539,16 +27757,16 @@ }, { "name": "codeception/phpunit-wrapper", - "version": "9.0.7", + "version": "9.0.9", "source": { "type": "git", "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b" + "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7d6b1a5ea4ed28d010e5d36b993db813eb49710b", - "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7439a53ae367986e9c22b2ac00f9d7376bb2f8cf", + "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf", "shasum": "" }, "require": { @@ -27582,9 +27800,9 @@ "description": "PHPUnit classes used by Codeception", "support": { "issues": "https://github.com/Codeception/phpunit-wrapper/issues", - "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.7" + "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.9" }, - "time": "2022-01-26T14:43:10+00:00" + "time": "2022-05-23T06:24:11+00:00" }, { "name": "codeception/stub", @@ -27763,16 +27981,16 @@ }, { "name": "doctrine/annotations", - "version": "1.13.2", + "version": "1.13.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + "reference": "648b0343343565c4a056bfc8392201385e8d89f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0", "shasum": "" }, "require": { @@ -27784,9 +28002,10 @@ "require-dev": { "doctrine/cache": "^1.11 || ^2.0", "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", + "phpstan/phpstan": "^1.4.10 || ^1.8.0", "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "symfony/cache": "^4.4 || ^5.2", + "vimeo/psalm": "^4.10" }, "type": "library", "autoload": { @@ -27829,9 +28048,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" + "source": "https://github.com/doctrine/annotations/tree/1.13.3" }, - "time": "2021-08-05T19:00:23+00:00" + "time": "2022-07-02T10:48:51+00:00" }, { "name": "doctrine/instantiator", @@ -27981,16 +28200,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.3.1", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "b37bf90405cec3f7a83c18e645ef748bcb87ac11" + "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/b37bf90405cec3f7a83c18e645ef748bcb87ac11", - "reference": "b37bf90405cec3f7a83c18e645ef748bcb87ac11", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/47177af1cfb9dab5d1cc4daf91b7179c2efe7fad", + "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad", "shasum": "" }, "require": { @@ -28001,33 +28220,32 @@ "ext-tokenizer": "*", "php": "^7.2.5 || ^8.0", "php-cs-fixer/diff": "^2.0", - "symfony/console": "^4.4.20 || ^5.1.3", - "symfony/event-dispatcher": "^4.4.20 || ^5.0", - "symfony/filesystem": "^4.4.20 || ^5.0", - "symfony/finder": "^4.4.20 || ^5.0", - "symfony/options-resolver": "^4.4.20 || ^5.0", + "symfony/console": "^4.4.20 || ^5.1.3 || ^6.0", + "symfony/event-dispatcher": "^4.4.20 || ^5.0 || ^6.0", + "symfony/filesystem": "^4.4.20 || ^5.0 || ^6.0", + "symfony/finder": "^4.4.20 || ^5.0 || ^6.0", + "symfony/options-resolver": "^4.4.20 || ^5.0 || ^6.0", "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php72": "^1.23", "symfony/polyfill-php80": "^1.23", "symfony/polyfill-php81": "^1.23", - "symfony/process": "^4.4.20 || ^5.0", - "symfony/stopwatch": "^4.4.20 || ^5.0" + "symfony/process": "^4.4.20 || ^5.0 || ^6.0", + "symfony/stopwatch": "^4.4.20 || ^5.0 || ^6.0" }, "require-dev": { "justinrainbow/json-schema": "^5.2", "keradus/cli-executor": "^1.5", "mikey179/vfsstream": "^1.6.8", - "php-coveralls/php-coveralls": "^2.4.3", + "php-coveralls/php-coveralls": "^2.5.2", "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.10.3", + "phpspec/prophecy": "^1.15", "phpspec/prophecy-phpunit": "^1.1 || ^2.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5", + "phpunit/phpunit": "^8.5.21 || ^9.5", "phpunitgoodpractices/polyfill": "^1.5", "phpunitgoodpractices/traits": "^1.9.1", - "symfony/phpunit-bridge": "^5.2.4", - "symfony/yaml": "^4.4.20 || ^5.0" + "symfony/phpunit-bridge": "^5.2.4 || ^6.0", + "symfony/yaml": "^4.4.20 || ^5.0 || ^6.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -28059,7 +28277,7 @@ "description": "A tool to automatically fix PHP code style", "support": { "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.3.1" + "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.4.0" }, "funding": [ { @@ -28067,7 +28285,7 @@ "type": "github" } ], - "time": "2021-11-15T18:01:18+00:00" + "time": "2021-12-11T16:25:08+00:00" }, { "name": "jms/metadata", @@ -28135,16 +28353,16 @@ }, { "name": "jms/serializer", - "version": "3.17.1", + "version": "3.18.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "190f64b051795d447ec755acbfdb1bff330a6707" + "reference": "f721ffd76733c24ec1e8fd1e50e44a335fb78bbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/190f64b051795d447ec755acbfdb1bff330a6707", - "reference": "190f64b051795d447ec755acbfdb1bff330a6707", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/f721ffd76733c24ec1e8fd1e50e44a335fb78bbe", + "reference": "f721ffd76733c24ec1e8fd1e50e44a335fb78bbe", "shasum": "" }, "require": { @@ -28172,6 +28390,7 @@ "symfony/filesystem": "^3.0|^4.0|^5.0|^6.0", "symfony/form": "^3.0|^4.0|^5.0|^6.0", "symfony/translation": "^3.0|^4.0|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", "symfony/validator": "^3.1.9|^4.0|^5.0|^6.0", "symfony/yaml": "^3.3|^4.0|^5.0|^6.0", "twig/twig": "~1.34|~2.4|^3.0" @@ -28179,6 +28398,7 @@ "suggest": { "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", "symfony/cache": "Required if you like to use cache functionality.", + "symfony/uid": "Required if you'd like to serialize UID objects.", "symfony/yaml": "Required if you'd like to use the YAML metadata format." }, "type": "library", @@ -28217,7 +28437,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/serializer/issues", - "source": "https://github.com/schmittjoh/serializer/tree/3.17.1" + "source": "https://github.com/schmittjoh/serializer/tree/3.18.0" }, "funding": [ { @@ -28225,7 +28445,106 @@ "type": "github" } ], - "time": "2021-12-28T20:59:55+00:00" + "time": "2022-08-06T05:17:44+00:00" + }, + { + "name": "laminas/laminas-diactoros", + "version": "2.14.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-diactoros.git", + "reference": "6cb35f61913f06b2c91075db00f67cfd78869e28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6cb35f61913f06b2c91075db00f67cfd78869e28", + "reference": "6cb35f61913f06b2c91075db00f67cfd78869e28", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "conflict": { + "phpspec/prophecy": "<1.9.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-curl": "*", + "ext-dom": "*", + "ext-gd": "*", + "ext-libxml": "*", + "http-interop/http-factory-tests": "^0.9.0", + "laminas/laminas-coding-standard": "~2.3.0", + "php-http/psr7-integration-tests": "^1.1.1", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" + }, + "type": "library", + "extra": { + "laminas": { + "config-provider": "Laminas\\Diactoros\\ConfigProvider", + "module": "Laminas\\Diactoros" + } + }, + "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php", + "src/functions/create_uploaded_file.legacy.php", + "src/functions/marshal_headers_from_sapi.legacy.php", + "src/functions/marshal_method_from_sapi.legacy.php", + "src/functions/marshal_protocol_version_from_sapi.legacy.php", + "src/functions/marshal_uri_from_sapi.legacy.php", + "src/functions/normalize_server.legacy.php", + "src/functions/normalize_uploaded_files.legacy.php", + "src/functions/parse_cookie_header.legacy.php" + ], + "psr-4": { + "Laminas\\Diactoros\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "PSR HTTP Message implementations", + "homepage": "https://laminas.dev", + "keywords": [ + "http", + "laminas", + "psr", + "psr-17", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-diactoros/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-diactoros/issues", + "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", + "source": "https://github.com/laminas/laminas-diactoros" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2022-07-28T12:23:48+00:00" }, { "name": "lusitanian/oauth", @@ -28300,16 +28619,16 @@ }, { "name": "magento/magento-coding-standard", - "version": "21", + "version": "25", "source": { "type": "git", "url": "https://github.com/magento/magento-coding-standard.git", - "reference": "470f7a62b2433b0208eebaa6984af86c04736260" + "reference": "7be8305949f6683ff08534fbc22e5d42a1c4eba7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/470f7a62b2433b0208eebaa6984af86c04736260", - "reference": "470f7a62b2433b0208eebaa6984af86c04736260", + "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/7be8305949f6683ff08534fbc22e5d42a1c4eba7", + "reference": "7be8305949f6683ff08534fbc22e5d42a1c4eba7", "shasum": "" }, "require": { @@ -28317,7 +28636,7 @@ "ext-simplexml": "*", "php": ">=7.3", "phpcompatibility/php-compatibility": "^9.3", - "rector/rector": ">=0.12.4 <=0.12.16", + "rector/rector": "^0.13.0", "squizlabs/php_codesniffer": "^3.6.1", "webonyx/graphql-php": "^14.9" }, @@ -28342,22 +28661,22 @@ "description": "A set of Magento specific PHP CodeSniffer rules.", "support": { "issues": "https://github.com/magento/magento-coding-standard/issues", - "source": "https://github.com/magento/magento-coding-standard/tree/v21" + "source": "https://github.com/magento/magento-coding-standard/tree/v25" }, - "time": "2022-04-04T15:22:12+00:00" + "time": "2022-06-21T10:23:58+00:00" }, { "name": "magento/magento2-functional-testing-framework", - "version": "3.8.0", + "version": "3.10.1", "source": { "type": "git", "url": "https://github.com/magento/magento2-functional-testing-framework.git", - "reference": "a934c0b09038acf61612451732c6a3e8a1faa090" + "reference": "c0c3380fcf00fc02053aa09942388e8f4ae7d378" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento2-functional-testing-framework/zipball/a934c0b09038acf61612451732c6a3e8a1faa090", - "reference": "a934c0b09038acf61612451732c6a3e8a1faa090", + "url": "https://api.github.com/repos/magento/magento2-functional-testing-framework/zipball/c0c3380fcf00fc02053aa09942388e8f4ae7d378", + "reference": "c0c3380fcf00fc02053aa09942388e8f4ae7d378", "shasum": "" }, "require": { @@ -28367,26 +28686,28 @@ "codeception/module-asserts": "^1.1", "codeception/module-sequence": "^1.0", "codeception/module-webdriver": "^1.0", - "composer/composer": "^1.9||^2.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", "csharpru/vault-php": "^4.2.1", "ext-curl": "*", "ext-dom": "*", + "ext-iconv": "*", "ext-intl": "*", "ext-json": "*", "ext-openssl": "*", "guzzlehttp/guzzle": "^7.3.0", + "laminas/laminas-diactoros": "^2.8", "monolog/monolog": "^2.3", "mustache/mustache": "~2.5", "nikic/php-parser": "^4.4", "php": ">7.3", "php-webdriver/webdriver": "^1.9.0", "spomky-labs/otphp": "^10.0", - "symfony/console": "^4.4", + "symfony/console": "^4.4||^5.4", "symfony/dotenv": "^5.3", "symfony/finder": "^5.0", "symfony/http-foundation": "^5.0", "symfony/mime": "^5.0", - "symfony/process": "^4.4", + "symfony/process": "^4.4||^5.4", "weew/helpers-array": "^1.3" }, "require-dev": { @@ -28432,9 +28753,9 @@ ], "support": { "issues": "https://github.com/magento/magento2-functional-testing-framework/issues", - "source": "https://github.com/magento/magento2-functional-testing-framework/tree/3.8.0" + "source": "https://github.com/magento/magento2-functional-testing-framework/tree/3.10.1" }, - "time": "2022-01-07T17:02:20+00:00" + "time": "2022-08-02T14:40:39+00:00" }, { "name": "mustache/mustache", @@ -28767,16 +29088,16 @@ }, { "name": "php-webdriver/webdriver", - "version": "1.12.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/php-webdriver/php-webdriver.git", - "reference": "99d4856ed7dffcdf6a52eccd6551e83d8d557ceb" + "reference": "b27ddf458d273c7d4602106fcaf978aa0b7fe15a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/99d4856ed7dffcdf6a52eccd6551e83d8d557ceb", - "reference": "99d4856ed7dffcdf6a52eccd6551e83d8d557ceb", + "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/b27ddf458d273c7d4602106fcaf978aa0b7fe15a", + "reference": "b27ddf458d273c7d4602106fcaf978aa0b7fe15a", "shasum": "" }, "require": { @@ -28826,9 +29147,9 @@ ], "support": { "issues": "https://github.com/php-webdriver/php-webdriver/issues", - "source": "https://github.com/php-webdriver/php-webdriver/tree/1.12.0" + "source": "https://github.com/php-webdriver/php-webdriver/tree/1.12.1" }, - "time": "2021-10-14T09:30:02+00:00" + "time": "2022-05-03T12:16:34+00:00" }, { "name": "phpcompatibility/php-compatibility", @@ -29204,16 +29525,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.4.3", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "34545bb30a6f8bd86cfa371dbd42140a657bbf0d" + "reference": "367a8d9d5f7da2a0136422d27ce8840583926955" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/34545bb30a6f8bd86cfa371dbd42140a657bbf0d", - "reference": "34545bb30a6f8bd86cfa371dbd42140a657bbf0d", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/367a8d9d5f7da2a0136422d27ce8840583926955", + "reference": "367a8d9d5f7da2a0136422d27ce8840583926955", "shasum": "" }, "require": { @@ -29223,6 +29544,7 @@ "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" @@ -29242,26 +29564,26 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.4.3" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.7.0" }, - "time": "2022-04-08T11:30:34+00:00" + "time": "2022-08-09T12:23:23+00:00" }, { "name": "phpstan/phpstan", - "version": "1.2.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "cbe085f9fdead5b6d62e4c022ca52dc9427a10ee" + "reference": "c53312ecc575caf07b0e90dee43883fdf90ca67c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cbe085f9fdead5b6d62e4c022ca52dc9427a10ee", - "reference": "cbe085f9fdead5b6d62e4c022ca52dc9427a10ee", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c53312ecc575caf07b0e90dee43883fdf90ca67c", + "reference": "c53312ecc575caf07b0e90dee43883fdf90ca67c", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.2|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -29271,11 +29593,6 @@ "phpstan.phar" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -29288,7 +29605,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.2.0" + "source": "https://github.com/phpstan/phpstan/tree/1.8.2" }, "funding": [ { @@ -29308,7 +29625,7 @@ "type": "tidelift" } ], - "time": "2021-11-18T14:09:01+00:00" + "time": "2022-07-20T09:57:31+00:00" }, { "name": "phpunit/php-code-coverage", @@ -29630,16 +29947,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.20", + "version": "9.5.21", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" + "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", + "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", "shasum": "" }, "require": { @@ -29673,7 +29990,6 @@ "sebastian/version": "^3.0.2" }, "require-dev": { - "ext-pdo": "*", "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { @@ -29717,7 +30033,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" }, "funding": [ { @@ -29729,24 +30045,24 @@ "type": "github" } ], - "time": "2022-04-01T12:37:26+00:00" + "time": "2022-06-19T12:14:25+00:00" }, { "name": "psr/cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -29766,7 +30082,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -29776,30 +30092,30 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { "name": "rector/rector", - "version": "0.12.9", + "version": "0.13.10", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "8f7cfa85731bf23cff9571460d88c327c8c1ac4c" + "reference": "d1e069db8ad3b4aea2b968248370c21415e4c180" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/8f7cfa85731bf23cff9571460d88c327c8c1ac4c", - "reference": "8f7cfa85731bf23cff9571460d88c327c8c1ac4c", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/d1e069db8ad3b4aea2b968248370c21415e4c180", + "reference": "d1e069db8ad3b4aea2b968248370c21415e4c180", "shasum": "" }, "require": { - "php": "^7.1|^8.0", - "phpstan/phpstan": "^1.2" + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.8.2" }, "conflict": { - "phpstan/phpdoc-parser": "<1.2", + "phpstan/phpdoc-parser": "<1.6.2", "rector/rector-cakephp": "*", "rector/rector-doctrine": "*", "rector/rector-laravel": "*", @@ -29815,7 +30131,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.12-dev" + "dev-main": "0.13-dev" } }, "autoload": { @@ -29827,10 +30143,10 @@ "license": [ "MIT" ], - "description": "Prefixed and PHP 7.1 downgraded version of rector/rector", + "description": "Instant Upgrade and Automated Refactoring of any PHP code", "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.12.9" + "source": "https://github.com/rectorphp/rector/tree/0.13.10" }, "funding": [ { @@ -29838,7 +30154,7 @@ "type": "github" } ], - "time": "2021-12-21T23:30:38+00:00" + "time": "2022-08-03T12:48:10+00:00" }, { "name": "sebastian/cli-parser", @@ -30994,16 +31310,16 @@ }, { "name": "symfony/mime", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "92d27a34dea2e199fa9b687e3fff3a7d169b7b1c" + "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/92d27a34dea2e199fa9b687e3fff3a7d169b7b1c", - "reference": "92d27a34dea2e199fa9b687e3fff3a7d169b7b1c", + "url": "https://api.github.com/repos/symfony/mime/zipball/3cd175cdcdb6db2e589e837dd46aff41027d9830", + "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830", "shasum": "" }, "require": { @@ -31057,7 +31373,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.7" + "source": "https://github.com/symfony/mime/tree/v5.4.11" }, "funding": [ { @@ -31073,27 +31389,25 @@ "type": "tidelift" } ], - "time": "2022-03-11T16:08:05+00:00" + "time": "2022-07-20T11:34:24+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.3", + "version": "v6.1.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8" + "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cc1147cb11af1b43f503ac18f31aa3bec213aba8", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a3016f5442e28386ded73c43a32a5b68586dd1c4", + "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "type": "library", "autoload": { @@ -31126,7 +31440,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.3" + "source": "https://github.com/symfony/options-resolver/tree/v6.1.0" }, "funding": [ { @@ -31142,24 +31456,24 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.4.5", + "version": "v6.1.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30" + "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", - "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/77dedae82ce2a26e2e9b481855473fc3b3e4e54d", + "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/service-contracts": "^1|^2|^3" }, "type": "library", @@ -31188,7 +31502,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.5" + "source": "https://github.com/symfony/stopwatch/tree/v6.1.0" }, "funding": [ { @@ -31204,25 +31518,24 @@ "type": "tidelift" } ], - "time": "2022-02-18T16:06:09+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "symfony/yaml", - "version": "v5.3.14", + "version": "v5.0.11", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "c441e9d2e340642ac8b951b753dea962d55b669d" + "reference": "29b60e88ff11a45b708115004fdeacab1ee3dd5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c441e9d2e340642ac8b951b753dea962d55b669d", - "reference": "c441e9d2e340642ac8b951b753dea962d55b669d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/29b60e88ff11a45b708115004fdeacab1ee3dd5d", + "reference": "29b60e88ff11a45b708115004fdeacab1ee3dd5d", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -31234,10 +31547,12 @@ "suggest": { "symfony/console": "For validating YAML files using the lint command" }, - "bin": [ - "Resources/bin/yaml-lint" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" @@ -31260,10 +31575,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Loads and dumps YAML files", + "description": "Symfony Yaml Component", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.3.14" + "source": "https://github.com/symfony/yaml/tree/5.0" }, "funding": [ { @@ -31279,7 +31594,7 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:05:39+00:00" + "time": "2020-05-20T17:38:26+00:00" }, { "name": "theseer/tokenizer", diff --git a/src/_data/codebase/v2_4/commerce/bin-magento.json b/src/_data/codebase/v2_4/commerce/bin-magento.json index 5d07e301496..e92886a91dd 100644 --- a/src/_data/codebase/v2_4/commerce/bin-magento.json +++ b/src/_data/codebase/v2_4/commerce/bin-magento.json @@ -1,7 +1,7 @@ { "application": { "name": "Magento CLI", - "version": "2.4.4" + "version": "2.4.5" }, "commands": [ { @@ -147,6 +147,350 @@ }, "hidden": false }, + { + "name": "admin:adobe-ims:disable", + "usage": [ + "admin:adobe-ims:disable" + ], + "description": "Disable Adobe IMS Module", + "help": "Disable Adobe IMS Module", + "definition": { + "arguments": [], + "options": { + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, + { + "name": "admin:adobe-ims:enable", + "usage": [ + "admin:adobe-ims:enable [-o|--organization-id [ORGANIZATION-ID]] [-c|--client-id [CLIENT-ID]] [-s|--client-secret [CLIENT-SECRET]] [-t|--2fa [2FA]]" + ], + "description": "Enable Adobe IMS Module.", + "help": "Enable Adobe IMS Module.", + "definition": { + "arguments": [], + "options": { + "organization-id": { + "name": "--organization-id", + "shortcut": "-o", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Set Organization ID for Adobe IMS configuration. Required when enabling the module", + "default": null + }, + "client-id": { + "name": "--client-id", + "shortcut": "-c", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Set the client ID for Adobe IMS configuration. Required when enabling the module", + "default": null + }, + "client-secret": { + "name": "--client-secret", + "shortcut": "-s", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Set the client Secret for Adobe IMS configuration. Required when enabling the module", + "default": null + }, + "2fa": { + "name": "--2fa", + "shortcut": "-t", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Check if 2FA is enabled for Organization in Adobe Admin Console. Required when enabling the module", + "default": null + }, + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, + { + "name": "admin:adobe-ims:info", + "usage": [ + "admin:adobe-ims:info" + ], + "description": "Information of Adobe IMS Module configuration", + "help": "Information of Adobe IMS Module configuration", + "definition": { + "arguments": [], + "options": { + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, + { + "name": "admin:adobe-ims:status", + "usage": [ + "admin:adobe-ims:status" + ], + "description": "Status of Adobe IMS Module", + "help": "Status of Adobe IMS Module", + "definition": { + "arguments": [], + "options": { + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, { "name": "admin:user:create", "usage": [ @@ -4425,14 +4769,14 @@ "name": "indexer", "is_required": false, "is_array": false, - "description": "Indexer name [catalog_product_price]", + "description": "Indexer name [catalog_product_price|catalogpermissions_category]", "default": null }, "mode": { "name": "mode", "is_required": false, "is_array": false, - "description": "Indexer dimension modes catalog_product_price none,website,customer_group,website_and_customer_group ", + "description": "Indexer dimension modes catalog_product_price none,website,customer_group,website_and_customer_group catalogpermissions_category none,customer_group ", "default": null } }, @@ -4609,7 +4953,7 @@ "name": "indexer", "is_required": false, "is_array": true, - "description": "Space-separated list of index types or omit to apply to all indexes (catalog_product_price)", + "description": "Space-separated list of index types or omit to apply to all indexes (catalog_product_price,catalogpermissions_category)", "default": [] } }, @@ -6910,7 +7254,7 @@ { "name": "newrelic:create:deploy-marker", "usage": [ - "newrelic:create:deploy-marker []" + "newrelic:create:deploy-marker [ []]" ], "description": "Check the deploy queue for entries and create an appropriate deploy marker.", "help": "Check the deploy queue for entries and create an appropriate deploy marker.", @@ -6936,6 +7280,13 @@ "is_array": false, "description": "Deployment User", "default": null + }, + "revision": { + "name": "revision", + "is_required": false, + "is_array": false, + "description": "Revision", + "default": null } }, "options": { @@ -8079,7 +8430,7 @@ { "name": "setup:config:set", "usage": [ - "setup:config:set [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--checkout-async CHECKOUT-ASYNC] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--deferred-total-calculating DEFERRED-TOTAL-CALCULATING] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--magento-init-params MAGENTO-INIT-PARAMS]" + "setup:config:set [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--checkout-async CHECKOUT-ASYNC] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--queue-default-connection QUEUE-DEFAULT-CONNECTION] [--deferred-total-calculating DEFERRED-TOTAL-CALCULATING] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--magento-init-params MAGENTO-INIT-PARAMS]" ], "description": "Creates or modifies the deployment configuration", "help": "Creates or modifies the deployment configuration", @@ -8266,6 +8617,15 @@ "description": "Should consumers wait for a message from the queue? 1 - Yes, 0 - No", "default": null }, + "queue-default-connection": { + "name": "--queue-default-connection", + "shortcut": "", + "accept_value": true, + "is_value_required": true, + "is_multiple": false, + "description": "Message queues default connection. Can be 'db', 'amqp' or a custom queue system.The queue system must be installed and configured, otherwise messages won't be processed correctly.", + "default": null + }, "deferred-total-calculating": { "name": "--deferred-total-calculating", "shortcut": "", @@ -9872,7 +10232,7 @@ { "name": "setup:install", "usage": [ - "setup:install [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--checkout-async CHECKOUT-ASYNC] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--deferred-total-calculating DEFERRED-TOTAL-CALCULATING] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--base-url BASE-URL] [--language LANGUAGE] [--timezone TIMEZONE] [--currency CURRENCY] [--use-rewrites USE-REWRITES] [--use-secure USE-SECURE] [--base-url-secure BASE-URL-SECURE] [--use-secure-admin USE-SECURE-ADMIN] [--admin-use-security-key ADMIN-USE-SECURITY-KEY] [--admin-user [ADMIN-USER]] [--admin-password [ADMIN-PASSWORD]] [--admin-email [ADMIN-EMAIL]] [--admin-firstname [ADMIN-FIRSTNAME]] [--admin-lastname [ADMIN-LASTNAME]] [--search-engine SEARCH-ENGINE] [--elasticsearch-host ELASTICSEARCH-HOST] [--elasticsearch-port ELASTICSEARCH-PORT] [--elasticsearch-enable-auth ELASTICSEARCH-ENABLE-AUTH] [--elasticsearch-username ELASTICSEARCH-USERNAME] [--elasticsearch-password ELASTICSEARCH-PASSWORD] [--elasticsearch-index-prefix ELASTICSEARCH-INDEX-PREFIX] [--elasticsearch-timeout ELASTICSEARCH-TIMEOUT] [--cleanup-database] [--sales-order-increment-prefix SALES-ORDER-INCREMENT-PREFIX] [--use-sample-data] [--enable-modules [ENABLE-MODULES]] [--disable-modules [DISABLE-MODULES]] [--convert-old-scripts [CONVERT-OLD-SCRIPTS]] [-i|--interactive] [--safe-mode [SAFE-MODE]] [--data-restore [DATA-RESTORE]] [--dry-run [DRY-RUN]] [--magento-init-params MAGENTO-INIT-PARAMS]" + "setup:install [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--checkout-async CHECKOUT-ASYNC] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--queue-default-connection QUEUE-DEFAULT-CONNECTION] [--deferred-total-calculating DEFERRED-TOTAL-CALCULATING] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--base-url BASE-URL] [--language LANGUAGE] [--timezone TIMEZONE] [--currency CURRENCY] [--use-rewrites USE-REWRITES] [--use-secure USE-SECURE] [--base-url-secure BASE-URL-SECURE] [--use-secure-admin USE-SECURE-ADMIN] [--admin-use-security-key ADMIN-USE-SECURITY-KEY] [--admin-user [ADMIN-USER]] [--admin-password [ADMIN-PASSWORD]] [--admin-email [ADMIN-EMAIL]] [--admin-firstname [ADMIN-FIRSTNAME]] [--admin-lastname [ADMIN-LASTNAME]] [--search-engine SEARCH-ENGINE] [--elasticsearch-host ELASTICSEARCH-HOST] [--elasticsearch-port ELASTICSEARCH-PORT] [--elasticsearch-enable-auth ELASTICSEARCH-ENABLE-AUTH] [--elasticsearch-username ELASTICSEARCH-USERNAME] [--elasticsearch-password ELASTICSEARCH-PASSWORD] [--elasticsearch-index-prefix ELASTICSEARCH-INDEX-PREFIX] [--elasticsearch-timeout ELASTICSEARCH-TIMEOUT] [--cleanup-database] [--sales-order-increment-prefix SALES-ORDER-INCREMENT-PREFIX] [--use-sample-data] [--enable-modules [ENABLE-MODULES]] [--disable-modules [DISABLE-MODULES]] [--convert-old-scripts [CONVERT-OLD-SCRIPTS]] [-i|--interactive] [--safe-mode [SAFE-MODE]] [--data-restore [DATA-RESTORE]] [--dry-run [DRY-RUN]] [--magento-init-params MAGENTO-INIT-PARAMS]" ], "description": "Installs the Magento application", "help": "Installs the Magento application", @@ -10059,6 +10419,15 @@ "description": "Should consumers wait for a message from the queue? 1 - Yes, 0 - No", "default": null }, + "queue-default-connection": { + "name": "--queue-default-connection", + "shortcut": "", + "accept_value": true, + "is_value_required": true, + "is_multiple": false, + "description": "Message queues default connection. Can be 'db', 'amqp' or a custom queue system.The queue system must be installed and configured, otherwise messages won't be processed correctly.", + "default": null + }, "deferred-total-calculating": { "name": "--deferred-total-calculating", "shortcut": "", @@ -12667,6 +13036,10 @@ { "id": "admin", "commands": [ + "admin:adobe-ims:disable", + "admin:adobe-ims:enable", + "admin:adobe-ims:info", + "admin:adobe-ims:status", "admin:user:create", "admin:user:unlock" ] diff --git a/src/_data/codebase/v2_4/commerce/composer_lock.json b/src/_data/codebase/v2_4/commerce/composer_lock.json index eba9f12dfb3..b65d3ba7a30 100644 --- a/src/_data/codebase/v2_4/commerce/composer_lock.json +++ b/src/_data/codebase/v2_4/commerce/composer_lock.json @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "39956b6d93e72bb09d718d574b1d8160", + "content-hash": "a04ccba62af8f376e2ce2cab9c181b73", "packages": [ { "name": "2tvenom/cborencode", @@ -143,16 +143,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.219.1", + "version": "3.232.3", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "b35b86022c76c7f6b13d3f1be35cb317f582e253" + "reference": "96fae7f4b2ab11a3eb3fceacef7cb4b12e46b27c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/b35b86022c76c7f6b13d3f1be35cb317f582e253", - "reference": "b35b86022c76c7f6b13d3f1be35cb317f582e253", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/96fae7f4b2ab11a3eb3fceacef7cb4b12e46b27c", + "reference": "96fae7f4b2ab11a3eb3fceacef7cb4b12e46b27c", "shasum": "" }, "require": { @@ -160,9 +160,9 @@ "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "guzzlehttp/guzzle": "^5.3.3 || ^6.2.1 || ^7.0", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", "guzzlehttp/promises": "^1.4.0", - "guzzlehttp/psr7": "^1.7.0 || ^2.1.1", + "guzzlehttp/psr7": "^1.8.5 || ^2.3", "mtdowling/jmespath.php": "^2.6", "php": ">=5.5" }, @@ -170,6 +170,7 @@ "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", + "composer/composer": "^1.10.22", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", @@ -228,9 +229,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.219.1" + "source": "https://github.com/aws/aws-sdk-php/tree/3.232.3" }, - "time": "2022-04-11T18:15:54+00:00" + "time": "2022-08-08T18:19:49+00:00" }, { "name": "bacon/bacon-qr-code", @@ -464,16 +465,16 @@ }, { "name": "brick/varexporter", - "version": "0.3.5", + "version": "0.3.7", "source": { "type": "git", "url": "https://github.com/brick/varexporter.git", - "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518" + "reference": "3e263cd718d242594c52963760fee2059fd5833c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/varexporter/zipball/05241f28dfcba2b51b11e2d750e296316ebbe518", - "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518", + "url": "https://api.github.com/repos/brick/varexporter/zipball/3e263cd718d242594c52963760fee2059fd5833c", + "reference": "3e263cd718d242594c52963760fee2059fd5833c", "shasum": "" }, "require": { @@ -483,7 +484,7 @@ "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^8.5 || ^9.0", - "vimeo/psalm": "4.4.1" + "vimeo/psalm": "4.23.0" }, "type": "library", "autoload": { @@ -501,9 +502,15 @@ ], "support": { "issues": "https://github.com/brick/varexporter/issues", - "source": "https://github.com/brick/varexporter/tree/0.3.5" + "source": "https://github.com/brick/varexporter/tree/0.3.7" }, - "time": "2021-02-10T13:53:07+00:00" + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2022-06-29T23:37:57+00:00" }, { "name": "christian-riesen/base32", @@ -643,20 +650,23 @@ }, { "name": "colinmollenhour/credis", - "version": "v1.12.1", + "version": "v1.13.0", "source": { "type": "git", "url": "https://github.com/colinmollenhour/credis.git", - "reference": "c27faa11724229986335c23f4b6d0f1d8d6547fb" + "reference": "afec8e58ec93d2291c127fa19709a048f28641e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/c27faa11724229986335c23f4b6d0f1d8d6547fb", - "reference": "c27faa11724229986335c23f4b6d0f1d8d6547fb", + "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/afec8e58ec93d2291c127fa19709a048f28641e5", + "reference": "afec8e58ec93d2291c127fa19709a048f28641e5", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=5.6.0" + }, + "suggest": { + "ext-redis": "Improved performance for communicating with redis" }, "type": "library", "autoload": { @@ -681,9 +691,9 @@ "homepage": "https://github.com/colinmollenhour/credis", "support": { "issues": "https://github.com/colinmollenhour/credis/issues", - "source": "https://github.com/colinmollenhour/credis/tree/v1.12.1" + "source": "https://github.com/colinmollenhour/credis/tree/v1.13.0" }, - "time": "2020-11-06T16:09:14+00:00" + "time": "2022-04-07T14:57:22+00:00" }, { "name": "colinmollenhour/php-redis-session-abstract", @@ -731,16 +741,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.3.1", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b" + "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", - "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/30897edbfb15e784fe55587b4f73ceefd3c4d98c", + "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c", "shasum": "" }, "require": { @@ -787,7 +797,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.1" + "source": "https://github.com/composer/ca-bundle/tree/1.3.3" }, "funding": [ { @@ -803,20 +813,20 @@ "type": "tidelift" } ], - "time": "2021-10-28T20:44:15+00:00" + "time": "2022-07-20T07:14:26+00:00" }, { "name": "composer/composer", - "version": "2.2.11", + "version": "2.2.17", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "2f5bcf0480c13b4fa1ac490aa9344e4402507538" + "reference": "a8ab5070fb99396e4710baee286478ad697724c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/2f5bcf0480c13b4fa1ac490aa9344e4402507538", - "reference": "2f5bcf0480c13b4fa1ac490aa9344e4402507538", + "url": "https://api.github.com/repos/composer/composer/zipball/a8ab5070fb99396e4710baee286478ad697724c2", + "reference": "a8ab5070fb99396e4710baee286478ad697724c2", "shasum": "" }, "require": { @@ -886,7 +896,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.2.11" + "source": "https://github.com/composer/composer/tree/2.2.17" }, "funding": [ { @@ -902,7 +912,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T20:00:52+00:00" + "time": "2022-07-13T13:27:38+00:00" }, { "name": "composer/metadata-minifier", @@ -1127,16 +1137,16 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.6", + "version": "1.5.7", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "a30d487169d799745ca7280bc90fdfa693536901" + "reference": "c848241796da2abf65837d51dce1fae55a960149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a30d487169d799745ca7280bc90fdfa693536901", - "reference": "a30d487169d799745ca7280bc90fdfa693536901", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", + "reference": "c848241796da2abf65837d51dce1fae55a960149", "shasum": "" }, "require": { @@ -1187,7 +1197,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.6" + "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" }, "funding": [ { @@ -1203,7 +1213,7 @@ "type": "tidelift" } ], - "time": "2021-11-18T10:14:14+00:00" + "time": "2022-05-23T07:37:50+00:00" }, { "name": "composer/xdebug-handler", @@ -1320,23 +1330,23 @@ }, { "name": "elasticsearch/elasticsearch", - "version": "v7.16.0", + "version": "v7.17.0", "source": { "type": "git", "url": "https://github.com/elastic/elasticsearch-php.git", - "reference": "f87f93f71f564d4bbdc5f008d296d1c37d828e10" + "reference": "1890f9d7fde076b5a3ddcf579a802af05b2e781b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/f87f93f71f564d4bbdc5f008d296d1c37d828e10", - "reference": "f87f93f71f564d4bbdc5f008d296d1c37d828e10", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/1890f9d7fde076b5a3ddcf579a802af05b2e781b", + "reference": "1890f9d7fde076b5a3ddcf579a802af05b2e781b", "shasum": "" }, "require": { "ext-json": ">=1.3.7", "ezimuel/ringphp": "^1.1.2", "php": "^7.3 || ^8.0", - "psr/log": "^1|^2" + "psr/log": "^1|^2|^3" }, "require-dev": { "ext-yaml": "*", @@ -1381,22 +1391,22 @@ ], "support": { "issues": "https://github.com/elastic/elasticsearch-php/issues", - "source": "https://github.com/elastic/elasticsearch-php/tree/v7.16.0" + "source": "https://github.com/elastic/elasticsearch-php/tree/v7.17.0" }, - "time": "2021-12-09T20:04:01+00:00" + "time": "2022-02-03T13:40:04+00:00" }, { "name": "endroid/qr-code", - "version": "4.4.8", + "version": "4.4.9", "source": { "type": "git", "url": "https://github.com/endroid/qr-code.git", - "reference": "9109eb7790ece1d46b1ab40eb7f375bbd6e7cb5d" + "reference": "bf087fa1e93a1b7310e2d94d187e26ae51db199d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/qr-code/zipball/9109eb7790ece1d46b1ab40eb7f375bbd6e7cb5d", - "reference": "9109eb7790ece1d46b1ab40eb7f375bbd6e7cb5d", + "url": "https://api.github.com/repos/endroid/qr-code/zipball/bf087fa1e93a1b7310e2d94d187e26ae51db199d", + "reference": "bf087fa1e93a1b7310e2d94d187e26ae51db199d", "shasum": "" }, "require": { @@ -1447,7 +1457,7 @@ ], "support": { "issues": "https://github.com/endroid/qr-code/issues", - "source": "https://github.com/endroid/qr-code/tree/4.4.8" + "source": "https://github.com/endroid/qr-code/tree/4.4.9" }, "funding": [ { @@ -1455,7 +1465,7 @@ "type": "github" } ], - "time": "2022-04-06T09:39:20+00:00" + "time": "2022-05-10T07:25:08+00:00" }, { "name": "ezimuel/guzzlestreams", @@ -1567,6 +1577,57 @@ }, "time": "2021-11-16T11:51:30+00:00" }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.14.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "type": "library", + "autoload": { + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" + }, + "time": "2021-12-25T01:21:49+00:00" + }, { "name": "fgrosse/phpasn1", "version": "v2.4.0", @@ -1696,22 +1757,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.4.2", + "version": "7.4.5", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4" + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ac1ec1cd9b5624694c3a40be801d94137afb12b4", - "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.1", + "guzzlehttp/psr7": "^1.9 || ^2.4", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1800,7 +1861,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.2" + "source": "https://github.com/guzzle/guzzle/tree/7.4.5" }, "funding": [ { @@ -1816,7 +1877,7 @@ "type": "tidelift" } ], - "time": "2022-03-20T14:16:28+00:00" + "time": "2022-06-20T22:16:13+00:00" }, { "name": "guzzlehttp/promises", @@ -1904,16 +1965,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.2.1", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2" + "reference": "13388f00956b1503577598873fffb5ae994b5737" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2", - "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737", + "reference": "13388f00956b1503577598873fffb5ae994b5737", "shasum": "" }, "require": { @@ -1937,7 +1998,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "2.4-dev" } }, "autoload": { @@ -1999,7 +2060,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.2.1" + "source": "https://github.com/guzzle/psr7/tree/2.4.0" }, "funding": [ { @@ -2015,20 +2076,20 @@ "type": "tidelift" } ], - "time": "2022-03-20T21:55:58+00:00" + "time": "2022-06-20T21:43:11+00:00" }, { "name": "justinrainbow/json-schema", - "version": "5.2.11", + "version": "5.2.12", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa" + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", "shasum": "" }, "require": { @@ -2083,41 +2144,41 @@ ], "support": { "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.11" + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" }, - "time": "2021-07-22T09:24:00+00:00" + "time": "2022-04-13T08:02:27+00:00" }, { "name": "laminas/laminas-captcha", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-captcha.git", - "reference": "b07e499a7df73795768aa89e0138757a7ddb9195" + "reference": "debd6783ce593cb2e4cf74c3028baf1730918d85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/b07e499a7df73795768aa89e0138757a7ddb9195", - "reference": "b07e499a7df73795768aa89e0138757a7ddb9195", + "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/debd6783ce593cb2e4cf74c3028baf1730918d85", + "reference": "debd6783ce593cb2e4cf74c3028baf1730918d85", "shasum": "" }, "require": { - "laminas/laminas-math": "^2.7 || ^3.0", - "laminas/laminas-recaptcha": "^3.0", + "laminas/laminas-recaptcha": "^3.4.0", "laminas/laminas-session": "^2.12", - "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-text": "^2.8", - "laminas/laminas-validator": "^2.14", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-stdlib": "^3.10.1", + "laminas/laminas-text": "^2.9.0", + "laminas/laminas-validator": "^2.19.0", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-captcha": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.1.4", - "phpunit/phpunit": "^9.4.3", - "psalm/plugin-phpunit": "^0.15.1", - "vimeo/psalm": "^4.6" + "ext-gd": "*", + "laminas/laminas-coding-standard": "~2.3.0", + "phpunit/phpunit": "^9.5.21", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-i18n-resources": "Translations of captcha messages" @@ -2152,20 +2213,20 @@ "type": "community_bridge" } ], - "time": "2022-04-07T10:41:09+00:00" + "time": "2022-07-24T15:35:33+00:00" }, { "name": "laminas/laminas-code", - "version": "4.5.1", + "version": "4.5.2", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e" + "reference": "da01fb74c08f37e20e7ae49f1e3ee09aa401ebad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/6fd96d4d913571a2cd056a27b123fa28cb90ac4e", - "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/da01fb74c08f37e20e7ae49f1e3ee09aa401ebad", + "reference": "da01fb74c08f37e20e7ae49f1e3ee09aa401ebad", "shasum": "" }, "require": { @@ -2218,7 +2279,7 @@ "type": "community_bridge" } ], - "time": "2021-12-19T18:06:55+00:00" + "time": "2022-06-06T11:26:02+00:00" }, { "name": "laminas/laminas-config", @@ -2414,37 +2475,38 @@ }, { "name": "laminas/laminas-di", - "version": "3.4.0", + "version": "3.9.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-di.git", - "reference": "fc8a5547db10908a25b03ed16452d22318b75090" + "reference": "9b7091c50587f7ded53519d229421a02532feb9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-di/zipball/fc8a5547db10908a25b03ed16452d22318b75090", - "reference": "fc8a5547db10908a25b03ed16452d22318b75090", + "url": "https://api.github.com/repos/laminas/laminas-di/zipball/9b7091c50587f7ded53519d229421a02532feb9a", + "reference": "9b7091c50587f7ded53519d229421a02532feb9a", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^3.6", "php": ">=7.4, <8.2", "psr/container": "^1.1.1", - "psr/log": "^1.1.4" + "psr/log": "^1.1.4 || ^3.0.0" }, "conflict": { + "laminas/laminas-servicemanager": "<3.13.0", "laminas/laminas-servicemanager-di": "*", "phpspec/prophecy": "<1.9.0", "zendframework/zend-di": "*" }, "require-dev": { - "container-interop/container-interop": "^1.2.0", "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-servicemanager": "^3.7", + "laminas/laminas-servicemanager": "^3.12", "mikey179/vfsstream": "^1.6.10@alpha", + "phpbench/phpbench": "^1.2", "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^0.12.64", - "phpunit/phpunit": "^9.5.5" + "phpunit/phpunit": "^9.5.5", + "squizlabs/php_codesniffer": "^3.6" }, "suggest": { "laminas/laminas-servicemanager": "An IoC container without auto wiring capabilities" @@ -2486,37 +2548,37 @@ "type": "community_bridge" } ], - "time": "2022-02-26T15:43:05+00:00" + "time": "2022-06-30T12:29:26+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.9.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f" + "reference": "58af67282db37d24e584a837a94ee55b9c7552be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/58af67282db37d24e584a837a94ee55b9c7552be", + "reference": "58af67282db37d24e584a837a94ee55b9c7552be", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "ext-ctype": "*", + "ext-mbstring": "*", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { + "infection/infection": "^0.26.6", "laminas/laminas-coding-standard": "~2.3.0", - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.12.2", - "vimeo/psalm": "^3.16" - }, - "suggest": { - "ext-iconv": "*", - "ext-mbstring": "*" + "maglnet/composer-require-checker": "^3.8.0", + "phpunit/phpunit": "^9.5.18", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.22.0" }, "type": "library", "autoload": { @@ -2548,7 +2610,7 @@ "type": "community_bridge" } ], - "time": "2021-09-02T17:10:53+00:00" + "time": "2022-03-08T20:15:36+00:00" }, { "name": "laminas/laminas-eventmanager", @@ -2619,40 +2681,41 @@ }, { "name": "laminas/laminas-feed", - "version": "2.17.0", + "version": "2.18.2", "source": { "type": "git", "url": "https://github.com/laminas/laminas-feed.git", - "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0" + "reference": "a57fdb9df42950d5b7f052509fbdab0d081c6b6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/1ccb024ea615606ed1d676ba0fa3f22a398f3ac0", - "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0", + "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/a57fdb9df42950d5b7f052509fbdab0d081c6b6d", + "reference": "a57fdb9df42950d5b7f052509fbdab0d081c6b6d", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "laminas/laminas-escaper": "^2.9", + "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.3", "zendframework/zend-feed": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.7.2", - "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-cache": "^2.13.2 || ^3.1.3", + "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.0.0", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-db": "^2.13.3", "laminas/laminas-http": "^2.15", - "laminas/laminas-servicemanager": "^3.7", "laminas/laminas-validator": "^2.15", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.13.0", + "psalm/plugin-phpunit": "^0.17.0", "psr/http-message": "^1.0.1", - "vimeo/psalm": "^4.1" + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", @@ -2672,11 +2735,13 @@ "license": [ "BSD-3-Clause" ], - "description": "provides functionality for consuming RSS and Atom feeds", + "description": "provides functionality for creating and consuming RSS and Atom feeds", "homepage": "https://laminas.dev", "keywords": [ + "atom", "feed", - "laminas" + "laminas", + "rss" ], "support": { "chat": "https://laminas.dev/chat", @@ -2692,7 +2757,7 @@ "type": "community_bridge" } ], - "time": "2022-03-24T10:26:04+00:00" + "time": "2022-08-08T17:02:35+00:00" }, { "name": "laminas/laminas-http", @@ -2878,45 +2943,42 @@ }, { "name": "laminas/laminas-mail", - "version": "2.16.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mail.git", - "reference": "1ee1a384b96c8af29ecad9b3a7adc27a150ebc49" + "reference": "bf7504247d5a110d941efa8eb4815f5292a8dc56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/1ee1a384b96c8af29ecad9b3a7adc27a150ebc49", - "reference": "1ee1a384b96c8af29ecad9b3a7adc27a150ebc49", + "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/bf7504247d5a110d941efa8eb4815f5292a8dc56", + "reference": "bf7504247d5a110d941efa8eb4815f5292a8dc56", "shasum": "" }, "require": { "ext-iconv": "*", - "laminas/laminas-loader": "^2.8", + "laminas/laminas-loader": "^2.8.0", "laminas/laminas-mime": "^2.9.1", - "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-validator": "^2.15", - "php": "^7.3 || ~8.0.0 || ~8.1.0", - "symfony/polyfill-intl-idn": "^1.24.0", - "symfony/polyfill-mbstring": "^1.12.0", - "webmozart/assert": "^1.10" - }, - "conflict": { - "zendframework/zend-mail": "*" + "laminas/laminas-stdlib": "^3.11.0", + "laminas/laminas-validator": "^2.23.0", + "php": "~8.0.0 || ~8.1.0", + "symfony/polyfill-intl-idn": "^1.26.0", + "symfony/polyfill-mbstring": "^1.16.0", + "webmozart/assert": "^1.11.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-crypt": "^2.6 || ^3.4", - "laminas/laminas-db": "^2.13.3", - "laminas/laminas-servicemanager": "^3.7", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", - "symfony/process": "^5.3.7", - "vimeo/psalm": "^4.7" + "laminas/laminas-coding-standard": "~2.3.0", + "laminas/laminas-crypt": "^3.8.0", + "laminas/laminas-db": "^2.15.0", + "laminas/laminas-servicemanager": "^3.16.0", + "phpunit/phpunit": "^9.5.21", + "psalm/plugin-phpunit": "^0.17.0", + "symfony/process": "^6.0.11", + "vimeo/psalm": "^4.26.0" }, "suggest": { - "laminas/laminas-crypt": "Crammd5 support in SMTP Auth", - "laminas/laminas-servicemanager": "^2.7.10 || ^3.3.1 when using SMTP to deliver messages" + "laminas/laminas-crypt": "^3.8 Crammd5 support in SMTP Auth", + "laminas/laminas-servicemanager": "^3.16 when using SMTP to deliver messages" }, "type": "library", "extra": { @@ -2954,74 +3016,7 @@ "type": "community_bridge" } ], - "time": "2022-02-23T21:08:17+00:00" - }, - { - "name": "laminas/laminas-math", - "version": "3.5.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-math.git", - "reference": "146d8187ab247ae152e811a6704a953d43537381" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-math/zipball/146d8187ab247ae152e811a6704a953d43537381", - "reference": "146d8187ab247ae152e811a6704a953d43537381", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "conflict": { - "zendframework/zend-math": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^9.5.5" - }, - "suggest": { - "ext-bcmath": "If using the bcmath functionality", - "ext-gmp": "If using the gmp functionality" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev", - "dev-develop": "3.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Laminas\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Create cryptographically secure pseudo-random numbers, and manage big integers", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "math" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-math/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-math/issues", - "rss": "https://github.com/laminas/laminas-math/releases.atom", - "source": "https://github.com/laminas/laminas-math" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-12-06T02:02:07+00:00" + "time": "2022-08-06T12:27:12+00:00" }, { "name": "laminas/laminas-mime", @@ -3303,37 +3298,36 @@ }, { "name": "laminas/laminas-router", - "version": "3.5.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-router.git", - "reference": "44759e71620030c93d99e40b394fe9fff8f0beda" + "reference": "0227cc29f62583dd1ca50d17d117b832edaa8cd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-router/zipball/44759e71620030c93d99e40b394fe9fff8f0beda", - "reference": "44759e71620030c93d99e40b394fe9fff8f0beda", + "url": "https://api.github.com/repos/laminas/laminas-router/zipball/0227cc29f62583dd1ca50d17d117b832edaa8cd8", + "reference": "0227cc29f62583dd1ca50d17d117b832edaa8cd8", "shasum": "" }, "require": { - "container-interop/container-interop": "^1.2", "laminas/laminas-http": "^2.15", - "laminas/laminas-servicemanager": "^3.7", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-servicemanager": "^3.14.0", + "laminas/laminas-stdlib": "^3.10.1", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-router": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-i18n": "^2.7.4", + "laminas/laminas-i18n": "^2.15.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", - "vimeo/psalm": "^4.7" + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" }, "suggest": { - "laminas/laminas-i18n": "^2.7.4, if defining translatable HTTP path segments" + "laminas/laminas-i18n": "^2.15.0 if defining translatable HTTP path segments" }, "type": "library", "extra": { @@ -3371,7 +3365,7 @@ "type": "community_bridge" } ], - "time": "2021-10-13T16:02:43+00:00" + "time": "2022-07-18T01:39:51+00:00" }, { "name": "laminas/laminas-server", @@ -3436,16 +3430,16 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.11.2", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "8a1f4d53ec93b2e18174f6f186922ef44d11a75a" + "reference": "863c66733740cd36ebf5e700f4258ef2c68a2a24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/8a1f4d53ec93b2e18174f6f186922ef44d11a75a", - "reference": "8a1f4d53ec93b2e18174f6f186922ef44d11a75a", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/863c66733740cd36ebf5e700f4258ef2c68a2a24", + "reference": "863c66733740cd36ebf5e700f4258ef2c68a2a24", "shasum": "" }, "require": { @@ -3468,14 +3462,14 @@ "require-dev": { "composer/package-versions-deprecated": "^1.0", "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-container-config-test": "^0.6", + "laminas/laminas-container-config-test": "^0.7", "laminas/laminas-dependency-plugin": "^2.1.2", "mikey179/vfsstream": "^1.6.10@alpha", "ocramius/proxy-manager": "^2.11", "phpbench/phpbench": "^1.1", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.16.1", + "psalm/plugin-phpunit": "^0.17.0", "vimeo/psalm": "^4.8" }, "suggest": { @@ -3523,43 +3517,44 @@ "type": "community_bridge" } ], - "time": "2022-04-07T17:21:25+00:00" + "time": "2022-07-27T14:58:17+00:00" }, { "name": "laminas/laminas-session", - "version": "2.12.1", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-session.git", - "reference": "888c6a344e9a4c9f34ab6e09346640eac9be3fcf" + "reference": "9f8a6077dd22b3b253583b1be84ddd5bf6fa1ef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-session/zipball/888c6a344e9a4c9f34ab6e09346640eac9be3fcf", - "reference": "888c6a344e9a4c9f34ab6e09346640eac9be3fcf", + "url": "https://api.github.com/repos/laminas/laminas-session/zipball/9f8a6077dd22b3b253583b1be84ddd5bf6fa1ef4", + "reference": "9f8a6077dd22b3b253583b1be84ddd5bf6fa1ef4", "shasum": "" }, "require": { - "laminas/laminas-eventmanager": "^3.4", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-eventmanager": "^3.5", + "laminas/laminas-servicemanager": "^3.15.1", + "laminas/laminas-stdlib": "^3.10.1", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-session": "*" }, "require-dev": { - "container-interop/container-interop": "^1.1", - "laminas/laminas-cache": "3.0.x-dev", - "laminas/laminas-cache-storage-adapter-memory": "2.0.x-dev", - "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-cache": "^3.1.3", + "laminas/laminas-cache-storage-adapter-memory": "^2.0.0", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-db": "^2.13.4", "laminas/laminas-http": "^2.15", - "laminas/laminas-servicemanager": "^3.7", "laminas/laminas-validator": "^2.15", - "mongodb/mongodb": "v1.9.x-dev", + "mongodb/mongodb": "~1.12.0", "php-mock/php-mock-phpunit": "^1.1.2 || ^2.0", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.9" + "phpunit/phpunit": "^9.5.9", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component", @@ -3605,7 +3600,7 @@ "type": "community_bridge" } ], - "time": "2022-02-15T16:38:29+00:00" + "time": "2022-07-22T10:26:33+00:00" }, { "name": "laminas/laminas-soap", @@ -3677,16 +3672,16 @@ }, { "name": "laminas/laminas-stdlib", - "version": "3.7.1", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "bcd869e2fe88d567800057c1434f2380354fe325" + "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/bcd869e2fe88d567800057c1434f2380354fe325", - "reference": "bcd869e2fe88d567800057c1434f2380354fe325", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f", + "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f", "shasum": "" }, "require": { @@ -3699,7 +3694,7 @@ "laminas/laminas-coding-standard": "~2.3.0", "phpbench/phpbench": "^1.0", "phpunit/phpunit": "^9.3.7", - "psalm/plugin-phpunit": "^0.16.0", + "psalm/plugin-phpunit": "^0.17.0", "vimeo/psalm": "^4.7" }, "type": "library", @@ -3732,7 +3727,7 @@ "type": "community_bridge" } ], - "time": "2022-01-21T15:50:46+00:00" + "time": "2022-07-27T12:28:58+00:00" }, { "name": "laminas/laminas-text", @@ -3852,51 +3847,47 @@ }, { "name": "laminas/laminas-validator", - "version": "2.17.0", + "version": "2.23.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "bdd503adc83d814a5c94e598ea0eb9fc7ca56339" + "reference": "6d61b6cc3b222f13807a18d9247cdfb084958b03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/bdd503adc83d814a5c94e598ea0eb9fc7ca56339", - "reference": "bdd503adc83d814a5c94e598ea0eb9fc7ca56339", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/6d61b6cc3b222f13807a18d9247cdfb084958b03", + "reference": "6d61b6cc3b222f13807a18d9247cdfb084958b03", "shasum": "" }, "require": { - "container-interop/container-interop": "^1.1", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-servicemanager": "^3.12.0", + "laminas/laminas-stdlib": "^3.10", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-validator": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.6.1", - "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-db": "^2.7", - "laminas/laminas-filter": "^2.6", + "laminas/laminas-filter": "^2.14.0", "laminas/laminas-http": "^2.14.2", - "laminas/laminas-i18n": "^2.6", - "laminas/laminas-math": "^2.6", - "laminas/laminas-servicemanager": "^2.7.11 || ^3.0.3", - "laminas/laminas-session": "^2.8", - "laminas/laminas-uri": "^2.7", + "laminas/laminas-i18n": "^2.15.0", + "laminas/laminas-session": "^2.12.1", + "laminas/laminas-uri": "^2.9.1", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.0", + "phpunit/phpunit": "^9.5.21", + "psalm/plugin-phpunit": "^0.17.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.0", - "vimeo/psalm": "^4.3" + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", "laminas/laminas-filter": "Laminas\\Filter component, required by the Digits validator", "laminas/laminas-i18n": "Laminas\\I18n component to allow translation of validation error messages", "laminas/laminas-i18n-resources": "Translations of validator messages", - "laminas/laminas-math": "Laminas\\Math component, required by the Csrf validator", "laminas/laminas-servicemanager": "Laminas\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", "laminas/laminas-session": "Laminas\\Session component, ^2.8; required by the Csrf validator", "laminas/laminas-uri": "Laminas\\Uri component, required by the Uri and Sitemap\\Loc validators", @@ -3938,60 +3929,63 @@ "type": "community_bridge" } ], - "time": "2022-03-08T18:16:51+00:00" + "time": "2022-07-27T19:17:59+00:00" }, { "name": "laminas/laminas-view", - "version": "2.14.2", + "version": "2.22.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-view.git", - "reference": "ced4133462b917c62d1efc26f982a62b5e319b4b" + "reference": "ae32391bdec45ca9fc73dd0882cd7301ab07ecf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-view/zipball/ced4133462b917c62d1efc26f982a62b5e319b4b", - "reference": "ced4133462b917c62d1efc26f982a62b5e319b4b", + "url": "https://api.github.com/repos/laminas/laminas-view/zipball/ae32391bdec45ca9fc73dd0882cd7301ab07ecf3", + "reference": "ae32391bdec45ca9fc73dd0882cd7301ab07ecf3", "shasum": "" }, "require": { + "container-interop/container-interop": "^1.2", + "ext-dom": "*", + "ext-filter": "*", "ext-json": "*", + "laminas/laminas-escaper": "^2.5", "laminas/laminas-eventmanager": "^3.4", - "laminas/laminas-json": "^2.6.1 || ^3.3", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-json": "^3.3", + "laminas/laminas-servicemanager": "^3.14.0", + "laminas/laminas-stdlib": "^3.10.1", + "php": "^7.4 || ~8.0.0 || ~8.1.0", + "psr/container": "^1 || ^2" }, "conflict": { + "container-interop/container-interop": "<1.2", "laminas/laminas-router": "<3.0.1", "laminas/laminas-servicemanager": "<3.3", + "laminas/laminas-session": "<2.12", "zendframework/zend-view": "*" }, "require-dev": { - "ext-dom": "*", "laminas/laminas-authentication": "^2.5", - "laminas/laminas-cache": "^2.6.1", - "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-console": "^2.6", - "laminas/laminas-escaper": "^2.5", "laminas/laminas-feed": "^2.15", - "laminas/laminas-filter": "^2.6.1", + "laminas/laminas-filter": "^2.13.0", "laminas/laminas-http": "^2.15", "laminas/laminas-i18n": "^2.6", "laminas/laminas-modulemanager": "^2.7.1", - "laminas/laminas-mvc": "^2.7.14 || ^3.0", + "laminas/laminas-mvc": "^3.0", "laminas/laminas-mvc-i18n": "^1.1", - "laminas/laminas-mvc-plugin-flashmessenger": "^1.2", - "laminas/laminas-navigation": "^2.8.1", - "laminas/laminas-paginator": "^2.5", + "laminas/laminas-mvc-plugin-flashmessenger": "^1.5.0", + "laminas/laminas-navigation": "^2.13.1", + "laminas/laminas-paginator": "^2.11.0", "laminas/laminas-permissions-acl": "^2.6", "laminas/laminas-router": "^3.0.1", - "laminas/laminas-servicemanager": "^3.3", - "laminas/laminas-session": "^2.12", "laminas/laminas-uri": "^2.5", "phpspec/prophecy": "^1.12", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.16.1", + "psalm/plugin-phpunit": "^0.17.0", "vimeo/psalm": "^4.10" }, "suggest": { @@ -4042,20 +4036,20 @@ "type": "community_bridge" } ], - "time": "2021-11-17T12:05:00+00:00" + "time": "2022-07-19T09:25:16+00:00" }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.5.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab" + "reference": "e112dd2c099f4f6142c16fc65fda89a638e06885" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/7f049390b756d34ba5940a8fb47634fbb51f79ab", - "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/e112dd2c099f4f6142c16fc65fda89a638e06885", + "reference": "e112dd2c099f4f6142c16fc65fda89a638e06885", "shasum": "" }, "require": { @@ -4104,20 +4098,20 @@ "type": "community_bridge" } ], - "time": "2022-02-22T22:17:01+00:00" + "time": "2022-07-29T13:28:29+00:00" }, { "name": "league/flysystem", - "version": "2.3.2", + "version": "2.4.5", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "4b6da3e75b5e8eee53bb5ee46ded15a532843f80" + "reference": "9392c5f1df57d865c406ee65e5012d566686be12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4b6da3e75b5e8eee53bb5ee46ded15a532843f80", - "reference": "4b6da3e75b5e8eee53bb5ee46ded15a532843f80", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9392c5f1df57d865c406ee65e5012d566686be12", + "reference": "9392c5f1df57d865c406ee65e5012d566686be12", "shasum": "" }, "require": { @@ -4134,6 +4128,7 @@ "aws/aws-sdk-php": "^3.132.4", "composer/semver": "^3.0", "ext-fileinfo": "*", + "ext-ftp": "*", "friendsofphp/php-cs-fixer": "^3.2", "google/cloud-storage": "^1.23", "phpseclib/phpseclib": "^2.0", @@ -4173,7 +4168,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/2.3.2" + "source": "https://github.com/thephpleague/flysystem/tree/2.4.5" }, "funding": [ { @@ -4189,7 +4184,7 @@ "type": "tidelift" } ], - "time": "2021-11-28T20:19:08+00:00" + "time": "2022-04-25T18:39:39+00:00" }, { "name": "league/flysystem-aws-s3-v3", @@ -4248,16 +4243,16 @@ }, { "name": "league/mime-type-detection", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "3e4a35d756eedc67096f30240a68a3149120dae7" + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3e4a35d756eedc67096f30240a68a3149120dae7", - "reference": "3e4a35d756eedc67096f30240a68a3149120dae7", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", "shasum": "" }, "require": { @@ -4288,7 +4283,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.10.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" }, "funding": [ { @@ -4300,41 +4295,25 @@ "type": "tidelift" } ], - "time": "2022-04-11T12:49:04+00:00" - }, - { - "name": "magento/adobe-ims", - "version": "2.1.3", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/adobe-ims/magento-adobe-ims-2.1.3.0.zip", - "shasum": "d1c366fa17d053aac4d121c4839978db56e95e3a" - }, - "require": { - "magento/module-adobe-ims": "2.1.*", - "magento/module-adobe-ims-api": "2.1.*" - }, - "type": "metapackage", - "description": "Adobe IMS Integration" + "time": "2022-04-17T13:12:02+00:00" }, { "name": "magento/adobe-stock-integration", - "version": "2.1.3", + "version": "2.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/adobe-stock-integration/magento-adobe-stock-integration-2.1.3.0.zip", - "shasum": "3b8403c4f547a141c7f1c0e7646c108ecd4295d7" + "url": "https://repo.magento.com/archives/magento/adobe-stock-integration/magento-adobe-stock-integration-2.1.4.0.zip", + "shasum": "9262dee07c84dba5243b0c923ad31cfdf39d1f6f" }, "require": { - "magento/adobe-ims": "2.1.*", - "magento/module-adobe-stock-admin-ui": "1.3.*", - "magento/module-adobe-stock-asset": "1.3.*", - "magento/module-adobe-stock-asset-api": "2.0.*", - "magento/module-adobe-stock-client": "1.3.*", - "magento/module-adobe-stock-client-api": "2.1.*", - "magento/module-adobe-stock-image": "1.3.*", - "magento/module-adobe-stock-image-admin-ui": "1.3.*", - "magento/module-adobe-stock-image-api": "1.3.*" + "magento/module-adobe-stock-admin-ui": "1.3.2", + "magento/module-adobe-stock-asset": "1.3.1", + "magento/module-adobe-stock-asset-api": "2.0.1", + "magento/module-adobe-stock-client": "1.3.2", + "magento/module-adobe-stock-client-api": "2.1.2", + "magento/module-adobe-stock-image": "1.3.3", + "magento/module-adobe-stock-image-admin-ui": "1.3.3", + "magento/module-adobe-stock-image-api": "1.3.1" }, "type": "metapackage", "description": "Adobe Stock integration" @@ -4427,15 +4406,15 @@ }, { "name": "magento/framework", - "version": "103.0.4", + "version": "103.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/framework/magento-framework-103.0.4.0.zip", - "shasum": "9e691d759dcce81d0b1de726c5d33aca1a540b61" + "url": "https://repo.magento.com/archives/magento/framework/magento-framework-103.0.5.0.zip", + "shasum": "9c21fa7f70003323fdfefc9986a57afdebce9d73" }, "require": { "colinmollenhour/php-redis-session-abstract": "~1.4.5", - "composer/composer": "^1.9 || ^2.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", "ext-bcmath": "*", "ext-curl": "*", "ext-dom": "*", @@ -4447,25 +4426,26 @@ "ext-simplexml": "*", "ext-sodium": "*", "ext-xsl": "*", - "guzzlehttp/guzzle": "^7.3.0", + "ezyang/htmlpurifier": "^4.14", + "guzzlehttp/guzzle": "^7.4.2", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-escaper": "~2.9.0", + "laminas/laminas-escaper": "~2.10.0", "laminas/laminas-http": "^2.15.0", - "laminas/laminas-mail": "^2.15.1", + "laminas/laminas-mail": "^2.16.0", "laminas/laminas-mime": "^2.9.1", - "laminas/laminas-stdlib": "^3.6.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", + "laminas/laminas-validator": "^2.17.0", "lib-libxml": "*", "magento/composer-dependency-version-audit-plugin": "~0.1", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", + "monolog/monolog": "^2.7", "php": "~7.4.0||~8.1.0", "ramsey/uuid": "~4.2.0", "symfony/console": "~4.4.0", "symfony/process": "~4.4.0", "tedivm/jshrink": "~1.4.0", - "webonyx/graphql-php": "~14.11.3", + "webonyx/graphql-php": "~14.11.6", "wikimedia/less.php": "^3.0.0" }, "suggest": { @@ -4488,16 +4468,16 @@ }, { "name": "magento/framework-amqp", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/framework-amqp/magento-framework-amqp-100.4.2.0.zip", - "shasum": "ab518ba9e493be5c24a75778cad7fadbeb987edf" + "url": "https://repo.magento.com/archives/magento/framework-amqp/magento-framework-amqp-100.4.3.0.zip", + "shasum": "b55a39259d1d9cd706c4711ededcd745e9603f7d" }, "require": { "magento/framework": "103.0.*", "php": "~7.4.0||~8.1.0", - "php-amqplib/php-amqplib": "~3.1.0" + "php-amqplib/php-amqplib": "~3.2.0" }, "type": "magento2-library", "autoload": { @@ -4543,11 +4523,11 @@ }, { "name": "magento/framework-foreign-key", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/framework-foreign-key/magento-framework-foreign-key-100.4.3.0.zip", - "shasum": "58f2da45390ba2d6dcf9c030eb9e2fa98b8d3de1" + "url": "https://repo.magento.com/archives/magento/framework-foreign-key/magento-framework-foreign-key-100.4.4.0.zip", + "shasum": "2a40b2e82e37a9df84e549c8ee1b015ea431cf68" }, "require": { "magento/framework": "103.0.*", @@ -4570,11 +4550,11 @@ }, { "name": "magento/framework-message-queue", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/framework-message-queue/magento-framework-message-queue-100.4.4.0.zip", - "shasum": "38ba5f46176d13cea8e3a52b6c293fb6c6e3c93d" + "url": "https://repo.magento.com/archives/magento/framework-message-queue/magento-framework-message-queue-100.4.5.0.zip", + "shasum": "6b31ce9cba29824f5c2f2d29841ecc889c8c2a2d" }, "require": { "magento/framework": "103.0.*", @@ -4653,86 +4633,86 @@ }, { "name": "magento/inventory-metapackage", - "version": "1.2.4", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/inventory-metapackage/magento-inventory-metapackage-1.2.4.0.zip", - "shasum": "43cac12a1f37677c29ad8ea375081bbdd92df39b" - }, - "require": { - "magento/inventory-composer-installer": "1.2.0", - "magento/module-inventory": "1.2.*", - "magento/module-inventory-admin-ui": "1.2.*", - "magento/module-inventory-advanced-checkout": "1.2.*", - "magento/module-inventory-api": "1.2.*", - "magento/module-inventory-bundle-import-export": "1.1.*", - "magento/module-inventory-bundle-product": "1.2.*", - "magento/module-inventory-bundle-product-admin-ui": "1.2.*", - "magento/module-inventory-bundle-product-indexer": "1.1.*", - "magento/module-inventory-cache": "1.2.*", - "magento/module-inventory-catalog": "1.2.*", - "magento/module-inventory-catalog-admin-ui": "1.2.*", - "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-catalog-frontend-ui": "1.0.*", - "magento/module-inventory-catalog-search": "1.2.*", - "magento/module-inventory-catalog-search-bundle-product": "1.0.*", - "magento/module-inventory-catalog-search-configurable-product": "1.0.*", - "magento/module-inventory-configurable-product": "1.2.*", - "magento/module-inventory-configurable-product-admin-ui": "1.2.*", - "magento/module-inventory-configurable-product-frontend-ui": "1.0.*", - "magento/module-inventory-configurable-product-indexer": "1.2.*", - "magento/module-inventory-configuration": "1.2.*", - "magento/module-inventory-configuration-api": "1.2.*", - "magento/module-inventory-distance-based-source-selection": "1.2.*", - "magento/module-inventory-distance-based-source-selection-admin-ui": "1.2.*", - "magento/module-inventory-distance-based-source-selection-api": "1.2.*", - "magento/module-inventory-elasticsearch": "1.2.*", - "magento/module-inventory-export-stock": "1.2.*", - "magento/module-inventory-export-stock-api": "1.2.*", - "magento/module-inventory-graph-ql": "1.2.*", - "magento/module-inventory-grouped-product": "1.2.*", - "magento/module-inventory-grouped-product-admin-ui": "1.2.*", - "magento/module-inventory-grouped-product-indexer": "1.2.*", - "magento/module-inventory-import-export": "1.2.*", - "magento/module-inventory-in-store-pickup": "1.1.*", - "magento/module-inventory-in-store-pickup-admin-ui": "1.1.*", - "magento/module-inventory-in-store-pickup-api": "1.1.*", - "magento/module-inventory-in-store-pickup-frontend": "1.1.*", - "magento/module-inventory-in-store-pickup-graph-ql": "1.1.*", - "magento/module-inventory-in-store-pickup-multishipping": "1.1.*", - "magento/module-inventory-in-store-pickup-quote": "1.1.*", - "magento/module-inventory-in-store-pickup-quote-graph-ql": "1.1.*", - "magento/module-inventory-in-store-pickup-sales": "1.1.*", - "magento/module-inventory-in-store-pickup-sales-admin-ui": "1.1.*", - "magento/module-inventory-in-store-pickup-sales-api": "1.1.*", - "magento/module-inventory-in-store-pickup-shipping": "1.1.*", - "magento/module-inventory-in-store-pickup-shipping-admin-ui": "1.1.*", - "magento/module-inventory-in-store-pickup-shipping-api": "1.1.*", - "magento/module-inventory-in-store-pickup-webapi-extension": "1.1.*", - "magento/module-inventory-indexer": "2.1.*", - "magento/module-inventory-low-quantity-notification": "1.2.*", - "magento/module-inventory-low-quantity-notification-admin-ui": "1.2.*", - "magento/module-inventory-low-quantity-notification-api": "1.2.*", - "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", - "magento/module-inventory-product-alert": "1.2.*", - "magento/module-inventory-quote-graph-ql": "1.0.*", - "magento/module-inventory-requisition-list": "1.2.*", - "magento/module-inventory-reservation-cli": "1.2.*", - "magento/module-inventory-reservations": "1.2.*", - "magento/module-inventory-reservations-api": "1.2.*", - "magento/module-inventory-sales": "1.2.*", - "magento/module-inventory-sales-admin-ui": "1.2.*", - "magento/module-inventory-sales-api": "1.2.*", - "magento/module-inventory-sales-frontend-ui": "1.2.*", - "magento/module-inventory-setup-fixture-generator": "1.2.*", - "magento/module-inventory-shipping": "1.2.*", - "magento/module-inventory-shipping-admin-ui": "1.2.*", - "magento/module-inventory-source-deduction-api": "1.2.*", - "magento/module-inventory-source-selection": "1.2.*", - "magento/module-inventory-source-selection-api": "1.4.*", - "magento/module-inventory-swatches-frontend-ui": "1.0.*", - "magento/module-inventory-visual-merchandiser": "1.1.*", - "magento/module-inventory-wishlist": "1.0.*" + "version": "1.2.5", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/inventory-metapackage/magento-inventory-metapackage-1.2.5.0.zip", + "shasum": "43fcf8211b3f173561b33672d0f0b3522baa350b" + }, + "require": { + "magento/inventory-composer-installer": "^1.2.0", + "magento/module-inventory": "1.2.3", + "magento/module-inventory-admin-ui": "1.2.3", + "magento/module-inventory-advanced-checkout": "1.2.2", + "magento/module-inventory-api": "1.2.3", + "magento/module-inventory-bundle-import-export": "1.1.1", + "magento/module-inventory-bundle-product": "1.2.2", + "magento/module-inventory-bundle-product-admin-ui": "1.2.2", + "magento/module-inventory-bundle-product-indexer": "1.1.2", + "magento/module-inventory-cache": "1.2.3", + "magento/module-inventory-catalog": "1.3.0", + "magento/module-inventory-catalog-admin-ui": "1.2.3", + "magento/module-inventory-catalog-api": "1.3.3", + "magento/module-inventory-catalog-frontend-ui": "1.0.2", + "magento/module-inventory-catalog-search": "1.2.3", + "magento/module-inventory-catalog-search-bundle-product": "1.0.1", + "magento/module-inventory-catalog-search-configurable-product": "1.0.1", + "magento/module-inventory-configurable-product": "1.2.3", + "magento/module-inventory-configurable-product-admin-ui": "1.2.3", + "magento/module-inventory-configurable-product-frontend-ui": "1.0.3", + "magento/module-inventory-configurable-product-indexer": "1.2.3", + "magento/module-inventory-configuration": "1.2.2", + "magento/module-inventory-configuration-api": "1.2.1", + "magento/module-inventory-distance-based-source-selection": "1.2.2", + "magento/module-inventory-distance-based-source-selection-admin-ui": "1.2.1", + "magento/module-inventory-distance-based-source-selection-api": "1.2.1", + "magento/module-inventory-elasticsearch": "1.2.2", + "magento/module-inventory-export-stock": "1.2.2", + "magento/module-inventory-export-stock-api": "1.2.1", + "magento/module-inventory-graph-ql": "1.2.2", + "magento/module-inventory-grouped-product": "1.3.0", + "magento/module-inventory-grouped-product-admin-ui": "1.2.2", + "magento/module-inventory-grouped-product-indexer": "1.2.3", + "magento/module-inventory-import-export": "1.2.3", + "magento/module-inventory-in-store-pickup": "1.1.1", + "magento/module-inventory-in-store-pickup-admin-ui": "1.1.2", + "magento/module-inventory-in-store-pickup-api": "1.1.1", + "magento/module-inventory-in-store-pickup-frontend": "1.1.3", + "magento/module-inventory-in-store-pickup-graph-ql": "1.1.2", + "magento/module-inventory-in-store-pickup-multishipping": "1.1.1", + "magento/module-inventory-in-store-pickup-quote": "1.1.1", + "magento/module-inventory-in-store-pickup-quote-graph-ql": "1.1.1", + "magento/module-inventory-in-store-pickup-sales": "1.1.1", + "magento/module-inventory-in-store-pickup-sales-admin-ui": "1.1.3", + "magento/module-inventory-in-store-pickup-sales-api": "1.1.1", + "magento/module-inventory-in-store-pickup-shipping": "1.1.2", + "magento/module-inventory-in-store-pickup-shipping-admin-ui": "1.1.1", + "magento/module-inventory-in-store-pickup-shipping-api": "1.1.1", + "magento/module-inventory-in-store-pickup-webapi-extension": "1.1.1", + "magento/module-inventory-indexer": "2.2.0", + "magento/module-inventory-low-quantity-notification": "1.2.2", + "magento/module-inventory-low-quantity-notification-admin-ui": "1.2.2", + "magento/module-inventory-low-quantity-notification-api": "1.2.2", + "magento/module-inventory-multi-dimensional-indexer-api": "1.2.1", + "magento/module-inventory-product-alert": "1.2.2", + "magento/module-inventory-quote-graph-ql": "1.0.2", + "magento/module-inventory-requisition-list": "1.2.3", + "magento/module-inventory-reservation-cli": "1.2.2", + "magento/module-inventory-reservations": "1.2.1", + "magento/module-inventory-reservations-api": "1.2.1", + "magento/module-inventory-sales": "1.3.0", + "magento/module-inventory-sales-admin-ui": "1.2.3", + "magento/module-inventory-sales-api": "1.2.2", + "magento/module-inventory-sales-frontend-ui": "1.2.2", + "magento/module-inventory-setup-fixture-generator": "1.2.1", + "magento/module-inventory-shipping": "1.2.2", + "magento/module-inventory-shipping-admin-ui": "1.2.3", + "magento/module-inventory-source-deduction-api": "1.2.2", + "magento/module-inventory-source-selection": "1.2.1", + "magento/module-inventory-source-selection-api": "1.4.2", + "magento/module-inventory-swatches-frontend-ui": "1.0.1", + "magento/module-inventory-visual-merchandiser": "1.1.3", + "magento/module-inventory-wishlist": "1.0.2" }, "type": "metapackage", "description": "Metapackage with Magento Inventory modules for simple installation" @@ -4980,40 +4960,35 @@ }, { "name": "magento/magento2-base", - "version": "2.4.4", + "version": "2.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/magento2-base/magento-magento2-base-2.4.4.0.zip", - "shasum": "7440b3afbea45bad8480e7b4385050376a8c893a" + "url": "https://repo.magento.com/archives/magento/magento2-base/magento-magento2-base-2.4.5.0.zip", + "shasum": "e13eb657292ecb4851e6cead6012c27353fd4d85" }, "require": { - "composer/composer": "^1.9 || ^2.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", "ext-intl": "*", "ext-mbstring": "*", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-di": "^3.3.0", - "laminas/laminas-eventmanager": "^3.4.0", + "laminas/laminas-di": "^3.7.0", + "laminas/laminas-eventmanager": "^3.5.0", "laminas/laminas-http": "^2.15.0", - "laminas/laminas-json": "^3.3.0", "laminas/laminas-modulemanager": "^2.11.0", - "laminas/laminas-mvc": "^3.3.0", - "laminas/laminas-server": "^2.11.0", - "laminas/laminas-servicemanager": "^3.10.0", + "laminas/laminas-mvc": "^3.3.3", + "laminas/laminas-servicemanager": "^3.11.0", "laminas/laminas-soap": "^2.10.0", - "laminas/laminas-stdlib": "^3.6.0", - "laminas/laminas-text": "^2.9.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", - "laminas/laminas-view": "~2.14.1", + "laminas/laminas-validator": "^2.17.0", "magento/composer": "~1.8.0", "magento/magento-composer-installer": "*", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", + "monolog/monolog": "^2.7", "pelago/emogrifier": "^6.0.0", "php": "~7.4.0||~8.1.0", - "phpseclib/phpseclib": "~3.0.9", + "phpseclib/phpseclib": "~3.0.13", "symfony/console": "~4.4.0", - "symfony/event-dispatcher": "~4.4.0", "tedivm/jshrink": "~1.4.0", "tubalmartin/cssmin": "4.1.1" }, @@ -5357,6 +5332,14 @@ "lib/web/jquery.js", "lib/web/jquery.js" ], + [ + "lib/web/js-cookie", + "lib/web/js-cookie" + ], + [ + "lib/web/js-storage", + "lib/web/js-storage" + ], [ "lib/web/knockoutjs", "lib/web/knockoutjs" @@ -5421,6 +5404,10 @@ "lib/web/varien", "lib/web/varien" ], + [ + "lib/web/vimeo", + "lib/web/vimeo" + ], [ "nginx.conf.sample", "nginx.conf.sample" @@ -5527,40 +5514,37 @@ }, { "name": "magento/magento2-ee-base", - "version": "2.4.4", + "version": "2.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/magento2-ee-base/magento-magento2-ee-base-2.4.4.0.zip", - "shasum": "e4b61f4c014b2533696b6b5acea1186cdf62c559" + "url": "https://repo.magento.com/archives/magento/magento2-ee-base/magento-magento2-ee-base-2.4.5.0.zip", + "shasum": "6dbcfc6c57b052ee01a66d9cde9f03f6d2937e1e" }, "require": { - "composer/composer": "^1.9 || ^2.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", "ext-intl": "*", "ext-mbstring": "*", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-di": "^3.3.0", - "laminas/laminas-eventmanager": "^3.4.0", + "laminas/laminas-di": "^3.7.0", + "laminas/laminas-eventmanager": "^3.5.0", "laminas/laminas-http": "^2.15.0", "laminas/laminas-json": "^3.3.0", "laminas/laminas-modulemanager": "^2.11.0", - "laminas/laminas-mvc": "^3.3.0", - "laminas/laminas-server": "^2.11.0", - "laminas/laminas-servicemanager": "^3.10.0", + "laminas/laminas-mvc": "^3.3.3", + "laminas/laminas-server": "^2.11.1", + "laminas/laminas-servicemanager": "^3.11.0", "laminas/laminas-soap": "^2.10.0", - "laminas/laminas-stdlib": "^3.6.0", - "laminas/laminas-text": "^2.9.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", - "laminas/laminas-view": "~2.14.1", + "laminas/laminas-validator": "^2.17.0", "magento/composer": "~1.8.0", "magento/magento-composer-installer": "*", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", + "monolog/monolog": "^2.7", "pelago/emogrifier": "^6.0.0", "php": "~7.4.0||~8.1.0", - "phpseclib/phpseclib": "~3.0.9", + "phpseclib/phpseclib": "~3.0.13", "symfony/console": "~4.4.0", - "symfony/event-dispatcher": "~4.4.0", "tedivm/jshrink": "~1.4.0", "tubalmartin/cssmin": "4.1.1" }, @@ -5588,6 +5572,10 @@ "SECURITY.md", "SECURITY.md" ], + [ + "app/design/adminhtml/Magento", + "app/design/adminhtml/Magento" + ], [ "dev/tests/acceptance", "dev/tests/acceptance" @@ -5616,6 +5604,10 @@ "dev/tests/static/testsuite/Magento", "dev/tests/static/testsuite/Magento" ], + [ + "dev/tests/unit/Magento_Theme", + "dev/tests/unit/Magento_Theme" + ], [ "dev/tools", "dev/tools" @@ -5635,6 +5627,48 @@ ], "description": "Magento 2 Base (Enterprise Edition)" }, + { + "name": "magento/module-admin-adobe-ims", + "version": "100.4.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-admin-adobe-ims/magento-module-admin-adobe-ims-100.4.0.0.zip", + "shasum": "4156ce687b5a382100832eabdc3e16833ee448df" + }, + "require": { + "magento/framework": "103.0.*", + "magento/module-adobe-ims": "2.1.*", + "magento/module-adobe-ims-api": "2.1.*", + "magento/module-authorization": "100.4.*", + "magento/module-backend": "102.0.*", + "magento/module-captcha": "100.4.*", + "magento/module-config": "101.2.*", + "magento/module-email": "101.1.*", + "magento/module-integration": "100.4.*", + "magento/module-jwt-user-token": "100.4.*", + "magento/module-security": "100.4.*", + "magento/module-store": "101.1.*", + "magento/module-user": "101.2.*", + "php": "~7.4.0||~8.1.0" + }, + "suggest": { + "magento/module-theme": "101.1.*" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\AdminAdobeIms\\": "" + } + }, + "license": [ + "OSL-3.0", + "AFL-3.0" + ], + "description": "N/A" + }, { "name": "magento/module-admin-analytics", "version": "100.4.4", @@ -5669,11 +5703,11 @@ }, { "name": "magento/module-admin-gws", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-admin-gws/magento-module-admin-gws-100.4.4.0.zip", - "shasum": "fb4bac1bb4684b5e4d82996b09fab1a3e7f61888" + "url": "https://repo.magento.com/archives/magento/module-admin-gws/magento-module-admin-gws-100.4.5.0.zip", + "shasum": "a5ace66d19c4cca7902241e505cec1b533d94d5e" }, "require": { "magento/framework": "103.0.*", @@ -5780,11 +5814,11 @@ }, { "name": "magento/module-admin-notification", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-admin-notification/magento-module-admin-notification-100.4.3.0.zip", - "shasum": "5d988263ee6c4773be68e75c593e9377d83ce289" + "url": "https://repo.magento.com/archives/magento/module-admin-notification/magento-module-admin-notification-100.4.4.0.zip", + "shasum": "4b69f736921da0d98e7110160e34eeaa1c176867" }, "require": { "lib-libxml": "*", @@ -5813,19 +5847,19 @@ }, { "name": "magento/module-adobe-ims", - "version": "2.1.3", + "version": "2.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-ims/magento-module-adobe-ims-2.1.3.0.zip", - "shasum": "dce2f760e97eb2279bbc16c473aa2a8d9fe3fd52" + "url": "https://repo.magento.com/archives/magento/module-adobe-ims/magento-module-adobe-ims-2.1.4.0.zip", + "shasum": "b197a11dcb55ceff89040bf2effb5c86f5fe58fb" }, "require": { - "magento/framework": "*", + "magento/framework": "103.0.*", "magento/module-adobe-ims-api": "2.1.*", - "magento/module-authorization": "*", - "magento/module-backend": "*", - "magento/module-config": "*", - "magento/module-user": "*", + "magento/module-authorization": "100.4.*", + "magento/module-backend": "102.0.*", + "magento/module-config": "101.2.*", + "magento/module-user": "101.2.*", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -5845,14 +5879,14 @@ }, { "name": "magento/module-adobe-ims-api", - "version": "2.1.1", + "version": "2.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-ims-api/magento-module-adobe-ims-api-2.1.1.0.zip", - "shasum": "0946ea5f6bd9fb3b8b156f86f2de1e3fe1002e13" + "url": "https://repo.magento.com/archives/magento/module-adobe-ims-api/magento-module-adobe-ims-api-2.1.2.0.zip", + "shasum": "1a007affad473b7a2a9ea26a4eb4e5c78976a652" }, "require": { - "magento/framework": "*", + "magento/framework": "103.0.*", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -5872,15 +5906,16 @@ }, { "name": "magento/module-adobe-stock-admin-ui", - "version": "1.3.1", + "version": "1.3.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-admin-ui/magento-module-adobe-stock-admin-ui-1.3.1.0.zip", - "shasum": "540fb058a7ed45b09aa1bc5f7ee0097d01566372" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-admin-ui/magento-module-adobe-stock-admin-ui-1.3.2.0.zip", + "shasum": "ff5cbd91546731bd2b853297b43f1db5b21232f2" }, "require": { "magento/framework": "*", - "magento/module-adobe-ims-api": "2.1.*", + "magento/module-admin-adobe-ims": "*", + "magento/module-adobe-ims-api": "*", "magento/module-adobe-stock-client-api": "2.1.*", "magento/module-backend": "*", "magento/module-config": "*", @@ -5995,11 +6030,11 @@ }, { "name": "magento/module-adobe-stock-client-api", - "version": "2.1.1", + "version": "2.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-client-api/magento-module-adobe-stock-client-api-2.1.1.0.zip", - "shasum": "bce37cae6d4a5d0ad1260bb389a289240c160741" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-client-api/magento-module-adobe-stock-client-api-2.1.2.0.zip", + "shasum": "6f8432b49d8f5540209363f382cb95237c4896c3" }, "require": { "magento/framework": "*", @@ -6022,11 +6057,11 @@ }, { "name": "magento/module-adobe-stock-image", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image/magento-module-adobe-stock-image-1.3.2.0.zip", - "shasum": "a116421a7b9dbca984eece349ff51332bd74924a" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image/magento-module-adobe-stock-image-1.3.3.0.zip", + "shasum": "037ce2d3b4a06459a39f9fc1691a5f734fafd1d1" }, "require": { "magento/framework": "*", @@ -6057,16 +6092,16 @@ }, { "name": "magento/module-adobe-stock-image-admin-ui", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image-admin-ui/magento-module-adobe-stock-image-admin-ui-1.3.2.0.zip", - "shasum": "016c4e5f9ba004d444221db6aad48b330448ad93" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image-admin-ui/magento-module-adobe-stock-image-admin-ui-1.3.3.0.zip", + "shasum": "a328204741bde5fd1d954a1db8cfac1f24d8e0d1" }, "require": { "magento/framework": "*", - "magento/module-adobe-ims": "2.1.*", - "magento/module-adobe-ims-api": "2.1.*", + "magento/module-adobe-ims": "*", + "magento/module-adobe-ims-api": "*", "magento/module-adobe-stock-asset-api": "2.0.*", "magento/module-adobe-stock-client-api": "2.1.*", "magento/module-adobe-stock-image-api": "1.3.*", @@ -6153,11 +6188,11 @@ }, { "name": "magento/module-advanced-checkout", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-advanced-checkout/magento-module-advanced-checkout-100.4.4.0.zip", - "shasum": "a45d41885ae85b2d3c69e4fbf3ff9b09bcc2f26b" + "url": "https://repo.magento.com/archives/magento/module-advanced-checkout/magento-module-advanced-checkout-100.4.5.0.zip", + "shasum": "310f8106ef5a187fb128f57b4057ae6c5ca6ad47" }, "require": { "magento/framework": "103.0.*", @@ -6198,11 +6233,11 @@ }, { "name": "magento/module-advanced-pricing-import-export", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-advanced-pricing-import-export/magento-module-advanced-pricing-import-export-100.4.4.0.zip", - "shasum": "dc456cd47d71b897a5f0ed77349c39769268a08e" + "url": "https://repo.magento.com/archives/magento/module-advanced-pricing-import-export/magento-module-advanced-pricing-import-export-100.4.5.0.zip", + "shasum": "360f3aa063ca1aba96b8e6f50d418042b40cd65d" }, "require": { "magento/framework": "103.0.*", @@ -6233,11 +6268,11 @@ }, { "name": "magento/module-advanced-rule", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-advanced-rule/magento-module-advanced-rule-100.4.1.0.zip", - "shasum": "3ea6fcb83d7ccf1804aa674cd5e15ccff7b50c6e" + "url": "https://repo.magento.com/archives/magento/module-advanced-rule/magento-module-advanced-rule-100.4.2.0.zip", + "shasum": "02ce0567b9b6a5484c7561435fd697afbc760b21" }, "require": { "magento/framework": "103.0.*", @@ -6295,11 +6330,11 @@ }, { "name": "magento/module-advanced-search", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-advanced-search/magento-module-advanced-search-100.4.2.0.zip", - "shasum": "09972db7e8b51e2100e9875d30ded250c554a5ad" + "url": "https://repo.magento.com/archives/magento/module-advanced-search/magento-module-advanced-search-100.4.3.0.zip", + "shasum": "724b211b50a10f316f0b400e0e9d65ea7114a808" }, "require": { "magento/framework": "103.0.*", @@ -6356,46 +6391,13 @@ ], "description": "N/A" }, - { - "name": "magento/module-amqp-store", - "version": "100.4.2", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-amqp-store/magento-module-amqp-store-100.4.2.0.zip", - "shasum": "f9fbdb0168022ed576753c2ad15808ed2de11239" - }, - "require": { - "magento/framework": "103.0.*", - "magento/framework-amqp": "100.4.*", - "magento/module-store": "101.1.*", - "php": "~7.4.0||~8.1.0" - }, - "suggest": { - "magento/framework-message-queue": "100.4.*", - "magento/module-asynchronous-operations": "100.4.*" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\AmqpStore\\": "" - } - }, - "license": [ - "OSL-3.0", - "AFL-3.0" - ], - "description": "N/A" - }, { "name": "magento/module-analytics", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-analytics/magento-module-analytics-100.4.4.0.zip", - "shasum": "8463c99cf6ca687993a00020fdb06a5d98c6bc1d" + "url": "https://repo.magento.com/archives/magento/module-analytics/magento-module-analytics-100.4.5.0.zip", + "shasum": "55494bfc5963099ac0d2098f2e0995044baa9084" }, "require": { "magento/framework": "103.0.*", @@ -6422,11 +6424,11 @@ }, { "name": "magento/module-async-order", - "version": "100.4.0", + "version": "100.4.1", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-async-order/magento-module-async-order-100.4.0.0.zip", - "shasum": "380e8dbe2f5a12df33154fc136ccc04e4981074b" + "url": "https://repo.magento.com/archives/magento/module-async-order/magento-module-async-order-100.4.1.0.zip", + "shasum": "33dc9578c01023ab53bd64a1a9bab65915bc0eee" }, "require": { "magento/framework": "103.0.*", @@ -6494,11 +6496,11 @@ }, { "name": "magento/module-asynchronous-operations", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-asynchronous-operations/magento-module-asynchronous-operations-100.4.4.0.zip", - "shasum": "3b7cebfc7b227ba8872ff3dd768ee5781c26d844" + "url": "https://repo.magento.com/archives/magento/module-asynchronous-operations/magento-module-asynchronous-operations-100.4.5.0.zip", + "shasum": "0da25cb7acdf1862079994164bf445d8ac7f6af5" }, "require": { "magento/framework": "103.0.*", @@ -6530,11 +6532,11 @@ }, { "name": "magento/module-authorization", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-authorization/magento-module-authorization-100.4.4.0.zip", - "shasum": "7f94d3c40f8d836c84bd6547889047e00692ca09" + "url": "https://repo.magento.com/archives/magento/module-authorization/magento-module-authorization-100.4.5.0.zip", + "shasum": "06afa70d3b4b0cc033421bbac7c5aa3d24bebdbb" }, "require": { "magento/framework": "103.0.*", @@ -6558,15 +6560,13 @@ }, { "name": "magento/module-aws-s3", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-aws-s3/magento-module-aws-s3-100.4.2.0.zip", - "shasum": "3abe1e90d75ad2db23906325dbbfbc6913c58e00" + "url": "https://repo.magento.com/archives/magento/module-aws-s3/magento-module-aws-s3-100.4.3.0.zip", + "shasum": "235195c1e6193498bbed2d3fa1951a5aaf293d6b" }, "require": { - "league/flysystem": "^2.0", - "league/flysystem-aws-s3-v3": "^2.0", "magento/framework": "103.0.*", "magento/module-remote-storage": "100.4.*", "php": "~7.4.0||~8.1.0" @@ -6618,11 +6618,11 @@ }, { "name": "magento/module-aws-s3-gift-card-import-export", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-aws-s3-gift-card-import-export/magento-module-aws-s3-gift-card-import-export-100.4.1.0.zip", - "shasum": "866807716ea5012f7cbff61176d201b2ce25fb3b" + "url": "https://repo.magento.com/archives/magento/module-aws-s3-gift-card-import-export/magento-module-aws-s3-gift-card-import-export-100.4.2.0.zip", + "shasum": "1742de12a1c9f50a19122024ac03fb633e82db78" }, "require": { "magento/framework": "103.0.*", @@ -6679,11 +6679,11 @@ }, { "name": "magento/module-aws-s3-scheduled-import-export", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-aws-s3-scheduled-import-export/magento-module-aws-s3-scheduled-import-export-100.4.1.0.zip", - "shasum": "b90222a8d78c0793bb1b03f42d452377a3f8caed" + "url": "https://repo.magento.com/archives/magento/module-aws-s3-scheduled-import-export/magento-module-aws-s3-scheduled-import-export-100.4.2.0.zip", + "shasum": "d2d5a1c0354cc2abd8aff7619f5b0e20c720ae26" }, "require": { "magento/framework": "103.0.*", @@ -6710,11 +6710,11 @@ }, { "name": "magento/module-backend", - "version": "102.0.4", + "version": "102.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-backend/magento-module-backend-102.0.4.0.zip", - "shasum": "4f75d59880b3a8af1c8b0299e47f322e4b38ebba" + "url": "https://repo.magento.com/archives/magento/module-backend/magento-module-backend-102.0.5.0.zip", + "shasum": "2a4f15e0c559c680151184e75d318c077c78d306" }, "require": { "magento/framework": "103.0.*", @@ -6758,11 +6758,11 @@ }, { "name": "magento/module-backup", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-backup/magento-module-backup-100.4.4.0.zip", - "shasum": "2ed47abed34b081913c248bc52ba6dafc151f809" + "url": "https://repo.magento.com/archives/magento/module-backup/magento-module-backup-100.4.5.0.zip", + "shasum": "9d5b5a27ddb44e4f657973e8b1a9bac810cad8b3" }, "require": { "magento/framework": "103.0.*", @@ -6788,11 +6788,11 @@ }, { "name": "magento/module-banner", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-banner/magento-module-banner-101.2.4.0.zip", - "shasum": "c57c6cadf39139e7875953c48fa465db37899704" + "url": "https://repo.magento.com/archives/magento/module-banner/magento-module-banner-101.2.5.0.zip", + "shasum": "bd9f083e5c90d3c1e93a22ae8b4ff761af9e9b50" }, "require": { "magento/framework": "103.0.*", @@ -6826,11 +6826,11 @@ }, { "name": "magento/module-banner-customer-segment", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-banner-customer-segment/magento-module-banner-customer-segment-100.4.2.0.zip", - "shasum": "8d33e8d5f7e57e65eaf98a5947ea45f7d9ffc2d2" + "url": "https://repo.magento.com/archives/magento/module-banner-customer-segment/magento-module-banner-customer-segment-100.4.3.0.zip", + "shasum": "0192bc2f2dce6b852ea08bafc91bf0b7564be260" }, "require": { "magento/framework": "103.0.*", @@ -6886,11 +6886,11 @@ }, { "name": "magento/module-banner-page-builder", - "version": "2.2.2", + "version": "2.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-banner-page-builder/magento-module-banner-page-builder-2.2.2.0.zip", - "shasum": "2928123c2fa3912a4a22c1f6d9ce3597a47813b7" + "url": "https://repo.magento.com/archives/magento/module-banner-page-builder/magento-module-banner-page-builder-2.2.3.0.zip", + "shasum": "f7684c4135b83ab0809a3531e68163cf8ddeb8e4" }, "require": { "magento/framework": "*", @@ -6947,11 +6947,11 @@ }, { "name": "magento/module-bundle", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle/magento-module-bundle-101.0.4.0.zip", - "shasum": "1d6820458bd78a2042179df3787f178a2c665455" + "url": "https://repo.magento.com/archives/magento/module-bundle/magento-module-bundle-101.0.5.0.zip", + "shasum": "61ebcbfa47ff60a56c573229038c3f57fba09515" }, "require": { "magento/framework": "103.0.*", @@ -6995,11 +6995,11 @@ }, { "name": "magento/module-bundle-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-graph-ql/magento-module-bundle-graph-ql-100.4.4.0.zip", - "shasum": "87ab4371ee816aa6547040735d40760ae96716e9" + "url": "https://repo.magento.com/archives/magento/module-bundle-graph-ql/magento-module-bundle-graph-ql-100.4.5.0.zip", + "shasum": "86f8582bf18bfa03e4adc6c725db5dcc78ba394b" }, "require": { "magento/framework": "103.0.*", @@ -7031,11 +7031,11 @@ }, { "name": "magento/module-bundle-import-export", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-import-export/magento-module-bundle-import-export-100.4.3.0.zip", - "shasum": "eaadc576dccaa1729cc05153cd4405e93530ffd5" + "url": "https://repo.magento.com/archives/magento/module-bundle-import-export/magento-module-bundle-import-export-100.4.4.0.zip", + "shasum": "4b61f9344da386dc09f1eb375c95563c1e02b3c5" }, "require": { "magento/framework": "103.0.*", @@ -7094,11 +7094,11 @@ }, { "name": "magento/module-bundle-staging", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-staging/magento-module-bundle-staging-100.4.4.0.zip", - "shasum": "7f6eb286f875f0214fe431543f380f402415774e" + "url": "https://repo.magento.com/archives/magento/module-bundle-staging/magento-module-bundle-staging-100.4.5.0.zip", + "shasum": "3a7ef8b714a42e2e64691fcb892d58092bad95e6" }, "require": { "magento/framework": "103.0.*", @@ -7126,11 +7126,11 @@ }, { "name": "magento/module-cache-invalidate", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cache-invalidate/magento-module-cache-invalidate-100.4.2.0.zip", - "shasum": "cc5b37b7da1e68775844e6285c79d1d1ca3a4d28" + "url": "https://repo.magento.com/archives/magento/module-cache-invalidate/magento-module-cache-invalidate-100.4.3.0.zip", + "shasum": "d90ac3d37cc4eadd8e258b57991ff18e82b837df" }, "require": { "magento/framework": "103.0.*", @@ -7154,16 +7154,15 @@ }, { "name": "magento/module-captcha", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-captcha/magento-module-captcha-100.4.4.0.zip", - "shasum": "290e51dafbf7038c28629ff5cd8e312176e984d1" + "url": "https://repo.magento.com/archives/magento/module-captcha/magento-module-captcha-100.4.5.0.zip", + "shasum": "034fd81fcb31abf823863c1a12b2646b890f8868" }, "require": { - "laminas/laminas-captcha": "^2.11.0", + "laminas/laminas-captcha": "^2.12", "laminas/laminas-db": "^2.13.4", - "laminas/laminas-session": "^2.12.0", "magento/framework": "103.0.*", "magento/module-authorization": "100.4.*", "magento/module-backend": "102.0.*", @@ -7190,11 +7189,11 @@ }, { "name": "magento/module-cardinal-commerce", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cardinal-commerce/magento-module-cardinal-commerce-100.4.2.0.zip", - "shasum": "dcd16d3c86e3ede1c0d61640f4e4c9b2fc5390d7" + "url": "https://repo.magento.com/archives/magento/module-cardinal-commerce/magento-module-cardinal-commerce-100.4.3.0.zip", + "shasum": "c459e12648b37b408c48065ff6a9ff010eb2557f" }, "require": { "magento/framework": "103.0.*", @@ -7220,11 +7219,11 @@ }, { "name": "magento/module-catalog", - "version": "104.0.4", + "version": "104.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog/magento-module-catalog-104.0.4.0.zip", - "shasum": "68b81961013b9b661aa44ddebe814cb714b543d1" + "url": "https://repo.magento.com/archives/magento/module-catalog/magento-module-catalog-104.0.5.0.zip", + "shasum": "b5d8ff541fa0f8b3abfcb2c0126e07c984c82672" }, "require": { "magento/framework": "103.0.*", @@ -7406,11 +7405,11 @@ }, { "name": "magento/module-catalog-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-graph-ql/magento-module-catalog-graph-ql-100.4.4.0.zip", - "shasum": "17be5a9565265cc04e2b4da2a0795fcfd9b539d4" + "url": "https://repo.magento.com/archives/magento/module-catalog-graph-ql/magento-module-catalog-graph-ql-100.4.5.0.zip", + "shasum": "4ab6bdbe56bdab75a8f3df746e54b0a55ce7a897" }, "require": { "magento/framework": "103.0.*", @@ -7447,11 +7446,11 @@ }, { "name": "magento/module-catalog-import-export", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-import-export/magento-module-catalog-import-export-101.1.4.0.zip", - "shasum": "7de989e9b9128c4048d95d3add36ea42996ded52" + "url": "https://repo.magento.com/archives/magento/module-catalog-import-export/magento-module-catalog-import-export-101.1.5.0.zip", + "shasum": "8630a9ad0887181f35ed10b153d9fa31a4523efb" }, "require": { "ext-ctype": "*", @@ -7517,11 +7516,11 @@ }, { "name": "magento/module-catalog-inventory", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-inventory/magento-module-catalog-inventory-100.4.4.0.zip", - "shasum": "f6fe6467ba5fb05307ef1071466375d1d045ed2a" + "url": "https://repo.magento.com/archives/magento/module-catalog-inventory/magento-module-catalog-inventory-100.4.5.0.zip", + "shasum": "919dbee1a07ec5f1f4728f23262534936ba05e9b" }, "require": { "magento/framework": "103.0.*", @@ -7551,11 +7550,11 @@ }, { "name": "magento/module-catalog-inventory-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-inventory-graph-ql/magento-module-catalog-inventory-graph-ql-100.4.1.0.zip", - "shasum": "54a70525aa0eb0746133cd289fa44d3a513b5700" + "url": "https://repo.magento.com/archives/magento/module-catalog-inventory-graph-ql/magento-module-catalog-inventory-graph-ql-100.4.2.0.zip", + "shasum": "330f1044214ef81be907e39939292cf4ed2c4464" }, "require": { "magento/framework": "103.0.*", @@ -7673,17 +7672,18 @@ }, { "name": "magento/module-catalog-permissions", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-permissions/magento-module-catalog-permissions-100.4.4.0.zip", - "shasum": "284a6fb0b9b5a658a0b3fd98e2608511b73840b8" + "url": "https://repo.magento.com/archives/magento/module-catalog-permissions/magento-module-catalog-permissions-100.4.5.0.zip", + "shasum": "31ebf7b8415ffb81f17cbf86561e6913673e753b" }, "require": { "magento/framework": "103.0.*", "magento/module-backend": "102.0.*", "magento/module-catalog": "104.0.*", "magento/module-customer": "103.0.*", + "magento/module-indexer": "100.4.*", "magento/module-quote": "101.2.*", "magento/module-store": "101.1.*", "magento/module-ui": "101.2.*", @@ -7746,11 +7746,11 @@ }, { "name": "magento/module-catalog-rule", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-rule/magento-module-catalog-rule-101.2.4.0.zip", - "shasum": "0b46c28faedfbb1ad98dfa7928f7207901592b5e" + "url": "https://repo.magento.com/archives/magento/module-catalog-rule/magento-module-catalog-rule-101.2.5.0.zip", + "shasum": "44e412c064b910bf20bb83b36e7152f925d4d98f" }, "require": { "magento/framework": "103.0.*", @@ -7784,11 +7784,11 @@ }, { "name": "magento/module-catalog-rule-configurable", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-rule-configurable/magento-module-catalog-rule-configurable-100.4.3.0.zip", - "shasum": "ba8ae1e197a7438ce74380b22be0610e2b5ba805" + "url": "https://repo.magento.com/archives/magento/module-catalog-rule-configurable/magento-module-catalog-rule-configurable-100.4.4.0.zip", + "shasum": "f12cfaa125b5d23cfdfee247cfdbaa27adff8663" }, "require": { "magento/framework": "103.0.*", @@ -7848,11 +7848,11 @@ }, { "name": "magento/module-catalog-rule-staging", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-rule-staging/magento-module-catalog-rule-staging-100.4.4.0.zip", - "shasum": "c072f5e29eca908ed1d32734b72e367a80d10811" + "url": "https://repo.magento.com/archives/magento/module-catalog-rule-staging/magento-module-catalog-rule-staging-100.4.5.0.zip", + "shasum": "78b2c80257352ec63964d1843bd7245ca7c3fd8d" }, "require": { "magento/framework": "103.0.*", @@ -7883,11 +7883,11 @@ }, { "name": "magento/module-catalog-search", - "version": "102.0.4", + "version": "102.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-search/magento-module-catalog-search-102.0.4.0.zip", - "shasum": "86f8676d034e5744772b99f143fb338158fc5135" + "url": "https://repo.magento.com/archives/magento/module-catalog-search/magento-module-catalog-search-102.0.5.0.zip", + "shasum": "3e3da7f22b6dade0d9c3259919e56d3bbb990e08" }, "require": { "magento/framework": "103.0.*", @@ -7924,11 +7924,11 @@ }, { "name": "magento/module-catalog-staging", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-staging/magento-module-catalog-staging-100.4.4.0.zip", - "shasum": "9b89d53226d580f9ea2ad7ceae871e3193b045f2" + "url": "https://repo.magento.com/archives/magento/module-catalog-staging/magento-module-catalog-staging-100.4.5.0.zip", + "shasum": "b85048edf09f66415f76e40dc3d9af6ead910990" }, "require": { "lib-libxml": "*", @@ -7937,6 +7937,7 @@ "magento/module-backend": "102.0.*", "magento/module-catalog": "104.0.*", "magento/module-catalog-event": "101.1.*", + "magento/module-catalog-inventory": "100.4.*", "magento/module-catalog-permissions": "100.4.*", "magento/module-catalog-search": "102.0.*", "magento/module-customer": "103.0.*", @@ -8043,11 +8044,11 @@ }, { "name": "magento/module-catalog-url-rewrite", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-url-rewrite/magento-module-catalog-url-rewrite-100.4.4.0.zip", - "shasum": "ea899afea444a981d3e468118038a280c75f86a8" + "url": "https://repo.magento.com/archives/magento/module-catalog-url-rewrite/magento-module-catalog-url-rewrite-100.4.5.0.zip", + "shasum": "1bd5ff2eb854696a84be74c33892c42e622ecc90" }, "require": { "magento/framework": "103.0.*", @@ -8117,11 +8118,11 @@ }, { "name": "magento/module-catalog-url-rewrite-staging", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-url-rewrite-staging/magento-module-catalog-url-rewrite-staging-100.4.3.0.zip", - "shasum": "368f5695d414b0db362e46259a81b878f25c20f5" + "url": "https://repo.magento.com/archives/magento/module-catalog-url-rewrite-staging/magento-module-catalog-url-rewrite-staging-100.4.4.0.zip", + "shasum": "04de01719cc50c42389a70392293ba98f400a0fb" }, "require": { "magento/framework": "103.0.*", @@ -8148,11 +8149,11 @@ }, { "name": "magento/module-catalog-widget", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-widget/magento-module-catalog-widget-100.4.4.0.zip", - "shasum": "0df1204f3de4c39b099a4c4933a8096d29010515" + "url": "https://repo.magento.com/archives/magento/module-catalog-widget/magento-module-catalog-widget-100.4.5.0.zip", + "shasum": "fb050b11f646398e68f0f9c9b2c70a1c29531842" }, "require": { "magento/framework": "103.0.*", @@ -8184,11 +8185,11 @@ }, { "name": "magento/module-checkout", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout/magento-module-checkout-100.4.4.0.zip", - "shasum": "7565754344c67aea344a07fb2058cf53561127e3" + "url": "https://repo.magento.com/archives/magento/module-checkout/magento-module-checkout-100.4.5.0.zip", + "shasum": "c29a27d1314282080c7f89bc05cb6f80194a22dd" }, "require": { "magento/framework": "103.0.*", @@ -8234,11 +8235,11 @@ }, { "name": "magento/module-checkout-address-search", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout-address-search/magento-module-checkout-address-search-100.4.3.0.zip", - "shasum": "6682057b05cab155391d1722a249dc3cac722ecd" + "url": "https://repo.magento.com/archives/magento/module-checkout-address-search/magento-module-checkout-address-search-100.4.4.0.zip", + "shasum": "b0f43ccdb77a172320c25764f2031749c7521b6c" }, "require": { "magento/framework": "103.0.*", @@ -8296,11 +8297,11 @@ }, { "name": "magento/module-checkout-agreements", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout-agreements/magento-module-checkout-agreements-100.4.3.0.zip", - "shasum": "2e05ba5e61339a31e01560c22ae069fdcdfacb2a" + "url": "https://repo.magento.com/archives/magento/module-checkout-agreements/magento-module-checkout-agreements-100.4.4.0.zip", + "shasum": "3ea175aac3a181b5eb4120a1a6d93dc0ae9b0567" }, "require": { "magento/framework": "103.0.*", @@ -8359,11 +8360,11 @@ }, { "name": "magento/module-checkout-staging", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout-staging/magento-module-checkout-staging-100.4.3.0.zip", - "shasum": "09b284c1965b8b433977affa1550098919200a17" + "url": "https://repo.magento.com/archives/magento/module-checkout-staging/magento-module-checkout-staging-100.4.4.0.zip", + "shasum": "55b750efeb64d353d2c1228b3c8edd35d5609e7d" }, "require": { "magento/framework": "103.0.*", @@ -8393,11 +8394,11 @@ }, { "name": "magento/module-cms", - "version": "104.0.4", + "version": "104.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cms/magento-module-cms-104.0.4.0.zip", - "shasum": "c3b0a5b87f4245732334fd9571d41a382f3bf5db" + "url": "https://repo.magento.com/archives/magento/module-cms/magento-module-cms-104.0.5.0.zip", + "shasum": "46493eaca20ee9f1fdc01cb9ad0ad4ce8d884b1a" }, "require": { "magento/framework": "103.0.*", @@ -8523,11 +8524,11 @@ }, { "name": "magento/module-cms-staging", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cms-staging/magento-module-cms-staging-100.4.4.0.zip", - "shasum": "af81b248096c2cc438e8b5c8fc34e2e19a96b8a2" + "url": "https://repo.magento.com/archives/magento/module-cms-staging/magento-module-cms-staging-100.4.5.0.zip", + "shasum": "282d1f21dd5601a956af9459b1d5e5f246f2be2a" }, "require": { "magento/framework": "103.0.*", @@ -8554,11 +8555,11 @@ }, { "name": "magento/module-cms-url-rewrite", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite/magento-module-cms-url-rewrite-100.4.3.0.zip", - "shasum": "5a8de8093d7d4e6ffe8f9cb9bc42f8259dee97a0" + "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite/magento-module-cms-url-rewrite-100.4.4.0.zip", + "shasum": "58feb0325230324416a662735e85a2c5a4689dd6" }, "require": { "magento/framework": "103.0.*", @@ -8584,11 +8585,11 @@ }, { "name": "magento/module-cms-url-rewrite-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite-graph-ql/magento-module-cms-url-rewrite-graph-ql-100.4.2.0.zip", - "shasum": "43b3fa95a3bf776732105bc6e78c563737786ce2" + "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite-graph-ql/magento-module-cms-url-rewrite-graph-ql-100.4.3.0.zip", + "shasum": "795d725c0e8e0da0f287c8278cd88c024d1271d8" }, "require": { "magento/framework": "103.0.*", @@ -8648,11 +8649,11 @@ }, { "name": "magento/module-config", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-config/magento-module-config-101.2.4.0.zip", - "shasum": "9392da7243f39fad1e90ff4709394ab3dd6657d7" + "url": "https://repo.magento.com/archives/magento/module-config/magento-module-config-101.2.5.0.zip", + "shasum": "29b1ef19022f790adc92d434b63aa673c2d49da4" }, "require": { "magento/framework": "103.0.*", @@ -8682,11 +8683,11 @@ }, { "name": "magento/module-configurable-import-export", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-import-export/magento-module-configurable-import-export-100.4.2.0.zip", - "shasum": "603d6c9eac912e43a402b56d0948ad68add15c02" + "url": "https://repo.magento.com/archives/magento/module-configurable-import-export/magento-module-configurable-import-export-100.4.3.0.zip", + "shasum": "a17ea30a737183e89f768827ac5dc79dfab3f8d2" }, "require": { "magento/framework": "103.0.*", @@ -8715,11 +8716,11 @@ }, { "name": "magento/module-configurable-product", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-product/magento-module-configurable-product-100.4.4.0.zip", - "shasum": "9766e5966fed032917558e1f7ed09c69c3626da0" + "url": "https://repo.magento.com/archives/magento/module-configurable-product/magento-module-configurable-product-100.4.5.0.zip", + "shasum": "a6b2a438775e10b315da352207f326b25d2847f6" }, "require": { "magento/framework": "103.0.*", @@ -8762,11 +8763,11 @@ }, { "name": "magento/module-configurable-product-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-product-graph-ql/magento-module-configurable-product-graph-ql-100.4.4.0.zip", - "shasum": "3d27a65010bb681027cf5a250045f20b9731fcd9" + "url": "https://repo.magento.com/archives/magento/module-configurable-product-graph-ql/magento-module-configurable-product-graph-ql-100.4.5.0.zip", + "shasum": "d43550da49c0626cedac90aab27aaa23c8fc046c" }, "require": { "magento/framework": "103.0.*", @@ -8827,11 +8828,11 @@ }, { "name": "magento/module-configurable-product-staging", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-product-staging/magento-module-configurable-product-staging-100.4.3.0.zip", - "shasum": "4950946b7eebc21c9ee586400e651f258999c5df" + "url": "https://repo.magento.com/archives/magento/module-configurable-product-staging/magento-module-configurable-product-staging-100.4.4.0.zip", + "shasum": "293a3b4a13ce2994a11d067235a7a8a3c2be900c" }, "require": { "lib-libxml": "*", @@ -8840,6 +8841,7 @@ "magento/module-catalog": "104.0.*", "magento/module-catalog-staging": "100.4.*", "magento/module-configurable-product": "100.4.*", + "magento/module-staging": "101.2.*", "magento/module-ui": "101.2.*", "php": "~7.4.0||~8.1.0" }, @@ -8893,11 +8895,11 @@ }, { "name": "magento/module-cookie", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cookie/magento-module-cookie-100.4.4.0.zip", - "shasum": "028bc4a3d6758ec00e63451b66b529b03ddb0ea2" + "url": "https://repo.magento.com/archives/magento/module-cookie/magento-module-cookie-100.4.5.0.zip", + "shasum": "4f25ec33123b391b2f6a7cbba0797afb412609d5" }, "require": { "magento/framework": "103.0.*", @@ -8924,11 +8926,11 @@ }, { "name": "magento/module-cron", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cron/magento-module-cron-100.4.4.0.zip", - "shasum": "3ac0f4fc89416ac589e7a22749f1825bf8c0ae36" + "url": "https://repo.magento.com/archives/magento/module-cron/magento-module-cron-100.4.5.0.zip", + "shasum": "21c72975a3851a4cdb57380674a0afff02379d22" }, "require": { "magento/framework": "103.0.*", @@ -8955,11 +8957,11 @@ }, { "name": "magento/module-csp", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-csp/magento-module-csp-100.4.3.0.zip", - "shasum": "8df45e885e6287ed0b1380d2a1416c9ba0bccc8a" + "url": "https://repo.magento.com/archives/magento/module-csp/magento-module-csp-100.4.4.0.zip", + "shasum": "efc91377bea43c015a2e89e625b17f86d5971e67" }, "require": { "magento/framework": "103.0.*", @@ -9015,11 +9017,11 @@ }, { "name": "magento/module-custom-attribute-management", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-custom-attribute-management/magento-module-custom-attribute-management-100.4.3.0.zip", - "shasum": "ea3a45b89389e87f1c81eca34988acfdf8f74118" + "url": "https://repo.magento.com/archives/magento/module-custom-attribute-management/magento-module-custom-attribute-management-100.4.4.0.zip", + "shasum": "1aa19d933f3b7b5596afa0c48bed8edab7cca3e8" }, "require": { "magento/framework": "103.0.*", @@ -9045,11 +9047,11 @@ }, { "name": "magento/module-customer", - "version": "103.0.4", + "version": "103.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer/magento-module-customer-103.0.4.0.zip", - "shasum": "a9b5e4fb9a4bd904bc6c4fd8951a42c5f28f1f4f" + "url": "https://repo.magento.com/archives/magento/module-customer/magento-module-customer-103.0.5.0.zip", + "shasum": "a54992e45b4d2aee5007a683f25eeea0079c9dba" }, "require": { "magento/framework": "103.0.*", @@ -9124,11 +9126,11 @@ }, { "name": "magento/module-customer-balance", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-balance/magento-module-customer-balance-100.4.4.0.zip", - "shasum": "a0d3b9215106f1c96321098eea3e738e7be7b6cd" + "url": "https://repo.magento.com/archives/magento/module-customer-balance/magento-module-customer-balance-100.4.5.0.zip", + "shasum": "3cf267bc08c10e045b7ce5dd5a66513c936b4790" }, "require": { "magento/framework": "103.0.*", @@ -9194,11 +9196,11 @@ }, { "name": "magento/module-customer-custom-attributes", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-custom-attributes/magento-module-customer-custom-attributes-100.4.4.0.zip", - "shasum": "d0974e438a36440f56eaa8916749b766902d00e8" + "url": "https://repo.magento.com/archives/magento/module-customer-custom-attributes/magento-module-customer-custom-attributes-100.4.5.0.zip", + "shasum": "d2b1476be7d8c902e1e97fc11fd17715c2ffeaf1" }, "require": { "magento/framework": "103.0.*", @@ -9217,6 +9219,9 @@ "magento/module-ui": "101.2.*", "php": "~7.4.0||~8.1.0" }, + "suggest": { + "magento/module-catalog": "104.0.*" + }, "type": "magento2-module", "autoload": { "files": [ @@ -9299,11 +9304,11 @@ }, { "name": "magento/module-customer-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-graph-ql/magento-module-customer-graph-ql-100.4.4.0.zip", - "shasum": "8784253f465b269a4db27b15f297168994fae874" + "url": "https://repo.magento.com/archives/magento/module-customer-graph-ql/magento-module-customer-graph-ql-100.4.5.0.zip", + "shasum": "602fdc6011df59605229070182fd47c757f48e3c" }, "require": { "magento/framework": "103.0.*", @@ -9336,11 +9341,11 @@ }, { "name": "magento/module-customer-import-export", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-import-export/magento-module-customer-import-export-100.4.4.0.zip", - "shasum": "6974e693afef3f09453310edc2c7a05180aa26ef" + "url": "https://repo.magento.com/archives/magento/module-customer-import-export/magento-module-customer-import-export-100.4.5.0.zip", + "shasum": "6d6805918020b4ceb9823ecdbec2ab42203cbb35" }, "require": { "magento/framework": "103.0.*", @@ -9369,11 +9374,11 @@ }, { "name": "magento/module-customer-segment", - "version": "102.1.4", + "version": "102.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-segment/magento-module-customer-segment-102.1.4.0.zip", - "shasum": "7e91eb6edc3982e06e2e5f1b9b577ecee18a8572" + "url": "https://repo.magento.com/archives/magento/module-customer-segment/magento-module-customer-segment-102.1.5.0.zip", + "shasum": "942bc03460e0b726c438b0b6dcba90f54c75f672" }, "require": { "magento/framework": "103.0.*", @@ -9445,11 +9450,11 @@ }, { "name": "magento/module-deploy", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-deploy/magento-module-deploy-100.4.4.0.zip", - "shasum": "d019c83f5d2117b74ede903f9e8e4f9efc807886" + "url": "https://repo.magento.com/archives/magento/module-deploy/magento-module-deploy-100.4.5.0.zip", + "shasum": "a213853f0a0fdb9c4253dd3fc733e5a0fd73ba60" }, "require": { "magento/framework": "103.0.*", @@ -9477,11 +9482,11 @@ }, { "name": "magento/module-developer", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-developer/magento-module-developer-100.4.4.0.zip", - "shasum": "130d066e02afc49ea5e499a38c2d207b316897bf" + "url": "https://repo.magento.com/archives/magento/module-developer/magento-module-developer-100.4.5.0.zip", + "shasum": "dfa60efc615392b056754cb6a81c78a6ffef80f8" }, "require": { "magento/framework": "103.0.*", @@ -9506,11 +9511,11 @@ }, { "name": "magento/module-dhl", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-dhl/magento-module-dhl-100.4.3.0.zip", - "shasum": "be0b7ce303b59aaea9bb5e9c262916e7600efc1c" + "url": "https://repo.magento.com/archives/magento/module-dhl/magento-module-dhl-100.4.4.0.zip", + "shasum": "48ccc4512f35d3fe6ebb761a9e663e37f4160455" }, "require": { "lib-libxml": "*", @@ -9546,11 +9551,11 @@ }, { "name": "magento/module-directory", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-directory/magento-module-directory-100.4.4.0.zip", - "shasum": "a227ad0a86e7ef636dc996d1d366eff3f2a38898" + "url": "https://repo.magento.com/archives/magento/module-directory/magento-module-directory-100.4.5.0.zip", + "shasum": "42bab61cd7e480a9c1d0a0afc164f4587f4b1fcc" }, "require": { "lib-libxml": "*", @@ -9577,11 +9582,11 @@ }, { "name": "magento/module-directory-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-directory-graph-ql/magento-module-directory-graph-ql-100.4.2.0.zip", - "shasum": "8c1d22fe9534fec4f7ac3b472c41bf78aa3efc75" + "url": "https://repo.magento.com/archives/magento/module-directory-graph-ql/magento-module-directory-graph-ql-100.4.3.0.zip", + "shasum": "c4da9001b43d6c14063060594cb6c9eaced6b904" }, "require": { "magento/framework": "103.0.*", @@ -9607,11 +9612,11 @@ }, { "name": "magento/module-downloadable", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable/magento-module-downloadable-100.4.4.0.zip", - "shasum": "9612442d3c202c19dfbbced3e118cc084cef6878" + "url": "https://repo.magento.com/archives/magento/module-downloadable/magento-module-downloadable-100.4.5.0.zip", + "shasum": "78a7f641efd6f7297cd5f046bfda9565de415192" }, "require": { "magento/framework": "103.0.*", @@ -9653,11 +9658,11 @@ }, { "name": "magento/module-downloadable-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable-graph-ql/magento-module-downloadable-graph-ql-100.4.4.0.zip", - "shasum": "00c6b314ff17ea4d6b5d49137cf360bbdf6ea985" + "url": "https://repo.magento.com/archives/magento/module-downloadable-graph-ql/magento-module-downloadable-graph-ql-100.4.5.0.zip", + "shasum": "e9b7443eada7b328cefb0a3c290481a789d8a2ba" }, "require": { "magento/framework": "103.0.*", @@ -9690,11 +9695,11 @@ }, { "name": "magento/module-downloadable-import-export", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable-import-export/magento-module-downloadable-import-export-100.4.3.0.zip", - "shasum": "d6a9258cbc4ad68778067782980cfa483ef2faa2" + "url": "https://repo.magento.com/archives/magento/module-downloadable-import-export/magento-module-downloadable-import-export-100.4.4.0.zip", + "shasum": "4d50455fba9fa7714ccc90d2ef3326a13d5162dc" }, "require": { "magento/framework": "103.0.*", @@ -9723,11 +9728,11 @@ }, { "name": "magento/module-downloadable-staging", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable-staging/magento-module-downloadable-staging-100.4.3.0.zip", - "shasum": "e5934117e3b790640b1b5e57e332c00233473d86" + "url": "https://repo.magento.com/archives/magento/module-downloadable-staging/magento-module-downloadable-staging-100.4.4.0.zip", + "shasum": "5a5865478222f09599d089e9c9721eaf1ce98326" }, "require": { "lib-libxml": "*", @@ -9758,11 +9763,11 @@ }, { "name": "magento/module-eav", - "version": "102.1.4", + "version": "102.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-eav/magento-module-eav-102.1.4.0.zip", - "shasum": "c3be158f50ef1f618bfde852c22555cb12e31840" + "url": "https://repo.magento.com/archives/magento/module-eav/magento-module-eav-102.1.5.0.zip", + "shasum": "c340cf0993448f1abd5ad0caf61734249611943e" }, "require": { "magento/framework": "103.0.*", @@ -9821,14 +9826,14 @@ }, { "name": "magento/module-elasticsearch", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-elasticsearch/magento-module-elasticsearch-101.0.4.0.zip", - "shasum": "59cc0bd8094bc28f68339244532a85f35bf1ec9d" + "url": "https://repo.magento.com/archives/magento/module-elasticsearch/magento-module-elasticsearch-101.0.5.0.zip", + "shasum": "e596d6ae4542e44ac18acb5714a2fe8af201da2e" }, "require": { - "elasticsearch/elasticsearch": "~7.16.0", + "elasticsearch/elasticsearch": "~7.17.0", "magento/framework": "103.0.*", "magento/module-advanced-search": "100.4.*", "magento/module-catalog": "104.0.*", @@ -9860,14 +9865,14 @@ }, { "name": "magento/module-elasticsearch-6", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-elasticsearch-6/magento-module-elasticsearch-6-100.4.4.0.zip", - "shasum": "7ff2c20a5dbd04904aea96d06b957d7b9d5500cb" + "url": "https://repo.magento.com/archives/magento/module-elasticsearch-6/magento-module-elasticsearch-6-100.4.5.0.zip", + "shasum": "25afea3df20a62529a3ab27d7d45058ea8b85707" }, "require": { - "elasticsearch/elasticsearch": "~7.16.0", + "elasticsearch/elasticsearch": "~7.17.0", "magento/framework": "103.0.*", "magento/module-advanced-search": "100.4.*", "magento/module-catalog-search": "102.0.*", @@ -9895,14 +9900,14 @@ }, { "name": "magento/module-elasticsearch-7", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-elasticsearch-7/magento-module-elasticsearch-7-100.4.4.0.zip", - "shasum": "3a085edd82d218a166901e6abad3ad1080b1630c" + "url": "https://repo.magento.com/archives/magento/module-elasticsearch-7/magento-module-elasticsearch-7-100.4.5.0.zip", + "shasum": "f1cd194fd49688ce3c416c4a6678865a5dcf4d1f" }, "require": { - "elasticsearch/elasticsearch": "~7.16.0", + "elasticsearch/elasticsearch": "~7.17.0", "magento/framework": "103.0.*", "magento/module-advanced-search": "100.4.*", "magento/module-catalog-search": "102.0.*", @@ -9997,11 +10002,11 @@ }, { "name": "magento/module-email", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-email/magento-module-email-101.1.4.0.zip", - "shasum": "d1af5680086a5a9bf12f25164d4b4e9acbb10688" + "url": "https://repo.magento.com/archives/magento/module-email/magento-module-email-101.1.5.0.zip", + "shasum": "ca393c2beae425fdcbc56cafa12718a0a6e1b440" }, "require": { "magento/framework": "103.0.*", @@ -10065,11 +10070,11 @@ }, { "name": "magento/module-enterprise", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-enterprise/magento-module-enterprise-100.4.2.0.zip", - "shasum": "487ec8e9d7570a9ea5af5bdef42333f6d7bb5534" + "url": "https://repo.magento.com/archives/magento/module-enterprise/magento-module-enterprise-100.4.3.0.zip", + "shasum": "684538b62c94d98b162c19c8d3909b57b8e4a4f6" }, "require": { "magento/framework": "103.0.*", @@ -10154,11 +10159,11 @@ }, { "name": "magento/module-gift-card", - "version": "101.3.4", + "version": "101.3.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-card/magento-module-gift-card-101.3.4.0.zip", - "shasum": "45fe646f900dbda2bbe74479238efc67919e2411" + "url": "https://repo.magento.com/archives/magento/module-gift-card/magento-module-gift-card-101.3.5.0.zip", + "shasum": "ae509712be04a8133a36ab10ab07d5dc124baa95" }, "require": { "magento/framework": "103.0.*", @@ -10203,11 +10208,11 @@ }, { "name": "magento/module-gift-card-account", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-card-account/magento-module-gift-card-account-101.2.4.0.zip", - "shasum": "8e3d07e773c71480e2cfe0cc7a92bd6aeae2d9e9" + "url": "https://repo.magento.com/archives/magento/module-gift-card-account/magento-module-gift-card-account-101.2.5.0.zip", + "shasum": "6a47a0e46eebb1ab97bb21bd7a6355d62e6aa36f" }, "require": { "magento/framework": "103.0.*", @@ -10270,11 +10275,11 @@ }, { "name": "magento/module-gift-card-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-card-graph-ql/magento-module-gift-card-graph-ql-100.4.4.0.zip", - "shasum": "1acaac6450267766fa521b3147b48e8948f9f9e0" + "url": "https://repo.magento.com/archives/magento/module-gift-card-graph-ql/magento-module-gift-card-graph-ql-100.4.5.0.zip", + "shasum": "c3d8a15c6a0536021540e9f0baac6b394c0afb0f" }, "require": { "magento/framework": "103.0.*", @@ -10367,11 +10372,11 @@ }, { "name": "magento/module-gift-message", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-message/magento-module-gift-message-100.4.3.0.zip", - "shasum": "599c56fecf3c26ff9d1b59011255ab32eb9ed4e3" + "url": "https://repo.magento.com/archives/magento/module-gift-message/magento-module-gift-message-100.4.4.0.zip", + "shasum": "921b0e4ec989c1e9038b96a32a747498f3932b94" }, "require": { "magento/framework": "103.0.*", @@ -10406,11 +10411,11 @@ }, { "name": "magento/module-gift-message-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-message-graph-ql/magento-module-gift-message-graph-ql-100.4.2.0.zip", - "shasum": "03c5e036bcb950dff7b2fd8b5a93c91cec6919db" + "url": "https://repo.magento.com/archives/magento/module-gift-message-graph-ql/magento-module-gift-message-graph-ql-100.4.3.0.zip", + "shasum": "fbe42991c130a066fa97bb9bec4aff4ef908e2a0" }, "require": { "magento/framework": "103.0.*", @@ -10469,11 +10474,11 @@ }, { "name": "magento/module-gift-registry", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-registry/magento-module-gift-registry-101.2.4.0.zip", - "shasum": "4cfa4b0636cc0622f8a2b1dba29dadb7aac4e3d7" + "url": "https://repo.magento.com/archives/magento/module-gift-registry/magento-module-gift-registry-101.2.5.0.zip", + "shasum": "6bbfb43398db9bb1df8e4c01f77e64c0ebb994fd" }, "require": { "magento/framework": "103.0.*", @@ -10551,11 +10556,11 @@ }, { "name": "magento/module-gift-wrapping", - "version": "101.2.3", + "version": "101.2.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-wrapping/magento-module-gift-wrapping-101.2.3.0.zip", - "shasum": "28b0ec799a10415b3f12faa153fd379121d66421" + "url": "https://repo.magento.com/archives/magento/module-gift-wrapping/magento-module-gift-wrapping-101.2.4.0.zip", + "shasum": "c786839eb1eee6ea39094ffed638760f9763af19" }, "require": { "magento/framework": "103.0.*", @@ -10716,13 +10721,46 @@ ], "description": "N/A" }, + { + "name": "magento/module-google-gtag", + "version": "100.4.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-google-gtag/magento-module-google-gtag-100.4.0.0.zip", + "shasum": "60adbe5904d419485a1c710ce8fefa0dd9213b49" + }, + "require": { + "magento/framework": "103.0.*", + "magento/module-cookie": "100.4.*", + "magento/module-sales": "103.0.*", + "magento/module-store": "101.1.*", + "php": "~7.4.0||~8.1.0" + }, + "suggest": { + "magento/module-config": "101.2.*" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\GoogleGtag\\": "" + } + }, + "license": [ + "OSL-3.0", + "AFL-3.0" + ], + "description": "N/A" + }, { "name": "magento/module-google-optimizer", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-google-optimizer/magento-module-google-optimizer-100.4.3.0.zip", - "shasum": "6c45412c39e296e2bba714944a4213923a072ea1" + "url": "https://repo.magento.com/archives/magento/module-google-optimizer/magento-module-google-optimizer-100.4.4.0.zip", + "shasum": "562fe885296e5d3a4289f1f8df6498f8322406a0" }, "require": { "magento/framework": "103.0.*", @@ -10730,6 +10768,7 @@ "magento/module-catalog": "104.0.*", "magento/module-cms": "104.0.*", "magento/module-google-analytics": "100.4.*", + "magento/module-google-gtag": "100.4.*", "magento/module-store": "101.1.*", "magento/module-ui": "101.2.*", "php": "~7.4.0||~8.1.0" @@ -10783,11 +10822,11 @@ }, { "name": "magento/module-google-tag-manager", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-google-tag-manager/magento-module-google-tag-manager-100.4.4.0.zip", - "shasum": "4927957b00591b04d82c52833e406eb15493fc1f" + "url": "https://repo.magento.com/archives/magento/module-google-tag-manager/magento-module-google-tag-manager-100.4.5.0.zip", + "shasum": "5d1bcfca9874872c6499a60daf7498da77ea4ea9" }, "require": { "magento/framework": "103.0.*", @@ -10798,6 +10837,7 @@ "magento/module-cookie": "100.4.*", "magento/module-customer": "103.0.*", "magento/module-google-analytics": "100.4.*", + "magento/module-google-gtag": "100.4.*", "magento/module-page-cache": "100.4.*", "magento/module-sales": "103.0.*", "magento/module-store": "101.1.*", @@ -10823,11 +10863,11 @@ }, { "name": "magento/module-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-graph-ql/magento-module-graph-ql-100.4.4.0.zip", - "shasum": "e33fc6b44c60ac57ee855ef48de034ffd5bdb959" + "url": "https://repo.magento.com/archives/magento/module-graph-ql/magento-module-graph-ql-100.4.5.0.zip", + "shasum": "a956f4de6dd170b23705701c08d351a627500758" }, "require": { "magento/framework": "103.0.*", @@ -10836,7 +10876,7 @@ "magento/module-new-relic-reporting": "100.4.*", "magento/module-webapi": "100.4.*", "php": "~7.4.0||~8.1.0", - "webonyx/graphql-php": "~14.11.3" + "webonyx/graphql-php": "~14.11.5" }, "suggest": { "magento/module-graph-ql-cache": "100.4.*" @@ -10858,11 +10898,11 @@ }, { "name": "magento/module-graph-ql-cache", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-graph-ql-cache/magento-module-graph-ql-cache-100.4.1.0.zip", - "shasum": "0145042f6360087d8f54cad4998a1e1459d5d5f7" + "url": "https://repo.magento.com/archives/magento/module-graph-ql-cache/magento-module-graph-ql-cache-100.4.2.0.zip", + "shasum": "ba6b7676af0b686ae6a89f8aa8335e32ca68dc27" }, "require": { "magento/framework": "103.0.*", @@ -10889,11 +10929,11 @@ }, { "name": "magento/module-grouped-catalog-inventory", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-catalog-inventory/magento-module-grouped-catalog-inventory-100.4.1.0.zip", - "shasum": "2b379e8f6334f565440c4f738dc965e21e4e75b1" + "url": "https://repo.magento.com/archives/magento/module-grouped-catalog-inventory/magento-module-grouped-catalog-inventory-100.4.2.0.zip", + "shasum": "ff1404f454d460b4fb54db48de9fd701ff4c7686" }, "require": { "magento/framework": "103.0.*", @@ -10919,11 +10959,11 @@ }, { "name": "magento/module-grouped-import-export", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-import-export/magento-module-grouped-import-export-100.4.2.0.zip", - "shasum": "f902e7c7563ebd987f292c34b011b8c5160af6e8" + "url": "https://repo.magento.com/archives/magento/module-grouped-import-export/magento-module-grouped-import-export-100.4.3.0.zip", + "shasum": "ac071186b6f3f875d1045231f5ddd83ecc46081e" }, "require": { "magento/framework": "103.0.*", @@ -10951,11 +10991,11 @@ }, { "name": "magento/module-grouped-product", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-product/magento-module-grouped-product-100.4.4.0.zip", - "shasum": "f270edece8c486b09e4ad6013cf6211c431ec860" + "url": "https://repo.magento.com/archives/magento/module-grouped-product/magento-module-grouped-product-100.4.5.0.zip", + "shasum": "d70bf64e35d023697a13bee7d34e7d6b6c8ea8e8" }, "require": { "magento/framework": "103.0.*", @@ -10994,11 +11034,11 @@ }, { "name": "magento/module-grouped-product-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-product-graph-ql/magento-module-grouped-product-graph-ql-100.4.4.0.zip", - "shasum": "5baed8343dc5e6d32c29939e8596c447b1b295c6" + "url": "https://repo.magento.com/archives/magento/module-grouped-product-graph-ql/magento-module-grouped-product-graph-ql-100.4.5.0.zip", + "shasum": "3485298a82d7aa23bcae3ecd12d980569420b44d" }, "require": { "magento/framework": "103.0.*", @@ -11024,11 +11064,11 @@ }, { "name": "magento/module-grouped-product-staging", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-product-staging/magento-module-grouped-product-staging-100.4.2.0.zip", - "shasum": "ab68381a08fe3968229183eaab0261ec7b0f86d0" + "url": "https://repo.magento.com/archives/magento/module-grouped-product-staging/magento-module-grouped-product-staging-100.4.3.0.zip", + "shasum": "600e25fcce702281db62bd4e92b9d507f4b8d4fc" }, "require": { "lib-libxml": "*", @@ -11059,11 +11099,11 @@ }, { "name": "magento/module-import-export", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-import-export/magento-module-import-export-101.0.4.0.zip", - "shasum": "3087bdbb3e5e28efa45f1fd7b7e0b347480d2225" + "url": "https://repo.magento.com/archives/magento/module-import-export/magento-module-import-export-101.0.5.0.zip", + "shasum": "d83b1dd4c0dac78116eb9c750c3ce0e50a5bd514" }, "require": { "ext-ctype": "*", @@ -11093,11 +11133,11 @@ }, { "name": "magento/module-indexer", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-indexer/magento-module-indexer-100.4.4.0.zip", - "shasum": "d5fd2a2d9db69e8f9901b9b84059fc7b50a003f3" + "url": "https://repo.magento.com/archives/magento/module-indexer/magento-module-indexer-100.4.5.0.zip", + "shasum": "6b16b0e77c9b562b93a6489dacc3602726f0f970" }, "require": { "magento/framework": "103.0.*", @@ -11121,11 +11161,11 @@ }, { "name": "magento/module-instant-purchase", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-instant-purchase/magento-module-instant-purchase-100.4.3.0.zip", - "shasum": "f17aa3a22a310898ccb7003a032b2cacbac191aa" + "url": "https://repo.magento.com/archives/magento/module-instant-purchase/magento-module-instant-purchase-100.4.4.0.zip", + "shasum": "04849d6cf80a8755c9382ec4c2c68a5b84cafed9" }, "require": { "magento/framework": "103.0.*", @@ -11155,11 +11195,11 @@ }, { "name": "magento/module-integration", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-integration/magento-module-integration-100.4.4.0.zip", - "shasum": "9822538189688906a2a4805b9d29c50823305517" + "url": "https://repo.magento.com/archives/magento/module-integration/magento-module-integration-100.4.5.0.zip", + "shasum": "9128a75504ec75ae3f6c9eb241e47cd59ca0a79a" }, "require": { "magento/framework": "103.0.*", @@ -11189,11 +11229,11 @@ }, { "name": "magento/module-inventory", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory/magento-module-inventory-1.2.2.0.zip", - "shasum": "4bb63e6907c1c2e72bf3e45ad1bb2e2093e05fdb" + "url": "https://repo.magento.com/archives/magento/module-inventory/magento-module-inventory-1.2.3.0.zip", + "shasum": "95762911d52281f6f2c83bc4a1d4a424c7e9c8e4" }, "require": { "magento/framework": "*", @@ -11217,11 +11257,11 @@ }, { "name": "magento/module-inventory-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-admin-ui/magento-module-inventory-admin-ui-1.2.2.0.zip", - "shasum": "53b93bfad430202fb849e88c8b5c29bdb87a4c23" + "url": "https://repo.magento.com/archives/magento/module-inventory-admin-ui/magento-module-inventory-admin-ui-1.2.3.0.zip", + "shasum": "5a3570a7c41ace3ce43e008b08a12d3a963b994c" }, "require": { "magento/framework": "*", @@ -11250,11 +11290,11 @@ }, { "name": "magento/module-inventory-advanced-checkout", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-advanced-checkout/magento-module-inventory-advanced-checkout-1.2.1.0.zip", - "shasum": "9933ec6f37431cdf3434ef124ea3c1c2c3e010ab" + "url": "https://repo.magento.com/archives/magento/module-inventory-advanced-checkout/magento-module-inventory-advanced-checkout-1.2.2.0.zip", + "shasum": "7a97a63c8df73993061a8245152ff8ab1d1efc1f" }, "require": { "magento/framework": "*", @@ -11283,11 +11323,11 @@ }, { "name": "magento/module-inventory-api", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-api/magento-module-inventory-api-1.2.2.0.zip", - "shasum": "8b3187fe488715330e995fa9f5c30113c3e7a205" + "url": "https://repo.magento.com/archives/magento/module-inventory-api/magento-module-inventory-api-1.2.3.0.zip", + "shasum": "1c18de713cfd76017feab2fd3dcfbf98ed06d23f" }, "require": { "magento/framework": "*", @@ -11341,11 +11381,11 @@ }, { "name": "magento/module-inventory-bundle-product", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product/magento-module-inventory-bundle-product-1.2.1.0.zip", - "shasum": "ee029870f26635a42c7b02890ca14c063e692068" + "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product/magento-module-inventory-bundle-product-1.2.2.0.zip", + "shasum": "a59d6856469b947d34060eaf607d3883812705dc" }, "require": { "magento/framework": "*", @@ -11359,7 +11399,8 @@ "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-catalog-inventory": "*" + "magento/module-catalog-inventory": "*", + "magento/module-inventory": "1.2.*" }, "type": "magento2-module", "autoload": { @@ -11413,11 +11454,11 @@ }, { "name": "magento/module-inventory-bundle-product-indexer", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product-indexer/magento-module-inventory-bundle-product-indexer-1.1.1.0.zip", - "shasum": "b0c37d374a497e79ce5a3c8330ead9c5fdfff7d6" + "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product-indexer/magento-module-inventory-bundle-product-indexer-1.1.2.0.zip", + "shasum": "c31b980f56a832a8ca4ddd3c0e0a4c9265ef8756" }, "require": { "magento/framework": "*", @@ -11425,7 +11466,7 @@ "magento/module-catalog": "*", "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -11449,16 +11490,16 @@ }, { "name": "magento/module-inventory-cache", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-cache/magento-module-inventory-cache-1.2.2.0.zip", - "shasum": "6fdc88f3b63bba2518f70c8bc034f01d1b6c45f0" + "url": "https://repo.magento.com/archives/magento/module-inventory-cache/magento-module-inventory-cache-1.2.3.0.zip", + "shasum": "c706f5eddf9e17263d547285cde654213ab14ed8" }, "require": { "magento/framework": "*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "php": "~7.4.0||~8.1.0" }, "suggest": { @@ -11481,11 +11522,11 @@ }, { "name": "magento/module-inventory-catalog", - "version": "1.2.2", + "version": "1.3.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog/magento-module-inventory-catalog-1.2.2.0.zip", - "shasum": "03a80e7330a5cc9b8148980bc787aff5c4df8774" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog/magento-module-inventory-catalog-1.3.0.0.zip", + "shasum": "bd8a6f795fdeb474199f6c3de5c753999f5b06d8" }, "require": { "magento/framework": "*", @@ -11496,7 +11537,7 @@ "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration": "1.2.*", "magento/module-inventory-configuration-api": "1.2.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -11521,11 +11562,11 @@ }, { "name": "magento/module-inventory-catalog-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-admin-ui/magento-module-inventory-catalog-admin-ui-1.2.2.0.zip", - "shasum": "0e03dd0e3970d3d6a98710036fa8d56739da696d" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-admin-ui/magento-module-inventory-catalog-admin-ui-1.2.3.0.zip", + "shasum": "3f58ba52984b657f01bd920cd63f54b25b0476c6" }, "require": { "magento/framework": "*", @@ -11536,7 +11577,7 @@ "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-ui": "*", "php": "~7.4.0||~8.1.0" }, @@ -11560,11 +11601,11 @@ }, { "name": "magento/module-inventory-catalog-api", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-api/magento-module-inventory-catalog-api-1.3.2.0.zip", - "shasum": "67f67ac031d060bc8879b65f39da8d125a66a1f7" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-api/magento-module-inventory-catalog-api-1.3.3.0.zip", + "shasum": "aa8bcc447d6990a1d85c6984d0f8c5093c26d057" }, "require": { "magento/framework": "*", @@ -11620,18 +11661,18 @@ }, { "name": "magento/module-inventory-catalog-search", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-search/magento-module-inventory-catalog-search-1.2.2.0.zip", - "shasum": "253ea183349fd502a5f171562515978856d6deee" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-search/magento-module-inventory-catalog-search-1.2.3.0.zip", + "shasum": "745e2b237b9165ccdf7699eee7667f8630657a26" }, "require": { "magento/framework": "*", "magento/module-catalog-inventory": "*", "magento/module-catalog-search": "*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -11715,19 +11756,21 @@ }, { "name": "magento/module-inventory-configurable-product", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product/magento-module-inventory-configurable-product-1.2.2.0.zip", - "shasum": "ad8eb9c6e97ec76dfa0009a097212acf962b1399" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product/magento-module-inventory-configurable-product-1.2.3.0.zip", + "shasum": "80834ce90b323094f7e5bd087670fae139f37f4e" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", "magento/module-catalog-inventory": "*", "magento/module-configurable-product": "*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-configuration": "1.2.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-sales": "*", "magento/module-store": "*", @@ -11754,11 +11797,11 @@ }, { "name": "magento/module-inventory-configurable-product-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-admin-ui/magento-module-inventory-configurable-product-admin-ui-1.2.2.0.zip", - "shasum": "2ba385af6decc80a58b5a4fd933d821378a266c2" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-admin-ui/magento-module-inventory-configurable-product-admin-ui-1.2.3.0.zip", + "shasum": "3b4778a054792c0b8a0a6d26800c6826ceb2b30f" }, "require": { "magento/framework": "*", @@ -11786,11 +11829,11 @@ }, { "name": "magento/module-inventory-configurable-product-frontend-ui", - "version": "1.0.2", + "version": "1.0.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-frontend-ui/magento-module-inventory-configurable-product-frontend-ui-1.0.2.0.zip", - "shasum": "c70203555cd7197a3d805eeef836e14f10624856" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-frontend-ui/magento-module-inventory-configurable-product-frontend-ui-1.0.3.0.zip", + "shasum": "d0d3fa89eaa7b634a767b2844a13340239f8e457" }, "require": { "magento/framework": "*", @@ -11800,7 +11843,7 @@ "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-configurable-product": "1.2.*" }, "type": "magento2-module", @@ -11820,18 +11863,18 @@ }, { "name": "magento/module-inventory-configurable-product-indexer", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-indexer/magento-module-inventory-configurable-product-indexer-1.2.2.0.zip", - "shasum": "5b446a185e3df420f8c1743a27a4fdbebe188780" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-indexer/magento-module-inventory-configurable-product-indexer-1.2.3.0.zip", + "shasum": "53830f28064354070f57b5789efbbf9693cbb0f8" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -12000,18 +12043,18 @@ }, { "name": "magento/module-inventory-elasticsearch", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-elasticsearch/magento-module-inventory-elasticsearch-1.2.1.0.zip", - "shasum": "23d8198b76b2a623e7d0bb862e5d74d5ccb64bbc" + "url": "https://repo.magento.com/archives/magento/module-inventory-elasticsearch/magento-module-inventory-elasticsearch-1.2.2.0.zip", + "shasum": "bd5c9005fd40928b783d41cae1bef66324624d9a" }, "require": { "magento/framework": "*", "magento/module-catalog-inventory": "*", "magento/module-catalog-search": "*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -12033,11 +12076,11 @@ }, { "name": "magento/module-inventory-export-stock", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-export-stock/magento-module-inventory-export-stock-1.2.1.0.zip", - "shasum": "fad446b29c587b59488a0802a61625445f443106" + "url": "https://repo.magento.com/archives/magento/module-inventory-export-stock/magento-module-inventory-export-stock-1.2.2.0.zip", + "shasum": "fc59b1eb23bbf38d0b146deec03818a05dfb45f9" }, "require": { "magento/framework": "*", @@ -12049,8 +12092,8 @@ "magento/module-inventory-configuration": "1.2.*", "magento/module-inventory-configuration-api": "1.2.*", "magento/module-inventory-export-stock-api": "1.2.*", - "magento/module-inventory-indexer": "2.1.*", - "magento/module-inventory-sales": "1.2.*", + "magento/module-inventory-indexer": "2.2.*", + "magento/module-inventory-sales": "1.3.*", "magento/module-inventory-sales-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -12099,16 +12142,16 @@ }, { "name": "magento/module-inventory-graph-ql", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-graph-ql/magento-module-inventory-graph-ql-1.2.1.0.zip", - "shasum": "2ea1ee7d52365e6f8cf5dae709bbffa8b9b986ac" + "url": "https://repo.magento.com/archives/magento/module-inventory-graph-ql/magento-module-inventory-graph-ql-1.2.2.0.zip", + "shasum": "13fe79e0a209e8f4b8802f376f7ed5c78033c9ea" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*", "magento/module-inventory-sales-api": "1.2.*", "php": "~7.4.0||~8.1.0" @@ -12130,11 +12173,11 @@ }, { "name": "magento/module-inventory-grouped-product", - "version": "1.2.2", + "version": "1.3.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product/magento-module-inventory-grouped-product-1.2.2.0.zip", - "shasum": "14428f762e93a2a67f5602aafdeaf2f51a1d2bad" + "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product/magento-module-inventory-grouped-product-1.3.0.0.zip", + "shasum": "adc82ef5c6200042e435c3e02a1ac5fd1eddfaea" }, "require": { "magento/framework": "*", @@ -12142,7 +12185,9 @@ "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory": "1.2.*", + "magento/module-inventory-api": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*" }, @@ -12199,11 +12244,11 @@ }, { "name": "magento/module-inventory-grouped-product-indexer", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product-indexer/magento-module-inventory-grouped-product-indexer-1.2.2.0.zip", - "shasum": "b832f6c85e65bf0bacbb98e0930c5a9ff076a85b" + "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product-indexer/magento-module-inventory-grouped-product-indexer-1.2.3.0.zip", + "shasum": "5c59f02bc9c546d5ea951bca28d47a476375b576" }, "require": { "magento/framework": "*", @@ -12211,7 +12256,7 @@ "magento/module-grouped-product": "*", "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -12235,11 +12280,11 @@ }, { "name": "magento/module-inventory-import-export", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-import-export/magento-module-inventory-import-export-1.2.2.0.zip", - "shasum": "6b0908f2762854d758f25cd9013d132f48824c95" + "url": "https://repo.magento.com/archives/magento/module-inventory-import-export/magento-module-inventory-import-export-1.2.3.0.zip", + "shasum": "4da076d2b7f17b0f2e3cb7f177ba4f29a04e451e" }, "require": { "magento/framework": "*", @@ -12307,11 +12352,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-admin-ui", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-admin-ui/magento-module-inventory-in-store-pickup-admin-ui-1.1.1.0.zip", - "shasum": "42178b7dc79541c756781455cbf5f02c007ea124" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-admin-ui/magento-module-inventory-in-store-pickup-admin-ui-1.1.2.0.zip", + "shasum": "90ccb79901dac65e512ccf7c108db13dc85b8e86" }, "require": { "magento/framework": "*", @@ -12367,11 +12412,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-frontend", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-frontend/magento-module-inventory-in-store-pickup-frontend-1.1.2.0.zip", - "shasum": "24ac803405f8ea0332b9513b1ae30e36db2c61cd" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-frontend/magento-module-inventory-in-store-pickup-frontend-1.1.3.0.zip", + "shasum": "74656159bd3ce588f5753293d1f3727d4a11efcb" }, "require": { "magento/framework": "*", @@ -12399,11 +12444,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-graph-ql", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-graph-ql/magento-module-inventory-in-store-pickup-graph-ql-1.1.1.0.zip", - "shasum": "3d05dbd9393d1a8b6dfe369629df073a78168492" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-graph-ql/magento-module-inventory-in-store-pickup-graph-ql-1.1.2.0.zip", + "shasum": "0070833a277daace18e32a0a56221c52fedc1085" }, "require": { "magento/framework": "*", @@ -12555,11 +12600,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-sales-admin-ui", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-sales-admin-ui/magento-module-inventory-in-store-pickup-sales-admin-ui-1.1.2.0.zip", - "shasum": "ab15da29b0f01e44450db535ed0937f083c5f23b" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-sales-admin-ui/magento-module-inventory-in-store-pickup-sales-admin-ui-1.1.3.0.zip", + "shasum": "b743a3b50262cdf785894d7b2b30373e7edec095" }, "require": { "magento/framework": "*", @@ -12618,11 +12663,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-shipping", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-shipping/magento-module-inventory-in-store-pickup-shipping-1.1.1.0.zip", - "shasum": "44e46745848b85a67a64603366e63867c066fb51" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-shipping/magento-module-inventory-in-store-pickup-shipping-1.1.2.0.zip", + "shasum": "55e273b1c4c562da7253f7aba4ef989558ba6dd0" }, "require": { "magento/framework": "*", @@ -12740,11 +12785,11 @@ }, { "name": "magento/module-inventory-indexer", - "version": "2.1.2", + "version": "2.2.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-indexer/magento-module-inventory-indexer-2.1.2.0.zip", - "shasum": "ecbaa18d6186081218c80f3f3c72cecbf9566d74" + "url": "https://repo.magento.com/archives/magento/module-inventory-indexer/magento-module-inventory-indexer-2.2.0.0.zip", + "shasum": "a75708ded25fa8487eaf492e856eec0208dd55d3" }, "require": { "magento/framework": "*", @@ -12754,7 +12799,7 @@ "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", - "magento/module-inventory-sales": "1.2.*", + "magento/module-inventory-sales": "1.3.*", "magento/module-inventory-sales-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -12778,11 +12823,11 @@ }, { "name": "magento/module-inventory-low-quantity-notification", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification/magento-module-inventory-low-quantity-notification-1.2.1.0.zip", - "shasum": "5833d1a793883ce4ae78eb48774fd645537c6340" + "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification/magento-module-inventory-low-quantity-notification-1.2.2.0.zip", + "shasum": "70af3497ec61d7f65a4184bc0819397823b60e7e" }, "require": { "magento/framework": "*", @@ -12850,11 +12895,11 @@ }, { "name": "magento/module-inventory-low-quantity-notification-api", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification-api/magento-module-inventory-low-quantity-notification-api-1.2.1.0.zip", - "shasum": "0fb0e01c229aef5e7069616bd03b1577d7f9937d" + "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification-api/magento-module-inventory-low-quantity-notification-api-1.2.2.0.zip", + "shasum": "76c5cb447576246350587be50778b97d2ececece" }, "require": { "magento/framework": "*", @@ -12940,15 +12985,15 @@ }, { "name": "magento/module-inventory-quote-graph-ql", - "version": "1.0.1", + "version": "1.0.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-quote-graph-ql/magento-module-inventory-quote-graph-ql-1.0.1.0.zip", - "shasum": "4f270910188389f21166a19aafd568693c4e6791" + "url": "https://repo.magento.com/archives/magento/module-inventory-quote-graph-ql/magento-module-inventory-quote-graph-ql-1.0.2.0.zip", + "shasum": "353666ad869e094f0c5369b845852db9fea1488b" }, "require": { "magento/framework": "*", - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-quote": "*", "magento/module-quote-graph-ql": "*", @@ -12971,11 +13016,11 @@ }, { "name": "magento/module-inventory-requisition-list", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-requisition-list/magento-module-inventory-requisition-list-1.2.2.0.zip", - "shasum": "1aae798848ceceab7d59d0d057c2da81a4541ac6" + "url": "https://repo.magento.com/archives/magento/module-inventory-requisition-list/magento-module-inventory-requisition-list-1.2.3.0.zip", + "shasum": "b9f6581f60cfb4249f1a3270d5ae32eaffacf821" }, "require": { "magento/framework": "*", @@ -13090,11 +13135,11 @@ }, { "name": "magento/module-inventory-sales", - "version": "1.2.2", + "version": "1.3.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-sales/magento-module-inventory-sales-1.2.2.0.zip", - "shasum": "f2fd9ab2b4cbdb982b7ce467c1a6a4323dd5715a" + "url": "https://repo.magento.com/archives/magento/module-inventory-sales/magento-module-inventory-sales-1.3.0.0.zip", + "shasum": "abd02e8c8e9f5dc6c008f11b33d6e09c7d7739c0" }, "require": { "magento/framework": "*", @@ -13117,7 +13162,7 @@ "magento/module-inventory-indexer": "*" }, "suggest": { - "magento/module-inventory-catalog": "1.2.*" + "magento/module-inventory-catalog": "1.3.*" }, "type": "magento2-module", "autoload": { @@ -13136,11 +13181,11 @@ }, { "name": "magento/module-inventory-sales-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-sales-admin-ui/magento-module-inventory-sales-admin-ui-1.2.2.0.zip", - "shasum": "e2f5cc0489661885f7c1199bfe3068de83024c99" + "url": "https://repo.magento.com/archives/magento/module-inventory-sales-admin-ui/magento-module-inventory-sales-admin-ui-1.2.3.0.zip", + "shasum": "d30ef3bc7f23e8041961d4bd5e435520ddcef448" }, "require": { "magento/framework": "*", @@ -13176,11 +13221,11 @@ }, { "name": "magento/module-inventory-sales-api", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-sales-api/magento-module-inventory-sales-api-1.2.1.0.zip", - "shasum": "d2e6bd3c5528b313d8c9de95f350a983a6373c05" + "url": "https://repo.magento.com/archives/magento/module-inventory-sales-api/magento-module-inventory-sales-api-1.2.2.0.zip", + "shasum": "467ab9d52944df86b9fdd5fba0f90880e51e7389" }, "require": { "magento/framework": "*", @@ -13298,11 +13343,11 @@ }, { "name": "magento/module-inventory-shipping-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-shipping-admin-ui/magento-module-inventory-shipping-admin-ui-1.2.2.0.zip", - "shasum": "d71a3e7987e4208f961de4a5c58a18bd5f2c4e7c" + "url": "https://repo.magento.com/archives/magento/module-inventory-shipping-admin-ui/magento-module-inventory-shipping-admin-ui-1.2.3.0.zip", + "shasum": "c2ac5ede4b57a3867e16d6b902d6bc009c3b8c58" }, "require": { "magento/framework": "*", @@ -13393,11 +13438,11 @@ }, { "name": "magento/module-inventory-source-selection-api", - "version": "1.4.1", + "version": "1.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-source-selection-api/magento-module-inventory-source-selection-api-1.4.1.0.zip", - "shasum": "ad89e01a9be6b34ff55b7e58c724df6859444592" + "url": "https://repo.magento.com/archives/magento/module-inventory-source-selection-api/magento-module-inventory-source-selection-api-1.4.2.0.zip", + "shasum": "a75b7cbad48bd870065ab223025d1db4c8bdb557" }, "require": { "magento/framework": "*", @@ -13455,18 +13500,18 @@ }, { "name": "magento/module-inventory-visual-merchandiser", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-visual-merchandiser/magento-module-inventory-visual-merchandiser-1.1.2.0.zip", - "shasum": "d01ca2ece52c64d24f55933fe433be59b5aa8d7a" + "url": "https://repo.magento.com/archives/magento/module-inventory-visual-merchandiser/magento-module-inventory-visual-merchandiser-1.1.3.0.zip", + "shasum": "e4b58f90e087e3ee5c942180e077562386e8c596" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", "magento/module-inventory": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -13495,11 +13540,11 @@ }, { "name": "magento/module-inventory-wishlist", - "version": "1.0.1", + "version": "1.0.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-wishlist/magento-module-inventory-wishlist-1.0.1.0.zip", - "shasum": "f77fa1a0164fe29b63fd1f8c86a54badd68b499f" + "url": "https://repo.magento.com/archives/magento/module-inventory-wishlist/magento-module-inventory-wishlist-1.0.2.0.zip", + "shasum": "41c2b5a4a914dddeb3167f6d473edde45ef6d1e4" }, "require": { "magento/framework": "*", @@ -13526,11 +13571,11 @@ }, { "name": "magento/module-invitation", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-invitation/magento-module-invitation-100.4.3.0.zip", - "shasum": "e96514df29191e45958bb87e094afce8b76785a7" + "url": "https://repo.magento.com/archives/magento/module-invitation/magento-module-invitation-100.4.4.0.zip", + "shasum": "9ae623c03c5d75b66062baab25721b2399c9b83d" }, "require": { "magento/framework": "103.0.*", @@ -13621,11 +13666,11 @@ }, { "name": "magento/module-layered-navigation", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-layered-navigation/magento-module-layered-navigation-100.4.4.0.zip", - "shasum": "2bf329a8c208a400b6dfb6915c01277caf363463" + "url": "https://repo.magento.com/archives/magento/module-layered-navigation/magento-module-layered-navigation-100.4.5.0.zip", + "shasum": "041332d2eba4f0e72e4411c75fa57ebab90681ef" }, "require": { "magento/framework": "103.0.*", @@ -13679,11 +13724,11 @@ }, { "name": "magento/module-logging", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-logging/magento-module-logging-101.2.4.0.zip", - "shasum": "99e66ccaf0d6abbed298f97e40c5d24a0f246cf6" + "url": "https://repo.magento.com/archives/magento/module-logging/magento-module-logging-101.2.5.0.zip", + "shasum": "82ca25a904a20926e28847ebc5a797e306b7259f" }, "require": { "magento/framework": "103.0.*", @@ -13713,11 +13758,11 @@ }, { "name": "magento/module-login-as-customer", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer/magento-module-login-as-customer-100.4.4.0.zip", - "shasum": "114ae73b8319f3173d14c2796c0b18d8c863a9e3" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer/magento-module-login-as-customer-100.4.5.0.zip", + "shasum": "1376e771612b41176ca91a05631335db0f75f20b" }, "require": { "magento/framework": "103.0.*", @@ -13746,11 +13791,11 @@ }, { "name": "magento/module-login-as-customer-admin-ui", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-admin-ui/magento-module-login-as-customer-admin-ui-100.4.4.0.zip", - "shasum": "8ab74540c0109c756148aa0ba329c0f05a12a16a" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-admin-ui/magento-module-login-as-customer-admin-ui-100.4.5.0.zip", + "shasum": "4e86c5f465e7cd9fe3f54c93d0c97a621fa82453" }, "require": { "magento/framework": "103.0.*", @@ -13781,11 +13826,11 @@ }, { "name": "magento/module-login-as-customer-api", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-api/magento-module-login-as-customer-api-100.4.3.0.zip", - "shasum": "74b923b14a6912c1b0b887912171c520f030ff81" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-api/magento-module-login-as-customer-api-100.4.4.0.zip", + "shasum": "c0f84e01b3d0bdc3af53ecc7f5d58d504dd5fdcb" }, "require": { "magento/framework": "103.0.*", @@ -13808,11 +13853,11 @@ }, { "name": "magento/module-login-as-customer-assistance", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-assistance/magento-module-login-as-customer-assistance-100.4.3.0.zip", - "shasum": "af4e2a7066621f1109c01c4b1f48efbaf2c8fcc3" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-assistance/magento-module-login-as-customer-assistance-100.4.4.0.zip", + "shasum": "9b046099d5486eab457c61fa4a38550eccad7fc1" }, "require": { "magento/framework": "103.0.*", @@ -13872,11 +13917,11 @@ }, { "name": "magento/module-login-as-customer-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-graph-ql/magento-module-login-as-customer-graph-ql-100.4.1.0.zip", - "shasum": "1f573808b1bf2c486f28a1a1d83ded398bcaeb60" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-graph-ql/magento-module-login-as-customer-graph-ql-100.4.2.0.zip", + "shasum": "1528b2b3c62fb996a616efcf04473151e6cb89e0" }, "require": { "magento/framework": "103.0.*", @@ -13941,11 +13986,11 @@ }, { "name": "magento/module-login-as-customer-logging", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-logging/magento-module-login-as-customer-logging-100.4.4.0.zip", - "shasum": "d5de725112ee832fe7ba98f6321bd8b7910119cb" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-logging/magento-module-login-as-customer-logging-100.4.5.0.zip", + "shasum": "cb1b8249f62a06952e50afca44712836b908e805" }, "require": { "magento/framework": "103.0.*", @@ -14158,11 +14203,11 @@ }, { "name": "magento/module-media-content-api", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-content-api/magento-module-media-content-api-100.4.3.0.zip", - "shasum": "7bafa26cbd67a38d77a787543072d7c2bb2c64fa" + "url": "https://repo.magento.com/archives/magento/module-media-content-api/magento-module-media-content-api-100.4.4.0.zip", + "shasum": "e235e273fc88a016d1bd3bb81d50002eb092b6de" }, "require": { "magento/framework": "103.0.*", @@ -14276,11 +14321,11 @@ }, { "name": "magento/module-media-content-synchronization", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization/magento-module-media-content-synchronization-100.4.3.0.zip", - "shasum": "a6f821d4a57165d3b5a267b5f25dd2ec1074df3f" + "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization/magento-module-media-content-synchronization-100.4.4.0.zip", + "shasum": "f5235ec268cb902322e6ba1befe6dfa6960859b5" }, "require": { "magento/framework": "103.0.*", @@ -14310,11 +14355,11 @@ }, { "name": "magento/module-media-content-synchronization-api", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization-api/magento-module-media-content-synchronization-api-100.4.2.0.zip", - "shasum": "a8f633156abd62b341ccbd1a0881257310edc0cd" + "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization-api/magento-module-media-content-synchronization-api-100.4.3.0.zip", + "shasum": "55cab31f4c51604df8f417aa21e4314b45707ff8" }, "require": { "magento/framework": "103.0.*", @@ -14398,11 +14443,11 @@ }, { "name": "magento/module-media-gallery", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery/magento-module-media-gallery-100.4.3.0.zip", - "shasum": "8b8dc16349ba001dece052df1a95fc2e7056e2cf" + "url": "https://repo.magento.com/archives/magento/module-media-gallery/magento-module-media-gallery-100.4.4.0.zip", + "shasum": "a8c451eeaf64b4ee2ad79f23702982e9ae9f74d8" }, "require": { "magento/framework": "103.0.*", @@ -14427,11 +14472,11 @@ }, { "name": "magento/module-media-gallery-api", - "version": "101.0.3", + "version": "101.0.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-api/magento-module-media-gallery-api-101.0.3.0.zip", - "shasum": "f04cb38b143a96c0bbeadb29eff877e455163ac8" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-api/magento-module-media-gallery-api-101.0.4.0.zip", + "shasum": "8eefc82cff3278c0c04b295c71c8c689bd790d8c" }, "require": { "magento/framework": "103.0.*", @@ -14578,11 +14623,11 @@ }, { "name": "magento/module-media-gallery-integration", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-integration/magento-module-media-gallery-integration-100.4.3.0.zip", - "shasum": "a97ced3f07c725026d37211a8f1e5a7818ce5be4" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-integration/magento-module-media-gallery-integration-100.4.4.0.zip", + "shasum": "e3aa33bb7297034c6a59bc8fa6a836b35af70201" }, "require": { "magento/framework": "103.0.*", @@ -14616,11 +14661,11 @@ }, { "name": "magento/module-media-gallery-metadata", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata/magento-module-media-gallery-metadata-100.4.2.0.zip", - "shasum": "dc0ec2fe025be985e2e5016797b267b5546874b9" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata/magento-module-media-gallery-metadata-100.4.3.0.zip", + "shasum": "b8d1b916247a3ab2a73d5112ce7a38b4834c7474" }, "require": { "magento/framework": "103.0.*", @@ -14644,11 +14689,11 @@ }, { "name": "magento/module-media-gallery-metadata-api", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata-api/magento-module-media-gallery-metadata-api-100.4.1.0.zip", - "shasum": "da3051194151ab4e66cce1be05c61eee6bb15ec5" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata-api/magento-module-media-gallery-metadata-api-100.4.2.0.zip", + "shasum": "a167dd435a3c6aadbf4ea436bb88ad7392a02be1" }, "require": { "magento/framework": "103.0.*", @@ -14671,11 +14716,11 @@ }, { "name": "magento/module-media-gallery-renditions", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions/magento-module-media-gallery-renditions-100.4.2.0.zip", - "shasum": "82ffa1e7db6aa2fbdd5d329cf243ed343e131366" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions/magento-module-media-gallery-renditions-100.4.3.0.zip", + "shasum": "d3c9da3d4bda169f9b687595281b056cc0db5020" }, "require": { "magento/framework": "103.0.*", @@ -14705,11 +14750,11 @@ }, { "name": "magento/module-media-gallery-renditions-api", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions-api/magento-module-media-gallery-renditions-api-100.4.1.0.zip", - "shasum": "8c1e522c1e4de823877d1a2a13552dc1fe945ffb" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions-api/magento-module-media-gallery-renditions-api-100.4.2.0.zip", + "shasum": "c684de95cd58a68a5ded32ab1d54bc840eda078a" }, "require": { "magento/framework": "103.0.*", @@ -14732,11 +14777,11 @@ }, { "name": "magento/module-media-gallery-synchronization", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization/magento-module-media-gallery-synchronization-100.4.3.0.zip", - "shasum": "df985d270669d11f4acd77960cc48bea568cf313" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization/magento-module-media-gallery-synchronization-100.4.4.0.zip", + "shasum": "02578232663d1a7637f2d8c08ef49ae6421c449d" }, "require": { "magento/framework": "103.0.*", @@ -14762,11 +14807,11 @@ }, { "name": "magento/module-media-gallery-synchronization-api", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization-api/magento-module-media-gallery-synchronization-api-100.4.2.0.zip", - "shasum": "f87dc814bd9c921dfedd5b123c4dee573afc94cc" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization-api/magento-module-media-gallery-synchronization-api-100.4.3.0.zip", + "shasum": "be6d4f82a76fcc39db835401e2e9bd332ce78266" }, "require": { "magento/framework": "103.0.*", @@ -14820,11 +14865,11 @@ }, { "name": "magento/module-media-gallery-ui", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui/magento-module-media-gallery-ui-100.4.3.0.zip", - "shasum": "a3fd101844ef89b5dfef2d4fe4cb8ee534a3a419" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui/magento-module-media-gallery-ui-100.4.4.0.zip", + "shasum": "66c54e0b853754f695253a23286a88c4bce8fd82" }, "require": { "magento/framework": "103.0.*", @@ -14858,11 +14903,11 @@ }, { "name": "magento/module-media-gallery-ui-api", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui-api/magento-module-media-gallery-ui-api-100.4.2.0.zip", - "shasum": "904fe7463a82ef25832080bc373c6df78710e7bf" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui-api/magento-module-media-gallery-ui-api-100.4.3.0.zip", + "shasum": "eb813d47915354b0f5a3ad49381d5f55658d0f6c" }, "require": { "magento/framework": "103.0.*", @@ -14888,11 +14933,11 @@ }, { "name": "magento/module-media-storage", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-storage/magento-module-media-storage-100.4.3.0.zip", - "shasum": "d6d7bda754468621063b5b238fc3e84079cae0ee" + "url": "https://repo.magento.com/archives/magento/module-media-storage/magento-module-media-storage-100.4.4.0.zip", + "shasum": "6e3b469674fe41e8f8bd36b296908734028fd45b" }, "require": { "magento/framework": "103.0.*", @@ -14923,11 +14968,11 @@ }, { "name": "magento/module-message-queue", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-message-queue/magento-module-message-queue-100.4.4.0.zip", - "shasum": "35d67930b7773bafde64bb33c6a4a798f75dc48f" + "url": "https://repo.magento.com/archives/magento/module-message-queue/magento-module-message-queue-100.4.5.0.zip", + "shasum": "c22f018c65c4699bd606f1f8997f914d13886cf1" }, "require": { "magento/framework": "103.0.*", @@ -14952,11 +14997,11 @@ }, { "name": "magento/module-msrp", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-msrp/magento-module-msrp-100.4.3.0.zip", - "shasum": "5e15e57618e975581e0096857d1624d0f6d5a010" + "url": "https://repo.magento.com/archives/magento/module-msrp/magento-module-msrp-100.4.4.0.zip", + "shasum": "bd055d354e6ac6d952af52deb3b4cffd58f20b26" }, "require": { "magento/framework": "103.0.*", @@ -15048,11 +15093,11 @@ }, { "name": "magento/module-msrp-staging", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-msrp-staging/magento-module-msrp-staging-100.4.2.0.zip", - "shasum": "630b84dff9cc07532e2712a491aebc5d387e1825" + "url": "https://repo.magento.com/archives/magento/module-msrp-staging/magento-module-msrp-staging-100.4.3.0.zip", + "shasum": "29ca00d1f0345498052d8df88c77664c64d923a2" }, "require": { "lib-libxml": "*", @@ -15080,11 +15125,11 @@ }, { "name": "magento/module-multiple-wishlist", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-multiple-wishlist/magento-module-multiple-wishlist-100.4.4.0.zip", - "shasum": "fef80378740e6183b1af3c492fa392cfcca8b8ac" + "url": "https://repo.magento.com/archives/magento/module-multiple-wishlist/magento-module-multiple-wishlist-100.4.5.0.zip", + "shasum": "4683536cd5537aa5a7caea553db8f687ed2d6e91" }, "require": { "magento/framework": "103.0.*", @@ -15150,11 +15195,11 @@ }, { "name": "magento/module-multishipping", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-multishipping/magento-module-multishipping-100.4.4.0.zip", - "shasum": "541ef110683b9377bd76f6db4fc8627f881c76e0" + "url": "https://repo.magento.com/archives/magento/module-multishipping/magento-module-multishipping-100.4.5.0.zip", + "shasum": "86c08ce0688695d8f4dba94a98c96a11a725f19d" }, "require": { "magento/framework": "103.0.*", @@ -15187,11 +15232,11 @@ }, { "name": "magento/module-mysql-mq", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-mysql-mq/magento-module-mysql-mq-100.4.2.0.zip", - "shasum": "5cad1edddead40f38e51f8446f1eac4e51f097dc" + "url": "https://repo.magento.com/archives/magento/module-mysql-mq/magento-module-mysql-mq-100.4.3.0.zip", + "shasum": "244ce82923f4b37efc9da06bda19dc194280ecab" }, "require": { "magento/framework": "103.0.*", @@ -15217,11 +15262,11 @@ }, { "name": "magento/module-new-relic-reporting", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-new-relic-reporting/magento-module-new-relic-reporting-100.4.2.0.zip", - "shasum": "fee191801653dd71f556f3f7b93ff132b403610f" + "url": "https://repo.magento.com/archives/magento/module-new-relic-reporting/magento-module-new-relic-reporting-100.4.3.0.zip", + "shasum": "8bd8d00d689cb7cc2203ae0e6f3aab77c5f81496" }, "require": { "magento/framework": "103.0.*", @@ -15251,11 +15296,11 @@ }, { "name": "magento/module-newsletter", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-newsletter/magento-module-newsletter-100.4.4.0.zip", - "shasum": "cf43af43a4d0f074c640c1f9b25fe0305fe736b5" + "url": "https://repo.magento.com/archives/magento/module-newsletter/magento-module-newsletter-100.4.5.0.zip", + "shasum": "fb7c42f608275e4c6a234287edb5a89f1c9a2d58" }, "require": { "magento/framework": "103.0.*", @@ -15287,11 +15332,11 @@ }, { "name": "magento/module-newsletter-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-newsletter-graph-ql/magento-module-newsletter-graph-ql-100.4.1.0.zip", - "shasum": "9625fab7c5320b8f3f0f7affc4646e99a6951ad9" + "url": "https://repo.magento.com/archives/magento/module-newsletter-graph-ql/magento-module-newsletter-graph-ql-100.4.2.0.zip", + "shasum": "570aed7c33d87714a1b812e5316d9903ba865ae4" }, "require": { "magento/framework": "103.0.*", @@ -15353,11 +15398,11 @@ }, { "name": "magento/module-offline-shipping", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-offline-shipping/magento-module-offline-shipping-100.4.3.0.zip", - "shasum": "9435b928d6833e745e801137b35a397cbb41a01f" + "url": "https://repo.magento.com/archives/magento/module-offline-shipping/magento-module-offline-shipping-100.4.4.0.zip", + "shasum": "02167bd6af953e852803fe11b4b79bb799e8a9ee" }, "require": { "magento/framework": "103.0.*", @@ -15393,11 +15438,11 @@ }, { "name": "magento/module-page-builder", - "version": "2.2.2", + "version": "2.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-page-builder/magento-module-page-builder-2.2.2.0.zip", - "shasum": "21f3d7f30d83795c1920308acb3e936e7666b876" + "url": "https://repo.magento.com/archives/magento/module-page-builder/magento-module-page-builder-2.2.3.0.zip", + "shasum": "5e754e262ebaa46dc7f08cd258c5e3b9a8b3487b" }, "require": { "magento/framework": "103.0.*", @@ -15532,15 +15577,16 @@ }, { "name": "magento/module-page-cache", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-page-cache/magento-module-page-cache-100.4.4.0.zip", - "shasum": "86488eb5329f143529d35dfbb6a8108e471d8198" + "url": "https://repo.magento.com/archives/magento/module-page-cache/magento-module-page-cache-100.4.5.0.zip", + "shasum": "b6c3ab1dad0318b147d8a722d994e8241e2681a8" }, "require": { "magento/framework": "103.0.*", "magento/module-backend": "102.0.*", + "magento/module-catalog": "104.0.*", "magento/module-config": "101.2.*", "magento/module-store": "101.1.*", "php": "~7.4.0||~8.1.0" @@ -15562,11 +15608,11 @@ }, { "name": "magento/module-payment", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-payment/magento-module-payment-100.4.4.0.zip", - "shasum": "ba16255ab4a4e232de422128c83fb3817ea4aea0" + "url": "https://repo.magento.com/archives/magento/module-payment/magento-module-payment-100.4.5.0.zip", + "shasum": "1729b982a9c1ce9419459e06991ed8d63b4af6cc" }, "require": { "magento/framework": "103.0.*", @@ -15660,11 +15706,11 @@ }, { "name": "magento/module-paypal", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-paypal/magento-module-paypal-101.0.4.0.zip", - "shasum": "29225b4cbce7895c709a96682390126e99ab0f86" + "url": "https://repo.magento.com/archives/magento/module-paypal/magento-module-paypal-101.0.5.0.zip", + "shasum": "71c9e4667fd9eda0f2e2f87c987a65c60044221c" }, "require": { "lib-libxml": "*", @@ -15741,11 +15787,11 @@ }, { "name": "magento/module-paypal-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-paypal-graph-ql/magento-module-paypal-graph-ql-100.4.2.0.zip", - "shasum": "c21161b1a9343876979f10855968b906d196253c" + "url": "https://repo.magento.com/archives/magento/module-paypal-graph-ql/magento-module-paypal-graph-ql-100.4.3.0.zip", + "shasum": "4d59ba2805e7540fda1f6e5979145d9fce0a5cb6" }, "require": { "magento/framework": "103.0.*", @@ -15780,11 +15826,11 @@ }, { "name": "magento/module-persistent", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-persistent/magento-module-persistent-100.4.4.0.zip", - "shasum": "062dab52db6a05bcb25875dfddf1054760878bf5" + "url": "https://repo.magento.com/archives/magento/module-persistent/magento-module-persistent-100.4.5.0.zip", + "shasum": "950b3b9856f49aa0c5e8b6eef0e41cd231a74896" }, "require": { "magento/framework": "103.0.*", @@ -15889,11 +15935,11 @@ }, { "name": "magento/module-product-alert", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-product-alert/magento-module-product-alert-100.4.3.0.zip", - "shasum": "4d6c67208028fdb74bcc1bde4336ae70b2246d9e" + "url": "https://repo.magento.com/archives/magento/module-product-alert/magento-module-product-alert-100.4.4.0.zip", + "shasum": "d46bb9bd950e11d3d012a44d1a3602858559b2f4" }, "require": { "magento/framework": "103.0.*", @@ -15927,11 +15973,11 @@ }, { "name": "magento/module-product-video", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-product-video/magento-module-product-video-100.4.4.0.zip", - "shasum": "9d3518be12de9631c1faf916966222b05cfd3951" + "url": "https://repo.magento.com/archives/magento/module-product-video/magento-module-product-video-100.4.5.0.zip", + "shasum": "2f9b406f585e479cb2da5a90cc5467a6e429fd9d" }, "require": { "magento/framework": "103.0.*", @@ -15945,7 +15991,8 @@ }, "suggest": { "magento/module-config": "101.2.*", - "magento/module-customer": "103.0.*" + "magento/module-customer": "103.0.*", + "magento/module-theme": "101.1.*" }, "type": "magento2-module", "autoload": { @@ -16030,11 +16077,11 @@ }, { "name": "magento/module-quote", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-quote/magento-module-quote-101.2.4.0.zip", - "shasum": "841d3a277436875eda36913cfc71e8968ac5f79f" + "url": "https://repo.magento.com/archives/magento/module-quote/magento-module-quote-101.2.5.0.zip", + "shasum": "92dafbe73d3b3142724a7664cba3720e97e6afa1" }, "require": { "magento/framework": "103.0.*", @@ -16215,11 +16262,11 @@ }, { "name": "magento/module-quote-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-quote-graph-ql/magento-module-quote-graph-ql-100.4.4.0.zip", - "shasum": "e415b9e084f891e2629e34aec5bdd1c7c1a5433b" + "url": "https://repo.magento.com/archives/magento/module-quote-graph-ql/magento-module-quote-graph-ql-100.4.5.0.zip", + "shasum": "760f3c37cc1cb60701eb17a14c90f7bd135e071f" }, "require": { "magento/framework": "103.0.*", @@ -16258,11 +16305,11 @@ }, { "name": "magento/module-quote-staging", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-quote-staging/magento-module-quote-staging-100.4.1.0.zip", - "shasum": "c77b0050c1f03957b8e220a73920963f1958c3cd" + "url": "https://repo.magento.com/archives/magento/module-quote-staging/magento-module-quote-staging-100.4.2.0.zip", + "shasum": "0fde8e470bd847bd1520ef4cd7294fedf84a8bb9" }, "require": { "magento/framework": "103.0.*", @@ -16350,11 +16397,11 @@ }, { "name": "magento/module-re-captcha-checkout-sales-rule", - "version": "1.1.0", + "version": "1.1.1", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-re-captcha-checkout-sales-rule/magento-module-re-captcha-checkout-sales-rule-1.1.0.0.zip", - "shasum": "325a360dcf9fb05ec64cc751ca43de83bd35a988" + "url": "https://repo.magento.com/archives/magento/module-re-captcha-checkout-sales-rule/magento-module-re-captcha-checkout-sales-rule-1.1.1.0.zip", + "shasum": "681d9b35cd5f9654c2e4f121108af84d54802b7b" }, "require": { "magento/framework": "*", @@ -16411,11 +16458,11 @@ }, { "name": "magento/module-re-captcha-customer", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-re-captcha-customer/magento-module-re-captcha-customer-1.1.2.0.zip", - "shasum": "858ad4b3d639ba7da86d380738da9d42fb6b6a55" + "url": "https://repo.magento.com/archives/magento/module-re-captcha-customer/magento-module-re-captcha-customer-1.1.3.0.zip", + "shasum": "4aacce4909811f75da30401696e5bfa0aaca1c45" }, "require": { "magento/framework": "*", @@ -16441,11 +16488,11 @@ }, { "name": "magento/module-re-captcha-frontend-ui", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-re-captcha-frontend-ui/magento-module-re-captcha-frontend-ui-1.1.2.0.zip", - "shasum": "77e37acce0e38f199e15b123bfa0377c971a311a" + "url": "https://repo.magento.com/archives/magento/module-re-captcha-frontend-ui/magento-module-re-captcha-frontend-ui-1.1.3.0.zip", + "shasum": "478b8b65b2dcdfcda38d065774b69a4ca5603c1f" }, "require": { "magento/framework": "*", @@ -16467,6 +16514,76 @@ ], "description": "Google reCAPTCHA integration for Magento2" }, + { + "name": "magento/module-re-captcha-gift-card", + "version": "1.0.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-re-captcha-gift-card/magento-module-re-captcha-gift-card-1.0.0.0.zip", + "shasum": "13c97d993b06fb572e4b69336db3aa34a5c47fc5" + }, + "require": { + "magento/framework": "*", + "magento/module-checkout": "*", + "magento/module-customer": "*", + "magento/module-gift-card-account": "*", + "magento/module-gift-card-account-graph-ql": "*", + "magento/module-re-captcha-admin-ui": "*", + "magento/module-re-captcha-frontend-ui": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-webapi-api": "*", + "magento/module-re-captcha-webapi-graph-ql": "*", + "magento/module-re-captcha-webapi-rest": "*", + "magento/module-re-captcha-webapi-ui": "*", + "php": "~7.4.0||~8.0.0||~8.1.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaGiftCard\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2 Gift Cards" + }, + { + "name": "magento/module-re-captcha-invitation", + "version": "1.0.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-re-captcha-invitation/magento-module-re-captcha-invitation-1.0.0.0.zip", + "shasum": "64287f9a60d0a7c67ada7225f9c5539ad7022e9e" + }, + "require": { + "magento/framework": "*", + "magento/module-customer": "*", + "magento/module-invitation": "*", + "magento/module-re-captcha-admin-ui": "*", + "magento/module-re-captcha-frontend-ui": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "php": "~7.4.0||~8.0.0||~8.1.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaInvitation\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA for Invitation Module" + }, { "name": "magento/module-re-captcha-migration", "version": "1.1.2", @@ -16494,6 +16611,33 @@ ], "description": "Google reCAPTCHA config migration for Magento2" }, + { + "name": "magento/module-re-captcha-multiple-wishlist", + "version": "1.0.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-re-captcha-multiple-wishlist/magento-module-re-captcha-multiple-wishlist-1.0.0.0.zip", + "shasum": "8979f3f6683294410b16bfb7e894276d0e659484" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-ui": "*", + "php": "~7.4.0||~8.0.0||~8.1.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaMultipleWishlist\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2" + }, { "name": "magento/module-re-captcha-newsletter", "version": "1.1.2", @@ -17003,11 +17147,11 @@ }, { "name": "magento/module-release-notification", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-release-notification/magento-module-release-notification-100.4.2.0.zip", - "shasum": "56dfc07c4b0f63883a7b673dbb987b40379d9be4" + "url": "https://repo.magento.com/archives/magento/module-release-notification/magento-module-release-notification-100.4.3.0.zip", + "shasum": "cbcfb4e11a3961944e15971be5d76655867502f4" }, "require": { "magento/framework": "103.0.*", @@ -17036,11 +17180,11 @@ }, { "name": "magento/module-reminder", - "version": "101.2.3", + "version": "101.2.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-reminder/magento-module-reminder-101.2.3.0.zip", - "shasum": "6489824452ce8df3ce4b2445383742e91f2bb28f" + "url": "https://repo.magento.com/archives/magento/module-reminder/magento-module-reminder-101.2.4.0.zip", + "shasum": "755c797993d662bba9aedfbc730a72ff8478f5eb" }, "require": { "magento/framework": "103.0.*", @@ -17073,13 +17217,15 @@ }, { "name": "magento/module-remote-storage", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-remote-storage/magento-module-remote-storage-100.4.2.0.zip", - "shasum": "820a8757e558fb1779768a3dcefb7d78953beceb" + "url": "https://repo.magento.com/archives/magento/module-remote-storage/magento-module-remote-storage-100.4.3.0.zip", + "shasum": "3047e17d09a6b74bfff57e33f318f78e91c67622" }, "require": { + "league/flysystem": "~2.4.3", + "league/flysystem-aws-s3-v3": "^2.4.3", "magento/framework": "103.0.*", "php": "~7.4.0||~8.1.0" }, @@ -17146,11 +17292,11 @@ }, { "name": "magento/module-reports", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-reports/magento-module-reports-100.4.4.0.zip", - "shasum": "54cdf7898e9ce88835c70bd98e6bf3768da1c0a8" + "url": "https://repo.magento.com/archives/magento/module-reports/magento-module-reports-100.4.5.0.zip", + "shasum": "f83a31e94a46f6ffdbf2c62d6ec0db87e7ebdd34" }, "require": { "magento/framework": "103.0.*", @@ -17243,11 +17389,11 @@ }, { "name": "magento/module-review", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-review/magento-module-review-100.4.4.0.zip", - "shasum": "54e088ec5c4fb4ca107a01092ddb3a4223ef0c3c" + "url": "https://repo.magento.com/archives/magento/module-review/magento-module-review-100.4.5.0.zip", + "shasum": "70e4692bf3f0da7b5e607f736b32a87e4b5124f2" }, "require": { "magento/framework": "103.0.*", @@ -17378,11 +17524,11 @@ }, { "name": "magento/module-reward", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-reward/magento-module-reward-101.2.4.0.zip", - "shasum": "56ac2c08ae85c4510038fa82a878faaf815a2db7" + "url": "https://repo.magento.com/archives/magento/module-reward/magento-module-reward-101.2.5.0.zip", + "shasum": "0789e5e5ce633d993530844f60215eb51e952eb6" }, "require": { "magento/framework": "103.0.*", @@ -17424,11 +17570,11 @@ }, { "name": "magento/module-reward-graph-ql", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-reward-graph-ql/magento-module-reward-graph-ql-100.4.3.0.zip", - "shasum": "3b363e29178653a5528aff15b91cb7e80206e8dc" + "url": "https://repo.magento.com/archives/magento/module-reward-graph-ql/magento-module-reward-graph-ql-100.4.4.0.zip", + "shasum": "e21df6a41d08df4c9af9f7720e823a77b3fd0261" }, "require": { "magento/framework": "103.0.*", @@ -17492,11 +17638,11 @@ }, { "name": "magento/module-rma", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-rma/magento-module-rma-101.2.4.0.zip", - "shasum": "fb1b7adea348619afa2fc395b796d3844e6f5422" + "url": "https://repo.magento.com/archives/magento/module-rma/magento-module-rma-101.2.5.0.zip", + "shasum": "7439632c89a05794b494221a00e6e75b81e5a48d" }, "require": { "ext-gd": "*", @@ -17543,11 +17689,11 @@ }, { "name": "magento/module-rma-graph-ql", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-rma-graph-ql/magento-module-rma-graph-ql-100.4.3.0.zip", - "shasum": "5ee7a7b0af3ee6219123d04424748fb6d83a09a7" + "url": "https://repo.magento.com/archives/magento/module-rma-graph-ql/magento-module-rma-graph-ql-100.4.4.0.zip", + "shasum": "1317a31b08634dfa06deee4db0cb50e199392dd7" }, "require": { "magento/framework": "103.0.*", @@ -17674,11 +17820,11 @@ }, { "name": "magento/module-rule", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-rule/magento-module-rule-100.4.3.0.zip", - "shasum": "1165df5b96f157a0cc5fad73926fc5385b26d90b" + "url": "https://repo.magento.com/archives/magento/module-rule/magento-module-rule-100.4.4.0.zip", + "shasum": "98fe15231d183581f48dcfe72813705fe3327389" }, "require": { "lib-libxml": "*", @@ -17706,11 +17852,11 @@ }, { "name": "magento/module-sales", - "version": "103.0.4", + "version": "103.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales/magento-module-sales-103.0.4.0.zip", - "shasum": "39837e3d9beab675da50c8cdd6055ca46267414f" + "url": "https://repo.magento.com/archives/magento/module-sales/magento-module-sales-103.0.5.0.zip", + "shasum": "15c3b85e28ec26ce31bb8e45ef6855eed526ab41" }, "require": { "magento/framework": "103.0.*", @@ -17821,11 +17967,11 @@ }, { "name": "magento/module-sales-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales-graph-ql/magento-module-sales-graph-ql-100.4.4.0.zip", - "shasum": "34fff9a44fed763cdd1958fa1a58b04960f62764" + "url": "https://repo.magento.com/archives/magento/module-sales-graph-ql/magento-module-sales-graph-ql-100.4.5.0.zip", + "shasum": "b38fd2a06e289ea121309cb191dcb20d8d427eb5" }, "require": { "magento/framework": "103.0.*", @@ -17855,11 +18001,11 @@ }, { "name": "magento/module-sales-inventory", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales-inventory/magento-module-sales-inventory-100.4.1.0.zip", - "shasum": "8c675f61107484177c9c379b9a17d67644263535" + "url": "https://repo.magento.com/archives/magento/module-sales-inventory/magento-module-sales-inventory-100.4.2.0.zip", + "shasum": "1a7b00a475ebc016a11b32097571cd39cf8a81e9" }, "require": { "magento/framework": "103.0.*", @@ -17886,11 +18032,11 @@ }, { "name": "magento/module-sales-rule", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales-rule/magento-module-sales-rule-101.2.4.0.zip", - "shasum": "988865b771330b426721a225321e54cbe8f4afa6" + "url": "https://repo.magento.com/archives/magento/module-sales-rule/magento-module-sales-rule-101.2.5.0.zip", + "shasum": "0f28d3088948906a11ff089d6bd81eff3dadf5e2" }, "require": { "magento/framework": "103.0.*", @@ -17937,11 +18083,11 @@ }, { "name": "magento/module-sales-rule-staging", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales-rule-staging/magento-module-sales-rule-staging-100.4.3.0.zip", - "shasum": "fc176e0f603e6c7d178b007159ecfcdf6515e028" + "url": "https://repo.magento.com/archives/magento/module-sales-rule-staging/magento-module-sales-rule-staging-100.4.4.0.zip", + "shasum": "16b0764e260b5467154d07437ef41375f7399de1" }, "require": { "magento/framework": "103.0.*", @@ -18001,11 +18147,11 @@ }, { "name": "magento/module-sample-data", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sample-data/magento-module-sample-data-100.4.2.0.zip", - "shasum": "c744e1b02a66aa6366a24d434edcd94caa04c556" + "url": "https://repo.magento.com/archives/magento/module-sample-data/magento-module-sample-data-100.4.3.0.zip", + "shasum": "513b197c79b839c7a2db1239646606dc527f9816" }, "require": { "magento/framework": "103.0.*", @@ -18032,11 +18178,11 @@ }, { "name": "magento/module-scalable-checkout", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-scalable-checkout/magento-module-scalable-checkout-100.4.3.0.zip", - "shasum": "b0d54c39df4d116aec2068e95658d13daa1f29ed" + "url": "https://repo.magento.com/archives/magento/module-scalable-checkout/magento-module-scalable-checkout-100.4.4.0.zip", + "shasum": "158c363c231003c0bd440c0843c124b772b383dc" }, "require": { "magento/framework": "103.0.*", @@ -18066,11 +18212,11 @@ }, { "name": "magento/module-scalable-inventory", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-scalable-inventory/magento-module-scalable-inventory-100.4.2.0.zip", - "shasum": "0dcf49f82d6db48941e6427feaf13fd085bd52ac" + "url": "https://repo.magento.com/archives/magento/module-scalable-inventory/magento-module-scalable-inventory-100.4.3.0.zip", + "shasum": "b18c5e0e75ddbf4917dca3469c9bded346087341" }, "require": { "magento/framework": "103.0.*", @@ -18126,11 +18272,11 @@ }, { "name": "magento/module-scheduled-import-export", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-scheduled-import-export/magento-module-scheduled-import-export-101.2.4.0.zip", - "shasum": "132e73fecbc5aaee00b3c1432a4433ba82b35b9e" + "url": "https://repo.magento.com/archives/magento/module-scheduled-import-export/magento-module-scheduled-import-export-101.2.5.0.zip", + "shasum": "e29db9f662358b5164617042acf861e7da5eef94" }, "require": { "magento/framework": "103.0.*", @@ -18158,11 +18304,11 @@ }, { "name": "magento/module-search", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-search/magento-module-search-101.1.4.0.zip", - "shasum": "3dedc0872f8976e26bb230eed7372498e1459436" + "url": "https://repo.magento.com/archives/magento/module-search/magento-module-search-101.1.5.0.zip", + "shasum": "51a4bddd43f04a866473760721b7f9799abe4bc5" }, "require": { "magento/framework": "103.0.*", @@ -18190,11 +18336,11 @@ }, { "name": "magento/module-search-staging", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-search-staging/magento-module-search-staging-100.4.2.0.zip", - "shasum": "d18e5542a9c8fee3b9122382f301fd5c090e5905" + "url": "https://repo.magento.com/archives/magento/module-search-staging/magento-module-search-staging-100.4.3.0.zip", + "shasum": "2b34c0841f1d4fe4ab00ff76c0cd6bcfb6311113" }, "require": { "lib-libxml": "*", @@ -18219,11 +18365,11 @@ }, { "name": "magento/module-security", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-security/magento-module-security-100.4.4.0.zip", - "shasum": "8dc34acc5886991e372557e64df325bae8ff1e68" + "url": "https://repo.magento.com/archives/magento/module-security/magento-module-security-100.4.5.0.zip", + "shasum": "324e5973bdf16cf28690873edb6b2cf21edefb4f" }, "require": { "magento/framework": "103.0.*", @@ -18351,11 +18497,11 @@ }, { "name": "magento/module-shipping", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-shipping/magento-module-shipping-100.4.4.0.zip", - "shasum": "503a898158ff301be00856671a270ca5dff7bda9" + "url": "https://repo.magento.com/archives/magento/module-shipping/magento-module-shipping-100.4.5.0.zip", + "shasum": "325b2b9f9b77143187698d4a2d815887e6a563f8" }, "require": { "ext-gd": "*", @@ -18397,11 +18543,11 @@ }, { "name": "magento/module-sitemap", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sitemap/magento-module-sitemap-100.4.3.0.zip", - "shasum": "2e62d36fde01d8b78511f2c56e5d50c872fdcfe6" + "url": "https://repo.magento.com/archives/magento/module-sitemap/magento-module-sitemap-100.4.4.0.zip", + "shasum": "88daf14b4c318d32bb142272f0609a9a5aafeeea" }, "require": { "magento/framework": "103.0.*", @@ -18436,16 +18582,18 @@ }, { "name": "magento/module-staging", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-staging/magento-module-staging-101.2.4.0.zip", - "shasum": "973e283ccdee4135e0943e6c1fe61a7a9336377f" + "url": "https://repo.magento.com/archives/magento/module-staging/magento-module-staging-101.2.5.0.zip", + "shasum": "79d58f9eb52cc704d1c51f1e33b3bf2381e37378" }, "require": { "lib-libxml": "*", "magento/framework": "103.0.*", + "magento/framework-bulk": "101.0.*", "magento/magento-composer-installer": "*", + "magento/module-asynchronous-operations": "100.4.*", "magento/module-backend": "102.0.*", "magento/module-require-js": "100.4.*", "magento/module-store": "101.1.*", @@ -18474,11 +18622,11 @@ }, { "name": "magento/module-staging-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-staging-graph-ql/magento-module-staging-graph-ql-100.4.1.0.zip", - "shasum": "a3a9c8337472b23a48abec62c1e1aca98a86bd11" + "url": "https://repo.magento.com/archives/magento/module-staging-graph-ql/magento-module-staging-graph-ql-100.4.2.0.zip", + "shasum": "acc60f9f28d1bfafc80a75b33e9455ec0c8353cf" }, "require": { "magento/framework": "103.0.*", @@ -18503,11 +18651,11 @@ }, { "name": "magento/module-staging-page-builder", - "version": "2.2.2", + "version": "2.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-staging-page-builder/magento-module-staging-page-builder-2.2.2.0.zip", - "shasum": "33a08bba23113c084a60c5884fec9cad7e966c4e" + "url": "https://repo.magento.com/archives/magento/module-staging-page-builder/magento-module-staging-page-builder-2.2.3.0.zip", + "shasum": "7a5786e15109699b3a7d8e055fa80365953bf685" }, "require": { "magento/framework": "*", @@ -18533,11 +18681,11 @@ }, { "name": "magento/module-store", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-store/magento-module-store-101.1.4.0.zip", - "shasum": "5a6b0a8e70e5c11734db21b1e86ee0cf022203ff" + "url": "https://repo.magento.com/archives/magento/module-store/magento-module-store-101.1.5.0.zip", + "shasum": "d1b0806e3abfc83f1d559961c884646b0ed05a19" }, "require": { "magento/framework": "103.0.*", @@ -18601,11 +18749,11 @@ }, { "name": "magento/module-support", - "version": "101.2.3", + "version": "101.2.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-support/magento-module-support-101.2.3.0.zip", - "shasum": "da73765bc25acffb75deabd3d62838a3f8215a2c" + "url": "https://repo.magento.com/archives/magento/module-support/magento-module-support-101.2.4.0.zip", + "shasum": "72142d6a3c1da89d24568791287f27207f6d4981" }, "require": { "lib-libxml": "*", @@ -18648,11 +18796,11 @@ }, { "name": "magento/module-swagger", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-swagger/magento-module-swagger-100.4.3.0.zip", - "shasum": "15fc18a594860c2afe91185c498a47a27c644679" + "url": "https://repo.magento.com/archives/magento/module-swagger/magento-module-swagger-100.4.4.0.zip", + "shasum": "12effdc034ed2d0ea15db474fcfb36342747712b" }, "require": { "magento/framework": "103.0.*", @@ -18734,11 +18882,11 @@ }, { "name": "magento/module-swat", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-swat/magento-module-swat-100.4.2.0.zip", - "shasum": "421095a2f676712e065a1d97717d32fd64a006ae" + "url": "https://repo.magento.com/archives/magento/module-swat/magento-module-swat-100.4.3.0.zip", + "shasum": "8065cfe642c15e5f87e8548f009401b39b2c8eae" }, "require": { "magento/framework": "103.0.*", @@ -18762,11 +18910,11 @@ }, { "name": "magento/module-swatches", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-swatches/magento-module-swatches-100.4.4.0.zip", - "shasum": "d2f16565e5f5cbecd8fe92da60f4f09745a37d78" + "url": "https://repo.magento.com/archives/magento/module-swatches/magento-module-swatches-100.4.5.0.zip", + "shasum": "f789c22ee41334d072d6caaac88ad3e7734ebccf" }, "require": { "magento/framework": "103.0.*", @@ -18864,11 +19012,11 @@ }, { "name": "magento/module-target-rule", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-target-rule/magento-module-target-rule-101.2.4.0.zip", - "shasum": "3a853109521d866f3ab6b4ad8bcba811df4d614f" + "url": "https://repo.magento.com/archives/magento/module-target-rule/magento-module-target-rule-101.2.5.0.zip", + "shasum": "35d097a6be5ddea88874601976011171bb29828a" }, "require": { "magento/framework": "103.0.*", @@ -18905,11 +19053,11 @@ }, { "name": "magento/module-target-rule-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-target-rule-graph-ql/magento-module-target-rule-graph-ql-100.4.1.0.zip", - "shasum": "c975f466231a7066d90e08375f410f1e2900aea2" + "url": "https://repo.magento.com/archives/magento/module-target-rule-graph-ql/magento-module-target-rule-graph-ql-100.4.2.0.zip", + "shasum": "7afecc9c872d84338ec9c0e67fdbdce84f22a7b3" }, "require": { "magento/framework": "103.0.*", @@ -18935,11 +19083,11 @@ }, { "name": "magento/module-tax", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-tax/magento-module-tax-100.4.4.0.zip", - "shasum": "a65794f2053094a757a16a33dba14c4588e1d5e1" + "url": "https://repo.magento.com/archives/magento/module-tax/magento-module-tax-100.4.5.0.zip", + "shasum": "3753012abcbffe5ce171a1b0b9d545f56c49f1d3" }, "require": { "magento/framework": "103.0.*", @@ -19042,11 +19190,11 @@ }, { "name": "magento/module-theme", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-theme/magento-module-theme-101.1.4.0.zip", - "shasum": "0d42df06aec2580a16f87d2fb0deaa46fcf64fe3" + "url": "https://repo.magento.com/archives/magento/module-theme/magento-module-theme-101.1.5.0.zip", + "shasum": "ba3c3fbb5755319774bf11d3104b302637bc7dcb" }, "require": { "magento/framework": "103.0.*", @@ -19114,15 +19262,16 @@ }, { "name": "magento/module-translation", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-translation/magento-module-translation-100.4.4.0.zip", - "shasum": "cf12c0a7493629dcf952f7af91a95eb30784f194" + "url": "https://repo.magento.com/archives/magento/module-translation/magento-module-translation-100.4.5.0.zip", + "shasum": "a8ff494922576f2874b66a913f14528f9ee1418b" }, "require": { "magento/framework": "103.0.*", "magento/module-backend": "102.0.*", + "magento/module-deploy": "100.4.*", "magento/module-developer": "100.4.*", "magento/module-store": "101.1.*", "magento/module-theme": "101.1.*", @@ -19148,11 +19297,11 @@ }, { "name": "magento/module-two-factor-auth", - "version": "1.1.3", + "version": "1.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-two-factor-auth/magento-module-two-factor-auth-1.1.3.0.zip", - "shasum": "cfab7bd98fdc8fe161cd2d38b8199ef4201889c3" + "url": "https://repo.magento.com/archives/magento/module-two-factor-auth/magento-module-two-factor-auth-1.1.4.0.zip", + "shasum": "b497c3cc70df873ce6bcfe26e2f101076aa47096" }, "require": { "2tvenom/cborencode": "^1.0", @@ -19160,6 +19309,7 @@ "endroid/qr-code": "^4.3.5", "magento/framework": "*", "magento/magento-composer-installer": "*", + "magento/module-admin-adobe-ims": "*", "magento/module-authorization": "*", "magento/module-backend": "*", "magento/module-config": "*", @@ -19186,11 +19336,11 @@ }, { "name": "magento/module-ui", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-ui/magento-module-ui-101.2.4.0.zip", - "shasum": "285bbc4d9c6241512eaf9dafbf0c1259fefcab03" + "url": "https://repo.magento.com/archives/magento/module-ui/magento-module-ui-101.2.5.0.zip", + "shasum": "7a2f25eba5ec07a4b26bdda98b60fb393f5bfff4" }, "require": { "magento/framework": "103.0.*", @@ -19221,11 +19371,11 @@ }, { "name": "magento/module-ups", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-ups/magento-module-ups-100.4.4.0.zip", - "shasum": "8de4d2736ba82124ccf3fdc10066c991dfef1969" + "url": "https://repo.magento.com/archives/magento/module-ups/magento-module-ups-100.4.5.0.zip", + "shasum": "bb5eac9f59db16a90951109c3baa3bc0f91ad0ae" }, "require": { "magento/framework": "103.0.*", @@ -19258,11 +19408,11 @@ }, { "name": "magento/module-url-rewrite", - "version": "102.0.3", + "version": "102.0.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-url-rewrite/magento-module-url-rewrite-102.0.3.0.zip", - "shasum": "f624555ea5fbb891aacd64901b43b472bd2f8aab" + "url": "https://repo.magento.com/archives/magento/module-url-rewrite/magento-module-url-rewrite-102.0.4.0.zip", + "shasum": "ff14fc9bc2d9153a4ace238d20cd7e3524839a26" }, "require": { "magento/framework": "103.0.*", @@ -19292,11 +19442,11 @@ }, { "name": "magento/module-url-rewrite-graph-ql", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-url-rewrite-graph-ql/magento-module-url-rewrite-graph-ql-100.4.3.0.zip", - "shasum": "6e75f207719672b1f679f885ed1ec9011470d73c" + "url": "https://repo.magento.com/archives/magento/module-url-rewrite-graph-ql/magento-module-url-rewrite-graph-ql-100.4.4.0.zip", + "shasum": "0f9bbcbb7ff349dc5fdf5c2f886dff57441473fd" }, "require": { "magento/framework": "103.0.*", @@ -19323,11 +19473,11 @@ }, { "name": "magento/module-user", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-user/magento-module-user-101.2.4.0.zip", - "shasum": "787d34763f773826e23a9e4d696507e677aff4da" + "url": "https://repo.magento.com/archives/magento/module-user/magento-module-user-101.2.5.0.zip", + "shasum": "7940b349b7adaac56d97b87d85304a28c21d6592" }, "require": { "magento/framework": "103.0.*", @@ -19357,11 +19507,11 @@ }, { "name": "magento/module-usps", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-usps/magento-module-usps-100.4.3.0.zip", - "shasum": "3c07dd84b24d346c5bcf7b62087db872a38d0cec" + "url": "https://repo.magento.com/archives/magento/module-usps/magento-module-usps-100.4.4.0.zip", + "shasum": "c743d1e7e1b9c05b9333c76484a8a835c7a67074" }, "require": { "lib-libxml": "*", @@ -19393,11 +19543,11 @@ }, { "name": "magento/module-variable", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-variable/magento-module-variable-100.4.2.0.zip", - "shasum": "b67c8e4a7e13590bbf6040844ae8e2a189687a8b" + "url": "https://repo.magento.com/archives/magento/module-variable/magento-module-variable-100.4.3.0.zip", + "shasum": "2246cbc8bf2a87ec0a6f2bae77e3b73813b18bb9" }, "require": { "magento/framework": "103.0.*", @@ -19424,11 +19574,11 @@ }, { "name": "magento/module-vault", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-vault/magento-module-vault-101.2.4.0.zip", - "shasum": "bf8b3adda9099c9d1b24e96fae8bdf956a210a75" + "url": "https://repo.magento.com/archives/magento/module-vault/magento-module-vault-101.2.5.0.zip", + "shasum": "ab162c592b0847efb837c19bc334bf605f8154f0" }, "require": { "magento/framework": "103.0.*", @@ -19486,11 +19636,11 @@ }, { "name": "magento/module-version", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-version/magento-module-version-100.4.1.0.zip", - "shasum": "dd01c5e0810fe535c43fc060b7bb738ef12776df" + "url": "https://repo.magento.com/archives/magento/module-version/magento-module-version-100.4.2.0.zip", + "shasum": "d8fde8cf95fcace1d55a97d7b88fe2fdd53856bd" }, "require": { "magento/framework": "103.0.*", @@ -19513,11 +19663,11 @@ }, { "name": "magento/module-versions-cms", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-versions-cms/magento-module-versions-cms-101.2.4.0.zip", - "shasum": "cca7b2127a117774ab0c42c351665e281b003aec" + "url": "https://repo.magento.com/archives/magento/module-versions-cms/magento-module-versions-cms-101.2.5.0.zip", + "shasum": "218a10686bb0d2471003280df811da52750c62a2" }, "require": { "magento/framework": "103.0.*", @@ -19573,14 +19723,16 @@ }, { "name": "magento/module-versions-cms-url-rewrite", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-versions-cms-url-rewrite/magento-module-versions-cms-url-rewrite-100.4.2.0.zip", - "shasum": "a8768d3ce9cfd394033a4fdcba0501f6c528aeb4" + "url": "https://repo.magento.com/archives/magento/module-versions-cms-url-rewrite/magento-module-versions-cms-url-rewrite-100.4.3.0.zip", + "shasum": "bb2e1de27eb58a65d4d458b3985e309ae241ae01" }, "require": { "magento/framework": "103.0.*", + "magento/module-cms": "104.0.*", + "magento/module-cms-url-rewrite": "100.4.*", "magento/module-store": "101.1.*", "magento/module-url-rewrite": "102.0.*", "magento/module-versions-cms": "101.2.*", @@ -19635,11 +19787,11 @@ }, { "name": "magento/module-visual-merchandiser", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-visual-merchandiser/magento-module-visual-merchandiser-100.4.4.0.zip", - "shasum": "f8d8bc804e6f8034be2648064d322b2b058f35cb" + "url": "https://repo.magento.com/archives/magento/module-visual-merchandiser/magento-module-visual-merchandiser-100.4.5.0.zip", + "shasum": "c52c24e92349df8129f23a06b9c488aaf98439e7" }, "require": { "magento/framework": "103.0.*", @@ -19670,11 +19822,11 @@ }, { "name": "magento/module-webapi", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-webapi/magento-module-webapi-100.4.3.0.zip", - "shasum": "626e768a7fe8680dd272f6c0b94eab7c6d50ae86" + "url": "https://repo.magento.com/archives/magento/module-webapi/magento-module-webapi-100.4.4.0.zip", + "shasum": "0d10c69864a2432446b30384b51736d45fb4e392" }, "require": { "magento/framework": "103.0.*", @@ -19705,16 +19857,16 @@ }, { "name": "magento/module-webapi-async", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-webapi-async/magento-module-webapi-async-100.4.2.0.zip", - "shasum": "f81181ab0f8efde42e2dd16d18fc819664f95df7" + "url": "https://repo.magento.com/archives/magento/module-webapi-async/magento-module-webapi-async-100.4.3.0.zip", + "shasum": "3bd32d42f8659697f3748634d9986af9b8cde618" }, "require": { "magento/framework": "103.0.*", - "magento/framework-message-queue": "100.4.*", "magento/module-asynchronous-operations": "100.4.*", + "magento/module-store": "101.1.*", "magento/module-webapi": "100.4.*", "php": "~7.4.0||~8.1.0" }, @@ -19767,11 +19919,11 @@ }, { "name": "magento/module-website-restriction", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-website-restriction/magento-module-website-restriction-100.4.3.0.zip", - "shasum": "678d770bd153b6343905915913b0e31bd48e7351" + "url": "https://repo.magento.com/archives/magento/module-website-restriction/magento-module-website-restriction-100.4.4.0.zip", + "shasum": "3188d7d77a95ada484275871172e30942c4b510b" }, "require": { "magento/framework": "103.0.*", @@ -19799,11 +19951,11 @@ }, { "name": "magento/module-weee", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-weee/magento-module-weee-100.4.4.0.zip", - "shasum": "4fc9597008912ab53ee1106b17d581a4406d0ad8" + "url": "https://repo.magento.com/archives/magento/module-weee/magento-module-weee-100.4.5.0.zip", + "shasum": "5a6f293df6d8207dce4a00a4fef0cbbacc922bbb" }, "require": { "magento/framework": "103.0.*", @@ -19907,11 +20059,11 @@ }, { "name": "magento/module-widget", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-widget/magento-module-widget-101.2.4.0.zip", - "shasum": "b803c2b00d38a63b52c9d0ec45a58043f41d5d02" + "url": "https://repo.magento.com/archives/magento/module-widget/magento-module-widget-101.2.5.0.zip", + "shasum": "eed0cbbc112ec23dada39cc6f1556de69550c2db" }, "require": { "magento/framework": "103.0.*", @@ -19945,11 +20097,11 @@ }, { "name": "magento/module-wishlist", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-wishlist/magento-module-wishlist-101.2.4.0.zip", - "shasum": "5d298143aab4b1abbd2e0618cbdc9a61bbe99f1d" + "url": "https://repo.magento.com/archives/magento/module-wishlist/magento-module-wishlist-101.2.5.0.zip", + "shasum": "f7f5356260017811c073b2ee7058cd862ac6c36b" }, "require": { "magento/framework": "103.0.*", @@ -20077,11 +20229,11 @@ }, { "name": "magento/module-wishlist-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-wishlist-graph-ql/magento-module-wishlist-graph-ql-100.4.4.0.zip", - "shasum": "6cf8bb8bb762b93994a32d62b83ce6ecb9a398e0" + "url": "https://repo.magento.com/archives/magento/module-wishlist-graph-ql/magento-module-wishlist-graph-ql-100.4.5.0.zip", + "shasum": "f89448ee10c35b82e0c7b1a4d293a079cddc3a63" }, "require": { "magento/framework": "103.0.*", @@ -20110,59 +20262,59 @@ }, { "name": "magento/page-builder", - "version": "1.7.1", + "version": "1.7.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/page-builder/magento-page-builder-1.7.1.0.zip", - "shasum": "3d4a0a455399aa51074a0d28a9a2d7ffb5945491" + "url": "https://repo.magento.com/archives/magento/page-builder/magento-page-builder-1.7.2.0.zip", + "shasum": "eca2944e5b85cea6589be86dd5c5ba52eaa70581" }, "require": { - "magento/module-aws-s3-page-builder": "1.0.*", - "magento/module-catalog-page-builder-analytics": "1.6.*", - "magento/module-cms-page-builder-analytics": "1.6.*", - "magento/module-page-builder": "2.2.*", - "magento/module-page-builder-admin-analytics": "1.1.*", - "magento/module-page-builder-analytics": "1.6.*" + "magento/module-aws-s3-page-builder": "1.0.2", + "magento/module-catalog-page-builder-analytics": "1.6.2", + "magento/module-cms-page-builder-analytics": "1.6.2", + "magento/module-page-builder": "2.2.3", + "magento/module-page-builder-admin-analytics": "1.1.2", + "magento/module-page-builder-analytics": "1.6.2" }, "type": "metapackage", "description": "Page Builder metapackage" }, { "name": "magento/page-builder-commerce", - "version": "1.7.1", + "version": "1.7.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/page-builder-commerce/magento-page-builder-commerce-1.7.1.0.zip", - "shasum": "59c25647bf132b9e829aa26f3e6ce7995a263602" + "url": "https://repo.magento.com/archives/magento/page-builder-commerce/magento-page-builder-commerce-1.7.2.0.zip", + "shasum": "4eff75d8e4f94e16f4d2dcb1d8c1e55170d1d7c8" }, "require": { - "magento/module-banner-page-builder": "2.2.*", - "magento/module-banner-page-builder-analytics": "1.7.*", - "magento/module-catalog-page-builder-analytics-staging": "1.7.*", - "magento/module-catalog-staging-page-builder": "1.7.*", - "magento/module-cms-page-builder-analytics-staging": "1.7.*", - "magento/module-page-builder-admin-gws-admin-ui": "1.7.*", - "magento/module-staging-page-builder": "2.2.*", - "magento/page-builder": "1.7.*" + "magento/module-banner-page-builder": "2.2.3", + "magento/module-banner-page-builder-analytics": "1.7.1", + "magento/module-catalog-page-builder-analytics-staging": "1.7.1", + "magento/module-catalog-staging-page-builder": "1.7.1", + "magento/module-cms-page-builder-analytics-staging": "1.7.1", + "magento/module-page-builder-admin-gws-admin-ui": "1.7.1", + "magento/module-staging-page-builder": "2.2.3", + "magento/page-builder": "1.7.2" }, "type": "metapackage", "description": "Page Builder Commerce metapackage" }, { "name": "magento/product-community-edition", - "version": "2.4.4", + "version": "2.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/product-community-edition/magento-product-community-edition-2.4.4.0.zip", - "shasum": "81d3b227819ed523ccbf35d5d6e7dc94556cff12" + "url": "https://repo.magento.com/archives/magento/product-community-edition/magento-product-community-edition-2.4.5.0.zip", + "shasum": "8a95004a1f5cac0b88ca74dfe03749ab033bf218" }, "require": { "colinmollenhour/cache-backend-file": "~1.4.1", "colinmollenhour/cache-backend-redis": "1.14.2", - "colinmollenhour/credis": "1.12.1", + "colinmollenhour/credis": "1.13.0", "colinmollenhour/php-redis-session-abstract": "~1.4.5", - "composer/composer": "^1.9 || ^2.0", - "elasticsearch/elasticsearch": "~7.16.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", + "elasticsearch/elasticsearch": "~7.17.0", "ext-bcmath": "*", "ext-ctype": "*", "ext-curl": "*", @@ -20179,43 +20331,38 @@ "ext-sodium": "*", "ext-xsl": "*", "ext-zip": "*", - "guzzlehttp/guzzle": "^7.3.0", - "laminas/laminas-captcha": "^2.11", + "ezyang/htmlpurifier": "^4.14", + "guzzlehttp/guzzle": "^7.4.2", + "laminas/laminas-captcha": "^2.12", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-db": "^2.13.4", + "laminas/laminas-db": "^2.15.0", "laminas/laminas-dependency-plugin": "^2.2.0", - "laminas/laminas-di": "^3.3.0", - "laminas/laminas-escaper": "~2.9.0", - "laminas/laminas-eventmanager": "^3.4.0", - "laminas/laminas-feed": "^2.15.0", + "laminas/laminas-di": "^3.7.0", + "laminas/laminas-escaper": "~2.10.0", + "laminas/laminas-eventmanager": "^3.5.0", + "laminas/laminas-feed": "^2.17.0", "laminas/laminas-http": "^2.15.0", - "laminas/laminas-json": "^3.3.0", - "laminas/laminas-mail": "^2.15.1", + "laminas/laminas-mail": "^2.16.0", "laminas/laminas-mime": "^2.9.1", "laminas/laminas-modulemanager": "^2.11.0", - "laminas/laminas-mvc": "^3.3.0", - "laminas/laminas-server": "^2.11.0", - "laminas/laminas-servicemanager": "^3.10.0", - "laminas/laminas-session": "^2.12.0", + "laminas/laminas-mvc": "^3.3.3", + "laminas/laminas-servicemanager": "^3.11.0", "laminas/laminas-soap": "^2.10.0", - "laminas/laminas-stdlib": "^3.6.0", - "laminas/laminas-text": "^2.9.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", - "laminas/laminas-view": "~2.14.1", - "league/flysystem": "~2.3.2", - "league/flysystem-aws-s3-v3": "^2.0", + "laminas/laminas-validator": "^2.17.0", + "league/flysystem": "~2.4.5", + "league/flysystem-aws-s3-v3": "^2.4.3", "lib-libxml": "*", - "magento/adobe-ims": "2.1.3", - "magento/adobe-stock-integration": "2.1.3", + "magento/adobe-stock-integration": "2.1.4", "magento/composer": "~1.8.0", "magento/composer-dependency-version-audit-plugin": "~0.1", - "magento/framework": "103.0.4", - "magento/framework-amqp": "100.4.2", + "magento/framework": "103.0.5", + "magento/framework-amqp": "100.4.3", "magento/framework-bulk": "101.0.1", - "magento/framework-message-queue": "100.4.4", + "magento/framework-message-queue": "100.4.5", "magento/google-shopping-ads": "4.0.1", - "magento/inventory-metapackage": "1.2.4", + "magento/inventory-metapackage": "1.2.5", "magento/language-de_de": "100.4.0", "magento/language-en_us": "100.4.0", "magento/language-es_es": "100.4.0", @@ -20224,238 +20371,240 @@ "magento/language-pt_br": "100.4.0", "magento/language-zh_hans_cn": "100.4.0", "magento/magento-composer-installer": ">=0.3.0", - "magento/magento2-base": "2.4.4", + "magento/magento2-base": "2.4.5", + "magento/module-admin-adobe-ims": "100.4.0", "magento/module-admin-analytics": "100.4.4", - "magento/module-admin-notification": "100.4.3", - "magento/module-advanced-pricing-import-export": "100.4.4", - "magento/module-advanced-search": "100.4.2", + "magento/module-admin-notification": "100.4.4", + "magento/module-adobe-ims": "2.1.4", + "magento/module-adobe-ims-api": "2.1.2", + "magento/module-advanced-pricing-import-export": "100.4.5", + "magento/module-advanced-search": "100.4.3", "magento/module-amqp": "100.4.2", - "magento/module-amqp-store": "100.4.2", - "magento/module-analytics": "100.4.4", - "magento/module-asynchronous-operations": "100.4.4", - "magento/module-authorization": "100.4.4", - "magento/module-aws-s3": "100.4.2", - "magento/module-backend": "102.0.4", - "magento/module-backup": "100.4.4", - "magento/module-bundle": "101.0.4", - "magento/module-bundle-graph-ql": "100.4.4", - "magento/module-bundle-import-export": "100.4.3", - "magento/module-cache-invalidate": "100.4.2", - "magento/module-captcha": "100.4.4", - "magento/module-cardinal-commerce": "100.4.2", - "magento/module-catalog": "104.0.4", + "magento/module-analytics": "100.4.5", + "magento/module-asynchronous-operations": "100.4.5", + "magento/module-authorization": "100.4.5", + "magento/module-aws-s3": "100.4.3", + "magento/module-backend": "102.0.5", + "magento/module-backup": "100.4.5", + "magento/module-bundle": "101.0.5", + "magento/module-bundle-graph-ql": "100.4.5", + "magento/module-bundle-import-export": "100.4.4", + "magento/module-cache-invalidate": "100.4.3", + "magento/module-captcha": "100.4.5", + "magento/module-cardinal-commerce": "100.4.3", + "magento/module-catalog": "104.0.5", "magento/module-catalog-analytics": "100.4.2", "magento/module-catalog-cms-graph-ql": "100.4.1", "magento/module-catalog-customer-graph-ql": "100.4.4", - "magento/module-catalog-graph-ql": "100.4.4", - "magento/module-catalog-import-export": "101.1.4", - "magento/module-catalog-inventory": "100.4.4", - "magento/module-catalog-inventory-graph-ql": "100.4.1", - "magento/module-catalog-rule": "101.2.4", - "magento/module-catalog-rule-configurable": "100.4.3", + "magento/module-catalog-graph-ql": "100.4.5", + "magento/module-catalog-import-export": "101.1.5", + "magento/module-catalog-inventory": "100.4.5", + "magento/module-catalog-inventory-graph-ql": "100.4.2", + "magento/module-catalog-rule": "101.2.5", + "magento/module-catalog-rule-configurable": "100.4.4", "magento/module-catalog-rule-graph-ql": "100.4.2", - "magento/module-catalog-search": "102.0.4", - "magento/module-catalog-url-rewrite": "100.4.4", + "magento/module-catalog-search": "102.0.5", + "magento/module-catalog-url-rewrite": "100.4.5", "magento/module-catalog-url-rewrite-graph-ql": "100.4.3", - "magento/module-catalog-widget": "100.4.4", - "magento/module-checkout": "100.4.4", - "magento/module-checkout-agreements": "100.4.3", + "magento/module-catalog-widget": "100.4.5", + "magento/module-checkout": "100.4.5", + "magento/module-checkout-agreements": "100.4.4", "magento/module-checkout-agreements-graph-ql": "100.4.1", - "magento/module-cms": "104.0.4", + "magento/module-cms": "104.0.5", "magento/module-cms-graph-ql": "100.4.2", - "magento/module-cms-url-rewrite": "100.4.3", - "magento/module-cms-url-rewrite-graph-ql": "100.4.2", + "magento/module-cms-url-rewrite": "100.4.4", + "magento/module-cms-url-rewrite-graph-ql": "100.4.3", "magento/module-compare-list-graph-ql": "100.4.1", - "magento/module-config": "101.2.4", - "magento/module-configurable-import-export": "100.4.2", - "magento/module-configurable-product": "100.4.4", - "magento/module-configurable-product-graph-ql": "100.4.4", + "magento/module-config": "101.2.5", + "magento/module-configurable-import-export": "100.4.3", + "magento/module-configurable-product": "100.4.5", + "magento/module-configurable-product-graph-ql": "100.4.5", "magento/module-configurable-product-sales": "100.4.2", "magento/module-contact": "100.4.4", - "magento/module-cookie": "100.4.4", - "magento/module-cron": "100.4.4", - "magento/module-csp": "100.4.3", + "magento/module-cookie": "100.4.5", + "magento/module-cron": "100.4.5", + "magento/module-csp": "100.4.4", "magento/module-currency-symbol": "100.4.3", - "magento/module-customer": "103.0.4", + "magento/module-customer": "103.0.5", "magento/module-customer-analytics": "100.4.2", "magento/module-customer-downloadable-graph-ql": "100.4.1", - "magento/module-customer-graph-ql": "100.4.4", - "magento/module-customer-import-export": "100.4.4", - "magento/module-deploy": "100.4.4", - "magento/module-developer": "100.4.4", - "magento/module-dhl": "100.4.3", - "magento/module-directory": "100.4.4", - "magento/module-directory-graph-ql": "100.4.2", - "magento/module-downloadable": "100.4.4", - "magento/module-downloadable-graph-ql": "100.4.4", - "magento/module-downloadable-import-export": "100.4.3", - "magento/module-eav": "102.1.4", + "magento/module-customer-graph-ql": "100.4.5", + "magento/module-customer-import-export": "100.4.5", + "magento/module-deploy": "100.4.5", + "magento/module-developer": "100.4.5", + "magento/module-dhl": "100.4.4", + "magento/module-directory": "100.4.5", + "magento/module-directory-graph-ql": "100.4.3", + "magento/module-downloadable": "100.4.5", + "magento/module-downloadable-graph-ql": "100.4.5", + "magento/module-downloadable-import-export": "100.4.4", + "magento/module-eav": "102.1.5", "magento/module-eav-graph-ql": "100.4.2", - "magento/module-elasticsearch": "101.0.4", - "magento/module-elasticsearch-6": "100.4.4", - "magento/module-elasticsearch-7": "100.4.4", - "magento/module-email": "101.1.4", + "magento/module-elasticsearch": "101.0.5", + "magento/module-elasticsearch-6": "100.4.5", + "magento/module-elasticsearch-7": "100.4.5", + "magento/module-email": "101.1.5", "magento/module-encryption-key": "100.4.3", "magento/module-fedex": "100.4.3", - "magento/module-gift-message": "100.4.3", - "magento/module-gift-message-graph-ql": "100.4.2", + "magento/module-gift-message": "100.4.4", + "magento/module-gift-message-graph-ql": "100.4.3", "magento/module-google-adwords": "100.4.2", "magento/module-google-analytics": "100.4.1", - "magento/module-google-optimizer": "100.4.3", - "magento/module-graph-ql": "100.4.4", - "magento/module-graph-ql-cache": "100.4.1", - "magento/module-grouped-catalog-inventory": "100.4.1", - "magento/module-grouped-import-export": "100.4.2", - "magento/module-grouped-product": "100.4.4", - "magento/module-grouped-product-graph-ql": "100.4.4", - "magento/module-import-export": "101.0.4", - "magento/module-indexer": "100.4.4", - "magento/module-instant-purchase": "100.4.3", - "magento/module-integration": "100.4.4", + "magento/module-google-gtag": "100.4.0", + "magento/module-google-optimizer": "100.4.4", + "magento/module-graph-ql": "100.4.5", + "magento/module-graph-ql-cache": "100.4.2", + "magento/module-grouped-catalog-inventory": "100.4.2", + "magento/module-grouped-import-export": "100.4.3", + "magento/module-grouped-product": "100.4.5", + "magento/module-grouped-product-graph-ql": "100.4.5", + "magento/module-import-export": "101.0.5", + "magento/module-indexer": "100.4.5", + "magento/module-instant-purchase": "100.4.4", + "magento/module-integration": "100.4.5", "magento/module-jwt-framework-adapter": "100.4.1", "magento/module-jwt-user-token": "100.4.0", - "magento/module-layered-navigation": "100.4.4", - "magento/module-login-as-customer": "100.4.4", - "magento/module-login-as-customer-admin-ui": "100.4.4", - "magento/module-login-as-customer-api": "100.4.3", - "magento/module-login-as-customer-assistance": "100.4.3", + "magento/module-layered-navigation": "100.4.5", + "magento/module-login-as-customer": "100.4.5", + "magento/module-login-as-customer-admin-ui": "100.4.5", + "magento/module-login-as-customer-api": "100.4.4", + "magento/module-login-as-customer-assistance": "100.4.4", "magento/module-login-as-customer-frontend-ui": "100.4.4", - "magento/module-login-as-customer-graph-ql": "100.4.1", + "magento/module-login-as-customer-graph-ql": "100.4.2", "magento/module-login-as-customer-log": "100.4.3", "magento/module-login-as-customer-page-cache": "100.4.4", "magento/module-login-as-customer-quote": "100.4.3", "magento/module-login-as-customer-sales": "100.4.4", "magento/module-marketplace": "100.4.3", "magento/module-media-content": "100.4.3", - "magento/module-media-content-api": "100.4.3", + "magento/module-media-content-api": "100.4.4", "magento/module-media-content-catalog": "100.4.3", "magento/module-media-content-cms": "100.4.3", - "magento/module-media-content-synchronization": "100.4.3", - "magento/module-media-content-synchronization-api": "100.4.2", + "magento/module-media-content-synchronization": "100.4.4", + "magento/module-media-content-synchronization-api": "100.4.3", "magento/module-media-content-synchronization-catalog": "100.4.2", "magento/module-media-content-synchronization-cms": "100.4.2", - "magento/module-media-gallery": "100.4.3", - "magento/module-media-gallery-api": "101.0.3", + "magento/module-media-gallery": "100.4.4", + "magento/module-media-gallery-api": "101.0.4", "magento/module-media-gallery-catalog": "100.4.2", "magento/module-media-gallery-catalog-integration": "100.4.2", "magento/module-media-gallery-catalog-ui": "100.4.2", "magento/module-media-gallery-cms-ui": "100.4.2", - "magento/module-media-gallery-integration": "100.4.3", - "magento/module-media-gallery-metadata": "100.4.2", - "magento/module-media-gallery-metadata-api": "100.4.1", - "magento/module-media-gallery-renditions": "100.4.2", - "magento/module-media-gallery-renditions-api": "100.4.1", - "magento/module-media-gallery-synchronization": "100.4.3", - "magento/module-media-gallery-synchronization-api": "100.4.2", + "magento/module-media-gallery-integration": "100.4.4", + "magento/module-media-gallery-metadata": "100.4.3", + "magento/module-media-gallery-metadata-api": "100.4.2", + "magento/module-media-gallery-renditions": "100.4.3", + "magento/module-media-gallery-renditions-api": "100.4.2", + "magento/module-media-gallery-synchronization": "100.4.4", + "magento/module-media-gallery-synchronization-api": "100.4.3", "magento/module-media-gallery-synchronization-metadata": "100.4.1", - "magento/module-media-gallery-ui": "100.4.3", - "magento/module-media-gallery-ui-api": "100.4.2", - "magento/module-media-storage": "100.4.3", - "magento/module-message-queue": "100.4.4", - "magento/module-msrp": "100.4.3", + "magento/module-media-gallery-ui": "100.4.4", + "magento/module-media-gallery-ui-api": "100.4.3", + "magento/module-media-storage": "100.4.4", + "magento/module-message-queue": "100.4.5", + "magento/module-msrp": "100.4.4", "magento/module-msrp-configurable-product": "100.4.2", "magento/module-msrp-grouped-product": "100.4.2", - "magento/module-multishipping": "100.4.4", - "magento/module-mysql-mq": "100.4.2", - "magento/module-new-relic-reporting": "100.4.2", - "magento/module-newsletter": "100.4.4", - "magento/module-newsletter-graph-ql": "100.4.1", + "magento/module-multishipping": "100.4.5", + "magento/module-mysql-mq": "100.4.3", + "magento/module-new-relic-reporting": "100.4.3", + "magento/module-newsletter": "100.4.5", + "magento/module-newsletter-graph-ql": "100.4.2", "magento/module-offline-payments": "100.4.3", - "magento/module-offline-shipping": "100.4.3", - "magento/module-page-cache": "100.4.4", - "magento/module-payment": "100.4.4", + "magento/module-offline-shipping": "100.4.4", + "magento/module-page-cache": "100.4.5", + "magento/module-payment": "100.4.5", "magento/module-payment-graph-ql": "100.4.0", - "magento/module-paypal": "101.0.4", + "magento/module-paypal": "101.0.5", "magento/module-paypal-captcha": "100.4.2", - "magento/module-paypal-graph-ql": "100.4.2", - "magento/module-persistent": "100.4.4", - "magento/module-product-alert": "100.4.3", - "magento/module-product-video": "100.4.4", - "magento/module-quote": "101.2.4", + "magento/module-paypal-graph-ql": "100.4.3", + "magento/module-persistent": "100.4.5", + "magento/module-product-alert": "100.4.4", + "magento/module-product-video": "100.4.5", + "magento/module-quote": "101.2.5", "magento/module-quote-analytics": "100.4.4", "magento/module-quote-bundle-options": "100.4.1", "magento/module-quote-configurable-options": "100.4.1", "magento/module-quote-downloadable-links": "100.4.1", - "magento/module-quote-graph-ql": "100.4.4", + "magento/module-quote-graph-ql": "100.4.5", "magento/module-related-product-graph-ql": "100.4.2", - "magento/module-release-notification": "100.4.2", - "magento/module-remote-storage": "100.4.2", - "magento/module-reports": "100.4.4", + "magento/module-release-notification": "100.4.3", + "magento/module-remote-storage": "100.4.3", + "magento/module-reports": "100.4.5", "magento/module-require-js": "100.4.1", - "magento/module-review": "100.4.4", + "magento/module-review": "100.4.5", "magento/module-review-analytics": "100.4.2", "magento/module-review-graph-ql": "100.4.1", "magento/module-robots": "101.1.1", "magento/module-rss": "100.4.3", - "magento/module-rule": "100.4.3", - "magento/module-sales": "103.0.4", + "magento/module-rule": "100.4.4", + "magento/module-sales": "103.0.5", "magento/module-sales-analytics": "100.4.2", - "magento/module-sales-graph-ql": "100.4.4", - "magento/module-sales-inventory": "100.4.1", - "magento/module-sales-rule": "101.2.4", + "magento/module-sales-graph-ql": "100.4.5", + "magento/module-sales-inventory": "100.4.2", + "magento/module-sales-rule": "101.2.5", "magento/module-sales-sequence": "100.4.2", - "magento/module-sample-data": "100.4.2", - "magento/module-search": "101.1.4", - "magento/module-security": "100.4.4", + "magento/module-sample-data": "100.4.3", + "magento/module-search": "101.1.5", + "magento/module-security": "100.4.5", "magento/module-send-friend": "100.4.3", "magento/module-send-friend-graph-ql": "100.4.1", - "magento/module-shipping": "100.4.4", - "magento/module-sitemap": "100.4.3", - "magento/module-store": "101.1.4", + "magento/module-shipping": "100.4.5", + "magento/module-sitemap": "100.4.4", + "magento/module-store": "101.1.5", "magento/module-store-graph-ql": "100.4.3", - "magento/module-swagger": "100.4.3", + "magento/module-swagger": "100.4.4", "magento/module-swagger-webapi": "100.4.1", "magento/module-swagger-webapi-async": "100.4.1", - "magento/module-swatches": "100.4.4", + "magento/module-swatches": "100.4.5", "magento/module-swatches-graph-ql": "100.4.3", "magento/module-swatches-layered-navigation": "100.4.1", - "magento/module-tax": "100.4.4", + "magento/module-tax": "100.4.5", "magento/module-tax-graph-ql": "100.4.1", "magento/module-tax-import-export": "100.4.4", - "magento/module-theme": "101.1.4", + "magento/module-theme": "101.1.5", "magento/module-theme-graph-ql": "100.4.2", - "magento/module-translation": "100.4.4", - "magento/module-ui": "101.2.4", - "magento/module-ups": "100.4.4", - "magento/module-url-rewrite": "102.0.3", - "magento/module-url-rewrite-graph-ql": "100.4.3", - "magento/module-user": "101.2.4", - "magento/module-usps": "100.4.3", - "magento/module-variable": "100.4.2", - "magento/module-vault": "101.2.4", + "magento/module-translation": "100.4.5", + "magento/module-ui": "101.2.5", + "magento/module-ups": "100.4.5", + "magento/module-url-rewrite": "102.0.4", + "magento/module-url-rewrite-graph-ql": "100.4.4", + "magento/module-user": "101.2.5", + "magento/module-usps": "100.4.4", + "magento/module-variable": "100.4.3", + "magento/module-vault": "101.2.5", "magento/module-vault-graph-ql": "100.4.1", - "magento/module-version": "100.4.1", - "magento/module-webapi": "100.4.3", - "magento/module-webapi-async": "100.4.2", + "magento/module-version": "100.4.2", + "magento/module-webapi": "100.4.4", + "magento/module-webapi-async": "100.4.3", "magento/module-webapi-security": "100.4.2", - "magento/module-weee": "100.4.4", + "magento/module-weee": "100.4.5", "magento/module-weee-graph-ql": "100.4.2", - "magento/module-widget": "101.2.4", - "magento/module-wishlist": "101.2.4", + "magento/module-widget": "101.2.5", + "magento/module-wishlist": "101.2.5", "magento/module-wishlist-analytics": "100.4.3", - "magento/module-wishlist-graph-ql": "100.4.4", - "magento/page-builder": "1.7.1", - "magento/security-package": "1.1.3", - "magento/theme-adminhtml-backend": "100.4.4", - "magento/theme-frontend-blank": "100.4.4", - "magento/theme-frontend-luma": "100.4.4", + "magento/module-wishlist-graph-ql": "100.4.5", + "magento/page-builder": "1.7.2", + "magento/security-package": "1.1.4", + "magento/theme-adminhtml-backend": "100.4.5", + "magento/theme-frontend-blank": "100.4.5", + "magento/theme-frontend-luma": "100.4.5", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", - "paypal/module-braintree": "4.3.0", + "monolog/monolog": "^2.7", + "paypal/module-braintree": "4.4.0", "pelago/emogrifier": "^6.0.0", "php": "~7.4.0||~8.1.0", - "php-amqplib/php-amqplib": "~3.1.0", - "phpseclib/mcrypt_compat": "~2.0.0", - "phpseclib/phpseclib": "~3.0.9", + "php-amqplib/php-amqplib": "~3.2.0", + "phpseclib/mcrypt_compat": "~2.0.2", + "phpseclib/phpseclib": "~3.0.13", "ramsey/uuid": "~4.2.0", "symfony/console": "~4.4.0", - "symfony/event-dispatcher": "~4.4.0", "symfony/process": "~4.4.0", "tedivm/jshrink": "~1.4.0", "temando/module-shipping": "2.0.0", "tubalmartin/cssmin": "4.1.1", "web-token/jwt-framework": "^v2.2.7", - "webonyx/graphql-php": "~14.11.3", + "webonyx/graphql-php": "~14.11.6", "wikimedia/less.php": "^3.0.0" }, "type": "metapackage", @@ -20467,19 +20616,19 @@ }, { "name": "magento/product-enterprise-edition", - "version": "2.4.4", + "version": "2.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/product-enterprise-edition/magento-product-enterprise-edition-2.4.4.0.zip", - "shasum": "a87c14b41b4206226db46f5142e195b79c6a803d" + "url": "https://repo.magento.com/archives/magento/product-enterprise-edition/magento-product-enterprise-edition-2.4.5.0.zip", + "shasum": "572ad7cc2ef98745ef31deff57328f4abfb5b2e1" }, "require": { "colinmollenhour/cache-backend-file": "~1.4.1", "colinmollenhour/cache-backend-redis": "1.14.2", - "colinmollenhour/credis": "1.12.1", + "colinmollenhour/credis": "1.13.0", "colinmollenhour/php-redis-session-abstract": "~1.4.5", - "composer/composer": "^1.9 || ^2.0", - "elasticsearch/elasticsearch": "~7.16.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", + "elasticsearch/elasticsearch": "~7.17.0", "ext-bcmath": "*", "ext-ctype": "*", "ext-curl": "*", @@ -20497,103 +20646,101 @@ "ext-spl": "*", "ext-xsl": "*", "ext-zip": "*", - "guzzlehttp/guzzle": "^7.3.0", - "laminas/laminas-captcha": "^2.11", + "ezyang/htmlpurifier": "^4.14", + "guzzlehttp/guzzle": "^7.4.2", + "laminas/laminas-captcha": "^2.12", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-db": "^2.13.4", + "laminas/laminas-db": "^2.15.0", "laminas/laminas-dependency-plugin": "^2.2.0", - "laminas/laminas-di": "^3.3.0", - "laminas/laminas-escaper": "~2.9.0", - "laminas/laminas-eventmanager": "^3.4.0", - "laminas/laminas-feed": "^2.15.0", + "laminas/laminas-di": "^3.7.0", + "laminas/laminas-escaper": "~2.10.0", + "laminas/laminas-eventmanager": "^3.5.0", + "laminas/laminas-feed": "^2.17.0", "laminas/laminas-http": "^2.15.0", "laminas/laminas-json": "^3.3.0", - "laminas/laminas-mail": "^2.15.1", + "laminas/laminas-mail": "^2.16.0", "laminas/laminas-mime": "^2.9.1", "laminas/laminas-modulemanager": "^2.11.0", - "laminas/laminas-mvc": "^3.3.0", - "laminas/laminas-server": "^2.11.0", - "laminas/laminas-servicemanager": "^3.10.0", - "laminas/laminas-session": "^2.12.0", + "laminas/laminas-mvc": "^3.3.3", + "laminas/laminas-server": "^2.11.1", + "laminas/laminas-servicemanager": "^3.11.0", "laminas/laminas-soap": "^2.10.0", - "laminas/laminas-stdlib": "^3.6.0", - "laminas/laminas-text": "^2.9.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", - "laminas/laminas-view": "~2.14.1", - "league/flysystem": "~2.3.2", - "league/flysystem-aws-s3-v3": "^2.0", + "laminas/laminas-validator": "^2.17.0", + "league/flysystem": "~2.4.5", + "league/flysystem-aws-s3-v3": "^2.4.3", "lib-libxml": "*", "magento/composer": "~1.8.0", "magento/composer-dependency-version-audit-plugin": "~0.1", - "magento/framework-foreign-key": "100.4.3", + "magento/framework-foreign-key": "100.4.4", "magento/magento-composer-installer": ">=0.3.0", - "magento/magento2-ee-base": "2.4.4", - "magento/module-admin-gws": "100.4.4", + "magento/magento2-ee-base": "2.4.5", + "magento/module-admin-gws": "100.4.5", "magento/module-admin-gws-configurable-product": "100.4.2", "magento/module-admin-gws-staging": "100.4.2", "magento/module-advanced-catalog": "100.4.2", - "magento/module-advanced-checkout": "100.4.4", - "magento/module-advanced-rule": "100.4.1", + "magento/module-advanced-checkout": "100.4.5", + "magento/module-advanced-rule": "100.4.2", "magento/module-advanced-sales-rule": "100.4.2", - "magento/module-async-order": "100.4.0", + "magento/module-async-order": "100.4.1", "magento/module-async-order-graph-ql": "100.4.0", "magento/module-aws-s3-customer-custom-attributes": "100.4.2", - "magento/module-aws-s3-gift-card-import-export": "100.4.1", - "magento/module-aws-s3-scheduled-import-export": "100.4.1", - "magento/module-banner": "101.2.4", - "magento/module-banner-customer-segment": "100.4.2", + "magento/module-aws-s3-gift-card-import-export": "100.4.2", + "magento/module-aws-s3-scheduled-import-export": "100.4.2", + "magento/module-banner": "101.2.5", + "magento/module-banner-customer-segment": "100.4.3", "magento/module-banner-graph-ql": "100.4.1", "magento/module-bundle-import-export-staging": "100.4.2", - "magento/module-bundle-staging": "100.4.4", + "magento/module-bundle-staging": "100.4.5", "magento/module-catalog-event": "101.1.4", "magento/module-catalog-import-export-staging": "100.4.2", "magento/module-catalog-inventory-staging": "100.4.3", - "magento/module-catalog-permissions": "100.4.4", + "magento/module-catalog-permissions": "100.4.5", "magento/module-catalog-permissions-graph-ql": "100.4.3", - "magento/module-catalog-rule-staging": "100.4.4", - "magento/module-catalog-staging": "100.4.4", + "magento/module-catalog-rule-staging": "100.4.5", + "magento/module-catalog-staging": "100.4.5", "magento/module-catalog-staging-graph-ql": "100.4.4", - "magento/module-catalog-url-rewrite-staging": "100.4.3", - "magento/module-checkout-address-search": "100.4.3", + "magento/module-catalog-url-rewrite-staging": "100.4.4", + "magento/module-checkout-address-search": "100.4.4", "magento/module-checkout-address-search-gift-registry": "100.4.1", - "magento/module-checkout-staging": "100.4.3", - "magento/module-cms-staging": "100.4.4", - "magento/module-configurable-product-staging": "100.4.3", - "magento/module-custom-attribute-management": "100.4.3", - "magento/module-customer-balance": "100.4.4", + "magento/module-checkout-staging": "100.4.4", + "magento/module-cms-staging": "100.4.5", + "magento/module-configurable-product-staging": "100.4.4", + "magento/module-custom-attribute-management": "100.4.4", + "magento/module-customer-balance": "100.4.5", "magento/module-customer-balance-graph-ql": "100.4.2", - "magento/module-customer-custom-attributes": "100.4.4", + "magento/module-customer-custom-attributes": "100.4.5", "magento/module-customer-finance": "100.4.2", - "magento/module-customer-segment": "102.1.4", + "magento/module-customer-segment": "102.1.5", "magento/module-deferred-total-calculating": "100.4.0", - "magento/module-downloadable-staging": "100.4.3", + "magento/module-downloadable-staging": "100.4.4", "magento/module-elasticsearch-catalog-permissions": "100.4.1", "magento/module-elasticsearch-catalog-permissions-graph-ql": "100.4.0", - "magento/module-enterprise": "100.4.2", - "magento/module-gift-card": "101.3.4", - "magento/module-gift-card-account": "101.2.4", + "magento/module-enterprise": "100.4.3", + "magento/module-gift-card": "101.3.5", + "magento/module-gift-card-account": "101.2.5", "magento/module-gift-card-account-graph-ql": "100.4.3", - "magento/module-gift-card-graph-ql": "100.4.4", + "magento/module-gift-card-graph-ql": "100.4.5", "magento/module-gift-card-import-export": "100.4.2", "magento/module-gift-card-staging": "100.4.2", "magento/module-gift-message-staging": "100.4.2", - "magento/module-gift-registry": "101.2.4", + "magento/module-gift-registry": "101.2.5", "magento/module-gift-registry-graph-ql": "100.4.1", - "magento/module-gift-wrapping": "101.2.3", + "magento/module-gift-wrapping": "101.2.4", "magento/module-gift-wrapping-graph-ql": "100.4.2", "magento/module-gift-wrapping-staging": "100.4.2", "magento/module-google-optimizer-staging": "100.4.2", - "magento/module-google-tag-manager": "100.4.4", - "magento/module-grouped-product-staging": "100.4.2", - "magento/module-invitation": "100.4.3", + "magento/module-google-tag-manager": "100.4.5", + "magento/module-grouped-product-staging": "100.4.3", + "magento/module-invitation": "100.4.4", "magento/module-layered-navigation-staging": "100.4.2", - "magento/module-logging": "101.2.4", - "magento/module-login-as-customer-logging": "100.4.4", + "magento/module-logging": "101.2.5", + "magento/module-login-as-customer-logging": "100.4.5", "magento/module-login-as-customer-website-restriction": "100.4.3", "magento/module-media-content-catalog-staging": "100.4.2", - "magento/module-msrp-staging": "100.4.2", - "magento/module-multiple-wishlist": "100.4.4", + "magento/module-msrp-staging": "100.4.3", + "magento/module-multiple-wishlist": "100.4.5", "magento/module-multiple-wishlist-graph-ql": "100.4.1", "magento/module-payment-staging": "100.4.2", "magento/module-persistent-history": "100.4.2", @@ -20601,56 +20748,57 @@ "magento/module-product-video-staging": "100.4.2", "magento/module-promotion-permissions": "100.4.2", "magento/module-quote-gift-card-options": "100.4.2", - "magento/module-quote-staging": "100.4.1", - "magento/module-reminder": "101.2.3", + "magento/module-quote-staging": "100.4.2", + "magento/module-reminder": "101.2.4", "magento/module-remote-storage-commerce": "100.4.1", "magento/module-resource-connections": "100.4.2", "magento/module-review-staging": "100.4.2", - "magento/module-reward": "101.2.4", - "magento/module-reward-graph-ql": "100.4.3", + "magento/module-reward": "101.2.5", + "magento/module-reward-graph-ql": "100.4.4", "magento/module-reward-staging": "100.4.2", - "magento/module-rma": "101.2.4", - "magento/module-rma-graph-ql": "100.4.3", + "magento/module-rma": "101.2.5", + "magento/module-rma-graph-ql": "100.4.4", "magento/module-rma-staging": "100.4.2", "magento/module-sales-archive": "101.0.3", - "magento/module-sales-rule-staging": "100.4.3", - "magento/module-scalable-checkout": "100.4.3", - "magento/module-scalable-inventory": "100.4.2", + "magento/module-sales-rule-staging": "100.4.4", + "magento/module-scalable-checkout": "100.4.4", + "magento/module-scalable-inventory": "100.4.3", "magento/module-scalable-oms": "100.4.3", - "magento/module-scheduled-import-export": "101.2.4", - "magento/module-search-staging": "100.4.2", - "magento/module-staging": "101.2.4", - "magento/module-staging-graph-ql": "100.4.1", - "magento/module-support": "101.2.3", - "magento/module-swat": "100.4.2", - "magento/module-target-rule": "101.2.4", - "magento/module-target-rule-graph-ql": "100.4.1", - "magento/module-versions-cms": "101.2.4", + "magento/module-scheduled-import-export": "101.2.5", + "magento/module-search-staging": "100.4.3", + "magento/module-staging": "101.2.5", + "magento/module-staging-graph-ql": "100.4.2", + "magento/module-support": "101.2.4", + "magento/module-swat": "100.4.3", + "magento/module-target-rule": "101.2.5", + "magento/module-target-rule-graph-ql": "100.4.2", + "magento/module-versions-cms": "101.2.5", "magento/module-versions-cms-page-cache": "100.4.1", - "magento/module-versions-cms-url-rewrite": "100.4.2", + "magento/module-versions-cms-url-rewrite": "100.4.3", "magento/module-versions-cms-url-rewrite-graph-ql": "100.4.1", - "magento/module-visual-merchandiser": "100.4.4", - "magento/module-website-restriction": "100.4.3", + "magento/module-visual-merchandiser": "100.4.5", + "magento/module-website-restriction": "100.4.4", "magento/module-weee-staging": "100.4.2", "magento/module-wishlist-gift-card": "100.4.1", "magento/module-wishlist-gift-card-graph-ql": "100.4.1", - "magento/page-builder-commerce": "1.7.1", - "magento/product-community-edition": "2.4.4", + "magento/page-builder-commerce": "1.7.2", + "magento/product-community-edition": "2.4.5", + "magento/security-package-ee": "1.0.0", + "magento/theme-adminhtml-spectrum": "100.4.0", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", + "monolog/monolog": "^2.7", "pelago/emogrifier": "^6.0.0", "php": "~7.4.0||~8.1.0", - "php-amqplib/php-amqplib": "~3.1.0", - "phpseclib/mcrypt_compat": "~2.0.0", - "phpseclib/phpseclib": "~3.0.9", + "php-amqplib/php-amqplib": "~3.2.0", + "phpseclib/mcrypt_compat": "~2.0.2", + "phpseclib/phpseclib": "~3.0.13", "ramsey/uuid": "~4.2.0", "symfony/console": "~4.4.0", - "symfony/event-dispatcher": "~4.4.0", "symfony/process": "~4.4.0", "tedivm/jshrink": "~1.4.0", "tubalmartin/cssmin": "4.1.1", "web-token/jwt-framework": "^v2.2.7", - "webonyx/graphql-php": "~14.11.3", + "webonyx/graphql-php": "~14.11.6", "wikimedia/less.php": "^3.0.0" }, "type": "metapackage", @@ -20661,53 +20809,94 @@ }, { "name": "magento/security-package", - "version": "1.1.3", + "version": "1.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/security-package/magento-security-package-1.1.3.0.zip", - "shasum": "e477fcc0afacb67f17930e07c85b1642958d44be" + "url": "https://repo.magento.com/archives/magento/security-package/magento-security-package-1.1.4.0.zip", + "shasum": "a6dea777ac5824d76d1099334f886ce327d3c714" }, "require": { "google/recaptcha": "^1.2", - "magento/module-re-captcha-admin-ui": "1.1.*", - "magento/module-re-captcha-checkout": "1.1.*", - "magento/module-re-captcha-checkout-sales-rule": "1.1.*", - "magento/module-re-captcha-contact": "1.1.*", - "magento/module-re-captcha-customer": "1.1.*", - "magento/module-re-captcha-frontend-ui": "1.1.*", - "magento/module-re-captcha-migration": "1.1.*", - "magento/module-re-captcha-newsletter": "1.1.*", - "magento/module-re-captcha-paypal": "1.1.*", - "magento/module-re-captcha-review": "1.1.*", - "magento/module-re-captcha-send-friend": "1.1.*", - "magento/module-re-captcha-store-pickup": "1.0.*", - "magento/module-re-captcha-ui": "1.1.*", - "magento/module-re-captcha-user": "1.1.*", - "magento/module-re-captcha-validation": "1.1.*", - "magento/module-re-captcha-validation-api": "1.1.*", - "magento/module-re-captcha-version-2-checkbox": "2.0.*", - "magento/module-re-captcha-version-2-invisible": "2.0.*", - "magento/module-re-captcha-version-3-invisible": "2.0.*", - "magento/module-re-captcha-webapi-api": "1.0.*", - "magento/module-re-captcha-webapi-graph-ql": "1.0.*", - "magento/module-re-captcha-webapi-rest": "1.0.*", - "magento/module-re-captcha-webapi-ui": "1.0.*", - "magento/module-securitytxt": "1.1.*", - "magento/module-two-factor-auth": "1.1.*" + "magento/module-re-captcha-admin-ui": "1.1.2", + "magento/module-re-captcha-checkout": "1.1.2", + "magento/module-re-captcha-checkout-sales-rule": "1.1.1", + "magento/module-re-captcha-contact": "1.1.1", + "magento/module-re-captcha-customer": "1.1.3", + "magento/module-re-captcha-frontend-ui": "1.1.3", + "magento/module-re-captcha-migration": "1.1.2", + "magento/module-re-captcha-newsletter": "1.1.2", + "magento/module-re-captcha-paypal": "1.1.2", + "magento/module-re-captcha-review": "1.1.2", + "magento/module-re-captcha-send-friend": "1.1.2", + "magento/module-re-captcha-store-pickup": "1.0.1", + "magento/module-re-captcha-ui": "1.1.2", + "magento/module-re-captcha-user": "1.1.2", + "magento/module-re-captcha-validation": "1.1.1", + "magento/module-re-captcha-validation-api": "1.1.1", + "magento/module-re-captcha-version-2-checkbox": "2.0.2", + "magento/module-re-captcha-version-2-invisible": "2.0.2", + "magento/module-re-captcha-version-3-invisible": "2.0.2", + "magento/module-re-captcha-webapi-api": "1.0.1", + "magento/module-re-captcha-webapi-graph-ql": "1.0.1", + "magento/module-re-captcha-webapi-rest": "1.0.1", + "magento/module-re-captcha-webapi-ui": "1.0.1", + "magento/module-securitytxt": "1.1.1", + "magento/module-two-factor-auth": "1.1.4" }, "type": "metapackage", "description": "Magento Security Package" }, + { + "name": "magento/security-package-ee", + "version": "1.0.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/security-package-ee/magento-security-package-ee-1.0.0.0.zip", + "shasum": "dbd410e88cbe152f7f8d62bf8e49eda78d10951b" + }, + "require": { + "magento/module-re-captcha-gift-card": "1.0.0", + "magento/module-re-captcha-invitation": "1.0.0", + "magento/module-re-captcha-multiple-wishlist": "1.0.0" + }, + "type": "metapackage", + "description": "Magento Security Package for Enterprise Edition" + }, { "name": "magento/theme-adminhtml-backend", - "version": "100.4.4", + "version": "100.4.5", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/theme-adminhtml-backend/magento-theme-adminhtml-backend-100.4.5.0.zip", + "shasum": "f5ee6da339ccd2c9cf11de4a7e1e37aeb85af4a4" + }, + "require": { + "magento/framework": "103.0.*", + "php": "~7.4.0||~8.1.0" + }, + "type": "magento2-theme", + "autoload": { + "files": [ + "registration.php" + ] + }, + "license": [ + "OSL-3.0", + "AFL-3.0" + ], + "description": "N/A" + }, + { + "name": "magento/theme-adminhtml-spectrum", + "version": "100.4.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/theme-adminhtml-backend/magento-theme-adminhtml-backend-100.4.4.0.zip", - "shasum": "da992046f7fbe5d42c89942202c36803416049f9" + "url": "https://repo.magento.com/archives/magento/theme-adminhtml-spectrum/magento-theme-adminhtml-spectrum-100.4.0.0.zip", + "shasum": "0157ff0d45aa05dcf3da4250fff809e794de9114" }, "require": { "magento/framework": "103.0.*", + "magento/theme-adminhtml-backend": "100.4.*", "php": "~7.4.0||~8.1.0" }, "type": "magento2-theme", @@ -20724,11 +20913,11 @@ }, { "name": "magento/theme-frontend-blank", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/theme-frontend-blank/magento-theme-frontend-blank-100.4.4.0.zip", - "shasum": "34a9d0c65132de3893e10bd278eaaa43f4a49c29" + "url": "https://repo.magento.com/archives/magento/theme-frontend-blank/magento-theme-frontend-blank-100.4.5.0.zip", + "shasum": "8f64b9681da80b037adae028426fbe15fefa9a60" }, "require": { "magento/framework": "103.0.*", @@ -20748,11 +20937,11 @@ }, { "name": "magento/theme-frontend-luma", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/theme-frontend-luma/magento-theme-frontend-luma-100.4.4.0.zip", - "shasum": "ad978a364c5a1813e358eb23c9674b8bc8bf1833" + "url": "https://repo.magento.com/archives/magento/theme-frontend-luma/magento-theme-frontend-luma-100.4.5.0.zip", + "shasum": "abf5ec4b08e6cdb076038a1d4069b904aa9eb412" }, "require": { "magento/framework": "103.0.*", @@ -20773,16 +20962,16 @@ }, { "name": "magento/zendframework1", - "version": "1.15.0", + "version": "1.15.1", "source": { "type": "git", "url": "https://github.com/magento/zf1.git", - "reference": "f241f5be1820784e7f54a36115e1324b5bb8a4ab" + "reference": "2381396d2a9a528be2f367b5ce2dddf650eac1d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/zf1/zipball/f241f5be1820784e7f54a36115e1324b5bb8a4ab", - "reference": "f241f5be1820784e7f54a36115e1324b5bb8a4ab", + "url": "https://api.github.com/repos/magento/zf1/zipball/2381396d2a9a528be2f367b5ce2dddf650eac1d0", + "reference": "2381396d2a9a528be2f367b5ce2dddf650eac1d0", "shasum": "" }, "require": { @@ -20818,22 +21007,22 @@ ], "support": { "issues": "https://github.com/magento/zf1/issues", - "source": "https://github.com/magento/zf1/tree/1.15.0" + "source": "https://github.com/magento/zf1/tree/1.15.1" }, - "time": "2022-01-18T21:55:54+00:00" + "time": "2022-06-21T01:22:39+00:00" }, { "name": "monolog/monolog", - "version": "2.5.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "4192345e260f1d51b365536199744b987e160edc" + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4192345e260f1d51b365536199744b987e160edc", - "reference": "4192345e260f1d51b365536199744b987e160edc", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", "shasum": "" }, "require": { @@ -20846,18 +21035,22 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", "graylog2/gelf-php": "^1.4.2", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", + "phpspec/prophecy": "^1.15", "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", "rollbar/rollbar": "^1.3 || ^2 || ^3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -20872,7 +21065,6 @@ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, @@ -20907,7 +21099,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.5.0" + "source": "https://github.com/Seldaek/monolog/tree/2.8.0" }, "funding": [ { @@ -20919,7 +21111,7 @@ "type": "tidelift" } ], - "time": "2022-04-08T15:43:54+00:00" + "time": "2022-07-24T11:55:47+00:00" }, { "name": "mtdowling/jmespath.php", @@ -20984,16 +21176,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.13.2", + "version": "v4.14.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", "shasum": "" }, "require": { @@ -21034,22 +21226,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" }, - "time": "2021-11-30T19:35:32+00:00" + "time": "2022-05-31T20:59:12+00:00" }, { "name": "paragonie/constant_time_encoding", - "version": "v2.5.0", + "version": "v2.6.3", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "9229e15f2e6ba772f0c55dd6986c563b937170a8" + "reference": "58c3f47f650c94ec05a151692652a868995d2938" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/9229e15f2e6ba772f0c55dd6986c563b937170a8", - "reference": "9229e15f2e6ba772f0c55dd6986c563b937170a8", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", + "reference": "58c3f47f650c94ec05a151692652a868995d2938", "shasum": "" }, "require": { @@ -21103,7 +21295,7 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2022-01-17T05:32:27+00:00" + "time": "2022-06-14T06:56:20+00:00" }, { "name": "paragonie/random_compat", @@ -21157,15 +21349,18 @@ }, { "name": "paypal/module-braintree", - "version": "4.3.0", + "version": "4.4.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/paypal/module-braintree/paypal-module-braintree-4.3.0.0.zip", - "shasum": "bbb137aa2f504c6e848f5f0bec302f575b71bf5a" + "url": "https://repo.magento.com/archives/paypal/module-braintree/paypal-module-braintree-4.4.0.0.zip", + "shasum": "d9ab16d9607bfc62fce64712c02facc88510e5f0" }, "require": { - "paypal/module-braintree-core": "4.3.0", - "paypal/module-braintree-graph-ql": "4.3.0" + "braintree/braintree_php": "6.5.1", + "magento/framework": "*", + "paypal/module-braintree-core": "4.4.0", + "paypal/module-braintree-graph-ql": "4.4.0", + "php": "~7.4.0||~8.1.0" }, "type": "metapackage", "license": [ @@ -21175,31 +21370,49 @@ }, { "name": "paypal/module-braintree-core", - "version": "4.3.0", + "version": "4.4.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/paypal/module-braintree-core/paypal-module-braintree-core-4.3.0.0.zip", - "shasum": "41eb8a10e0b222184c065a453e942ca7d5e75bfc" + "url": "https://repo.magento.com/archives/paypal/module-braintree-core/paypal-module-braintree-core-4.4.0.0.zip", + "shasum": "0ed21d22c65ed82cfcb765b684b50e47d6addf17" }, "require": { "braintree/braintree_php": "6.5.1", "ext-json": "*", "ext-simplexml": "*", + "magento/framework": "*", + "magento/module-authorization": "100.4.*", "magento/module-backend": "100.2.*||101.0.*||^102.0.0", "magento/module-catalog": "102.0.*||103.0.*||^104.0.0", "magento/module-checkout": "100.2.*||100.3.*||^100.4.0", + "magento/module-checkout-agreements": "100.4.*", "magento/module-config": "101.0.*||101.1.*||^101.2.0", + "magento/module-configurable-product": "100.4.*", "magento/module-customer": "101.0.*||102.0.*||^103.0.0", "magento/module-directory": "100.2.*||100.3.*||^100.4.0", + "magento/module-downloadable": "100.4.*", + "magento/module-grouped-product": "100.4.*", + "magento/module-instant-purchase": "100.4.*", + "magento/module-multishipping": "100.4.*", "magento/module-payment": "100.2.*||100.3.*||^100.4.0", "magento/module-paypal": "100.2.*||100.3.*||^101.0.0", "magento/module-quote": "101.0.*||101.1.*||^101.2.0", + "magento/module-re-captcha-admin-ui": "1.1.*", + "magento/module-re-captcha-frontend-ui": "1.1.*", "magento/module-re-captcha-ui": "1.1.*", "magento/module-re-captcha-validation-api": "1.1.*", + "magento/module-re-captcha-version-2-checkbox": "2.0.*", + "magento/module-re-captcha-version-2-invisible": "2.0.*", + "magento/module-re-captcha-version-3-invisible": "2.0.*", + "magento/module-re-captcha-webapi-api": "1.0.*", + "magento/module-re-captcha-webapi-ui": "1.0.*", "magento/module-sales": "101.0.*||102.0.*||^102.1.0||^103", + "magento/module-store": "101.1.*", "magento/module-theme": "100.2.*||101.0.*||^101.1.0", "magento/module-ui": "101.0.*||101.1.*||^101.2.0", - "magento/module-vault": "101.0.*||101.1.*||^101.2.0" + "magento/module-vault": "101.0.*||101.1.*||^101.2.0", + "magento/module-webapi": "100.4.*", + "php": "~7.4.0||~8.1.0" }, "conflict": { "gene/module-braintree": "*", @@ -21221,18 +21434,19 @@ }, { "name": "paypal/module-braintree-graph-ql", - "version": "4.3.0", + "version": "4.4.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/paypal/module-braintree-graph-ql/paypal-module-braintree-graph-ql-4.3.0.0.zip", - "shasum": "599955ba1b7f530e75ed427e0e9378b43d2bd109" + "url": "https://repo.magento.com/archives/paypal/module-braintree-graph-ql/paypal-module-braintree-graph-ql-4.4.0.0.zip", + "shasum": "aeda8bc856162c4d7bda04cd363296f138d2a03e" }, "require": { "magento/framework": "^102||^103", "magento/module-quote": "^101", "magento/module-quote-graph-ql": "^100", "magento/module-store": "^101", - "paypal/module-braintree-core": "^4.1" + "paypal/module-braintree-core": "^4.4", + "php": "~7.4.0||~8.1.0" }, "suggest": { "magento/module-graph-ql": "^100" @@ -21332,16 +21546,16 @@ }, { "name": "php-amqplib/php-amqplib", - "version": "v3.1.2", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "e8aba06c4e1c467612f2d99304f672f2660e8492" + "reference": "0bec5b392428e0ac3b3f34fbc4e02d706995833e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/e8aba06c4e1c467612f2d99304f672f2660e8492", - "reference": "e8aba06c4e1c467612f2d99304f672f2660e8492", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/0bec5b392428e0ac3b3f34fbc4e02d706995833e", + "reference": "0bec5b392428e0ac3b3f34fbc4e02d706995833e", "shasum": "" }, "require": { @@ -21407,9 +21621,9 @@ ], "support": { "issues": "https://github.com/php-amqplib/php-amqplib/issues", - "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.1.2" + "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.2.0" }, - "time": "2022-01-18T17:08:01+00:00" + "time": "2022-03-10T19:16:00+00:00" }, { "name": "phpgt/cssxpath", @@ -22720,16 +22934,16 @@ }, { "name": "symfony/config", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "05624c386afa1b4ccc1357463d830fade8d9d404" + "reference": "ec79e03125c1d2477e43dde8528535d90cc78379" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/05624c386afa1b4ccc1357463d830fade8d9d404", - "reference": "05624c386afa1b4ccc1357463d830fade8d9d404", + "url": "https://api.github.com/repos/symfony/config/zipball/ec79e03125c1d2477e43dde8528535d90cc78379", + "reference": "ec79e03125c1d2477e43dde8528535d90cc78379", "shasum": "" }, "require": { @@ -22779,7 +22993,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.7" + "source": "https://github.com/symfony/config/tree/v5.4.11" }, "funding": [ { @@ -22795,20 +23009,20 @@ "type": "tidelift" } ], - "time": "2022-03-21T13:42:03+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/console", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "bdcc66f3140421038f495e5b50e3ca6ffa14c773" + "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/bdcc66f3140421038f495e5b50e3ca6ffa14c773", - "reference": "bdcc66f3140421038f495e5b50e3ca6ffa14c773", + "url": "https://api.github.com/repos/symfony/console/zipball/c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", + "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", "shasum": "" }, "require": { @@ -22869,7 +23083,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.40" + "source": "https://github.com/symfony/console/tree/v4.4.44" }, "funding": [ { @@ -22885,20 +23099,20 @@ "type": "tidelift" } ], - "time": "2022-03-26T22:12:04+00:00" + "time": "2022-07-20T09:59:04+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.3", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e" + "reference": "c1681789f059ab756001052164726ae88512ae3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/c1681789f059ab756001052164726ae88512ae3d", + "reference": "c1681789f059ab756001052164726ae88512ae3d", "shasum": "" }, "require": { @@ -22935,7 +23149,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.3" + "source": "https://github.com/symfony/css-selector/tree/v5.4.11" }, "funding": [ { @@ -22951,20 +23165,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/debug", - "version": "v4.4.37", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "5de6c6e7f52b364840e53851c126be4d71e60470" + "reference": "1a692492190773c5310bc7877cb590c04c2f05be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/5de6c6e7f52b364840e53851c126be4d71e60470", - "reference": "5de6c6e7f52b364840e53851c126be4d71e60470", + "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", + "reference": "1a692492190773c5310bc7877cb590c04c2f05be", "shasum": "" }, "require": { @@ -23003,7 +23217,7 @@ "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.37" + "source": "https://github.com/symfony/debug/tree/v4.4.44" }, "funding": [ { @@ -23019,20 +23233,21 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "abandoned": "symfony/error-handler", + "time": "2022-07-28T16:29:46+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "35588b2afb08ea3a142d62fefdcad4cb09be06ed" + "reference": "a8b9251016e9476db73e25fa836904bc0bf74c62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/35588b2afb08ea3a142d62fefdcad4cb09be06ed", - "reference": "35588b2afb08ea3a142d62fefdcad4cb09be06ed", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a8b9251016e9476db73e25fa836904bc0bf74c62", + "reference": "a8b9251016e9476db73e25fa836904bc0bf74c62", "shasum": "" }, "require": { @@ -23092,7 +23307,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.7" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.11" }, "funding": [ { @@ -23108,29 +23323,29 @@ "type": "tidelift" } ], - "time": "2022-03-08T15:43:06+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.1", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -23159,7 +23374,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1" }, "funding": [ { @@ -23175,20 +23390,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "2d0c9c229d995bef5e87fe4e83b717541832b448" + "reference": "be731658121ef2d8be88f3a1ec938148a9237291" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/2d0c9c229d995bef5e87fe4e83b717541832b448", - "reference": "2d0c9c229d995bef5e87fe4e83b717541832b448", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/be731658121ef2d8be88f3a1ec938148a9237291", + "reference": "be731658121ef2d8be88f3a1ec938148a9237291", "shasum": "" }, "require": { @@ -23227,7 +23442,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.40" + "source": "https://github.com/symfony/error-handler/tree/v4.4.44" }, "funding": [ { @@ -23243,20 +23458,20 @@ "type": "tidelift" } ], - "time": "2022-03-07T13:29:34+00:00" + "time": "2022-07-28T16:29:46+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.37", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc" + "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", - "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", "shasum": "" }, "require": { @@ -23311,7 +23526,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.37" + "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44" }, "funding": [ { @@ -23327,11 +23542,11 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2022-07-20T09:59:04+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.12", + "version": "v1.1.13", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -23390,7 +23605,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.12" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" }, "funding": [ { @@ -23410,16 +23625,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f" + "reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3a4442138d80c9f7b600fb297534ac718b61d37f", - "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/6699fb0228d1bc35b12aed6dd5e7455457609ddd", + "reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd", "shasum": "" }, "require": { @@ -23454,7 +23669,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.7" + "source": "https://github.com/symfony/filesystem/tree/v5.4.11" }, "funding": [ { @@ -23470,20 +23685,20 @@ "type": "tidelift" } ], - "time": "2022-04-01T12:33:59+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/finder", - "version": "v5.4.3", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d" + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/231313534dded84c7ecaa79d14bc5da4ccb69b7d", - "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d", + "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", "shasum": "" }, "require": { @@ -23517,7 +23732,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.3" + "source": "https://github.com/symfony/finder/tree/v5.4.11" }, "funding": [ { @@ -23533,20 +23748,20 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:34:36+00:00" + "time": "2022-07-29T07:37:50+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.5.1", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5" + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1a4f708e4e87f335d1b1be6148060739152f0bd5", - "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", "shasum": "" }, "require": { @@ -23595,7 +23810,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" }, "funding": [ { @@ -23611,20 +23826,20 @@ "type": "tidelift" } ], - "time": "2022-03-13T20:07:29+00:00" + "time": "2022-04-12T15:48:08+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.4.6", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "34e89bc147633c0f9dd6caaaf56da3b806a21465" + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/34e89bc147633c0f9dd6caaaf56da3b806a21465", - "reference": "34e89bc147633c0f9dd6caaaf56da3b806a21465", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0a5868e0999e9d47859ba3d918548ff6943e6389", + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389", "shasum": "" }, "require": { @@ -23668,7 +23883,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.6" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.11" }, "funding": [ { @@ -23684,20 +23899,20 @@ "type": "tidelift" } ], - "time": "2022-03-05T21:03:43+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "330a859a7ec9d7e7d82f2569b1c0700a26ffb1e3" + "reference": "9e444442334fae9637ef3209bc2abddfef49e714" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/330a859a7ec9d7e7d82f2569b1c0700a26ffb1e3", - "reference": "330a859a7ec9d7e7d82f2569b1c0700a26ffb1e3", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9e444442334fae9637ef3209bc2abddfef49e714", + "reference": "9e444442334fae9637ef3209bc2abddfef49e714", "shasum": "" }, "require": { @@ -23772,7 +23987,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.40" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.44" }, "funding": [ { @@ -23788,20 +24003,20 @@ "type": "tidelift" } ], - "time": "2022-04-02T05:55:50+00:00" + "time": "2022-07-29T12:23:38+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", "shasum": "" }, "require": { @@ -23816,7 +24031,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -23854,7 +24069,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" }, "funding": [ { @@ -23870,20 +24085,20 @@ "type": "tidelift" } ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", "shasum": "" }, "require": { @@ -23897,7 +24112,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -23941,7 +24156,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" }, "funding": [ { @@ -23957,20 +24172,20 @@ "type": "tidelift" } ], - "time": "2021-09-14T14:02:44+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "219aa369ceff116e673852dce47c3a41794c14bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd", "shasum": "" }, "require": { @@ -23982,7 +24197,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -24025,7 +24240,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" }, "funding": [ { @@ -24041,20 +24256,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", "shasum": "" }, "require": { @@ -24069,7 +24284,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -24108,7 +24323,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" }, "funding": [ { @@ -24124,20 +24339,20 @@ "type": "tidelift" } ], - "time": "2021-11-30T18:21:41+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", "shasum": "" }, "require": { @@ -24146,7 +24361,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -24184,7 +24399,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" }, "funding": [ { @@ -24200,20 +24415,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", "shasum": "" }, "require": { @@ -24222,7 +24437,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -24263,7 +24478,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" }, "funding": [ { @@ -24279,20 +24494,20 @@ "type": "tidelift" } ], - "time": "2021-06-05T21:20:04+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", "shasum": "" }, "require": { @@ -24301,7 +24516,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -24346,7 +24561,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" }, "funding": [ { @@ -24362,20 +24577,20 @@ "type": "tidelift" } ], - "time": "2022-03-04T08:16:47+00:00" + "time": "2022-05-10T07:21:04+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", "shasum": "" }, "require": { @@ -24384,7 +24599,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -24425,7 +24640,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" }, "funding": [ { @@ -24441,20 +24656,20 @@ "type": "tidelift" } ], - "time": "2021-09-13T13:58:11+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/process", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "54e9d763759268e07eb13b921d8631fc2816206f" + "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/54e9d763759268e07eb13b921d8631fc2816206f", - "reference": "54e9d763759268e07eb13b921d8631fc2816206f", + "url": "https://api.github.com/repos/symfony/process/zipball/5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", + "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", "shasum": "" }, "require": { @@ -24487,7 +24702,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.40" + "source": "https://github.com/symfony/process/tree/v4.4.44" }, "funding": [ { @@ -24503,20 +24718,20 @@ "type": "tidelift" } ], - "time": "2022-03-18T16:18:39+00:00" + "time": "2022-06-27T13:16:42+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.1", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { @@ -24570,7 +24785,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -24586,20 +24801,20 @@ "type": "tidelift" } ], - "time": "2022-03-13T20:07:29+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.6", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "294e9da6e2e0dd404e983daa5aa74253d92c05d0" + "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/294e9da6e2e0dd404e983daa5aa74253d92c05d0", - "reference": "294e9da6e2e0dd404e983daa5aa74253d92c05d0", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8f306d7b8ef34fb3db3305be97ba8e088fb4861", + "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861", "shasum": "" }, "require": { @@ -24659,7 +24874,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.6" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.11" }, "funding": [ { @@ -24675,7 +24890,7 @@ "type": "tidelift" } ], - "time": "2022-03-02T12:42:23+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "tedivm/jshrink", @@ -25214,21 +25429,21 @@ }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -25266,22 +25481,22 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "time": "2021-03-09T10:59:23+00:00" + "time": "2022-06-03T18:03:27+00:00" }, { "name": "webonyx/graphql-php", - "version": "v14.11.5", + "version": "v14.11.6", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "ffa431c0821821839370a68dab3c2597c06bf7f0" + "reference": "6070542725b61fc7d0654a8a9855303e5e157434" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/ffa431c0821821839370a68dab3c2597c06bf7f0", - "reference": "ffa431c0821821839370a68dab3c2597c06bf7f0", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/6070542725b61fc7d0654a8a9855303e5e157434", + "reference": "6070542725b61fc7d0654a8a9855303e5e157434", "shasum": "" }, "require": { @@ -25326,7 +25541,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v14.11.5" + "source": "https://github.com/webonyx/graphql-php/tree/v14.11.6" }, "funding": [ { @@ -25334,7 +25549,7 @@ "type": "open_collective" } ], - "time": "2022-01-24T11:13:31+00:00" + "time": "2022-04-13T16:25:32+00:00" }, { "name": "wikimedia/less.php", @@ -25649,16 +25864,16 @@ }, { "name": "codeception/codeception", - "version": "4.1.31", + "version": "4.2.1", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "15524571ae0686a7facc2eb1f40f600e5bbce9e5" + "reference": "77b3e2003fd4446b35826cb9dc397129c521c888" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/15524571ae0686a7facc2eb1f40f600e5bbce9e5", - "reference": "15524571ae0686a7facc2eb1f40f600e5bbce9e5", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/77b3e2003fd4446b35826cb9dc397129c521c888", + "reference": "77b3e2003fd4446b35826cb9dc397129c521c888", "shasum": "" }, "require": { @@ -25721,11 +25936,11 @@ { "name": "Michael Bodnarchuk", "email": "davert@mail.ua", - "homepage": "http://codegyre.com" + "homepage": "https://codegyre.com" } ], "description": "BDD-style testing framework", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "BDD", "TDD", @@ -25735,7 +25950,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.1.31" + "source": "https://github.com/Codeception/Codeception/tree/4.2.1" }, "funding": [ { @@ -25743,7 +25958,7 @@ "type": "open_collective" } ], - "time": "2022-03-13T17:07:08+00:00" + "time": "2022-06-22T06:18:59+00:00" }, { "name": "codeception/lib-asserts", @@ -25958,16 +26173,16 @@ }, { "name": "codeception/phpunit-wrapper", - "version": "9.0.7", + "version": "9.0.9", "source": { "type": "git", "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b" + "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7d6b1a5ea4ed28d010e5d36b993db813eb49710b", - "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7439a53ae367986e9c22b2ac00f9d7376bb2f8cf", + "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf", "shasum": "" }, "require": { @@ -26001,9 +26216,9 @@ "description": "PHPUnit classes used by Codeception", "support": { "issues": "https://github.com/Codeception/phpunit-wrapper/issues", - "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.7" + "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.9" }, - "time": "2022-01-26T14:43:10+00:00" + "time": "2022-05-23T06:24:11+00:00" }, { "name": "codeception/stub", @@ -26182,16 +26397,16 @@ }, { "name": "doctrine/annotations", - "version": "1.13.2", + "version": "1.13.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + "reference": "648b0343343565c4a056bfc8392201385e8d89f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0", "shasum": "" }, "require": { @@ -26203,9 +26418,10 @@ "require-dev": { "doctrine/cache": "^1.11 || ^2.0", "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", + "phpstan/phpstan": "^1.4.10 || ^1.8.0", "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "symfony/cache": "^4.4 || ^5.2", + "vimeo/psalm": "^4.10" }, "type": "library", "autoload": { @@ -26248,9 +26464,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" + "source": "https://github.com/doctrine/annotations/tree/1.13.3" }, - "time": "2021-08-05T19:00:23+00:00" + "time": "2022-07-02T10:48:51+00:00" }, { "name": "doctrine/instantiator", @@ -26400,16 +26616,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.3.1", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "b37bf90405cec3f7a83c18e645ef748bcb87ac11" + "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/b37bf90405cec3f7a83c18e645ef748bcb87ac11", - "reference": "b37bf90405cec3f7a83c18e645ef748bcb87ac11", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/47177af1cfb9dab5d1cc4daf91b7179c2efe7fad", + "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad", "shasum": "" }, "require": { @@ -26420,33 +26636,32 @@ "ext-tokenizer": "*", "php": "^7.2.5 || ^8.0", "php-cs-fixer/diff": "^2.0", - "symfony/console": "^4.4.20 || ^5.1.3", - "symfony/event-dispatcher": "^4.4.20 || ^5.0", - "symfony/filesystem": "^4.4.20 || ^5.0", - "symfony/finder": "^4.4.20 || ^5.0", - "symfony/options-resolver": "^4.4.20 || ^5.0", + "symfony/console": "^4.4.20 || ^5.1.3 || ^6.0", + "symfony/event-dispatcher": "^4.4.20 || ^5.0 || ^6.0", + "symfony/filesystem": "^4.4.20 || ^5.0 || ^6.0", + "symfony/finder": "^4.4.20 || ^5.0 || ^6.0", + "symfony/options-resolver": "^4.4.20 || ^5.0 || ^6.0", "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php72": "^1.23", "symfony/polyfill-php80": "^1.23", "symfony/polyfill-php81": "^1.23", - "symfony/process": "^4.4.20 || ^5.0", - "symfony/stopwatch": "^4.4.20 || ^5.0" + "symfony/process": "^4.4.20 || ^5.0 || ^6.0", + "symfony/stopwatch": "^4.4.20 || ^5.0 || ^6.0" }, "require-dev": { "justinrainbow/json-schema": "^5.2", "keradus/cli-executor": "^1.5", "mikey179/vfsstream": "^1.6.8", - "php-coveralls/php-coveralls": "^2.4.3", + "php-coveralls/php-coveralls": "^2.5.2", "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.10.3", + "phpspec/prophecy": "^1.15", "phpspec/prophecy-phpunit": "^1.1 || ^2.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5", + "phpunit/phpunit": "^8.5.21 || ^9.5", "phpunitgoodpractices/polyfill": "^1.5", "phpunitgoodpractices/traits": "^1.9.1", - "symfony/phpunit-bridge": "^5.2.4", - "symfony/yaml": "^4.4.20 || ^5.0" + "symfony/phpunit-bridge": "^5.2.4 || ^6.0", + "symfony/yaml": "^4.4.20 || ^5.0 || ^6.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -26478,7 +26693,7 @@ "description": "A tool to automatically fix PHP code style", "support": { "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.3.1" + "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.4.0" }, "funding": [ { @@ -26486,7 +26701,7 @@ "type": "github" } ], - "time": "2021-11-15T18:01:18+00:00" + "time": "2021-12-11T16:25:08+00:00" }, { "name": "jms/metadata", @@ -26554,16 +26769,16 @@ }, { "name": "jms/serializer", - "version": "3.17.1", + "version": "3.18.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "190f64b051795d447ec755acbfdb1bff330a6707" + "reference": "f721ffd76733c24ec1e8fd1e50e44a335fb78bbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/190f64b051795d447ec755acbfdb1bff330a6707", - "reference": "190f64b051795d447ec755acbfdb1bff330a6707", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/f721ffd76733c24ec1e8fd1e50e44a335fb78bbe", + "reference": "f721ffd76733c24ec1e8fd1e50e44a335fb78bbe", "shasum": "" }, "require": { @@ -26591,6 +26806,7 @@ "symfony/filesystem": "^3.0|^4.0|^5.0|^6.0", "symfony/form": "^3.0|^4.0|^5.0|^6.0", "symfony/translation": "^3.0|^4.0|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", "symfony/validator": "^3.1.9|^4.0|^5.0|^6.0", "symfony/yaml": "^3.3|^4.0|^5.0|^6.0", "twig/twig": "~1.34|~2.4|^3.0" @@ -26598,6 +26814,7 @@ "suggest": { "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", "symfony/cache": "Required if you like to use cache functionality.", + "symfony/uid": "Required if you'd like to serialize UID objects.", "symfony/yaml": "Required if you'd like to use the YAML metadata format." }, "type": "library", @@ -26636,7 +26853,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/serializer/issues", - "source": "https://github.com/schmittjoh/serializer/tree/3.17.1" + "source": "https://github.com/schmittjoh/serializer/tree/3.18.0" }, "funding": [ { @@ -26644,7 +26861,106 @@ "type": "github" } ], - "time": "2021-12-28T20:59:55+00:00" + "time": "2022-08-06T05:17:44+00:00" + }, + { + "name": "laminas/laminas-diactoros", + "version": "2.14.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-diactoros.git", + "reference": "6cb35f61913f06b2c91075db00f67cfd78869e28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6cb35f61913f06b2c91075db00f67cfd78869e28", + "reference": "6cb35f61913f06b2c91075db00f67cfd78869e28", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "conflict": { + "phpspec/prophecy": "<1.9.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-curl": "*", + "ext-dom": "*", + "ext-gd": "*", + "ext-libxml": "*", + "http-interop/http-factory-tests": "^0.9.0", + "laminas/laminas-coding-standard": "~2.3.0", + "php-http/psr7-integration-tests": "^1.1.1", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" + }, + "type": "library", + "extra": { + "laminas": { + "config-provider": "Laminas\\Diactoros\\ConfigProvider", + "module": "Laminas\\Diactoros" + } + }, + "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php", + "src/functions/create_uploaded_file.legacy.php", + "src/functions/marshal_headers_from_sapi.legacy.php", + "src/functions/marshal_method_from_sapi.legacy.php", + "src/functions/marshal_protocol_version_from_sapi.legacy.php", + "src/functions/marshal_uri_from_sapi.legacy.php", + "src/functions/normalize_server.legacy.php", + "src/functions/normalize_uploaded_files.legacy.php", + "src/functions/parse_cookie_header.legacy.php" + ], + "psr-4": { + "Laminas\\Diactoros\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "PSR HTTP Message implementations", + "homepage": "https://laminas.dev", + "keywords": [ + "http", + "laminas", + "psr", + "psr-17", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-diactoros/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-diactoros/issues", + "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", + "source": "https://github.com/laminas/laminas-diactoros" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2022-07-28T12:23:48+00:00" }, { "name": "lusitanian/oauth", @@ -26719,16 +27035,16 @@ }, { "name": "magento/magento-coding-standard", - "version": "21", + "version": "25", "source": { "type": "git", "url": "https://github.com/magento/magento-coding-standard.git", - "reference": "470f7a62b2433b0208eebaa6984af86c04736260" + "reference": "7be8305949f6683ff08534fbc22e5d42a1c4eba7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/470f7a62b2433b0208eebaa6984af86c04736260", - "reference": "470f7a62b2433b0208eebaa6984af86c04736260", + "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/7be8305949f6683ff08534fbc22e5d42a1c4eba7", + "reference": "7be8305949f6683ff08534fbc22e5d42a1c4eba7", "shasum": "" }, "require": { @@ -26736,7 +27052,7 @@ "ext-simplexml": "*", "php": ">=7.3", "phpcompatibility/php-compatibility": "^9.3", - "rector/rector": ">=0.12.4 <=0.12.16", + "rector/rector": "^0.13.0", "squizlabs/php_codesniffer": "^3.6.1", "webonyx/graphql-php": "^14.9" }, @@ -26761,22 +27077,22 @@ "description": "A set of Magento specific PHP CodeSniffer rules.", "support": { "issues": "https://github.com/magento/magento-coding-standard/issues", - "source": "https://github.com/magento/magento-coding-standard/tree/v21" + "source": "https://github.com/magento/magento-coding-standard/tree/v25" }, - "time": "2022-04-04T15:22:12+00:00" + "time": "2022-06-21T10:23:58+00:00" }, { "name": "magento/magento2-functional-testing-framework", - "version": "3.8.0", + "version": "3.10.1", "source": { "type": "git", "url": "https://github.com/magento/magento2-functional-testing-framework.git", - "reference": "a934c0b09038acf61612451732c6a3e8a1faa090" + "reference": "c0c3380fcf00fc02053aa09942388e8f4ae7d378" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento2-functional-testing-framework/zipball/a934c0b09038acf61612451732c6a3e8a1faa090", - "reference": "a934c0b09038acf61612451732c6a3e8a1faa090", + "url": "https://api.github.com/repos/magento/magento2-functional-testing-framework/zipball/c0c3380fcf00fc02053aa09942388e8f4ae7d378", + "reference": "c0c3380fcf00fc02053aa09942388e8f4ae7d378", "shasum": "" }, "require": { @@ -26786,26 +27102,28 @@ "codeception/module-asserts": "^1.1", "codeception/module-sequence": "^1.0", "codeception/module-webdriver": "^1.0", - "composer/composer": "^1.9||^2.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", "csharpru/vault-php": "^4.2.1", "ext-curl": "*", "ext-dom": "*", + "ext-iconv": "*", "ext-intl": "*", "ext-json": "*", "ext-openssl": "*", "guzzlehttp/guzzle": "^7.3.0", + "laminas/laminas-diactoros": "^2.8", "monolog/monolog": "^2.3", "mustache/mustache": "~2.5", "nikic/php-parser": "^4.4", "php": ">7.3", "php-webdriver/webdriver": "^1.9.0", "spomky-labs/otphp": "^10.0", - "symfony/console": "^4.4", + "symfony/console": "^4.4||^5.4", "symfony/dotenv": "^5.3", "symfony/finder": "^5.0", "symfony/http-foundation": "^5.0", "symfony/mime": "^5.0", - "symfony/process": "^4.4", + "symfony/process": "^4.4||^5.4", "weew/helpers-array": "^1.3" }, "require-dev": { @@ -26851,9 +27169,9 @@ ], "support": { "issues": "https://github.com/magento/magento2-functional-testing-framework/issues", - "source": "https://github.com/magento/magento2-functional-testing-framework/tree/3.8.0" + "source": "https://github.com/magento/magento2-functional-testing-framework/tree/3.10.1" }, - "time": "2022-01-07T17:02:20+00:00" + "time": "2022-08-02T14:40:39+00:00" }, { "name": "mustache/mustache", @@ -27186,16 +27504,16 @@ }, { "name": "php-webdriver/webdriver", - "version": "1.12.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/php-webdriver/php-webdriver.git", - "reference": "99d4856ed7dffcdf6a52eccd6551e83d8d557ceb" + "reference": "b27ddf458d273c7d4602106fcaf978aa0b7fe15a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/99d4856ed7dffcdf6a52eccd6551e83d8d557ceb", - "reference": "99d4856ed7dffcdf6a52eccd6551e83d8d557ceb", + "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/b27ddf458d273c7d4602106fcaf978aa0b7fe15a", + "reference": "b27ddf458d273c7d4602106fcaf978aa0b7fe15a", "shasum": "" }, "require": { @@ -27245,9 +27563,9 @@ ], "support": { "issues": "https://github.com/php-webdriver/php-webdriver/issues", - "source": "https://github.com/php-webdriver/php-webdriver/tree/1.12.0" + "source": "https://github.com/php-webdriver/php-webdriver/tree/1.12.1" }, - "time": "2021-10-14T09:30:02+00:00" + "time": "2022-05-03T12:16:34+00:00" }, { "name": "phpcompatibility/php-compatibility", @@ -27623,16 +27941,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.4.3", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "34545bb30a6f8bd86cfa371dbd42140a657bbf0d" + "reference": "367a8d9d5f7da2a0136422d27ce8840583926955" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/34545bb30a6f8bd86cfa371dbd42140a657bbf0d", - "reference": "34545bb30a6f8bd86cfa371dbd42140a657bbf0d", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/367a8d9d5f7da2a0136422d27ce8840583926955", + "reference": "367a8d9d5f7da2a0136422d27ce8840583926955", "shasum": "" }, "require": { @@ -27642,6 +27960,7 @@ "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" @@ -27661,26 +27980,26 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.4.3" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.7.0" }, - "time": "2022-04-08T11:30:34+00:00" + "time": "2022-08-09T12:23:23+00:00" }, { "name": "phpstan/phpstan", - "version": "1.2.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "cbe085f9fdead5b6d62e4c022ca52dc9427a10ee" + "reference": "c53312ecc575caf07b0e90dee43883fdf90ca67c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cbe085f9fdead5b6d62e4c022ca52dc9427a10ee", - "reference": "cbe085f9fdead5b6d62e4c022ca52dc9427a10ee", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c53312ecc575caf07b0e90dee43883fdf90ca67c", + "reference": "c53312ecc575caf07b0e90dee43883fdf90ca67c", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.2|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -27690,11 +28009,6 @@ "phpstan.phar" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -27707,7 +28021,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.2.0" + "source": "https://github.com/phpstan/phpstan/tree/1.8.2" }, "funding": [ { @@ -27727,7 +28041,7 @@ "type": "tidelift" } ], - "time": "2021-11-18T14:09:01+00:00" + "time": "2022-07-20T09:57:31+00:00" }, { "name": "phpunit/php-code-coverage", @@ -28049,16 +28363,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.20", + "version": "9.5.21", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" + "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", + "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", "shasum": "" }, "require": { @@ -28092,7 +28406,6 @@ "sebastian/version": "^3.0.2" }, "require-dev": { - "ext-pdo": "*", "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { @@ -28136,7 +28449,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" }, "funding": [ { @@ -28148,24 +28461,24 @@ "type": "github" } ], - "time": "2022-04-01T12:37:26+00:00" + "time": "2022-06-19T12:14:25+00:00" }, { "name": "psr/cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -28185,7 +28498,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -28195,30 +28508,30 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { "name": "rector/rector", - "version": "0.12.9", + "version": "0.13.10", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "8f7cfa85731bf23cff9571460d88c327c8c1ac4c" + "reference": "d1e069db8ad3b4aea2b968248370c21415e4c180" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/8f7cfa85731bf23cff9571460d88c327c8c1ac4c", - "reference": "8f7cfa85731bf23cff9571460d88c327c8c1ac4c", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/d1e069db8ad3b4aea2b968248370c21415e4c180", + "reference": "d1e069db8ad3b4aea2b968248370c21415e4c180", "shasum": "" }, "require": { - "php": "^7.1|^8.0", - "phpstan/phpstan": "^1.2" + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.8.2" }, "conflict": { - "phpstan/phpdoc-parser": "<1.2", + "phpstan/phpdoc-parser": "<1.6.2", "rector/rector-cakephp": "*", "rector/rector-doctrine": "*", "rector/rector-laravel": "*", @@ -28234,7 +28547,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.12-dev" + "dev-main": "0.13-dev" } }, "autoload": { @@ -28246,10 +28559,10 @@ "license": [ "MIT" ], - "description": "Prefixed and PHP 7.1 downgraded version of rector/rector", + "description": "Instant Upgrade and Automated Refactoring of any PHP code", "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.12.9" + "source": "https://github.com/rectorphp/rector/tree/0.13.10" }, "funding": [ { @@ -28257,7 +28570,7 @@ "type": "github" } ], - "time": "2021-12-21T23:30:38+00:00" + "time": "2022-08-03T12:48:10+00:00" }, { "name": "sebastian/cli-parser", @@ -29413,16 +29726,16 @@ }, { "name": "symfony/mime", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "92d27a34dea2e199fa9b687e3fff3a7d169b7b1c" + "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/92d27a34dea2e199fa9b687e3fff3a7d169b7b1c", - "reference": "92d27a34dea2e199fa9b687e3fff3a7d169b7b1c", + "url": "https://api.github.com/repos/symfony/mime/zipball/3cd175cdcdb6db2e589e837dd46aff41027d9830", + "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830", "shasum": "" }, "require": { @@ -29476,7 +29789,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.7" + "source": "https://github.com/symfony/mime/tree/v5.4.11" }, "funding": [ { @@ -29492,27 +29805,25 @@ "type": "tidelift" } ], - "time": "2022-03-11T16:08:05+00:00" + "time": "2022-07-20T11:34:24+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.3", + "version": "v6.1.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8" + "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cc1147cb11af1b43f503ac18f31aa3bec213aba8", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a3016f5442e28386ded73c43a32a5b68586dd1c4", + "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "type": "library", "autoload": { @@ -29545,7 +29856,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.3" + "source": "https://github.com/symfony/options-resolver/tree/v6.1.0" }, "funding": [ { @@ -29561,24 +29872,24 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.4.5", + "version": "v6.1.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30" + "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", - "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/77dedae82ce2a26e2e9b481855473fc3b3e4e54d", + "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/service-contracts": "^1|^2|^3" }, "type": "library", @@ -29607,7 +29918,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.5" + "source": "https://github.com/symfony/stopwatch/tree/v6.1.0" }, "funding": [ { @@ -29623,25 +29934,24 @@ "type": "tidelift" } ], - "time": "2022-02-18T16:06:09+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "symfony/yaml", - "version": "v5.3.14", + "version": "v5.0.11", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "c441e9d2e340642ac8b951b753dea962d55b669d" + "reference": "29b60e88ff11a45b708115004fdeacab1ee3dd5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c441e9d2e340642ac8b951b753dea962d55b669d", - "reference": "c441e9d2e340642ac8b951b753dea962d55b669d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/29b60e88ff11a45b708115004fdeacab1ee3dd5d", + "reference": "29b60e88ff11a45b708115004fdeacab1ee3dd5d", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -29653,10 +29963,12 @@ "suggest": { "symfony/console": "For validating YAML files using the lint command" }, - "bin": [ - "Resources/bin/yaml-lint" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" @@ -29679,10 +29991,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Loads and dumps YAML files", + "description": "Symfony Yaml Component", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.3.14" + "source": "https://github.com/symfony/yaml/tree/5.0" }, "funding": [ { @@ -29698,7 +30010,7 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:05:39+00:00" + "time": "2020-05-20T17:38:26+00:00" }, { "name": "theseer/tokenizer", diff --git a/src/_data/codebase/v2_4/mrg/module-banner-page-builder-analytics.yml b/src/_data/codebase/v2_4/mrg/module-banner-page-builder-analytics.yml index 0d8fa409089..483e78a7294 100644 --- a/src/_data/codebase/v2_4/mrg/module-banner-page-builder-analytics.yml +++ b/src/_data/codebase/v2_4/mrg/module-banner-page-builder-analytics.yml @@ -2,4 +2,4 @@ title: BannerPageBuilderAnalytics content: The Magento_BannerPageBuilderAnalytics module configures data definitions for a data collection related to the PageBuilder module entities to be used in [Advanced - Reporting](http://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). + Reporting](https://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). diff --git a/src/_data/codebase/v2_4/mrg/module-catalog-page-builder-analytics-staging.yml b/src/_data/codebase/v2_4/mrg/module-catalog-page-builder-analytics-staging.yml index 66b969dc5dd..55f4eb5bb97 100644 --- a/src/_data/codebase/v2_4/mrg/module-catalog-page-builder-analytics-staging.yml +++ b/src/_data/codebase/v2_4/mrg/module-catalog-page-builder-analytics-staging.yml @@ -2,4 +2,4 @@ title: CatalogPageBuilderAnalyticsStaging content: The Magento_CatalogPageBuilderAnalyticsStaging module configures data definitions for a data collection related to the PageBuilder module entities to be used in [Advanced - Reporting](http://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). + Reporting](https://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). diff --git a/src/_data/codebase/v2_4/mrg/module-cms-page-builder-analytics-staging.yml b/src/_data/codebase/v2_4/mrg/module-cms-page-builder-analytics-staging.yml index c1174a25c56..ba8cd50c96d 100644 --- a/src/_data/codebase/v2_4/mrg/module-cms-page-builder-analytics-staging.yml +++ b/src/_data/codebase/v2_4/mrg/module-cms-page-builder-analytics-staging.yml @@ -2,4 +2,4 @@ title: CmsPageBuilderAnalyticsStaging content: The Magento_CmsPageBuilderAnalyticsStaging module configures data definitions for a data collection related to the PageBuilder module entities to be used in [Advanced - Reporting](http://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). + Reporting](https://devdocs.magento.com/guides/v2.2/advanced-reporting/modules.html). diff --git a/src/_data/codebase/v2_4/mrg/module-customer-downloadable-graph-ql.yml b/src/_data/codebase/v2_4/mrg/module-customer-downloadable-graph-ql.yml index 5051ae2475d..b4d47033924 100644 --- a/src/_data/codebase/v2_4/mrg/module-customer-downloadable-graph-ql.yml +++ b/src/_data/codebase/v2_4/mrg/module-customer-downloadable-graph-ql.yml @@ -14,9 +14,9 @@ content: |- ## Extensibility - Extension developers can interact with the Magento_CatalogGraphQl module. For more information about the Magento extension mechanism, see [Magento plugins](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). + Extension developers can interact with the Magento_CatalogGraphQl module. For more information about the Magento extension mechanism, see [Magento plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CustomerDownloadableGraphQl module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CustomerDownloadableGraphQl module. ## Additional information diff --git a/src/_data/codebase/v2_4/mrg/module-customer-graph-ql.yml b/src/_data/codebase/v2_4/mrg/module-customer-graph-ql.yml index c9dda79e11a..f4ebb7d0627 100644 --- a/src/_data/codebase/v2_4/mrg/module-customer-graph-ql.yml +++ b/src/_data/codebase/v2_4/mrg/module-customer-graph-ql.yml @@ -18,9 +18,9 @@ content: |- ## Extensibility - Extension developers can interact with the Magento_CustomerGraphQl module. For more information about the Magento extension mechanism, see [Magento plugins](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). + Extension developers can interact with the Magento_CustomerGraphQl module. For more information about the Magento extension mechanism, see [Magento plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CustomerGraphQl module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CustomerGraphQl module. ## Additional information diff --git a/src/_data/codebase/v2_4/mrg/module-customer-import-export.yml b/src/_data/codebase/v2_4/mrg/module-customer-import-export.yml index 845e3d92f4b..17d7995d674 100644 --- a/src/_data/codebase/v2_4/mrg/module-customer-import-export.yml +++ b/src/_data/codebase/v2_4/mrg/module-customer-import-export.yml @@ -9,9 +9,9 @@ content: |- ## Extensibility - Extension developers can interact with the Magento_CustomerImportExport module. For more information about the Magento extension mechanism, see [Magento plugins](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). + Extension developers can interact with the Magento_CustomerImportExport module. For more information about the Magento extension mechanism, see [Magento plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CustomerImportExport module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_CustomerImportExport module. ### Layouts diff --git a/src/_data/codebase/v2_4/mrg/module-customer.yml b/src/_data/codebase/v2_4/mrg/module-customer.yml index 0bece54e1da..66673f711e9 100644 --- a/src/_data/codebase/v2_4/mrg/module-customer.yml +++ b/src/_data/codebase/v2_4/mrg/module-customer.yml @@ -69,7 +69,7 @@ content: "This module serves to handle the customer data (Customer, Customer Add method. Parameters:\n - `visitor` is a `$this` object (`\\Magento\\Customer\\Model\\Visitor` class)\n\n- `visitor_activity_save` event in the `\\Magento\\Customer\\Model\\Visitor::saveByRequest` method. Parameters:\n - `visitor` is a `$this` object (`\\Magento\\Customer\\Model\\Visitor` - class)\n\nFor information about an event in Magento 2, see [Events and observers](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/events-and-observers.html#events).\n\n### + class)\n\nFor information about an event in Magento 2, see [Events and observers](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/events-and-observers.html#events).\n\n### Layouts\n\nThis module introduces the following layouts in the `view/frontend/layout` and `view/adminhtml/layout` directories:\n- `view/adminhtml/layout`:\n - `customer_address_edit`\n \ - `customer_group_index`\n - `customer_index_cart`\n - `customer_index_carts`\n @@ -150,13 +150,13 @@ content: "This module serves to handle the customer data (Customer, Customer Add \ - delete customer group by ID\n\n- `\\Magento\\Customer\\Model\\Group\\RetrieverInterface`\n \ - get current customer group id from session\n\n- `\\Magento\\Customer\\Model\\Customer\\Source\\GroupSourceLoggedInOnlyInterface`\n \ - get customer group attribute source\n \nFor information about a public - API in Magento 2, see [Public interfaces & APIs](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n### + API in Magento 2, see [Public interfaces & APIs](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n### UI components\n\nYou can extend customer and customer address updates using the configuration files located in the `view/adminhtml/ui_component` and `view/base/ui_component` directories:\n- `view/adminhtml/ui_component`:\n - `customer_address_form`\n \ - `customer_address_listing`\n - `customer_group_listing`\n - `customer_listing`\n \ - `customer_online_grid`\n\n- `view/base/ui_component`:\n - `customer_form`\n - \ \nFor information about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n## + \ \nFor information about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n## Additional information\n\nMore information can get at articles:\n- [Customer Configurations](https://docs.magento.com/user-guide/configuration/customers/customer-configuration.html)\n- [Customer Attributes](https://docs.magento.com/user-guide/stores/attributes-customer.html)\n- [Customer Address Attributes](https://docs.magento.com/user-guide/stores/attributes-customer-address.html)\n- @@ -165,6 +165,6 @@ content: "This module serves to handle the customer data (Customer, Customer Add Console commands\n\nMagento_Customer provides console commands:\n- `bin/magento customer:hash:upgrade` - upgrades a customer password hash to the latest hash algorithm\n\n### Cron options\n\nCron group configuration can be set at `etc/crontab.xml`:\n- `visitor_clean` - - clean visitor's outdated records\n\n[Learn how to configure and run cron in Magento.](http://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html).\n\n### + - clean visitor's outdated records\n\n[Learn how to configure and run cron in Magento.](https://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html).\n\n### Indexers\n\nThis module introduces the following indexers:\n- `customer_grid` - customer grid indexer\n\n[Learn how to manage the indexers](https://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-index.html)." diff --git a/src/_data/codebase/v2_4/mrg/module-gift-message-graph-ql.yml b/src/_data/codebase/v2_4/mrg/module-gift-message-graph-ql.yml index 306d1f23e28..35c847c2da4 100644 --- a/src/_data/codebase/v2_4/mrg/module-gift-message-graph-ql.yml +++ b/src/_data/codebase/v2_4/mrg/module-gift-message-graph-ql.yml @@ -11,9 +11,9 @@ content: |- ## Extensibility - Extension developers can interact with the Magento_GiftMessageGraphQl module. For more information about the Magento extension mechanism, see [Magento plugins](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). + Extension developers can interact with the Magento_GiftMessageGraphQl module. For more information about the Magento extension mechanism, see [Magento plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GiftMessageGraphQl module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GiftMessageGraphQl module. ## Additional information diff --git a/src/_data/codebase/v2_4/mrg/module-gift-message.yml b/src/_data/codebase/v2_4/mrg/module-gift-message.yml index 219fd28305b..c1b378bddab 100644 --- a/src/_data/codebase/v2_4/mrg/module-gift-message.yml +++ b/src/_data/codebase/v2_4/mrg/module-gift-message.yml @@ -22,7 +22,7 @@ content: "This module allows to add a message to order or to each ordered item e Parameters:\n - `items` is a entityItems (`array` type)\n\n- `gift_options_prepare` event in the `\\Magento\\GiftMessage\\Block\\Message\\Inline::isMessagesOrderAvailable` method. Parameters:\n - `entity` is an entity object\n\nFor information about - an event in Magento 2, see [Events and observers](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/events-and-observers.html#events).\n\n### + an event in Magento 2, see [Events and observers](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/events-and-observers.html#events).\n\n### Layout\n\nThis module introduces the following layouts in the `view/frontend/layout` and `view/adminhtml/layout` directories:\n- `view/adminhtml/layout`:\n - `sales_order_create_index`\n \ - `sales_order_create_load_block_data`\n - `sales_order_create_load_block_items`\n @@ -44,5 +44,5 @@ content: "This module allows to add a message to order or to each ordered item e order\n\n#### Order Item\n\n- `\\Magento\\GiftMessage\\Api\\OrderItemRepositoryInterface`\n \ - get the gift message for a specified item in a specified order\n - set the gift message for a specified item in a specified order\n \nFor information - about a public API in Magento 2, see [Public interfaces & APIs](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## + about a public API in Magento 2, see [Public interfaces & APIs](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## Additional information\n\n[Learn more about Gift Options and Gift Message](https://docs.magento.com/user-guide/sales/gift-options.html)." diff --git a/src/_data/codebase/v2_4/mrg/module-google-adwords.yml b/src/_data/codebase/v2_4/mrg/module-google-adwords.yml index 1fb247e4ac8..882a59c3c56 100644 --- a/src/_data/codebase/v2_4/mrg/module-google-adwords.yml +++ b/src/_data/codebase/v2_4/mrg/module-google-adwords.yml @@ -11,9 +11,9 @@ content: |- ## Extensibility - Extension developers can interact with the Magento_GoogleAdwords module. For more information about the Magento extension mechanism, see [Magento plugins](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). + Extension developers can interact with the Magento_GoogleAdwords module. For more information about the Magento extension mechanism, see [Magento plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GoogleAdwords module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GoogleAdwords module. ### Layouts diff --git a/src/_data/codebase/v2_4/mrg/module-google-analytics.yml b/src/_data/codebase/v2_4/mrg/module-google-analytics.yml index 8d92bd1757d..daf1e20982e 100644 --- a/src/_data/codebase/v2_4/mrg/module-google-analytics.yml +++ b/src/_data/codebase/v2_4/mrg/module-google-analytics.yml @@ -13,9 +13,9 @@ content: |- ## Extensibility - Extension developers can interact with the Magento_GoogleAnalytics module. For more information about the Magento extension mechanism, see [Magento plugins](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). + Extension developers can interact with the Magento_GoogleAnalytics module. For more information about the Magento extension mechanism, see [Magento plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GoogleAnalytics module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GoogleAnalytics module. A lot of functionality in the module is on JavaScript, use [mixins](https://devdocs.magento.com/guides/v2.4/javascript-dev-guide/javascript/js_mixins.html) to extend it. diff --git a/src/_data/codebase/v2_4/mrg/module-google-optimizer.yml b/src/_data/codebase/v2_4/mrg/module-google-optimizer.yml index ed6dedb0420..a526aa24b74 100644 --- a/src/_data/codebase/v2_4/mrg/module-google-optimizer.yml +++ b/src/_data/codebase/v2_4/mrg/module-google-optimizer.yml @@ -8,8 +8,8 @@ content: "This module implements functionality of Google Experiment tool that is or disable modules](https://devdocs.magento.com/guides/v2.4/install-gde/install/cli/install-cli-subcommands-enable.html).\n\n## Extensibility\n\nExtension developers can interact with the Magento_GoogleOptimizer module. For more information about the Magento extension mechanism, see [Magento - plugins](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html).\n\n[The - Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) + plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html).\n\n[The + Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_GoogleOptimizer module.\n\n### Layouts\n\nThis module introduces the following layouts in the `view/frontend/layout` and `view/adminhtml/layout` directories:\n- `view/adminhtml/layout`:\n - `catalog_product_new`\n @@ -18,7 +18,7 @@ content: "This module implements functionality of Google Experiment tool that is a layout in Magento 2, see the [Layout documentation](https://devdocs.magento.com/guides/v2.4/frontend-dev-guide/layouts/layout-overview.html).\n\n### UI components\n\nThis module extends following ui components located in the `view/adminhtml/ui_component` directory:\n- `category_form`\n- `cms_page_form`\n- `new_category_form`\n\nFor information - about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n## + about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n## Additional information \n\nGoogle Experiment (on Google side) allows to make two variants of the same page and compare their popularity.\nFrom Magento side, code generated by Google should be saved and displayed on a particular page.\nGoogle diff --git a/src/_data/codebase/v2_4/mrg/module-import-export.yml b/src/_data/codebase/v2_4/mrg/module-import-export.yml index 046f747dfc1..82796c9495e 100644 --- a/src/_data/codebase/v2_4/mrg/module-import-export.yml +++ b/src/_data/codebase/v2_4/mrg/module-import-export.yml @@ -10,7 +10,7 @@ content: "This module provides a framework and basic functionality for importing in Magento 2, see [Enable or disable modules](https://devdocs.magento.com/guides/v2.4/install-gde/install/cli/install-cli-subcommands-enable.html).\n\n## Structure\n\n`Files/` - the directory that contains sample import files.\n\nFor information about a typical file structure of a module in Magento 2, see [Module - file structure](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/build/module-file-structure.html#module-file-structure).\n\n## + file structure](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/build/module-file-structure.html#module-file-structure).\n\n## Extensibility\n\nExtension developers can interact with the Magento_ImportExport module. For more information about the Magento extension mechanism, see [Magento plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html).\n\n[The @@ -20,16 +20,16 @@ content: "This module provides a framework and basic functionality for importing directory:\n\n- `adminhtml_export_getfilter`\n- `adminhtml_export_index`\n- `adminhtml_history_grid_block`\n- `adminhtml_history_index`\n- `adminhtml_import_busy`\n- `adminhtml_import_index`\n- `adminhtml_import_start`\n- `adminhtml_import_validate`\n\nFor more information - about a layout in Magento 2, see the [Layout documentation](http://devdocs.magento.com/guides/v2.4/frontend-dev-guide/layouts/layout-overview.html).\n\n### + about a layout in Magento 2, see the [Layout documentation](https://devdocs.magento.com/guides/v2.4/frontend-dev-guide/layouts/layout-overview.html).\n\n### UI components\n\nYou can extend an export updates using the configuration files located in the `view/adminhtml/ui_component` directory:\n\n- `export_grid` \n\nFor - information about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n### + information about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n### Public APIs\n\n- `Magento\\ImportExport\\Api\\Data\\ExportInfoInterface`\n - getter and setter interface with data needed for export\n\n- `Magento\\ImportExport\\Api\\Data\\ExtendedExportInfoInterface`\n \ - extends `Magento\\ImportExport\\Api\\Data\\ExportInfoInterface`. Contains data for skipped attributes\n\n- `\\Magento\\ImportExport\\Api\\ExportManagementInterface`\n \ - Executing actual export and returns export data\n\nFor information about a - public API in Magento 2, see [Public interfaces & APIs](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## + public API in Magento 2, see [Public interfaces & APIs](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## Additional information\n\n#### Message Queue Consumer\n\n- `exportProcessor` - consumer to run export process\n\n[Learn how to manage Message Queues](https://devdocs.magento.com/guides/v2.4/config-guide/mq/manage-message-queues.html).\n\n#### Create custom import entity\n\n1. Declare the new import entity in `etc/import.xml`\n2. diff --git a/src/_data/codebase/v2_4/mrg/module-indexer.yml b/src/_data/codebase/v2_4/mrg/module-indexer.yml index 8c5205990e6..8e803c3439e 100644 --- a/src/_data/codebase/v2_4/mrg/module-indexer.yml +++ b/src/_data/codebase/v2_4/mrg/module-indexer.yml @@ -11,7 +11,7 @@ content: "This module provides Magento Indexing functionality.\nIt allows to:\n information about a module installation in Magento 2, see [Enable or disable modules](https://devdocs.magento.com/guides/v2.4/install-gde/install/cli/install-cli-subcommands-enable.html).\n\n## Structure\n\n`App/` - the directory that contains launch application entry point.\n\nFor information about a typical file structure of a module in Magento 2, see [Module - file structure](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/build/module-file-structure.html#module-file-structure).\n\n## + file structure](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/build/module-file-structure.html#module-file-structure).\n\n## Extensibility\n\nExtension developers can interact with the Magento_Indexer module. For more information about the Magento extension mechanism, see [Magento plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html).\n\n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) @@ -41,7 +41,7 @@ content: "This module provides Magento Indexing functionality.\nIt allows to:\n dimension mode\n\n### Cron options\n\nCron group configuration can be set at `etc/crontab.xml`:\n- `indexer_reindex_all_invalid` - regenerate indexes for all invalid indexers\n- `indexer_update_all_views` - update indexer views\n- `indexer_clean_all_changelogs` - clean indexer view changelogs\n\n[Learn - how to configure and run cron in Magento.](http://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html).\n\nMore + how to configure and run cron in Magento.](https://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html).\n\nMore information can get at articles:\n- [Learn more about indexing](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/indexing.html)\n- [Learn more about Indexer optimization](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/indexer-batch.html)\n- [Learn more how to add custom indexer](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/indexing-custom.html)\n- diff --git a/src/_data/codebase/v2_4/mrg/module-instant-purchase.yml b/src/_data/codebase/v2_4/mrg/module-instant-purchase.yml index 018ca39ef74..f43e080a683 100644 --- a/src/_data/codebase/v2_4/mrg/module-instant-purchase.yml +++ b/src/_data/codebase/v2_4/mrg/module-instant-purchase.yml @@ -9,7 +9,7 @@ content: "## Magento_InstantPurchase module\n\nThis module allows the Customer t Structure\n\n`PaymentMethodsIntegration` - directory contains interfaces and basic implementation of integration vault payment method to the instant purchase.\n\nFor information about a typical file structure of a module in Magento 2, see [Module - file structure](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/build/module-file-structure.html#module-file-structure).\n\n## + file structure](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/build/module-file-structure.html#module-file-structure).\n\n## Extensibility\n\nExtension developers can interact with the Magento_InstantPurchase module. For more information about the Magento extension mechanism, see [Magento plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html).\n\n[The @@ -26,7 +26,7 @@ content: "## Magento_InstantPurchase module\n\nThis module allows the Customer t \ - checks if payment method may be used for instant purchase\n \n- `\\Magento\\InstantPurchase\\PaymentMethodIntegration\\PaymentAdditionalInformationProviderInterface`\n \ - provides additional information part specific for payment method\n\n- `\\Magento\\InstantPurchase\\PaymentMethodIntegration\\PaymentTokenFormatterInterface`\n \ - provides mechanism to create string presentation of token for payment method\n\nFor - information about a public API in Magento 2, see [Public interfaces & APIs](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## + information about a public API in Magento 2, see [Public interfaces & APIs](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## Additional information\n\n### Instant purchase customization\n\nAlmost all aspects of instant purchase may be customized. See comments to classes and interfaces marked with `@api` tag.\n\nAll payments created for instant purchase also have `'instant-purchase' diff --git a/src/_data/codebase/v2_4/mrg/module-integration.yml b/src/_data/codebase/v2_4/mrg/module-integration.yml index a3cdad6101e..1e0f40b6236 100644 --- a/src/_data/codebase/v2_4/mrg/module-integration.yml +++ b/src/_data/codebase/v2_4/mrg/module-integration.yml @@ -19,7 +19,7 @@ content: "This module enables third-party services to call the Web API by using Events\n\nThe module dispatches the following events:\n\n#### Model\n- `customer_login` event in the `\\Magento\\Integration\\Model\\CustomerTokenService::createCustomerAccessToken` method. Parameters:\n - `customer` is an object (`\\Magento\\Customer\\Api\\Data\\CustomerInterface` - class)\n\nFor information about an event in Magento 2, see [Events and observers](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/events-and-observers.html#events).\n\n### + class)\n\nFor information about an event in Magento 2, see [Events and observers](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/events-and-observers.html#events).\n\n### Layouts\n\nThis module introduces the following layout handles in the `view/adminhtml/layout` directory:\n- `adminhtml_integration_edit`\n- `adminhtml_integration_grid`\n- `adminhtml_integration_grid_block`\n- `adminhtml_integration_index`\n- `adminhtml_integration_new`\n- `adminhtml_integration_permissionsdialog`\n- @@ -44,11 +44,11 @@ content: "This module enables third-party services to call the Web API by using HTTP Post URL. Generate and return oauth_verifier\n - delete the consumer data associated with the integration including its token and nonce\n - remove token associated with provided consumer\n\nFor information about a public API in Magento - 2, see [Public interfaces & APIs](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## + 2, see [Public interfaces & APIs](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## Additional information\n\n### Cron options\n\nCron group configuration can be set at `etc/crontab.xml`:\n- `outdated_authentication_failures_cleanup` - clearing log of outdated token request authentication failures\n- `expired_tokens_cleanups` - delete expired customer and admin tokens\n\n[Learn how to configure and run cron - in Magento.](http://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html).\n\nMore + in Magento.](https://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html).\n\nMore information can get at articles:\n- [Learn more about an Integration](https://docs.magento.com/user-guide/system/integrations.html)\n- [Lear how to create an Integration](https://devdocs.magento.com/guides/v2.4/get-started/create-integration.html)" diff --git a/src/_data/codebase/v2_4/mrg/module-layered-navigation.yml b/src/_data/codebase/v2_4/mrg/module-layered-navigation.yml index 3a86fde140e..81cbe2481f8 100644 --- a/src/_data/codebase/v2_4/mrg/module-layered-navigation.yml +++ b/src/_data/codebase/v2_4/mrg/module-layered-navigation.yml @@ -6,8 +6,8 @@ content: "This module introduces Layered Navigation UI for Catalog (faceted sear or disable modules](https://devdocs.magento.com/guides/v2.4/install-gde/install/cli/install-cli-subcommands-enable.html).\n\n## Extensibility\n\nExtension developers can interact with the Magento_LayeredNavigation module. For more information about the Magento extension mechanism, see [Magento - plugins](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html).\n\n[The - Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) + plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html).\n\n[The + Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_LayeredNavigation module.\n\n### Layouts\n\nThis module introduces the following layout handles in the `view/frontend/layout` directory:\n- `catalog_category_view_type_layered`\n- `catalog_category_view_type_layered_without_children`\n- @@ -15,10 +15,10 @@ content: "This module introduces Layered Navigation UI for Catalog (faceted sear see the [Layout documentation](https://devdocs.magento.com/guides/v2.4/frontend-dev-guide/layouts/layout-overview.html).\n\n### UI components\n\nThis module extends following ui components located in the `view/adminhtml/ui_component` directory:\n- `product_attribute_add_form`\n- `product_attributes_grid`\n- `product_attributes_listing`\n\nFor - information about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n### + information about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n### Public APIs\n\n- `\\Magento\\LayeredNavigation\\Block\\Navigation\\FilterRendererInterface`\n \ - render filter\n\nFor information about a public API in Magento 2, see [Public - interfaces & APIs](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## + interfaces & APIs](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## Additional information\n\n### Page Layout\nThis module modifies the following page_layout in the `view/frontend.page_layout` directory: \n- `1columns` - moves block `catalog.leftnav` into the `content.top` container\n- `2columns-left` - moves block `catalog.leftnav` diff --git a/src/_data/codebase/v2_4/mrg/module-login-as-customer-admin-ui.yml b/src/_data/codebase/v2_4/mrg/module-login-as-customer-admin-ui.yml index 58e9c642559..54d816b5263 100644 --- a/src/_data/codebase/v2_4/mrg/module-login-as-customer-admin-ui.yml +++ b/src/_data/codebase/v2_4/mrg/module-login-as-customer-admin-ui.yml @@ -3,7 +3,7 @@ title: LoginAsCustomerAdminUi content: |- This module provides UI for Admin Panel for Login As Customer functionality. - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_LoginAsCustomerAdminUi module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_LoginAsCustomerAdminUi module. ## Additional information diff --git a/src/_data/codebase/v2_4/mrg/module-login-as-customer-api.yml b/src/_data/codebase/v2_4/mrg/module-login-as-customer-api.yml index 394b30de2ff..b66d9174bee 100644 --- a/src/_data/codebase/v2_4/mrg/module-login-as-customer-api.yml +++ b/src/_data/codebase/v2_4/mrg/module-login-as-customer-api.yml @@ -19,6 +19,6 @@ content: "This module provides API for ability to login into customer account fo \ - save authentication data. Return secret key\n\n- `\\Magento\\LoginAsCustomerApi\\Api\\SetLoggedAsCustomerAdminIdInterface`:\n \ - set id of admin logged as customer\n\n- `\\Magento\\LoginAsCustomerApi\\Api\\SetLoggedAsCustomerCustomerIdInterface`:\n \ - set id of customer admin is logged as\n\nFor information about a public API - in Magento 2, see [Public interfaces & APIs](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## + in Magento 2, see [Public interfaces & APIs](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html).\n\n## Additional information\n\nThis module is a part of Login As Customer feature.\n\n[Learn more about Login As Customer feature](https://docs.magento.com/user-guide/customers/login-as-customer.html)." diff --git a/src/_data/codebase/v2_4/mrg/module-login-as-customer-log.yml b/src/_data/codebase/v2_4/mrg/module-login-as-customer-log.yml index 0458b594746..00203c95c3f 100644 --- a/src/_data/codebase/v2_4/mrg/module-login-as-customer-log.yml +++ b/src/_data/codebase/v2_4/mrg/module-login-as-customer-log.yml @@ -22,7 +22,7 @@ content: |- - `view/adminhtml/ui_component`: - `login_as_customer_log_listing` - For information about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html). + For information about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html). ### Public APIs @@ -38,7 +38,7 @@ content: |- - `\Magento\LoginAsCustomerLog\Api\SaveLogsInterface`: - save login as custom logs entities - For information about a public API in Magento 2, see [Public interfaces & APIs](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html). + For information about a public API in Magento 2, see [Public interfaces & APIs](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html). ## Additional information diff --git a/src/_data/codebase/v2_4/mrg/module-marketplace.yml b/src/_data/codebase/v2_4/mrg/module-marketplace.yml index 861ccfd2291..ae573815875 100644 --- a/src/_data/codebase/v2_4/mrg/module-marketplace.yml +++ b/src/_data/codebase/v2_4/mrg/module-marketplace.yml @@ -9,9 +9,9 @@ content: |- ## Extensibility - Extension developers can interact with the Magento_Marketplace module. For more information about the Magento extension mechanism, see [Magento plugins](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). + Extension developers can interact with the Magento_Marketplace module. For more information about the Magento extension mechanism, see [Magento plugins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html). - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_Marketplace module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_Marketplace module. ### Layouts diff --git a/src/_data/codebase/v2_4/mrg/module-media-gallery-api.yml b/src/_data/codebase/v2_4/mrg/module-media-gallery-api.yml index c12c39d6d86..6b2f79136d6 100644 --- a/src/_data/codebase/v2_4/mrg/module-media-gallery-api.yml +++ b/src/_data/codebase/v2_4/mrg/module-media-gallery-api.yml @@ -25,6 +25,6 @@ content: "The Magento_MediaGalleryApi module serves as application program inter \ - save media gallery assets to the database\n\n- `\\Magento\\MediaGalleryApi\\Api\\SaveAssetsKeywordsInterface`:\n \ - save keywords related to assets to the database\n \n- `\\Magento\\MediaGalleryApi\\Api\\SearchAssetsInterface`:\n \ - search media gallery assets\n\nFor information about a public API in Magento - 2, see [Public interfaces & APIs](http://devdocs.magento.com/guides/v2./extension-dev-guide/api-concepts.html).\n\n## + 2, see [Public interfaces & APIs](https://devdocs.magento.com/guides/v2./extension-dev-guide/api-concepts.html).\n\n## Additional information\n\nFor information about significant changes in patch releases, see [2.4.x Release information](https://devdocs.magento.com/guides/v2.4/release-notes/bk-release-notes.html)." diff --git a/src/_data/codebase/v2_4/mrg/module-media-gallery-catalog-integration.yml b/src/_data/codebase/v2_4/mrg/module-media-gallery-catalog-integration.yml index bc310066301..494e08e8b9f 100644 --- a/src/_data/codebase/v2_4/mrg/module-media-gallery-catalog-integration.yml +++ b/src/_data/codebase/v2_4/mrg/module-media-gallery-catalog-integration.yml @@ -9,4 +9,4 @@ content: |- ## Extensibility - [The Magento dependency injection mechanism](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_MediaGalleryCatalogIntegration module. + [The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_MediaGalleryCatalogIntegration module. diff --git a/src/_data/codebase/v2_4/mrg/module-media-gallery-catalog-ui.yml b/src/_data/codebase/v2_4/mrg/module-media-gallery-catalog-ui.yml index 055cbc38874..854c767091d 100644 --- a/src/_data/codebase/v2_4/mrg/module-media-gallery-catalog-ui.yml +++ b/src/_data/codebase/v2_4/mrg/module-media-gallery-catalog-ui.yml @@ -31,7 +31,7 @@ content: |- - `media_gallery_listing` - `standalone_media_gallery_listing` - For information about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html). + For information about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html). ## Additional information diff --git a/src/_data/codebase/v2_4/mrg/module-media-gallery-cms-ui.yml b/src/_data/codebase/v2_4/mrg/module-media-gallery-cms-ui.yml index 7b7b7f501fa..10c7e7ea248 100644 --- a/src/_data/codebase/v2_4/mrg/module-media-gallery-cms-ui.yml +++ b/src/_data/codebase/v2_4/mrg/module-media-gallery-cms-ui.yml @@ -21,7 +21,7 @@ content: |- - `media_gallery_listing` - `standalone_media_gallery_listing` - For information about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html). + For information about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html). ## Additional information diff --git a/src/_data/codebase/v2_4/mrg/module-media-gallery-ui.yml b/src/_data/codebase/v2_4/mrg/module-media-gallery-ui.yml index 86d182a6006..5daa2e30309 100644 --- a/src/_data/codebase/v2_4/mrg/module-media-gallery-ui.yml +++ b/src/_data/codebase/v2_4/mrg/module-media-gallery-ui.yml @@ -37,7 +37,7 @@ content: |- - `cms_page_listing` - `product_listing` - For information about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html). + For information about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html). ## Additional information diff --git a/src/_data/codebase/v2_4/mrg/module-media-storage.yml b/src/_data/codebase/v2_4/mrg/module-media-storage.yml index ffa5f272a51..96bdcccc4d7 100644 --- a/src/_data/codebase/v2_4/mrg/module-media-storage.yml +++ b/src/_data/codebase/v2_4/mrg/module-media-storage.yml @@ -16,7 +16,7 @@ content: |- `App/` - the directory that contains launch application entry point. - For information about a typical file structure of a module in Magento 2, see [Module file structure](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/build/module-file-structure.html#module-file-structure). + For information about a typical file structure of a module in Magento 2, see [Module file structure](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/build/module-file-structure.html#module-file-structure). ## Extensibility diff --git a/src/_data/codebase/v2_4/mrg/module-msrp-configurable-product.yml b/src/_data/codebase/v2_4/mrg/module-msrp-configurable-product.yml index 7429c98b534..0926204227e 100644 --- a/src/_data/codebase/v2_4/mrg/module-msrp-configurable-product.yml +++ b/src/_data/codebase/v2_4/mrg/module-msrp-configurable-product.yml @@ -12,8 +12,8 @@ content: "The **Magento_MsrpConfigurableProduct** module provides type and resol For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html).\n\n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_Msrp module.\n\n### Layouts\n\nFor - more information about a layout in Magento 2, see the [Layout documentation](http://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/layout-overview.html).\n\n### + more information about a layout in Magento 2, see the [Layout documentation](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/layout-overview.html).\n\n### UI components\n\nFor information about a UI component in Magento 2, see [Overview - of UI components](http://devdocs.magento.com/guides/v2.3/ui_comp_guide/bk-ui_comps.html).\n\n## + of UI components](https://devdocs.magento.com/guides/v2.3/ui_comp_guide/bk-ui_comps.html).\n\n## Additional information\n\nFor information about significant changes in patch releases, see [2.4.x Release information](https://devdocs.magento.com/guides/v2.4/release-notes/bk-release-notes.html)." diff --git a/src/_data/codebase/v2_4/mrg/module-msrp-grouped-product.yml b/src/_data/codebase/v2_4/mrg/module-msrp-grouped-product.yml index cb2b8942f31..af3cd850737 100644 --- a/src/_data/codebase/v2_4/mrg/module-msrp-grouped-product.yml +++ b/src/_data/codebase/v2_4/mrg/module-msrp-grouped-product.yml @@ -12,9 +12,9 @@ content: "**Magento_MsrpGroupedProduct** module provides type and resolver infor For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html).\n\n[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_Msrp module.\n\n### Layouts\n\nFor - more information about a layout in Magento 2, see the [Layout documentation](http://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/layout-overview.html).\n\n### + more information about a layout in Magento 2, see the [Layout documentation](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/layout-overview.html).\n\n### UI components\n\nFor information about a UI component in Magento 2, see [Overview - of UI components](http://devdocs.magento.com/guides/v2.3/ui_comp_guide/bk-ui_comps.html).\n\n## + of UI components](https://devdocs.magento.com/guides/v2.3/ui_comp_guide/bk-ui_comps.html).\n\n## Additional information\n\n### collection attributes\n\nModule adds attribute `msrp` to select for the `Magento\\Catalog\\Model\\ResourceModel\\Product\\Link\\Product\\Collection` \nin `Magento\\MsrpGroupedProduct\\Plugin\\Model\\Product\\Type\\Grouped` plugin.\n\nFor diff --git a/src/_data/codebase/v2_4/mrg/module-multishipping.yml b/src/_data/codebase/v2_4/mrg/module-multishipping.yml index 211ce0aff07..70621c0174d 100644 --- a/src/_data/codebase/v2_4/mrg/module-multishipping.yml +++ b/src/_data/codebase/v2_4/mrg/module-multishipping.yml @@ -38,7 +38,7 @@ content: "**Magento_Multishipping** module provides functionality that allows cu `checkout_multishipping_refund_all` event in the\n class `\\Magento\\Multishipping\\Model\\Checkout\\Type\\Multishipping::createOrders()` method. Parameters:\n - `orders` is order object array `\\Magento\\Sales\\Model\\Order` \ that was created.\n\nFor information about an event in Magento 2, see [Events - and observers](http://devdocs.magento.com/guides/v2.3/extension-dev-guide/events-and-observers.html#events).\n\n### + and observers](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/events-and-observers.html#events).\n\n### Layouts\n\nThe module interacts with the following layout handles:\n\n`view/frontend/layout` directory:\n\n - `checkout_cart_index`\n \nThis module introduces the following layouts and layout handles:\n\n`view/frontend/layout` directory:\n\n - `multishipping_checkout`\n @@ -69,4 +69,4 @@ content: "**Magento_Multishipping** module provides functionality that allows cu Checkout Register User Form\n- `checkout_cart_multishipping_shipping` - Multishipping Checkout Shipping Information Step\n- `checkout_cart_multishipping_success` - Multishipping Checkout Success\n\nMore information about [layout types](https://devdocs.magento.com/guides/v2.4/frontend-dev-guide/layouts/layout-types.html).\n\n\nFor - information about significant changes in patch releases, see [2.3.x Release information](http://devdocs.magento.com/guides/v2.3/release-notes/bk-release-notes.html)." + information about significant changes in patch releases, see [2.3.x Release information](https://devdocs.magento.com/guides/v2.3/release-notes/bk-release-notes.html)." diff --git a/src/_data/codebase/v2_4/mrg/module-mysql-mq.yml b/src/_data/codebase/v2_4/mrg/module-mysql-mq.yml index 75b4c212971..d90317c050f 100644 --- a/src/_data/codebase/v2_4/mrg/module-mysql-mq.yml +++ b/src/_data/codebase/v2_4/mrg/module-mysql-mq.yml @@ -9,6 +9,6 @@ content: "**Magento_MysqlMq** provides message queue implementation based on MyS messages\n\n\nFor information about a module installation in Magento 2, see [Enable or disable modules](https://devdocs.magento.com/guides/v2.4/install-gde/install/cli/install-cli-subcommands-enable.html).\n\n## Additional information\n\nFor information about significant changes in patch releases, - see [2.3.x Release information](http://devdocs.magento.com/guides/v2.3/release-notes/bk-release-notes.html).\n\n### + see [2.3.x Release information](https://devdocs.magento.com/guides/v2.3/release-notes/bk-release-notes.html).\n\n### cron options\n\ncron group configuration can be set in `etc/crontab.xml`.\n\n- `mysqlmq_clean_messages` - clean up old messages from database" diff --git a/src/_data/codebase/v2_4/mrg/module-new-relic-reporting.yml b/src/_data/codebase/v2_4/mrg/module-new-relic-reporting.yml index 137a8c0c744..41e6eaec4c5 100644 --- a/src/_data/codebase/v2_4/mrg/module-new-relic-reporting.yml +++ b/src/_data/codebase/v2_4/mrg/module-new-relic-reporting.yml @@ -21,4 +21,4 @@ content: "This module implements integration New Relic APM and New Relic Insight about command's parameters](https://devdocs.magento.com/guides/v2.4/reference/cli/magento.html#newreliccreatedeploy-marker).\n\n### Cron options\n\nCron group configuration can be set at `etc/crontab.xml`:\n- `magento_newrelicreporting_cron` - runs collecting all new relic reports\n\n[Learn how to configure and run cron - in Magento.](http://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html)." + in Magento.](https://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html)." diff --git a/src/_data/codebase/v2_4/mrg/module-newsletter.yml b/src/_data/codebase/v2_4/mrg/module-newsletter.yml index 80203a3bf96..056bc540699 100644 --- a/src/_data/codebase/v2_4/mrg/module-newsletter.yml +++ b/src/_data/codebase/v2_4/mrg/module-newsletter.yml @@ -28,7 +28,7 @@ content: "This module allows clients to subscribe for information about new prom more information about a layout in Magento 2, see the [Layout documentation](https://devdocs.magento.com/guides/v2.4/frontend-dev-guide/layouts/layout-overview.html).\n\n### UI components\n\nThis module extends customer form ui component the configuration file located in the `view/base/ui_component` directory:\n- `customer_form`\n\nFor - information about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n## + information about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n## Additional information\n\n[Learn more about newsletter](https://docs.magento.com/user-guide/marketing/newsletters.html).\n\n### Cron options\n\nCron group configuration can be set at `etc/crontab.xml`:\n- `newsletter_send_all` - - schedules newsletter sending\n\n[Learn how to configure and run cron in Magento.](http://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html)." + - schedules newsletter sending\n\n[Learn how to configure and run cron in Magento.](https://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html)." diff --git a/src/_data/codebase/v2_4/mrg/module-offline-shipping.yml b/src/_data/codebase/v2_4/mrg/module-offline-shipping.yml index 97885a67374..670e59223bc 100644 --- a/src/_data/codebase/v2_4/mrg/module-offline-shipping.yml +++ b/src/_data/codebase/v2_4/mrg/module-offline-shipping.yml @@ -23,7 +23,7 @@ content: "This module implements the shipping methods which do not involve a dir more information about a layout in Magento 2, see the [Layout documentation](https://devdocs.magento.com/guides/v2.4/frontend-dev-guide/layouts/layout-overview.html).\n\n### UI components\n\nThis module extends following ui components located in the `view/adminhtml/ui_component` directory:\n- `sales_rule_form`\n- `salesrulestaging_update_form`\n\nFor information - about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n## + about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n## Additional information\n\nYou can get more information about offline shipping methods in magento at the articles:\n- [How to configure Free Shipping](https://docs.magento.com/user-guide/shipping/shipping-free.html)\n- [How to configure Flat Rate](https://docs.magento.com/user-guide/shipping/shipping-flat-rate.html)\n- diff --git a/src/_data/codebase/v2_4/mrg/module-persistent.yml b/src/_data/codebase/v2_4/mrg/module-persistent.yml index 9234017ea2a..0011a59a954 100644 --- a/src/_data/codebase/v2_4/mrg/module-persistent.yml +++ b/src/_data/codebase/v2_4/mrg/module-persistent.yml @@ -42,7 +42,7 @@ content: |- - `persistent_session_expired` event in the `\Magento\Persistent\Observer\CheckExpirePersistentQuoteObserver::execute` method - For information about an event in Magento 2, see [Events and observers](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/events-and-observers.html#events). + For information about an event in Magento 2, see [Events and observers](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/events-and-observers.html#events). ### Layouts @@ -59,4 +59,4 @@ content: |- Cron group configuration can be set at `etc/crontab.xml`: - `persistent_clear_expired` - clear expired persistent sessions - [Learn how to configure and run cron in Magento.](http://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html). + [Learn how to configure and run cron in Magento.](https://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html). diff --git a/src/_data/codebase/v2_4/mrg/module-product-alert.yml b/src/_data/codebase/v2_4/mrg/module-product-alert.yml index db9f69b9ae0..8c05675d2cd 100644 --- a/src/_data/codebase/v2_4/mrg/module-product-alert.yml +++ b/src/_data/codebase/v2_4/mrg/module-product-alert.yml @@ -21,4 +21,4 @@ content: "This module enables product alerts, which allow customers to sign up f Additional information\n\nMore information can get at articles:\n- [Product Alerts](https://docs.magento.com/user-guide/catalog/inventory-product-alerts.html)\n- [Product Alert Run Settings](https://docs.magento.com/user-guide/catalog/inventory-product-alert-run-settings.html)\n\n### Cron options\n\nCron group configuration can be set at `etc/crontab.xml`:\n- `catalog_product_alert` - - send product alerts to customers\n\n[Learn how to configure and run cron in Magento.](http://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html)." + - send product alerts to customers\n\n[Learn how to configure and run cron in Magento.](https://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html)." diff --git a/src/_data/codebase/v2_4/mrg/module-product-video.yml b/src/_data/codebase/v2_4/mrg/module-product-video.yml index 4b6a45c86eb..abd5dd911dd 100644 --- a/src/_data/codebase/v2_4/mrg/module-product-video.yml +++ b/src/_data/codebase/v2_4/mrg/module-product-video.yml @@ -38,7 +38,7 @@ content: |- This module extends following ui components located in the `view/adminhtml/ui_component` directory: - `product_form` - For information about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html). + For information about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html). ## Additional information diff --git a/src/_data/codebase/v2_4/mrg/module-quote.yml b/src/_data/codebase/v2_4/mrg/module-quote.yml index 8a3fb1b9c62..7533908b21e 100644 --- a/src/_data/codebase/v2_4/mrg/module-quote.yml +++ b/src/_data/codebase/v2_4/mrg/module-quote.yml @@ -70,7 +70,7 @@ content: "This module provides customer cart management functionality.\n\n## Ins class)\n - `store_id` is a store ID (`int` type)\n\n- `sales_quote_item_collection_products_after_load` event in the `\\Magento\\Quote\\Model\\QuoteManagement::_assignProducts` method. Parameters:\n - `collection` is a product collection object (`\\Magento\\Catalog\\Model\\ResourceModel\\Product\\Collection` - class)\n\nFor information about an event in Magento 2, see [Events and observers](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/events-and-observers.html#events). + class)\n\nFor information about an event in Magento 2, see [Events and observers](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/events-and-observers.html#events). \ \n\n### Public APIs\n\n#### Data\n\n- `\\Magento\\Quote\\Api\\Data\\AddressAdditionalDataInterface`\n \ - provides additional data with quote address information\n\n- `\\Magento\\Quote\\Api\\Data\\AddressInterface`\n \ - quote address data\n\n- `\\Magento\\Quote\\Api\\Data\\CartInterface`\n - @@ -148,4 +148,4 @@ content: "This module provides customer cart management functionality.\n\n## Ins \ - retrieves all methods for supplied shipping data\n \n- `\\Magento\\Quote\\Model\\MaskedQuoteIdToQuoteIdInterface`\n \ - converts masked quote ID to the quote ID (entity ID)\n\n- `\\Magento\\Quote\\Model\\QuoteIdToMaskedQuoteIdInterface`\n \ - converts quote ID to the masked quote ID\n \nFor information about a public - API in Magento 2, see [Public interfaces & APIs](http://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html)." + API in Magento 2, see [Public interfaces & APIs](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/api-concepts.html)." diff --git a/src/_data/codebase/v2_4/mrg/module-release-notification.yml b/src/_data/codebase/v2_4/mrg/module-release-notification.yml index 1168c9bf1c2..d85be4f4761 100644 --- a/src/_data/codebase/v2_4/mrg/module-release-notification.yml +++ b/src/_data/codebase/v2_4/mrg/module-release-notification.yml @@ -14,7 +14,7 @@ content: "This module serves to provide a notification delivery platform for dis enables you to override the functionality of the Magento_ReleaseNotification module.\n\n### UI components\n\nYou can extend release notification updates using the configuration files located in the `view/adminhtml/ui_component` directory:\n- `release_notification`\n\nFor - information about a UI component in Magento 2, see [Overview of UI components](http://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n## + information about a UI component in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html).\n\n## Additional information\n\n### Purpose and Content\n\n* Provides a method of notifying administrators of changes, features, and functionality being introduced in a Magento release.\n* Displays a modal containing a high level overview of the features included diff --git a/src/_data/codebase/v2_4/mrg/module-sitemap.yml b/src/_data/codebase/v2_4/mrg/module-sitemap.yml index 9f4a2b1d69c..4084855a255 100644 --- a/src/_data/codebase/v2_4/mrg/module-sitemap.yml +++ b/src/_data/codebase/v2_4/mrg/module-sitemap.yml @@ -2,4 +2,4 @@ title: Sitemap content: |- The Sitemap module allows managing the Magento application sitemap and - [sitemap.xml](http://en.wikipedia.org/wiki/Sitemaps) for searching engines. + [sitemap.xml](https://en.wikipedia.org/wiki/Sitemaps) for searching engines. diff --git a/src/_data/codebase/v2_4/open-source/bin-magento.json b/src/_data/codebase/v2_4/open-source/bin-magento.json index ea64570f21b..d2b93e266d3 100644 --- a/src/_data/codebase/v2_4/open-source/bin-magento.json +++ b/src/_data/codebase/v2_4/open-source/bin-magento.json @@ -1,7 +1,7 @@ { "application": { "name": "Magento CLI", - "version": "2.4.4" + "version": "2.4.5" }, "commands": [ { @@ -147,6 +147,350 @@ }, "hidden": false }, + { + "name": "admin:adobe-ims:disable", + "usage": [ + "admin:adobe-ims:disable" + ], + "description": "Disable Adobe IMS Module", + "help": "Disable Adobe IMS Module", + "definition": { + "arguments": [], + "options": { + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, + { + "name": "admin:adobe-ims:enable", + "usage": [ + "admin:adobe-ims:enable [-o|--organization-id [ORGANIZATION-ID]] [-c|--client-id [CLIENT-ID]] [-s|--client-secret [CLIENT-SECRET]] [-t|--2fa [2FA]]" + ], + "description": "Enable Adobe IMS Module.", + "help": "Enable Adobe IMS Module.", + "definition": { + "arguments": [], + "options": { + "organization-id": { + "name": "--organization-id", + "shortcut": "-o", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Set Organization ID for Adobe IMS configuration. Required when enabling the module", + "default": null + }, + "client-id": { + "name": "--client-id", + "shortcut": "-c", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Set the client ID for Adobe IMS configuration. Required when enabling the module", + "default": null + }, + "client-secret": { + "name": "--client-secret", + "shortcut": "-s", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Set the client Secret for Adobe IMS configuration. Required when enabling the module", + "default": null + }, + "2fa": { + "name": "--2fa", + "shortcut": "-t", + "accept_value": true, + "is_value_required": false, + "is_multiple": false, + "description": "Check if 2FA is enabled for Organization in Adobe Admin Console. Required when enabling the module", + "default": null + }, + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, + { + "name": "admin:adobe-ims:info", + "usage": [ + "admin:adobe-ims:info" + ], + "description": "Information of Adobe IMS Module configuration", + "help": "Information of Adobe IMS Module configuration", + "definition": { + "arguments": [], + "options": { + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, + { + "name": "admin:adobe-ims:status", + "usage": [ + "admin:adobe-ims:status" + ], + "description": "Status of Adobe IMS Module", + "help": "Status of Adobe IMS Module", + "definition": { + "arguments": [], + "options": { + "help": { + "name": "--help", + "shortcut": "-h", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this help message", + "default": false + }, + "quiet": { + "name": "--quiet", + "shortcut": "-q", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not output any message", + "default": false + }, + "verbose": { + "name": "--verbose", + "shortcut": "-v|-vv|-vvv", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug", + "default": false + }, + "version": { + "name": "--version", + "shortcut": "-V", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Display this application version", + "default": false + }, + "ansi": { + "name": "--ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Force ANSI output", + "default": false + }, + "no-ansi": { + "name": "--no-ansi", + "shortcut": "", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Disable ANSI output", + "default": false + }, + "no-interaction": { + "name": "--no-interaction", + "shortcut": "-n", + "accept_value": false, + "is_value_required": false, + "is_multiple": false, + "description": "Do not ask any interactive question", + "default": false + } + } + }, + "hidden": false + }, { "name": "admin:user:create", "usage": [ @@ -6910,7 +7254,7 @@ { "name": "newrelic:create:deploy-marker", "usage": [ - "newrelic:create:deploy-marker []" + "newrelic:create:deploy-marker [ []]" ], "description": "Check the deploy queue for entries and create an appropriate deploy marker.", "help": "Check the deploy queue for entries and create an appropriate deploy marker.", @@ -6936,6 +7280,13 @@ "is_array": false, "description": "Deployment User", "default": null + }, + "revision": { + "name": "revision", + "is_required": false, + "is_array": false, + "description": "Revision", + "default": null } }, "options": { @@ -8079,7 +8430,7 @@ { "name": "setup:config:set", "usage": [ - "setup:config:set [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--magento-init-params MAGENTO-INIT-PARAMS]" + "setup:config:set [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--queue-default-connection QUEUE-DEFAULT-CONNECTION] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--magento-init-params MAGENTO-INIT-PARAMS]" ], "description": "Creates or modifies the deployment configuration", "help": "Creates or modifies the deployment configuration", @@ -8257,6 +8608,15 @@ "description": "Should consumers wait for a message from the queue? 1 - Yes, 0 - No", "default": null }, + "queue-default-connection": { + "name": "--queue-default-connection", + "shortcut": "", + "accept_value": true, + "is_value_required": true, + "is_multiple": false, + "description": "Message queues default connection. Can be 'db', 'amqp' or a custom queue system.The queue system must be installed and configured, otherwise messages won't be processed correctly.", + "default": null + }, "key": { "name": "--key", "shortcut": "", @@ -9425,7 +9785,7 @@ { "name": "setup:install", "usage": [ - "setup:install [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--base-url BASE-URL] [--language LANGUAGE] [--timezone TIMEZONE] [--currency CURRENCY] [--use-rewrites USE-REWRITES] [--use-secure USE-SECURE] [--base-url-secure BASE-URL-SECURE] [--use-secure-admin USE-SECURE-ADMIN] [--admin-use-security-key ADMIN-USE-SECURITY-KEY] [--admin-user [ADMIN-USER]] [--admin-password [ADMIN-PASSWORD]] [--admin-email [ADMIN-EMAIL]] [--admin-firstname [ADMIN-FIRSTNAME]] [--admin-lastname [ADMIN-LASTNAME]] [--search-engine SEARCH-ENGINE] [--elasticsearch-host ELASTICSEARCH-HOST] [--elasticsearch-port ELASTICSEARCH-PORT] [--elasticsearch-enable-auth ELASTICSEARCH-ENABLE-AUTH] [--elasticsearch-username ELASTICSEARCH-USERNAME] [--elasticsearch-password ELASTICSEARCH-PASSWORD] [--elasticsearch-index-prefix ELASTICSEARCH-INDEX-PREFIX] [--elasticsearch-timeout ELASTICSEARCH-TIMEOUT] [--cleanup-database] [--sales-order-increment-prefix SALES-ORDER-INCREMENT-PREFIX] [--use-sample-data] [--enable-modules [ENABLE-MODULES]] [--disable-modules [DISABLE-MODULES]] [--convert-old-scripts [CONVERT-OLD-SCRIPTS]] [-i|--interactive] [--safe-mode [SAFE-MODE]] [--data-restore [DATA-RESTORE]] [--dry-run [DRY-RUN]] [--magento-init-params MAGENTO-INIT-PARAMS]" + "setup:install [--backend-frontname BACKEND-FRONTNAME] [--enable-debug-logging ENABLE-DEBUG-LOGGING] [--enable-syslog-logging ENABLE-SYSLOG-LOGGING] [--remote-storage-driver REMOTE-STORAGE-DRIVER] [--remote-storage-prefix REMOTE-STORAGE-PREFIX] [--remote-storage-endpoint REMOTE-STORAGE-ENDPOINT] [--remote-storage-bucket REMOTE-STORAGE-BUCKET] [--remote-storage-region REMOTE-STORAGE-REGION] [--remote-storage-key REMOTE-STORAGE-KEY] [--remote-storage-secret REMOTE-STORAGE-SECRET] [--remote-storage-path-style REMOTE-STORAGE-PATH-STYLE] [--amqp-host AMQP-HOST] [--amqp-port AMQP-PORT] [--amqp-user AMQP-USER] [--amqp-password AMQP-PASSWORD] [--amqp-virtualhost AMQP-VIRTUALHOST] [--amqp-ssl AMQP-SSL] [--amqp-ssl-options AMQP-SSL-OPTIONS] [--consumers-wait-for-messages CONSUMERS-WAIT-FOR-MESSAGES] [--queue-default-connection QUEUE-DEFAULT-CONNECTION] [--key KEY] [--db-host DB-HOST] [--db-name DB-NAME] [--db-user DB-USER] [--db-engine DB-ENGINE] [--db-password DB-PASSWORD] [--db-prefix DB-PREFIX] [--db-model DB-MODEL] [--db-init-statements DB-INIT-STATEMENTS] [-s|--skip-db-validation] [--http-cache-hosts HTTP-CACHE-HOSTS] [--db-ssl-key DB-SSL-KEY] [--db-ssl-cert DB-SSL-CERT] [--db-ssl-ca DB-SSL-CA] [--db-ssl-verify] [--session-save SESSION-SAVE] [--session-save-redis-host SESSION-SAVE-REDIS-HOST] [--session-save-redis-port SESSION-SAVE-REDIS-PORT] [--session-save-redis-password SESSION-SAVE-REDIS-PASSWORD] [--session-save-redis-timeout SESSION-SAVE-REDIS-TIMEOUT] [--session-save-redis-persistent-id SESSION-SAVE-REDIS-PERSISTENT-ID] [--session-save-redis-db SESSION-SAVE-REDIS-DB] [--session-save-redis-compression-threshold SESSION-SAVE-REDIS-COMPRESSION-THRESHOLD] [--session-save-redis-compression-lib SESSION-SAVE-REDIS-COMPRESSION-LIB] [--session-save-redis-log-level SESSION-SAVE-REDIS-LOG-LEVEL] [--session-save-redis-max-concurrency SESSION-SAVE-REDIS-MAX-CONCURRENCY] [--session-save-redis-break-after-frontend SESSION-SAVE-REDIS-BREAK-AFTER-FRONTEND] [--session-save-redis-break-after-adminhtml SESSION-SAVE-REDIS-BREAK-AFTER-ADMINHTML] [--session-save-redis-first-lifetime SESSION-SAVE-REDIS-FIRST-LIFETIME] [--session-save-redis-bot-first-lifetime SESSION-SAVE-REDIS-BOT-FIRST-LIFETIME] [--session-save-redis-bot-lifetime SESSION-SAVE-REDIS-BOT-LIFETIME] [--session-save-redis-disable-locking SESSION-SAVE-REDIS-DISABLE-LOCKING] [--session-save-redis-min-lifetime SESSION-SAVE-REDIS-MIN-LIFETIME] [--session-save-redis-max-lifetime SESSION-SAVE-REDIS-MAX-LIFETIME] [--session-save-redis-sentinel-master SESSION-SAVE-REDIS-SENTINEL-MASTER] [--session-save-redis-sentinel-servers SESSION-SAVE-REDIS-SENTINEL-SERVERS] [--session-save-redis-sentinel-verify-master SESSION-SAVE-REDIS-SENTINEL-VERIFY-MASTER] [--session-save-redis-sentinel-connect-retries SESSION-SAVE-REDIS-SENTINEL-CONNECT-RETRIES] [--cache-backend CACHE-BACKEND] [--cache-backend-redis-server CACHE-BACKEND-REDIS-SERVER] [--cache-backend-redis-db CACHE-BACKEND-REDIS-DB] [--cache-backend-redis-port CACHE-BACKEND-REDIS-PORT] [--cache-backend-redis-password CACHE-BACKEND-REDIS-PASSWORD] [--cache-backend-redis-compress-data CACHE-BACKEND-REDIS-COMPRESS-DATA] [--cache-backend-redis-compression-lib CACHE-BACKEND-REDIS-COMPRESSION-LIB] [--cache-id-prefix CACHE-ID-PREFIX] [--allow-parallel-generation] [--page-cache PAGE-CACHE] [--page-cache-redis-server PAGE-CACHE-REDIS-SERVER] [--page-cache-redis-db PAGE-CACHE-REDIS-DB] [--page-cache-redis-port PAGE-CACHE-REDIS-PORT] [--page-cache-redis-password PAGE-CACHE-REDIS-PASSWORD] [--page-cache-redis-compress-data PAGE-CACHE-REDIS-COMPRESS-DATA] [--page-cache-redis-compression-lib PAGE-CACHE-REDIS-COMPRESSION-LIB] [--page-cache-id-prefix PAGE-CACHE-ID-PREFIX] [--lock-provider LOCK-PROVIDER] [--lock-db-prefix LOCK-DB-PREFIX] [--lock-zookeeper-host LOCK-ZOOKEEPER-HOST] [--lock-zookeeper-path LOCK-ZOOKEEPER-PATH] [--lock-file-path LOCK-FILE-PATH] [--document-root-is-pub DOCUMENT-ROOT-IS-PUB] [--base-url BASE-URL] [--language LANGUAGE] [--timezone TIMEZONE] [--currency CURRENCY] [--use-rewrites USE-REWRITES] [--use-secure USE-SECURE] [--base-url-secure BASE-URL-SECURE] [--use-secure-admin USE-SECURE-ADMIN] [--admin-use-security-key ADMIN-USE-SECURITY-KEY] [--admin-user [ADMIN-USER]] [--admin-password [ADMIN-PASSWORD]] [--admin-email [ADMIN-EMAIL]] [--admin-firstname [ADMIN-FIRSTNAME]] [--admin-lastname [ADMIN-LASTNAME]] [--search-engine SEARCH-ENGINE] [--elasticsearch-host ELASTICSEARCH-HOST] [--elasticsearch-port ELASTICSEARCH-PORT] [--elasticsearch-enable-auth ELASTICSEARCH-ENABLE-AUTH] [--elasticsearch-username ELASTICSEARCH-USERNAME] [--elasticsearch-password ELASTICSEARCH-PASSWORD] [--elasticsearch-index-prefix ELASTICSEARCH-INDEX-PREFIX] [--elasticsearch-timeout ELASTICSEARCH-TIMEOUT] [--cleanup-database] [--sales-order-increment-prefix SALES-ORDER-INCREMENT-PREFIX] [--use-sample-data] [--enable-modules [ENABLE-MODULES]] [--disable-modules [DISABLE-MODULES]] [--convert-old-scripts [CONVERT-OLD-SCRIPTS]] [-i|--interactive] [--safe-mode [SAFE-MODE]] [--data-restore [DATA-RESTORE]] [--dry-run [DRY-RUN]] [--magento-init-params MAGENTO-INIT-PARAMS]" ], "description": "Installs the Magento application", "help": "Installs the Magento application", @@ -9603,6 +9963,15 @@ "description": "Should consumers wait for a message from the queue? 1 - Yes, 0 - No", "default": null }, + "queue-default-connection": { + "name": "--queue-default-connection", + "shortcut": "", + "accept_value": true, + "is_value_required": true, + "is_multiple": false, + "description": "Message queues default connection. Can be 'db', 'amqp' or a custom queue system.The queue system must be installed and configured, otherwise messages won't be processed correctly.", + "default": null + }, "key": { "name": "--key", "shortcut": "", @@ -11813,6 +12182,10 @@ { "id": "admin", "commands": [ + "admin:adobe-ims:disable", + "admin:adobe-ims:enable", + "admin:adobe-ims:info", + "admin:adobe-ims:status", "admin:user:create", "admin:user:unlock" ] diff --git a/src/_data/codebase/v2_4/open-source/composer_lock.json b/src/_data/codebase/v2_4/open-source/composer_lock.json index 706d0e839f5..cbb992e40de 100644 --- a/src/_data/codebase/v2_4/open-source/composer_lock.json +++ b/src/_data/codebase/v2_4/open-source/composer_lock.json @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e4faae4ed2c04821cd438e8b4f680e52", + "content-hash": "32ccde13a449d0a28ed622c7449000fd", "packages": [ { "name": "2tvenom/cborencode", @@ -143,16 +143,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.219.1", + "version": "3.232.3", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "b35b86022c76c7f6b13d3f1be35cb317f582e253" + "reference": "96fae7f4b2ab11a3eb3fceacef7cb4b12e46b27c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/b35b86022c76c7f6b13d3f1be35cb317f582e253", - "reference": "b35b86022c76c7f6b13d3f1be35cb317f582e253", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/96fae7f4b2ab11a3eb3fceacef7cb4b12e46b27c", + "reference": "96fae7f4b2ab11a3eb3fceacef7cb4b12e46b27c", "shasum": "" }, "require": { @@ -160,9 +160,9 @@ "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "guzzlehttp/guzzle": "^5.3.3 || ^6.2.1 || ^7.0", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", "guzzlehttp/promises": "^1.4.0", - "guzzlehttp/psr7": "^1.7.0 || ^2.1.1", + "guzzlehttp/psr7": "^1.8.5 || ^2.3", "mtdowling/jmespath.php": "^2.6", "php": ">=5.5" }, @@ -170,6 +170,7 @@ "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", + "composer/composer": "^1.10.22", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", @@ -228,9 +229,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.219.1" + "source": "https://github.com/aws/aws-sdk-php/tree/3.232.3" }, - "time": "2022-04-11T18:15:54+00:00" + "time": "2022-08-08T18:19:49+00:00" }, { "name": "bacon/bacon-qr-code", @@ -464,16 +465,16 @@ }, { "name": "brick/varexporter", - "version": "0.3.5", + "version": "0.3.7", "source": { "type": "git", "url": "https://github.com/brick/varexporter.git", - "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518" + "reference": "3e263cd718d242594c52963760fee2059fd5833c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/varexporter/zipball/05241f28dfcba2b51b11e2d750e296316ebbe518", - "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518", + "url": "https://api.github.com/repos/brick/varexporter/zipball/3e263cd718d242594c52963760fee2059fd5833c", + "reference": "3e263cd718d242594c52963760fee2059fd5833c", "shasum": "" }, "require": { @@ -483,7 +484,7 @@ "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^8.5 || ^9.0", - "vimeo/psalm": "4.4.1" + "vimeo/psalm": "4.23.0" }, "type": "library", "autoload": { @@ -501,9 +502,15 @@ ], "support": { "issues": "https://github.com/brick/varexporter/issues", - "source": "https://github.com/brick/varexporter/tree/0.3.5" + "source": "https://github.com/brick/varexporter/tree/0.3.7" }, - "time": "2021-02-10T13:53:07+00:00" + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2022-06-29T23:37:57+00:00" }, { "name": "christian-riesen/base32", @@ -643,20 +650,23 @@ }, { "name": "colinmollenhour/credis", - "version": "v1.12.1", + "version": "v1.13.0", "source": { "type": "git", "url": "https://github.com/colinmollenhour/credis.git", - "reference": "c27faa11724229986335c23f4b6d0f1d8d6547fb" + "reference": "afec8e58ec93d2291c127fa19709a048f28641e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/c27faa11724229986335c23f4b6d0f1d8d6547fb", - "reference": "c27faa11724229986335c23f4b6d0f1d8d6547fb", + "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/afec8e58ec93d2291c127fa19709a048f28641e5", + "reference": "afec8e58ec93d2291c127fa19709a048f28641e5", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=5.6.0" + }, + "suggest": { + "ext-redis": "Improved performance for communicating with redis" }, "type": "library", "autoload": { @@ -681,9 +691,9 @@ "homepage": "https://github.com/colinmollenhour/credis", "support": { "issues": "https://github.com/colinmollenhour/credis/issues", - "source": "https://github.com/colinmollenhour/credis/tree/v1.12.1" + "source": "https://github.com/colinmollenhour/credis/tree/v1.13.0" }, - "time": "2020-11-06T16:09:14+00:00" + "time": "2022-04-07T14:57:22+00:00" }, { "name": "colinmollenhour/php-redis-session-abstract", @@ -731,16 +741,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.3.1", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b" + "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", - "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/30897edbfb15e784fe55587b4f73ceefd3c4d98c", + "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c", "shasum": "" }, "require": { @@ -787,7 +797,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.1" + "source": "https://github.com/composer/ca-bundle/tree/1.3.3" }, "funding": [ { @@ -803,20 +813,20 @@ "type": "tidelift" } ], - "time": "2021-10-28T20:44:15+00:00" + "time": "2022-07-20T07:14:26+00:00" }, { "name": "composer/composer", - "version": "2.2.11", + "version": "2.2.17", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "2f5bcf0480c13b4fa1ac490aa9344e4402507538" + "reference": "a8ab5070fb99396e4710baee286478ad697724c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/2f5bcf0480c13b4fa1ac490aa9344e4402507538", - "reference": "2f5bcf0480c13b4fa1ac490aa9344e4402507538", + "url": "https://api.github.com/repos/composer/composer/zipball/a8ab5070fb99396e4710baee286478ad697724c2", + "reference": "a8ab5070fb99396e4710baee286478ad697724c2", "shasum": "" }, "require": { @@ -886,7 +896,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.2.11" + "source": "https://github.com/composer/composer/tree/2.2.17" }, "funding": [ { @@ -902,7 +912,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T20:00:52+00:00" + "time": "2022-07-13T13:27:38+00:00" }, { "name": "composer/metadata-minifier", @@ -1127,16 +1137,16 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.6", + "version": "1.5.7", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "a30d487169d799745ca7280bc90fdfa693536901" + "reference": "c848241796da2abf65837d51dce1fae55a960149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a30d487169d799745ca7280bc90fdfa693536901", - "reference": "a30d487169d799745ca7280bc90fdfa693536901", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", + "reference": "c848241796da2abf65837d51dce1fae55a960149", "shasum": "" }, "require": { @@ -1187,7 +1197,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.6" + "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" }, "funding": [ { @@ -1203,7 +1213,7 @@ "type": "tidelift" } ], - "time": "2021-11-18T10:14:14+00:00" + "time": "2022-05-23T07:37:50+00:00" }, { "name": "composer/xdebug-handler", @@ -1320,23 +1330,23 @@ }, { "name": "elasticsearch/elasticsearch", - "version": "v7.16.0", + "version": "v7.17.0", "source": { "type": "git", "url": "https://github.com/elastic/elasticsearch-php.git", - "reference": "f87f93f71f564d4bbdc5f008d296d1c37d828e10" + "reference": "1890f9d7fde076b5a3ddcf579a802af05b2e781b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/f87f93f71f564d4bbdc5f008d296d1c37d828e10", - "reference": "f87f93f71f564d4bbdc5f008d296d1c37d828e10", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/1890f9d7fde076b5a3ddcf579a802af05b2e781b", + "reference": "1890f9d7fde076b5a3ddcf579a802af05b2e781b", "shasum": "" }, "require": { "ext-json": ">=1.3.7", "ezimuel/ringphp": "^1.1.2", "php": "^7.3 || ^8.0", - "psr/log": "^1|^2" + "psr/log": "^1|^2|^3" }, "require-dev": { "ext-yaml": "*", @@ -1381,22 +1391,22 @@ ], "support": { "issues": "https://github.com/elastic/elasticsearch-php/issues", - "source": "https://github.com/elastic/elasticsearch-php/tree/v7.16.0" + "source": "https://github.com/elastic/elasticsearch-php/tree/v7.17.0" }, - "time": "2021-12-09T20:04:01+00:00" + "time": "2022-02-03T13:40:04+00:00" }, { "name": "endroid/qr-code", - "version": "4.4.8", + "version": "4.4.9", "source": { "type": "git", "url": "https://github.com/endroid/qr-code.git", - "reference": "9109eb7790ece1d46b1ab40eb7f375bbd6e7cb5d" + "reference": "bf087fa1e93a1b7310e2d94d187e26ae51db199d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/qr-code/zipball/9109eb7790ece1d46b1ab40eb7f375bbd6e7cb5d", - "reference": "9109eb7790ece1d46b1ab40eb7f375bbd6e7cb5d", + "url": "https://api.github.com/repos/endroid/qr-code/zipball/bf087fa1e93a1b7310e2d94d187e26ae51db199d", + "reference": "bf087fa1e93a1b7310e2d94d187e26ae51db199d", "shasum": "" }, "require": { @@ -1447,7 +1457,7 @@ ], "support": { "issues": "https://github.com/endroid/qr-code/issues", - "source": "https://github.com/endroid/qr-code/tree/4.4.8" + "source": "https://github.com/endroid/qr-code/tree/4.4.9" }, "funding": [ { @@ -1455,7 +1465,7 @@ "type": "github" } ], - "time": "2022-04-06T09:39:20+00:00" + "time": "2022-05-10T07:25:08+00:00" }, { "name": "ezimuel/guzzlestreams", @@ -1567,6 +1577,57 @@ }, "time": "2021-11-16T11:51:30+00:00" }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.14.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "type": "library", + "autoload": { + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" + }, + "time": "2021-12-25T01:21:49+00:00" + }, { "name": "fgrosse/phpasn1", "version": "v2.4.0", @@ -1696,22 +1757,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.4.2", + "version": "7.4.5", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4" + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ac1ec1cd9b5624694c3a40be801d94137afb12b4", - "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.1", + "guzzlehttp/psr7": "^1.9 || ^2.4", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1800,7 +1861,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.2" + "source": "https://github.com/guzzle/guzzle/tree/7.4.5" }, "funding": [ { @@ -1816,7 +1877,7 @@ "type": "tidelift" } ], - "time": "2022-03-20T14:16:28+00:00" + "time": "2022-06-20T22:16:13+00:00" }, { "name": "guzzlehttp/promises", @@ -1904,16 +1965,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.2.1", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2" + "reference": "13388f00956b1503577598873fffb5ae994b5737" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2", - "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737", + "reference": "13388f00956b1503577598873fffb5ae994b5737", "shasum": "" }, "require": { @@ -1937,7 +1998,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "2.4-dev" } }, "autoload": { @@ -1999,7 +2060,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.2.1" + "source": "https://github.com/guzzle/psr7/tree/2.4.0" }, "funding": [ { @@ -2015,20 +2076,20 @@ "type": "tidelift" } ], - "time": "2022-03-20T21:55:58+00:00" + "time": "2022-06-20T21:43:11+00:00" }, { "name": "justinrainbow/json-schema", - "version": "5.2.11", + "version": "5.2.12", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa" + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", "shasum": "" }, "require": { @@ -2083,41 +2144,41 @@ ], "support": { "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.11" + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" }, - "time": "2021-07-22T09:24:00+00:00" + "time": "2022-04-13T08:02:27+00:00" }, { "name": "laminas/laminas-captcha", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-captcha.git", - "reference": "b07e499a7df73795768aa89e0138757a7ddb9195" + "reference": "debd6783ce593cb2e4cf74c3028baf1730918d85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/b07e499a7df73795768aa89e0138757a7ddb9195", - "reference": "b07e499a7df73795768aa89e0138757a7ddb9195", + "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/debd6783ce593cb2e4cf74c3028baf1730918d85", + "reference": "debd6783ce593cb2e4cf74c3028baf1730918d85", "shasum": "" }, "require": { - "laminas/laminas-math": "^2.7 || ^3.0", - "laminas/laminas-recaptcha": "^3.0", + "laminas/laminas-recaptcha": "^3.4.0", "laminas/laminas-session": "^2.12", - "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-text": "^2.8", - "laminas/laminas-validator": "^2.14", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-stdlib": "^3.10.1", + "laminas/laminas-text": "^2.9.0", + "laminas/laminas-validator": "^2.19.0", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-captcha": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.1.4", - "phpunit/phpunit": "^9.4.3", - "psalm/plugin-phpunit": "^0.15.1", - "vimeo/psalm": "^4.6" + "ext-gd": "*", + "laminas/laminas-coding-standard": "~2.3.0", + "phpunit/phpunit": "^9.5.21", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-i18n-resources": "Translations of captcha messages" @@ -2152,20 +2213,20 @@ "type": "community_bridge" } ], - "time": "2022-04-07T10:41:09+00:00" + "time": "2022-07-24T15:35:33+00:00" }, { "name": "laminas/laminas-code", - "version": "4.5.1", + "version": "4.5.2", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e" + "reference": "da01fb74c08f37e20e7ae49f1e3ee09aa401ebad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/6fd96d4d913571a2cd056a27b123fa28cb90ac4e", - "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/da01fb74c08f37e20e7ae49f1e3ee09aa401ebad", + "reference": "da01fb74c08f37e20e7ae49f1e3ee09aa401ebad", "shasum": "" }, "require": { @@ -2218,7 +2279,7 @@ "type": "community_bridge" } ], - "time": "2021-12-19T18:06:55+00:00" + "time": "2022-06-06T11:26:02+00:00" }, { "name": "laminas/laminas-config", @@ -2414,37 +2475,38 @@ }, { "name": "laminas/laminas-di", - "version": "3.4.0", + "version": "3.9.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-di.git", - "reference": "fc8a5547db10908a25b03ed16452d22318b75090" + "reference": "9b7091c50587f7ded53519d229421a02532feb9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-di/zipball/fc8a5547db10908a25b03ed16452d22318b75090", - "reference": "fc8a5547db10908a25b03ed16452d22318b75090", + "url": "https://api.github.com/repos/laminas/laminas-di/zipball/9b7091c50587f7ded53519d229421a02532feb9a", + "reference": "9b7091c50587f7ded53519d229421a02532feb9a", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^3.6", "php": ">=7.4, <8.2", "psr/container": "^1.1.1", - "psr/log": "^1.1.4" + "psr/log": "^1.1.4 || ^3.0.0" }, "conflict": { + "laminas/laminas-servicemanager": "<3.13.0", "laminas/laminas-servicemanager-di": "*", "phpspec/prophecy": "<1.9.0", "zendframework/zend-di": "*" }, "require-dev": { - "container-interop/container-interop": "^1.2.0", "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-servicemanager": "^3.7", + "laminas/laminas-servicemanager": "^3.12", "mikey179/vfsstream": "^1.6.10@alpha", + "phpbench/phpbench": "^1.2", "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^0.12.64", - "phpunit/phpunit": "^9.5.5" + "phpunit/phpunit": "^9.5.5", + "squizlabs/php_codesniffer": "^3.6" }, "suggest": { "laminas/laminas-servicemanager": "An IoC container without auto wiring capabilities" @@ -2486,37 +2548,37 @@ "type": "community_bridge" } ], - "time": "2022-02-26T15:43:05+00:00" + "time": "2022-06-30T12:29:26+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.9.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f" + "reference": "58af67282db37d24e584a837a94ee55b9c7552be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/58af67282db37d24e584a837a94ee55b9c7552be", + "reference": "58af67282db37d24e584a837a94ee55b9c7552be", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "ext-ctype": "*", + "ext-mbstring": "*", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { + "infection/infection": "^0.26.6", "laminas/laminas-coding-standard": "~2.3.0", - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.12.2", - "vimeo/psalm": "^3.16" - }, - "suggest": { - "ext-iconv": "*", - "ext-mbstring": "*" + "maglnet/composer-require-checker": "^3.8.0", + "phpunit/phpunit": "^9.5.18", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.22.0" }, "type": "library", "autoload": { @@ -2548,7 +2610,7 @@ "type": "community_bridge" } ], - "time": "2021-09-02T17:10:53+00:00" + "time": "2022-03-08T20:15:36+00:00" }, { "name": "laminas/laminas-eventmanager", @@ -2619,40 +2681,41 @@ }, { "name": "laminas/laminas-feed", - "version": "2.17.0", + "version": "2.18.2", "source": { "type": "git", "url": "https://github.com/laminas/laminas-feed.git", - "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0" + "reference": "a57fdb9df42950d5b7f052509fbdab0d081c6b6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/1ccb024ea615606ed1d676ba0fa3f22a398f3ac0", - "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0", + "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/a57fdb9df42950d5b7f052509fbdab0d081c6b6d", + "reference": "a57fdb9df42950d5b7f052509fbdab0d081c6b6d", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "laminas/laminas-escaper": "^2.9", + "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.3", "zendframework/zend-feed": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.7.2", - "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-cache": "^2.13.2 || ^3.1.3", + "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.0.0", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-db": "^2.13.3", "laminas/laminas-http": "^2.15", - "laminas/laminas-servicemanager": "^3.7", "laminas/laminas-validator": "^2.15", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.13.0", + "psalm/plugin-phpunit": "^0.17.0", "psr/http-message": "^1.0.1", - "vimeo/psalm": "^4.1" + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", @@ -2672,11 +2735,13 @@ "license": [ "BSD-3-Clause" ], - "description": "provides functionality for consuming RSS and Atom feeds", + "description": "provides functionality for creating and consuming RSS and Atom feeds", "homepage": "https://laminas.dev", "keywords": [ + "atom", "feed", - "laminas" + "laminas", + "rss" ], "support": { "chat": "https://laminas.dev/chat", @@ -2692,7 +2757,7 @@ "type": "community_bridge" } ], - "time": "2022-03-24T10:26:04+00:00" + "time": "2022-08-08T17:02:35+00:00" }, { "name": "laminas/laminas-http", @@ -2878,45 +2943,42 @@ }, { "name": "laminas/laminas-mail", - "version": "2.16.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mail.git", - "reference": "1ee1a384b96c8af29ecad9b3a7adc27a150ebc49" + "reference": "bf7504247d5a110d941efa8eb4815f5292a8dc56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/1ee1a384b96c8af29ecad9b3a7adc27a150ebc49", - "reference": "1ee1a384b96c8af29ecad9b3a7adc27a150ebc49", + "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/bf7504247d5a110d941efa8eb4815f5292a8dc56", + "reference": "bf7504247d5a110d941efa8eb4815f5292a8dc56", "shasum": "" }, "require": { "ext-iconv": "*", - "laminas/laminas-loader": "^2.8", + "laminas/laminas-loader": "^2.8.0", "laminas/laminas-mime": "^2.9.1", - "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-validator": "^2.15", - "php": "^7.3 || ~8.0.0 || ~8.1.0", - "symfony/polyfill-intl-idn": "^1.24.0", - "symfony/polyfill-mbstring": "^1.12.0", - "webmozart/assert": "^1.10" - }, - "conflict": { - "zendframework/zend-mail": "*" + "laminas/laminas-stdlib": "^3.11.0", + "laminas/laminas-validator": "^2.23.0", + "php": "~8.0.0 || ~8.1.0", + "symfony/polyfill-intl-idn": "^1.26.0", + "symfony/polyfill-mbstring": "^1.16.0", + "webmozart/assert": "^1.11.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-crypt": "^2.6 || ^3.4", - "laminas/laminas-db": "^2.13.3", - "laminas/laminas-servicemanager": "^3.7", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", - "symfony/process": "^5.3.7", - "vimeo/psalm": "^4.7" + "laminas/laminas-coding-standard": "~2.3.0", + "laminas/laminas-crypt": "^3.8.0", + "laminas/laminas-db": "^2.15.0", + "laminas/laminas-servicemanager": "^3.16.0", + "phpunit/phpunit": "^9.5.21", + "psalm/plugin-phpunit": "^0.17.0", + "symfony/process": "^6.0.11", + "vimeo/psalm": "^4.26.0" }, "suggest": { - "laminas/laminas-crypt": "Crammd5 support in SMTP Auth", - "laminas/laminas-servicemanager": "^2.7.10 || ^3.3.1 when using SMTP to deliver messages" + "laminas/laminas-crypt": "^3.8 Crammd5 support in SMTP Auth", + "laminas/laminas-servicemanager": "^3.16 when using SMTP to deliver messages" }, "type": "library", "extra": { @@ -2954,74 +3016,7 @@ "type": "community_bridge" } ], - "time": "2022-02-23T21:08:17+00:00" - }, - { - "name": "laminas/laminas-math", - "version": "3.5.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-math.git", - "reference": "146d8187ab247ae152e811a6704a953d43537381" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-math/zipball/146d8187ab247ae152e811a6704a953d43537381", - "reference": "146d8187ab247ae152e811a6704a953d43537381", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "conflict": { - "zendframework/zend-math": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^9.5.5" - }, - "suggest": { - "ext-bcmath": "If using the bcmath functionality", - "ext-gmp": "If using the gmp functionality" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev", - "dev-develop": "3.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Laminas\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Create cryptographically secure pseudo-random numbers, and manage big integers", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "math" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-math/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-math/issues", - "rss": "https://github.com/laminas/laminas-math/releases.atom", - "source": "https://github.com/laminas/laminas-math" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-12-06T02:02:07+00:00" + "time": "2022-08-06T12:27:12+00:00" }, { "name": "laminas/laminas-mime", @@ -3303,37 +3298,36 @@ }, { "name": "laminas/laminas-router", - "version": "3.5.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-router.git", - "reference": "44759e71620030c93d99e40b394fe9fff8f0beda" + "reference": "0227cc29f62583dd1ca50d17d117b832edaa8cd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-router/zipball/44759e71620030c93d99e40b394fe9fff8f0beda", - "reference": "44759e71620030c93d99e40b394fe9fff8f0beda", + "url": "https://api.github.com/repos/laminas/laminas-router/zipball/0227cc29f62583dd1ca50d17d117b832edaa8cd8", + "reference": "0227cc29f62583dd1ca50d17d117b832edaa8cd8", "shasum": "" }, "require": { - "container-interop/container-interop": "^1.2", "laminas/laminas-http": "^2.15", - "laminas/laminas-servicemanager": "^3.7", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-servicemanager": "^3.14.0", + "laminas/laminas-stdlib": "^3.10.1", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-router": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-i18n": "^2.7.4", + "laminas/laminas-i18n": "^2.15.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", - "vimeo/psalm": "^4.7" + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" }, "suggest": { - "laminas/laminas-i18n": "^2.7.4, if defining translatable HTTP path segments" + "laminas/laminas-i18n": "^2.15.0 if defining translatable HTTP path segments" }, "type": "library", "extra": { @@ -3371,7 +3365,7 @@ "type": "community_bridge" } ], - "time": "2021-10-13T16:02:43+00:00" + "time": "2022-07-18T01:39:51+00:00" }, { "name": "laminas/laminas-server", @@ -3436,16 +3430,16 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.11.2", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "8a1f4d53ec93b2e18174f6f186922ef44d11a75a" + "reference": "863c66733740cd36ebf5e700f4258ef2c68a2a24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/8a1f4d53ec93b2e18174f6f186922ef44d11a75a", - "reference": "8a1f4d53ec93b2e18174f6f186922ef44d11a75a", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/863c66733740cd36ebf5e700f4258ef2c68a2a24", + "reference": "863c66733740cd36ebf5e700f4258ef2c68a2a24", "shasum": "" }, "require": { @@ -3468,14 +3462,14 @@ "require-dev": { "composer/package-versions-deprecated": "^1.0", "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-container-config-test": "^0.6", + "laminas/laminas-container-config-test": "^0.7", "laminas/laminas-dependency-plugin": "^2.1.2", "mikey179/vfsstream": "^1.6.10@alpha", "ocramius/proxy-manager": "^2.11", "phpbench/phpbench": "^1.1", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.16.1", + "psalm/plugin-phpunit": "^0.17.0", "vimeo/psalm": "^4.8" }, "suggest": { @@ -3523,43 +3517,44 @@ "type": "community_bridge" } ], - "time": "2022-04-07T17:21:25+00:00" + "time": "2022-07-27T14:58:17+00:00" }, { "name": "laminas/laminas-session", - "version": "2.12.1", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-session.git", - "reference": "888c6a344e9a4c9f34ab6e09346640eac9be3fcf" + "reference": "9f8a6077dd22b3b253583b1be84ddd5bf6fa1ef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-session/zipball/888c6a344e9a4c9f34ab6e09346640eac9be3fcf", - "reference": "888c6a344e9a4c9f34ab6e09346640eac9be3fcf", + "url": "https://api.github.com/repos/laminas/laminas-session/zipball/9f8a6077dd22b3b253583b1be84ddd5bf6fa1ef4", + "reference": "9f8a6077dd22b3b253583b1be84ddd5bf6fa1ef4", "shasum": "" }, "require": { - "laminas/laminas-eventmanager": "^3.4", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-eventmanager": "^3.5", + "laminas/laminas-servicemanager": "^3.15.1", + "laminas/laminas-stdlib": "^3.10.1", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-session": "*" }, "require-dev": { - "container-interop/container-interop": "^1.1", - "laminas/laminas-cache": "3.0.x-dev", - "laminas/laminas-cache-storage-adapter-memory": "2.0.x-dev", - "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-cache": "^3.1.3", + "laminas/laminas-cache-storage-adapter-memory": "^2.0.0", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-db": "^2.13.4", "laminas/laminas-http": "^2.15", - "laminas/laminas-servicemanager": "^3.7", "laminas/laminas-validator": "^2.15", - "mongodb/mongodb": "v1.9.x-dev", + "mongodb/mongodb": "~1.12.0", "php-mock/php-mock-phpunit": "^1.1.2 || ^2.0", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.9" + "phpunit/phpunit": "^9.5.9", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component", @@ -3605,7 +3600,7 @@ "type": "community_bridge" } ], - "time": "2022-02-15T16:38:29+00:00" + "time": "2022-07-22T10:26:33+00:00" }, { "name": "laminas/laminas-soap", @@ -3677,16 +3672,16 @@ }, { "name": "laminas/laminas-stdlib", - "version": "3.7.1", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "bcd869e2fe88d567800057c1434f2380354fe325" + "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/bcd869e2fe88d567800057c1434f2380354fe325", - "reference": "bcd869e2fe88d567800057c1434f2380354fe325", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f", + "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f", "shasum": "" }, "require": { @@ -3699,7 +3694,7 @@ "laminas/laminas-coding-standard": "~2.3.0", "phpbench/phpbench": "^1.0", "phpunit/phpunit": "^9.3.7", - "psalm/plugin-phpunit": "^0.16.0", + "psalm/plugin-phpunit": "^0.17.0", "vimeo/psalm": "^4.7" }, "type": "library", @@ -3732,7 +3727,7 @@ "type": "community_bridge" } ], - "time": "2022-01-21T15:50:46+00:00" + "time": "2022-07-27T12:28:58+00:00" }, { "name": "laminas/laminas-text", @@ -3852,51 +3847,47 @@ }, { "name": "laminas/laminas-validator", - "version": "2.17.0", + "version": "2.23.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "bdd503adc83d814a5c94e598ea0eb9fc7ca56339" + "reference": "6d61b6cc3b222f13807a18d9247cdfb084958b03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/bdd503adc83d814a5c94e598ea0eb9fc7ca56339", - "reference": "bdd503adc83d814a5c94e598ea0eb9fc7ca56339", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/6d61b6cc3b222f13807a18d9247cdfb084958b03", + "reference": "6d61b6cc3b222f13807a18d9247cdfb084958b03", "shasum": "" }, "require": { - "container-interop/container-interop": "^1.1", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-servicemanager": "^3.12.0", + "laminas/laminas-stdlib": "^3.10", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, "conflict": { "zendframework/zend-validator": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.6.1", - "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-db": "^2.7", - "laminas/laminas-filter": "^2.6", + "laminas/laminas-filter": "^2.14.0", "laminas/laminas-http": "^2.14.2", - "laminas/laminas-i18n": "^2.6", - "laminas/laminas-math": "^2.6", - "laminas/laminas-servicemanager": "^2.7.11 || ^3.0.3", - "laminas/laminas-session": "^2.8", - "laminas/laminas-uri": "^2.7", + "laminas/laminas-i18n": "^2.15.0", + "laminas/laminas-session": "^2.12.1", + "laminas/laminas-uri": "^2.9.1", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.0", + "phpunit/phpunit": "^9.5.21", + "psalm/plugin-phpunit": "^0.17.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.0", - "vimeo/psalm": "^4.3" + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", "laminas/laminas-filter": "Laminas\\Filter component, required by the Digits validator", "laminas/laminas-i18n": "Laminas\\I18n component to allow translation of validation error messages", "laminas/laminas-i18n-resources": "Translations of validator messages", - "laminas/laminas-math": "Laminas\\Math component, required by the Csrf validator", "laminas/laminas-servicemanager": "Laminas\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", "laminas/laminas-session": "Laminas\\Session component, ^2.8; required by the Csrf validator", "laminas/laminas-uri": "Laminas\\Uri component, required by the Uri and Sitemap\\Loc validators", @@ -3938,60 +3929,63 @@ "type": "community_bridge" } ], - "time": "2022-03-08T18:16:51+00:00" + "time": "2022-07-27T19:17:59+00:00" }, { "name": "laminas/laminas-view", - "version": "2.14.2", + "version": "2.22.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-view.git", - "reference": "ced4133462b917c62d1efc26f982a62b5e319b4b" + "reference": "ae32391bdec45ca9fc73dd0882cd7301ab07ecf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-view/zipball/ced4133462b917c62d1efc26f982a62b5e319b4b", - "reference": "ced4133462b917c62d1efc26f982a62b5e319b4b", + "url": "https://api.github.com/repos/laminas/laminas-view/zipball/ae32391bdec45ca9fc73dd0882cd7301ab07ecf3", + "reference": "ae32391bdec45ca9fc73dd0882cd7301ab07ecf3", "shasum": "" }, "require": { + "container-interop/container-interop": "^1.2", + "ext-dom": "*", + "ext-filter": "*", "ext-json": "*", + "laminas/laminas-escaper": "^2.5", "laminas/laminas-eventmanager": "^3.4", - "laminas/laminas-json": "^2.6.1 || ^3.3", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-json": "^3.3", + "laminas/laminas-servicemanager": "^3.14.0", + "laminas/laminas-stdlib": "^3.10.1", + "php": "^7.4 || ~8.0.0 || ~8.1.0", + "psr/container": "^1 || ^2" }, "conflict": { + "container-interop/container-interop": "<1.2", "laminas/laminas-router": "<3.0.1", "laminas/laminas-servicemanager": "<3.3", + "laminas/laminas-session": "<2.12", "zendframework/zend-view": "*" }, "require-dev": { - "ext-dom": "*", "laminas/laminas-authentication": "^2.5", - "laminas/laminas-cache": "^2.6.1", - "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-coding-standard": "~2.3.0", "laminas/laminas-console": "^2.6", - "laminas/laminas-escaper": "^2.5", "laminas/laminas-feed": "^2.15", - "laminas/laminas-filter": "^2.6.1", + "laminas/laminas-filter": "^2.13.0", "laminas/laminas-http": "^2.15", "laminas/laminas-i18n": "^2.6", "laminas/laminas-modulemanager": "^2.7.1", - "laminas/laminas-mvc": "^2.7.14 || ^3.0", + "laminas/laminas-mvc": "^3.0", "laminas/laminas-mvc-i18n": "^1.1", - "laminas/laminas-mvc-plugin-flashmessenger": "^1.2", - "laminas/laminas-navigation": "^2.8.1", - "laminas/laminas-paginator": "^2.5", + "laminas/laminas-mvc-plugin-flashmessenger": "^1.5.0", + "laminas/laminas-navigation": "^2.13.1", + "laminas/laminas-paginator": "^2.11.0", "laminas/laminas-permissions-acl": "^2.6", "laminas/laminas-router": "^3.0.1", - "laminas/laminas-servicemanager": "^3.3", - "laminas/laminas-session": "^2.12", "laminas/laminas-uri": "^2.5", "phpspec/prophecy": "^1.12", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.16.1", + "psalm/plugin-phpunit": "^0.17.0", "vimeo/psalm": "^4.10" }, "suggest": { @@ -4042,20 +4036,20 @@ "type": "community_bridge" } ], - "time": "2021-11-17T12:05:00+00:00" + "time": "2022-07-19T09:25:16+00:00" }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.5.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab" + "reference": "e112dd2c099f4f6142c16fc65fda89a638e06885" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/7f049390b756d34ba5940a8fb47634fbb51f79ab", - "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/e112dd2c099f4f6142c16fc65fda89a638e06885", + "reference": "e112dd2c099f4f6142c16fc65fda89a638e06885", "shasum": "" }, "require": { @@ -4104,20 +4098,20 @@ "type": "community_bridge" } ], - "time": "2022-02-22T22:17:01+00:00" + "time": "2022-07-29T13:28:29+00:00" }, { "name": "league/flysystem", - "version": "2.3.2", + "version": "2.4.5", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "4b6da3e75b5e8eee53bb5ee46ded15a532843f80" + "reference": "9392c5f1df57d865c406ee65e5012d566686be12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4b6da3e75b5e8eee53bb5ee46ded15a532843f80", - "reference": "4b6da3e75b5e8eee53bb5ee46ded15a532843f80", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9392c5f1df57d865c406ee65e5012d566686be12", + "reference": "9392c5f1df57d865c406ee65e5012d566686be12", "shasum": "" }, "require": { @@ -4134,6 +4128,7 @@ "aws/aws-sdk-php": "^3.132.4", "composer/semver": "^3.0", "ext-fileinfo": "*", + "ext-ftp": "*", "friendsofphp/php-cs-fixer": "^3.2", "google/cloud-storage": "^1.23", "phpseclib/phpseclib": "^2.0", @@ -4173,7 +4168,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/2.3.2" + "source": "https://github.com/thephpleague/flysystem/tree/2.4.5" }, "funding": [ { @@ -4189,7 +4184,7 @@ "type": "tidelift" } ], - "time": "2021-11-28T20:19:08+00:00" + "time": "2022-04-25T18:39:39+00:00" }, { "name": "league/flysystem-aws-s3-v3", @@ -4248,16 +4243,16 @@ }, { "name": "league/mime-type-detection", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "3e4a35d756eedc67096f30240a68a3149120dae7" + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3e4a35d756eedc67096f30240a68a3149120dae7", - "reference": "3e4a35d756eedc67096f30240a68a3149120dae7", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", "shasum": "" }, "require": { @@ -4288,7 +4283,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.10.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" }, "funding": [ { @@ -4300,41 +4295,25 @@ "type": "tidelift" } ], - "time": "2022-04-11T12:49:04+00:00" - }, - { - "name": "magento/adobe-ims", - "version": "2.1.3", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/adobe-ims/magento-adobe-ims-2.1.3.0.zip", - "shasum": "d1c366fa17d053aac4d121c4839978db56e95e3a" - }, - "require": { - "magento/module-adobe-ims": "2.1.*", - "magento/module-adobe-ims-api": "2.1.*" - }, - "type": "metapackage", - "description": "Adobe IMS Integration" + "time": "2022-04-17T13:12:02+00:00" }, { "name": "magento/adobe-stock-integration", - "version": "2.1.3", + "version": "2.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/adobe-stock-integration/magento-adobe-stock-integration-2.1.3.0.zip", - "shasum": "3b8403c4f547a141c7f1c0e7646c108ecd4295d7" + "url": "https://repo.magento.com/archives/magento/adobe-stock-integration/magento-adobe-stock-integration-2.1.4.0.zip", + "shasum": "9262dee07c84dba5243b0c923ad31cfdf39d1f6f" }, "require": { - "magento/adobe-ims": "2.1.*", - "magento/module-adobe-stock-admin-ui": "1.3.*", - "magento/module-adobe-stock-asset": "1.3.*", - "magento/module-adobe-stock-asset-api": "2.0.*", - "magento/module-adobe-stock-client": "1.3.*", - "magento/module-adobe-stock-client-api": "2.1.*", - "magento/module-adobe-stock-image": "1.3.*", - "magento/module-adobe-stock-image-admin-ui": "1.3.*", - "magento/module-adobe-stock-image-api": "1.3.*" + "magento/module-adobe-stock-admin-ui": "1.3.2", + "magento/module-adobe-stock-asset": "1.3.1", + "magento/module-adobe-stock-asset-api": "2.0.1", + "magento/module-adobe-stock-client": "1.3.2", + "magento/module-adobe-stock-client-api": "2.1.2", + "magento/module-adobe-stock-image": "1.3.3", + "magento/module-adobe-stock-image-admin-ui": "1.3.3", + "magento/module-adobe-stock-image-api": "1.3.1" }, "type": "metapackage", "description": "Adobe Stock integration" @@ -4427,15 +4406,15 @@ }, { "name": "magento/framework", - "version": "103.0.4", + "version": "103.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/framework/magento-framework-103.0.4.0.zip", - "shasum": "9e691d759dcce81d0b1de726c5d33aca1a540b61" + "url": "https://repo.magento.com/archives/magento/framework/magento-framework-103.0.5.0.zip", + "shasum": "9c21fa7f70003323fdfefc9986a57afdebce9d73" }, "require": { "colinmollenhour/php-redis-session-abstract": "~1.4.5", - "composer/composer": "^1.9 || ^2.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", "ext-bcmath": "*", "ext-curl": "*", "ext-dom": "*", @@ -4447,25 +4426,26 @@ "ext-simplexml": "*", "ext-sodium": "*", "ext-xsl": "*", - "guzzlehttp/guzzle": "^7.3.0", + "ezyang/htmlpurifier": "^4.14", + "guzzlehttp/guzzle": "^7.4.2", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-escaper": "~2.9.0", + "laminas/laminas-escaper": "~2.10.0", "laminas/laminas-http": "^2.15.0", - "laminas/laminas-mail": "^2.15.1", + "laminas/laminas-mail": "^2.16.0", "laminas/laminas-mime": "^2.9.1", - "laminas/laminas-stdlib": "^3.6.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", + "laminas/laminas-validator": "^2.17.0", "lib-libxml": "*", "magento/composer-dependency-version-audit-plugin": "~0.1", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", + "monolog/monolog": "^2.7", "php": "~7.4.0||~8.1.0", "ramsey/uuid": "~4.2.0", "symfony/console": "~4.4.0", "symfony/process": "~4.4.0", "tedivm/jshrink": "~1.4.0", - "webonyx/graphql-php": "~14.11.3", + "webonyx/graphql-php": "~14.11.6", "wikimedia/less.php": "^3.0.0" }, "suggest": { @@ -4488,16 +4468,16 @@ }, { "name": "magento/framework-amqp", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/framework-amqp/magento-framework-amqp-100.4.2.0.zip", - "shasum": "ab518ba9e493be5c24a75778cad7fadbeb987edf" + "url": "https://repo.magento.com/archives/magento/framework-amqp/magento-framework-amqp-100.4.3.0.zip", + "shasum": "b55a39259d1d9cd706c4711ededcd745e9603f7d" }, "require": { "magento/framework": "103.0.*", "php": "~7.4.0||~8.1.0", - "php-amqplib/php-amqplib": "~3.1.0" + "php-amqplib/php-amqplib": "~3.2.0" }, "type": "magento2-library", "autoload": { @@ -4543,11 +4523,11 @@ }, { "name": "magento/framework-message-queue", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/framework-message-queue/magento-framework-message-queue-100.4.4.0.zip", - "shasum": "38ba5f46176d13cea8e3a52b6c293fb6c6e3c93d" + "url": "https://repo.magento.com/archives/magento/framework-message-queue/magento-framework-message-queue-100.4.5.0.zip", + "shasum": "6b31ce9cba29824f5c2f2d29841ecc889c8c2a2d" }, "require": { "magento/framework": "103.0.*", @@ -4626,86 +4606,86 @@ }, { "name": "magento/inventory-metapackage", - "version": "1.2.4", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/inventory-metapackage/magento-inventory-metapackage-1.2.4.0.zip", - "shasum": "43cac12a1f37677c29ad8ea375081bbdd92df39b" - }, - "require": { - "magento/inventory-composer-installer": "1.2.0", - "magento/module-inventory": "1.2.*", - "magento/module-inventory-admin-ui": "1.2.*", - "magento/module-inventory-advanced-checkout": "1.2.*", - "magento/module-inventory-api": "1.2.*", - "magento/module-inventory-bundle-import-export": "1.1.*", - "magento/module-inventory-bundle-product": "1.2.*", - "magento/module-inventory-bundle-product-admin-ui": "1.2.*", - "magento/module-inventory-bundle-product-indexer": "1.1.*", - "magento/module-inventory-cache": "1.2.*", - "magento/module-inventory-catalog": "1.2.*", - "magento/module-inventory-catalog-admin-ui": "1.2.*", - "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-catalog-frontend-ui": "1.0.*", - "magento/module-inventory-catalog-search": "1.2.*", - "magento/module-inventory-catalog-search-bundle-product": "1.0.*", - "magento/module-inventory-catalog-search-configurable-product": "1.0.*", - "magento/module-inventory-configurable-product": "1.2.*", - "magento/module-inventory-configurable-product-admin-ui": "1.2.*", - "magento/module-inventory-configurable-product-frontend-ui": "1.0.*", - "magento/module-inventory-configurable-product-indexer": "1.2.*", - "magento/module-inventory-configuration": "1.2.*", - "magento/module-inventory-configuration-api": "1.2.*", - "magento/module-inventory-distance-based-source-selection": "1.2.*", - "magento/module-inventory-distance-based-source-selection-admin-ui": "1.2.*", - "magento/module-inventory-distance-based-source-selection-api": "1.2.*", - "magento/module-inventory-elasticsearch": "1.2.*", - "magento/module-inventory-export-stock": "1.2.*", - "magento/module-inventory-export-stock-api": "1.2.*", - "magento/module-inventory-graph-ql": "1.2.*", - "magento/module-inventory-grouped-product": "1.2.*", - "magento/module-inventory-grouped-product-admin-ui": "1.2.*", - "magento/module-inventory-grouped-product-indexer": "1.2.*", - "magento/module-inventory-import-export": "1.2.*", - "magento/module-inventory-in-store-pickup": "1.1.*", - "magento/module-inventory-in-store-pickup-admin-ui": "1.1.*", - "magento/module-inventory-in-store-pickup-api": "1.1.*", - "magento/module-inventory-in-store-pickup-frontend": "1.1.*", - "magento/module-inventory-in-store-pickup-graph-ql": "1.1.*", - "magento/module-inventory-in-store-pickup-multishipping": "1.1.*", - "magento/module-inventory-in-store-pickup-quote": "1.1.*", - "magento/module-inventory-in-store-pickup-quote-graph-ql": "1.1.*", - "magento/module-inventory-in-store-pickup-sales": "1.1.*", - "magento/module-inventory-in-store-pickup-sales-admin-ui": "1.1.*", - "magento/module-inventory-in-store-pickup-sales-api": "1.1.*", - "magento/module-inventory-in-store-pickup-shipping": "1.1.*", - "magento/module-inventory-in-store-pickup-shipping-admin-ui": "1.1.*", - "magento/module-inventory-in-store-pickup-shipping-api": "1.1.*", - "magento/module-inventory-in-store-pickup-webapi-extension": "1.1.*", - "magento/module-inventory-indexer": "2.1.*", - "magento/module-inventory-low-quantity-notification": "1.2.*", - "magento/module-inventory-low-quantity-notification-admin-ui": "1.2.*", - "magento/module-inventory-low-quantity-notification-api": "1.2.*", - "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", - "magento/module-inventory-product-alert": "1.2.*", - "magento/module-inventory-quote-graph-ql": "1.0.*", - "magento/module-inventory-requisition-list": "1.2.*", - "magento/module-inventory-reservation-cli": "1.2.*", - "magento/module-inventory-reservations": "1.2.*", - "magento/module-inventory-reservations-api": "1.2.*", - "magento/module-inventory-sales": "1.2.*", - "magento/module-inventory-sales-admin-ui": "1.2.*", - "magento/module-inventory-sales-api": "1.2.*", - "magento/module-inventory-sales-frontend-ui": "1.2.*", - "magento/module-inventory-setup-fixture-generator": "1.2.*", - "magento/module-inventory-shipping": "1.2.*", - "magento/module-inventory-shipping-admin-ui": "1.2.*", - "magento/module-inventory-source-deduction-api": "1.2.*", - "magento/module-inventory-source-selection": "1.2.*", - "magento/module-inventory-source-selection-api": "1.4.*", - "magento/module-inventory-swatches-frontend-ui": "1.0.*", - "magento/module-inventory-visual-merchandiser": "1.1.*", - "magento/module-inventory-wishlist": "1.0.*" + "version": "1.2.5", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/inventory-metapackage/magento-inventory-metapackage-1.2.5.0.zip", + "shasum": "43fcf8211b3f173561b33672d0f0b3522baa350b" + }, + "require": { + "magento/inventory-composer-installer": "^1.2.0", + "magento/module-inventory": "1.2.3", + "magento/module-inventory-admin-ui": "1.2.3", + "magento/module-inventory-advanced-checkout": "1.2.2", + "magento/module-inventory-api": "1.2.3", + "magento/module-inventory-bundle-import-export": "1.1.1", + "magento/module-inventory-bundle-product": "1.2.2", + "magento/module-inventory-bundle-product-admin-ui": "1.2.2", + "magento/module-inventory-bundle-product-indexer": "1.1.2", + "magento/module-inventory-cache": "1.2.3", + "magento/module-inventory-catalog": "1.3.0", + "magento/module-inventory-catalog-admin-ui": "1.2.3", + "magento/module-inventory-catalog-api": "1.3.3", + "magento/module-inventory-catalog-frontend-ui": "1.0.2", + "magento/module-inventory-catalog-search": "1.2.3", + "magento/module-inventory-catalog-search-bundle-product": "1.0.1", + "magento/module-inventory-catalog-search-configurable-product": "1.0.1", + "magento/module-inventory-configurable-product": "1.2.3", + "magento/module-inventory-configurable-product-admin-ui": "1.2.3", + "magento/module-inventory-configurable-product-frontend-ui": "1.0.3", + "magento/module-inventory-configurable-product-indexer": "1.2.3", + "magento/module-inventory-configuration": "1.2.2", + "magento/module-inventory-configuration-api": "1.2.1", + "magento/module-inventory-distance-based-source-selection": "1.2.2", + "magento/module-inventory-distance-based-source-selection-admin-ui": "1.2.1", + "magento/module-inventory-distance-based-source-selection-api": "1.2.1", + "magento/module-inventory-elasticsearch": "1.2.2", + "magento/module-inventory-export-stock": "1.2.2", + "magento/module-inventory-export-stock-api": "1.2.1", + "magento/module-inventory-graph-ql": "1.2.2", + "magento/module-inventory-grouped-product": "1.3.0", + "magento/module-inventory-grouped-product-admin-ui": "1.2.2", + "magento/module-inventory-grouped-product-indexer": "1.2.3", + "magento/module-inventory-import-export": "1.2.3", + "magento/module-inventory-in-store-pickup": "1.1.1", + "magento/module-inventory-in-store-pickup-admin-ui": "1.1.2", + "magento/module-inventory-in-store-pickup-api": "1.1.1", + "magento/module-inventory-in-store-pickup-frontend": "1.1.3", + "magento/module-inventory-in-store-pickup-graph-ql": "1.1.2", + "magento/module-inventory-in-store-pickup-multishipping": "1.1.1", + "magento/module-inventory-in-store-pickup-quote": "1.1.1", + "magento/module-inventory-in-store-pickup-quote-graph-ql": "1.1.1", + "magento/module-inventory-in-store-pickup-sales": "1.1.1", + "magento/module-inventory-in-store-pickup-sales-admin-ui": "1.1.3", + "magento/module-inventory-in-store-pickup-sales-api": "1.1.1", + "magento/module-inventory-in-store-pickup-shipping": "1.1.2", + "magento/module-inventory-in-store-pickup-shipping-admin-ui": "1.1.1", + "magento/module-inventory-in-store-pickup-shipping-api": "1.1.1", + "magento/module-inventory-in-store-pickup-webapi-extension": "1.1.1", + "magento/module-inventory-indexer": "2.2.0", + "magento/module-inventory-low-quantity-notification": "1.2.2", + "magento/module-inventory-low-quantity-notification-admin-ui": "1.2.2", + "magento/module-inventory-low-quantity-notification-api": "1.2.2", + "magento/module-inventory-multi-dimensional-indexer-api": "1.2.1", + "magento/module-inventory-product-alert": "1.2.2", + "magento/module-inventory-quote-graph-ql": "1.0.2", + "magento/module-inventory-requisition-list": "1.2.3", + "magento/module-inventory-reservation-cli": "1.2.2", + "magento/module-inventory-reservations": "1.2.1", + "magento/module-inventory-reservations-api": "1.2.1", + "magento/module-inventory-sales": "1.3.0", + "magento/module-inventory-sales-admin-ui": "1.2.3", + "magento/module-inventory-sales-api": "1.2.2", + "magento/module-inventory-sales-frontend-ui": "1.2.2", + "magento/module-inventory-setup-fixture-generator": "1.2.1", + "magento/module-inventory-shipping": "1.2.2", + "magento/module-inventory-shipping-admin-ui": "1.2.3", + "magento/module-inventory-source-deduction-api": "1.2.2", + "magento/module-inventory-source-selection": "1.2.1", + "magento/module-inventory-source-selection-api": "1.4.2", + "magento/module-inventory-swatches-frontend-ui": "1.0.1", + "magento/module-inventory-visual-merchandiser": "1.1.3", + "magento/module-inventory-wishlist": "1.0.2" }, "type": "metapackage", "description": "Metapackage with Magento Inventory modules for simple installation" @@ -4953,40 +4933,35 @@ }, { "name": "magento/magento2-base", - "version": "2.4.4", + "version": "2.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/magento2-base/magento-magento2-base-2.4.4.0.zip", - "shasum": "7440b3afbea45bad8480e7b4385050376a8c893a" + "url": "https://repo.magento.com/archives/magento/magento2-base/magento-magento2-base-2.4.5.0.zip", + "shasum": "e13eb657292ecb4851e6cead6012c27353fd4d85" }, "require": { - "composer/composer": "^1.9 || ^2.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", "ext-intl": "*", "ext-mbstring": "*", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-di": "^3.3.0", - "laminas/laminas-eventmanager": "^3.4.0", + "laminas/laminas-di": "^3.7.0", + "laminas/laminas-eventmanager": "^3.5.0", "laminas/laminas-http": "^2.15.0", - "laminas/laminas-json": "^3.3.0", "laminas/laminas-modulemanager": "^2.11.0", - "laminas/laminas-mvc": "^3.3.0", - "laminas/laminas-server": "^2.11.0", - "laminas/laminas-servicemanager": "^3.10.0", + "laminas/laminas-mvc": "^3.3.3", + "laminas/laminas-servicemanager": "^3.11.0", "laminas/laminas-soap": "^2.10.0", - "laminas/laminas-stdlib": "^3.6.0", - "laminas/laminas-text": "^2.9.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", - "laminas/laminas-view": "~2.14.1", + "laminas/laminas-validator": "^2.17.0", "magento/composer": "~1.8.0", "magento/magento-composer-installer": "*", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", + "monolog/monolog": "^2.7", "pelago/emogrifier": "^6.0.0", "php": "~7.4.0||~8.1.0", - "phpseclib/phpseclib": "~3.0.9", + "phpseclib/phpseclib": "~3.0.13", "symfony/console": "~4.4.0", - "symfony/event-dispatcher": "~4.4.0", "tedivm/jshrink": "~1.4.0", "tubalmartin/cssmin": "4.1.1" }, @@ -5330,6 +5305,14 @@ "lib/web/jquery.js", "lib/web/jquery.js" ], + [ + "lib/web/js-cookie", + "lib/web/js-cookie" + ], + [ + "lib/web/js-storage", + "lib/web/js-storage" + ], [ "lib/web/knockoutjs", "lib/web/knockoutjs" @@ -5394,6 +5377,10 @@ "lib/web/varien", "lib/web/varien" ], + [ + "lib/web/vimeo", + "lib/web/vimeo" + ], [ "nginx.conf.sample", "nginx.conf.sample" @@ -5496,7 +5483,49 @@ "OSL-3.0", "AFL-3.0" ], - "description": "Magento 2 Base (Community Edition)" + "description": "Magento 2 Base (Community Edition)" + }, + { + "name": "magento/module-admin-adobe-ims", + "version": "100.4.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-admin-adobe-ims/magento-module-admin-adobe-ims-100.4.0.0.zip", + "shasum": "4156ce687b5a382100832eabdc3e16833ee448df" + }, + "require": { + "magento/framework": "103.0.*", + "magento/module-adobe-ims": "2.1.*", + "magento/module-adobe-ims-api": "2.1.*", + "magento/module-authorization": "100.4.*", + "magento/module-backend": "102.0.*", + "magento/module-captcha": "100.4.*", + "magento/module-config": "101.2.*", + "magento/module-email": "101.1.*", + "magento/module-integration": "100.4.*", + "magento/module-jwt-user-token": "100.4.*", + "magento/module-security": "100.4.*", + "magento/module-store": "101.1.*", + "magento/module-user": "101.2.*", + "php": "~7.4.0||~8.1.0" + }, + "suggest": { + "magento/module-theme": "101.1.*" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\AdminAdobeIms\\": "" + } + }, + "license": [ + "OSL-3.0", + "AFL-3.0" + ], + "description": "N/A" }, { "name": "magento/module-admin-analytics", @@ -5532,11 +5561,11 @@ }, { "name": "magento/module-admin-notification", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-admin-notification/magento-module-admin-notification-100.4.3.0.zip", - "shasum": "5d988263ee6c4773be68e75c593e9377d83ce289" + "url": "https://repo.magento.com/archives/magento/module-admin-notification/magento-module-admin-notification-100.4.4.0.zip", + "shasum": "4b69f736921da0d98e7110160e34eeaa1c176867" }, "require": { "lib-libxml": "*", @@ -5565,19 +5594,19 @@ }, { "name": "magento/module-adobe-ims", - "version": "2.1.3", + "version": "2.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-ims/magento-module-adobe-ims-2.1.3.0.zip", - "shasum": "dce2f760e97eb2279bbc16c473aa2a8d9fe3fd52" + "url": "https://repo.magento.com/archives/magento/module-adobe-ims/magento-module-adobe-ims-2.1.4.0.zip", + "shasum": "b197a11dcb55ceff89040bf2effb5c86f5fe58fb" }, "require": { - "magento/framework": "*", + "magento/framework": "103.0.*", "magento/module-adobe-ims-api": "2.1.*", - "magento/module-authorization": "*", - "magento/module-backend": "*", - "magento/module-config": "*", - "magento/module-user": "*", + "magento/module-authorization": "100.4.*", + "magento/module-backend": "102.0.*", + "magento/module-config": "101.2.*", + "magento/module-user": "101.2.*", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -5597,14 +5626,14 @@ }, { "name": "magento/module-adobe-ims-api", - "version": "2.1.1", + "version": "2.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-ims-api/magento-module-adobe-ims-api-2.1.1.0.zip", - "shasum": "0946ea5f6bd9fb3b8b156f86f2de1e3fe1002e13" + "url": "https://repo.magento.com/archives/magento/module-adobe-ims-api/magento-module-adobe-ims-api-2.1.2.0.zip", + "shasum": "1a007affad473b7a2a9ea26a4eb4e5c78976a652" }, "require": { - "magento/framework": "*", + "magento/framework": "103.0.*", "php": "~7.4.0||~8.1.0" }, "type": "magento2-module", @@ -5624,15 +5653,16 @@ }, { "name": "magento/module-adobe-stock-admin-ui", - "version": "1.3.1", + "version": "1.3.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-admin-ui/magento-module-adobe-stock-admin-ui-1.3.1.0.zip", - "shasum": "540fb058a7ed45b09aa1bc5f7ee0097d01566372" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-admin-ui/magento-module-adobe-stock-admin-ui-1.3.2.0.zip", + "shasum": "ff5cbd91546731bd2b853297b43f1db5b21232f2" }, "require": { "magento/framework": "*", - "magento/module-adobe-ims-api": "2.1.*", + "magento/module-admin-adobe-ims": "*", + "magento/module-adobe-ims-api": "*", "magento/module-adobe-stock-client-api": "2.1.*", "magento/module-backend": "*", "magento/module-config": "*", @@ -5747,11 +5777,11 @@ }, { "name": "magento/module-adobe-stock-client-api", - "version": "2.1.1", + "version": "2.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-client-api/magento-module-adobe-stock-client-api-2.1.1.0.zip", - "shasum": "bce37cae6d4a5d0ad1260bb389a289240c160741" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-client-api/magento-module-adobe-stock-client-api-2.1.2.0.zip", + "shasum": "6f8432b49d8f5540209363f382cb95237c4896c3" }, "require": { "magento/framework": "*", @@ -5774,11 +5804,11 @@ }, { "name": "magento/module-adobe-stock-image", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image/magento-module-adobe-stock-image-1.3.2.0.zip", - "shasum": "a116421a7b9dbca984eece349ff51332bd74924a" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image/magento-module-adobe-stock-image-1.3.3.0.zip", + "shasum": "037ce2d3b4a06459a39f9fc1691a5f734fafd1d1" }, "require": { "magento/framework": "*", @@ -5809,16 +5839,16 @@ }, { "name": "magento/module-adobe-stock-image-admin-ui", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image-admin-ui/magento-module-adobe-stock-image-admin-ui-1.3.2.0.zip", - "shasum": "016c4e5f9ba004d444221db6aad48b330448ad93" + "url": "https://repo.magento.com/archives/magento/module-adobe-stock-image-admin-ui/magento-module-adobe-stock-image-admin-ui-1.3.3.0.zip", + "shasum": "a328204741bde5fd1d954a1db8cfac1f24d8e0d1" }, "require": { "magento/framework": "*", - "magento/module-adobe-ims": "2.1.*", - "magento/module-adobe-ims-api": "2.1.*", + "magento/module-adobe-ims": "*", + "magento/module-adobe-ims-api": "*", "magento/module-adobe-stock-asset-api": "2.0.*", "magento/module-adobe-stock-client-api": "2.1.*", "magento/module-adobe-stock-image-api": "1.3.*", @@ -5875,11 +5905,11 @@ }, { "name": "magento/module-advanced-pricing-import-export", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-advanced-pricing-import-export/magento-module-advanced-pricing-import-export-100.4.4.0.zip", - "shasum": "dc456cd47d71b897a5f0ed77349c39769268a08e" + "url": "https://repo.magento.com/archives/magento/module-advanced-pricing-import-export/magento-module-advanced-pricing-import-export-100.4.5.0.zip", + "shasum": "360f3aa063ca1aba96b8e6f50d418042b40cd65d" }, "require": { "magento/framework": "103.0.*", @@ -5910,11 +5940,11 @@ }, { "name": "magento/module-advanced-search", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-advanced-search/magento-module-advanced-search-100.4.2.0.zip", - "shasum": "09972db7e8b51e2100e9875d30ded250c554a5ad" + "url": "https://repo.magento.com/archives/magento/module-advanced-search/magento-module-advanced-search-100.4.3.0.zip", + "shasum": "724b211b50a10f316f0b400e0e9d65ea7114a808" }, "require": { "magento/framework": "103.0.*", @@ -5971,46 +6001,13 @@ ], "description": "N/A" }, - { - "name": "magento/module-amqp-store", - "version": "100.4.2", - "dist": { - "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-amqp-store/magento-module-amqp-store-100.4.2.0.zip", - "shasum": "f9fbdb0168022ed576753c2ad15808ed2de11239" - }, - "require": { - "magento/framework": "103.0.*", - "magento/framework-amqp": "100.4.*", - "magento/module-store": "101.1.*", - "php": "~7.4.0||~8.1.0" - }, - "suggest": { - "magento/framework-message-queue": "100.4.*", - "magento/module-asynchronous-operations": "100.4.*" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\AmqpStore\\": "" - } - }, - "license": [ - "OSL-3.0", - "AFL-3.0" - ], - "description": "N/A" - }, { "name": "magento/module-analytics", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-analytics/magento-module-analytics-100.4.4.0.zip", - "shasum": "8463c99cf6ca687993a00020fdb06a5d98c6bc1d" + "url": "https://repo.magento.com/archives/magento/module-analytics/magento-module-analytics-100.4.5.0.zip", + "shasum": "55494bfc5963099ac0d2098f2e0995044baa9084" }, "require": { "magento/framework": "103.0.*", @@ -6037,11 +6034,11 @@ }, { "name": "magento/module-asynchronous-operations", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-asynchronous-operations/magento-module-asynchronous-operations-100.4.4.0.zip", - "shasum": "3b7cebfc7b227ba8872ff3dd768ee5781c26d844" + "url": "https://repo.magento.com/archives/magento/module-asynchronous-operations/magento-module-asynchronous-operations-100.4.5.0.zip", + "shasum": "0da25cb7acdf1862079994164bf445d8ac7f6af5" }, "require": { "magento/framework": "103.0.*", @@ -6073,11 +6070,11 @@ }, { "name": "magento/module-authorization", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-authorization/magento-module-authorization-100.4.4.0.zip", - "shasum": "7f94d3c40f8d836c84bd6547889047e00692ca09" + "url": "https://repo.magento.com/archives/magento/module-authorization/magento-module-authorization-100.4.5.0.zip", + "shasum": "06afa70d3b4b0cc033421bbac7c5aa3d24bebdbb" }, "require": { "magento/framework": "103.0.*", @@ -6101,15 +6098,13 @@ }, { "name": "magento/module-aws-s3", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-aws-s3/magento-module-aws-s3-100.4.2.0.zip", - "shasum": "3abe1e90d75ad2db23906325dbbfbc6913c58e00" + "url": "https://repo.magento.com/archives/magento/module-aws-s3/magento-module-aws-s3-100.4.3.0.zip", + "shasum": "235195c1e6193498bbed2d3fa1951a5aaf293d6b" }, "require": { - "league/flysystem": "^2.0", - "league/flysystem-aws-s3-v3": "^2.0", "magento/framework": "103.0.*", "magento/module-remote-storage": "100.4.*", "php": "~7.4.0||~8.1.0" @@ -6160,11 +6155,11 @@ }, { "name": "magento/module-backend", - "version": "102.0.4", + "version": "102.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-backend/magento-module-backend-102.0.4.0.zip", - "shasum": "4f75d59880b3a8af1c8b0299e47f322e4b38ebba" + "url": "https://repo.magento.com/archives/magento/module-backend/magento-module-backend-102.0.5.0.zip", + "shasum": "2a4f15e0c559c680151184e75d318c077c78d306" }, "require": { "magento/framework": "103.0.*", @@ -6208,11 +6203,11 @@ }, { "name": "magento/module-backup", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-backup/magento-module-backup-100.4.4.0.zip", - "shasum": "2ed47abed34b081913c248bc52ba6dafc151f809" + "url": "https://repo.magento.com/archives/magento/module-backup/magento-module-backup-100.4.5.0.zip", + "shasum": "9d5b5a27ddb44e4f657973e8b1a9bac810cad8b3" }, "require": { "magento/framework": "103.0.*", @@ -6238,11 +6233,11 @@ }, { "name": "magento/module-bundle", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle/magento-module-bundle-101.0.4.0.zip", - "shasum": "1d6820458bd78a2042179df3787f178a2c665455" + "url": "https://repo.magento.com/archives/magento/module-bundle/magento-module-bundle-101.0.5.0.zip", + "shasum": "61ebcbfa47ff60a56c573229038c3f57fba09515" }, "require": { "magento/framework": "103.0.*", @@ -6286,11 +6281,11 @@ }, { "name": "magento/module-bundle-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-graph-ql/magento-module-bundle-graph-ql-100.4.4.0.zip", - "shasum": "87ab4371ee816aa6547040735d40760ae96716e9" + "url": "https://repo.magento.com/archives/magento/module-bundle-graph-ql/magento-module-bundle-graph-ql-100.4.5.0.zip", + "shasum": "86f8582bf18bfa03e4adc6c725db5dcc78ba394b" }, "require": { "magento/framework": "103.0.*", @@ -6322,11 +6317,11 @@ }, { "name": "magento/module-bundle-import-export", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-bundle-import-export/magento-module-bundle-import-export-100.4.3.0.zip", - "shasum": "eaadc576dccaa1729cc05153cd4405e93530ffd5" + "url": "https://repo.magento.com/archives/magento/module-bundle-import-export/magento-module-bundle-import-export-100.4.4.0.zip", + "shasum": "4b61f9344da386dc09f1eb375c95563c1e02b3c5" }, "require": { "magento/framework": "103.0.*", @@ -6355,11 +6350,11 @@ }, { "name": "magento/module-cache-invalidate", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cache-invalidate/magento-module-cache-invalidate-100.4.2.0.zip", - "shasum": "cc5b37b7da1e68775844e6285c79d1d1ca3a4d28" + "url": "https://repo.magento.com/archives/magento/module-cache-invalidate/magento-module-cache-invalidate-100.4.3.0.zip", + "shasum": "d90ac3d37cc4eadd8e258b57991ff18e82b837df" }, "require": { "magento/framework": "103.0.*", @@ -6383,16 +6378,15 @@ }, { "name": "magento/module-captcha", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-captcha/magento-module-captcha-100.4.4.0.zip", - "shasum": "290e51dafbf7038c28629ff5cd8e312176e984d1" + "url": "https://repo.magento.com/archives/magento/module-captcha/magento-module-captcha-100.4.5.0.zip", + "shasum": "034fd81fcb31abf823863c1a12b2646b890f8868" }, "require": { - "laminas/laminas-captcha": "^2.11.0", + "laminas/laminas-captcha": "^2.12", "laminas/laminas-db": "^2.13.4", - "laminas/laminas-session": "^2.12.0", "magento/framework": "103.0.*", "magento/module-authorization": "100.4.*", "magento/module-backend": "102.0.*", @@ -6419,11 +6413,11 @@ }, { "name": "magento/module-cardinal-commerce", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cardinal-commerce/magento-module-cardinal-commerce-100.4.2.0.zip", - "shasum": "dcd16d3c86e3ede1c0d61640f4e4c9b2fc5390d7" + "url": "https://repo.magento.com/archives/magento/module-cardinal-commerce/magento-module-cardinal-commerce-100.4.3.0.zip", + "shasum": "c459e12648b37b408c48065ff6a9ff010eb2557f" }, "require": { "magento/framework": "103.0.*", @@ -6449,11 +6443,11 @@ }, { "name": "magento/module-catalog", - "version": "104.0.4", + "version": "104.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog/magento-module-catalog-104.0.4.0.zip", - "shasum": "68b81961013b9b661aa44ddebe814cb714b543d1" + "url": "https://repo.magento.com/archives/magento/module-catalog/magento-module-catalog-104.0.5.0.zip", + "shasum": "b5d8ff541fa0f8b3abfcb2c0126e07c984c82672" }, "require": { "magento/framework": "103.0.*", @@ -6599,11 +6593,11 @@ }, { "name": "magento/module-catalog-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-graph-ql/magento-module-catalog-graph-ql-100.4.4.0.zip", - "shasum": "17be5a9565265cc04e2b4da2a0795fcfd9b539d4" + "url": "https://repo.magento.com/archives/magento/module-catalog-graph-ql/magento-module-catalog-graph-ql-100.4.5.0.zip", + "shasum": "4ab6bdbe56bdab75a8f3df746e54b0a55ce7a897" }, "require": { "magento/framework": "103.0.*", @@ -6640,11 +6634,11 @@ }, { "name": "magento/module-catalog-import-export", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-import-export/magento-module-catalog-import-export-101.1.4.0.zip", - "shasum": "7de989e9b9128c4048d95d3add36ea42996ded52" + "url": "https://repo.magento.com/archives/magento/module-catalog-import-export/magento-module-catalog-import-export-101.1.5.0.zip", + "shasum": "8630a9ad0887181f35ed10b153d9fa31a4523efb" }, "require": { "ext-ctype": "*", @@ -6678,11 +6672,11 @@ }, { "name": "magento/module-catalog-inventory", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-inventory/magento-module-catalog-inventory-100.4.4.0.zip", - "shasum": "f6fe6467ba5fb05307ef1071466375d1d045ed2a" + "url": "https://repo.magento.com/archives/magento/module-catalog-inventory/magento-module-catalog-inventory-100.4.5.0.zip", + "shasum": "919dbee1a07ec5f1f4728f23262534936ba05e9b" }, "require": { "magento/framework": "103.0.*", @@ -6712,11 +6706,11 @@ }, { "name": "magento/module-catalog-inventory-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-inventory-graph-ql/magento-module-catalog-inventory-graph-ql-100.4.1.0.zip", - "shasum": "54a70525aa0eb0746133cd289fa44d3a513b5700" + "url": "https://repo.magento.com/archives/magento/module-catalog-inventory-graph-ql/magento-module-catalog-inventory-graph-ql-100.4.2.0.zip", + "shasum": "330f1044214ef81be907e39939292cf4ed2c4464" }, "require": { "magento/framework": "103.0.*", @@ -6771,11 +6765,11 @@ }, { "name": "magento/module-catalog-rule", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-rule/magento-module-catalog-rule-101.2.4.0.zip", - "shasum": "0b46c28faedfbb1ad98dfa7928f7207901592b5e" + "url": "https://repo.magento.com/archives/magento/module-catalog-rule/magento-module-catalog-rule-101.2.5.0.zip", + "shasum": "44e412c064b910bf20bb83b36e7152f925d4d98f" }, "require": { "magento/framework": "103.0.*", @@ -6809,11 +6803,11 @@ }, { "name": "magento/module-catalog-rule-configurable", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-rule-configurable/magento-module-catalog-rule-configurable-100.4.3.0.zip", - "shasum": "ba8ae1e197a7438ce74380b22be0610e2b5ba805" + "url": "https://repo.magento.com/archives/magento/module-catalog-rule-configurable/magento-module-catalog-rule-configurable-100.4.4.0.zip", + "shasum": "f12cfaa125b5d23cfdfee247cfdbaa27adff8663" }, "require": { "magento/framework": "103.0.*", @@ -6873,11 +6867,11 @@ }, { "name": "magento/module-catalog-search", - "version": "102.0.4", + "version": "102.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-search/magento-module-catalog-search-102.0.4.0.zip", - "shasum": "86f8676d034e5744772b99f143fb338158fc5135" + "url": "https://repo.magento.com/archives/magento/module-catalog-search/magento-module-catalog-search-102.0.5.0.zip", + "shasum": "3e3da7f22b6dade0d9c3259919e56d3bbb990e08" }, "require": { "magento/framework": "103.0.*", @@ -6914,11 +6908,11 @@ }, { "name": "magento/module-catalog-url-rewrite", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-url-rewrite/magento-module-catalog-url-rewrite-100.4.4.0.zip", - "shasum": "ea899afea444a981d3e468118038a280c75f86a8" + "url": "https://repo.magento.com/archives/magento/module-catalog-url-rewrite/magento-module-catalog-url-rewrite-100.4.5.0.zip", + "shasum": "1bd5ff2eb854696a84be74c33892c42e622ecc90" }, "require": { "magento/framework": "103.0.*", @@ -6988,11 +6982,11 @@ }, { "name": "magento/module-catalog-widget", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-catalog-widget/magento-module-catalog-widget-100.4.4.0.zip", - "shasum": "0df1204f3de4c39b099a4c4933a8096d29010515" + "url": "https://repo.magento.com/archives/magento/module-catalog-widget/magento-module-catalog-widget-100.4.5.0.zip", + "shasum": "fb050b11f646398e68f0f9c9b2c70a1c29531842" }, "require": { "magento/framework": "103.0.*", @@ -7024,11 +7018,11 @@ }, { "name": "magento/module-checkout", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout/magento-module-checkout-100.4.4.0.zip", - "shasum": "7565754344c67aea344a07fb2058cf53561127e3" + "url": "https://repo.magento.com/archives/magento/module-checkout/magento-module-checkout-100.4.5.0.zip", + "shasum": "c29a27d1314282080c7f89bc05cb6f80194a22dd" }, "require": { "magento/framework": "103.0.*", @@ -7074,11 +7068,11 @@ }, { "name": "magento/module-checkout-agreements", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-checkout-agreements/magento-module-checkout-agreements-100.4.3.0.zip", - "shasum": "2e05ba5e61339a31e01560c22ae069fdcdfacb2a" + "url": "https://repo.magento.com/archives/magento/module-checkout-agreements/magento-module-checkout-agreements-100.4.4.0.zip", + "shasum": "3ea175aac3a181b5eb4120a1a6d93dc0ae9b0567" }, "require": { "magento/framework": "103.0.*", @@ -7137,11 +7131,11 @@ }, { "name": "magento/module-cms", - "version": "104.0.4", + "version": "104.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cms/magento-module-cms-104.0.4.0.zip", - "shasum": "c3b0a5b87f4245732334fd9571d41a382f3bf5db" + "url": "https://repo.magento.com/archives/magento/module-cms/magento-module-cms-104.0.5.0.zip", + "shasum": "46493eaca20ee9f1fdc01cb9ad0ad4ce8d884b1a" }, "require": { "magento/framework": "103.0.*", @@ -7239,11 +7233,11 @@ }, { "name": "magento/module-cms-url-rewrite", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite/magento-module-cms-url-rewrite-100.4.3.0.zip", - "shasum": "5a8de8093d7d4e6ffe8f9cb9bc42f8259dee97a0" + "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite/magento-module-cms-url-rewrite-100.4.4.0.zip", + "shasum": "58feb0325230324416a662735e85a2c5a4689dd6" }, "require": { "magento/framework": "103.0.*", @@ -7269,11 +7263,11 @@ }, { "name": "magento/module-cms-url-rewrite-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite-graph-ql/magento-module-cms-url-rewrite-graph-ql-100.4.2.0.zip", - "shasum": "43b3fa95a3bf776732105bc6e78c563737786ce2" + "url": "https://repo.magento.com/archives/magento/module-cms-url-rewrite-graph-ql/magento-module-cms-url-rewrite-graph-ql-100.4.3.0.zip", + "shasum": "795d725c0e8e0da0f287c8278cd88c024d1271d8" }, "require": { "magento/framework": "103.0.*", @@ -7333,11 +7327,11 @@ }, { "name": "magento/module-config", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-config/magento-module-config-101.2.4.0.zip", - "shasum": "9392da7243f39fad1e90ff4709394ab3dd6657d7" + "url": "https://repo.magento.com/archives/magento/module-config/magento-module-config-101.2.5.0.zip", + "shasum": "29b1ef19022f790adc92d434b63aa673c2d49da4" }, "require": { "magento/framework": "103.0.*", @@ -7367,11 +7361,11 @@ }, { "name": "magento/module-configurable-import-export", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-import-export/magento-module-configurable-import-export-100.4.2.0.zip", - "shasum": "603d6c9eac912e43a402b56d0948ad68add15c02" + "url": "https://repo.magento.com/archives/magento/module-configurable-import-export/magento-module-configurable-import-export-100.4.3.0.zip", + "shasum": "a17ea30a737183e89f768827ac5dc79dfab3f8d2" }, "require": { "magento/framework": "103.0.*", @@ -7400,11 +7394,11 @@ }, { "name": "magento/module-configurable-product", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-product/magento-module-configurable-product-100.4.4.0.zip", - "shasum": "9766e5966fed032917558e1f7ed09c69c3626da0" + "url": "https://repo.magento.com/archives/magento/module-configurable-product/magento-module-configurable-product-100.4.5.0.zip", + "shasum": "a6b2a438775e10b315da352207f326b25d2847f6" }, "require": { "magento/framework": "103.0.*", @@ -7447,11 +7441,11 @@ }, { "name": "magento/module-configurable-product-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-configurable-product-graph-ql/magento-module-configurable-product-graph-ql-100.4.4.0.zip", - "shasum": "3d27a65010bb681027cf5a250045f20b9731fcd9" + "url": "https://repo.magento.com/archives/magento/module-configurable-product-graph-ql/magento-module-configurable-product-graph-ql-100.4.5.0.zip", + "shasum": "d43550da49c0626cedac90aab27aaa23c8fc046c" }, "require": { "magento/framework": "103.0.*", @@ -7543,11 +7537,11 @@ }, { "name": "magento/module-cookie", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cookie/magento-module-cookie-100.4.4.0.zip", - "shasum": "028bc4a3d6758ec00e63451b66b529b03ddb0ea2" + "url": "https://repo.magento.com/archives/magento/module-cookie/magento-module-cookie-100.4.5.0.zip", + "shasum": "4f25ec33123b391b2f6a7cbba0797afb412609d5" }, "require": { "magento/framework": "103.0.*", @@ -7574,11 +7568,11 @@ }, { "name": "magento/module-cron", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-cron/magento-module-cron-100.4.4.0.zip", - "shasum": "3ac0f4fc89416ac589e7a22749f1825bf8c0ae36" + "url": "https://repo.magento.com/archives/magento/module-cron/magento-module-cron-100.4.5.0.zip", + "shasum": "21c72975a3851a4cdb57380674a0afff02379d22" }, "require": { "magento/framework": "103.0.*", @@ -7605,11 +7599,11 @@ }, { "name": "magento/module-csp", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-csp/magento-module-csp-100.4.3.0.zip", - "shasum": "8df45e885e6287ed0b1380d2a1416c9ba0bccc8a" + "url": "https://repo.magento.com/archives/magento/module-csp/magento-module-csp-100.4.4.0.zip", + "shasum": "efc91377bea43c015a2e89e625b17f86d5971e67" }, "require": { "magento/framework": "103.0.*", @@ -7665,11 +7659,11 @@ }, { "name": "magento/module-customer", - "version": "103.0.4", + "version": "103.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer/magento-module-customer-103.0.4.0.zip", - "shasum": "a9b5e4fb9a4bd904bc6c4fd8951a42c5f28f1f4f" + "url": "https://repo.magento.com/archives/magento/module-customer/magento-module-customer-103.0.5.0.zip", + "shasum": "a54992e45b4d2aee5007a683f25eeea0079c9dba" }, "require": { "magento/framework": "103.0.*", @@ -7776,11 +7770,11 @@ }, { "name": "magento/module-customer-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-graph-ql/magento-module-customer-graph-ql-100.4.4.0.zip", - "shasum": "8784253f465b269a4db27b15f297168994fae874" + "url": "https://repo.magento.com/archives/magento/module-customer-graph-ql/magento-module-customer-graph-ql-100.4.5.0.zip", + "shasum": "602fdc6011df59605229070182fd47c757f48e3c" }, "require": { "magento/framework": "103.0.*", @@ -7813,11 +7807,11 @@ }, { "name": "magento/module-customer-import-export", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-customer-import-export/magento-module-customer-import-export-100.4.4.0.zip", - "shasum": "6974e693afef3f09453310edc2c7a05180aa26ef" + "url": "https://repo.magento.com/archives/magento/module-customer-import-export/magento-module-customer-import-export-100.4.5.0.zip", + "shasum": "6d6805918020b4ceb9823ecdbec2ab42203cbb35" }, "require": { "magento/framework": "103.0.*", @@ -7846,11 +7840,11 @@ }, { "name": "magento/module-deploy", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-deploy/magento-module-deploy-100.4.4.0.zip", - "shasum": "d019c83f5d2117b74ede903f9e8e4f9efc807886" + "url": "https://repo.magento.com/archives/magento/module-deploy/magento-module-deploy-100.4.5.0.zip", + "shasum": "a213853f0a0fdb9c4253dd3fc733e5a0fd73ba60" }, "require": { "magento/framework": "103.0.*", @@ -7878,11 +7872,11 @@ }, { "name": "magento/module-developer", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-developer/magento-module-developer-100.4.4.0.zip", - "shasum": "130d066e02afc49ea5e499a38c2d207b316897bf" + "url": "https://repo.magento.com/archives/magento/module-developer/magento-module-developer-100.4.5.0.zip", + "shasum": "dfa60efc615392b056754cb6a81c78a6ffef80f8" }, "require": { "magento/framework": "103.0.*", @@ -7907,11 +7901,11 @@ }, { "name": "magento/module-dhl", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-dhl/magento-module-dhl-100.4.3.0.zip", - "shasum": "be0b7ce303b59aaea9bb5e9c262916e7600efc1c" + "url": "https://repo.magento.com/archives/magento/module-dhl/magento-module-dhl-100.4.4.0.zip", + "shasum": "48ccc4512f35d3fe6ebb761a9e663e37f4160455" }, "require": { "lib-libxml": "*", @@ -7947,11 +7941,11 @@ }, { "name": "magento/module-directory", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-directory/magento-module-directory-100.4.4.0.zip", - "shasum": "a227ad0a86e7ef636dc996d1d366eff3f2a38898" + "url": "https://repo.magento.com/archives/magento/module-directory/magento-module-directory-100.4.5.0.zip", + "shasum": "42bab61cd7e480a9c1d0a0afc164f4587f4b1fcc" }, "require": { "lib-libxml": "*", @@ -7978,11 +7972,11 @@ }, { "name": "magento/module-directory-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-directory-graph-ql/magento-module-directory-graph-ql-100.4.2.0.zip", - "shasum": "8c1d22fe9534fec4f7ac3b472c41bf78aa3efc75" + "url": "https://repo.magento.com/archives/magento/module-directory-graph-ql/magento-module-directory-graph-ql-100.4.3.0.zip", + "shasum": "c4da9001b43d6c14063060594cb6c9eaced6b904" }, "require": { "magento/framework": "103.0.*", @@ -8008,11 +8002,11 @@ }, { "name": "magento/module-downloadable", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable/magento-module-downloadable-100.4.4.0.zip", - "shasum": "9612442d3c202c19dfbbced3e118cc084cef6878" + "url": "https://repo.magento.com/archives/magento/module-downloadable/magento-module-downloadable-100.4.5.0.zip", + "shasum": "78a7f641efd6f7297cd5f046bfda9565de415192" }, "require": { "magento/framework": "103.0.*", @@ -8054,11 +8048,11 @@ }, { "name": "magento/module-downloadable-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable-graph-ql/magento-module-downloadable-graph-ql-100.4.4.0.zip", - "shasum": "00c6b314ff17ea4d6b5d49137cf360bbdf6ea985" + "url": "https://repo.magento.com/archives/magento/module-downloadable-graph-ql/magento-module-downloadable-graph-ql-100.4.5.0.zip", + "shasum": "e9b7443eada7b328cefb0a3c290481a789d8a2ba" }, "require": { "magento/framework": "103.0.*", @@ -8091,11 +8085,11 @@ }, { "name": "magento/module-downloadable-import-export", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-downloadable-import-export/magento-module-downloadable-import-export-100.4.3.0.zip", - "shasum": "d6a9258cbc4ad68778067782980cfa483ef2faa2" + "url": "https://repo.magento.com/archives/magento/module-downloadable-import-export/magento-module-downloadable-import-export-100.4.4.0.zip", + "shasum": "4d50455fba9fa7714ccc90d2ef3326a13d5162dc" }, "require": { "magento/framework": "103.0.*", @@ -8124,11 +8118,11 @@ }, { "name": "magento/module-eav", - "version": "102.1.4", + "version": "102.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-eav/magento-module-eav-102.1.4.0.zip", - "shasum": "c3be158f50ef1f618bfde852c22555cb12e31840" + "url": "https://repo.magento.com/archives/magento/module-eav/magento-module-eav-102.1.5.0.zip", + "shasum": "c340cf0993448f1abd5ad0caf61734249611943e" }, "require": { "magento/framework": "103.0.*", @@ -8187,14 +8181,14 @@ }, { "name": "magento/module-elasticsearch", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-elasticsearch/magento-module-elasticsearch-101.0.4.0.zip", - "shasum": "59cc0bd8094bc28f68339244532a85f35bf1ec9d" + "url": "https://repo.magento.com/archives/magento/module-elasticsearch/magento-module-elasticsearch-101.0.5.0.zip", + "shasum": "e596d6ae4542e44ac18acb5714a2fe8af201da2e" }, "require": { - "elasticsearch/elasticsearch": "~7.16.0", + "elasticsearch/elasticsearch": "~7.17.0", "magento/framework": "103.0.*", "magento/module-advanced-search": "100.4.*", "magento/module-catalog": "104.0.*", @@ -8226,14 +8220,14 @@ }, { "name": "magento/module-elasticsearch-6", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-elasticsearch-6/magento-module-elasticsearch-6-100.4.4.0.zip", - "shasum": "7ff2c20a5dbd04904aea96d06b957d7b9d5500cb" + "url": "https://repo.magento.com/archives/magento/module-elasticsearch-6/magento-module-elasticsearch-6-100.4.5.0.zip", + "shasum": "25afea3df20a62529a3ab27d7d45058ea8b85707" }, "require": { - "elasticsearch/elasticsearch": "~7.16.0", + "elasticsearch/elasticsearch": "~7.17.0", "magento/framework": "103.0.*", "magento/module-advanced-search": "100.4.*", "magento/module-catalog-search": "102.0.*", @@ -8261,14 +8255,14 @@ }, { "name": "magento/module-elasticsearch-7", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-elasticsearch-7/magento-module-elasticsearch-7-100.4.4.0.zip", - "shasum": "3a085edd82d218a166901e6abad3ad1080b1630c" + "url": "https://repo.magento.com/archives/magento/module-elasticsearch-7/magento-module-elasticsearch-7-100.4.5.0.zip", + "shasum": "f1cd194fd49688ce3c416c4a6678865a5dcf4d1f" }, "require": { - "elasticsearch/elasticsearch": "~7.16.0", + "elasticsearch/elasticsearch": "~7.17.0", "magento/framework": "103.0.*", "magento/module-advanced-search": "100.4.*", "magento/module-catalog-search": "102.0.*", @@ -8296,11 +8290,11 @@ }, { "name": "magento/module-email", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-email/magento-module-email-101.1.4.0.zip", - "shasum": "d1af5680086a5a9bf12f25164d4b4e9acbb10688" + "url": "https://repo.magento.com/archives/magento/module-email/magento-module-email-101.1.5.0.zip", + "shasum": "ca393c2beae425fdcbc56cafa12718a0a6e1b440" }, "require": { "magento/framework": "103.0.*", @@ -8400,11 +8394,11 @@ }, { "name": "magento/module-gift-message", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-message/magento-module-gift-message-100.4.3.0.zip", - "shasum": "599c56fecf3c26ff9d1b59011255ab32eb9ed4e3" + "url": "https://repo.magento.com/archives/magento/module-gift-message/magento-module-gift-message-100.4.4.0.zip", + "shasum": "921b0e4ec989c1e9038b96a32a747498f3932b94" }, "require": { "magento/framework": "103.0.*", @@ -8439,11 +8433,11 @@ }, { "name": "magento/module-gift-message-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-gift-message-graph-ql/magento-module-gift-message-graph-ql-100.4.2.0.zip", - "shasum": "03c5e036bcb950dff7b2fd8b5a93c91cec6919db" + "url": "https://repo.magento.com/archives/magento/module-gift-message-graph-ql/magento-module-gift-message-graph-ql-100.4.3.0.zip", + "shasum": "fbe42991c130a066fa97bb9bec4aff4ef908e2a0" }, "require": { "magento/framework": "103.0.*", @@ -8530,13 +8524,46 @@ ], "description": "N/A" }, + { + "name": "magento/module-google-gtag", + "version": "100.4.0", + "dist": { + "type": "zip", + "url": "https://repo.magento.com/archives/magento/module-google-gtag/magento-module-google-gtag-100.4.0.0.zip", + "shasum": "60adbe5904d419485a1c710ce8fefa0dd9213b49" + }, + "require": { + "magento/framework": "103.0.*", + "magento/module-cookie": "100.4.*", + "magento/module-sales": "103.0.*", + "magento/module-store": "101.1.*", + "php": "~7.4.0||~8.1.0" + }, + "suggest": { + "magento/module-config": "101.2.*" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\GoogleGtag\\": "" + } + }, + "license": [ + "OSL-3.0", + "AFL-3.0" + ], + "description": "N/A" + }, { "name": "magento/module-google-optimizer", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-google-optimizer/magento-module-google-optimizer-100.4.3.0.zip", - "shasum": "6c45412c39e296e2bba714944a4213923a072ea1" + "url": "https://repo.magento.com/archives/magento/module-google-optimizer/magento-module-google-optimizer-100.4.4.0.zip", + "shasum": "562fe885296e5d3a4289f1f8df6498f8322406a0" }, "require": { "magento/framework": "103.0.*", @@ -8544,6 +8571,7 @@ "magento/module-catalog": "104.0.*", "magento/module-cms": "104.0.*", "magento/module-google-analytics": "100.4.*", + "magento/module-google-gtag": "100.4.*", "magento/module-store": "101.1.*", "magento/module-ui": "101.2.*", "php": "~7.4.0||~8.1.0" @@ -8565,11 +8593,11 @@ }, { "name": "magento/module-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-graph-ql/magento-module-graph-ql-100.4.4.0.zip", - "shasum": "e33fc6b44c60ac57ee855ef48de034ffd5bdb959" + "url": "https://repo.magento.com/archives/magento/module-graph-ql/magento-module-graph-ql-100.4.5.0.zip", + "shasum": "a956f4de6dd170b23705701c08d351a627500758" }, "require": { "magento/framework": "103.0.*", @@ -8578,7 +8606,7 @@ "magento/module-new-relic-reporting": "100.4.*", "magento/module-webapi": "100.4.*", "php": "~7.4.0||~8.1.0", - "webonyx/graphql-php": "~14.11.3" + "webonyx/graphql-php": "~14.11.5" }, "suggest": { "magento/module-graph-ql-cache": "100.4.*" @@ -8600,11 +8628,11 @@ }, { "name": "magento/module-graph-ql-cache", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-graph-ql-cache/magento-module-graph-ql-cache-100.4.1.0.zip", - "shasum": "0145042f6360087d8f54cad4998a1e1459d5d5f7" + "url": "https://repo.magento.com/archives/magento/module-graph-ql-cache/magento-module-graph-ql-cache-100.4.2.0.zip", + "shasum": "ba6b7676af0b686ae6a89f8aa8335e32ca68dc27" }, "require": { "magento/framework": "103.0.*", @@ -8631,11 +8659,11 @@ }, { "name": "magento/module-grouped-catalog-inventory", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-catalog-inventory/magento-module-grouped-catalog-inventory-100.4.1.0.zip", - "shasum": "2b379e8f6334f565440c4f738dc965e21e4e75b1" + "url": "https://repo.magento.com/archives/magento/module-grouped-catalog-inventory/magento-module-grouped-catalog-inventory-100.4.2.0.zip", + "shasum": "ff1404f454d460b4fb54db48de9fd701ff4c7686" }, "require": { "magento/framework": "103.0.*", @@ -8661,11 +8689,11 @@ }, { "name": "magento/module-grouped-import-export", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-import-export/magento-module-grouped-import-export-100.4.2.0.zip", - "shasum": "f902e7c7563ebd987f292c34b011b8c5160af6e8" + "url": "https://repo.magento.com/archives/magento/module-grouped-import-export/magento-module-grouped-import-export-100.4.3.0.zip", + "shasum": "ac071186b6f3f875d1045231f5ddd83ecc46081e" }, "require": { "magento/framework": "103.0.*", @@ -8693,11 +8721,11 @@ }, { "name": "magento/module-grouped-product", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-product/magento-module-grouped-product-100.4.4.0.zip", - "shasum": "f270edece8c486b09e4ad6013cf6211c431ec860" + "url": "https://repo.magento.com/archives/magento/module-grouped-product/magento-module-grouped-product-100.4.5.0.zip", + "shasum": "d70bf64e35d023697a13bee7d34e7d6b6c8ea8e8" }, "require": { "magento/framework": "103.0.*", @@ -8736,11 +8764,11 @@ }, { "name": "magento/module-grouped-product-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-grouped-product-graph-ql/magento-module-grouped-product-graph-ql-100.4.4.0.zip", - "shasum": "5baed8343dc5e6d32c29939e8596c447b1b295c6" + "url": "https://repo.magento.com/archives/magento/module-grouped-product-graph-ql/magento-module-grouped-product-graph-ql-100.4.5.0.zip", + "shasum": "3485298a82d7aa23bcae3ecd12d980569420b44d" }, "require": { "magento/framework": "103.0.*", @@ -8766,11 +8794,11 @@ }, { "name": "magento/module-import-export", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-import-export/magento-module-import-export-101.0.4.0.zip", - "shasum": "3087bdbb3e5e28efa45f1fd7b7e0b347480d2225" + "url": "https://repo.magento.com/archives/magento/module-import-export/magento-module-import-export-101.0.5.0.zip", + "shasum": "d83b1dd4c0dac78116eb9c750c3ce0e50a5bd514" }, "require": { "ext-ctype": "*", @@ -8800,11 +8828,11 @@ }, { "name": "magento/module-indexer", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-indexer/magento-module-indexer-100.4.4.0.zip", - "shasum": "d5fd2a2d9db69e8f9901b9b84059fc7b50a003f3" + "url": "https://repo.magento.com/archives/magento/module-indexer/magento-module-indexer-100.4.5.0.zip", + "shasum": "6b16b0e77c9b562b93a6489dacc3602726f0f970" }, "require": { "magento/framework": "103.0.*", @@ -8828,11 +8856,11 @@ }, { "name": "magento/module-instant-purchase", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-instant-purchase/magento-module-instant-purchase-100.4.3.0.zip", - "shasum": "f17aa3a22a310898ccb7003a032b2cacbac191aa" + "url": "https://repo.magento.com/archives/magento/module-instant-purchase/magento-module-instant-purchase-100.4.4.0.zip", + "shasum": "04849d6cf80a8755c9382ec4c2c68a5b84cafed9" }, "require": { "magento/framework": "103.0.*", @@ -8862,11 +8890,11 @@ }, { "name": "magento/module-integration", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-integration/magento-module-integration-100.4.4.0.zip", - "shasum": "9822538189688906a2a4805b9d29c50823305517" + "url": "https://repo.magento.com/archives/magento/module-integration/magento-module-integration-100.4.5.0.zip", + "shasum": "9128a75504ec75ae3f6c9eb241e47cd59ca0a79a" }, "require": { "magento/framework": "103.0.*", @@ -8896,11 +8924,11 @@ }, { "name": "magento/module-inventory", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory/magento-module-inventory-1.2.2.0.zip", - "shasum": "4bb63e6907c1c2e72bf3e45ad1bb2e2093e05fdb" + "url": "https://repo.magento.com/archives/magento/module-inventory/magento-module-inventory-1.2.3.0.zip", + "shasum": "95762911d52281f6f2c83bc4a1d4a424c7e9c8e4" }, "require": { "magento/framework": "*", @@ -8924,11 +8952,11 @@ }, { "name": "magento/module-inventory-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-admin-ui/magento-module-inventory-admin-ui-1.2.2.0.zip", - "shasum": "53b93bfad430202fb849e88c8b5c29bdb87a4c23" + "url": "https://repo.magento.com/archives/magento/module-inventory-admin-ui/magento-module-inventory-admin-ui-1.2.3.0.zip", + "shasum": "5a3570a7c41ace3ce43e008b08a12d3a963b994c" }, "require": { "magento/framework": "*", @@ -8957,11 +8985,11 @@ }, { "name": "magento/module-inventory-advanced-checkout", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-advanced-checkout/magento-module-inventory-advanced-checkout-1.2.1.0.zip", - "shasum": "9933ec6f37431cdf3434ef124ea3c1c2c3e010ab" + "url": "https://repo.magento.com/archives/magento/module-inventory-advanced-checkout/magento-module-inventory-advanced-checkout-1.2.2.0.zip", + "shasum": "7a97a63c8df73993061a8245152ff8ab1d1efc1f" }, "require": { "magento/framework": "*", @@ -8990,11 +9018,11 @@ }, { "name": "magento/module-inventory-api", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-api/magento-module-inventory-api-1.2.2.0.zip", - "shasum": "8b3187fe488715330e995fa9f5c30113c3e7a205" + "url": "https://repo.magento.com/archives/magento/module-inventory-api/magento-module-inventory-api-1.2.3.0.zip", + "shasum": "1c18de713cfd76017feab2fd3dcfbf98ed06d23f" }, "require": { "magento/framework": "*", @@ -9048,11 +9076,11 @@ }, { "name": "magento/module-inventory-bundle-product", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product/magento-module-inventory-bundle-product-1.2.1.0.zip", - "shasum": "ee029870f26635a42c7b02890ca14c063e692068" + "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product/magento-module-inventory-bundle-product-1.2.2.0.zip", + "shasum": "a59d6856469b947d34060eaf607d3883812705dc" }, "require": { "magento/framework": "*", @@ -9066,7 +9094,8 @@ "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-catalog-inventory": "*" + "magento/module-catalog-inventory": "*", + "magento/module-inventory": "1.2.*" }, "type": "magento2-module", "autoload": { @@ -9120,11 +9149,11 @@ }, { "name": "magento/module-inventory-bundle-product-indexer", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product-indexer/magento-module-inventory-bundle-product-indexer-1.1.1.0.zip", - "shasum": "b0c37d374a497e79ce5a3c8330ead9c5fdfff7d6" + "url": "https://repo.magento.com/archives/magento/module-inventory-bundle-product-indexer/magento-module-inventory-bundle-product-indexer-1.1.2.0.zip", + "shasum": "c31b980f56a832a8ca4ddd3c0e0a4c9265ef8756" }, "require": { "magento/framework": "*", @@ -9132,7 +9161,7 @@ "magento/module-catalog": "*", "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -9156,16 +9185,16 @@ }, { "name": "magento/module-inventory-cache", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-cache/magento-module-inventory-cache-1.2.2.0.zip", - "shasum": "6fdc88f3b63bba2518f70c8bc034f01d1b6c45f0" + "url": "https://repo.magento.com/archives/magento/module-inventory-cache/magento-module-inventory-cache-1.2.3.0.zip", + "shasum": "c706f5eddf9e17263d547285cde654213ab14ed8" }, "require": { "magento/framework": "*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "php": "~7.4.0||~8.1.0" }, "suggest": { @@ -9188,11 +9217,11 @@ }, { "name": "magento/module-inventory-catalog", - "version": "1.2.2", + "version": "1.3.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog/magento-module-inventory-catalog-1.2.2.0.zip", - "shasum": "03a80e7330a5cc9b8148980bc787aff5c4df8774" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog/magento-module-inventory-catalog-1.3.0.0.zip", + "shasum": "bd8a6f795fdeb474199f6c3de5c753999f5b06d8" }, "require": { "magento/framework": "*", @@ -9203,7 +9232,7 @@ "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration": "1.2.*", "magento/module-inventory-configuration-api": "1.2.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -9228,11 +9257,11 @@ }, { "name": "magento/module-inventory-catalog-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-admin-ui/magento-module-inventory-catalog-admin-ui-1.2.2.0.zip", - "shasum": "0e03dd0e3970d3d6a98710036fa8d56739da696d" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-admin-ui/magento-module-inventory-catalog-admin-ui-1.2.3.0.zip", + "shasum": "3f58ba52984b657f01bd920cd63f54b25b0476c6" }, "require": { "magento/framework": "*", @@ -9243,7 +9272,7 @@ "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-ui": "*", "php": "~7.4.0||~8.1.0" }, @@ -9267,11 +9296,11 @@ }, { "name": "magento/module-inventory-catalog-api", - "version": "1.3.2", + "version": "1.3.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-api/magento-module-inventory-catalog-api-1.3.2.0.zip", - "shasum": "67f67ac031d060bc8879b65f39da8d125a66a1f7" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-api/magento-module-inventory-catalog-api-1.3.3.0.zip", + "shasum": "aa8bcc447d6990a1d85c6984d0f8c5093c26d057" }, "require": { "magento/framework": "*", @@ -9327,18 +9356,18 @@ }, { "name": "magento/module-inventory-catalog-search", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-search/magento-module-inventory-catalog-search-1.2.2.0.zip", - "shasum": "253ea183349fd502a5f171562515978856d6deee" + "url": "https://repo.magento.com/archives/magento/module-inventory-catalog-search/magento-module-inventory-catalog-search-1.2.3.0.zip", + "shasum": "745e2b237b9165ccdf7699eee7667f8630657a26" }, "require": { "magento/framework": "*", "magento/module-catalog-inventory": "*", "magento/module-catalog-search": "*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -9422,19 +9451,21 @@ }, { "name": "magento/module-inventory-configurable-product", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product/magento-module-inventory-configurable-product-1.2.2.0.zip", - "shasum": "ad8eb9c6e97ec76dfa0009a097212acf962b1399" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product/magento-module-inventory-configurable-product-1.2.3.0.zip", + "shasum": "80834ce90b323094f7e5bd087670fae139f37f4e" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", "magento/module-catalog-inventory": "*", "magento/module-configurable-product": "*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-configuration": "1.2.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-sales": "*", "magento/module-store": "*", @@ -9461,11 +9492,11 @@ }, { "name": "magento/module-inventory-configurable-product-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-admin-ui/magento-module-inventory-configurable-product-admin-ui-1.2.2.0.zip", - "shasum": "2ba385af6decc80a58b5a4fd933d821378a266c2" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-admin-ui/magento-module-inventory-configurable-product-admin-ui-1.2.3.0.zip", + "shasum": "3b4778a054792c0b8a0a6d26800c6826ceb2b30f" }, "require": { "magento/framework": "*", @@ -9493,11 +9524,11 @@ }, { "name": "magento/module-inventory-configurable-product-frontend-ui", - "version": "1.0.2", + "version": "1.0.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-frontend-ui/magento-module-inventory-configurable-product-frontend-ui-1.0.2.0.zip", - "shasum": "c70203555cd7197a3d805eeef836e14f10624856" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-frontend-ui/magento-module-inventory-configurable-product-frontend-ui-1.0.3.0.zip", + "shasum": "d0d3fa89eaa7b634a767b2844a13340239f8e457" }, "require": { "magento/framework": "*", @@ -9507,7 +9538,7 @@ "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-configurable-product": "1.2.*" }, "type": "magento2-module", @@ -9527,18 +9558,18 @@ }, { "name": "magento/module-inventory-configurable-product-indexer", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-indexer/magento-module-inventory-configurable-product-indexer-1.2.2.0.zip", - "shasum": "5b446a185e3df420f8c1743a27a4fdbebe188780" + "url": "https://repo.magento.com/archives/magento/module-inventory-configurable-product-indexer/magento-module-inventory-configurable-product-indexer-1.2.3.0.zip", + "shasum": "53830f28064354070f57b5789efbbf9693cbb0f8" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -9707,18 +9738,18 @@ }, { "name": "magento/module-inventory-elasticsearch", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-elasticsearch/magento-module-inventory-elasticsearch-1.2.1.0.zip", - "shasum": "23d8198b76b2a623e7d0bb862e5d74d5ccb64bbc" + "url": "https://repo.magento.com/archives/magento/module-inventory-elasticsearch/magento-module-inventory-elasticsearch-1.2.2.0.zip", + "shasum": "bd5c9005fd40928b783d41cae1bef66324624d9a" }, "require": { "magento/framework": "*", "magento/module-catalog-inventory": "*", "magento/module-catalog-search": "*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -9740,11 +9771,11 @@ }, { "name": "magento/module-inventory-export-stock", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-export-stock/magento-module-inventory-export-stock-1.2.1.0.zip", - "shasum": "fad446b29c587b59488a0802a61625445f443106" + "url": "https://repo.magento.com/archives/magento/module-inventory-export-stock/magento-module-inventory-export-stock-1.2.2.0.zip", + "shasum": "fc59b1eb23bbf38d0b146deec03818a05dfb45f9" }, "require": { "magento/framework": "*", @@ -9756,8 +9787,8 @@ "magento/module-inventory-configuration": "1.2.*", "magento/module-inventory-configuration-api": "1.2.*", "magento/module-inventory-export-stock-api": "1.2.*", - "magento/module-inventory-indexer": "2.1.*", - "magento/module-inventory-sales": "1.2.*", + "magento/module-inventory-indexer": "2.2.*", + "magento/module-inventory-sales": "1.3.*", "magento/module-inventory-sales-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -9806,16 +9837,16 @@ }, { "name": "magento/module-inventory-graph-ql", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-graph-ql/magento-module-inventory-graph-ql-1.2.1.0.zip", - "shasum": "2ea1ee7d52365e6f8cf5dae709bbffa8b9b986ac" + "url": "https://repo.magento.com/archives/magento/module-inventory-graph-ql/magento-module-inventory-graph-ql-1.2.2.0.zip", + "shasum": "13fe79e0a209e8f4b8802f376f7ed5c78033c9ea" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*", "magento/module-inventory-sales-api": "1.2.*", "php": "~7.4.0||~8.1.0" @@ -9837,11 +9868,11 @@ }, { "name": "magento/module-inventory-grouped-product", - "version": "1.2.2", + "version": "1.3.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product/magento-module-inventory-grouped-product-1.2.2.0.zip", - "shasum": "14428f762e93a2a67f5602aafdeaf2f51a1d2bad" + "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product/magento-module-inventory-grouped-product-1.3.0.0.zip", + "shasum": "adc82ef5c6200042e435c3e02a1ac5fd1eddfaea" }, "require": { "magento/framework": "*", @@ -9849,7 +9880,9 @@ "php": "~7.4.0||~8.1.0" }, "suggest": { - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory": "1.2.*", + "magento/module-inventory-api": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*" }, @@ -9906,11 +9939,11 @@ }, { "name": "magento/module-inventory-grouped-product-indexer", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product-indexer/magento-module-inventory-grouped-product-indexer-1.2.2.0.zip", - "shasum": "b832f6c85e65bf0bacbb98e0930c5a9ff076a85b" + "url": "https://repo.magento.com/archives/magento/module-inventory-grouped-product-indexer/magento-module-inventory-grouped-product-indexer-1.2.3.0.zip", + "shasum": "5c59f02bc9c546d5ea951bca28d47a476375b576" }, "require": { "magento/framework": "*", @@ -9918,7 +9951,7 @@ "magento/module-grouped-product": "*", "magento/module-inventory-api": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -9942,11 +9975,11 @@ }, { "name": "magento/module-inventory-import-export", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-import-export/magento-module-inventory-import-export-1.2.2.0.zip", - "shasum": "6b0908f2762854d758f25cd9013d132f48824c95" + "url": "https://repo.magento.com/archives/magento/module-inventory-import-export/magento-module-inventory-import-export-1.2.3.0.zip", + "shasum": "4da076d2b7f17b0f2e3cb7f177ba4f29a04e451e" }, "require": { "magento/framework": "*", @@ -10014,11 +10047,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-admin-ui", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-admin-ui/magento-module-inventory-in-store-pickup-admin-ui-1.1.1.0.zip", - "shasum": "42178b7dc79541c756781455cbf5f02c007ea124" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-admin-ui/magento-module-inventory-in-store-pickup-admin-ui-1.1.2.0.zip", + "shasum": "90ccb79901dac65e512ccf7c108db13dc85b8e86" }, "require": { "magento/framework": "*", @@ -10074,11 +10107,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-frontend", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-frontend/magento-module-inventory-in-store-pickup-frontend-1.1.2.0.zip", - "shasum": "24ac803405f8ea0332b9513b1ae30e36db2c61cd" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-frontend/magento-module-inventory-in-store-pickup-frontend-1.1.3.0.zip", + "shasum": "74656159bd3ce588f5753293d1f3727d4a11efcb" }, "require": { "magento/framework": "*", @@ -10106,11 +10139,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-graph-ql", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-graph-ql/magento-module-inventory-in-store-pickup-graph-ql-1.1.1.0.zip", - "shasum": "3d05dbd9393d1a8b6dfe369629df073a78168492" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-graph-ql/magento-module-inventory-in-store-pickup-graph-ql-1.1.2.0.zip", + "shasum": "0070833a277daace18e32a0a56221c52fedc1085" }, "require": { "magento/framework": "*", @@ -10262,11 +10295,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-sales-admin-ui", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-sales-admin-ui/magento-module-inventory-in-store-pickup-sales-admin-ui-1.1.2.0.zip", - "shasum": "ab15da29b0f01e44450db535ed0937f083c5f23b" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-sales-admin-ui/magento-module-inventory-in-store-pickup-sales-admin-ui-1.1.3.0.zip", + "shasum": "b743a3b50262cdf785894d7b2b30373e7edec095" }, "require": { "magento/framework": "*", @@ -10325,11 +10358,11 @@ }, { "name": "magento/module-inventory-in-store-pickup-shipping", - "version": "1.1.1", + "version": "1.1.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-shipping/magento-module-inventory-in-store-pickup-shipping-1.1.1.0.zip", - "shasum": "44e46745848b85a67a64603366e63867c066fb51" + "url": "https://repo.magento.com/archives/magento/module-inventory-in-store-pickup-shipping/magento-module-inventory-in-store-pickup-shipping-1.1.2.0.zip", + "shasum": "55e273b1c4c562da7253f7aba4ef989558ba6dd0" }, "require": { "magento/framework": "*", @@ -10447,11 +10480,11 @@ }, { "name": "magento/module-inventory-indexer", - "version": "2.1.2", + "version": "2.2.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-indexer/magento-module-inventory-indexer-2.1.2.0.zip", - "shasum": "ecbaa18d6186081218c80f3f3c72cecbf9566d74" + "url": "https://repo.magento.com/archives/magento/module-inventory-indexer/magento-module-inventory-indexer-2.2.0.0.zip", + "shasum": "a75708ded25fa8487eaf492e856eec0208dd55d3" }, "require": { "magento/framework": "*", @@ -10461,7 +10494,7 @@ "magento/module-inventory-catalog-api": "1.3.*", "magento/module-inventory-configuration-api": "1.2.*", "magento/module-inventory-multi-dimensional-indexer-api": "1.2.*", - "magento/module-inventory-sales": "1.2.*", + "magento/module-inventory-sales": "1.3.*", "magento/module-inventory-sales-api": "1.2.*", "php": "~7.4.0||~8.1.0" }, @@ -10485,11 +10518,11 @@ }, { "name": "magento/module-inventory-low-quantity-notification", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification/magento-module-inventory-low-quantity-notification-1.2.1.0.zip", - "shasum": "5833d1a793883ce4ae78eb48774fd645537c6340" + "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification/magento-module-inventory-low-quantity-notification-1.2.2.0.zip", + "shasum": "70af3497ec61d7f65a4184bc0819397823b60e7e" }, "require": { "magento/framework": "*", @@ -10557,11 +10590,11 @@ }, { "name": "magento/module-inventory-low-quantity-notification-api", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification-api/magento-module-inventory-low-quantity-notification-api-1.2.1.0.zip", - "shasum": "0fb0e01c229aef5e7069616bd03b1577d7f9937d" + "url": "https://repo.magento.com/archives/magento/module-inventory-low-quantity-notification-api/magento-module-inventory-low-quantity-notification-api-1.2.2.0.zip", + "shasum": "76c5cb447576246350587be50778b97d2ececece" }, "require": { "magento/framework": "*", @@ -10647,15 +10680,15 @@ }, { "name": "magento/module-inventory-quote-graph-ql", - "version": "1.0.1", + "version": "1.0.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-quote-graph-ql/magento-module-inventory-quote-graph-ql-1.0.1.0.zip", - "shasum": "4f270910188389f21166a19aafd568693c4e6791" + "url": "https://repo.magento.com/archives/magento/module-inventory-quote-graph-ql/magento-module-inventory-quote-graph-ql-1.0.2.0.zip", + "shasum": "353666ad869e094f0c5369b845852db9fea1488b" }, "require": { "magento/framework": "*", - "magento/module-inventory-catalog": "1.2.*", + "magento/module-inventory-catalog": "1.3.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-quote": "*", "magento/module-quote-graph-ql": "*", @@ -10678,11 +10711,11 @@ }, { "name": "magento/module-inventory-requisition-list", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-requisition-list/magento-module-inventory-requisition-list-1.2.2.0.zip", - "shasum": "1aae798848ceceab7d59d0d057c2da81a4541ac6" + "url": "https://repo.magento.com/archives/magento/module-inventory-requisition-list/magento-module-inventory-requisition-list-1.2.3.0.zip", + "shasum": "b9f6581f60cfb4249f1a3270d5ae32eaffacf821" }, "require": { "magento/framework": "*", @@ -10797,11 +10830,11 @@ }, { "name": "magento/module-inventory-sales", - "version": "1.2.2", + "version": "1.3.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-sales/magento-module-inventory-sales-1.2.2.0.zip", - "shasum": "f2fd9ab2b4cbdb982b7ce467c1a6a4323dd5715a" + "url": "https://repo.magento.com/archives/magento/module-inventory-sales/magento-module-inventory-sales-1.3.0.0.zip", + "shasum": "abd02e8c8e9f5dc6c008f11b33d6e09c7d7739c0" }, "require": { "magento/framework": "*", @@ -10824,7 +10857,7 @@ "magento/module-inventory-indexer": "*" }, "suggest": { - "magento/module-inventory-catalog": "1.2.*" + "magento/module-inventory-catalog": "1.3.*" }, "type": "magento2-module", "autoload": { @@ -10843,11 +10876,11 @@ }, { "name": "magento/module-inventory-sales-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-sales-admin-ui/magento-module-inventory-sales-admin-ui-1.2.2.0.zip", - "shasum": "e2f5cc0489661885f7c1199bfe3068de83024c99" + "url": "https://repo.magento.com/archives/magento/module-inventory-sales-admin-ui/magento-module-inventory-sales-admin-ui-1.2.3.0.zip", + "shasum": "d30ef3bc7f23e8041961d4bd5e435520ddcef448" }, "require": { "magento/framework": "*", @@ -10883,11 +10916,11 @@ }, { "name": "magento/module-inventory-sales-api", - "version": "1.2.1", + "version": "1.2.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-sales-api/magento-module-inventory-sales-api-1.2.1.0.zip", - "shasum": "d2e6bd3c5528b313d8c9de95f350a983a6373c05" + "url": "https://repo.magento.com/archives/magento/module-inventory-sales-api/magento-module-inventory-sales-api-1.2.2.0.zip", + "shasum": "467ab9d52944df86b9fdd5fba0f90880e51e7389" }, "require": { "magento/framework": "*", @@ -11005,11 +11038,11 @@ }, { "name": "magento/module-inventory-shipping-admin-ui", - "version": "1.2.2", + "version": "1.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-shipping-admin-ui/magento-module-inventory-shipping-admin-ui-1.2.2.0.zip", - "shasum": "d71a3e7987e4208f961de4a5c58a18bd5f2c4e7c" + "url": "https://repo.magento.com/archives/magento/module-inventory-shipping-admin-ui/magento-module-inventory-shipping-admin-ui-1.2.3.0.zip", + "shasum": "c2ac5ede4b57a3867e16d6b902d6bc009c3b8c58" }, "require": { "magento/framework": "*", @@ -11100,11 +11133,11 @@ }, { "name": "magento/module-inventory-source-selection-api", - "version": "1.4.1", + "version": "1.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-source-selection-api/magento-module-inventory-source-selection-api-1.4.1.0.zip", - "shasum": "ad89e01a9be6b34ff55b7e58c724df6859444592" + "url": "https://repo.magento.com/archives/magento/module-inventory-source-selection-api/magento-module-inventory-source-selection-api-1.4.2.0.zip", + "shasum": "a75b7cbad48bd870065ab223025d1db4c8bdb557" }, "require": { "magento/framework": "*", @@ -11162,18 +11195,18 @@ }, { "name": "magento/module-inventory-visual-merchandiser", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-visual-merchandiser/magento-module-inventory-visual-merchandiser-1.1.2.0.zip", - "shasum": "d01ca2ece52c64d24f55933fe433be59b5aa8d7a" + "url": "https://repo.magento.com/archives/magento/module-inventory-visual-merchandiser/magento-module-inventory-visual-merchandiser-1.1.3.0.zip", + "shasum": "e4b58f90e087e3ee5c942180e077562386e8c596" }, "require": { "magento/framework": "*", "magento/module-catalog": "*", "magento/module-inventory": "1.2.*", "magento/module-inventory-catalog-api": "1.3.*", - "magento/module-inventory-indexer": "2.1.*", + "magento/module-inventory-indexer": "2.2.*", "magento/module-inventory-sales-api": "1.2.*", "magento/module-store": "*", "php": "~7.4.0||~8.1.0" @@ -11202,11 +11235,11 @@ }, { "name": "magento/module-inventory-wishlist", - "version": "1.0.1", + "version": "1.0.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-inventory-wishlist/magento-module-inventory-wishlist-1.0.1.0.zip", - "shasum": "f77fa1a0164fe29b63fd1f8c86a54badd68b499f" + "url": "https://repo.magento.com/archives/magento/module-inventory-wishlist/magento-module-inventory-wishlist-1.0.2.0.zip", + "shasum": "41c2b5a4a914dddeb3167f6d473edde45ef6d1e4" }, "require": { "magento/framework": "*", @@ -11290,11 +11323,11 @@ }, { "name": "magento/module-layered-navigation", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-layered-navigation/magento-module-layered-navigation-100.4.4.0.zip", - "shasum": "2bf329a8c208a400b6dfb6915c01277caf363463" + "url": "https://repo.magento.com/archives/magento/module-layered-navigation/magento-module-layered-navigation-100.4.5.0.zip", + "shasum": "041332d2eba4f0e72e4411c75fa57ebab90681ef" }, "require": { "magento/framework": "103.0.*", @@ -11319,11 +11352,11 @@ }, { "name": "magento/module-login-as-customer", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer/magento-module-login-as-customer-100.4.4.0.zip", - "shasum": "114ae73b8319f3173d14c2796c0b18d8c863a9e3" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer/magento-module-login-as-customer-100.4.5.0.zip", + "shasum": "1376e771612b41176ca91a05631335db0f75f20b" }, "require": { "magento/framework": "103.0.*", @@ -11352,11 +11385,11 @@ }, { "name": "magento/module-login-as-customer-admin-ui", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-admin-ui/magento-module-login-as-customer-admin-ui-100.4.4.0.zip", - "shasum": "8ab74540c0109c756148aa0ba329c0f05a12a16a" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-admin-ui/magento-module-login-as-customer-admin-ui-100.4.5.0.zip", + "shasum": "4e86c5f465e7cd9fe3f54c93d0c97a621fa82453" }, "require": { "magento/framework": "103.0.*", @@ -11387,11 +11420,11 @@ }, { "name": "magento/module-login-as-customer-api", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-api/magento-module-login-as-customer-api-100.4.3.0.zip", - "shasum": "74b923b14a6912c1b0b887912171c520f030ff81" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-api/magento-module-login-as-customer-api-100.4.4.0.zip", + "shasum": "c0f84e01b3d0bdc3af53ecc7f5d58d504dd5fdcb" }, "require": { "magento/framework": "103.0.*", @@ -11414,11 +11447,11 @@ }, { "name": "magento/module-login-as-customer-assistance", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-assistance/magento-module-login-as-customer-assistance-100.4.3.0.zip", - "shasum": "af4e2a7066621f1109c01c4b1f48efbaf2c8fcc3" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-assistance/magento-module-login-as-customer-assistance-100.4.4.0.zip", + "shasum": "9b046099d5486eab457c61fa4a38550eccad7fc1" }, "require": { "magento/framework": "103.0.*", @@ -11478,11 +11511,11 @@ }, { "name": "magento/module-login-as-customer-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-login-as-customer-graph-ql/magento-module-login-as-customer-graph-ql-100.4.1.0.zip", - "shasum": "1f573808b1bf2c486f28a1a1d83ded398bcaeb60" + "url": "https://repo.magento.com/archives/magento/module-login-as-customer-graph-ql/magento-module-login-as-customer-graph-ql-100.4.2.0.zip", + "shasum": "1528b2b3c62fb996a616efcf04473151e6cb89e0" }, "require": { "magento/framework": "103.0.*", @@ -11699,11 +11732,11 @@ }, { "name": "magento/module-media-content-api", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-content-api/magento-module-media-content-api-100.4.3.0.zip", - "shasum": "7bafa26cbd67a38d77a787543072d7c2bb2c64fa" + "url": "https://repo.magento.com/archives/magento/module-media-content-api/magento-module-media-content-api-100.4.4.0.zip", + "shasum": "e235e273fc88a016d1bd3bb81d50002eb092b6de" }, "require": { "magento/framework": "103.0.*", @@ -11787,11 +11820,11 @@ }, { "name": "magento/module-media-content-synchronization", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization/magento-module-media-content-synchronization-100.4.3.0.zip", - "shasum": "a6f821d4a57165d3b5a267b5f25dd2ec1074df3f" + "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization/magento-module-media-content-synchronization-100.4.4.0.zip", + "shasum": "f5235ec268cb902322e6ba1befe6dfa6960859b5" }, "require": { "magento/framework": "103.0.*", @@ -11821,11 +11854,11 @@ }, { "name": "magento/module-media-content-synchronization-api", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization-api/magento-module-media-content-synchronization-api-100.4.2.0.zip", - "shasum": "a8f633156abd62b341ccbd1a0881257310edc0cd" + "url": "https://repo.magento.com/archives/magento/module-media-content-synchronization-api/magento-module-media-content-synchronization-api-100.4.3.0.zip", + "shasum": "55cab31f4c51604df8f417aa21e4314b45707ff8" }, "require": { "magento/framework": "103.0.*", @@ -11909,11 +11942,11 @@ }, { "name": "magento/module-media-gallery", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery/magento-module-media-gallery-100.4.3.0.zip", - "shasum": "8b8dc16349ba001dece052df1a95fc2e7056e2cf" + "url": "https://repo.magento.com/archives/magento/module-media-gallery/magento-module-media-gallery-100.4.4.0.zip", + "shasum": "a8c451eeaf64b4ee2ad79f23702982e9ae9f74d8" }, "require": { "magento/framework": "103.0.*", @@ -11938,11 +11971,11 @@ }, { "name": "magento/module-media-gallery-api", - "version": "101.0.3", + "version": "101.0.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-api/magento-module-media-gallery-api-101.0.3.0.zip", - "shasum": "f04cb38b143a96c0bbeadb29eff877e455163ac8" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-api/magento-module-media-gallery-api-101.0.4.0.zip", + "shasum": "8eefc82cff3278c0c04b295c71c8c689bd790d8c" }, "require": { "magento/framework": "103.0.*", @@ -12089,11 +12122,11 @@ }, { "name": "magento/module-media-gallery-integration", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-integration/magento-module-media-gallery-integration-100.4.3.0.zip", - "shasum": "a97ced3f07c725026d37211a8f1e5a7818ce5be4" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-integration/magento-module-media-gallery-integration-100.4.4.0.zip", + "shasum": "e3aa33bb7297034c6a59bc8fa6a836b35af70201" }, "require": { "magento/framework": "103.0.*", @@ -12127,11 +12160,11 @@ }, { "name": "magento/module-media-gallery-metadata", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata/magento-module-media-gallery-metadata-100.4.2.0.zip", - "shasum": "dc0ec2fe025be985e2e5016797b267b5546874b9" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata/magento-module-media-gallery-metadata-100.4.3.0.zip", + "shasum": "b8d1b916247a3ab2a73d5112ce7a38b4834c7474" }, "require": { "magento/framework": "103.0.*", @@ -12155,11 +12188,11 @@ }, { "name": "magento/module-media-gallery-metadata-api", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata-api/magento-module-media-gallery-metadata-api-100.4.1.0.zip", - "shasum": "da3051194151ab4e66cce1be05c61eee6bb15ec5" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-metadata-api/magento-module-media-gallery-metadata-api-100.4.2.0.zip", + "shasum": "a167dd435a3c6aadbf4ea436bb88ad7392a02be1" }, "require": { "magento/framework": "103.0.*", @@ -12182,11 +12215,11 @@ }, { "name": "magento/module-media-gallery-renditions", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions/magento-module-media-gallery-renditions-100.4.2.0.zip", - "shasum": "82ffa1e7db6aa2fbdd5d329cf243ed343e131366" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions/magento-module-media-gallery-renditions-100.4.3.0.zip", + "shasum": "d3c9da3d4bda169f9b687595281b056cc0db5020" }, "require": { "magento/framework": "103.0.*", @@ -12216,11 +12249,11 @@ }, { "name": "magento/module-media-gallery-renditions-api", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions-api/magento-module-media-gallery-renditions-api-100.4.1.0.zip", - "shasum": "8c1e522c1e4de823877d1a2a13552dc1fe945ffb" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-renditions-api/magento-module-media-gallery-renditions-api-100.4.2.0.zip", + "shasum": "c684de95cd58a68a5ded32ab1d54bc840eda078a" }, "require": { "magento/framework": "103.0.*", @@ -12243,11 +12276,11 @@ }, { "name": "magento/module-media-gallery-synchronization", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization/magento-module-media-gallery-synchronization-100.4.3.0.zip", - "shasum": "df985d270669d11f4acd77960cc48bea568cf313" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization/magento-module-media-gallery-synchronization-100.4.4.0.zip", + "shasum": "02578232663d1a7637f2d8c08ef49ae6421c449d" }, "require": { "magento/framework": "103.0.*", @@ -12273,11 +12306,11 @@ }, { "name": "magento/module-media-gallery-synchronization-api", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization-api/magento-module-media-gallery-synchronization-api-100.4.2.0.zip", - "shasum": "f87dc814bd9c921dfedd5b123c4dee573afc94cc" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-synchronization-api/magento-module-media-gallery-synchronization-api-100.4.3.0.zip", + "shasum": "be6d4f82a76fcc39db835401e2e9bd332ce78266" }, "require": { "magento/framework": "103.0.*", @@ -12331,11 +12364,11 @@ }, { "name": "magento/module-media-gallery-ui", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui/magento-module-media-gallery-ui-100.4.3.0.zip", - "shasum": "a3fd101844ef89b5dfef2d4fe4cb8ee534a3a419" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui/magento-module-media-gallery-ui-100.4.4.0.zip", + "shasum": "66c54e0b853754f695253a23286a88c4bce8fd82" }, "require": { "magento/framework": "103.0.*", @@ -12369,11 +12402,11 @@ }, { "name": "magento/module-media-gallery-ui-api", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui-api/magento-module-media-gallery-ui-api-100.4.2.0.zip", - "shasum": "904fe7463a82ef25832080bc373c6df78710e7bf" + "url": "https://repo.magento.com/archives/magento/module-media-gallery-ui-api/magento-module-media-gallery-ui-api-100.4.3.0.zip", + "shasum": "eb813d47915354b0f5a3ad49381d5f55658d0f6c" }, "require": { "magento/framework": "103.0.*", @@ -12399,11 +12432,11 @@ }, { "name": "magento/module-media-storage", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-media-storage/magento-module-media-storage-100.4.3.0.zip", - "shasum": "d6d7bda754468621063b5b238fc3e84079cae0ee" + "url": "https://repo.magento.com/archives/magento/module-media-storage/magento-module-media-storage-100.4.4.0.zip", + "shasum": "6e3b469674fe41e8f8bd36b296908734028fd45b" }, "require": { "magento/framework": "103.0.*", @@ -12434,11 +12467,11 @@ }, { "name": "magento/module-message-queue", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-message-queue/magento-module-message-queue-100.4.4.0.zip", - "shasum": "35d67930b7773bafde64bb33c6a4a798f75dc48f" + "url": "https://repo.magento.com/archives/magento/module-message-queue/magento-module-message-queue-100.4.5.0.zip", + "shasum": "c22f018c65c4699bd606f1f8997f914d13886cf1" }, "require": { "magento/framework": "103.0.*", @@ -12463,11 +12496,11 @@ }, { "name": "magento/module-msrp", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-msrp/magento-module-msrp-100.4.3.0.zip", - "shasum": "5e15e57618e975581e0096857d1624d0f6d5a010" + "url": "https://repo.magento.com/archives/magento/module-msrp/magento-module-msrp-100.4.4.0.zip", + "shasum": "bd055d354e6ac6d952af52deb3b4cffd58f20b26" }, "require": { "magento/framework": "103.0.*", @@ -12559,11 +12592,11 @@ }, { "name": "magento/module-multishipping", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-multishipping/magento-module-multishipping-100.4.4.0.zip", - "shasum": "541ef110683b9377bd76f6db4fc8627f881c76e0" + "url": "https://repo.magento.com/archives/magento/module-multishipping/magento-module-multishipping-100.4.5.0.zip", + "shasum": "86c08ce0688695d8f4dba94a98c96a11a725f19d" }, "require": { "magento/framework": "103.0.*", @@ -12596,11 +12629,11 @@ }, { "name": "magento/module-mysql-mq", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-mysql-mq/magento-module-mysql-mq-100.4.2.0.zip", - "shasum": "5cad1edddead40f38e51f8446f1eac4e51f097dc" + "url": "https://repo.magento.com/archives/magento/module-mysql-mq/magento-module-mysql-mq-100.4.3.0.zip", + "shasum": "244ce82923f4b37efc9da06bda19dc194280ecab" }, "require": { "magento/framework": "103.0.*", @@ -12626,11 +12659,11 @@ }, { "name": "magento/module-new-relic-reporting", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-new-relic-reporting/magento-module-new-relic-reporting-100.4.2.0.zip", - "shasum": "fee191801653dd71f556f3f7b93ff132b403610f" + "url": "https://repo.magento.com/archives/magento/module-new-relic-reporting/magento-module-new-relic-reporting-100.4.3.0.zip", + "shasum": "8bd8d00d689cb7cc2203ae0e6f3aab77c5f81496" }, "require": { "magento/framework": "103.0.*", @@ -12660,11 +12693,11 @@ }, { "name": "magento/module-newsletter", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-newsletter/magento-module-newsletter-100.4.4.0.zip", - "shasum": "cf43af43a4d0f074c640c1f9b25fe0305fe736b5" + "url": "https://repo.magento.com/archives/magento/module-newsletter/magento-module-newsletter-100.4.5.0.zip", + "shasum": "fb7c42f608275e4c6a234287edb5a89f1c9a2d58" }, "require": { "magento/framework": "103.0.*", @@ -12696,11 +12729,11 @@ }, { "name": "magento/module-newsletter-graph-ql", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-newsletter-graph-ql/magento-module-newsletter-graph-ql-100.4.1.0.zip", - "shasum": "9625fab7c5320b8f3f0f7affc4646e99a6951ad9" + "url": "https://repo.magento.com/archives/magento/module-newsletter-graph-ql/magento-module-newsletter-graph-ql-100.4.2.0.zip", + "shasum": "570aed7c33d87714a1b812e5316d9903ba865ae4" }, "require": { "magento/framework": "103.0.*", @@ -12762,11 +12795,11 @@ }, { "name": "magento/module-offline-shipping", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-offline-shipping/magento-module-offline-shipping-100.4.3.0.zip", - "shasum": "9435b928d6833e745e801137b35a397cbb41a01f" + "url": "https://repo.magento.com/archives/magento/module-offline-shipping/magento-module-offline-shipping-100.4.4.0.zip", + "shasum": "02167bd6af953e852803fe11b4b79bb799e8a9ee" }, "require": { "magento/framework": "103.0.*", @@ -12802,11 +12835,11 @@ }, { "name": "magento/module-page-builder", - "version": "2.2.2", + "version": "2.2.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-page-builder/magento-module-page-builder-2.2.2.0.zip", - "shasum": "21f3d7f30d83795c1920308acb3e936e7666b876" + "url": "https://repo.magento.com/archives/magento/module-page-builder/magento-module-page-builder-2.2.3.0.zip", + "shasum": "5e754e262ebaa46dc7f08cd258c5e3b9a8b3487b" }, "require": { "magento/framework": "103.0.*", @@ -12911,15 +12944,16 @@ }, { "name": "magento/module-page-cache", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-page-cache/magento-module-page-cache-100.4.4.0.zip", - "shasum": "86488eb5329f143529d35dfbb6a8108e471d8198" + "url": "https://repo.magento.com/archives/magento/module-page-cache/magento-module-page-cache-100.4.5.0.zip", + "shasum": "b6c3ab1dad0318b147d8a722d994e8241e2681a8" }, "require": { "magento/framework": "103.0.*", "magento/module-backend": "102.0.*", + "magento/module-catalog": "104.0.*", "magento/module-config": "101.2.*", "magento/module-store": "101.1.*", "php": "~7.4.0||~8.1.0" @@ -12941,11 +12975,11 @@ }, { "name": "magento/module-payment", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-payment/magento-module-payment-100.4.4.0.zip", - "shasum": "ba16255ab4a4e232de422128c83fb3817ea4aea0" + "url": "https://repo.magento.com/archives/magento/module-payment/magento-module-payment-100.4.5.0.zip", + "shasum": "1729b982a9c1ce9419459e06991ed8d63b4af6cc" }, "require": { "magento/framework": "103.0.*", @@ -13007,11 +13041,11 @@ }, { "name": "magento/module-paypal", - "version": "101.0.4", + "version": "101.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-paypal/magento-module-paypal-101.0.4.0.zip", - "shasum": "29225b4cbce7895c709a96682390126e99ab0f86" + "url": "https://repo.magento.com/archives/magento/module-paypal/magento-module-paypal-101.0.5.0.zip", + "shasum": "71c9e4667fd9eda0f2e2f87c987a65c60044221c" }, "require": { "lib-libxml": "*", @@ -13088,11 +13122,11 @@ }, { "name": "magento/module-paypal-graph-ql", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-paypal-graph-ql/magento-module-paypal-graph-ql-100.4.2.0.zip", - "shasum": "c21161b1a9343876979f10855968b906d196253c" + "url": "https://repo.magento.com/archives/magento/module-paypal-graph-ql/magento-module-paypal-graph-ql-100.4.3.0.zip", + "shasum": "4d59ba2805e7540fda1f6e5979145d9fce0a5cb6" }, "require": { "magento/framework": "103.0.*", @@ -13127,11 +13161,11 @@ }, { "name": "magento/module-persistent", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-persistent/magento-module-persistent-100.4.4.0.zip", - "shasum": "062dab52db6a05bcb25875dfddf1054760878bf5" + "url": "https://repo.magento.com/archives/magento/module-persistent/magento-module-persistent-100.4.5.0.zip", + "shasum": "950b3b9856f49aa0c5e8b6eef0e41cd231a74896" }, "require": { "magento/framework": "103.0.*", @@ -13160,11 +13194,11 @@ }, { "name": "magento/module-product-alert", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-product-alert/magento-module-product-alert-100.4.3.0.zip", - "shasum": "4d6c67208028fdb74bcc1bde4336ae70b2246d9e" + "url": "https://repo.magento.com/archives/magento/module-product-alert/magento-module-product-alert-100.4.4.0.zip", + "shasum": "d46bb9bd950e11d3d012a44d1a3602858559b2f4" }, "require": { "magento/framework": "103.0.*", @@ -13198,11 +13232,11 @@ }, { "name": "magento/module-product-video", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-product-video/magento-module-product-video-100.4.4.0.zip", - "shasum": "9d3518be12de9631c1faf916966222b05cfd3951" + "url": "https://repo.magento.com/archives/magento/module-product-video/magento-module-product-video-100.4.5.0.zip", + "shasum": "2f9b406f585e479cb2da5a90cc5467a6e429fd9d" }, "require": { "magento/framework": "103.0.*", @@ -13216,7 +13250,8 @@ }, "suggest": { "magento/module-config": "101.2.*", - "magento/module-customer": "103.0.*" + "magento/module-customer": "103.0.*", + "magento/module-theme": "101.1.*" }, "type": "magento2-module", "autoload": { @@ -13235,11 +13270,11 @@ }, { "name": "magento/module-quote", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-quote/magento-module-quote-101.2.4.0.zip", - "shasum": "841d3a277436875eda36913cfc71e8968ac5f79f" + "url": "https://repo.magento.com/archives/magento/module-quote/magento-module-quote-101.2.5.0.zip", + "shasum": "92dafbe73d3b3142724a7664cba3720e97e6afa1" }, "require": { "magento/framework": "103.0.*", @@ -13392,11 +13427,11 @@ }, { "name": "magento/module-quote-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-quote-graph-ql/magento-module-quote-graph-ql-100.4.4.0.zip", - "shasum": "e415b9e084f891e2629e34aec5bdd1c7c1a5433b" + "url": "https://repo.magento.com/archives/magento/module-quote-graph-ql/magento-module-quote-graph-ql-100.4.5.0.zip", + "shasum": "760f3c37cc1cb60701eb17a14c90f7bd135e071f" }, "require": { "magento/framework": "103.0.*", @@ -13497,11 +13532,11 @@ }, { "name": "magento/module-re-captcha-checkout-sales-rule", - "version": "1.1.0", + "version": "1.1.1", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-re-captcha-checkout-sales-rule/magento-module-re-captcha-checkout-sales-rule-1.1.0.0.zip", - "shasum": "325a360dcf9fb05ec64cc751ca43de83bd35a988" + "url": "https://repo.magento.com/archives/magento/module-re-captcha-checkout-sales-rule/magento-module-re-captcha-checkout-sales-rule-1.1.1.0.zip", + "shasum": "681d9b35cd5f9654c2e4f121108af84d54802b7b" }, "require": { "magento/framework": "*", @@ -13558,11 +13593,11 @@ }, { "name": "magento/module-re-captcha-customer", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-re-captcha-customer/magento-module-re-captcha-customer-1.1.2.0.zip", - "shasum": "858ad4b3d639ba7da86d380738da9d42fb6b6a55" + "url": "https://repo.magento.com/archives/magento/module-re-captcha-customer/magento-module-re-captcha-customer-1.1.3.0.zip", + "shasum": "4aacce4909811f75da30401696e5bfa0aaca1c45" }, "require": { "magento/framework": "*", @@ -13588,11 +13623,11 @@ }, { "name": "magento/module-re-captcha-frontend-ui", - "version": "1.1.2", + "version": "1.1.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-re-captcha-frontend-ui/magento-module-re-captcha-frontend-ui-1.1.2.0.zip", - "shasum": "77e37acce0e38f199e15b123bfa0377c971a311a" + "url": "https://repo.magento.com/archives/magento/module-re-captcha-frontend-ui/magento-module-re-captcha-frontend-ui-1.1.3.0.zip", + "shasum": "478b8b65b2dcdfcda38d065774b69a4ca5603c1f" }, "require": { "magento/framework": "*", @@ -14150,11 +14185,11 @@ }, { "name": "magento/module-release-notification", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-release-notification/magento-module-release-notification-100.4.2.0.zip", - "shasum": "56dfc07c4b0f63883a7b673dbb987b40379d9be4" + "url": "https://repo.magento.com/archives/magento/module-release-notification/magento-module-release-notification-100.4.3.0.zip", + "shasum": "cbcfb4e11a3961944e15971be5d76655867502f4" }, "require": { "magento/framework": "103.0.*", @@ -14183,13 +14218,15 @@ }, { "name": "magento/module-remote-storage", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-remote-storage/magento-module-remote-storage-100.4.2.0.zip", - "shasum": "820a8757e558fb1779768a3dcefb7d78953beceb" + "url": "https://repo.magento.com/archives/magento/module-remote-storage/magento-module-remote-storage-100.4.3.0.zip", + "shasum": "3047e17d09a6b74bfff57e33f318f78e91c67622" }, "require": { + "league/flysystem": "~2.4.3", + "league/flysystem-aws-s3-v3": "^2.4.3", "magento/framework": "103.0.*", "php": "~7.4.0||~8.1.0" }, @@ -14224,11 +14261,11 @@ }, { "name": "magento/module-reports", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-reports/magento-module-reports-100.4.4.0.zip", - "shasum": "54cdf7898e9ce88835c70bd98e6bf3768da1c0a8" + "url": "https://repo.magento.com/archives/magento/module-reports/magento-module-reports-100.4.5.0.zip", + "shasum": "f83a31e94a46f6ffdbf2c62d6ec0db87e7ebdd34" }, "require": { "magento/framework": "103.0.*", @@ -14295,11 +14332,11 @@ }, { "name": "magento/module-review", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-review/magento-module-review-100.4.4.0.zip", - "shasum": "54e088ec5c4fb4ca107a01092ddb3a4223ef0c3c" + "url": "https://repo.magento.com/archives/magento/module-review/magento-module-review-100.4.5.0.zip", + "shasum": "70e4692bf3f0da7b5e607f736b32a87e4b5124f2" }, "require": { "magento/framework": "103.0.*", @@ -14458,11 +14495,11 @@ }, { "name": "magento/module-rule", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-rule/magento-module-rule-100.4.3.0.zip", - "shasum": "1165df5b96f157a0cc5fad73926fc5385b26d90b" + "url": "https://repo.magento.com/archives/magento/module-rule/magento-module-rule-100.4.4.0.zip", + "shasum": "98fe15231d183581f48dcfe72813705fe3327389" }, "require": { "lib-libxml": "*", @@ -14490,11 +14527,11 @@ }, { "name": "magento/module-sales", - "version": "103.0.4", + "version": "103.0.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales/magento-module-sales-103.0.4.0.zip", - "shasum": "39837e3d9beab675da50c8cdd6055ca46267414f" + "url": "https://repo.magento.com/archives/magento/module-sales/magento-module-sales-103.0.5.0.zip", + "shasum": "15c3b85e28ec26ce31bb8e45ef6855eed526ab41" }, "require": { "magento/framework": "103.0.*", @@ -14573,11 +14610,11 @@ }, { "name": "magento/module-sales-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales-graph-ql/magento-module-sales-graph-ql-100.4.4.0.zip", - "shasum": "34fff9a44fed763cdd1958fa1a58b04960f62764" + "url": "https://repo.magento.com/archives/magento/module-sales-graph-ql/magento-module-sales-graph-ql-100.4.5.0.zip", + "shasum": "b38fd2a06e289ea121309cb191dcb20d8d427eb5" }, "require": { "magento/framework": "103.0.*", @@ -14607,11 +14644,11 @@ }, { "name": "magento/module-sales-inventory", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales-inventory/magento-module-sales-inventory-100.4.1.0.zip", - "shasum": "8c675f61107484177c9c379b9a17d67644263535" + "url": "https://repo.magento.com/archives/magento/module-sales-inventory/magento-module-sales-inventory-100.4.2.0.zip", + "shasum": "1a7b00a475ebc016a11b32097571cd39cf8a81e9" }, "require": { "magento/framework": "103.0.*", @@ -14638,11 +14675,11 @@ }, { "name": "magento/module-sales-rule", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sales-rule/magento-module-sales-rule-101.2.4.0.zip", - "shasum": "988865b771330b426721a225321e54cbe8f4afa6" + "url": "https://repo.magento.com/archives/magento/module-sales-rule/magento-module-sales-rule-101.2.5.0.zip", + "shasum": "0f28d3088948906a11ff089d6bd81eff3dadf5e2" }, "require": { "magento/framework": "103.0.*", @@ -14716,11 +14753,11 @@ }, { "name": "magento/module-sample-data", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sample-data/magento-module-sample-data-100.4.2.0.zip", - "shasum": "c744e1b02a66aa6366a24d434edcd94caa04c556" + "url": "https://repo.magento.com/archives/magento/module-sample-data/magento-module-sample-data-100.4.3.0.zip", + "shasum": "513b197c79b839c7a2db1239646606dc527f9816" }, "require": { "magento/framework": "103.0.*", @@ -14747,11 +14784,11 @@ }, { "name": "magento/module-search", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-search/magento-module-search-101.1.4.0.zip", - "shasum": "3dedc0872f8976e26bb230eed7372498e1459436" + "url": "https://repo.magento.com/archives/magento/module-search/magento-module-search-101.1.5.0.zip", + "shasum": "51a4bddd43f04a866473760721b7f9799abe4bc5" }, "require": { "magento/framework": "103.0.*", @@ -14779,11 +14816,11 @@ }, { "name": "magento/module-security", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-security/magento-module-security-100.4.4.0.zip", - "shasum": "8dc34acc5886991e372557e64df325bae8ff1e68" + "url": "https://repo.magento.com/archives/magento/module-security/magento-module-security-100.4.5.0.zip", + "shasum": "324e5973bdf16cf28690873edb6b2cf21edefb4f" }, "require": { "magento/framework": "103.0.*", @@ -14911,11 +14948,11 @@ }, { "name": "magento/module-shipping", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-shipping/magento-module-shipping-100.4.4.0.zip", - "shasum": "503a898158ff301be00856671a270ca5dff7bda9" + "url": "https://repo.magento.com/archives/magento/module-shipping/magento-module-shipping-100.4.5.0.zip", + "shasum": "325b2b9f9b77143187698d4a2d815887e6a563f8" }, "require": { "ext-gd": "*", @@ -14957,11 +14994,11 @@ }, { "name": "magento/module-sitemap", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-sitemap/magento-module-sitemap-100.4.3.0.zip", - "shasum": "2e62d36fde01d8b78511f2c56e5d50c872fdcfe6" + "url": "https://repo.magento.com/archives/magento/module-sitemap/magento-module-sitemap-100.4.4.0.zip", + "shasum": "88daf14b4c318d32bb142272f0609a9a5aafeeea" }, "require": { "magento/framework": "103.0.*", @@ -14996,11 +15033,11 @@ }, { "name": "magento/module-store", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-store/magento-module-store-101.1.4.0.zip", - "shasum": "5a6b0a8e70e5c11734db21b1e86ee0cf022203ff" + "url": "https://repo.magento.com/archives/magento/module-store/magento-module-store-101.1.5.0.zip", + "shasum": "d1b0806e3abfc83f1d559961c884646b0ed05a19" }, "require": { "magento/framework": "103.0.*", @@ -15064,11 +15101,11 @@ }, { "name": "magento/module-swagger", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-swagger/magento-module-swagger-100.4.3.0.zip", - "shasum": "15fc18a594860c2afe91185c498a47a27c644679" + "url": "https://repo.magento.com/archives/magento/module-swagger/magento-module-swagger-100.4.4.0.zip", + "shasum": "12effdc034ed2d0ea15db474fcfb36342747712b" }, "require": { "magento/framework": "103.0.*", @@ -15150,11 +15187,11 @@ }, { "name": "magento/module-swatches", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-swatches/magento-module-swatches-100.4.4.0.zip", - "shasum": "d2f16565e5f5cbecd8fe92da60f4f09745a37d78" + "url": "https://repo.magento.com/archives/magento/module-swatches/magento-module-swatches-100.4.5.0.zip", + "shasum": "f789c22ee41334d072d6caaac88ad3e7734ebccf" }, "require": { "magento/framework": "103.0.*", @@ -15252,11 +15289,11 @@ }, { "name": "magento/module-tax", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-tax/magento-module-tax-100.4.4.0.zip", - "shasum": "a65794f2053094a757a16a33dba14c4588e1d5e1" + "url": "https://repo.magento.com/archives/magento/module-tax/magento-module-tax-100.4.5.0.zip", + "shasum": "3753012abcbffe5ce171a1b0b9d545f56c49f1d3" }, "require": { "magento/framework": "103.0.*", @@ -15359,11 +15396,11 @@ }, { "name": "magento/module-theme", - "version": "101.1.4", + "version": "101.1.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-theme/magento-module-theme-101.1.4.0.zip", - "shasum": "0d42df06aec2580a16f87d2fb0deaa46fcf64fe3" + "url": "https://repo.magento.com/archives/magento/module-theme/magento-module-theme-101.1.5.0.zip", + "shasum": "ba3c3fbb5755319774bf11d3104b302637bc7dcb" }, "require": { "magento/framework": "103.0.*", @@ -15431,15 +15468,16 @@ }, { "name": "magento/module-translation", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-translation/magento-module-translation-100.4.4.0.zip", - "shasum": "cf12c0a7493629dcf952f7af91a95eb30784f194" + "url": "https://repo.magento.com/archives/magento/module-translation/magento-module-translation-100.4.5.0.zip", + "shasum": "a8ff494922576f2874b66a913f14528f9ee1418b" }, "require": { "magento/framework": "103.0.*", "magento/module-backend": "102.0.*", + "magento/module-deploy": "100.4.*", "magento/module-developer": "100.4.*", "magento/module-store": "101.1.*", "magento/module-theme": "101.1.*", @@ -15465,11 +15503,11 @@ }, { "name": "magento/module-two-factor-auth", - "version": "1.1.3", + "version": "1.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-two-factor-auth/magento-module-two-factor-auth-1.1.3.0.zip", - "shasum": "cfab7bd98fdc8fe161cd2d38b8199ef4201889c3" + "url": "https://repo.magento.com/archives/magento/module-two-factor-auth/magento-module-two-factor-auth-1.1.4.0.zip", + "shasum": "b497c3cc70df873ce6bcfe26e2f101076aa47096" }, "require": { "2tvenom/cborencode": "^1.0", @@ -15477,6 +15515,7 @@ "endroid/qr-code": "^4.3.5", "magento/framework": "*", "magento/magento-composer-installer": "*", + "magento/module-admin-adobe-ims": "*", "magento/module-authorization": "*", "magento/module-backend": "*", "magento/module-config": "*", @@ -15503,11 +15542,11 @@ }, { "name": "magento/module-ui", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-ui/magento-module-ui-101.2.4.0.zip", - "shasum": "285bbc4d9c6241512eaf9dafbf0c1259fefcab03" + "url": "https://repo.magento.com/archives/magento/module-ui/magento-module-ui-101.2.5.0.zip", + "shasum": "7a2f25eba5ec07a4b26bdda98b60fb393f5bfff4" }, "require": { "magento/framework": "103.0.*", @@ -15538,11 +15577,11 @@ }, { "name": "magento/module-ups", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-ups/magento-module-ups-100.4.4.0.zip", - "shasum": "8de4d2736ba82124ccf3fdc10066c991dfef1969" + "url": "https://repo.magento.com/archives/magento/module-ups/magento-module-ups-100.4.5.0.zip", + "shasum": "bb5eac9f59db16a90951109c3baa3bc0f91ad0ae" }, "require": { "magento/framework": "103.0.*", @@ -15575,11 +15614,11 @@ }, { "name": "magento/module-url-rewrite", - "version": "102.0.3", + "version": "102.0.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-url-rewrite/magento-module-url-rewrite-102.0.3.0.zip", - "shasum": "f624555ea5fbb891aacd64901b43b472bd2f8aab" + "url": "https://repo.magento.com/archives/magento/module-url-rewrite/magento-module-url-rewrite-102.0.4.0.zip", + "shasum": "ff14fc9bc2d9153a4ace238d20cd7e3524839a26" }, "require": { "magento/framework": "103.0.*", @@ -15609,11 +15648,11 @@ }, { "name": "magento/module-url-rewrite-graph-ql", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-url-rewrite-graph-ql/magento-module-url-rewrite-graph-ql-100.4.3.0.zip", - "shasum": "6e75f207719672b1f679f885ed1ec9011470d73c" + "url": "https://repo.magento.com/archives/magento/module-url-rewrite-graph-ql/magento-module-url-rewrite-graph-ql-100.4.4.0.zip", + "shasum": "0f9bbcbb7ff349dc5fdf5c2f886dff57441473fd" }, "require": { "magento/framework": "103.0.*", @@ -15640,11 +15679,11 @@ }, { "name": "magento/module-user", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-user/magento-module-user-101.2.4.0.zip", - "shasum": "787d34763f773826e23a9e4d696507e677aff4da" + "url": "https://repo.magento.com/archives/magento/module-user/magento-module-user-101.2.5.0.zip", + "shasum": "7940b349b7adaac56d97b87d85304a28c21d6592" }, "require": { "magento/framework": "103.0.*", @@ -15674,11 +15713,11 @@ }, { "name": "magento/module-usps", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-usps/magento-module-usps-100.4.3.0.zip", - "shasum": "3c07dd84b24d346c5bcf7b62087db872a38d0cec" + "url": "https://repo.magento.com/archives/magento/module-usps/magento-module-usps-100.4.4.0.zip", + "shasum": "c743d1e7e1b9c05b9333c76484a8a835c7a67074" }, "require": { "lib-libxml": "*", @@ -15710,11 +15749,11 @@ }, { "name": "magento/module-variable", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-variable/magento-module-variable-100.4.2.0.zip", - "shasum": "b67c8e4a7e13590bbf6040844ae8e2a189687a8b" + "url": "https://repo.magento.com/archives/magento/module-variable/magento-module-variable-100.4.3.0.zip", + "shasum": "2246cbc8bf2a87ec0a6f2bae77e3b73813b18bb9" }, "require": { "magento/framework": "103.0.*", @@ -15741,11 +15780,11 @@ }, { "name": "magento/module-vault", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-vault/magento-module-vault-101.2.4.0.zip", - "shasum": "bf8b3adda9099c9d1b24e96fae8bdf956a210a75" + "url": "https://repo.magento.com/archives/magento/module-vault/magento-module-vault-101.2.5.0.zip", + "shasum": "ab162c592b0847efb837c19bc334bf605f8154f0" }, "require": { "magento/framework": "103.0.*", @@ -15803,11 +15842,11 @@ }, { "name": "magento/module-version", - "version": "100.4.1", + "version": "100.4.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-version/magento-module-version-100.4.1.0.zip", - "shasum": "dd01c5e0810fe535c43fc060b7bb738ef12776df" + "url": "https://repo.magento.com/archives/magento/module-version/magento-module-version-100.4.2.0.zip", + "shasum": "d8fde8cf95fcace1d55a97d7b88fe2fdd53856bd" }, "require": { "magento/framework": "103.0.*", @@ -15830,11 +15869,11 @@ }, { "name": "magento/module-webapi", - "version": "100.4.3", + "version": "100.4.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-webapi/magento-module-webapi-100.4.3.0.zip", - "shasum": "626e768a7fe8680dd272f6c0b94eab7c6d50ae86" + "url": "https://repo.magento.com/archives/magento/module-webapi/magento-module-webapi-100.4.4.0.zip", + "shasum": "0d10c69864a2432446b30384b51736d45fb4e392" }, "require": { "magento/framework": "103.0.*", @@ -15865,16 +15904,16 @@ }, { "name": "magento/module-webapi-async", - "version": "100.4.2", + "version": "100.4.3", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-webapi-async/magento-module-webapi-async-100.4.2.0.zip", - "shasum": "f81181ab0f8efde42e2dd16d18fc819664f95df7" + "url": "https://repo.magento.com/archives/magento/module-webapi-async/magento-module-webapi-async-100.4.3.0.zip", + "shasum": "3bd32d42f8659697f3748634d9986af9b8cde618" }, "require": { "magento/framework": "103.0.*", - "magento/framework-message-queue": "100.4.*", "magento/module-asynchronous-operations": "100.4.*", + "magento/module-store": "101.1.*", "magento/module-webapi": "100.4.*", "php": "~7.4.0||~8.1.0" }, @@ -15927,11 +15966,11 @@ }, { "name": "magento/module-weee", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-weee/magento-module-weee-100.4.4.0.zip", - "shasum": "4fc9597008912ab53ee1106b17d581a4406d0ad8" + "url": "https://repo.magento.com/archives/magento/module-weee/magento-module-weee-100.4.5.0.zip", + "shasum": "5a6f293df6d8207dce4a00a4fef0cbbacc922bbb" }, "require": { "magento/framework": "103.0.*", @@ -16002,11 +16041,11 @@ }, { "name": "magento/module-widget", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-widget/magento-module-widget-101.2.4.0.zip", - "shasum": "b803c2b00d38a63b52c9d0ec45a58043f41d5d02" + "url": "https://repo.magento.com/archives/magento/module-widget/magento-module-widget-101.2.5.0.zip", + "shasum": "eed0cbbc112ec23dada39cc6f1556de69550c2db" }, "require": { "magento/framework": "103.0.*", @@ -16040,11 +16079,11 @@ }, { "name": "magento/module-wishlist", - "version": "101.2.4", + "version": "101.2.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-wishlist/magento-module-wishlist-101.2.4.0.zip", - "shasum": "5d298143aab4b1abbd2e0618cbdc9a61bbe99f1d" + "url": "https://repo.magento.com/archives/magento/module-wishlist/magento-module-wishlist-101.2.5.0.zip", + "shasum": "f7f5356260017811c073b2ee7058cd862ac6c36b" }, "require": { "magento/framework": "103.0.*", @@ -16115,11 +16154,11 @@ }, { "name": "magento/module-wishlist-graph-ql", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/module-wishlist-graph-ql/magento-module-wishlist-graph-ql-100.4.4.0.zip", - "shasum": "6cf8bb8bb762b93994a32d62b83ce6ecb9a398e0" + "url": "https://repo.magento.com/archives/magento/module-wishlist-graph-ql/magento-module-wishlist-graph-ql-100.4.5.0.zip", + "shasum": "f89448ee10c35b82e0c7b1a4d293a079cddc3a63" }, "require": { "magento/framework": "103.0.*", @@ -16148,38 +16187,38 @@ }, { "name": "magento/page-builder", - "version": "1.7.1", + "version": "1.7.2", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/page-builder/magento-page-builder-1.7.1.0.zip", - "shasum": "3d4a0a455399aa51074a0d28a9a2d7ffb5945491" + "url": "https://repo.magento.com/archives/magento/page-builder/magento-page-builder-1.7.2.0.zip", + "shasum": "eca2944e5b85cea6589be86dd5c5ba52eaa70581" }, "require": { - "magento/module-aws-s3-page-builder": "1.0.*", - "magento/module-catalog-page-builder-analytics": "1.6.*", - "magento/module-cms-page-builder-analytics": "1.6.*", - "magento/module-page-builder": "2.2.*", - "magento/module-page-builder-admin-analytics": "1.1.*", - "magento/module-page-builder-analytics": "1.6.*" + "magento/module-aws-s3-page-builder": "1.0.2", + "magento/module-catalog-page-builder-analytics": "1.6.2", + "magento/module-cms-page-builder-analytics": "1.6.2", + "magento/module-page-builder": "2.2.3", + "magento/module-page-builder-admin-analytics": "1.1.2", + "magento/module-page-builder-analytics": "1.6.2" }, "type": "metapackage", "description": "Page Builder metapackage" }, { "name": "magento/product-community-edition", - "version": "2.4.4", + "version": "2.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/product-community-edition/magento-product-community-edition-2.4.4.0.zip", - "shasum": "81d3b227819ed523ccbf35d5d6e7dc94556cff12" + "url": "https://repo.magento.com/archives/magento/product-community-edition/magento-product-community-edition-2.4.5.0.zip", + "shasum": "8a95004a1f5cac0b88ca74dfe03749ab033bf218" }, "require": { "colinmollenhour/cache-backend-file": "~1.4.1", "colinmollenhour/cache-backend-redis": "1.14.2", - "colinmollenhour/credis": "1.12.1", + "colinmollenhour/credis": "1.13.0", "colinmollenhour/php-redis-session-abstract": "~1.4.5", - "composer/composer": "^1.9 || ^2.0", - "elasticsearch/elasticsearch": "~7.16.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", + "elasticsearch/elasticsearch": "~7.17.0", "ext-bcmath": "*", "ext-ctype": "*", "ext-curl": "*", @@ -16196,43 +16235,38 @@ "ext-sodium": "*", "ext-xsl": "*", "ext-zip": "*", - "guzzlehttp/guzzle": "^7.3.0", - "laminas/laminas-captcha": "^2.11", + "ezyang/htmlpurifier": "^4.14", + "guzzlehttp/guzzle": "^7.4.2", + "laminas/laminas-captcha": "^2.12", "laminas/laminas-code": "~4.5.0", - "laminas/laminas-db": "^2.13.4", + "laminas/laminas-db": "^2.15.0", "laminas/laminas-dependency-plugin": "^2.2.0", - "laminas/laminas-di": "^3.3.0", - "laminas/laminas-escaper": "~2.9.0", - "laminas/laminas-eventmanager": "^3.4.0", - "laminas/laminas-feed": "^2.15.0", + "laminas/laminas-di": "^3.7.0", + "laminas/laminas-escaper": "~2.10.0", + "laminas/laminas-eventmanager": "^3.5.0", + "laminas/laminas-feed": "^2.17.0", "laminas/laminas-http": "^2.15.0", - "laminas/laminas-json": "^3.3.0", - "laminas/laminas-mail": "^2.15.1", + "laminas/laminas-mail": "^2.16.0", "laminas/laminas-mime": "^2.9.1", "laminas/laminas-modulemanager": "^2.11.0", - "laminas/laminas-mvc": "^3.3.0", - "laminas/laminas-server": "^2.11.0", - "laminas/laminas-servicemanager": "^3.10.0", - "laminas/laminas-session": "^2.12.0", + "laminas/laminas-mvc": "^3.3.3", + "laminas/laminas-servicemanager": "^3.11.0", "laminas/laminas-soap": "^2.10.0", - "laminas/laminas-stdlib": "^3.6.0", - "laminas/laminas-text": "^2.9.0", + "laminas/laminas-stdlib": "^3.7.1", "laminas/laminas-uri": "^2.9.1", - "laminas/laminas-validator": "^2.15.0", - "laminas/laminas-view": "~2.14.1", - "league/flysystem": "~2.3.2", - "league/flysystem-aws-s3-v3": "^2.0", + "laminas/laminas-validator": "^2.17.0", + "league/flysystem": "~2.4.5", + "league/flysystem-aws-s3-v3": "^2.4.3", "lib-libxml": "*", - "magento/adobe-ims": "2.1.3", - "magento/adobe-stock-integration": "2.1.3", + "magento/adobe-stock-integration": "2.1.4", "magento/composer": "~1.8.0", "magento/composer-dependency-version-audit-plugin": "~0.1", - "magento/framework": "103.0.4", - "magento/framework-amqp": "100.4.2", + "magento/framework": "103.0.5", + "magento/framework-amqp": "100.4.3", "magento/framework-bulk": "101.0.1", - "magento/framework-message-queue": "100.4.4", + "magento/framework-message-queue": "100.4.5", "magento/google-shopping-ads": "4.0.1", - "magento/inventory-metapackage": "1.2.4", + "magento/inventory-metapackage": "1.2.5", "magento/language-de_de": "100.4.0", "magento/language-en_us": "100.4.0", "magento/language-es_es": "100.4.0", @@ -16241,238 +16275,240 @@ "magento/language-pt_br": "100.4.0", "magento/language-zh_hans_cn": "100.4.0", "magento/magento-composer-installer": ">=0.3.0", - "magento/magento2-base": "2.4.4", + "magento/magento2-base": "2.4.5", + "magento/module-admin-adobe-ims": "100.4.0", "magento/module-admin-analytics": "100.4.4", - "magento/module-admin-notification": "100.4.3", - "magento/module-advanced-pricing-import-export": "100.4.4", - "magento/module-advanced-search": "100.4.2", + "magento/module-admin-notification": "100.4.4", + "magento/module-adobe-ims": "2.1.4", + "magento/module-adobe-ims-api": "2.1.2", + "magento/module-advanced-pricing-import-export": "100.4.5", + "magento/module-advanced-search": "100.4.3", "magento/module-amqp": "100.4.2", - "magento/module-amqp-store": "100.4.2", - "magento/module-analytics": "100.4.4", - "magento/module-asynchronous-operations": "100.4.4", - "magento/module-authorization": "100.4.4", - "magento/module-aws-s3": "100.4.2", - "magento/module-backend": "102.0.4", - "magento/module-backup": "100.4.4", - "magento/module-bundle": "101.0.4", - "magento/module-bundle-graph-ql": "100.4.4", - "magento/module-bundle-import-export": "100.4.3", - "magento/module-cache-invalidate": "100.4.2", - "magento/module-captcha": "100.4.4", - "magento/module-cardinal-commerce": "100.4.2", - "magento/module-catalog": "104.0.4", + "magento/module-analytics": "100.4.5", + "magento/module-asynchronous-operations": "100.4.5", + "magento/module-authorization": "100.4.5", + "magento/module-aws-s3": "100.4.3", + "magento/module-backend": "102.0.5", + "magento/module-backup": "100.4.5", + "magento/module-bundle": "101.0.5", + "magento/module-bundle-graph-ql": "100.4.5", + "magento/module-bundle-import-export": "100.4.4", + "magento/module-cache-invalidate": "100.4.3", + "magento/module-captcha": "100.4.5", + "magento/module-cardinal-commerce": "100.4.3", + "magento/module-catalog": "104.0.5", "magento/module-catalog-analytics": "100.4.2", "magento/module-catalog-cms-graph-ql": "100.4.1", "magento/module-catalog-customer-graph-ql": "100.4.4", - "magento/module-catalog-graph-ql": "100.4.4", - "magento/module-catalog-import-export": "101.1.4", - "magento/module-catalog-inventory": "100.4.4", - "magento/module-catalog-inventory-graph-ql": "100.4.1", - "magento/module-catalog-rule": "101.2.4", - "magento/module-catalog-rule-configurable": "100.4.3", + "magento/module-catalog-graph-ql": "100.4.5", + "magento/module-catalog-import-export": "101.1.5", + "magento/module-catalog-inventory": "100.4.5", + "magento/module-catalog-inventory-graph-ql": "100.4.2", + "magento/module-catalog-rule": "101.2.5", + "magento/module-catalog-rule-configurable": "100.4.4", "magento/module-catalog-rule-graph-ql": "100.4.2", - "magento/module-catalog-search": "102.0.4", - "magento/module-catalog-url-rewrite": "100.4.4", + "magento/module-catalog-search": "102.0.5", + "magento/module-catalog-url-rewrite": "100.4.5", "magento/module-catalog-url-rewrite-graph-ql": "100.4.3", - "magento/module-catalog-widget": "100.4.4", - "magento/module-checkout": "100.4.4", - "magento/module-checkout-agreements": "100.4.3", + "magento/module-catalog-widget": "100.4.5", + "magento/module-checkout": "100.4.5", + "magento/module-checkout-agreements": "100.4.4", "magento/module-checkout-agreements-graph-ql": "100.4.1", - "magento/module-cms": "104.0.4", + "magento/module-cms": "104.0.5", "magento/module-cms-graph-ql": "100.4.2", - "magento/module-cms-url-rewrite": "100.4.3", - "magento/module-cms-url-rewrite-graph-ql": "100.4.2", + "magento/module-cms-url-rewrite": "100.4.4", + "magento/module-cms-url-rewrite-graph-ql": "100.4.3", "magento/module-compare-list-graph-ql": "100.4.1", - "magento/module-config": "101.2.4", - "magento/module-configurable-import-export": "100.4.2", - "magento/module-configurable-product": "100.4.4", - "magento/module-configurable-product-graph-ql": "100.4.4", + "magento/module-config": "101.2.5", + "magento/module-configurable-import-export": "100.4.3", + "magento/module-configurable-product": "100.4.5", + "magento/module-configurable-product-graph-ql": "100.4.5", "magento/module-configurable-product-sales": "100.4.2", "magento/module-contact": "100.4.4", - "magento/module-cookie": "100.4.4", - "magento/module-cron": "100.4.4", - "magento/module-csp": "100.4.3", + "magento/module-cookie": "100.4.5", + "magento/module-cron": "100.4.5", + "magento/module-csp": "100.4.4", "magento/module-currency-symbol": "100.4.3", - "magento/module-customer": "103.0.4", + "magento/module-customer": "103.0.5", "magento/module-customer-analytics": "100.4.2", "magento/module-customer-downloadable-graph-ql": "100.4.1", - "magento/module-customer-graph-ql": "100.4.4", - "magento/module-customer-import-export": "100.4.4", - "magento/module-deploy": "100.4.4", - "magento/module-developer": "100.4.4", - "magento/module-dhl": "100.4.3", - "magento/module-directory": "100.4.4", - "magento/module-directory-graph-ql": "100.4.2", - "magento/module-downloadable": "100.4.4", - "magento/module-downloadable-graph-ql": "100.4.4", - "magento/module-downloadable-import-export": "100.4.3", - "magento/module-eav": "102.1.4", + "magento/module-customer-graph-ql": "100.4.5", + "magento/module-customer-import-export": "100.4.5", + "magento/module-deploy": "100.4.5", + "magento/module-developer": "100.4.5", + "magento/module-dhl": "100.4.4", + "magento/module-directory": "100.4.5", + "magento/module-directory-graph-ql": "100.4.3", + "magento/module-downloadable": "100.4.5", + "magento/module-downloadable-graph-ql": "100.4.5", + "magento/module-downloadable-import-export": "100.4.4", + "magento/module-eav": "102.1.5", "magento/module-eav-graph-ql": "100.4.2", - "magento/module-elasticsearch": "101.0.4", - "magento/module-elasticsearch-6": "100.4.4", - "magento/module-elasticsearch-7": "100.4.4", - "magento/module-email": "101.1.4", + "magento/module-elasticsearch": "101.0.5", + "magento/module-elasticsearch-6": "100.4.5", + "magento/module-elasticsearch-7": "100.4.5", + "magento/module-email": "101.1.5", "magento/module-encryption-key": "100.4.3", "magento/module-fedex": "100.4.3", - "magento/module-gift-message": "100.4.3", - "magento/module-gift-message-graph-ql": "100.4.2", + "magento/module-gift-message": "100.4.4", + "magento/module-gift-message-graph-ql": "100.4.3", "magento/module-google-adwords": "100.4.2", "magento/module-google-analytics": "100.4.1", - "magento/module-google-optimizer": "100.4.3", - "magento/module-graph-ql": "100.4.4", - "magento/module-graph-ql-cache": "100.4.1", - "magento/module-grouped-catalog-inventory": "100.4.1", - "magento/module-grouped-import-export": "100.4.2", - "magento/module-grouped-product": "100.4.4", - "magento/module-grouped-product-graph-ql": "100.4.4", - "magento/module-import-export": "101.0.4", - "magento/module-indexer": "100.4.4", - "magento/module-instant-purchase": "100.4.3", - "magento/module-integration": "100.4.4", + "magento/module-google-gtag": "100.4.0", + "magento/module-google-optimizer": "100.4.4", + "magento/module-graph-ql": "100.4.5", + "magento/module-graph-ql-cache": "100.4.2", + "magento/module-grouped-catalog-inventory": "100.4.2", + "magento/module-grouped-import-export": "100.4.3", + "magento/module-grouped-product": "100.4.5", + "magento/module-grouped-product-graph-ql": "100.4.5", + "magento/module-import-export": "101.0.5", + "magento/module-indexer": "100.4.5", + "magento/module-instant-purchase": "100.4.4", + "magento/module-integration": "100.4.5", "magento/module-jwt-framework-adapter": "100.4.1", "magento/module-jwt-user-token": "100.4.0", - "magento/module-layered-navigation": "100.4.4", - "magento/module-login-as-customer": "100.4.4", - "magento/module-login-as-customer-admin-ui": "100.4.4", - "magento/module-login-as-customer-api": "100.4.3", - "magento/module-login-as-customer-assistance": "100.4.3", + "magento/module-layered-navigation": "100.4.5", + "magento/module-login-as-customer": "100.4.5", + "magento/module-login-as-customer-admin-ui": "100.4.5", + "magento/module-login-as-customer-api": "100.4.4", + "magento/module-login-as-customer-assistance": "100.4.4", "magento/module-login-as-customer-frontend-ui": "100.4.4", - "magento/module-login-as-customer-graph-ql": "100.4.1", + "magento/module-login-as-customer-graph-ql": "100.4.2", "magento/module-login-as-customer-log": "100.4.3", "magento/module-login-as-customer-page-cache": "100.4.4", "magento/module-login-as-customer-quote": "100.4.3", "magento/module-login-as-customer-sales": "100.4.4", "magento/module-marketplace": "100.4.3", "magento/module-media-content": "100.4.3", - "magento/module-media-content-api": "100.4.3", + "magento/module-media-content-api": "100.4.4", "magento/module-media-content-catalog": "100.4.3", "magento/module-media-content-cms": "100.4.3", - "magento/module-media-content-synchronization": "100.4.3", - "magento/module-media-content-synchronization-api": "100.4.2", + "magento/module-media-content-synchronization": "100.4.4", + "magento/module-media-content-synchronization-api": "100.4.3", "magento/module-media-content-synchronization-catalog": "100.4.2", "magento/module-media-content-synchronization-cms": "100.4.2", - "magento/module-media-gallery": "100.4.3", - "magento/module-media-gallery-api": "101.0.3", + "magento/module-media-gallery": "100.4.4", + "magento/module-media-gallery-api": "101.0.4", "magento/module-media-gallery-catalog": "100.4.2", "magento/module-media-gallery-catalog-integration": "100.4.2", "magento/module-media-gallery-catalog-ui": "100.4.2", "magento/module-media-gallery-cms-ui": "100.4.2", - "magento/module-media-gallery-integration": "100.4.3", - "magento/module-media-gallery-metadata": "100.4.2", - "magento/module-media-gallery-metadata-api": "100.4.1", - "magento/module-media-gallery-renditions": "100.4.2", - "magento/module-media-gallery-renditions-api": "100.4.1", - "magento/module-media-gallery-synchronization": "100.4.3", - "magento/module-media-gallery-synchronization-api": "100.4.2", + "magento/module-media-gallery-integration": "100.4.4", + "magento/module-media-gallery-metadata": "100.4.3", + "magento/module-media-gallery-metadata-api": "100.4.2", + "magento/module-media-gallery-renditions": "100.4.3", + "magento/module-media-gallery-renditions-api": "100.4.2", + "magento/module-media-gallery-synchronization": "100.4.4", + "magento/module-media-gallery-synchronization-api": "100.4.3", "magento/module-media-gallery-synchronization-metadata": "100.4.1", - "magento/module-media-gallery-ui": "100.4.3", - "magento/module-media-gallery-ui-api": "100.4.2", - "magento/module-media-storage": "100.4.3", - "magento/module-message-queue": "100.4.4", - "magento/module-msrp": "100.4.3", + "magento/module-media-gallery-ui": "100.4.4", + "magento/module-media-gallery-ui-api": "100.4.3", + "magento/module-media-storage": "100.4.4", + "magento/module-message-queue": "100.4.5", + "magento/module-msrp": "100.4.4", "magento/module-msrp-configurable-product": "100.4.2", "magento/module-msrp-grouped-product": "100.4.2", - "magento/module-multishipping": "100.4.4", - "magento/module-mysql-mq": "100.4.2", - "magento/module-new-relic-reporting": "100.4.2", - "magento/module-newsletter": "100.4.4", - "magento/module-newsletter-graph-ql": "100.4.1", + "magento/module-multishipping": "100.4.5", + "magento/module-mysql-mq": "100.4.3", + "magento/module-new-relic-reporting": "100.4.3", + "magento/module-newsletter": "100.4.5", + "magento/module-newsletter-graph-ql": "100.4.2", "magento/module-offline-payments": "100.4.3", - "magento/module-offline-shipping": "100.4.3", - "magento/module-page-cache": "100.4.4", - "magento/module-payment": "100.4.4", + "magento/module-offline-shipping": "100.4.4", + "magento/module-page-cache": "100.4.5", + "magento/module-payment": "100.4.5", "magento/module-payment-graph-ql": "100.4.0", - "magento/module-paypal": "101.0.4", + "magento/module-paypal": "101.0.5", "magento/module-paypal-captcha": "100.4.2", - "magento/module-paypal-graph-ql": "100.4.2", - "magento/module-persistent": "100.4.4", - "magento/module-product-alert": "100.4.3", - "magento/module-product-video": "100.4.4", - "magento/module-quote": "101.2.4", + "magento/module-paypal-graph-ql": "100.4.3", + "magento/module-persistent": "100.4.5", + "magento/module-product-alert": "100.4.4", + "magento/module-product-video": "100.4.5", + "magento/module-quote": "101.2.5", "magento/module-quote-analytics": "100.4.4", "magento/module-quote-bundle-options": "100.4.1", "magento/module-quote-configurable-options": "100.4.1", "magento/module-quote-downloadable-links": "100.4.1", - "magento/module-quote-graph-ql": "100.4.4", + "magento/module-quote-graph-ql": "100.4.5", "magento/module-related-product-graph-ql": "100.4.2", - "magento/module-release-notification": "100.4.2", - "magento/module-remote-storage": "100.4.2", - "magento/module-reports": "100.4.4", + "magento/module-release-notification": "100.4.3", + "magento/module-remote-storage": "100.4.3", + "magento/module-reports": "100.4.5", "magento/module-require-js": "100.4.1", - "magento/module-review": "100.4.4", + "magento/module-review": "100.4.5", "magento/module-review-analytics": "100.4.2", "magento/module-review-graph-ql": "100.4.1", "magento/module-robots": "101.1.1", "magento/module-rss": "100.4.3", - "magento/module-rule": "100.4.3", - "magento/module-sales": "103.0.4", + "magento/module-rule": "100.4.4", + "magento/module-sales": "103.0.5", "magento/module-sales-analytics": "100.4.2", - "magento/module-sales-graph-ql": "100.4.4", - "magento/module-sales-inventory": "100.4.1", - "magento/module-sales-rule": "101.2.4", + "magento/module-sales-graph-ql": "100.4.5", + "magento/module-sales-inventory": "100.4.2", + "magento/module-sales-rule": "101.2.5", "magento/module-sales-sequence": "100.4.2", - "magento/module-sample-data": "100.4.2", - "magento/module-search": "101.1.4", - "magento/module-security": "100.4.4", + "magento/module-sample-data": "100.4.3", + "magento/module-search": "101.1.5", + "magento/module-security": "100.4.5", "magento/module-send-friend": "100.4.3", "magento/module-send-friend-graph-ql": "100.4.1", - "magento/module-shipping": "100.4.4", - "magento/module-sitemap": "100.4.3", - "magento/module-store": "101.1.4", + "magento/module-shipping": "100.4.5", + "magento/module-sitemap": "100.4.4", + "magento/module-store": "101.1.5", "magento/module-store-graph-ql": "100.4.3", - "magento/module-swagger": "100.4.3", + "magento/module-swagger": "100.4.4", "magento/module-swagger-webapi": "100.4.1", "magento/module-swagger-webapi-async": "100.4.1", - "magento/module-swatches": "100.4.4", + "magento/module-swatches": "100.4.5", "magento/module-swatches-graph-ql": "100.4.3", "magento/module-swatches-layered-navigation": "100.4.1", - "magento/module-tax": "100.4.4", + "magento/module-tax": "100.4.5", "magento/module-tax-graph-ql": "100.4.1", "magento/module-tax-import-export": "100.4.4", - "magento/module-theme": "101.1.4", + "magento/module-theme": "101.1.5", "magento/module-theme-graph-ql": "100.4.2", - "magento/module-translation": "100.4.4", - "magento/module-ui": "101.2.4", - "magento/module-ups": "100.4.4", - "magento/module-url-rewrite": "102.0.3", - "magento/module-url-rewrite-graph-ql": "100.4.3", - "magento/module-user": "101.2.4", - "magento/module-usps": "100.4.3", - "magento/module-variable": "100.4.2", - "magento/module-vault": "101.2.4", + "magento/module-translation": "100.4.5", + "magento/module-ui": "101.2.5", + "magento/module-ups": "100.4.5", + "magento/module-url-rewrite": "102.0.4", + "magento/module-url-rewrite-graph-ql": "100.4.4", + "magento/module-user": "101.2.5", + "magento/module-usps": "100.4.4", + "magento/module-variable": "100.4.3", + "magento/module-vault": "101.2.5", "magento/module-vault-graph-ql": "100.4.1", - "magento/module-version": "100.4.1", - "magento/module-webapi": "100.4.3", - "magento/module-webapi-async": "100.4.2", + "magento/module-version": "100.4.2", + "magento/module-webapi": "100.4.4", + "magento/module-webapi-async": "100.4.3", "magento/module-webapi-security": "100.4.2", - "magento/module-weee": "100.4.4", + "magento/module-weee": "100.4.5", "magento/module-weee-graph-ql": "100.4.2", - "magento/module-widget": "101.2.4", - "magento/module-wishlist": "101.2.4", + "magento/module-widget": "101.2.5", + "magento/module-wishlist": "101.2.5", "magento/module-wishlist-analytics": "100.4.3", - "magento/module-wishlist-graph-ql": "100.4.4", - "magento/page-builder": "1.7.1", - "magento/security-package": "1.1.3", - "magento/theme-adminhtml-backend": "100.4.4", - "magento/theme-frontend-blank": "100.4.4", - "magento/theme-frontend-luma": "100.4.4", + "magento/module-wishlist-graph-ql": "100.4.5", + "magento/page-builder": "1.7.2", + "magento/security-package": "1.1.4", + "magento/theme-adminhtml-backend": "100.4.5", + "magento/theme-frontend-blank": "100.4.5", + "magento/theme-frontend-luma": "100.4.5", "magento/zendframework1": "~1.15.0", - "monolog/monolog": "^2.3", - "paypal/module-braintree": "4.3.0", + "monolog/monolog": "^2.7", + "paypal/module-braintree": "4.4.0", "pelago/emogrifier": "^6.0.0", "php": "~7.4.0||~8.1.0", - "php-amqplib/php-amqplib": "~3.1.0", - "phpseclib/mcrypt_compat": "~2.0.0", - "phpseclib/phpseclib": "~3.0.9", + "php-amqplib/php-amqplib": "~3.2.0", + "phpseclib/mcrypt_compat": "~2.0.2", + "phpseclib/phpseclib": "~3.0.13", "ramsey/uuid": "~4.2.0", "symfony/console": "~4.4.0", - "symfony/event-dispatcher": "~4.4.0", "symfony/process": "~4.4.0", "tedivm/jshrink": "~1.4.0", "temando/module-shipping": "2.0.0", "tubalmartin/cssmin": "4.1.1", "web-token/jwt-framework": "^v2.2.7", - "webonyx/graphql-php": "~14.11.3", + "webonyx/graphql-php": "~14.11.6", "wikimedia/less.php": "^3.0.0" }, "type": "metapackage", @@ -16484,50 +16520,50 @@ }, { "name": "magento/security-package", - "version": "1.1.3", + "version": "1.1.4", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/security-package/magento-security-package-1.1.3.0.zip", - "shasum": "e477fcc0afacb67f17930e07c85b1642958d44be" + "url": "https://repo.magento.com/archives/magento/security-package/magento-security-package-1.1.4.0.zip", + "shasum": "a6dea777ac5824d76d1099334f886ce327d3c714" }, "require": { "google/recaptcha": "^1.2", - "magento/module-re-captcha-admin-ui": "1.1.*", - "magento/module-re-captcha-checkout": "1.1.*", - "magento/module-re-captcha-checkout-sales-rule": "1.1.*", - "magento/module-re-captcha-contact": "1.1.*", - "magento/module-re-captcha-customer": "1.1.*", - "magento/module-re-captcha-frontend-ui": "1.1.*", - "magento/module-re-captcha-migration": "1.1.*", - "magento/module-re-captcha-newsletter": "1.1.*", - "magento/module-re-captcha-paypal": "1.1.*", - "magento/module-re-captcha-review": "1.1.*", - "magento/module-re-captcha-send-friend": "1.1.*", - "magento/module-re-captcha-store-pickup": "1.0.*", - "magento/module-re-captcha-ui": "1.1.*", - "magento/module-re-captcha-user": "1.1.*", - "magento/module-re-captcha-validation": "1.1.*", - "magento/module-re-captcha-validation-api": "1.1.*", - "magento/module-re-captcha-version-2-checkbox": "2.0.*", - "magento/module-re-captcha-version-2-invisible": "2.0.*", - "magento/module-re-captcha-version-3-invisible": "2.0.*", - "magento/module-re-captcha-webapi-api": "1.0.*", - "magento/module-re-captcha-webapi-graph-ql": "1.0.*", - "magento/module-re-captcha-webapi-rest": "1.0.*", - "magento/module-re-captcha-webapi-ui": "1.0.*", - "magento/module-securitytxt": "1.1.*", - "magento/module-two-factor-auth": "1.1.*" + "magento/module-re-captcha-admin-ui": "1.1.2", + "magento/module-re-captcha-checkout": "1.1.2", + "magento/module-re-captcha-checkout-sales-rule": "1.1.1", + "magento/module-re-captcha-contact": "1.1.1", + "magento/module-re-captcha-customer": "1.1.3", + "magento/module-re-captcha-frontend-ui": "1.1.3", + "magento/module-re-captcha-migration": "1.1.2", + "magento/module-re-captcha-newsletter": "1.1.2", + "magento/module-re-captcha-paypal": "1.1.2", + "magento/module-re-captcha-review": "1.1.2", + "magento/module-re-captcha-send-friend": "1.1.2", + "magento/module-re-captcha-store-pickup": "1.0.1", + "magento/module-re-captcha-ui": "1.1.2", + "magento/module-re-captcha-user": "1.1.2", + "magento/module-re-captcha-validation": "1.1.1", + "magento/module-re-captcha-validation-api": "1.1.1", + "magento/module-re-captcha-version-2-checkbox": "2.0.2", + "magento/module-re-captcha-version-2-invisible": "2.0.2", + "magento/module-re-captcha-version-3-invisible": "2.0.2", + "magento/module-re-captcha-webapi-api": "1.0.1", + "magento/module-re-captcha-webapi-graph-ql": "1.0.1", + "magento/module-re-captcha-webapi-rest": "1.0.1", + "magento/module-re-captcha-webapi-ui": "1.0.1", + "magento/module-securitytxt": "1.1.1", + "magento/module-two-factor-auth": "1.1.4" }, "type": "metapackage", "description": "Magento Security Package" }, { "name": "magento/theme-adminhtml-backend", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/theme-adminhtml-backend/magento-theme-adminhtml-backend-100.4.4.0.zip", - "shasum": "da992046f7fbe5d42c89942202c36803416049f9" + "url": "https://repo.magento.com/archives/magento/theme-adminhtml-backend/magento-theme-adminhtml-backend-100.4.5.0.zip", + "shasum": "f5ee6da339ccd2c9cf11de4a7e1e37aeb85af4a4" }, "require": { "magento/framework": "103.0.*", @@ -16547,11 +16583,11 @@ }, { "name": "magento/theme-frontend-blank", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/theme-frontend-blank/magento-theme-frontend-blank-100.4.4.0.zip", - "shasum": "34a9d0c65132de3893e10bd278eaaa43f4a49c29" + "url": "https://repo.magento.com/archives/magento/theme-frontend-blank/magento-theme-frontend-blank-100.4.5.0.zip", + "shasum": "8f64b9681da80b037adae028426fbe15fefa9a60" }, "require": { "magento/framework": "103.0.*", @@ -16571,11 +16607,11 @@ }, { "name": "magento/theme-frontend-luma", - "version": "100.4.4", + "version": "100.4.5", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/magento/theme-frontend-luma/magento-theme-frontend-luma-100.4.4.0.zip", - "shasum": "ad978a364c5a1813e358eb23c9674b8bc8bf1833" + "url": "https://repo.magento.com/archives/magento/theme-frontend-luma/magento-theme-frontend-luma-100.4.5.0.zip", + "shasum": "abf5ec4b08e6cdb076038a1d4069b904aa9eb412" }, "require": { "magento/framework": "103.0.*", @@ -16596,16 +16632,16 @@ }, { "name": "magento/zendframework1", - "version": "1.15.0", + "version": "1.15.1", "source": { "type": "git", "url": "https://github.com/magento/zf1.git", - "reference": "f241f5be1820784e7f54a36115e1324b5bb8a4ab" + "reference": "2381396d2a9a528be2f367b5ce2dddf650eac1d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/zf1/zipball/f241f5be1820784e7f54a36115e1324b5bb8a4ab", - "reference": "f241f5be1820784e7f54a36115e1324b5bb8a4ab", + "url": "https://api.github.com/repos/magento/zf1/zipball/2381396d2a9a528be2f367b5ce2dddf650eac1d0", + "reference": "2381396d2a9a528be2f367b5ce2dddf650eac1d0", "shasum": "" }, "require": { @@ -16641,22 +16677,22 @@ ], "support": { "issues": "https://github.com/magento/zf1/issues", - "source": "https://github.com/magento/zf1/tree/1.15.0" + "source": "https://github.com/magento/zf1/tree/1.15.1" }, - "time": "2022-01-18T21:55:54+00:00" + "time": "2022-06-21T01:22:39+00:00" }, { "name": "monolog/monolog", - "version": "2.5.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "4192345e260f1d51b365536199744b987e160edc" + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4192345e260f1d51b365536199744b987e160edc", - "reference": "4192345e260f1d51b365536199744b987e160edc", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", "shasum": "" }, "require": { @@ -16669,18 +16705,22 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", "graylog2/gelf-php": "^1.4.2", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", + "phpspec/prophecy": "^1.15", "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", "rollbar/rollbar": "^1.3 || ^2 || ^3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -16695,7 +16735,6 @@ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, @@ -16730,7 +16769,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.5.0" + "source": "https://github.com/Seldaek/monolog/tree/2.8.0" }, "funding": [ { @@ -16742,7 +16781,7 @@ "type": "tidelift" } ], - "time": "2022-04-08T15:43:54+00:00" + "time": "2022-07-24T11:55:47+00:00" }, { "name": "mtdowling/jmespath.php", @@ -16807,16 +16846,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.13.2", + "version": "v4.14.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", "shasum": "" }, "require": { @@ -16857,22 +16896,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" }, - "time": "2021-11-30T19:35:32+00:00" + "time": "2022-05-31T20:59:12+00:00" }, { "name": "paragonie/constant_time_encoding", - "version": "v2.5.0", + "version": "v2.6.3", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "9229e15f2e6ba772f0c55dd6986c563b937170a8" + "reference": "58c3f47f650c94ec05a151692652a868995d2938" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/9229e15f2e6ba772f0c55dd6986c563b937170a8", - "reference": "9229e15f2e6ba772f0c55dd6986c563b937170a8", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", + "reference": "58c3f47f650c94ec05a151692652a868995d2938", "shasum": "" }, "require": { @@ -16926,7 +16965,7 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2022-01-17T05:32:27+00:00" + "time": "2022-06-14T06:56:20+00:00" }, { "name": "paragonie/random_compat", @@ -16980,15 +17019,18 @@ }, { "name": "paypal/module-braintree", - "version": "4.3.0", + "version": "4.4.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/paypal/module-braintree/paypal-module-braintree-4.3.0.0.zip", - "shasum": "bbb137aa2f504c6e848f5f0bec302f575b71bf5a" + "url": "https://repo.magento.com/archives/paypal/module-braintree/paypal-module-braintree-4.4.0.0.zip", + "shasum": "d9ab16d9607bfc62fce64712c02facc88510e5f0" }, "require": { - "paypal/module-braintree-core": "4.3.0", - "paypal/module-braintree-graph-ql": "4.3.0" + "braintree/braintree_php": "6.5.1", + "magento/framework": "*", + "paypal/module-braintree-core": "4.4.0", + "paypal/module-braintree-graph-ql": "4.4.0", + "php": "~7.4.0||~8.1.0" }, "type": "metapackage", "license": [ @@ -16998,31 +17040,49 @@ }, { "name": "paypal/module-braintree-core", - "version": "4.3.0", + "version": "4.4.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/paypal/module-braintree-core/paypal-module-braintree-core-4.3.0.0.zip", - "shasum": "41eb8a10e0b222184c065a453e942ca7d5e75bfc" + "url": "https://repo.magento.com/archives/paypal/module-braintree-core/paypal-module-braintree-core-4.4.0.0.zip", + "shasum": "0ed21d22c65ed82cfcb765b684b50e47d6addf17" }, "require": { "braintree/braintree_php": "6.5.1", "ext-json": "*", "ext-simplexml": "*", + "magento/framework": "*", + "magento/module-authorization": "100.4.*", "magento/module-backend": "100.2.*||101.0.*||^102.0.0", "magento/module-catalog": "102.0.*||103.0.*||^104.0.0", "magento/module-checkout": "100.2.*||100.3.*||^100.4.0", + "magento/module-checkout-agreements": "100.4.*", "magento/module-config": "101.0.*||101.1.*||^101.2.0", + "magento/module-configurable-product": "100.4.*", "magento/module-customer": "101.0.*||102.0.*||^103.0.0", "magento/module-directory": "100.2.*||100.3.*||^100.4.0", + "magento/module-downloadable": "100.4.*", + "magento/module-grouped-product": "100.4.*", + "magento/module-instant-purchase": "100.4.*", + "magento/module-multishipping": "100.4.*", "magento/module-payment": "100.2.*||100.3.*||^100.4.0", "magento/module-paypal": "100.2.*||100.3.*||^101.0.0", "magento/module-quote": "101.0.*||101.1.*||^101.2.0", + "magento/module-re-captcha-admin-ui": "1.1.*", + "magento/module-re-captcha-frontend-ui": "1.1.*", "magento/module-re-captcha-ui": "1.1.*", "magento/module-re-captcha-validation-api": "1.1.*", + "magento/module-re-captcha-version-2-checkbox": "2.0.*", + "magento/module-re-captcha-version-2-invisible": "2.0.*", + "magento/module-re-captcha-version-3-invisible": "2.0.*", + "magento/module-re-captcha-webapi-api": "1.0.*", + "magento/module-re-captcha-webapi-ui": "1.0.*", "magento/module-sales": "101.0.*||102.0.*||^102.1.0||^103", + "magento/module-store": "101.1.*", "magento/module-theme": "100.2.*||101.0.*||^101.1.0", "magento/module-ui": "101.0.*||101.1.*||^101.2.0", - "magento/module-vault": "101.0.*||101.1.*||^101.2.0" + "magento/module-vault": "101.0.*||101.1.*||^101.2.0", + "magento/module-webapi": "100.4.*", + "php": "~7.4.0||~8.1.0" }, "conflict": { "gene/module-braintree": "*", @@ -17044,18 +17104,19 @@ }, { "name": "paypal/module-braintree-graph-ql", - "version": "4.3.0", + "version": "4.4.0", "dist": { "type": "zip", - "url": "https://repo.magento.com/archives/paypal/module-braintree-graph-ql/paypal-module-braintree-graph-ql-4.3.0.0.zip", - "shasum": "599955ba1b7f530e75ed427e0e9378b43d2bd109" + "url": "https://repo.magento.com/archives/paypal/module-braintree-graph-ql/paypal-module-braintree-graph-ql-4.4.0.0.zip", + "shasum": "aeda8bc856162c4d7bda04cd363296f138d2a03e" }, "require": { "magento/framework": "^102||^103", "magento/module-quote": "^101", "magento/module-quote-graph-ql": "^100", "magento/module-store": "^101", - "paypal/module-braintree-core": "^4.1" + "paypal/module-braintree-core": "^4.4", + "php": "~7.4.0||~8.1.0" }, "suggest": { "magento/module-graph-ql": "^100" @@ -17155,16 +17216,16 @@ }, { "name": "php-amqplib/php-amqplib", - "version": "v3.1.2", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "e8aba06c4e1c467612f2d99304f672f2660e8492" + "reference": "0bec5b392428e0ac3b3f34fbc4e02d706995833e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/e8aba06c4e1c467612f2d99304f672f2660e8492", - "reference": "e8aba06c4e1c467612f2d99304f672f2660e8492", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/0bec5b392428e0ac3b3f34fbc4e02d706995833e", + "reference": "0bec5b392428e0ac3b3f34fbc4e02d706995833e", "shasum": "" }, "require": { @@ -17230,9 +17291,9 @@ ], "support": { "issues": "https://github.com/php-amqplib/php-amqplib/issues", - "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.1.2" + "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.2.0" }, - "time": "2022-01-18T17:08:01+00:00" + "time": "2022-03-10T19:16:00+00:00" }, { "name": "phpgt/cssxpath", @@ -18543,16 +18604,16 @@ }, { "name": "symfony/config", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "05624c386afa1b4ccc1357463d830fade8d9d404" + "reference": "ec79e03125c1d2477e43dde8528535d90cc78379" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/05624c386afa1b4ccc1357463d830fade8d9d404", - "reference": "05624c386afa1b4ccc1357463d830fade8d9d404", + "url": "https://api.github.com/repos/symfony/config/zipball/ec79e03125c1d2477e43dde8528535d90cc78379", + "reference": "ec79e03125c1d2477e43dde8528535d90cc78379", "shasum": "" }, "require": { @@ -18602,7 +18663,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.7" + "source": "https://github.com/symfony/config/tree/v5.4.11" }, "funding": [ { @@ -18618,20 +18679,20 @@ "type": "tidelift" } ], - "time": "2022-03-21T13:42:03+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/console", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "bdcc66f3140421038f495e5b50e3ca6ffa14c773" + "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/bdcc66f3140421038f495e5b50e3ca6ffa14c773", - "reference": "bdcc66f3140421038f495e5b50e3ca6ffa14c773", + "url": "https://api.github.com/repos/symfony/console/zipball/c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", + "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", "shasum": "" }, "require": { @@ -18692,7 +18753,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.40" + "source": "https://github.com/symfony/console/tree/v4.4.44" }, "funding": [ { @@ -18708,20 +18769,20 @@ "type": "tidelift" } ], - "time": "2022-03-26T22:12:04+00:00" + "time": "2022-07-20T09:59:04+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.3", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e" + "reference": "c1681789f059ab756001052164726ae88512ae3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/c1681789f059ab756001052164726ae88512ae3d", + "reference": "c1681789f059ab756001052164726ae88512ae3d", "shasum": "" }, "require": { @@ -18758,7 +18819,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.3" + "source": "https://github.com/symfony/css-selector/tree/v5.4.11" }, "funding": [ { @@ -18774,20 +18835,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/debug", - "version": "v4.4.37", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "5de6c6e7f52b364840e53851c126be4d71e60470" + "reference": "1a692492190773c5310bc7877cb590c04c2f05be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/5de6c6e7f52b364840e53851c126be4d71e60470", - "reference": "5de6c6e7f52b364840e53851c126be4d71e60470", + "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", + "reference": "1a692492190773c5310bc7877cb590c04c2f05be", "shasum": "" }, "require": { @@ -18826,7 +18887,7 @@ "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.37" + "source": "https://github.com/symfony/debug/tree/v4.4.44" }, "funding": [ { @@ -18842,20 +18903,21 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "abandoned": "symfony/error-handler", + "time": "2022-07-28T16:29:46+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "35588b2afb08ea3a142d62fefdcad4cb09be06ed" + "reference": "a8b9251016e9476db73e25fa836904bc0bf74c62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/35588b2afb08ea3a142d62fefdcad4cb09be06ed", - "reference": "35588b2afb08ea3a142d62fefdcad4cb09be06ed", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a8b9251016e9476db73e25fa836904bc0bf74c62", + "reference": "a8b9251016e9476db73e25fa836904bc0bf74c62", "shasum": "" }, "require": { @@ -18915,7 +18977,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.7" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.11" }, "funding": [ { @@ -18931,29 +18993,29 @@ "type": "tidelift" } ], - "time": "2022-03-08T15:43:06+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.1", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -18982,7 +19044,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1" }, "funding": [ { @@ -18998,20 +19060,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "2d0c9c229d995bef5e87fe4e83b717541832b448" + "reference": "be731658121ef2d8be88f3a1ec938148a9237291" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/2d0c9c229d995bef5e87fe4e83b717541832b448", - "reference": "2d0c9c229d995bef5e87fe4e83b717541832b448", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/be731658121ef2d8be88f3a1ec938148a9237291", + "reference": "be731658121ef2d8be88f3a1ec938148a9237291", "shasum": "" }, "require": { @@ -19050,7 +19112,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.40" + "source": "https://github.com/symfony/error-handler/tree/v4.4.44" }, "funding": [ { @@ -19066,20 +19128,20 @@ "type": "tidelift" } ], - "time": "2022-03-07T13:29:34+00:00" + "time": "2022-07-28T16:29:46+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.37", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc" + "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", - "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", "shasum": "" }, "require": { @@ -19134,7 +19196,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.37" + "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44" }, "funding": [ { @@ -19150,11 +19212,11 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2022-07-20T09:59:04+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.12", + "version": "v1.1.13", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -19213,7 +19275,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.12" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" }, "funding": [ { @@ -19233,16 +19295,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f" + "reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3a4442138d80c9f7b600fb297534ac718b61d37f", - "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/6699fb0228d1bc35b12aed6dd5e7455457609ddd", + "reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd", "shasum": "" }, "require": { @@ -19277,7 +19339,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.7" + "source": "https://github.com/symfony/filesystem/tree/v5.4.11" }, "funding": [ { @@ -19293,20 +19355,20 @@ "type": "tidelift" } ], - "time": "2022-04-01T12:33:59+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/finder", - "version": "v5.4.3", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d" + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/231313534dded84c7ecaa79d14bc5da4ccb69b7d", - "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d", + "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", "shasum": "" }, "require": { @@ -19340,7 +19402,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.3" + "source": "https://github.com/symfony/finder/tree/v5.4.11" }, "funding": [ { @@ -19356,20 +19418,20 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:34:36+00:00" + "time": "2022-07-29T07:37:50+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.5.1", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5" + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1a4f708e4e87f335d1b1be6148060739152f0bd5", - "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", "shasum": "" }, "require": { @@ -19418,7 +19480,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" }, "funding": [ { @@ -19434,20 +19496,20 @@ "type": "tidelift" } ], - "time": "2022-03-13T20:07:29+00:00" + "time": "2022-04-12T15:48:08+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.4.6", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "34e89bc147633c0f9dd6caaaf56da3b806a21465" + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/34e89bc147633c0f9dd6caaaf56da3b806a21465", - "reference": "34e89bc147633c0f9dd6caaaf56da3b806a21465", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0a5868e0999e9d47859ba3d918548ff6943e6389", + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389", "shasum": "" }, "require": { @@ -19491,7 +19553,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.6" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.11" }, "funding": [ { @@ -19507,20 +19569,20 @@ "type": "tidelift" } ], - "time": "2022-03-05T21:03:43+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "330a859a7ec9d7e7d82f2569b1c0700a26ffb1e3" + "reference": "9e444442334fae9637ef3209bc2abddfef49e714" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/330a859a7ec9d7e7d82f2569b1c0700a26ffb1e3", - "reference": "330a859a7ec9d7e7d82f2569b1c0700a26ffb1e3", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9e444442334fae9637ef3209bc2abddfef49e714", + "reference": "9e444442334fae9637ef3209bc2abddfef49e714", "shasum": "" }, "require": { @@ -19595,7 +19657,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.40" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.44" }, "funding": [ { @@ -19611,20 +19673,20 @@ "type": "tidelift" } ], - "time": "2022-04-02T05:55:50+00:00" + "time": "2022-07-29T12:23:38+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", "shasum": "" }, "require": { @@ -19639,7 +19701,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -19677,7 +19739,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" }, "funding": [ { @@ -19693,20 +19755,20 @@ "type": "tidelift" } ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", "shasum": "" }, "require": { @@ -19720,7 +19782,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -19764,7 +19826,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" }, "funding": [ { @@ -19780,20 +19842,20 @@ "type": "tidelift" } ], - "time": "2021-09-14T14:02:44+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "219aa369ceff116e673852dce47c3a41794c14bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd", "shasum": "" }, "require": { @@ -19805,7 +19867,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -19848,7 +19910,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" }, "funding": [ { @@ -19864,20 +19926,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", "shasum": "" }, "require": { @@ -19892,7 +19954,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -19931,7 +19993,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" }, "funding": [ { @@ -19947,20 +20009,20 @@ "type": "tidelift" } ], - "time": "2021-11-30T18:21:41+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", "shasum": "" }, "require": { @@ -19969,7 +20031,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -20007,7 +20069,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" }, "funding": [ { @@ -20023,20 +20085,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", "shasum": "" }, "require": { @@ -20045,7 +20107,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -20086,7 +20148,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" }, "funding": [ { @@ -20102,20 +20164,20 @@ "type": "tidelift" } ], - "time": "2021-06-05T21:20:04+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", "shasum": "" }, "require": { @@ -20124,7 +20186,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -20169,7 +20231,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" }, "funding": [ { @@ -20185,20 +20247,20 @@ "type": "tidelift" } ], - "time": "2022-03-04T08:16:47+00:00" + "time": "2022-05-10T07:21:04+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", "shasum": "" }, "require": { @@ -20207,7 +20269,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -20248,7 +20310,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" }, "funding": [ { @@ -20264,20 +20326,20 @@ "type": "tidelift" } ], - "time": "2021-09-13T13:58:11+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/process", - "version": "v4.4.40", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "54e9d763759268e07eb13b921d8631fc2816206f" + "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/54e9d763759268e07eb13b921d8631fc2816206f", - "reference": "54e9d763759268e07eb13b921d8631fc2816206f", + "url": "https://api.github.com/repos/symfony/process/zipball/5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", + "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", "shasum": "" }, "require": { @@ -20310,7 +20372,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.40" + "source": "https://github.com/symfony/process/tree/v4.4.44" }, "funding": [ { @@ -20326,20 +20388,20 @@ "type": "tidelift" } ], - "time": "2022-03-18T16:18:39+00:00" + "time": "2022-06-27T13:16:42+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.1", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { @@ -20393,7 +20455,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -20409,20 +20471,20 @@ "type": "tidelift" } ], - "time": "2022-03-13T20:07:29+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.6", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "294e9da6e2e0dd404e983daa5aa74253d92c05d0" + "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/294e9da6e2e0dd404e983daa5aa74253d92c05d0", - "reference": "294e9da6e2e0dd404e983daa5aa74253d92c05d0", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8f306d7b8ef34fb3db3305be97ba8e088fb4861", + "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861", "shasum": "" }, "require": { @@ -20482,7 +20544,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.6" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.11" }, "funding": [ { @@ -20498,7 +20560,7 @@ "type": "tidelift" } ], - "time": "2022-03-02T12:42:23+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "tedivm/jshrink", @@ -21037,21 +21099,21 @@ }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -21089,22 +21151,22 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "time": "2021-03-09T10:59:23+00:00" + "time": "2022-06-03T18:03:27+00:00" }, { "name": "webonyx/graphql-php", - "version": "v14.11.5", + "version": "v14.11.6", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "ffa431c0821821839370a68dab3c2597c06bf7f0" + "reference": "6070542725b61fc7d0654a8a9855303e5e157434" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/ffa431c0821821839370a68dab3c2597c06bf7f0", - "reference": "ffa431c0821821839370a68dab3c2597c06bf7f0", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/6070542725b61fc7d0654a8a9855303e5e157434", + "reference": "6070542725b61fc7d0654a8a9855303e5e157434", "shasum": "" }, "require": { @@ -21149,7 +21211,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v14.11.5" + "source": "https://github.com/webonyx/graphql-php/tree/v14.11.6" }, "funding": [ { @@ -21157,7 +21219,7 @@ "type": "open_collective" } ], - "time": "2022-01-24T11:13:31+00:00" + "time": "2022-04-13T16:25:32+00:00" }, { "name": "wikimedia/less.php", @@ -21472,16 +21534,16 @@ }, { "name": "codeception/codeception", - "version": "4.1.31", + "version": "4.2.1", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "15524571ae0686a7facc2eb1f40f600e5bbce9e5" + "reference": "77b3e2003fd4446b35826cb9dc397129c521c888" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/15524571ae0686a7facc2eb1f40f600e5bbce9e5", - "reference": "15524571ae0686a7facc2eb1f40f600e5bbce9e5", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/77b3e2003fd4446b35826cb9dc397129c521c888", + "reference": "77b3e2003fd4446b35826cb9dc397129c521c888", "shasum": "" }, "require": { @@ -21544,11 +21606,11 @@ { "name": "Michael Bodnarchuk", "email": "davert@mail.ua", - "homepage": "http://codegyre.com" + "homepage": "https://codegyre.com" } ], "description": "BDD-style testing framework", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "BDD", "TDD", @@ -21558,7 +21620,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.1.31" + "source": "https://github.com/Codeception/Codeception/tree/4.2.1" }, "funding": [ { @@ -21566,7 +21628,7 @@ "type": "open_collective" } ], - "time": "2022-03-13T17:07:08+00:00" + "time": "2022-06-22T06:18:59+00:00" }, { "name": "codeception/lib-asserts", @@ -21781,16 +21843,16 @@ }, { "name": "codeception/phpunit-wrapper", - "version": "9.0.7", + "version": "9.0.9", "source": { "type": "git", "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b" + "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7d6b1a5ea4ed28d010e5d36b993db813eb49710b", - "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7439a53ae367986e9c22b2ac00f9d7376bb2f8cf", + "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf", "shasum": "" }, "require": { @@ -21824,9 +21886,9 @@ "description": "PHPUnit classes used by Codeception", "support": { "issues": "https://github.com/Codeception/phpunit-wrapper/issues", - "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.7" + "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.9" }, - "time": "2022-01-26T14:43:10+00:00" + "time": "2022-05-23T06:24:11+00:00" }, { "name": "codeception/stub", @@ -22005,16 +22067,16 @@ }, { "name": "doctrine/annotations", - "version": "1.13.2", + "version": "1.13.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + "reference": "648b0343343565c4a056bfc8392201385e8d89f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0", "shasum": "" }, "require": { @@ -22026,9 +22088,10 @@ "require-dev": { "doctrine/cache": "^1.11 || ^2.0", "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", + "phpstan/phpstan": "^1.4.10 || ^1.8.0", "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "symfony/cache": "^4.4 || ^5.2", + "vimeo/psalm": "^4.10" }, "type": "library", "autoload": { @@ -22071,9 +22134,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" + "source": "https://github.com/doctrine/annotations/tree/1.13.3" }, - "time": "2021-08-05T19:00:23+00:00" + "time": "2022-07-02T10:48:51+00:00" }, { "name": "doctrine/instantiator", @@ -22223,16 +22286,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.3.1", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "b37bf90405cec3f7a83c18e645ef748bcb87ac11" + "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/b37bf90405cec3f7a83c18e645ef748bcb87ac11", - "reference": "b37bf90405cec3f7a83c18e645ef748bcb87ac11", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/47177af1cfb9dab5d1cc4daf91b7179c2efe7fad", + "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad", "shasum": "" }, "require": { @@ -22243,33 +22306,32 @@ "ext-tokenizer": "*", "php": "^7.2.5 || ^8.0", "php-cs-fixer/diff": "^2.0", - "symfony/console": "^4.4.20 || ^5.1.3", - "symfony/event-dispatcher": "^4.4.20 || ^5.0", - "symfony/filesystem": "^4.4.20 || ^5.0", - "symfony/finder": "^4.4.20 || ^5.0", - "symfony/options-resolver": "^4.4.20 || ^5.0", + "symfony/console": "^4.4.20 || ^5.1.3 || ^6.0", + "symfony/event-dispatcher": "^4.4.20 || ^5.0 || ^6.0", + "symfony/filesystem": "^4.4.20 || ^5.0 || ^6.0", + "symfony/finder": "^4.4.20 || ^5.0 || ^6.0", + "symfony/options-resolver": "^4.4.20 || ^5.0 || ^6.0", "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php72": "^1.23", "symfony/polyfill-php80": "^1.23", "symfony/polyfill-php81": "^1.23", - "symfony/process": "^4.4.20 || ^5.0", - "symfony/stopwatch": "^4.4.20 || ^5.0" + "symfony/process": "^4.4.20 || ^5.0 || ^6.0", + "symfony/stopwatch": "^4.4.20 || ^5.0 || ^6.0" }, "require-dev": { "justinrainbow/json-schema": "^5.2", "keradus/cli-executor": "^1.5", "mikey179/vfsstream": "^1.6.8", - "php-coveralls/php-coveralls": "^2.4.3", + "php-coveralls/php-coveralls": "^2.5.2", "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.10.3", + "phpspec/prophecy": "^1.15", "phpspec/prophecy-phpunit": "^1.1 || ^2.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5", + "phpunit/phpunit": "^8.5.21 || ^9.5", "phpunitgoodpractices/polyfill": "^1.5", "phpunitgoodpractices/traits": "^1.9.1", - "symfony/phpunit-bridge": "^5.2.4", - "symfony/yaml": "^4.4.20 || ^5.0" + "symfony/phpunit-bridge": "^5.2.4 || ^6.0", + "symfony/yaml": "^4.4.20 || ^5.0 || ^6.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -22301,7 +22363,7 @@ "description": "A tool to automatically fix PHP code style", "support": { "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.3.1" + "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.4.0" }, "funding": [ { @@ -22309,7 +22371,7 @@ "type": "github" } ], - "time": "2021-11-15T18:01:18+00:00" + "time": "2021-12-11T16:25:08+00:00" }, { "name": "jms/metadata", @@ -22377,16 +22439,16 @@ }, { "name": "jms/serializer", - "version": "3.17.1", + "version": "3.18.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "190f64b051795d447ec755acbfdb1bff330a6707" + "reference": "f721ffd76733c24ec1e8fd1e50e44a335fb78bbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/190f64b051795d447ec755acbfdb1bff330a6707", - "reference": "190f64b051795d447ec755acbfdb1bff330a6707", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/f721ffd76733c24ec1e8fd1e50e44a335fb78bbe", + "reference": "f721ffd76733c24ec1e8fd1e50e44a335fb78bbe", "shasum": "" }, "require": { @@ -22414,6 +22476,7 @@ "symfony/filesystem": "^3.0|^4.0|^5.0|^6.0", "symfony/form": "^3.0|^4.0|^5.0|^6.0", "symfony/translation": "^3.0|^4.0|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", "symfony/validator": "^3.1.9|^4.0|^5.0|^6.0", "symfony/yaml": "^3.3|^4.0|^5.0|^6.0", "twig/twig": "~1.34|~2.4|^3.0" @@ -22421,6 +22484,7 @@ "suggest": { "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", "symfony/cache": "Required if you like to use cache functionality.", + "symfony/uid": "Required if you'd like to serialize UID objects.", "symfony/yaml": "Required if you'd like to use the YAML metadata format." }, "type": "library", @@ -22459,7 +22523,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/serializer/issues", - "source": "https://github.com/schmittjoh/serializer/tree/3.17.1" + "source": "https://github.com/schmittjoh/serializer/tree/3.18.0" }, "funding": [ { @@ -22467,7 +22531,106 @@ "type": "github" } ], - "time": "2021-12-28T20:59:55+00:00" + "time": "2022-08-06T05:17:44+00:00" + }, + { + "name": "laminas/laminas-diactoros", + "version": "2.14.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-diactoros.git", + "reference": "6cb35f61913f06b2c91075db00f67cfd78869e28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6cb35f61913f06b2c91075db00f67cfd78869e28", + "reference": "6cb35f61913f06b2c91075db00f67cfd78869e28", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "conflict": { + "phpspec/prophecy": "<1.9.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-curl": "*", + "ext-dom": "*", + "ext-gd": "*", + "ext-libxml": "*", + "http-interop/http-factory-tests": "^0.9.0", + "laminas/laminas-coding-standard": "~2.3.0", + "php-http/psr7-integration-tests": "^1.1.1", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" + }, + "type": "library", + "extra": { + "laminas": { + "config-provider": "Laminas\\Diactoros\\ConfigProvider", + "module": "Laminas\\Diactoros" + } + }, + "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php", + "src/functions/create_uploaded_file.legacy.php", + "src/functions/marshal_headers_from_sapi.legacy.php", + "src/functions/marshal_method_from_sapi.legacy.php", + "src/functions/marshal_protocol_version_from_sapi.legacy.php", + "src/functions/marshal_uri_from_sapi.legacy.php", + "src/functions/normalize_server.legacy.php", + "src/functions/normalize_uploaded_files.legacy.php", + "src/functions/parse_cookie_header.legacy.php" + ], + "psr-4": { + "Laminas\\Diactoros\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "PSR HTTP Message implementations", + "homepage": "https://laminas.dev", + "keywords": [ + "http", + "laminas", + "psr", + "psr-17", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-diactoros/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-diactoros/issues", + "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", + "source": "https://github.com/laminas/laminas-diactoros" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2022-07-28T12:23:48+00:00" }, { "name": "lusitanian/oauth", @@ -22542,16 +22705,16 @@ }, { "name": "magento/magento-coding-standard", - "version": "21", + "version": "25", "source": { "type": "git", "url": "https://github.com/magento/magento-coding-standard.git", - "reference": "470f7a62b2433b0208eebaa6984af86c04736260" + "reference": "7be8305949f6683ff08534fbc22e5d42a1c4eba7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/470f7a62b2433b0208eebaa6984af86c04736260", - "reference": "470f7a62b2433b0208eebaa6984af86c04736260", + "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/7be8305949f6683ff08534fbc22e5d42a1c4eba7", + "reference": "7be8305949f6683ff08534fbc22e5d42a1c4eba7", "shasum": "" }, "require": { @@ -22559,7 +22722,7 @@ "ext-simplexml": "*", "php": ">=7.3", "phpcompatibility/php-compatibility": "^9.3", - "rector/rector": ">=0.12.4 <=0.12.16", + "rector/rector": "^0.13.0", "squizlabs/php_codesniffer": "^3.6.1", "webonyx/graphql-php": "^14.9" }, @@ -22584,22 +22747,22 @@ "description": "A set of Magento specific PHP CodeSniffer rules.", "support": { "issues": "https://github.com/magento/magento-coding-standard/issues", - "source": "https://github.com/magento/magento-coding-standard/tree/v21" + "source": "https://github.com/magento/magento-coding-standard/tree/v25" }, - "time": "2022-04-04T15:22:12+00:00" + "time": "2022-06-21T10:23:58+00:00" }, { "name": "magento/magento2-functional-testing-framework", - "version": "3.8.0", + "version": "3.10.1", "source": { "type": "git", "url": "https://github.com/magento/magento2-functional-testing-framework.git", - "reference": "a934c0b09038acf61612451732c6a3e8a1faa090" + "reference": "c0c3380fcf00fc02053aa09942388e8f4ae7d378" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento2-functional-testing-framework/zipball/a934c0b09038acf61612451732c6a3e8a1faa090", - "reference": "a934c0b09038acf61612451732c6a3e8a1faa090", + "url": "https://api.github.com/repos/magento/magento2-functional-testing-framework/zipball/c0c3380fcf00fc02053aa09942388e8f4ae7d378", + "reference": "c0c3380fcf00fc02053aa09942388e8f4ae7d378", "shasum": "" }, "require": { @@ -22609,26 +22772,28 @@ "codeception/module-asserts": "^1.1", "codeception/module-sequence": "^1.0", "codeception/module-webdriver": "^1.0", - "composer/composer": "^1.9||^2.0", + "composer/composer": "^1.9 || ^2.0, !=2.2.16", "csharpru/vault-php": "^4.2.1", "ext-curl": "*", "ext-dom": "*", + "ext-iconv": "*", "ext-intl": "*", "ext-json": "*", "ext-openssl": "*", "guzzlehttp/guzzle": "^7.3.0", + "laminas/laminas-diactoros": "^2.8", "monolog/monolog": "^2.3", "mustache/mustache": "~2.5", "nikic/php-parser": "^4.4", "php": ">7.3", "php-webdriver/webdriver": "^1.9.0", "spomky-labs/otphp": "^10.0", - "symfony/console": "^4.4", + "symfony/console": "^4.4||^5.4", "symfony/dotenv": "^5.3", "symfony/finder": "^5.0", "symfony/http-foundation": "^5.0", "symfony/mime": "^5.0", - "symfony/process": "^4.4", + "symfony/process": "^4.4||^5.4", "weew/helpers-array": "^1.3" }, "require-dev": { @@ -22674,9 +22839,9 @@ ], "support": { "issues": "https://github.com/magento/magento2-functional-testing-framework/issues", - "source": "https://github.com/magento/magento2-functional-testing-framework/tree/3.8.0" + "source": "https://github.com/magento/magento2-functional-testing-framework/tree/3.10.1" }, - "time": "2022-01-07T17:02:20+00:00" + "time": "2022-08-02T14:40:39+00:00" }, { "name": "mustache/mustache", @@ -23009,16 +23174,16 @@ }, { "name": "php-webdriver/webdriver", - "version": "1.12.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/php-webdriver/php-webdriver.git", - "reference": "99d4856ed7dffcdf6a52eccd6551e83d8d557ceb" + "reference": "b27ddf458d273c7d4602106fcaf978aa0b7fe15a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/99d4856ed7dffcdf6a52eccd6551e83d8d557ceb", - "reference": "99d4856ed7dffcdf6a52eccd6551e83d8d557ceb", + "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/b27ddf458d273c7d4602106fcaf978aa0b7fe15a", + "reference": "b27ddf458d273c7d4602106fcaf978aa0b7fe15a", "shasum": "" }, "require": { @@ -23068,9 +23233,9 @@ ], "support": { "issues": "https://github.com/php-webdriver/php-webdriver/issues", - "source": "https://github.com/php-webdriver/php-webdriver/tree/1.12.0" + "source": "https://github.com/php-webdriver/php-webdriver/tree/1.12.1" }, - "time": "2021-10-14T09:30:02+00:00" + "time": "2022-05-03T12:16:34+00:00" }, { "name": "phpcompatibility/php-compatibility", @@ -23446,16 +23611,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.4.3", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "34545bb30a6f8bd86cfa371dbd42140a657bbf0d" + "reference": "367a8d9d5f7da2a0136422d27ce8840583926955" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/34545bb30a6f8bd86cfa371dbd42140a657bbf0d", - "reference": "34545bb30a6f8bd86cfa371dbd42140a657bbf0d", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/367a8d9d5f7da2a0136422d27ce8840583926955", + "reference": "367a8d9d5f7da2a0136422d27ce8840583926955", "shasum": "" }, "require": { @@ -23465,6 +23630,7 @@ "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" @@ -23484,26 +23650,26 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.4.3" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.7.0" }, - "time": "2022-04-08T11:30:34+00:00" + "time": "2022-08-09T12:23:23+00:00" }, { "name": "phpstan/phpstan", - "version": "1.2.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "cbe085f9fdead5b6d62e4c022ca52dc9427a10ee" + "reference": "c53312ecc575caf07b0e90dee43883fdf90ca67c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cbe085f9fdead5b6d62e4c022ca52dc9427a10ee", - "reference": "cbe085f9fdead5b6d62e4c022ca52dc9427a10ee", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c53312ecc575caf07b0e90dee43883fdf90ca67c", + "reference": "c53312ecc575caf07b0e90dee43883fdf90ca67c", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.2|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -23513,11 +23679,6 @@ "phpstan.phar" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -23530,7 +23691,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.2.0" + "source": "https://github.com/phpstan/phpstan/tree/1.8.2" }, "funding": [ { @@ -23550,7 +23711,7 @@ "type": "tidelift" } ], - "time": "2021-11-18T14:09:01+00:00" + "time": "2022-07-20T09:57:31+00:00" }, { "name": "phpunit/php-code-coverage", @@ -23872,16 +24033,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.20", + "version": "9.5.21", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" + "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", + "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", "shasum": "" }, "require": { @@ -23915,7 +24076,6 @@ "sebastian/version": "^3.0.2" }, "require-dev": { - "ext-pdo": "*", "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { @@ -23959,7 +24119,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" }, "funding": [ { @@ -23971,24 +24131,24 @@ "type": "github" } ], - "time": "2022-04-01T12:37:26+00:00" + "time": "2022-06-19T12:14:25+00:00" }, { "name": "psr/cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -24008,7 +24168,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -24018,30 +24178,30 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { "name": "rector/rector", - "version": "0.12.9", + "version": "0.13.10", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "8f7cfa85731bf23cff9571460d88c327c8c1ac4c" + "reference": "d1e069db8ad3b4aea2b968248370c21415e4c180" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/8f7cfa85731bf23cff9571460d88c327c8c1ac4c", - "reference": "8f7cfa85731bf23cff9571460d88c327c8c1ac4c", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/d1e069db8ad3b4aea2b968248370c21415e4c180", + "reference": "d1e069db8ad3b4aea2b968248370c21415e4c180", "shasum": "" }, "require": { - "php": "^7.1|^8.0", - "phpstan/phpstan": "^1.2" + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.8.2" }, "conflict": { - "phpstan/phpdoc-parser": "<1.2", + "phpstan/phpdoc-parser": "<1.6.2", "rector/rector-cakephp": "*", "rector/rector-doctrine": "*", "rector/rector-laravel": "*", @@ -24057,7 +24217,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.12-dev" + "dev-main": "0.13-dev" } }, "autoload": { @@ -24069,10 +24229,10 @@ "license": [ "MIT" ], - "description": "Prefixed and PHP 7.1 downgraded version of rector/rector", + "description": "Instant Upgrade and Automated Refactoring of any PHP code", "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.12.9" + "source": "https://github.com/rectorphp/rector/tree/0.13.10" }, "funding": [ { @@ -24080,7 +24240,7 @@ "type": "github" } ], - "time": "2021-12-21T23:30:38+00:00" + "time": "2022-08-03T12:48:10+00:00" }, { "name": "sebastian/cli-parser", @@ -25236,16 +25396,16 @@ }, { "name": "symfony/mime", - "version": "v5.4.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "92d27a34dea2e199fa9b687e3fff3a7d169b7b1c" + "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/92d27a34dea2e199fa9b687e3fff3a7d169b7b1c", - "reference": "92d27a34dea2e199fa9b687e3fff3a7d169b7b1c", + "url": "https://api.github.com/repos/symfony/mime/zipball/3cd175cdcdb6db2e589e837dd46aff41027d9830", + "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830", "shasum": "" }, "require": { @@ -25299,7 +25459,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.7" + "source": "https://github.com/symfony/mime/tree/v5.4.11" }, "funding": [ { @@ -25315,27 +25475,25 @@ "type": "tidelift" } ], - "time": "2022-03-11T16:08:05+00:00" + "time": "2022-07-20T11:34:24+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.3", + "version": "v6.1.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8" + "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cc1147cb11af1b43f503ac18f31aa3bec213aba8", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a3016f5442e28386ded73c43a32a5b68586dd1c4", + "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "type": "library", "autoload": { @@ -25368,7 +25526,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.3" + "source": "https://github.com/symfony/options-resolver/tree/v6.1.0" }, "funding": [ { @@ -25384,24 +25542,24 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.4.5", + "version": "v6.1.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30" + "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", - "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/77dedae82ce2a26e2e9b481855473fc3b3e4e54d", + "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/service-contracts": "^1|^2|^3" }, "type": "library", @@ -25430,7 +25588,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.5" + "source": "https://github.com/symfony/stopwatch/tree/v6.1.0" }, "funding": [ { @@ -25446,25 +25604,24 @@ "type": "tidelift" } ], - "time": "2022-02-18T16:06:09+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "symfony/yaml", - "version": "v5.3.14", + "version": "v5.0.11", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "c441e9d2e340642ac8b951b753dea962d55b669d" + "reference": "29b60e88ff11a45b708115004fdeacab1ee3dd5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c441e9d2e340642ac8b951b753dea962d55b669d", - "reference": "c441e9d2e340642ac8b951b753dea962d55b669d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/29b60e88ff11a45b708115004fdeacab1ee3dd5d", + "reference": "29b60e88ff11a45b708115004fdeacab1ee3dd5d", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -25476,10 +25633,12 @@ "suggest": { "symfony/console": "For validating YAML files using the lint command" }, - "bin": [ - "Resources/bin/yaml-lint" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" @@ -25502,10 +25661,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Loads and dumps YAML files", + "description": "Symfony Yaml Component", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.3.14" + "source": "https://github.com/symfony/yaml/tree/5.0" }, "funding": [ { @@ -25521,7 +25680,7 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:05:39+00:00" + "time": "2020-05-20T17:38:26+00:00" }, { "name": "theseer/tokenizer", diff --git a/src/_data/codebase/v2_4/system-requirements.yml b/src/_data/codebase/v2_4/system-requirements.yml index 8d0e0bec317..9fe1f7941b4 100644 --- a/src/_data/codebase/v2_4/system-requirements.yml +++ b/src/_data/codebase/v2_4/system-requirements.yml @@ -1,6 +1,24 @@ --- +2.4.5-p1: + Composer: '2.2' + Elasticsearch: '7.17' + OpenSearch: '1.2' + MariaDB: '10.4' + MySQL: '8.0' + PHP: '8.1' + RabbitMQ: '3.9' + Redis: '6.2' + Varnish: '7.0' + Apache: '2.4' + nginx: '1.18' + AWS Aurora (MySQL): '8.0' + AWS S3: ✔️ + AWS MQ: '3.9.13' + AWS ElastiCache: Redis 6 + AWS Elasticsearch: '7.9' + AWS OpenSearch: '1.2' 2.4.5: - Composer: '2' + Composer: '2.2' Elasticsearch: '7.17' OpenSearch: '1.2' MariaDB: '10.4' @@ -10,9 +28,49 @@ Redis: '6.2' Varnish: '7.0' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' + AWS Aurora (MySQL): '8.0' + AWS S3: ✔️ + AWS MQ: '3.9.13' + AWS ElastiCache: Redis 6 + AWS Elasticsearch: '7.9' + AWS OpenSearch: '1.2' +2.4.4-p2: + Composer: '2.1' + Elasticsearch: '7.16' + OpenSearch: '1.2' + MariaDB: '10.4' + MySQL: '8.0' + PHP: '8.1' + RabbitMQ: '3.9' + Redis: '6.2' + Varnish: '7.0' + Apache: '2.4' + nginx: '1.18' + AWS Aurora (MySQL): '5.7' + AWS S3: ✔️ + AWS MQ: '3.8.11' + AWS ElastiCache: Redis 6 + AWS Elasticsearch: '7.9' +2.4.4-p1: + Composer: '2.1' + Elasticsearch: '7.16' + OpenSearch: '1.2' + MariaDB: '10.4' + MySQL: '8.0' + PHP: '8.1' + RabbitMQ: '3.9' + Redis: '6.2' + Varnish: '7.0' + Apache: '2.4' + nginx: '1.18' + AWS Aurora (MySQL): '5.7' + AWS S3: ✔️ + AWS MQ: '3.8.11' + AWS ElastiCache: Redis 6 + AWS Elasticsearch: '7.9' 2.4.4: - Composer: '2' + Composer: '2.1' Elasticsearch: '7.16' OpenSearch: '1.2' MariaDB: '10.4' @@ -22,7 +80,29 @@ Redis: '6.2' Varnish: '7.0' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' + AWS Aurora (MySQL): '5.7' + AWS S3: ✔️ + AWS MQ: '3.8.11' + AWS ElastiCache: Redis 6 + AWS Elasticsearch: '7.9' +2.4.3-p3: + Composer: '1' + Elasticsearch: '7.16' + OpenSearch: '1.2' + MariaDB: '10.4' + MySQL: '8.0' + PHP: '7.4' + RabbitMQ: '3.8' + Redis: '6.0' + Varnish: '6.5' + Apache: '2.4' + nginx: '1.18' + AWS Aurora (MySQL): '5.7' + AWS S3: ✔️ + AWS MQ: '3.8.11' + AWS ElastiCache: Redis 6 + AWS Elasticsearch: '7.9' 2.4.3-p2: Composer: '1' Elasticsearch: '7.16' @@ -34,7 +114,12 @@ Redis: '6.0' Varnish: '6.5' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' + AWS Aurora (MySQL): '5.7' + AWS S3: ✔️ + AWS MQ: '3.8.11' + AWS ElastiCache: Redis 6 + AWS Elasticsearch: '7.9' 2.4.3: Composer: '1' Elasticsearch: '7.10' @@ -45,14 +130,14 @@ Redis: '6.0' Varnish: '6.5' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' AWS Aurora (MySQL): '5.7' AWS S3: ✔️ AWS MQ: '3.8.11' AWS ElastiCache: Redis 6 - AWS ElasticSearch: '7.9' + AWS Elasticsearch: '7.9' 2.4.2: - Composer: '1' + Composer: '1.9, 2.0' Elasticsearch: '7.9' MariaDB: '10.4' MySQL: '8.0' @@ -61,7 +146,7 @@ Redis: '6.0' Varnish: '6.4' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' AWS S3: ✔️ 2.4.1: Composer: '1' @@ -73,7 +158,7 @@ Redis: '5.0' Varnish: '6.2' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' 2.4.0: Composer: '1' Elasticsearch: '7.6' @@ -84,4 +169,4 @@ Redis: '5.0' Varnish: '6' Apache: '2.4' - nginx: '1.8' + nginx: '1.18' diff --git a/src/_data/core-releases.json b/src/_data/core-releases.json index d188cf40f19..028e4bc0301 100644 --- a/src/_data/core-releases.json +++ b/src/_data/core-releases.json @@ -1,10 +1,49 @@ { "2.4.4-2.4.6": { - "releases": [], - "end-of-support": "2024-11-??" + "releases": [ + { + "publishedAt":"2022-08-09T12:05:25Z", + "tagName":"2.4.5", + "releaseNotes" : { + "commerce": "https://devdocs.magento.com/guides/v2.4/release-notes/commerce-2-4-5.html", + "opensource": "https://devdocs.magento.com/guides/v2.4/release-notes/open-source-2-4-5.html" + } + + }, + { + "publishedAt":"2022-08-09T12:06:03Z", + "tagName":"2.4.4-p1", + "releaseNotes" : { + "common": "https://devdocs.magento.com/guides/v2.4/release-notes/2-4-4-p1.html" + } + }, + { + "publishedAt": "2022-04-12T14:09:01Z", + "tagName": "2.4.4", + "releaseNotes" : { + "commerce": "https://devdocs.magento.com/guides/v2.4/release-notes/commerce-2-4-4.html", + "opensource": "https://devdocs.magento.com/guides/v2.4/release-notes/open-source-2-4-4.html" + } + } + ], + "end-of-support": "2024-11-25" }, "2.4.0-2.4.3": { "releases": [ + { + "publishedAt":"2022-08-09T12:06:46Z", + "tagName":"2.4.3-p3", + "releaseNotes" : { + "common": "https://devdocs.magento.com/guides/v2.4/release-notes/2-4-3-p3.html" + } + }, + { + "publishedAt": "2022-04-12T14:08:56Z", + "tagName": "2.4.3-p2", + "releaseNotes" : { + "common": "https://devdocs.magento.com/guides/v2.4/release-notes/2-4-3-p2.html" + } + }, { "publishedAt": "2021-10-12T14:41:27Z", "tagName": "2.4.3-p1", @@ -64,14 +103,27 @@ } } ], - "end-of-support": "2022-11-??" + "end-of-support": "2022-11-28" }, "2.3": { "releases": [ + { + "publishedAt":"2022-08-09T12:08:32Z", + "tagName":"2.3.7-p4", + "releaseNotes": { + "common": "https://devdocs.magento.com/guides/v2.3/release-notes/2-3-7-p4.html" + } + }, + { + "publishedAt": "2022-04-12T14:08:47Z", + "tagName": "2.3.7-p3", + "releaseNotes": { + "common": "https://devdocs.magento.com/guides/v2.3/release-notes/2-3-7-p3.html" + } + }, { "publishedAt": "2021-10-12T14:41:22Z", "tagName": "2.3.7-p2", - "commerce": "", "releaseNotes" : { "common": "https://devdocs.magento.com/guides/v2.3/release-notes/2-3-7-p2.html" } diff --git a/src/_data/features.yml b/src/_data/features.yml index 0adb2af3b68..25a32f54ba5 100644 --- a/src/_data/features.yml +++ b/src/_data/features.yml @@ -49,29 +49,13 @@ features: 2.3: true 2.4: true - - name: PayPal Smart Buttons + name: Payment Services flexible payment options support: 2.0: false 2.1: false 2.2: false - 2.3: true - 2.4: true - - - name: Vendor Bundled Extension – Yotpo - support: - 2.0: false - 2.1: false - 2.2: false - 2.3: true - 2.4: true - - - name: Live Chat Agent powered by dotdigital - support: - 2.0: false - 2.1: false - 2.2: false - 2.3: true - 2.4: true + 2.3: false + 2.4: true - name: Amazon Sales Channel support: @@ -97,7 +81,7 @@ features: 2.3: true 2.4: true - - name: Vendor Bundled Extensions (dotdigital, Klarna & Braintree) + name: Integrated Braintree for payments support: 2.0: false 2.1: false @@ -155,14 +139,6 @@ features: 2.2: false 2.3: true 2.4: true - - - name: Integrated Vertex - support: - 2.0: false - 2.1: false - 2.2: true - 2.3: true - 2.4: true - name: Adobe Commerce Reporting support: @@ -179,6 +155,14 @@ features: 2.2: true 2.3: true 2.4: true + - + name: Payment Services reporting and reconciliation dashboard + support: + 2.0: false + 2.1: false + 2.2: false + 2.3: false + 2.4: true - name: Platform, performance, and security enhancements versions: @@ -214,6 +198,14 @@ features: 2.2: false 2.3: false 2.4: true + - + name: PHP 8.1 + support: + 2.0: false + 2.1: false + 2.2: false + 2.3: false + 2.4: true - name: PHP 7.4 support: diff --git a/src/_data/main-nav.yml b/src/_data/main-nav.yml index 5539531e02e..13be9ca7e4a 100644 --- a/src/_data/main-nav.yml +++ b/src/_data/main-nav.yml @@ -1,164 +1,258 @@ --- - label: Cloud children: - - label: Cloud basics children: - label: Cloud Guide - url: /cloud/bk-cloud.html + url: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/overview.html versionless: true - label: Cloud Architecture - url: /cloud/architecture/cloud-architecture.html + url: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/architecture/cloud-architecture.html versionless: true - label: Project Structure - url: /cloud/project/project-start.html + url: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/project/file-structure.html versionless: true - label: Upgrades and Patches - url: /cloud/project/project-upgrade-parent.html + url: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/upgrade/best-practices.html versionless: true - label: Release Notes - url: /cloud/release-notes/cloud-tools.html + url: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/release-notes/cloud-tools-suite.html versionless: true - label: Cloud development children: - label: Local development - url: /cloud/docker/docker-development.html + url: https://developer.adobe.com/commerce/cloud-tools/docker/ versionless: true - label: Configure and launch Docker - url: /cloud/docker/docker-config.html + url: https://developer.adobe.com/commerce/cloud-tools/docker/configure/ versionless: true - label: Docker quick reference - url: /cloud/docker/docker-quick-reference.html + url: https://developer.adobe.com/commerce/cloud-tools/docker/quick-reference/ versionless: true - label: Configure Application - url: /cloud/project/magento-app.html + url: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/app/configure-app-yaml.html versionless: true - label: Configure Environments - url: /cloud/env/environments.html + url: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/configure-env-yaml.html versionless: true - label: Functional Testing children: - label: Application testing - url: /cloud/docker/docker-mftf.html + url: https://developer.adobe.com/commerce/cloud-tools/docker/test/application-testing/ versionless: true - label: Cloud code testing - url: /cloud/docker/docker-test-magecloud-pkg-code.html + url: https://developer.adobe.com/commerce/cloud-tools/docker/test/code-testing/ versionless: true - label: Setup children: + - label: Installation Guide (on-premises) + url: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/overview.html + include_versions: ["2.4"] - label: Installation Guide url: /install-gde/install-flow-diagram.html + include_versions: ["2.3"] - label: Extensions Guide - url: /extensions/ + url: https://experienceleague.adobe.com/docs/commerce-admin/start/resources/extensions.html versionless: true + - label: Software Update Guide + url: https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/overview.html + include_versions: ["2.4"] + - label: Software Update Guide url: /comp-mgr/bk-compman-upgrade-guide.html + include_versions: ["2.3"] + + - label: Configuration Guide + url: https://experienceleague.adobe.com/docs/commerce-operations/configuration-guide/overview.html + include_versions: ["2.4"] - label: Configuration Guide url: /config-guide/bk-config-guide.html + include_versions: ["2.3"] + + - label: Performance Best Practices + url: https://experienceleague.adobe.com/docs/commerce-operations/performance-best-practices/overview.html + include_versions: ["2.4"] - label: Performance Best Practices url: /performance-best-practices/introduction.html + include_versions: ["2.3"] + + - label: Migration Guide + url: https://experienceleague.adobe.com/docs/commerce-operations/tools/data-migration/how-migration-works.html + include_versions: ["2.4"] - label: Migration Guide url: /migration/bk-migration-guide.html + include_versions: ["2.3"] - label: Release Information - url: /release-notes/bk-release-notes.html + url: https://experienceleague.adobe.com/docs/commerce-operations/release/notes/overview.html + + - label: Command-line Tools Reference + url: https://experienceleague.adobe.com/docs/commerce-operations/reference/commerce.html + include_versions: ["2.4"] - label: Command-line Tools Reference url: /reference/cli/magento.html + include_versions: ["2.3"] - label: Tools - url: /quality-patches/tool.html + url: https://experienceleague.adobe.com/docs/commerce-operations/tools/overview.html versionless: true - label: Development children: - - label: Backend children: + - label: Architecture + url: https://developer.adobe.com/commerce/php/architecture/ + include_versions: ["2.4"] - label: Architecture url: /architecture/bk-architecture.html + include_versions: ["2.3"] + + - label: PHP Developer Guide + url: https://developer.adobe.com/commerce/php/development/ + include_versions: ["2.4"] - label: PHP Developer Guide url: /extension-dev-guide/bk-extension-dev-guide.html + include_versions: ["2.3"] + + - label: Extension Developer Best Practices + url: https://developer.adobe.com/commerce/php/best-practices/ + include_versions: ["2.4"] - label: Extension Developer Best Practices url: /ext-best-practices/bk-ext-best-practices.html + include_versions: ["2.3"] + + - label: Module Reference Guide + url: https://developer.adobe.com/commerce/php/module-reference/ + include_versions: ["2.4"] - label: Module Reference Guide url: /mrg/intro.html + include_versions: ["2.3"] + + - label: Coding Standards + url: https://developer.adobe.com/commerce/php/coding-standards/ + include_versions: ["2.4"] - label: Coding Standards url: /coding-standards/bk-coding-standards.html + include_versions: ["2.3"] - label: Contributor Guide - url: /contributor-guide/contributing.html + url: https://developer.adobe.com/commerce/contributor/guides/ versionless: true - label: Contribution Resources - url: /community/resources.html + url: https://developer.adobe.com/commerce/contributor/community/ versionless: true - label: Frontend children: + - label: Frontend Developer Guide + url: https://developer.adobe.com/commerce/frontend-core/guide/ + include_versions: ["2.4"] - label: Frontend Developer Guide url: /frontend-dev-guide/bk-frontend-dev-guide.html + include_versions: ["2.3"] + + - label: UI Components Guide + url: https://developer.adobe.com/commerce/frontend-core/ui-components/ + include_versions: ["2.4"] - label: UI Components Guide url: /ui_comp_guide/bk-ui_comps.html + include_versions: ["2.3"] + + - label: JavaScript Developer Guide + url: https://developer.adobe.com/commerce/frontend-core/javascript/ + include_versions: ["2.4"] - label: JavaScript Developer Guide url: /javascript-dev-guide/bk-javascript-dev-guide.html + include_versions: ["2.3"] + + - label: Admin Design Pattern Library + url: https://developer.adobe.com/commerce/admin-developer/pattern-library/ + include_versions: ["2.4"] - label: Admin Design Pattern Library url: /pattern-library/bk-pattern.html + include_versions: ["2.3"] + + - label: Admin Style Guide + url: https://developer.adobe.com/commerce/admin-developer/style-guide/ + include_versions: ["2.4"] - label: Admin Style Guide url: /design-styleguide/bk-styleguide.html + include_versions: ["2.3"] - label: PWA Documentation Site url: https://developer.adobe.com/commerce/pwa-studio/ - label: Page Builder Developer Guide - url: /page-builder/docs/index.html + url: https://developer.adobe.com/commerce/frontend-core/page-builder/ versionless: true - label: API children: + - label: Get Started with our Web APIs + url: https://developer.adobe.com/commerce/webapi/get-started/ + include_versions: ["2.4"] - label: Get Started with our Web APIs url: /get-started/bk-get-started-api.html + include_versions: ["2.3"] + + - label: REST API Reference + url: https://developer.adobe.com/commerce/webapi/rest/ + include_versions: ["2.4"] - label: REST API Reference url: /rest/bk-rest.html + include_versions: ["2.3"] + + - label: SOAP API Reference + url: https://developer.adobe.com/commerce/webapi/get-started/soap-web-api-calls/ + include_versions: ["2.4"] - label: SOAP API Reference url: /soap/bk-soap.html + include_versions: ["2.3"] - label: GraphQL Developer Guide url: /graphql/ + include_versions: ["2.3"] + + - label: GraphQL Developer Guide + url: https://developer.adobe.com/commerce/webapi/graphql/ + include_versions: ["2.4"] - label: Marketplace EQP API Reference - url: /marketplace/eqp/v1/api.html + url: https://developer.adobe.com/commerce/marketplace/guides/eqp/v1/ versionless: true - label: Commerce Reporting API @@ -167,99 +261,177 @@ - label: Testing children: + - label: Application Testing Guide + url: https://developer.adobe.com/commerce/testing/guide/ + include_versions: ["2.4"] - label: Application Testing Guide url: /test/testing.html + include_versions: ["2.3"] - label: Functional Acceptance Testing (MFTF) - url: /mftf/docs/introduction.html - versionless: true + url: https://developer.adobe.com/commerce/testing/functional-testing-framework/ + include_versions: ["2.4"] + + - label: Functional Acceptance Testing (MFTF) + url: https://devdocs.magento.com/mftf/v2/docs/introduction.html + include_versions: ["2.3"] + + - label: Integration Testing + url: https://developer.adobe.com/commerce/testing/guide/integration/ + include_versions: ["2.4"] - label: Integration Testing url: /test/integration/integration_test_execution.html + include_versions: ["2.3"] + + - label: JavaScript Unit Testing + url: https://developer.adobe.com/commerce/testing/guide/js/ + include_versions: ["2.4"] - label: JavaScript Unit Testing url: /test/js/jasmine.html + include_versions: ["2.3"] + + - label: PHP Unit Testing + url: https://developer.adobe.com/commerce/testing/guide/unit/ + include_versions: ["2.4"] - label: PHP Unit Testing url: /test/unit/unit_test_execution.html + include_versions: ["2.3"] + + - label: Web API Functional Testing + url: https://developer.adobe.com/commerce/webapi/get-started/web-api-functional-testing/ + include_versions: ["2.4"] - label: Web API Functional Testing url: /get-started/web-api-functional-testing.html + include_versions: ["2.3"] - separator: true - label: Functional Areas children: - + + - label: Advanced Reporting + url: https://developer.adobe.com/commerce/php/development/advanced-reporting/ + include_versions: ["2.4"] + - label: Advanced Reporting url: /advanced-reporting/overview.html + include_versions: ["2.3"] + + - label: B2B + + url: https://developer.adobe.com/commerce/webapi/rest/b2b/ + include_versions: ["2.4"] - label: B2B url: /b2b/bk-b2b.html + include_versions: ["2.3"] + + - label: Catalog Service + url: https://experienceleague.adobe.com/docs/commerce-merchant-services/catalog-service/overview.html + versionless: true + + - label: Checkout + url: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/ + include_versions: ["2.4"] - label: Checkout url: /howdoi/checkout/checkout_overview.html + include_versions: ["2.3"] + + - label: Inventory Management + url: https://developer.adobe.com/commerce/webapi/rest/inventory/ + include_versions: ["2.4"] - label: Inventory Management url: /inventory/index.html + include_versions: ["2.3"] - label: Live Search - url: /live-search/overview.html + url: https://experienceleague.adobe.com/docs/commerce-merchant-services/live-search/guide-overview.html versionless: true - label: Commerce Marketplace - url: /marketplace/sellers/getting-started.html + url: https://developer.adobe.com/commerce/marketplace/guides/sellers/ versionless: true - label: Payment Services - url: /payment-services/index.html + url: https://experienceleague.adobe.com/docs/commerce-merchant-services/payment-services/guide-overview.html versionless: true - label: Order Management - url: http://omsdocs.magento.com/en/ + url: https://omsdocs.magento.com/en/ - label: Page Builder - url: /page-builder/docs/index.html + url: https://developer.adobe.com/commerce/frontend-core/page-builder/ versionless: true - label: Payment Integrations - url: /payments-integrations/bk-payments-integrations.html + url: https://developer.adobe.com/commerce/php/development/payments-integrations/ + include_versions: ["2.4"] - - label: Product Recommendations - url: /recommendations/product-recs.html + - label: Product Recommendations Developer Guide + url: https://experienceleague.adobe.com/docs/commerce-merchant-services/product-recommendations/developer/development-overview.html versionless: true - label: Security and Compliance - url: /security/security-and-compliance.html + url: https://experienceleague.adobe.com/docs/commerce-operations/security-and-compliance/overview.html versionless: true - label: Shared Services - url: /shared-services/storefront-events-sdk.html + url: https://developer.adobe.com/commerce/services/shared-services/ versionless: true + - label: Staging + url: https://developer.adobe.com/commerce/php/development/staging/ + include_versions: ["2.4"] + - label: Staging url: /extension-dev-guide/staging.html + include_versions: ["2.3"] - label: Tutorials children: + - label: REST Tutorials + url: https://developer.adobe.com/commerce/webapi/rest/tutorials/ + include_versions: ["2.4"] - label: Rest Tutorials url: /rest/tutorials/index.html + include_versions: ["2.3"] + + - label: Custom Attributes + url: https://developer.adobe.com/commerce/php/tutorials/admin/custom-text-field-attribute/ + include_versions: ["2.4"] - label: Custom Attributes url: /howdoi/custom-attributes/introduction.html + include_versions: ["2.3"] + + - label: Customize Product Creation Form + url: https://developer.adobe.com/commerce/php/tutorials/admin/custom-product-creation-form/ + include_versions: ["2.4"] - label: Customize Product Creation Form url: /howdoi/customize_product.html + include_versions: ["2.3"] + + - label: Customize Checkout + url: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/ + include_versions: ["2.4"] - label: Customize Checkout url: /howdoi/checkout/checkout_overview.html + include_versions: ["2.3"] - label: Support - url: /community/resources/support.html + url: https://developer.adobe.com/commerce/contributor/community/support/ versionless: true - label: Video Tutorials - url: /videos/ + url: https://experienceleague.adobe.com/docs/commerce-learn/tutorials/overview.html versionless: true diff --git a/src/_data/mde.yml b/src/_data/mde.yml index 886d003aff2..e7a11676897 100644 --- a/src/_data/mde.yml +++ b/src/_data/mde.yml @@ -1,5 +1,6 @@ --- versions: + - 2.4.5 - 2.4.4 - 2.4.3 - 2.4.2 @@ -20,7 +21,8 @@ extensions: - name: 4.4.3 support: - 2.2.4: supported + 2.4.5: supported + 2.4.4: supported 2.4.3: supported 2.4.2: supported 2.4.1: supported @@ -36,6 +38,7 @@ extensions: - name: 4.4.2 support: + 2.4.5: supported 2.4.4: supported 2.4.3: supported 2.4.2: supported @@ -52,6 +55,7 @@ extensions: - name: 4.4.1 support: + 2.4.5: supported 2.4.4: supported 2.4.3: supported 2.4.2: supported @@ -68,6 +72,7 @@ extensions: - name: 4.4.0 support: + 2.4.5: supported 2.4.4: supported 2.4.3: supported 2.4.2: supported @@ -84,6 +89,7 @@ extensions: - name: 4.3.0 support: + 2.4.5: supported 2.4.4: supported 2.4.3: supported 2.4.2: supported @@ -100,6 +106,7 @@ extensions: - name: 4.2.0 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -116,6 +123,7 @@ extensions: - name: 4.1.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -132,6 +140,7 @@ extensions: - name: 4.0.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -148,6 +157,7 @@ extensions: - name: 3.0.1 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -164,6 +174,7 @@ extensions: - name: 3.0.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -180,6 +191,7 @@ extensions: - name: 2.0.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -196,9 +208,27 @@ extensions: - name: B2B versions: + - + name: 1.3.4 + support: + 2.4.5: supported + 2.4.4: compatible + 2.4.3: compatible + 2.4.2: compatible + 2.4.1: compatible + 2.4.0: compatible + 2.3.7: compatible + 2.3.6: compatible + 2.3.5-p1: compatible + 2.3.4: compatible + 2.3.3: compatible + 2.3.2: compatible + 2.3.1: compatible + 2.3.0: compatible - name: 1.3.3 support: + 2.4.5: compatible 2.4.4: supported 2.4.3: compatible 2.4.2: compatible @@ -215,6 +245,7 @@ extensions: - name: 1.3.2 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: supported 2.4.2: compatible @@ -231,6 +262,7 @@ extensions: - name: 1.3.1 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: supported @@ -247,6 +279,7 @@ extensions: - name: 1.3.0 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -263,6 +296,7 @@ extensions: - name: 1.2.0 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -279,6 +313,7 @@ extensions: - name: 1.1.7 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -295,6 +330,7 @@ extensions: - name: 1.1.6 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -311,6 +347,7 @@ extensions: - name: 1.1.5 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -327,6 +364,7 @@ extensions: - name: 1.1.4 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -343,6 +381,7 @@ extensions: - name: 1.1.3 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -359,6 +398,7 @@ extensions: - name: 1.1.2 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -375,6 +415,7 @@ extensions: - name: 1.1.1 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -391,6 +432,7 @@ extensions: - name: 1.1.0 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -407,9 +449,27 @@ extensions: - name: Inventory Management versions: + - + name: 1.2.5 + support: + 2.4.5: supported + 2.4.4: compatible + 2.4.3: compatible + 2.4.2: compatible + 2.4.1: compatible + 2.4.0: compatible + 2.3.7: compatible + 2.3.6: compatible + 2.3.5-p1: compatible + 2.3.4: compatible + 2.3.3: compatible + 2.3.2: compatible + 2.3.1: compatible + 2.3.0: compatible - name: 1.2.4 support: + 2.4.5: compatible 2.4.4: supported 2.4.3: compatible 2.4.2: compatible @@ -426,6 +486,7 @@ extensions: - name: 1.2.3 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: supported 2.4.2: compatible @@ -442,6 +503,7 @@ extensions: - name: 1.2.2 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: supported @@ -458,6 +520,7 @@ extensions: - name: 1.2.1 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -474,6 +537,7 @@ extensions: - name: 1.2.0 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -490,6 +554,7 @@ extensions: - name: 1.1.7 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -506,6 +571,7 @@ extensions: - name: 1.1.6 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -522,6 +588,7 @@ extensions: - name: 1.1.5 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -538,6 +605,7 @@ extensions: - name: 1.1.4 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -554,6 +622,7 @@ extensions: - name: 1.1.3 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -570,6 +639,7 @@ extensions: - name: 1.1.2 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -586,6 +656,7 @@ extensions: - name: 1.1.1 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -602,6 +673,7 @@ extensions: - name: 1.1.0 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -619,8 +691,26 @@ extensions: name: Live Search versions: - - name: 1.3.1 + name: 2.0.3 support: + 2.4.5: supported + 2.4.4: supported + 2.4.3: supported + 2.4.2: supported + 2.4.1: supported + 2.4.0: supported + 2.3.7: not supported + 2.3.6: not supported + 2.3.5-p1: not supported + 2.3.4: not supported + 2.3.3: not supported + 2.3.2: not supported + 2.3.1: not supported + 2.3.0: not supported + - + name: 2.0.0 + support: + 2.4.5: supported 2.4.4: supported 2.4.3: supported 2.4.2: supported @@ -637,6 +727,7 @@ extensions: - name: 1.3.0 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -653,6 +744,7 @@ extensions: - name: 1.2.0 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -669,6 +761,7 @@ extensions: - name: 1.1.0 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -685,9 +778,27 @@ extensions: - name: Page Builder versions: + - + name: 1.7.2 + support: + 2.4.5: supported + 2.4.4: not supported + 2.4.3: not supported + 2.4.2: not supported + 2.4.1: not supported + 2.4.0: not supported + 2.3.7: not supported + 2.3.6: not supported + 2.3.5-p1: not supported + 2.3.4: not supported + 2.3.3: not supported + 2.3.2: not supported + 2.3.1: not supported + 2.3.0: not supported - name: 1.7.1 support: + 2.4.5: not supported 2.4.4: supported 2.4.3: not supported 2.4.2: not supported @@ -704,6 +815,7 @@ extensions: - name: 1.7.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: supported 2.4.2: not supported @@ -720,6 +832,7 @@ extensions: - name: 1.6.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: supported @@ -736,6 +849,7 @@ extensions: - name: 1.5.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -752,6 +866,7 @@ extensions: - name: 1.4.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -768,6 +883,7 @@ extensions: - name: 1.3.6 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -784,6 +900,7 @@ extensions: - name: 1.3.4 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -800,6 +917,7 @@ extensions: - name: 1.3.1 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -816,6 +934,7 @@ extensions: - name: 1.2.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -832,6 +951,8 @@ extensions: - name: 1.1.0 support: + 2.4.5: not supported + 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported 2.4.1: not supported @@ -847,6 +968,7 @@ extensions: - name: 1.0.1 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -863,6 +985,7 @@ extensions: - name: 1.0.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -876,12 +999,141 @@ extensions: 2.3.2: not supported 2.3.1: supported 2.3.0: compatible + - + name: Payment Services + versions: + - + name: 1.3.0 + support: + 2.4.5: supported + 2.4.4: supported + 2.4.3: supported + 2.4.2: supported + 2.4.1: supported + 2.4.0: supported + 2.3.7: not supported + 2.3.6: not supported + 2.3.5-p1: not supported + 2.3.4: not supported + 2.3.3: not supported + 2.3.2: not supported + 2.3.1: not supported + 2.3.0: not supported + - + name: 1.1.0 + support: + 2.4.5: supported + 2.4.4: supported + 2.4.3: supported + 2.4.2: supported + 2.4.1: supported + 2.4.0: supported + 2.3.7: not supported + 2.3.6: not supported + 2.3.5-p1: not supported + 2.3.4: not supported + 2.3.3: not supported + 2.3.2: not supported + 2.3.1: not supported + 2.3.0: not supported + - + name: 1.0.0 + support: + 2.4.5: supported + 2.4.4: supported + 2.4.3: supported + 2.4.2: supported + 2.4.1: supported + 2.4.0: supported + 2.3.7: not supported + 2.3.6: not supported + 2.3.5-p1: not supported + 2.3.4: not supported + 2.3.3: not supported + 2.3.2: not supported + 2.3.1: not supported + 2.3.0: not supported + - + name: Quick Checkout + versions: + - + name: 1.2.0 + support: + 2.4.5: supported + 2.4.4: supported + 2.4.3: supported + 2.4.2: supported + 2.4.1: supported + 2.4.0: not supported + 2.3.7: not supported + 2.3.6: not supported + 2.3.5-p1: not supported + 2.3.4: not supported + 2.3.3: not supported + 2.3.2: not supported + 2.3.1: not supported + 2.3.0: not supported + - + name: 1.1.0 + support: + 2.4.5: compatible + 2.4.4: supported + 2.4.3: supported + 2.4.2: supported + 2.4.1: supported + 2.4.0: not supported + 2.3.7: not supported + 2.3.6: not supported + 2.3.5-p1: not supported + 2.3.4: not supported + 2.3.3: not supported + 2.3.2: not supported + 2.3.1: not supported + 2.3.0: not supported + - + name: 1.0.0 + support: + 2.4.5: compatible + 2.4.4: supported + 2.4.3: supported + 2.4.2: supported + 2.4.1: supported + 2.4.0: not supported + 2.3.7: not supported + 2.3.6: not supported + 2.3.5-p1: not supported + 2.3.4: not supported + 2.3.3: not supported + 2.3.2: not supported + 2.3.1: not supported + 2.3.0: not supported + - + name: Experience Platform Connector + versions: + - + name: 1.0.0 + support: + 2.4.5: supported + 2.4.4: supported + 2.4.3: supported + 2.4.2: not supported + 2.4.1: not supported + 2.4.0: not supported + 2.3.7: not supported + 2.3.6: not supported + 2.3.5-p1: not supported + 2.3.4: not supported + 2.3.3: not supported + 2.3.2: not supported + 2.3.1: not supported + 2.3.0: not supported - name: Product Recommendations versions: - - name: 3.3.7 + name: 4.0.0 support: + 2.4.5: supported 2.4.4: supported 2.4.3: supported 2.4.2: supported @@ -895,9 +1147,27 @@ extensions: 2.3.2: supported 2.3.1: supported 2.3.0: supported + - + name: 3.3.7 + support: + 2.4.5: compatible + 2.4.4: compatible + 2.4.3: compatible + 2.4.2: compatible + 2.4.1: compatible + 2.4.0: compatible + 2.3.7: compatible + 2.3.6: compatible + 2.3.5-p1: compatible + 2.3.4: compatible + 2.3.3: compatible + 2.3.2: compatible + 2.3.1: compatible + 2.3.0: compatible - name: 3.3.6 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -914,6 +1184,7 @@ extensions: - name: 3.3.5 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -930,6 +1201,7 @@ extensions: - name: 3.3.3 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -946,6 +1218,7 @@ extensions: - name: 3.3.2 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -962,6 +1235,7 @@ extensions: - name: 3.3.1 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -978,6 +1252,7 @@ extensions: - name: 3.3.0 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -994,6 +1269,7 @@ extensions: - name: 3.2.6 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -1010,6 +1286,7 @@ extensions: - name: 3.2.5 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -1026,6 +1303,7 @@ extensions: - name: 3.2.4 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -1042,6 +1320,7 @@ extensions: - name: 3.2.3 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -1058,6 +1337,7 @@ extensions: - name: 3.2.2 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -1074,6 +1354,7 @@ extensions: - name: 3.10.0 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -1090,6 +1371,7 @@ extensions: - name: 3.0.8 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -1106,6 +1388,7 @@ extensions: - name: 3.0.6 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -1122,6 +1405,7 @@ extensions: - name: 3.0.5 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -1138,6 +1422,7 @@ extensions: - name: 3.0.4 support: + 2.4.5: compatible 2.4.4: compatible 2.4.3: compatible 2.4.2: compatible @@ -1154,6 +1439,7 @@ extensions: - name: 3.0.3 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -1170,6 +1456,7 @@ extensions: - name: 3.0.2 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -1186,6 +1473,7 @@ extensions: - name: 3.0.1 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -1202,6 +1490,7 @@ extensions: - name: 3.0.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -1218,6 +1507,7 @@ extensions: - name: 2.0.0 support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported @@ -1234,6 +1524,7 @@ extensions: - name: 1.x.x support: + 2.4.5: not supported 2.4.4: not supported 2.4.3: not supported 2.4.2: not supported diff --git a/src/_data/roadmap.yml b/src/_data/roadmap.yml index ecf51101bad..6ee21028c99 100644 --- a/src/_data/roadmap.yml +++ b/src/_data/roadmap.yml @@ -3,62 +3,29 @@ roadmap: features: - name: Accessibility improvements for storefront/admin status: inProgress - - name: Channel manager with Walmart Marketplace (extension) + - name: Composer 2.2 support status: inProgress - type: Extension - - name: Express Checkout for Adobe Commerce (extension) + - name: Elasticsearch 7.17 support status: inProgress - type: Extension - - name: Framework updates (for example, KnockoutJS and RequireJS) + - name: Mobile layout optimization status: inProgress - - name: GraphQL - Admin configuration + - name: Column grid layouts (viewports) status: inProgress - - name: GraphQL - Caching updates - status: inProgress - - name: jQuery 3.6.x support - status: inProgress - - name: OpenSearch 1.x support - status: inProgress - - name: Payment services (extension) - status: inProgress - type: Extension - - name: PayPal and Braintree updates - status: inProgress - type: Extension - - name: PHP 8.1 support - status: inProgress - - name: PWA - Global theming/styling - status: inProgress - - name: PWA - Custom product attributes + - name: Security and quality improvements status: inProgress - - name: PWA - Performance optimizations + - name: Replace Froogaloop library with player.js status: inProgress - - name: PWA - Shopping and cart improvements + - name: TinyMCE 5.10 support status: inProgress - - name: Security and quality improvements + - name: Latest Vimeo API support status: inProgress - - name: Vendor Bundled Extensions (VBEs) – Remove (except Braintree) - status: inProgress - type: Extension - name: Planned features: - - name: Framework updates (for example, KnockoutJS and RequireJS) - status: Planned - - name: GraphQL - Personalization updates - status: Planned - - name: GraphQL - Page Builder improvements - status: Planned - - name: GraphQL - Inventory improvements + - name: OpenSearch as independent search engine status: Planned - - name: Page Builder - Mobile layout optimization + - name: Remove jquery-migrate status: Planned - - name: Page Builder - Column grid layouts (viewports) + - name: Remove PHP 7.4 compatibility status: Planned - - name: PWA - Server-side rendering (SSR) - status: Planned - - name: PWA - Extensibility improvements (payment/ship) - status: Planned - - name: PWA - Bundle product type - status: Planned - - name: Security and quality improvements + - name: Symfony dependency updates status: Planned diff --git a/src/_data/toc/architecture-guide.yml b/src/_data/toc/architecture-guide.yml index 85354b17ccf..293bcbd8b44 100644 --- a/src/_data/toc/architecture-guide.yml +++ b/src/_data/toc/architecture-guide.yml @@ -59,4 +59,4 @@ pages: children: - label: Web Api - url: /get-started/bk-get-started-api.html + url: /architecture/archi_perspectives/webapi-vision.html diff --git a/src/_data/toc/catalog-service.yml b/src/_data/toc/catalog-service.yml new file mode 100644 index 00000000000..37d13585065 --- /dev/null +++ b/src/_data/toc/catalog-service.yml @@ -0,0 +1,17 @@ +label: Catalog Service +pages: + - label: Overview + url: /catalog-service/index.html + versionless: true + + - label: products query + url: /catalog-service/products.html + versionless: true + + - label: productSearch query + url: /catalog-service/productsearch.html + versionless: true + + - label: refineProduct query + url: /catalog-service/refine-product.html + versionless: true diff --git a/src/_data/toc/configuration-guide.yml b/src/_data/toc/configuration-guide.yml index 25cb79a0053..e6ef86ddfb3 100644 --- a/src/_data/toc/configuration-guide.yml +++ b/src/_data/toc/configuration-guide.yml @@ -356,7 +356,7 @@ pages: url: /config-guide/mq/manage-message-queues.html - label: Using AWS Message Queues - url: /config-guide/mq/manage-message-queues.html + url: /config-guide/mq/aws-mq.html exclude_versions: ["2.3"] - label: Split database performance solution (Adobe Commerce only) diff --git a/src/_data/toc/extension-best-practices.yml b/src/_data/toc/extension-best-practices.yml index 763f626d6db..fc05e581759 100644 --- a/src/_data/toc/extension-best-practices.yml +++ b/src/_data/toc/extension-best-practices.yml @@ -37,6 +37,9 @@ pages: url: /ext-best-practices/phpstorm/introduction.html children: + - label: Installation + url: /ext-best-practices/phpstorm/installation.html + - label: Code generation url: /ext-best-practices/phpstorm/code-generation.html diff --git a/src/_data/toc/extensions.yml b/src/_data/toc/extensions.yml index d3d2df94efd..60c6f76caa2 100644 --- a/src/_data/toc/extensions.yml +++ b/src/_data/toc/extensions.yml @@ -6,8 +6,8 @@ pages: versionless: true - label: Install extensions - url: /extensions/install/ - versionless: true + url: /install-gde/install/cli/extensions.html + exclude_versions: ["2.3"] - label: Amazon Sales Channel versionless: true diff --git a/src/_data/toc/graphql.yml b/src/_data/toc/graphql.yml index a0011a66906..345a5156e00 100644 --- a/src/_data/toc/graphql.yml +++ b/src/_data/toc/graphql.yml @@ -9,7 +9,7 @@ pages: - label: GraphQL requests url: /graphql/send-request.html - - label: Authorization tokens + - label: GraphQL Authorization url: /graphql/authorization-tokens.html - label: Protected mutations diff --git a/src/_data/toc/installation-guide.yml b/src/_data/toc/installation-guide.yml index ac364e24268..3122c82790b 100644 --- a/src/_data/toc/installation-guide.yml +++ b/src/_data/toc/installation-guide.yml @@ -148,6 +148,10 @@ pages: - label: Remove sample data modules or update sample data url: /install-gde/install/cli/install-cli-sample-data-other.html + - label: Install an extension + url: /install-gde/install/cli/extensions.html + exclude_versions: ["2.3"] + - label: Uninstall language packages url: /install-gde/install/cli/install-cli-uninstall-langpk.html diff --git a/src/_data/toc/release-notes.yml b/src/_data/toc/release-notes.yml index d53ef84c3a9..4efa0b3f004 100644 --- a/src/_data/toc/release-notes.yml +++ b/src/_data/toc/release-notes.yml @@ -7,6 +7,20 @@ pages: include_versions: ["2.4"] children: + - label: Adobe Commerce 2.4.5-p1 Release Notes + url: /release-notes/2-4-5-p1.html + + - label: Magento Open Source 2.4.5 Release Notes + url: /release-notes/open-source-2-4-5.html + + - label: Adobe Commerce 2.4.5 Release Notes + url: /release-notes/commerce-2-4-5.html + + - label: Adobe Commerce 2.4.4-p2 Release Notes + url: /release-notes/2-4-4-p2.html + + - label: Adobe Commerce 2.4.4-p1 Release Notes + url: /release-notes/2-4-4-p1.html - label: Magento Open Source 2.4.4 Release Notes url: /release-notes/open-source-2-4-4.html @@ -14,6 +28,9 @@ pages: - label: Adobe Commerce 2.4.4 Release Notes url: /release-notes/commerce-2-4-4.html + - label: Adobe Commerce 2.4.3-p3 Release Notes + url: /release-notes/2-4-3-p3.html + - label: Adobe Commerce 2.4.3-p2 Release Notes url: /release-notes/2-4-3-p2.html @@ -58,6 +75,9 @@ pages: - label: Component Status url: /release-notes/component-status.html + - label: Adobe Commerce 2.3.7-p4 Release Notes + url: /release-notes/2-3-7-p4.html + - label: Adobe Commerce 2.3.7-p3 Release Notes url: /release-notes/2-3-7-p3.html diff --git a/src/_data/toc/rest-api.yml b/src/_data/toc/rest-api.yml index ebfee4855a3..694ef46d7eb 100644 --- a/src/_data/toc/rest-api.yml +++ b/src/_data/toc/rest-api.yml @@ -12,15 +12,15 @@ pages: children: - label: Admin REST endpoints - url: https://magento.redoc.ly/2.3.7-admin/ + url: https://developer.adobe.com/commerce/webapi/rest/quick-reference/ include_versions: ["2.3"] - label: Customer REST endpoints - url: https://magento.redoc.ly/2.3.7-customer/ + url: https://developer.adobe.com/commerce/webapi/rest/quick-reference/ include_versions: ["2.3"] - label: Guest REST endpoints - url: https://magento.redoc.ly/2.3.7-guest/ + url: https://developer.adobe.com/commerce/webapi/rest/quick-reference/ include_versions: ["2.3"] - label: Asynchronous Admin REST endpoints @@ -40,15 +40,15 @@ pages: children: - label: Admin REST endpoints - url: https://magento.redoc.ly/2.4.4-admin/ + url: https://developer.adobe.com/commerce/webapi/rest/quick-reference/ include_versions: ["2.4"] - label: Customer REST endpoints - url: https://magento.redoc.ly/2.4.4-customer/ + url: https://developer.adobe.com/commerce/webapi/rest/quick-reference/ include_versions: ["2.4"] - label: Guest REST endpoints - url: https://magento.redoc.ly/2.4.4-guest/ + url: https://developer.adobe.com/commerce/webapi/rest/quick-reference/ include_versions: ["2.4"] - label: Generate a local API reference diff --git a/src/_data/toc/shared-services.yml b/src/_data/toc/shared-services.yml index 9db984df1fb..015f73cf60c 100644 --- a/src/_data/toc/shared-services.yml +++ b/src/_data/toc/shared-services.yml @@ -1,12 +1,12 @@ label: Shared Services pages: -- label: Storefront Events +- label: Adobe Commerce Storefront Events children: - - label: Storefront Events SDK + - label: Adobe Commerce Storefront Event SDK url: /shared-services/storefront-events-sdk.html versionless: true - - label: Storefront Event Collector + - label: Adobe Commerce Storefront Event Collector url: /shared-services/storefront-event-collector.html versionless: true diff --git a/src/_data/toc/soap.yml b/src/_data/toc/soap.yml new file mode 100644 index 00000000000..6e16765987f --- /dev/null +++ b/src/_data/toc/soap.yml @@ -0,0 +1,4 @@ +label: SOAP Reference +pages: + - label: Overview + url: /soap/bk-soap.html diff --git a/src/_data/toc/testing.yml b/src/_data/toc/testing.yml index f46d64c298a..6e36a9dc70d 100644 --- a/src/_data/toc/testing.yml +++ b/src/_data/toc/testing.yml @@ -34,16 +34,41 @@ pages: - label: '@magentoDataFixture' url: /test/integration/annotations/magento-data-fixture.html - - label: '@magentoDataFixtureDataProvider' - url: /test/integration/annotations/magento-data-fixture-data-provider.html - exclude_versions: ["2.3"] - - label: '@magentoDbIsolation' url: /test/integration/annotations/magento-db-isolation.html - - label: Parameterized Data Fixture - url: /test/integration/parameterized_data_fixture.html - exclude_versions: ["2.3"] + - label: Using PHP built-in attributes + url: /test/integration/attributes.html + exclude_versions: [ "2.3" ] + + children: + + - label: 'AppArea' + url: /test/integration/attributes/magento-app-area.html + + - label: 'AppIsolation' + url: /test/integration/attributes/magento-app-isolation.html + + - label: 'Cache' + url: /test/integration/attributes/magento-cache.html + + - label: 'ComponentsDir' + url: /test/integration/attributes/magento-components-dir.html + + - label: 'ConfigFixture' + url: /test/integration/attributes/magento-config-fixture.html + + - label: 'DataFixture' + url: /test/integration/attributes/magento-data-fixture.html + + - label: 'DataFixtureBeforeTransaction' + url: /test/integration/attributes/magento-data-fixture-before-transaction.html + + - label: 'DbIsolation' + url: /test/integration/attributes/magento-db-isolation.html + + - label: 'IndexerDimensionMode' + url: /test/integration/attributes/magento-indexer-dimension-mode.html - label: JavaScript Unit Testing children: diff --git a/src/_data/var.yml b/src/_data/var.yml index 94850704667..4f0abc08400 100644 --- a/src/_data/var.yml +++ b/src/_data/var.yml @@ -26,19 +26,19 @@ csuite: Cloud Suite for Commerce ct: ece-tools ct-repo: magento/ece-tools -ct-release: 2002.1.10 +ct-release: 2002.1.13 mcc-prod: Cloud Components of Commerce mcc-package: magento/magento-cloud-components -mcc-release: 1.0.10 +mcc-release: 1.0.12 mcd-prod: Cloud Docker for Commerce mcd-package: magento/magento-cloud-docker -mcd-release: 1.3.2 +mcd-release: 1.3.4 mcp-prod: Cloud Patches for Commerce mcp-package: magento/magento-cloud-patches -mcp-release: 1.0.16 +mcp-release: 1.0.20 # TIP: Use the following syntax to use a variable in the documentation source: {{site.data.var.xx}} where xx # is the variable value. diff --git a/src/_data/whats-new.yml b/src/_data/whats-new.yml index 4be295744a3..d72e0095d91 100644 --- a/src/_data/whats-new.yml +++ b/src/_data/whats-new.yml @@ -4,8 +4,1195 @@ description: This page contains recent changes that we think you'd like to know We exclude from this list proofreading, spelling checks, and all minor updates. link: "/whats-new.html" thread: "/whatsnew-feed.xml" -updated: Thu May 5 22:19:39 2022 +updated: Mon Jan 23 15:44:39 2023 entries: +- description: Added redirects for all 2.4.x and unversioned topics that were migrated + to [Adobe Developer documentation](https://developer.adobe.com/commerce/docs) + and [Experience League](https://experienceleague.adobe.com/docs/commerce.html). + versions: 2.4.x + type: Major Update + date: December 8, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3225 + merge_commit: a647efe55c72995967a1382db5dd46d00cf0db80 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Cloud User Guide](https://devdocs.magento.com/cloud/bk-cloud.html) + topics moved to [Adobe Experience League](https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/overview.html) + and the [Cloud Docker](https://devdocs.magento.com/cloud/docker/docker-development.html) + topics moved to [Adobe Developer documentation](https://developer.adobe.com/commerce/cloud-tools/docker/get-support/). + All topics will be redirected soon. + versions: 2.4.x + type: Major Update + date: December 1, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3221 + merge_commit: 8e07b3212f385c8aa3f30c6320860840e24d3616 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [GraphQL Developer Guide](https://devdocs.magento.com/guides/v2.4/graphql/index.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/webapi/graphql/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: November 22, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3215 + merge_commit: 334dd58b8c79d13ec2707e8f016271010fb275b6 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Catalog Services](https://devdocs.magento.com/catalog-service/products.html) + and [Live Search](https://devdocs.magento.com/live-search/graphql-support.html) + GraphQL queries moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/webapi/graphql/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: November 22, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3218 + merge_commit: e0ae15f332cfb0623b4a1726580ee66969b8b02b + contributor: keharper + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Product Recommendations](https://devdocs.magento.com/recommendations/product-recs.html) + topics moved to the [Experience League](https://experienceleague.adobe.com/docs/commerce-merchant-services/product-recommendations/developer/development-overview.html) + and the [Adobe Developer documentation](https://developer.adobe.com/commerce/services/product-recommendations/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: October 31, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3206 + merge_commit: 5d4605e409897e614a1be5910c40f1fa9b9de331 + contributor: jhadobe + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: "[Cloud Suite release notes](https://devdocs.magento.com/cloud/release-notes/cloud-tools.html) + for ECE-Tools 2002.1.13, Cloud Patches 1.0.20, and Cloud Docker 1.3.4." + versions: 2.x + type: Major Update + date: October 27, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3202 + merge_commit: 03c0f909cf3eb7cb9306e2388869ab65a1b0e325 + contributor: hguthrie + membership: true + labels: + - 2.x + - Major Update +- description: Added `categories` and `categoryPath` filtering information to [productSearch](https://devdocs.magento.com/live-search/product-search.html) + topic. + versions: 2.x + type: Major Update + date: October 26, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3200 + merge_commit: d9250bc6c78c79bcff94a75fdf8367c43b6cbdec + contributor: dobooth + membership: true + labels: + - 2.x + - Major Update +- description: The Adobe Commerce and Magento Open Source [release notes](https://devdocs.magento.com/guides/v2.4/release-notes/bk-release-notes.html) + topics moved to [Adobe Experience League](https://experienceleague.adobe.com/docs/commerce-operations/release/notes/overview.html) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: October 24, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3194 + merge_commit: 1814219fefc8e99650ef4fa117581fb367bbd7bb + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Shared Services](https://devdocs.magento.com/shared-services/storefront-events-sdk.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/services/shared-services/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: October 19, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3195 + merge_commit: 4f129a1cdbf2e22d7eacdf93c8b54e279d7a979e + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [API endpoints attributes](https://devdocs.magento.com/codelinks/attributes.html) + topic moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/webapi/rest/attributes) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: October 14, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3190 + merge_commit: e66911b062f0677d49e2ea112adfdb1128383d55 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Security and Compliance](https://devdocs.magento.com/security/security-and-compliance.html) + topics moved to [Experience League](https://experienceleague.adobe.com/docs/commerce-operations/security-and-compliance/overview.html) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: October 12, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3183 + merge_commit: f3a4a10e300caa6cedbefcc1701474d902e34b5b + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Backward-incompatible changes](https://devdocs.magento.com/guides/v2.4/release-notes/backward-incompatible-changes/index.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/php/development/backward-incompatible-changes/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: October 11, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3184 + merge_commit: b308f39fea49c96df38205f253412fde3a7d66f2 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Published release notes for the [2.4.5-p1](https://devdocs.magento.com/guides/v2.4/release-notes/2-4-5-p1.html) + and [2.4.4-p2](https://devdocs.magento.com/guides/v2.4/release-notes/2-4-4-p2.html) + versions. + versions: 2.4.4, 2.4.5 + type: New Topic + date: October 11, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3186 + merge_commit: c5b50f9e9fe4f604faeb2c51e351922e567a9136 + contributor: dshevtsov + membership: true + labels: + - New Topic + - 2.4.4 + - 2.4.5 +- description: The [Advanced Reporting](https://devdocs.magento.com/guides/v2.4/advanced-reporting/overview.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/php/development/advanced-reporting/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: October 6, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3180 + merge_commit: cb3b7ec015e12d5e201b54b0825a82dc5786a6ce + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The Quality Patches Tool [home page](https://devdocs.magento.com/quality-patches/tool.html) + moved to [Experience League](https://experienceleague.adobe.com/tools/commerce-quality-patches/index.html) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: October 3, 2022 + link: https://github.com/magento/devdocs/pull/9521 + merge_commit: df084a542261a999656b20f7343758244a547629 + contributor: barnato-v + membership: true + labels: + - Major Update + - 2.4.x + - 'Progress: done' + - migration +- description: Verified the backup retention policy for Cloud projects. See [Backup + and disaster recovery](https://devdocs.magento.com/cloud/architecture/pro-architecture.html#backup-and-disaster-recovery) + in the Cloud guide. + versions: 2.x + type: Technical + date: September 30, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3146 + merge_commit: 9d068b8880b2216463c1da61d5f41b2cd2ff2b4d + contributor: hguthrie + membership: true + labels: + - 2.x + - Technical +- description: Updated the [New Relic instructions for Logs](https://devdocs.magento.com/cloud/project/new-relic.html#view-and-analyze-log-data). + versions: 2.x + type: Technical + date: September 30, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3169 + merge_commit: 4edaa834aa405693e976dcc89e7467ad01d6dfe0 + contributor: hguthrie + membership: true + labels: + - 2.x + - Technical +- description: The Quality Patches Tool [release notes](https://devdocs.magento.com/quality-patches/release-notes.html) + moved to [Experience League](https://experienceleague.adobe.com/docs/commerce-operations/tools/quality-patches-tool/release-notes.html) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: September 30, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3173 + merge_commit: cb1aa57be409522d02b21f0c45f03dc35af28fe2 + contributor: barnato-v + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Release Information](https://devdocs.magento.com/release/roadmap.html) + topics moved to [Experience League](https://experienceleague.adobe.com/docs/commerce-operations/release/roadmap.html) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: September 30, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3175 + merge_commit: b649cfd3b2857b5d9ea8f3d93653f732271b8749 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Published [release notes](https://devdocs.magento.com/quality-patches/release-notes.html) + for the 1.1.20 Quality Patches Tool (QPT) package release. + versions: 2.4.x + type: Major Update + date: September 27, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3170 + merge_commit: 65e2ae5f2c783f7b72eedcad92991b011f057c55 + contributor: apoltoratskyi + membership: true + labels: + - Major Update + - 2.4.x +- description: The [Command-Line Tools Reference](https://devdocs.magento.com/guides/v2.4/reference/cli/magento-commerce.html) + topics moved to [Experience League](https://experienceleague.adobe.com/docs/commerce-operations/reference/commerce-on-premises.html) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: September 23, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3165 + merge_commit: d863de201b6ddee5a4f181a7da8f4b1bf98e6a01 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Catalog Service](https://devdocs.magento.com/catalog-service/index.html) + topics moved to [Experience League](https://experienceleague.adobe.com/docs/commerce-merchant-services/catalog-service/overview.html) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: September 23, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3166 + merge_commit: b2a7180ad20ac8677e1d1ffa903a47cd392269d4 + contributor: dobooth + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Functional Testing Framework Guide](https://devdocs.magento.com/mftf/docs/introduction.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/testing/functional-testing-framework/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: September 16, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3160 + merge_commit: 2629e630f302f33b897a54a80c0a88957351e48f + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Cloud tools release:
- [Ece-tools 2002.1.12](https://devdocs.magento.com/cloud/release-notes/ece-release-notes.html#v2002112)
- + [Cloud Docker 1.3.3](https://devdocs.magento.com/cloud/release-notes/mcd-release-notes.html#v133)
- + [Cloud components 1.0.12](https://devdocs.magento.com/cloud/release-notes/mcc-release-notes.html#v1012)
- + [Cloud patches 1.0.19](https://devdocs.magento.com/cloud/release-notes/mcp-release-notes.html#v1019) + versions: 2.x + type: Major Update + date: September 14, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3152 + merge_commit: 29915eb9bb2330f4ff07c3469f179d32bd426f12 + contributor: BaDos + membership: true + labels: + - 2.x + - Major Update +- description: Moved the "Live Search with Catalog Service" example from Live Search + to the Catalog Service [productSearch query](https://devdocs.magento.com/catalog-service/productsearch.html) + topic. + versions: 2.x + type: New Topic + date: September 14, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3139 + merge_commit: cfbc6d3a0ca4de064dc9215673ed85671e18b117 + contributor: dobooth + membership: true + labels: + - 2.x + - New Topic +- description: The [Installation Guide](https://devdocs.magento.com/guides/v2.4/install-gde/install-flow-diagram.html) + topics moved to [Experience League](https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/overview.html) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: September 13, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3150 + merge_commit: d5bb9c81d63725cb2887863d2ad3f8ae30ea66bb + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Added information about the `synchronous_replication` parameter for + the [`MYSQL_USE_SLAVE_CONNECTION`](https://devdocs.magento.com/cloud/env/variables-deploy.html#mysql_use_slave_connection) + deploy variable. + versions: 2.x + type: Major Update + date: September 13, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3154 + merge_commit: f5eed15e3109a52112b860c84d475078e695c7cc + contributor: gamarshall + membership: true + labels: + - 2.x + - Major Update +- description: Added 2.4.x and 2.3.x security patches to the [system requirements](https://devdocs.magento.com/guides/v2.4/install-gde/system-requirements.html) + table. + versions: 2.3.x, 2.4.x + type: Major Update + date: September 13, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3155 + merge_commit: a53858655710ef612096bca1088fd7fc5779b3c8 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.3.x + - 2.4.x +- description: The Quality Patches Tool [usage](https://devdocs.magento.com/quality-patches/tool.html) + topic moved to [Experience League](https://experienceleague.adobe.com/docs/commerce-operations/tools/quality-patches-tool/usage.html) + and will be redirected soon. + versions: 2.x + type: Major Update + date: September 12, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3153 + merge_commit: 18ae42cc0eaba3c6b0876d4391c8020d90e9059f + contributor: barnato-v + membership: true + labels: + - 2.x + - Major Update + - migration +- description: The [Payments Integrations Guide](https://devdocs.magento.com/guides/v2.4/payments-integrations/bk-payments-integrations.html) + has moved to the [Adobe Devsite](https://developer.adobe.com/commerce/php/development/payments-integrations) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: September 7, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3141 + merge_commit: bc9d234c3d943ba9983c3f281e702e0c34b25e80 + contributor: jhadobe + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Improved the explanation for how the `ece-tools` package overrides + default Commerce configuration values using the [.magento.env.yaml file](https://devdocs.magento.com/cloud/project/magento-env-yaml.html). + versions: 2.x + type: Technical + date: September 2, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3138 + merge_commit: 511de7458d36159daeadba81a300b841a73a230f + contributor: hguthrie + membership: true + labels: + - 2.x + - Technical +- description: Updated the email address for the [Commerce Beta Program](https://devdocs.magento.com/release/beta-program.html). + versions: 2.4.x + type: Technical + date: August 29, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3136 + merge_commit: 767f03bca4176c956e9efadccdee33d57e51b98c + contributor: jeff-matthews + membership: true + labels: + - Technical + - 2.4.x +- description: The [video tutorials](https://devdocs.magento.com/videos/) moved to + [Adobe Experience League](https://experienceleague.adobe.com/docs/commerce-learn/tutorials/overview.html) + and will be redirected soon. + versions: 2.x + type: Major Update + date: August 29, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3127 + merge_commit: cfc3f6bd3dce81f6f540ee6485bd0401b1f5c3f3 + contributor: jeff-matthews + membership: true + labels: + - 2.x + - Major Update + - migration +- description: The [Data Migration Guide](https://devdocs.magento.com/guides/v2.4/migration/bk-migration-guide.html) + topics moved to [Experience League](https://experienceleague.adobe.com/docs/commerce-operations/tools/data-migration/how-migration-works.html) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: August 29, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3133 + merge_commit: 5612d06aaf9f581ebcfcd5cd209aed5967442162 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Updated the [Regional IP addresses](https://devdocs.magento.com/cloud/env/environments-start.html#regional-ip-addresses) + for Cloud Integration environments. + versions: 2.x + type: Technical + date: August 25, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3121 + merge_commit: 5ab9ae7c5587844c9d55b049bb48b0234502bcfb + contributor: hguthrie + membership: true + labels: + - 2.x + - Technical +- description: Published [release notes](https://devdocs.magento.com/quality-patches/release-notes.html) + for the 1.1.19 Quality Patches Tool (QPT) package release. + versions: 2.3.x, 2.4.x + type: Major Update + date: August 24, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3128 + merge_commit: 274f6a4af4a59285bbc06212648a2661535b1df1 + contributor: agorbivskyi + membership: true + labels: + - Major Update + - 2.3.x + - 2.4.x +- description: Added information about the DHL schema upgrade patch to the Adobe Commerce + 2.4.x and 2.3.7 release notes. See [2.4.x Release Information](https://devdocs.magento.com/guides/v2.4/release-notes/bk-release-notes.html) + and [2.3.x Release Information](https://devdocs.magento.com/guides/v2.3/release-notes/bk-release-notes.html). + versions: 2.3.x, 2.4.x + type: Major Update + date: August 22, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3122 + merge_commit: 4d0858cca3e7472f74b3fc273ff39d84f11cc1b8 + contributor: jfrontain + membership: true + labels: + - Major Update + - 2.3.x + - 2.4.x +- description: Added the `productView` field to the Live Search [`productSearch` query](https://devdocs.magento.com/live-search/product-search.html). + This field was added to support Adobe Commerce Catalog Service, which is currently + in beta. + versions: 2.4.x + type: Major Update + date: August 18, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3117 + merge_commit: acefa4024fa4a2bcb1048262bcdad591d5dec4a4 + contributor: keharper + membership: true + labels: + - Major Update + - 2.4.x +- description: "[Cloud Patches 1.0.18 release](https://devdocs.magento.com/cloud/release-notes/mcp-release-notes.html#v1018) + contains a critical patch for Commerce 2.4.5." + versions: 2.4.5 + type: Technical + date: August 12, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3115 + merge_commit: dbcfe8a88c49c847212d5dcadd17499a03b0c317 + contributor: billygilbert + membership: true + labels: + - Technical + - 2.4.5 +- description: Published [release notes](https://devdocs.magento.com/quality-patches/release-notes.html) + for the 1.1.18 Quality Patches Tool (QPT) package release. + versions: 2.3.x, 2.4.x + type: Major Update + date: August 11, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3112 + merge_commit: bf21f2ae53c92a33d048a1df1c65bf5ca16bad07 + contributor: katmoon + membership: true + labels: + - Major Update + - 2.3.x + - 2.4.x +- description: Added information about a known issue with Braintree on [Adobe Commerce + 2.4.5](https://devdocs.magento.com/guides/v2.4/release-notes/commerce-2-4-5.html) + and [Magento Open Source 2.4.5](https://devdocs.magento.com/guides/v2.4/release-notes/open-source-2-4-5.html). + versions: 2.4.5 + type: Major Update + date: August 10, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3108 + merge_commit: 46b441e2ab5c8b952687d305666df16e5fe2bc2b + contributor: jfrontain + membership: true + labels: + - Major Update + - 2.4.5 +- description: Updated reference documentation for the Packages [OpenSource](https://devdocs.magento.com/guides/v2.4/release-notes/packages-open-source.html)/[Commerce](https://devdocs.magento.com/guides/v2.4/release-notes/packages-commerce.html) + and `bin/magento` CLI [OpenSource](https://devdocs.magento.com/guides/v2.4/reference/cli/magento.html)/[Commerce](https://devdocs.magento.com/guides/v2.4/reference/cli/magento-commerce.html). + versions: 2.4.5 + type: Major Update + date: August 9, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3105 + merge_commit: 25e2c9aa5a0a1518e3c2b9359208bde534248567 + contributor: dshevtsov + membership: true + labels: + - Major Update + - Automation + - 2.4.5 +- description: Updated the [Backward incompatible changes reference](https://devdocs.magento.com/guides/v2.4/release-notes/backward-incompatible-changes/reference.html). + versions: 2.4.5 + type: Major Update + date: August 9, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3106 + merge_commit: c2d8100239a99408f534dcce493d31b912bc5f6d + contributor: dshevtsov + membership: true + labels: + - Major Update + - Automation + - 2.4.5 +- description: Added the Adobe Commerce 2.4.5 and Magento Open Source 2.4.5 release + notes. See [2.4.x Release Information](https://devdocs.magento.com/guides/v2.4/release-notes/bk-release-notes.html). + versions: 2.3.7, 2.4.5 + type: Major Update + date: August 9, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3096 + merge_commit: dc2b49b7d10f878648082f4b145007c7c6c7de7c + contributor: jfrontain + membership: true + labels: + - Major Update + - 2.3.7 + - 2.4.5 +- description: 'Added an architectural overview of the [Catalog Service](https://devdocs.magento.com/catalog-service/index.html) + along with two queries: [`products`](https://devdocs.magento.com/catalog-service/products.html) + and [`refineProduct`](https://devdocs.magento.com/catalog-service/refine-product.html)' + versions: 2.4.5 + type: New Topic + date: August 9, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3097 + merge_commit: e2270b30e60cd11199cfb0773b568aa430a94933 + contributor: keharper + membership: true + labels: + - New Topic + - 2.4.5 +- description: Added an example command to [RabbitMQ](https://devdocs.magento.com/guides/v2.4/install-gde/prereq/install-rabbitmq.html) + that illustrates how to set RabbitMQ configuration values. + versions: 2.4.5 + type: Technical + date: August 9, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3076 + merge_commit: 22eb8a3de79ab8b9764a3f62d56d69af7ad3988d + contributor: adifucan + membership: true + labels: + - Technical + - 2.4.5 +- description: Updated the [availability](https://devdocs.magento.com/release/availability.html) + and compatibility of Adobe-developed extensions for Adobe Commerce and Magento + Open Source 2.4.5. + versions: 2.4.5 + type: Major Update + date: August 9, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3059 + merge_commit: f7910fa04f3f8bd0a46580f314ec7a90be25eddc + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.5 +- description: "[GraphQL Authorization](https://devdocs.magento.com/guides/v2.4/graphql/authorization-tokens.html) + now describes session cookies and includes a command to disable them." + versions: 2.4.5 + type: Major Update + date: August 9, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3014 + merge_commit: 14647c33fa8db79febfe1966f31a43e27210e568 + contributor: keharper + membership: true + labels: + - Major Update + - 2.4.5 +- description: The message broker is now defined dynamically, depending on the deployment + configuration of the `queue` section in the `env.php` file. AMQP connections + are used if they are configured in the file. Otherwise, database connections are + used. See [Manage message queues](https://experienceleague.adobe.com/docs/commerce-operations/configuration-guide/message-queues/manage-message-queues.html) + for more information. + versions: 2.4.5 + type: Major Update + date: August 9, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2764 + merge_commit: bd5166881ed4db31f64ff025c4b1056dab2470ac + contributor: adifucan + membership: true + labels: + - Major Update + - 2.4.5 +- description: "[Cloud Tools release 2002.1.11](https://devdocs.magento.com/cloud/release-notes/ece-release-notes.html#v2002111)." + versions: 2.x + type: Major Update + date: August 4, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3087 + merge_commit: 1115afadb0fca7d88f9e21133eb1dabbdb65e1ab + contributor: BaDos + membership: true + labels: + - 2.x + - Major Update +- description: The [Application Testing Guide](https://devdocs.magento.com/guides/v2.4/test/testing.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/testing/guide/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: August 4, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3094 + merge_commit: a0be01dd327face4c20cf1525b31307133406e6e + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Configuration guide](https://devdocs.magento.com/guides/v2.4/config-guide/bk-config-guide.html) + has moved to [Experience League](https://experienceleague.adobe.com/docs/commerce-operations/configuration-guide/overview.html). + versions: 2.4.x + type: Major Update + date: August 3, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3091 + merge_commit: 4709b9eaeec4f4b3827c6d4c194546730b99edd3 + contributor: hguthrie + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Admin Design Pattern Library](https://devdocs.magento.com/guides/v2.4/pattern-library/bk-pattern.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/admin-developer/pattern-library/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: August 2, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3090 + merge_commit: 574707a94bba39d3f400d3ac113ba98eca63be9f + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Published [release notes](https://devdocs.magento.com/quality-patches/release-notes.html) + for the 1.1.17 Quality Patches Tool (QPT) package release. + versions: 2.3.x, 2.4.x + type: Major Update + date: July 29, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3084 + merge_commit: ad83a6f3421322bf329cc188f87156e3e12cf21c + contributor: agorbivskyi + membership: true + labels: + - Major Update + - 2.3.x + - 2.4.x +- description: The [Admin Style Guide](https://devdocs.magento.com/guides/v2.4/design-styleguide/bk-styleguide.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/admin-developer/style-guide/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: July 27, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3078 + merge_commit: cb086cbb486c54858420e46e751e2106b22a3849 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [UI Components Guide](https://devdocs.magento.com/guides/v2.4/ui_comp_guide/bk-ui_comps.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/frontend-core/javascript/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: July 26, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3067 + merge_commit: 83d9c77729469dfa0ea5eef97e001f93f68ceb32 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Vendor Bundled Extensions (VBEs)](https://devdocs.magento.com/extensions/vendor/) + and [Extensions Introduction](https://devdocs.magento.com/extensions/) topics + moved to [Experience League](https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/modules/upgrade.html) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: July 22, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3048 + merge_commit: c54ae179381e8a0dab609a06280e9f047c309e76 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Updated the [Configure routes topic](https://devdocs.magento.com/cloud/project/routes.html) + in the _Commerce Cloud_ guide to advise about the use of trailing slashes. + versions: 2.x + type: Technical + date: July 21, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3052 + merge_commit: a6dfee382c7e8a63ce537e486295802136f95360 + contributor: hguthrie + membership: true + labels: + - 2.x + - Technical +- description: The [JavaScript Developer Guide](https://devdocs.magento.com/guides/v2.4/javascript-dev-guide/bk-javascript-dev-guide.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/frontend-core/javascript/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: July 19, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3058 + merge_commit: 5c4cb30e36d5d763087fb82d19f802a5db959b4c + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Reservations](https://devdocs.magento.com/guides/v2.4/inventory/reservations.html), + [Source selection algorithms](https://devdocs.magento.com/guides/v2.4/inventory/source-selection-algorithms.html), + and [CLI reference](https://devdocs.magento.com/guides/v2.4/inventory/inventory-cli-reference.html) + Inventory Management topics moved to Experience League and will be redirected + soon. + versions: 2.4.x + type: Major Update + date: July 15, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3050 + merge_commit: 8a4022b1e00f636a69c27a04688e9da4812b8d2f + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Added clarification of the usage of the HTTP `X-Captcha` and `X-ReCaptcha` + headers in conjunction with integration, admin, and customer authentication tokens + for [REST](https://developer.adobe.com/commerce/webapi/rest/use-rest/protected-endpoints/) + and [GraphQL](https://devdocs.magento.com/guides/v2.4/graphql/protected-mutations.html). + versions: '' + type: Technical + date: July 14, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3042 + merge_commit: 985853f7de2777e5ff07357ff328e8fd9a110279 + contributor: vkolesny + membership: true + labels: + - Technical +- description: The [B2B Developer Guide](https://devdocs.magento.com/guides/v2.4/b2b/bk-b2b.html) + has moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/webapi/rest/b2b/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: July 14, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3051 + merge_commit: 0a7d1a19aa8a120aa223fed925843f0dadfd5ab6 + contributor: jhadobe + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Inventory Management overview](https://devdocs.magento.com/guides/v2.4/inventory/index.html) + topic moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/webapi/rest/modules/inventory/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: July 12, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3046 + merge_commit: 4dafc641eaa077d2752e4e2295cb664c81aa7691 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Published [release notes](https://devdocs.magento.com/quality-patches/release-notes.html) + for the 1.1.16 Quality Patches Tool (QPT) package release. + versions: 2.3.x, 2.4.x + type: Major Update + date: July 1, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3041 + merge_commit: 9fdcefcaf5218e84070e90bc1aae5a0fdb13f6ea + contributor: agorbivskyi + membership: true + labels: + - Major Update + - 2.3.x + - 2.4.x +- description: The [REST API Guide](https://devdocs.magento.com/guides/v2.4/rest/bk-rest.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/webapi/rest/) + and will be redirected soon. + versions: '' + type: Major Update + date: June 30, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3030 + merge_commit: 49967163918d0696e5a680e52a2093ef443d4207 + contributor: jhadobe + membership: true + labels: + - Major Update + - migration +- description: Added the `user_outputs` output attribute to the [`addProductsToCart`](https://devdocs.magento.com/guides/v2.4/graphql/mutations/add-products-to-cart.html) + GraphQL mutation. + versions: 2.4.x + type: Major Update + date: June 30, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3038 + merge_commit: 035e85978f73c140f5b119f63cb415547ef5c7d6 + contributor: thiaramus + membership: true + labels: + - Major Update + - 2.4.x +- description: The [Frontend Developer Guide](https://devdocs.magento.com/guides/v2.4/frontend-dev-guide/bk-frontend-dev-guide.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/frontend-core/guide/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: June 23, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3028 + merge_commit: 0ef38846fef7b6081985a05b000eeda384033b4d + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Added descriptions and examples of using [built-in PHP attributes](https://devdocs.magento.com/guides/v2.4/test/integration/attributes.html) + for testing. + versions: 2.4.x + type: New Topic + date: June 21, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3009 + merge_commit: 6876de966855ce4012d5af61975a0d8ce14aa792 + contributor: thiaramus + membership: true + labels: + - New Topic + - 2.4.x +- description: The following PHP tutorials moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/php/best-practices/) + and will be redirected soon:
- [Custom attributes](https://devdocs.magento.com/guides/v2.4/howdoi/custom-attributes/introduction.html)
- + [Customize product creation form](https://devdocs.magento.com/guides/v2.4/howdoi/customize_product.html)
- + [Customize checkout](https://devdocs.magento.com/guides/v2.4/howdoi/checkout/checkout_overview.html)
- + [Customize the Admin Design](https://devdocs.magento.com/guides/v2.4/howdoi/admin/customize_admin.html)
- + [Copy fieldsets](https://devdocs.magento.com/guides/v2.4/ext-best-practices/tutorials/copy-fieldsets.html)
- + [Serialized to JSON data upgrade](https://devdocs.magento.com/guides/v2.4/ext-best-practices/tutorials/serialized-to-json-data-upgrade.html)
- + [Modify image library folder permissions](https://devdocs.magento.com/guides/v2.4/ext-best-practices/tutorials/modify-image-library-permissions/)
- + [Creating an Admin page](https://devdocs.magento.com/guides/v2.4/ext-best-practices/extension-coding/example-module-adminpage.html)
- + [Creating a dynamic row config](https://devdocs.magento.com/guides/v2.4/ext-best-practices/tutorials/dynamic-row-system-config.html)
- + [Creating a custom import entity](https://devdocs.magento.com/guides/v2.4/ext-best-practices/tutorials/custom-import-entity.html)
- + [Creating a custom widget](https://devdocs.magento.com/guides/v2.4/ext-best-practices/tutorials/custom-widget.html)
- + [Creating an access control list (ACL) rule](https://devdocs.magento.com/guides/v2.4/ext-best-practices/tutorials/create-access-control-list-rule.html)
- + [Creating an integration with an external API](https://devdocs.magento.com/guides/v2.4/ext-best-practices/tutorials/create-integration-with-api.html)
- + [Create a custom REST API](https://devdocs.magento.com/guides/v2.4/ext-best-practices/tutorials/create-custom-rest-api.html) + versions: 2.4.x + type: Major Update + date: June 20, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3003 + merge_commit: 6e7f71f325d588e046fc8fe07f96d9bf74391e9b + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Added [config import command point](https://devdocs.magento.com/guides/v2.3/config-guide/cli/logging.html#to-enable-database-logging) + to the [Logging](https://devdocs.magento.com/guides/v2.3/config-guide/cli/logging.html) + topic. + versions: 2.x + type: Technical + date: June 15, 2022 + link: https://github.com/magento/devdocs/pull/9467 + merge_commit: cfdd4ea65539ff27d573663b4be5641dcce2c290 + contributor: guentur + membership: false + labels: + - 2.x + - Technical + - 'Progress: done' +- description: The [Get Started with our Web APIs](https://devdocs.magento.com/guides/v2.4/get-started/bk-get-started-api.html) + guide moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/webapi/get-started/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: June 14, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2988 + merge_commit: b9460c32fa7236dd7cb44c5fc5724126fa5a5bb6 + contributor: jhadobe + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Clarified notes throughout the Cloud guide about updating configurations + in Pro projects. See [Configure environments](https://devdocs.magento.com/cloud/env/environments.html) + as an example. + versions: 2.x + type: Technical + date: June 10, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3007 + merge_commit: 16b2bb8e7c6a152e87b191f6b1388135e47d2e1b + contributor: hguthrie + membership: true + labels: + - 2.x + - Technical +- description: The [Extension Developer Best Practices Guide](https://devdocs.magento.com/guides/v2.4/ext-best-practices/bk-ext-best-practices.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/php/best-practices/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: June 10, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2996 + merge_commit: 2e00f287e51463a4ee32efe66b8943b9f7971928 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: The [Module reference guide](https://devdocs.magento.com/guides/v2.4/mrg/intro.html) + has moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/php/module-reference/) + and will be redirected soon. + versions: 2.4.x + type: Technical + date: June 8, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2999 + merge_commit: d73fc1686f4bcb99d042361e2ed0391554b928b8 + contributor: dshevtsov + membership: true + labels: + - Technical + - 2.4.x +- description: 'Cloud guide: updated the [CRON_CONSUMERS_RUNNER](https://devdocs.magento.com/cloud/env/variables-deploy.html#cron_consumers_runner) + deploy variable to show an example of an empty array that runs all consumers.' + versions: 2.x + type: Technical + date: June 8, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3002 + merge_commit: 8709c3516cbb3c1db60ff04b871ffeeda148d298 + contributor: hguthrie + membership: true + labels: + - 2.x + - Technical +- description: Published [release notes](https://devdocs.magento.com/quality-patches/release-notes.html) + for the 1.1.15 Quality Patches Tool (QPT) package release. + versions: 2.3.x, 2.4.x + type: Major Update + date: June 8, 2022 + link: https://github.com/magento-commerce/devdocs/pull/3000 + merge_commit: 25fb4ad8863972827bbc4d623bfc8d3e980767e4 + contributor: katmoon + membership: true + labels: + - Major Update + - 2.3.x + - 2.4.x +- description: Added missing versions for Amazon Web Services on the [system requirements](https://devdocs.magento.com/guides/v2.4/install-gde/system-requirements.html) + page. + versions: 2.4.x + type: Technical + date: June 3, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2989 + merge_commit: bf13a57daa910a8e3fa6953c4d3f74589726b0d1 + contributor: jeff-matthews + membership: true + labels: + - Technical + - 2.4.x +- description: Added descriptions of B2B [message queue consumers](https://devdocs.magento.com/extensions/b2b/#start-message-consumers). + versions: 2.3.x, 2.4.x + type: Major Update + date: June 3, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2982 + merge_commit: e3b399bd80df81a7e09f73c99427859d2d29ec1f + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.3.x + - 2.4.x +- description: Updated the product [roadmap](https://devdocs.magento.com/release/roadmap.html) + with items for the second half of 2022. + versions: 2.4.x + type: Major Update + date: June 3, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2990 + merge_commit: b7431cbb627bbf652969ee644f44dedbc710e821 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x +- description: The [PHP Developer Guide](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/bk-extension-dev-guide.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/php/development/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: June 1, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2984 + merge_commit: 43e38bd962d38b9a1a82f96aa3679583059b24fb + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Updated the [Xdebug topic](https://devdocs.magento.com/cloud/howtos/debug.html#pro-debug) + to clarify that Xdebug is available and enabled in Pro Staging and Production + environments. + versions: 2.x + type: Technical + date: May 27, 2022 + link: https://github.com/magento/devdocs/pull/9444 + merge_commit: b6db38031215b0b1e3b816008edc47cd008b1327 + contributor: BarnyShergold + membership: true + labels: + - 2.x + - Technical + - 'Progress: done' +- description: Added descriptions of Inventory Management [message queue consumers](https://devdocs.magento.com/guides/v2.4/inventory/index.html). + versions: 2.3.x, 2.4.x + type: Major Update + date: May 25, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2977 + merge_commit: dd5afa9ec491d084c322ba49027dc7cf8f3f1191 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.3.x + - 2.4.x +- description: Updated the [Adobe Commerce 2.4.4](https://devdocs.magento.com/guides/v2.4/release-notes/commerce-2-4-4.html) + and [Magento Open Source 2.4.4](https://devdocs.magento.com/guides/v2.4/release-notes/open-source-2-4-4.html) + release notes with information about changes to Composer allow-listing of plugins + effective July 2022. + versions: 2.4.4 + type: Major Update + date: May 20, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2966 + merge_commit: bdc6b1e9324b58c4927baf9369cd592d71b59100 + contributor: jfrontain + membership: true + labels: + - Major Update + - 2.4.4 +- description: Updated the Magento PHPStorm plugin section with a new [installation](https://devdocs.magento.com/guides/v2.4/ext-best-practices/phpstorm/installation.html) + topic. + versions: 2.4.x + type: New Topic + date: May 19, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2965 + merge_commit: 58b7709cb7ee85f7bafb3f84cbe2c56d2db27297 + contributor: loginesta + membership: true + labels: + - New Topic + - 2.4.x +- description: The [Architecture Guide](https://devdocs.magento.com/guides/v2.4/architecture/bk-architecture.html) + topics moved to the [Adobe Developer documentation](https://developer.adobe.com/commerce/php/architecture/) + and will be redirected soon. + versions: 2.4.x + type: Major Update + date: May 17, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2963 + merge_commit: e648e6a324b70875dbe3c28a2911d88ee924cfd2 + contributor: jeff-matthews + membership: true + labels: + - Major Update + - 2.4.x + - migration +- description: Update the [Released versions](https://devdocs.magento.com/release/released-versions.html) + topic:
- Add 2.4.4, 2.4.3-p2, 2.3.7-p3
- Update the end of support date + for 2.4.0-2.4.3 + versions: 2.3.x, 2.4.x + type: Technical + date: May 12, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2958 + merge_commit: 7231798ae6bd3bfc1ad8b524e97d4b3b318fb1dd + contributor: dshevtsov + membership: true + labels: + - 2.3.x + - Technical + - 2.4.x +- description: Published [release notes](https://devdocs.magento.com/quality-patches/release-notes.html) + for the 1.1.14 Quality Patches Tool (QPT) package release. + versions: 2.3.x, 2.4.x + type: Major Update + date: May 10, 2022 + link: https://github.com/magento-commerce/devdocs/pull/2952 + merge_commit: 9e683d39d04237019f5f0ebb581b83b5c59a416b + contributor: apoltoratskyi + membership: true + labels: + - Major Update + - 2.3.x + - 2.4.x +- description: Added a tutorial on [creating a bundled product](https://devdocs.magento.com/guides/v2.4/rest/tutorials/bundle-product/bundle-product-intro.html) + with the API. + versions: 2.3.x, 2.4.x + type: New Topic + date: May 8, 2022 + link: https://github.com/magento/devdocs/pull/9407 + merge_commit: 3e39778e0e70a4ee907a075bf41d29cdb0db6384 + contributor: goivvy + membership: false + labels: + - 2.3.x + - New Topic + - 2.4.x + - 'Progress: done' - description: Published [release notes](https://devdocs.magento.com/quality-patches/release-notes.html) for the 1.1.13 Quality Patches Tool package release. versions: 2.3.x, 2.4.x @@ -850,7 +2037,7 @@ entries: - 2.3.x - 2.4.x - description: Updated the Cloud guide to [clarify log rotation tip](https://devdocs.magento.com/cloud/project/log-locations.html), - [delete custom VCL snippets](http://devdocs.magento.com/cloud/cdn/fastly-vcl-bypass-to-origin.html#delete-the-custom-vcl-snippet), + [delete custom VCL snippets](https://devdocs.magento.com/cloud/cdn/fastly-vcl-bypass-to-origin.html#delete-the-custom-vcl-snippet), and provide an additional example with multiple themes and locales for the [SCD_MATRIX build variable](https://devdocs.magento.com/cloud/env/variables-build.html#scd_matrix). versions: 2.x @@ -2291,7 +3478,7 @@ entries: - Major Update - description: 'Published 2.3.7 dependencies reference: [OpenSource](https://devdocs.magento.com/guides/v2.3/release-notes/packages-open-source.html), [Commerce](https://devdocs.magento.com/guides/v2.3/release-notes/packages-commerce.html), - [Cloud](http://devdocs.magento.com/guides/v2.3/release-notes/packages-cloud.html).' + [Cloud](https://devdocs.magento.com/guides/v2.3/release-notes/packages-cloud.html).' versions: 2.3.7 type: Major Update date: May 11, 2021 @@ -3381,7 +4568,7 @@ entries: link: https://github.com/magento/devdocs/pull/8375 contributor: Rykh profile: https://github.com/Rykh -- description: Added an [explanation and example](http://devdocs.magento.com/guides/v2.4/javascript-dev-guide/javascript/requirejs.html) +- description: Added an [explanation and example](https://devdocs.magento.com/guides/v2.4/javascript-dev-guide/javascript/requirejs.html) of passing parameters to JavaScript using the `data-mage-init` HTML attribute. versions: 2.3.x, 2.4.x type: Major Update @@ -5605,7 +6792,7 @@ entries: type: Major update date: December 5, 2019 link: https://github.com/magento/devdocs/pull/6086 -- description: Added a new topic for the [DynamicRowsDragAndDrop component](http://devdocs.magento.com/guides/v2.2/ui_comp_guide/components/ui-dynamicrows-dnd.html) +- description: Added a new topic for the [DynamicRowsDragAndDrop component](https://devdocs.magento.com/guides/v2.2/ui_comp_guide/components/ui-dynamicrows-dnd.html) in the _UI Components Guide_. versions: 2.2.x, 2.3.x type: New topic @@ -6120,7 +7307,7 @@ entries: type: Major update date: September 18, 2019 link: https://github.com/magento/devdocs/pull/5357 -- description: Added the [Sticky widget](http://devdocs.magento.com/guides/v2.3/javascript-dev-guide/widgets/widget_sticky.html) +- description: Added the [Sticky widget](https://devdocs.magento.com/guides/v2.3/javascript-dev-guide/widgets/widget_sticky.html) topic to the _Javascript Developer Guide_. versions: 2.2.x, 2.3.x type: New topic @@ -6178,7 +7365,7 @@ entries: type: Major update date: September 3, 2019 link: https://github.com/magento/devdocs/pull/5307 -- description: Added information about how to use the REST API to [issue refunds](http://devdocs.magento.com/guides/v2.2/rest/modules/sales/refunds.html). +- description: Added information about how to use the REST API to [issue refunds](https://devdocs.magento.com/guides/v2.2/rest/modules/sales/refunds.html). versions: 2.2.x, 2.3.x type: New topic date: August 30, 2019 diff --git a/src/_includes/backward-incompatible-changes/b2b/2.4.4-2.4.5.md b/src/_includes/backward-incompatible-changes/b2b/2.4.4-2.4.5.md new file mode 100644 index 00000000000..575e679de03 --- /dev/null +++ b/src/_includes/backward-incompatible-changes/b2b/2.4.4-2.4.5.md @@ -0,0 +1,904 @@ +#### Class changes {#b2b-244-245-class} + +| What changed | How it changed | +| -------------------------------------------------------------------------------- | ------------------------------------ | +| Magento\CatalogInventory\Model\Source\Stock::\_\_construct | [public] Method has been added. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions::formatPrice | [protected] Method has been removed. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Eav::formatPrice | [protected] Method has been removed. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\General::formatPrice | [protected] Method has been removed. | +| Magento\GoogleGtag\Block\Ga | Class was added. | +| Magento\GoogleTagManager\Block\Adminhtml\Creditmemo\GtagGa | Class was added. | +| Magento\GoogleTagManager\Block\Adminhtml\GtagGa | Class was added. | +| Magento\GoogleTagManager\Block\GtagGa | Class was added. | +| Magento\GoogleTagManager\Model\Config\Source\GtagAccountType | Class was added. | + +#### Database changes {#b2b-244-245-database} + +| What changed | How it changed | +| ------------------------------------------------------------------------- | ----------------------- | +| catalog_product_index_price_tmp/PRIMARY | Primary key was changed | +| catalog_product_index_price_tmp/id | Column was added | +| customer_eav_attribute/grid_filter_condition_type | Column was added | +| magento_catalogpermissions_index_product/PRIMARY | Primary key was added | +| magento_catalogpermissions_index_product/index_id | Column was added | +| magento_catalogpermissions_index_product_replica/PRIMARY | Primary key was added | +| magento_catalogpermissions_index_product_replica/index_id | Column was added | +| salesrule_label/SALESRULE_LABEL_ROW_ID_SALESRULE_ROW_ID | Foreign key was added | +| salesrule_label/SALESRULE_LABEL_ROW_ID_STORE_ID | Unique key was added | +| salesrule_label/SALESRULE_LABEL_RULE_ID_SEQUENCE_SALESRULE_SEQUENCE_VALUE | Foreign key was removed | +| salesrule_label/SALESRULE_LABEL_RULE_ID_STORE_ID | Unique key was added | +| salesrule_label/row_id | Column was added | +| salesrule_label/rule_id | Column was added | + +#### System changes {#b2b-244-245-system} + +| What changed | How it changed | +| ---------------------------------------------------------------- | ------------------------ | +| btob/website_configuration/direct_products_price_assigning | A field-node was added | +| google/gtag | A group-node was added | +| google/gtag/adwords | A group-node was added | +| google/gtag/adwords/active | A field-node was added | +| google/gtag/adwords/conversion_id | A field-node was added | +| google/gtag/adwords/conversion_label | A field-node was added | +| google/gtag/analytics4 | A group-node was added | +| google/gtag/analytics4/active | A field-node was added | +| google/gtag/analytics4/catalog_page_list_value | A field-node was added | +| google/gtag/analytics4/container_id | A field-node was added | +| google/gtag/analytics4/crosssell_block_list_value | A field-node was added | +| google/gtag/analytics4/experiments | A field-node was added | +| google/gtag/analytics4/measurement_id | A field-node was added | +| google/gtag/analytics4/promotions_list_value | A field-node was added | +| google/gtag/analytics4/related_block_list_value | A field-node was added | +| google/gtag/analytics4/search_page_list_value | A field-node was added | +| google/gtag/analytics4/type | A field-node was added | +| google/gtag/analytics4/upsell_block_list_value | A field-node was added | +| recaptcha_frontend | A section-node was added | +| recaptcha_frontend/type_for | A group-node was added | +| recaptcha_frontend/type_for/customer_invite_create | A field-node was added | +| recaptcha_frontend/type_for/giftcard | A field-node was added | +| recaptcha_frontend/type_for/wishlist | A field-node was added | +| web_api | A section-node was added | +| web_api/graphql | A group-node was added | +| web_api/graphql/include_dynamic_attributes_as_entity_type_fields | A field-node was added | +| webapi/graphql_session | A group-node was added | +| webapi/graphql_session/disabled | A field-node was added | + +#### Class API membership changes {#b2b-244-245-class-api-membership} + +| What changed | How it changed | +| ----------------------------------------------------------------------------- | ---------------- | +| Magento\Analytics\ReportXml\DB\SelectBuilder | Class was added. | +| Magento\CatalogGraphQl\Model\Resolver\Products\SearchResult | Class was added. | +| Magento\Catalog\Block\Adminhtml\Product\Edit\Button\Generic | Class was added. | +| Magento\Catalog\Block\Product\ImageFactory | Class was added. | +| Magento\Catalog\Controller\Adminhtml\Product | Class was added. | +| Magento\Catalog\Model\Config | Class was added. | +| Magento\Catalog\Model\Layer\Filter\Item | Class was added. | +| Magento\Catalog\Model\Layer\Resolver | Class was added. | +| Magento\Catalog\Model\Product\Type\Price\Factory | Class was added. | +| Magento\Catalog\Model\ResourceModel\Product\Indexer\Price\IndexTableStructure | Class was added. | +| Magento\Catalog\Pricing\Price\FinalPrice | Class was added. | +| Magento\Checkout\Api\Exception\PaymentProcessingRateLimitExceededException | Class was added. | +| Magento\Checkout\Controller\Cart | Class was added. | +| Magento\Checkout\Model\Type\Onepage | Class was added. | +| Magento\Cms\Model\Template\FilterProvider | Class was added. | +| Magento\Config\Block\System\Config\Form\Field\Factory | Class was added. | +| Magento\Config\Block\System\Config\Form\Fieldset\Factory | Class was added. | +| Magento\Customer\Block\Adminhtml\Edit\GenericButton | Class was added. | +| Magento\Customer\Controller\Adminhtml\Index | Class was added. | +| Magento\Customer\Controller\RegistryConstants | Class was added. | +| Magento\Customer\Model\Context | Class was added. | +| Magento\Customer\Model\CustomerRegistry | Class was added. | +| Magento\Customer\Model\Metadata\FormFactory | Class was added. | +| Magento\Customer\Model\Url | Class was added. | +| Magento\Customer\Setup\CustomerSetup | Class was added. | +| Magento\Deploy\Package\Package | Class was added. | +| Magento\Deploy\Package\PackageFile | Class was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\AttributeAdapter | Class was added. | +| Magento\Framework\AclFactory | Class was added. | +| Magento\Framework\Acl\AclResourceFactory | Class was added. | +| Magento\Framework\Amqp\ConfigFactory | Class was added. | +| Magento\Framework\Api\AbstractSimpleObject | Class was added. | +| Magento\Framework\Api\ExtensionAttribute\JoinData | Class was added. | +| Magento\Framework\Api\ExtensionAttribute\JoinDataInterfaceFactory | Class was added. | +| Magento\Framework\Api\SearchCriteriaBuilder | Class was added. | +| Magento\Framework\Api\Search\DocumentFactory | Class was added. | +| Magento\Framework\Api\Search\SearchCriteriaFactory | Class was added. | +| Magento\Framework\App\Area | Class was added. | +| Magento\Framework\App\Cache\Type\Config | Class was added. | +| Magento\Framework\App\Config\ValueFactory | Class was added. | +| Magento\Framework\App\Filesystem\DirectoryList | Class was added. | +| Magento\Framework\App\Http\Context | Class was added. | +| Magento\Framework\App\Request\Http | Class was added. | +| Magento\Framework\App\Request\InvalidRequestException | Class was added. | +| Magento\Framework\App\Response\Http | Class was added. | +| Magento\Framework\App\Response\Http\FileFactory | Class was added. | +| Magento\Framework\Config\Data\ConfigDataFactory | Class was added. | +| Magento\Framework\Config\ViewFactory | Class was added. | +| Magento\Framework\Console\Cli | Class was added. | +| Magento\Framework\Controller\Result\Forward | Class was added. | +| Magento\Framework\Controller\Result\JsonFactory | Class was added. | +| Magento\Framework\Controller\Result\Raw | Class was added. | +| Magento\Framework\Convert\DataObject | Class was added. | +| Magento\Framework\DB\Adapter\Pdo\MysqlFactory | Class was added. | +| Magento\Framework\DB\Ddl\TriggerFactory | Class was added. | +| Magento\Framework\DB\Helper | Class was added. | +| Magento\Framework\DB\Helper\AbstractHelper | Class was added. | +| Magento\Framework\DB\Transaction | Class was added. | +| Magento\Framework\DataObject\Factory | Class was added. | +| Magento\Framework\Data\FormFactory | Class was added. | +| Magento\Framework\Data\Form\Element\Factory | Class was added. | +| Magento\Framework\Data\Form\Element\Image | Class was added. | +| Magento\Framework\Data\TreeFactory | Class was added. | +| Magento\Framework\Data\Tree\Dbp | Class was added. | +| Magento\Framework\Data\Tree\NodeFactory | Class was added. | +| Magento\Framework\EventFactory | Class was added. | +| Magento\Framework\Event\ObserverFactory | Class was added. | +| Magento\Framework\File\Csv | Class was added. | +| Magento\Framework\File\UploaderFactory | Class was added. | +| Magento\Framework\Filesystem\DirectoryList | Class was added. | +| Magento\Framework\Filesystem\Directory\ReadFactory | Class was added. | +| Magento\Framework\Filesystem\Io\File | Class was added. | +| Magento\Framework\GraphQl\Config\Element\Field | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlAuthenticationException | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlAuthorizationException | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlInputException | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException | Class was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchResponse | Class was added. | +| Magento\Framework\GraphQl\Query\Resolver\Value | Class was added. | +| Magento\Framework\GraphQl\Schema | Class was added. | +| Magento\Framework\GraphQl\Schema\Type\ResolveInfo | Class was added. | +| Magento\Framework\HTTP\Adapter\Curl | Class was added. | +| Magento\Framework\HTTP\AsyncClient\Request | Class was added. | +| Magento\Framework\HTTP\AsyncClient\Response | Class was added. | +| Magento\Framework\HTTP\Client\Curl | Class was added. | +| Magento\Framework\HTTP\PhpEnvironment\RemoteAddress | Class was added. | +| Magento\Framework\HTTP\PhpEnvironment\Request | Class was added. | +| Magento\Framework\Image\AdapterFactory | Class was added. | +| Magento\Framework\Image\Adapter\AbstractAdapter | Class was added. | +| Magento\Framework\Logger\Handler\Base | Class was added. | +| Magento\Framework\Mail\Address | Class was added. | +| Magento\Framework\Mail\TransportInterfaceFactory | Class was added. | +| Magento\Framework\Message\CollectionFactory | Class was added. | +| Magento\Framework\Module\Dir | Class was added. | +| Magento\Framework\Module\Manager | Class was added. | +| Magento\Framework\Module\Setup\MigrationFactory | Class was added. | +| Magento\Framework\Profiler\Driver\Standard\Stat | Class was added. | +| Magento\Framework\Session\Config | Class was added. | +| Magento\Framework\Session\SessionManager | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\StatementAggregator | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Diff\DiffFactory | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Schema | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Table | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\ElementHistory | Class was added. | +| Magento\Framework\Url | Class was added. | +| Magento\Framework\UrlFactory | Class was added. | +| Magento\Framework\Url\Helper\Data | Class was added. | +| Magento\Framework\ValidatorFactory | Class was added. | +| Magento\Framework\View\Asset | Class was added. | +| Magento\Framework\View\Asset\FileFactory | Class was added. | +| Magento\Framework\View\Asset\File\FallbackContextFactory | Class was added. | +| Magento\Framework\View\Element\Html\Select | Class was added. | +| Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider | Class was added. | +| Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult | Class was added. | +| Magento\Framework\View\Helper\SecureHtmlRender\EventHandlerData | Class was added. | +| Magento\Framework\View\Helper\SecureHtmlRender\TagData | Class was added. | +| Magento\Framework\View\LayoutFactory | Class was added. | +| Magento\Framework\View\Layout\Generator\ContextFactory | Class was added. | +| Magento\Framework\View\Layout\Reader\ContextFactory | Class was added. | +| Magento\Framework\View\PageLayout\Config | Class was added. | +| Magento\Framework\View\Page\ConfigFactory | Class was added. | +| Magento\Framework\Webapi\Exception | Class was added. | +| Magento\Framework\Webapi\Rest\Request | Class was added. | +| Magento\GiftCardAccount\Api\Exception\TooManyAttemptsException | Class was added. | +| Magento\ImportExport\Model\Export\Factory | Class was added. | +| Magento\Indexer\Model\DimensionModes | Class was added. | +| Magento\NegotiableQuote\Model\Validator\ValidatorResult | Class was added. | +| Magento\Payment\Gateway\Config\Config | Class was added. | +| Magento\Paypal\Model\Billing\AbstractAgreement | Class was added. | +| Magento\Quote\Model\Cart\Data\CartItem | Class was added. | +| Magento\Quote\Model\Quote\Address\RateCollectorInterfaceFactory | Class was added. | +| Magento\Quote\Model\Quote\Item\CartItemOptionsProcessor | Class was added. | +| Magento\Quote\Model\Quote\Item\Option | Class was added. | +| Magento\Quote\Setup\QuoteSetup | Class was added. | +| Magento\SalesRule\Api\Exception\CodeRequestLimitException | Class was added. | +| Magento\SalesRule\Model\Validator | Class was added. | +| Magento\Sales\Controller\Adminhtml\Order | Class was added. | +| Magento\Sales\Model\Order\CreditmemoFactory | Class was added. | +| Magento\Sales\Model\Order\Email\Sender\InvoiceSender | Class was added. | +| Magento\Sales\Model\Order\Email\Sender\OrderSender | Class was added. | +| Magento\Sales\Model\Order\Pdf\Total\DefaultTotal | Class was added. | +| Magento\Sales\Model\ResourceModel\Order\CollectionFactory | Class was added. | +| Magento\Sales\Model\ResourceModel\Order\Collection\Factory | Class was added. | +| Magento\Sales\Model\Service\InvoiceService | Class was added. | +| Magento\Sales\Setup\SalesSetup | Class was added. | +| Magento\ScheduledImportExport\Model\Scheduled\Operation | Class was added. | +| Magento\Store\Ui\Component\Listing\Column\Store\Options | Class was added. | +| Magento\TargetRule\Block\Product\AbstractProduct | Class was added. | +| Magento\Ui\Component\Control\Container | Class was added. | +| Magento\Ui\Component\Form\Fieldset\Factory | Class was added. | +| Magento\VisualMerchandiser\Model\Rules\Factory | Class was added. | +| Magento\VisualMerchandiser\Model\Sorting\Factory | Class was added. | +| Magento\Wishlist\Model\Wishlist\Data\WishlistItem | Class was added. | + +#### Interface API membership changes {#b2b-244-245-interface-api-membership} + +| What changed | How it changed | +| ------------------------------------------------------------------------------------------------------------ | -------------------- | +| Magento\AdvancedCheckout\Model\AreProductsSalableForRequestedQtyInterface | Interface was added. | +| Magento\AdvancedRule\Model\Condition\FilterGroupInterface | Interface was added. | +| Magento\AdvancedRule\Model\Condition\FilterInterface | Interface was added. | +| Magento\AdvancedRule\Model\Condition\FilterTextGeneratorInterface | Interface was added. | +| Magento\AdvancedRule\Model\Condition\FilterableConditionInterface | Interface was added. | +| Magento\AdvancedSearch\Block\SearchDataInterface | Interface was added. | +| Magento\Analytics\Api\Data\LinkInterface | Interface was added. | +| Magento\Analytics\Api\LinkProviderInterface | Interface was added. | +| Magento\Analytics\Model\Connector\CommandInterface | Interface was added. | +| Magento\Analytics\Model\ExportDataHandlerInterface | Interface was added. | +| Magento\Analytics\Model\ReportWriterInterface | Interface was added. | +| Magento\Analytics\ReportXml\DB\Assembler\AssemblerInterface | Interface was added. | +| Magento\Backend\Model\Image\UploadResizeConfigInterface | Interface was added. | +| Magento\Backend\Model\Search\Config\Structure\ElementBuilderInterface | Interface was added. | +| Magento\Bundle\Pricing\Adjustment\BundleCalculatorInterface | Interface was added. | +| Magento\CardinalCommerce\Model\Response\JwtParserInterface | Interface was added. | +| Magento\CardinalCommerce\Model\Response\JwtPayloadValidatorInterface | Interface was added. | +| Magento\CatalogGraphQl\DataProvider\Product\LayeredNavigation\LayerBuilderInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Categories\DataProvider\Category\CollectionProcessorInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Product\Price\ProviderInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Products\Query\ProductQueryInterface | Interface was added. | +| Magento\CatalogImportExport\Model\Export\ProductFilterInterface | Interface was added. | +| Magento\CatalogRule\Model\Indexer\IndexerTableSwapperInterface | Interface was added. | +| Magento\CatalogSearch\Model\Adapter\Aggregation\RequestCheckerInterface | Interface was added. | +| Magento\CatalogSearch\Model\Advanced\ProductCollectionPrepareStrategyInterface | Interface was added. | +| Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchCriteriaResolverInterface | Interface was added. | +| Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierInterface | Interface was added. | +| Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\TotalRecordsResolverInterface | Interface was added. | +| Magento\CatalogSearch\Model\Search\ItemCollectionProviderInterface | Interface was added. | +| Magento\CatalogUrlRewrite\Model\Map\DatabaseMapInterface | Interface was added. | +| Magento\CatalogUrlRewrite\Model\Map\HashMapInterface | Interface was added. | +| Magento\Catalog\Block\Product\AwareInterface | Interface was added. | +| Magento\Catalog\Block\Product\ReviewRendererInterface | Interface was added. | +| Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper\HandlerInterface | Interface was added. | +| Magento\Catalog\Controller\Product\View\ViewInterface | Interface was added. | +| Magento\Catalog\Model\Attribute\LockValidatorInterface | Interface was added. | +| Magento\Catalog\Model\Config\Source\ProductPriceOptionsInterface | Interface was added. | +| Magento\Catalog\Model\Entity\Product\Attribute\Group\AttributeMapperInterface | Interface was added. | +| Magento\Catalog\Model\Indexer\Product\Flat\TableDataInterface | Interface was added. | +| Magento\Catalog\Model\Layer\CollectionFilterInterface | Interface was added. | +| Magento\Catalog\Model\Layer\FilterableAttributeListInterface | Interface was added. | +| Magento\Catalog\Model\Layer\ItemCollectionProviderInterface | Interface was added. | +| Magento\Catalog\Model\Layer\StateKeyInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\CollectionProviderInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\Converter\ConverterInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\Data\ListCriteriaInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\Data\ListResultInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\MapProviderInterface | Interface was added. | +| Magento\Catalog\Model\ProductOptions\ConfigInterface | Interface was added. | +| Magento\Catalog\Model\Product\Condition\ConditionInterface | Interface was added. | +| Magento\Catalog\Model\Product\Configuration\Item\Option\OptionInterface | Interface was added. | +| Magento\Catalog\Model\Product\Media\ConfigInterface | Interface was added. | +| Magento\Catalog\Model\Product\Pricing\Renderer\SalableResolverInterface | Interface was added. | +| Magento\Catalog\Model\ResourceModel\Product\Indexer\Price\PriceModifierInterface | Interface was added. | +| Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderInterface | Interface was added. | +| Magento\Catalog\Pricing\Price\ConfiguredPriceInterface | Interface was added. | +| Magento\Catalog\Pricing\Price\MinimalPriceCalculatorInterface | Interface was added. | +| Magento\Catalog\Pricing\Price\SpecialPriceInterface | Interface was added. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Eav\WysiwygConfigDataProcessorInterface | Interface was added. | +| Magento\CheckoutAgreements\Model\AgreementsProviderInterface | Interface was added. | +| Magento\Checkout\Api\PaymentProcessingRateLimiterInterface | Interface was added. | +| Magento\Checkout\Controller\Express\RedirectLoginInterface | Interface was added. | +| Magento\Checkout\CustomerData\ItemPoolInterface | Interface was added. | +| Magento\Cms\Model\PageRepository\ValidatorInterface | Interface was added. | +| Magento\Cms\Model\Page\CustomLayoutManagerInterface | Interface was added. | +| Magento\Cms\Model\Page\CustomLayoutRepositoryInterface | Interface was added. | +| Magento\Cms\Model\Page\CustomLayout\Data\CustomLayoutSelectedInterface | Interface was added. | +| Magento\Cms\Ui\Component\AddFilterInterface | Interface was added. | +| Magento\CompanyCredit\Model\HistoryInterface | Interface was added. | +| Magento\CompanyCredit\Model\HistoryRepositoryInterface | Interface was added. | +| Magento\Company\Api\CompanyUserManagerInterface | Interface was added. | +| Magento\Company\Model\Customer\PermissionInterface | Interface was added. | +| Magento\Company\Model\SaveValidatorInterface | Interface was added. | +| Magento\ConfigurableProduct\Model\ResourceModel\Attribute\OptionSelectBuilderInterface | Interface was added. | +| Magento\Cron\Model\DeadlockRetrierInterface | Interface was added. | +| Magento\Csp\Api\CspAwareActionInterface | Interface was added. | +| Magento\Csp\Api\CspRendererInterface | Interface was added. | +| Magento\Csp\Api\Data\ModeConfiguredInterface | Interface was added. | +| Magento\Csp\Api\Data\PolicyInterface | Interface was added. | +| Magento\Csp\Api\InlineUtilInterface | Interface was added. | +| Magento\Csp\Api\ModeConfigManagerInterface | Interface was added. | +| Magento\Csp\Api\PolicyCollectorInterface | Interface was added. | +| Magento\Csp\Api\PolicyRendererInterface | Interface was added. | +| Magento\Csp\Model\Collector\Config\PolicyReaderInterface | Interface was added. | +| Magento\Csp\Model\Collector\MergerInterface | Interface was added. | +| Magento\Csp\Model\Policy\SimplePolicyInterface | Interface was added. | +| Magento\CustomerCustomAttributes\Model\Customer\Attribute\ValidatorInterface | Interface was added. | +| Magento\Customer\Api\AccountDelegationInterface | Interface was added. | +| Magento\Customer\Api\SessionCleanerInterface | Interface was added. | +| Magento\Customer\Block\Address\Renderer\RendererInterface | Interface was added. | +| Magento\Customer\Controller\AccountInterface | Interface was added. | +| Magento\Customer\CustomerData\JsLayoutDataProviderPoolInterface | Interface was added. | +| Magento\Customer\CustomerData\SectionPoolInterface | Interface was added. | +| Magento\Customer\Model\Customer\Attribute\Source\GroupSourceLoggedInOnlyInterface | Interface was added. | +| Magento\Deploy\Collector\CollectorInterface | Interface was added. | +| Magento\Deploy\Console\Command\App\SensitiveConfigSet\CollectorInterface | Interface was added. | +| Magento\Deploy\Package\BundleInterface | Interface was added. | +| Magento\Deploy\Package\Processor\ProcessorInterface | Interface was added. | +| Magento\Deploy\Source\SourceInterface | Interface was added. | +| Magento\Deploy\Strategy\StrategyInterface | Interface was added. | +| Magento\Directory\Model\Country\Postcode\ConfigInterface | Interface was added. | +| Magento\Directory\Model\Country\Postcode\ValidatorInterface | Interface was added. | +| Magento\Downloadable\Api\DomainManagerInterface | Interface was added. | +| Magento\Downloadable\Pricing\Price\LinkPriceInterface | Interface was added. | +| Magento\Eav\Model\Entity\AttributeLoaderInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\AttributeInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\Backend\BackendInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\Source\SpecificSourceInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\UniqueValidationInterface | Interface was added. | +| Magento\Eav\Model\Entity\Setup\PropertyMapperInterface | Interface was added. | +| Magento\Eav\Model\ResourceModel\Attribute\DefaultEntityAttributes\ProviderInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProviderInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\ConverterInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\ResolverInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\ResolverInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\ResolverInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldsMappingPreprocessorInterface | Interface was added. | +| Magento\Elasticsearch\SearchAdapter\QueryAwareInterface | Interface was added. | +| Magento\Elasticsearch\SearchAdapter\Query\ValueTransformerInterface | Interface was added. | +| Magento\Framework\Amqp\Topology\BindingInstallerInterface | Interface was added. | +| Magento\Framework\Api\AttributeTypeResolverInterface | Interface was added. | +| Magento\Framework\Api\CriteriaInterface | Interface was added. | +| Magento\Framework\Api\SearchCriteria\CollectionProcessor\ConditionProcessor\CustomConditionInterface | Interface was added. | +| Magento\Framework\Api\SearchCriteria\CollectionProcessor\ConditionProcessor\CustomConditionProviderInterface | Interface was added. | +| Magento\Framework\Api\Search\AggregationInterface | Interface was added. | +| Magento\Framework\Api\Search\AggregationValueInterface | Interface was added. | +| Magento\Framework\Api\Search\BucketInterface | Interface was added. | +| Magento\Framework\Api\Search\DocumentInterface | Interface was added. | +| Magento\Framework\Api\Search\ReportingInterface | Interface was added. | +| Magento\Framework\Api\SimpleBuilderInterface | Interface was added. | +| Magento\Framework\App\Action\HttpConnectActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpDeleteActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpGetActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpOptionsActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPatchActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPostActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPropfindActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPutActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpTraceActionInterface | Interface was added. | +| Magento\Framework\App\AreaInterface | Interface was added. | +| Magento\Framework\App\Config\CommentInterface | Interface was added. | +| Magento\Framework\App\Config\CommentParserInterface | Interface was added. | +| Magento\Framework\App\Config\ConfigResource\ConfigInterface | Interface was added. | +| Magento\Framework\App\Config\ConfigSourceInterface | Interface was added. | +| Magento\Framework\App\Config\ConfigTypeInterface | Interface was added. | +| Magento\Framework\App\Config\Reader\Source\SourceInterface | Interface was added. | +| Magento\Framework\App\Config\Scope\ReaderInterface | Interface was added. | +| Magento\Framework\App\Config\Spi\PostProcessorInterface | Interface was added. | +| Magento\Framework\App\Config\Spi\PreProcessorInterface | Interface was added. | +| Magento\Framework\App\Config\ValueInterface | Interface was added. | +| Magento\Framework\App\CsrfAwareActionInterface | Interface was added. | +| Magento\Framework\App\DefaultPathInterface | Interface was added. | +| Magento\Framework\App\DeploymentConfig\ImporterInterface | Interface was added. | +| Magento\Framework\App\DeploymentConfig\ValidatorInterface | Interface was added. | +| Magento\Framework\App\DeploymentConfig\Writer\FormatterInterface | Interface was added. | +| Magento\Framework\App\DesignInterface | Interface was added. | +| Magento\Framework\App\EnvironmentInterface | Interface was added. | +| Magento\Framework\App\ExceptionHandlerInterface | Interface was added. | +| Magento\Framework\App\FeedFactoryInterface | Interface was added. | +| Magento\Framework\App\FeedInterface | Interface was added. | +| Magento\Framework\App\HttpRequestInterface | Interface was added. | +| Magento\Framework\App\ObjectManager\ConfigWriterInterface | Interface was added. | +| Magento\Framework\App\PageCache\NotCacheableInterface | Interface was added. | +| Magento\Framework\App\Request\ValidatorInterface | Interface was added. | +| Magento\Framework\App\ResourceConnection\ConfigInterface | Interface was added. | +| Magento\Framework\App\ResourceConnection\ConnectionAdapterInterface | Interface was added. | +| Magento\Framework\App\Response\FileInterface | Interface was added. | +| Magento\Framework\App\Response\HeaderProvider\HeaderProviderInterface | Interface was added. | +| Magento\Framework\App\Response\RedirectInterface | Interface was added. | +| Magento\Framework\App\RouterInterface | Interface was added. | +| Magento\Framework\App\RouterListInterface | Interface was added. | +| Magento\Framework\App\Router\NoRouteHandlerInterface | Interface was added. | +| Magento\Framework\App\Router\PathConfigInterface | Interface was added. | +| Magento\Framework\App\Rss\RssManagerInterface | Interface was added. | +| Magento\Framework\App\Rss\UrlBuilderInterface | Interface was added. | +| Magento\Framework\App\ScopeFallbackResolverInterface | Interface was added. | +| Magento\Framework\App\ScopeResolverInterface | Interface was added. | +| Magento\Framework\App\ScopeTreeProviderInterface | Interface was added. | +| Magento\Framework\App\ScopeValidatorInterface | Interface was added. | +| Magento\Framework\App\Scope\ValidatorInterface | Interface was added. | +| Magento\Framework\App\View\Asset\MaterializationStrategy\StrategyInterface | Interface was added. | +| Magento\Framework\App\View\Deployment\Version\StorageInterface | Interface was added. | +| Magento\Framework\Async\CancelableDeferredInterface | Interface was added. | +| Magento\Framework\Async\DeferredInterface | Interface was added. | +| Magento\Framework\Autoload\AutoloaderInterface | Interface was added. | +| Magento\Framework\Backup\SourceFileInterface | Interface was added. | +| Magento\Framework\Cache\ConfigInterface | Interface was added. | +| Magento\Framework\Cache\StaleCacheNotifierInterface | Interface was added. | +| Magento\Framework\Code\Generator\CodeGeneratorInterface | Interface was added. | +| Magento\Framework\Code\Minifier\AdapterInterface | Interface was added. | +| Magento\Framework\Code\Reader\ClassReaderInterface | Interface was added. | +| Magento\Framework\Code\ValidatorInterface | Interface was added. | +| Magento\Framework\Component\ComponentRegistrarInterface | Interface was added. | +| Magento\Framework\Crontab\CrontabManagerInterface | Interface was added. | +| Magento\Framework\Crontab\TasksProviderInterface | Interface was added. | +| Magento\Framework\Css\PreProcessor\ErrorHandlerInterface | Interface was added. | +| Magento\Framework\DB\DataConverter\DataConverterInterface | Interface was added. | +| Magento\Framework\DB\LoggerInterface | Interface was added. | +| Magento\Framework\DB\MapperInterface | Interface was added. | +| Magento\Framework\DB\QueryInterface | Interface was added. | +| Magento\Framework\DB\Query\BatchIteratorInterface | Interface was added. | +| Magento\Framework\DB\Select\QueryModifierInterface | Interface was added. | +| Magento\Framework\DB\Select\RendererInterface | Interface was added. | +| Magento\Framework\DB\Sequence\SequenceInterface | Interface was added. | +| Magento\Framework\DB\Sql\ExpressionInterface | Interface was added. | +| Magento\Framework\DataObject\IdentityGeneratorInterface | Interface was added. | +| Magento\Framework\DataObject\IdentityInterface | Interface was added. | +| Magento\Framework\DataObject\IdentityValidatorInterface | Interface was added. | +| Magento\Framework\DataObject\KeyValueObjectInterface | Interface was added. | +| Magento\Framework\Data\CollectionDataSourceInterface | Interface was added. | +| Magento\Framework\Data\CollectionModifierInterface | Interface was added. | +| Magento\Framework\Data\Collection\Db\FetchStrategyInterface | Interface was added. | +| Magento\Framework\Data\Collection\EntityFactoryInterface | Interface was added. | +| Magento\Framework\Data\SearchResultInterface | Interface was added. | +| Magento\Framework\Data\SearchResultProcessorInterface | Interface was added. | +| Magento\Framework\Data\ValueSourceInterface | Interface was added. | +| Magento\Framework\Encryption\Adapter\EncryptionAdapterInterface | Interface was added. | +| Magento\Framework\Event\ConfigInterface | Interface was added. | +| Magento\Framework\Event\InvokerInterface | Interface was added. | +| Magento\Framework\Event\ManagerInterface | Interface was added. | +| Magento\Framework\Exception\TemporaryStateExceptionInterface | Interface was added. | +| Magento\Framework\Filesystem\Directory\PathValidatorInterface | Interface was added. | +| Magento\Framework\Filesystem\DriverPoolInterface | Interface was added. | +| Magento\Framework\Filesystem\File\ReadInterface | Interface was added. | +| Magento\Framework\Filter\DirectiveProcessorInterface | Interface was added. | +| Magento\Framework\Filter\DirectiveProcessor\FilterInterface | Interface was added. | +| Magento\Framework\Filter\FactoryInterface | Interface was added. | +| Magento\Framework\Filter\FilterManager\ConfigInterface | Interface was added. | +| Magento\Framework\Filter\SimpleDirective\ProcessorInterface | Interface was added. | +| Magento\Framework\Filter\VariableResolverInterface | Interface was added. | +| Magento\Framework\ForeignKey\ConfigInterface | Interface was added. | +| Magento\Framework\ForeignKey\ConstraintInterface | Interface was added. | +| Magento\Framework\ForeignKey\StrategyInterface | Interface was added. | +| Magento\Framework\GraphQlSchemaStitching\GraphQlReader\TypeMetaReaderInterface | Interface was added. | +| Magento\Framework\GraphQl\ConfigInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\ConfigElementFactoryInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\ConfigElementInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\FieldInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\OutputFieldInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\TypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\UnionInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\ErrorHandlerInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\ResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\Argument\FieldEntityAttributesInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\ArgumentApplierInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchRequestItemInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchServiceContractResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\ContextInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\IdentityInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\ResolveRequestInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\TypeResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\SchemaGeneratorInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\TypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\Entity\MapperInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\Enum\DataMapperInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\InputTypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\OutputTypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\Output\ElementMapper\FormatterInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\WrappedTypeInterface | Interface was added. | +| Magento\Framework\HTTP\AsyncClientInterface | Interface was added. | +| Magento\Framework\HTTP\AsyncClient\HttpResponseDeferredInterface | Interface was added. | +| Magento\Framework\Image\Adapter\AdapterInterface | Interface was added. | +| Magento\Framework\Image\Adapter\ConfigInterface | Interface was added. | +| Magento\Framework\Indexer\Config\DependencyInfoProviderInterface | Interface was added. | +| Magento\Framework\Indexer\Table\StrategyInterface | Interface was added. | +| Magento\Framework\Interception\ConfigInterface | Interface was added. | +| Magento\Framework\Interception\ConfigLoaderInterface | Interface was added. | +| Magento\Framework\Interception\ConfigWriterInterface | Interface was added. | +| Magento\Framework\Interception\DefinitionInterface | Interface was added. | +| Magento\Framework\Interception\InterceptorInterface | Interface was added. | +| Magento\Framework\Interception\ObjectManager\ConfigInterface | Interface was added. | +| Magento\Framework\Interception\PluginListInterface | Interface was added. | +| Magento\Framework\Locale\AvailableLocalesInterface | Interface was added. | +| Magento\Framework\Locale\OptionInterface | Interface was added. | +| Magento\Framework\Mail\EmailMessageInterface | Interface was added. | +| Magento\Framework\Mail\MimeInterface | Interface was added. | +| Magento\Framework\Mail\MimeMessageInterface | Interface was added. | +| Magento\Framework\Mail\MimePartInterface | Interface was added. | +| Magento\Framework\MessageQueue\BulkPublisherInterface | Interface was added. | +| Magento\Framework\MessageQueue\CallbackInvokerInterface | Interface was added. | +| Magento\Framework\MessageQueue\ConnectionTypeResolverInterface | Interface was added. | +| Magento\Framework\MessageQueue\ConsumerConfigurationInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ConsumerConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ConsumerConfigItem\HandlerInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ValidatorInterface | Interface was added. | +| Magento\Framework\MessageQueue\LockInterface | Interface was added. | +| Magento\Framework\MessageQueue\Lock\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Lock\WriterInterface | Interface was added. | +| Magento\Framework\MessageQueue\MergedMessageInterface | Interface was added. | +| Magento\Framework\MessageQueue\MergerInterface | Interface was added. | +| Magento\Framework\MessageQueue\MessageProcessorInterface | Interface was added. | +| Magento\Framework\MessageQueue\PoisonPill\PoisonPillCompareInterface | Interface was added. | +| Magento\Framework\MessageQueue\PoisonPill\PoisonPillPutInterface | Interface was added. | +| Magento\Framework\MessageQueue\PoisonPill\PoisonPillReadInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\PublisherConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\PublisherConnectionInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\ValidatorInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ExchangeConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ExchangeConfigItem\BindingInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\QueueConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ValidatorInterface | Interface was added. | +| Magento\Framework\Message\ExceptionMessageFactoryInterface | Interface was added. | +| Magento\Framework\Model\EntitySnapshot\AttributeProviderInterface | Interface was added. | +| Magento\Framework\Model\Entity\ScopeInterface | Interface was added. | +| Magento\Framework\Model\Entity\ScopeProviderInterface | Interface was added. | +| Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationInterface | Interface was added. | +| Magento\Framework\Model\ResourceModel\Type\Db\ConnectionFactoryInterface | Interface was added. | +| Magento\Framework\Module\ModuleListInterface | Interface was added. | +| Magento\Framework\Mview\ConfigInterface | Interface was added. | +| Magento\Framework\Mview\ProcessorInterface | Interface was added. | +| Magento\Framework\Mview\ViewInterface | Interface was added. | +| Magento\Framework\Mview\View\ChangelogInterface | Interface was added. | +| Magento\Framework\Mview\View\CollectionInterface | Interface was added. | +| Magento\Framework\Mview\View\StateInterface | Interface was added. | +| Magento\Framework\Mview\View\State\CollectionInterface | Interface was added. | +| Magento\Framework\Mview\View\SubscriptionInterface | Interface was added. | +| Magento\Framework\ObjectManager\ConfigCacheInterface | Interface was added. | +| Magento\Framework\ObjectManager\ConfigInterface | Interface was added. | +| Magento\Framework\ObjectManager\ConfigLoaderInterface | Interface was added. | +| Magento\Framework\ObjectManager\DefinitionInterface | Interface was added. | +| Magento\Framework\ObjectManager\DynamicConfigInterface | Interface was added. | +| Magento\Framework\ObjectManager\FactoryInterface | Interface was added. | +| Magento\Framework\ObjectManager\NoninterceptableInterface | Interface was added. | +| Magento\Framework\ObjectManager\RelationsInterface | Interface was added. | +| Magento\Framework\Profiler\Driver\Standard\OutputInterface | Interface was added. | +| Magento\Framework\Search\AdapterInterface | Interface was added. | +| Magento\Framework\Search\Adapter\Aggregation\AggregationResolverInterface | Interface was added. | +| Magento\Framework\Search\Adapter\OptionsInterface | Interface was added. | +| Magento\Framework\Search\Adapter\Preprocessor\PreprocessorInterface | Interface was added. | +| Magento\Framework\Search\Dynamic\Algorithm\AlgorithmInterface | Interface was added. | +| Magento\Framework\Search\Request\Aggregation\StatusInterface | Interface was added. | +| Magento\Framework\Search\Request\IndexScopeResolverInterface | Interface was added. | +| Magento\Framework\Search\ResponseInterface | Interface was added. | +| Magento\Framework\Search\SearchEngineInterface | Interface was added. | +| Magento\Framework\Search\SearchEngine\ConfigInterface | Interface was added. | +| Magento\Framework\Session\Config\ConfigInterface | Interface was added. | +| Magento\Framework\Session\SaveHandlerInterface | Interface was added. | +| Magento\Framework\Session\StorageInterface | Interface was added. | +| Magento\Framework\Session\ValidatorInterface | Interface was added. | +| Magento\Framework\Setup\ConfigOptionsListInterface | Interface was added. | +| Magento\Framework\Setup\DataCacheInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\DataSavior\DataSaviorInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\DataSavior\DumpAccessorInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DDLTriggerInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DbDefinitionProcessorInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DbSchemaReaderInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DbSchemaWriterInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Declaration\ValidationInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Diff\DiffInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnDefaultAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnIdentityAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnNullableAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnUnsignedAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\ElementDiffAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Factories\FactoryInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\TableElementInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\OperationInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\SchemaConfigInterface | Interface was added. | +| Magento\Framework\Setup\Patch\DataPatchInterface | Interface was added. | +| Magento\Framework\Setup\Patch\DependentPatchInterface | Interface was added. | +| Magento\Framework\Setup\Patch\NonTransactionableInterface | Interface was added. | +| Magento\Framework\Setup\Patch\PatchInterface | Interface was added. | +| Magento\Framework\Setup\Patch\PatchRevertableInterface | Interface was added. | +| Magento\Framework\Setup\Patch\SchemaPatchInterface | Interface was added. | +| Magento\Framework\Setup\SampleData\InstallerInterface | Interface was added. | +| Magento\Framework\Setup\SampleData\StateInterface | Interface was added. | +| Magento\Framework\Setup\SchemaListenerDefinition\DefinitionConverterInterface | Interface was added. | +| Magento\Framework\Setup\SchemaListenerHandlers\SchemaListenerHandlerInterface | Interface was added. | +| Magento\Framework\Setup\UpToDateValidatorInterface | Interface was added. | +| Magento\Framework\TestFramework\Unit\Autoloader\GeneratorInterface | Interface was added. | +| Magento\Framework\TranslateInterface | Interface was added. | +| Magento\Framework\Translate\Inline\ProviderInterface | Interface was added. | +| Magento\Framework\Url\ModifierInterface | Interface was added. | +| Magento\Framework\Url\RouteParamsPreprocessorInterface | Interface was added. | +| Magento\Framework\Validator\Constraint\OptionInterface | Interface was added. | +| Magento\Framework\Validator\HTML\AttributeValidatorInterface | Interface was added. | +| Magento\Framework\Validator\HTML\TagValidatorInterface | Interface was added. | +| Magento\Framework\Validator\HTML\WYSIWYGValidatorInterface | Interface was added. | +| Magento\Framework\View\Asset\ContentProcessorInterface | Interface was added. | +| Magento\Framework\View\Asset\ContextInterface | Interface was added. | +| Magento\Framework\View\Asset\LockerProcessInterface | Interface was added. | +| Magento\Framework\View\Asset\MergeStrategyInterface | Interface was added. | +| Magento\Framework\View\Asset\MergeableInterface | Interface was added. | +| Magento\Framework\View\Asset\PreProcessor\FilenameResolverInterface | Interface was added. | +| Magento\Framework\View\DesignInterface | Interface was added. | +| Magento\Framework\View\Design\Fallback\Rule\RuleInterface | Interface was added. | +| Magento\Framework\View\Design\FileResolution\Fallback\ResolverInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\CustomizationInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Customization\ConfigInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Customization\FileAssetInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Customization\FileInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\FileInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\File\CollectionInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Image\PathInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\ResolverInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\ThemeProviderInterface | Interface was added. | +| Magento\Framework\View\Element\ComponentVisibilityInterface | Interface was added. | +| Magento\Framework\View\Element\Message\InterpretationStrategyInterface | Interface was added. | +| Magento\Framework\View\Element\Message\Renderer\PoolInterface | Interface was added. | +| Magento\Framework\View\Element\Message\Renderer\RendererInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\BlockWrapperInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Config\DomMergerInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Config\FileCollectorInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Config\UiReaderInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ContainerInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ContentType\ContentTypeInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ContextInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Control\ActionPoolInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Control\ControlInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\DataProvider\FilterApplierInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\DataSourceInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Factory\ComponentFactoryInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\JsConfigInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\LayoutInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ObserverInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\PoolInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\SubjectInterface | Interface was added. | +| Magento\Framework\View\File\FileList\CollateInterface | Interface was added. | +| Magento\Framework\View\Helper\SecureHtmlRender\SecurityProcessorInterface | Interface was added. | +| Magento\Framework\View\Layout\Argument\UpdaterInterface | Interface was added. | +| Magento\Framework\View\Layout\Condition\VisibilityConditionInterface | Interface was added. | +| Magento\Framework\View\Layout\GeneratorInterface | Interface was added. | +| Magento\Framework\View\Layout\LayoutCacheKeyInterface | Interface was added. | +| Magento\Framework\View\Layout\ProcessorInterface | Interface was added. | +| Magento\Framework\View\Layout\ReaderInterface | Interface was added. | +| Magento\Framework\View\Model\PageLayout\Config\BuilderInterface | Interface was added. | +| Magento\Framework\View\Page\Config\RendererInterface | Interface was added. | +| Magento\Framework\View\TemplateEngineInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\AttributeInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\CdataInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\CommentInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\Directive\DirectiveInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\Element\ElementInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\TextInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\ResultInterface | Interface was added. | +| Magento\Framework\View\Xsd\Media\TypeDataExtractorInterface | Interface was added. | +| Magento\Framework\Webapi\CustomAttributeTypeLocatorInterface | Interface was added. | +| Magento\Framework\Webapi\CustomAttribute\PreprocessorInterface | Interface was added. | +| Magento\Framework\Webapi\CustomAttribute\ServiceTypeListInterface | Interface was added. | +| Magento\Framework\Webapi\Rest\Request\DeserializerInterface | Interface was added. | +| Magento\GiftCardAccount\Api\GiftCardRedeemerInterface | Interface was added. | +| Magento\GiftCardAccount\Model\Spi\Data\UsageAttemptInterface | Interface was added. | +| Magento\GiftCardAccount\Model\Spi\GiftCardAccountManagerInterface | Interface was added. | +| Magento\GiftCardAccount\Model\Spi\GiftCardAccountResourceInterface | Interface was added. | +| Magento\GiftCardAccount\Model\Spi\UsageAttemptFactoryInterface | Interface was added. | +| Magento\GiftCardAccount\Model\Spi\UsageAttemptsManagerInterface | Interface was added. | +| Magento\GiftRegistry\Model\Attribute\ConfigInterface | Interface was added. | +| Magento\GraphQl\Controller\HttpHeaderProcessorInterface | Interface was added. | +| Magento\GraphQl\Controller\HttpRequestValidatorInterface | Interface was added. | +| Magento\GraphQl\Model\Query\ContextInterface | Interface was added. | +| Magento\GraphQl\Model\Query\ContextParametersInterface | Interface was added. | +| Magento\GraphQl\Model\Query\ContextParametersProcessorInterface | Interface was added. | +| Magento\ImportExport\Api\Data\ExtendedExportInfoInterface | Interface was added. | +| Magento\ImportExport\Model\Report\ReportProcessorInterface | Interface was added. | +| Magento\Indexer\Model\ModeSwitcherInterface | Interface was added. | +| Magento\Indexer\Model\Source\DataInterface | Interface was added. | +| Magento\Integration\Model\Oauth\Token\RequestLog\ReaderInterface | Interface was added. | +| Magento\Integration\Model\Oauth\Token\RequestLog\WriterInterface | Interface was added. | +| Magento\InventoryIndexer\Indexer\SelectBuilderInterface | Interface was added. | +| Magento\Invitation\Controller\Customer\AccountInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\Data\IsLoginAsCustomerEnabledForCustomerResultInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\GetLoggedAsCustomerAdminIdInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\GetLoggedAsCustomerCustomerIdInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\IsLoginAsCustomerEnabledForCustomerInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\SetLoggedAsCustomerAdminIdInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\SetLoggedAsCustomerCustomerIdInterface | Interface was added. | +| Magento\LoginAsCustomerAssistance\Api\ConfigInterface | Interface was added. | +| Magento\LoginAsCustomerAssistance\Api\IsAssistanceEnabledInterface | Interface was added. | +| Magento\LoginAsCustomerAssistance\Api\SetAssistanceInterface | Interface was added. | +| Magento\MediaContentApi\Api\GetAssetIdsByContentFieldInterface | Interface was added. | +| Magento\MediaContentApi\Api\UpdateContentAssetLinksInterface | Interface was added. | +| Magento\MediaContentApi\Model\GetAssetIdsByContentFieldInterface | Interface was added. | +| Magento\MediaContentApi\Model\SearchPatternConfigInterface | Interface was added. | +| Magento\MediaContentSynchronizationApi\Api\SynchronizeIdentitiesInterface | Interface was added. | +| Magento\MediaContentSynchronizationApi\Api\SynchronizeInterface | Interface was added. | +| Magento\MediaContentSynchronizationApi\Model\GetEntitiesInterface | Interface was added. | +| Magento\MediaGalleryApi\Api\SearchAssetsInterface | Interface was added. | +| Magento\MediaGalleryApi\Model\ExcludedPatternsConfigInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Api\AddMetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Api\Data\MetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Api\ExtractMetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\FileInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\ReadFileInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\ReadMetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\SegmentInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\WriteFileInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\WriteMetadataInterface | Interface was added. | +| Magento\MediaGalleryRenditionsApi\Api\GenerateRenditionsInterface | Interface was added. | +| Magento\MediaGalleryRenditionsApi\Api\GetRenditionPathInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Api\SynchronizeFilesInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Api\SynchronizeInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Model\CreateAssetFromFileInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Model\FetchBatchesInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Model\ImportFilesInterface | Interface was added. | +| Magento\MediaGalleryUiApi\Api\ConfigInterface | Interface was added. | +| Magento\Msrp\Pricing\MsrpPriceCalculatorInterface | Interface was added. | +| Magento\MultipleWishlist\Controller\IndexInterface | Interface was added. | +| Magento\MultipleWishlist\Model\Search\Strategy\StrategyInterface | Interface was added. | +| Magento\NegotiableQuote\Api\NegotiableCartRepositoryInterface | Interface was added. | +| Magento\NegotiableQuote\Model\Attachment\DownloadPermission\AllowInterface | Interface was added. | +| Magento\NegotiableQuote\Model\ProductOptionsProviderInterface | Interface was added. | +| Magento\NegotiableQuote\Model\Quote\ViewAccessInterface | Interface was added. | +| Magento\NegotiableQuote\Model\ResourceModel\QuoteGridInterface | Interface was added. | +| Magento\NegotiableQuote\Model\Restriction\RestrictionInterface | Interface was added. | +| Magento\NegotiableQuote\Model\Status\LabelProviderInterface | Interface was added. | +| Magento\NegotiableQuote\Model\Validator\ValidatorInterface | Interface was added. | +| Magento\Newsletter\Model\SubscriptionManagerInterface | Interface was added. | +| Magento\OrderHistorySearch\Model\Filter\FilterInterface | Interface was added. | +| Magento\PageCache\Model\Spi\PageCacheTagsPreprocessorInterface | Interface was added. | +| Magento\Payment\Api\Data\PaymentAdditionalInfoInterface | Interface was added. | +| Magento\Payment\Model\Method\TransparentInterface | Interface was added. | +| Magento\Paypal\Helper\Shortcut\ValidatorInterface | Interface was added. | +| Magento\Paypal\Model\Billing\Agreement\MethodInterface | Interface was added. | +| Magento\Paypal\Model\IpnInterface | Interface was added. | +| Magento\Paypal\Model\Payflow\Service\Response\Handler\HandlerInterface | Interface was added. | +| Magento\PurchaseOrderRule\Api\Data\AppliedRuleApproverSearchResultsInterface | Interface was added. | +| Magento\PurchaseOrderRule\Api\Data\AppliedRuleSearchResultsInterface | Interface was added. | +| Magento\PurchaseOrderRule\Api\Data\RuleSearchResultsInterface | Interface was added. | +| Magento\PurchaseOrderRule\Model\Rule\ConditionInterface | Interface was added. | +| Magento\PurchaseOrderRule\Model\Rule\ValidateInterface | Interface was added. | +| Magento\PurchaseOrder\Api\Data\PurchaseOrderInterface | Interface was added. | +| Magento\PurchaseOrder\Api\Data\PurchaseOrderSearchResultsInterface | Interface was added. | +| Magento\PurchaseOrder\Api\PurchaseOrderManagementInterface | Interface was added. | +| Magento\PurchaseOrder\Api\PurchaseOrderRepositoryInterface | Interface was added. | +| Magento\PurchaseOrder\Model\CommentRepositoryInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Company\ConfigInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Company\Config\RepositoryInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Customer\Authorization\ActionInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Notification\ActionNotificationInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Notification\Action\Recipient\ResolverInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Notification\Config\ProviderInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Notification\ContentSourceInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Notification\NotifierInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Notification\SenderInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Payment\DeferredPaymentStrategyInterface | Interface was added. | +| Magento\PurchaseOrder\Model\ProcessorInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Processor\ApprovalProcessorInterface | Interface was added. | +| Magento\PurchaseOrder\Model\PurchaseOrderLogRepositoryInterface | Interface was added. | +| Magento\PurchaseOrder\Model\PurchaseOrder\LogManagementInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Validator\ActionReady\ValidatorInterface | Interface was added. | +| Magento\PurchaseOrder\Model\Validator\ValidatorInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\CartItem\DataProvider\CustomizableOptionValueInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\CartItem\DataProvider\Processor\ItemDataProcessorInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\BuyRequest\BuyRequestDataProviderInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\Payment\AdditionalDataProviderInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\SetShippingAddressesOnCartInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\SetShippingMethodsOnCartInterface | Interface was added. | +| Magento\Quote\Api\ChangeQuoteControlInterface | Interface was added. | +| Magento\Quote\Model\Cart\BuyRequest\BuyRequestDataProviderInterface | Interface was added. | +| Magento\Quote\Model\Product\QuoteItemsCleanerInterface | Interface was added. | +| Magento\Quote\Model\Quote\Address\CustomAttributeListInterface | Interface was added. | +| Magento\Quote\Model\Quote\Address\Total\CollectorInterface | Interface was added. | +| Magento\Quote\Model\Quote\Address\Total\ReaderInterface | Interface was added. | +| Magento\Quote\Model\Quote\Item\CartItemProcessorInterface | Interface was added. | +| Magento\Quote\Model\ValidationRules\QuoteValidationRuleInterface | Interface was added. | +| Magento\ReleaseNotification\Model\ContentProviderInterface | Interface was added. | +| Magento\RemoteStorage\Driver\DriverFactoryInterface | Interface was added. | +| Magento\RemoteStorage\Driver\RemoteDriverInterface | Interface was added. | +| Magento\RemoteStorage\FilesystemInterface | Interface was added. | +| Magento\RequisitionList\Model\Checker\ProductQtyChangeAvailabilityInterface | Interface was added. | +| Magento\RewardGraphQl\Model\Formatter\Customer\FormatterInterface | Interface was added. | +| Magento\Reward\Observer\PlaceOrder\RestrictionInterface | Interface was added. | +| Magento\Rma\Model\Spi\CommentResourceInterface | Interface was added. | +| Magento\Rma\Model\Spi\RmaResourceInterface | Interface was added. | +| Magento\Rma\Model\Spi\TrackResourceInterface | Interface was added. | +| Magento\SalesGraphQl\Model\Shipment\Item\FormatterInterface | Interface was added. | +| Magento\SalesRule\Api\Data\DiscountDataInterface | Interface was added. | +| Magento\SalesRule\Api\Data\RuleDiscountInterface | Interface was added. | +| Magento\SalesRule\Model\Spi\CodeLimitManagerInterface | Interface was added. | +| Magento\SalesRule\Model\Spi\QuoteResetAppliedRulesInterface | Interface was added. | +| Magento\SalesRule\Model\Spi\RuleQuoteRecollectTotalsInterface | Interface was added. | +| Magento\Sales\Api\OrderCustomerDelegateInterface | Interface was added. | +| Magento\Sales\Api\PaymentFailuresInterface | Interface was added. | +| Magento\Sales\Controller\AbstractController\OrderLoaderInterface | Interface was added. | +| Magento\Sales\Controller\AbstractController\OrderViewAuthorizationInterface | Interface was added. | +| Magento\Sales\Controller\OrderInterface | Interface was added. | +| Magento\Sales\Model\Order\Creditmemo\CreditmemoValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Creditmemo\ItemCreationValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Creditmemo\SenderInterface | Interface was added. | +| Magento\Sales\Model\Order\Email\Container\IdentityInterface | Interface was added. | +| Magento\Sales\Model\Order\Invoice\InvoiceValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Invoice\SenderInterface | Interface was added. | +| Magento\Sales\Model\Order\OrderValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Payment\State\CommandInterface | Interface was added. | +| Magento\Sales\Model\Order\Payment\Transaction\BuilderInterface | Interface was added. | +| Magento\Sales\Model\Order\Payment\Transaction\ManagerInterface | Interface was added. | +| Magento\Sales\Model\Order\Shipment\SenderInterface | Interface was added. | +| Magento\Sales\Model\Order\Shipment\ShipmentValidatorInterface | Interface was added. | +| Magento\Sales\Model\ResourceModel\Order\CollectionFactoryInterface | Interface was added. | +| Magento\Sales\Model\ResourceModel\Provider\NotSyncedDataProviderInterface | Interface was added. | +| Magento\Sales\Model\Spi\CreditmemoCommentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\CreditmemoItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\CreditmemoResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\InvoiceCommentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\InvoiceItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\InvoiceResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderAddressResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderPaymentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderStatusHistoryResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentCommentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentTrackResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\TransactionResourceInterface | Interface was added. | +| Magento\Sales\Model\ValidatorInterface | Interface was added. | +| Magento\ScheduledImportExport\Model\Scheduled\Operation\OperationInterface | Interface was added. | +| Magento\Search\Model\SearchEngine\ValidatorInterface | Interface was added. | +| Magento\Search\Setup\InstallConfigInterface | Interface was added. | +| Magento\Security\Api\Data\UserExpirationInterface | Interface was added. | +| Magento\SharedCatalog\Api\Data\PermissionInterface | Interface was added. | +| Magento\SharedCatalog\Api\SharedCatalogDuplicationInterface | Interface was added. | +| Magento\SharedCatalog\Model\Configure\Category\Tree\RendererInterface | Interface was added. | +| Magento\Shipping\Model\Carrier\Source\GenericInterface | Interface was added. | +| Magento\Staging\Block\Adminhtml\Update\Entity\EntityProviderInterface | Interface was added. | +| Magento\Staging\Block\Adminhtml\Update\Entity\StoreIdProviderInterface | Interface was added. | +| Magento\Staging\Model\Entity\BuilderInterface | Interface was added. | +| Magento\Staging\Model\Entity\HydratorInterface | Interface was added. | +| Magento\Staging\Model\Entity\PersisterInterface | Interface was added. | +| Magento\Staging\Model\Entity\RemoverInterface | Interface was added. | +| Magento\Staging\Model\Entity\RetrieverInterface | Interface was added. | +| Magento\Staging\Model\Entity\Update\Action\TransactionExecutorInterface | Interface was added. | +| Magento\Staging\Model\Operation\Update\UpdateProcessorInterface | Interface was added. | +| Magento\Staging\Model\StagingApplierInterface | Interface was added. | +| Magento\Staging\Model\Update\Grid\ActionDataProviderInterface | Interface was added. | +| Magento\Staging\Model\Update\IncludesInterface | Interface was added. | +| Magento\Staging\Model\VersionHistoryInterface | Interface was added. | +| Magento\Staging\Ui\Component\Listing\Column\Entity\UrlProviderInterface | Interface was added. | +| Magento\Store\Model\Config\Importer\Processor\ProcessorInterface | Interface was added. | +| Magento\Store\Model\StoreResolver\ReaderInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcherInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\ContextInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataPostprocessorInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataPreprocessorInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataSerializerInterface | Interface was added. | +| Magento\Support\Model\Report\ConfigInterface | Interface was added. | +| Magento\Swat\Api\Data\JwtInterface | Interface was added. | +| Magento\Swat\Api\Data\SwatKeyPairInterface | Interface was added. | +| Magento\Tax\Api\TaxAddressManagerInterface | Interface was added. | +| Magento\Tax\Model\System\Message\NotificationInterface | Interface was added. | +| Magento\Tax\Model\TaxClass\Type\TypeInterface | Interface was added. | +| Magento\Theme\Model\Design\Config\MetadataProviderInterface | Interface was added. | +| Magento\Theme\Model\Theme\StoreThemesResolverInterface | Interface was added. | +| Magento\Ui\Component\Form\Element\DataType\DataTypeInterface | Interface was added. | +| Magento\Ui\Component\Layout\Tabs\TabInterface | Interface was added. | +| Magento\Ui\Component\Wysiwyg\ConfigInterface | Interface was added. | +| Magento\Ui\Config\Argument\ParserInterface | Interface was added. | +| Magento\Ui\Config\ConverterInterface | Interface was added. | +| Magento\Ui\Controller\UiActionInterface | Interface was added. | +| Magento\Ui\DataProvider\AddFieldToCollectionInterface | Interface was added. | +| Magento\Ui\DataProvider\AddFilterToCollectionInterface | Interface was added. | +| Magento\Ui\DataProvider\Mapper\MapperInterface | Interface was added. | +| Magento\Ui\DataProvider\Modifier\PoolInterface | Interface was added. | +| Magento\Ui\Model\ColorPicker\ModeInterface | Interface was added. | +| Magento\Ui\Model\UrlInput\ConfigInterface | Interface was added. | +| Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlLocatorInterface | Interface was added. | +| Magento\User\Model\Spi\NotificationExceptionInterface | Interface was added. | +| Magento\User\Model\Spi\NotificatorInterface | Interface was added. | +| Magento\Vault\Block\Customer\IconInterface | Interface was added. | +| Magento\VersionsCms\Model\CurrentNodeResolverInterface | Interface was added. | +| Magento\VersionsCms\Model\Hierarchy\ConfigInterface | Interface was added. | +| Magento\VisualMerchandiser\Api\RuleFactoryPoolInterface | Interface was added. | +| Magento\Webapi\Controller\Rest\RequestProcessorInterface | Interface was added. | +| Magento\Widget\Block\BlockInterface | Interface was added. | +| Magento\Wishlist\Controller\IndexInterface | Interface was added. | +| Magento\Wishlist\Controller\WishlistProviderInterface | Interface was added. | +| Magento\Wishlist\Model\AuthenticationStateInterface | Interface was added. | +| Magento\Wishlist\Model\ResourceModel\Item\Product\CollectionBuilderInterface | Interface was added. | +| Magento\Wishlist\Model\Wishlist\BuyRequest\BuyRequestDataProviderInterface | Interface was added. | diff --git a/src/_includes/backward-incompatible-changes/commerce/2.4.4-2.4.5.md b/src/_includes/backward-incompatible-changes/commerce/2.4.4-2.4.5.md new file mode 100644 index 00000000000..93dfd5eaabb --- /dev/null +++ b/src/_includes/backward-incompatible-changes/commerce/2.4.4-2.4.5.md @@ -0,0 +1,858 @@ +#### Class changes {#ee-244-245-class} + +| What changed | How it changed | +| -------------------------------------------------------------------------------- | ------------------------------------ | +| Magento\CatalogInventory\Model\Source\Stock::\_\_construct | [public] Method has been added. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions::formatPrice | [protected] Method has been removed. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Eav::formatPrice | [protected] Method has been removed. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\General::formatPrice | [protected] Method has been removed. | +| Magento\GoogleGtag\Block\Ga | Class was added. | +| Magento\GoogleTagManager\Block\Adminhtml\Creditmemo\GtagGa | Class was added. | +| Magento\GoogleTagManager\Block\Adminhtml\GtagGa | Class was added. | +| Magento\GoogleTagManager\Block\GtagGa | Class was added. | +| Magento\GoogleTagManager\Model\Config\Source\GtagAccountType | Class was added. | + +#### Database changes {#ee-244-245-database} + +| What changed | How it changed | +| ------------------------------------------------------------------------- | ----------------------- | +| catalog_product_index_price_tmp/PRIMARY | Primary key was changed | +| catalog_product_index_price_tmp/id | Column was added | +| customer_eav_attribute/grid_filter_condition_type | Column was added | +| magento_catalogpermissions_index_product/PRIMARY | Primary key was added | +| magento_catalogpermissions_index_product/index_id | Column was added | +| magento_catalogpermissions_index_product_replica/PRIMARY | Primary key was added | +| magento_catalogpermissions_index_product_replica/index_id | Column was added | +| salesrule_label/SALESRULE_LABEL_ROW_ID_SALESRULE_ROW_ID | Foreign key was added | +| salesrule_label/SALESRULE_LABEL_ROW_ID_STORE_ID | Unique key was added | +| salesrule_label/SALESRULE_LABEL_RULE_ID_SEQUENCE_SALESRULE_SEQUENCE_VALUE | Foreign key was removed | +| salesrule_label/SALESRULE_LABEL_RULE_ID_STORE_ID | Unique key was added | +| salesrule_label/row_id | Column was added | +| salesrule_label/rule_id | Column was added | + +#### System changes {#ee-244-245-system} + +| What changed | How it changed | +| ---------------------------------------------------------------- | ------------------------ | +| google/gtag | A group-node was added | +| google/gtag/adwords | A group-node was added | +| google/gtag/adwords/active | A field-node was added | +| google/gtag/adwords/conversion_id | A field-node was added | +| google/gtag/adwords/conversion_label | A field-node was added | +| google/gtag/analytics4 | A group-node was added | +| google/gtag/analytics4/active | A field-node was added | +| google/gtag/analytics4/catalog_page_list_value | A field-node was added | +| google/gtag/analytics4/container_id | A field-node was added | +| google/gtag/analytics4/crosssell_block_list_value | A field-node was added | +| google/gtag/analytics4/experiments | A field-node was added | +| google/gtag/analytics4/measurement_id | A field-node was added | +| google/gtag/analytics4/promotions_list_value | A field-node was added | +| google/gtag/analytics4/related_block_list_value | A field-node was added | +| google/gtag/analytics4/search_page_list_value | A field-node was added | +| google/gtag/analytics4/type | A field-node was added | +| google/gtag/analytics4/upsell_block_list_value | A field-node was added | +| recaptcha_frontend | A section-node was added | +| recaptcha_frontend/type_for | A group-node was added | +| recaptcha_frontend/type_for/customer_invite_create | A field-node was added | +| recaptcha_frontend/type_for/giftcard | A field-node was added | +| recaptcha_frontend/type_for/wishlist | A field-node was added | +| web_api | A section-node was added | +| web_api/graphql | A group-node was added | +| web_api/graphql/include_dynamic_attributes_as_entity_type_fields | A field-node was added | +| webapi/graphql_session | A group-node was added | +| webapi/graphql_session/disabled | A field-node was added | + +#### Class API membership changes {#ee-244-245-class-api-membership} + +| What changed | How it changed | +| ----------------------------------------------------------------------------- | ---------------- | +| Magento\Analytics\ReportXml\DB\SelectBuilder | Class was added. | +| Magento\CatalogGraphQl\Model\Resolver\Products\SearchResult | Class was added. | +| Magento\Catalog\Block\Adminhtml\Product\Edit\Button\Generic | Class was added. | +| Magento\Catalog\Block\Product\ImageFactory | Class was added. | +| Magento\Catalog\Controller\Adminhtml\Product | Class was added. | +| Magento\Catalog\Model\Config | Class was added. | +| Magento\Catalog\Model\Layer\Filter\Item | Class was added. | +| Magento\Catalog\Model\Layer\Resolver | Class was added. | +| Magento\Catalog\Model\Product\Type\Price\Factory | Class was added. | +| Magento\Catalog\Model\ResourceModel\Product\Indexer\Price\IndexTableStructure | Class was added. | +| Magento\Catalog\Pricing\Price\FinalPrice | Class was added. | +| Magento\Checkout\Api\Exception\PaymentProcessingRateLimitExceededException | Class was added. | +| Magento\Checkout\Controller\Cart | Class was added. | +| Magento\Checkout\Model\Type\Onepage | Class was added. | +| Magento\Cms\Model\Template\FilterProvider | Class was added. | +| Magento\Config\Block\System\Config\Form\Field\Factory | Class was added. | +| Magento\Config\Block\System\Config\Form\Fieldset\Factory | Class was added. | +| Magento\Customer\Block\Adminhtml\Edit\GenericButton | Class was added. | +| Magento\Customer\Controller\Adminhtml\Index | Class was added. | +| Magento\Customer\Controller\RegistryConstants | Class was added. | +| Magento\Customer\Model\Context | Class was added. | +| Magento\Customer\Model\CustomerRegistry | Class was added. | +| Magento\Customer\Model\Metadata\FormFactory | Class was added. | +| Magento\Customer\Model\Url | Class was added. | +| Magento\Customer\Setup\CustomerSetup | Class was added. | +| Magento\Deploy\Package\Package | Class was added. | +| Magento\Deploy\Package\PackageFile | Class was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\AttributeAdapter | Class was added. | +| Magento\Framework\AclFactory | Class was added. | +| Magento\Framework\Acl\AclResourceFactory | Class was added. | +| Magento\Framework\Amqp\ConfigFactory | Class was added. | +| Magento\Framework\Api\AbstractSimpleObject | Class was added. | +| Magento\Framework\Api\ExtensionAttribute\JoinData | Class was added. | +| Magento\Framework\Api\ExtensionAttribute\JoinDataInterfaceFactory | Class was added. | +| Magento\Framework\Api\SearchCriteriaBuilder | Class was added. | +| Magento\Framework\Api\Search\DocumentFactory | Class was added. | +| Magento\Framework\Api\Search\SearchCriteriaFactory | Class was added. | +| Magento\Framework\App\Area | Class was added. | +| Magento\Framework\App\Cache\Type\Config | Class was added. | +| Magento\Framework\App\Config\ValueFactory | Class was added. | +| Magento\Framework\App\Filesystem\DirectoryList | Class was added. | +| Magento\Framework\App\Http\Context | Class was added. | +| Magento\Framework\App\Request\Http | Class was added. | +| Magento\Framework\App\Request\InvalidRequestException | Class was added. | +| Magento\Framework\App\Response\Http | Class was added. | +| Magento\Framework\App\Response\Http\FileFactory | Class was added. | +| Magento\Framework\Config\Data\ConfigDataFactory | Class was added. | +| Magento\Framework\Config\ViewFactory | Class was added. | +| Magento\Framework\Console\Cli | Class was added. | +| Magento\Framework\Controller\Result\Forward | Class was added. | +| Magento\Framework\Controller\Result\JsonFactory | Class was added. | +| Magento\Framework\Controller\Result\Raw | Class was added. | +| Magento\Framework\Convert\DataObject | Class was added. | +| Magento\Framework\DB\Adapter\Pdo\MysqlFactory | Class was added. | +| Magento\Framework\DB\Ddl\TriggerFactory | Class was added. | +| Magento\Framework\DB\Helper | Class was added. | +| Magento\Framework\DB\Helper\AbstractHelper | Class was added. | +| Magento\Framework\DB\Transaction | Class was added. | +| Magento\Framework\DataObject\Factory | Class was added. | +| Magento\Framework\Data\FormFactory | Class was added. | +| Magento\Framework\Data\Form\Element\Factory | Class was added. | +| Magento\Framework\Data\Form\Element\Image | Class was added. | +| Magento\Framework\Data\TreeFactory | Class was added. | +| Magento\Framework\Data\Tree\Dbp | Class was added. | +| Magento\Framework\Data\Tree\NodeFactory | Class was added. | +| Magento\Framework\EventFactory | Class was added. | +| Magento\Framework\Event\ObserverFactory | Class was added. | +| Magento\Framework\File\Csv | Class was added. | +| Magento\Framework\File\UploaderFactory | Class was added. | +| Magento\Framework\Filesystem\DirectoryList | Class was added. | +| Magento\Framework\Filesystem\Directory\ReadFactory | Class was added. | +| Magento\Framework\Filesystem\Io\File | Class was added. | +| Magento\Framework\GraphQl\Config\Element\Field | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlAuthenticationException | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlAuthorizationException | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlInputException | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException | Class was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchResponse | Class was added. | +| Magento\Framework\GraphQl\Query\Resolver\Value | Class was added. | +| Magento\Framework\GraphQl\Schema | Class was added. | +| Magento\Framework\GraphQl\Schema\Type\ResolveInfo | Class was added. | +| Magento\Framework\HTTP\Adapter\Curl | Class was added. | +| Magento\Framework\HTTP\AsyncClient\Request | Class was added. | +| Magento\Framework\HTTP\AsyncClient\Response | Class was added. | +| Magento\Framework\HTTP\Client\Curl | Class was added. | +| Magento\Framework\HTTP\PhpEnvironment\RemoteAddress | Class was added. | +| Magento\Framework\HTTP\PhpEnvironment\Request | Class was added. | +| Magento\Framework\Image\AdapterFactory | Class was added. | +| Magento\Framework\Image\Adapter\AbstractAdapter | Class was added. | +| Magento\Framework\Logger\Handler\Base | Class was added. | +| Magento\Framework\Mail\Address | Class was added. | +| Magento\Framework\Mail\TransportInterfaceFactory | Class was added. | +| Magento\Framework\Message\CollectionFactory | Class was added. | +| Magento\Framework\Module\Dir | Class was added. | +| Magento\Framework\Module\Manager | Class was added. | +| Magento\Framework\Module\Setup\MigrationFactory | Class was added. | +| Magento\Framework\Profiler\Driver\Standard\Stat | Class was added. | +| Magento\Framework\Session\Config | Class was added. | +| Magento\Framework\Session\SessionManager | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\StatementAggregator | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Diff\DiffFactory | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Schema | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Table | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\ElementHistory | Class was added. | +| Magento\Framework\Url | Class was added. | +| Magento\Framework\UrlFactory | Class was added. | +| Magento\Framework\Url\Helper\Data | Class was added. | +| Magento\Framework\ValidatorFactory | Class was added. | +| Magento\Framework\View\Asset | Class was added. | +| Magento\Framework\View\Asset\FileFactory | Class was added. | +| Magento\Framework\View\Asset\File\FallbackContextFactory | Class was added. | +| Magento\Framework\View\Element\Html\Select | Class was added. | +| Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider | Class was added. | +| Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult | Class was added. | +| Magento\Framework\View\Helper\SecureHtmlRender\EventHandlerData | Class was added. | +| Magento\Framework\View\Helper\SecureHtmlRender\TagData | Class was added. | +| Magento\Framework\View\LayoutFactory | Class was added. | +| Magento\Framework\View\Layout\Generator\ContextFactory | Class was added. | +| Magento\Framework\View\Layout\Reader\ContextFactory | Class was added. | +| Magento\Framework\View\PageLayout\Config | Class was added. | +| Magento\Framework\View\Page\ConfigFactory | Class was added. | +| Magento\Framework\Webapi\Exception | Class was added. | +| Magento\Framework\Webapi\Rest\Request | Class was added. | +| Magento\GiftCardAccount\Api\Exception\TooManyAttemptsException | Class was added. | +| Magento\ImportExport\Model\Export\Factory | Class was added. | +| Magento\Indexer\Model\DimensionModes | Class was added. | +| Magento\Payment\Gateway\Config\Config | Class was added. | +| Magento\Paypal\Model\Billing\AbstractAgreement | Class was added. | +| Magento\Quote\Model\Cart\Data\CartItem | Class was added. | +| Magento\Quote\Model\Quote\Address\RateCollectorInterfaceFactory | Class was added. | +| Magento\Quote\Model\Quote\Item\CartItemOptionsProcessor | Class was added. | +| Magento\Quote\Model\Quote\Item\Option | Class was added. | +| Magento\Quote\Setup\QuoteSetup | Class was added. | +| Magento\SalesRule\Api\Exception\CodeRequestLimitException | Class was added. | +| Magento\SalesRule\Model\Validator | Class was added. | +| Magento\Sales\Controller\Adminhtml\Order | Class was added. | +| Magento\Sales\Model\Order\CreditmemoFactory | Class was added. | +| Magento\Sales\Model\Order\Email\Sender\InvoiceSender | Class was added. | +| Magento\Sales\Model\Order\Email\Sender\OrderSender | Class was added. | +| Magento\Sales\Model\Order\Pdf\Total\DefaultTotal | Class was added. | +| Magento\Sales\Model\ResourceModel\Order\CollectionFactory | Class was added. | +| Magento\Sales\Model\ResourceModel\Order\Collection\Factory | Class was added. | +| Magento\Sales\Model\Service\InvoiceService | Class was added. | +| Magento\Sales\Setup\SalesSetup | Class was added. | +| Magento\ScheduledImportExport\Model\Scheduled\Operation | Class was added. | +| Magento\Store\Ui\Component\Listing\Column\Store\Options | Class was added. | +| Magento\TargetRule\Block\Product\AbstractProduct | Class was added. | +| Magento\Ui\Component\Control\Container | Class was added. | +| Magento\Ui\Component\Form\Fieldset\Factory | Class was added. | +| Magento\VisualMerchandiser\Model\Rules\Factory | Class was added. | +| Magento\VisualMerchandiser\Model\Sorting\Factory | Class was added. | +| Magento\Wishlist\Model\Wishlist\Data\WishlistItem | Class was added. | + +#### Interface API membership changes {#ee-244-245-interface-api-membership} + +| What changed | How it changed | +| ------------------------------------------------------------------------------------------------------------ | -------------------- | +| Magento\AdvancedCheckout\Model\AreProductsSalableForRequestedQtyInterface | Interface was added. | +| Magento\AdvancedRule\Model\Condition\FilterGroupInterface | Interface was added. | +| Magento\AdvancedRule\Model\Condition\FilterInterface | Interface was added. | +| Magento\AdvancedRule\Model\Condition\FilterTextGeneratorInterface | Interface was added. | +| Magento\AdvancedRule\Model\Condition\FilterableConditionInterface | Interface was added. | +| Magento\AdvancedSearch\Block\SearchDataInterface | Interface was added. | +| Magento\Analytics\Api\Data\LinkInterface | Interface was added. | +| Magento\Analytics\Api\LinkProviderInterface | Interface was added. | +| Magento\Analytics\Model\Connector\CommandInterface | Interface was added. | +| Magento\Analytics\Model\ExportDataHandlerInterface | Interface was added. | +| Magento\Analytics\Model\ReportWriterInterface | Interface was added. | +| Magento\Analytics\ReportXml\DB\Assembler\AssemblerInterface | Interface was added. | +| Magento\Backend\Model\Image\UploadResizeConfigInterface | Interface was added. | +| Magento\Backend\Model\Search\Config\Structure\ElementBuilderInterface | Interface was added. | +| Magento\Bundle\Pricing\Adjustment\BundleCalculatorInterface | Interface was added. | +| Magento\CardinalCommerce\Model\Response\JwtParserInterface | Interface was added. | +| Magento\CardinalCommerce\Model\Response\JwtPayloadValidatorInterface | Interface was added. | +| Magento\CatalogGraphQl\DataProvider\Product\LayeredNavigation\LayerBuilderInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Categories\DataProvider\Category\CollectionProcessorInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Product\Price\ProviderInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Products\Query\ProductQueryInterface | Interface was added. | +| Magento\CatalogImportExport\Model\Export\ProductFilterInterface | Interface was added. | +| Magento\CatalogRule\Model\Indexer\IndexerTableSwapperInterface | Interface was added. | +| Magento\CatalogSearch\Model\Adapter\Aggregation\RequestCheckerInterface | Interface was added. | +| Magento\CatalogSearch\Model\Advanced\ProductCollectionPrepareStrategyInterface | Interface was added. | +| Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchCriteriaResolverInterface | Interface was added. | +| Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierInterface | Interface was added. | +| Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\TotalRecordsResolverInterface | Interface was added. | +| Magento\CatalogSearch\Model\Search\ItemCollectionProviderInterface | Interface was added. | +| Magento\CatalogUrlRewrite\Model\Map\DatabaseMapInterface | Interface was added. | +| Magento\CatalogUrlRewrite\Model\Map\HashMapInterface | Interface was added. | +| Magento\Catalog\Block\Product\AwareInterface | Interface was added. | +| Magento\Catalog\Block\Product\ReviewRendererInterface | Interface was added. | +| Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper\HandlerInterface | Interface was added. | +| Magento\Catalog\Controller\Product\View\ViewInterface | Interface was added. | +| Magento\Catalog\Model\Attribute\LockValidatorInterface | Interface was added. | +| Magento\Catalog\Model\Config\Source\ProductPriceOptionsInterface | Interface was added. | +| Magento\Catalog\Model\Entity\Product\Attribute\Group\AttributeMapperInterface | Interface was added. | +| Magento\Catalog\Model\Indexer\Product\Flat\TableDataInterface | Interface was added. | +| Magento\Catalog\Model\Layer\CollectionFilterInterface | Interface was added. | +| Magento\Catalog\Model\Layer\FilterableAttributeListInterface | Interface was added. | +| Magento\Catalog\Model\Layer\ItemCollectionProviderInterface | Interface was added. | +| Magento\Catalog\Model\Layer\StateKeyInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\CollectionProviderInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\Converter\ConverterInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\Data\ListCriteriaInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\Data\ListResultInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\MapProviderInterface | Interface was added. | +| Magento\Catalog\Model\ProductOptions\ConfigInterface | Interface was added. | +| Magento\Catalog\Model\Product\Condition\ConditionInterface | Interface was added. | +| Magento\Catalog\Model\Product\Configuration\Item\Option\OptionInterface | Interface was added. | +| Magento\Catalog\Model\Product\Media\ConfigInterface | Interface was added. | +| Magento\Catalog\Model\Product\Pricing\Renderer\SalableResolverInterface | Interface was added. | +| Magento\Catalog\Model\ResourceModel\Product\Indexer\Price\PriceModifierInterface | Interface was added. | +| Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderInterface | Interface was added. | +| Magento\Catalog\Pricing\Price\ConfiguredPriceInterface | Interface was added. | +| Magento\Catalog\Pricing\Price\MinimalPriceCalculatorInterface | Interface was added. | +| Magento\Catalog\Pricing\Price\SpecialPriceInterface | Interface was added. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Eav\WysiwygConfigDataProcessorInterface | Interface was added. | +| Magento\CheckoutAgreements\Model\AgreementsProviderInterface | Interface was added. | +| Magento\Checkout\Api\PaymentProcessingRateLimiterInterface | Interface was added. | +| Magento\Checkout\Controller\Express\RedirectLoginInterface | Interface was added. | +| Magento\Checkout\CustomerData\ItemPoolInterface | Interface was added. | +| Magento\Cms\Model\PageRepository\ValidatorInterface | Interface was added. | +| Magento\Cms\Model\Page\CustomLayoutManagerInterface | Interface was added. | +| Magento\Cms\Model\Page\CustomLayoutRepositoryInterface | Interface was added. | +| Magento\Cms\Model\Page\CustomLayout\Data\CustomLayoutSelectedInterface | Interface was added. | +| Magento\Cms\Ui\Component\AddFilterInterface | Interface was added. | +| Magento\ConfigurableProduct\Model\ResourceModel\Attribute\OptionSelectBuilderInterface | Interface was added. | +| Magento\Cron\Model\DeadlockRetrierInterface | Interface was added. | +| Magento\Csp\Api\CspAwareActionInterface | Interface was added. | +| Magento\Csp\Api\CspRendererInterface | Interface was added. | +| Magento\Csp\Api\Data\ModeConfiguredInterface | Interface was added. | +| Magento\Csp\Api\Data\PolicyInterface | Interface was added. | +| Magento\Csp\Api\InlineUtilInterface | Interface was added. | +| Magento\Csp\Api\ModeConfigManagerInterface | Interface was added. | +| Magento\Csp\Api\PolicyCollectorInterface | Interface was added. | +| Magento\Csp\Api\PolicyRendererInterface | Interface was added. | +| Magento\Csp\Model\Collector\Config\PolicyReaderInterface | Interface was added. | +| Magento\Csp\Model\Collector\MergerInterface | Interface was added. | +| Magento\Csp\Model\Policy\SimplePolicyInterface | Interface was added. | +| Magento\CustomerCustomAttributes\Model\Customer\Attribute\ValidatorInterface | Interface was added. | +| Magento\Customer\Api\AccountDelegationInterface | Interface was added. | +| Magento\Customer\Api\SessionCleanerInterface | Interface was added. | +| Magento\Customer\Block\Address\Renderer\RendererInterface | Interface was added. | +| Magento\Customer\Controller\AccountInterface | Interface was added. | +| Magento\Customer\CustomerData\JsLayoutDataProviderPoolInterface | Interface was added. | +| Magento\Customer\CustomerData\SectionPoolInterface | Interface was added. | +| Magento\Customer\Model\Customer\Attribute\Source\GroupSourceLoggedInOnlyInterface | Interface was added. | +| Magento\Deploy\Collector\CollectorInterface | Interface was added. | +| Magento\Deploy\Console\Command\App\SensitiveConfigSet\CollectorInterface | Interface was added. | +| Magento\Deploy\Package\BundleInterface | Interface was added. | +| Magento\Deploy\Package\Processor\ProcessorInterface | Interface was added. | +| Magento\Deploy\Source\SourceInterface | Interface was added. | +| Magento\Deploy\Strategy\StrategyInterface | Interface was added. | +| Magento\Directory\Model\Country\Postcode\ConfigInterface | Interface was added. | +| Magento\Directory\Model\Country\Postcode\ValidatorInterface | Interface was added. | +| Magento\Downloadable\Api\DomainManagerInterface | Interface was added. | +| Magento\Downloadable\Pricing\Price\LinkPriceInterface | Interface was added. | +| Magento\Eav\Model\Entity\AttributeLoaderInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\AttributeInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\Backend\BackendInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\Source\SpecificSourceInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\UniqueValidationInterface | Interface was added. | +| Magento\Eav\Model\Entity\Setup\PropertyMapperInterface | Interface was added. | +| Magento\Eav\Model\ResourceModel\Attribute\DefaultEntityAttributes\ProviderInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProviderInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\ConverterInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\ResolverInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\ResolverInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\ResolverInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldsMappingPreprocessorInterface | Interface was added. | +| Magento\Elasticsearch\SearchAdapter\QueryAwareInterface | Interface was added. | +| Magento\Elasticsearch\SearchAdapter\Query\ValueTransformerInterface | Interface was added. | +| Magento\Framework\Amqp\Topology\BindingInstallerInterface | Interface was added. | +| Magento\Framework\Api\AttributeTypeResolverInterface | Interface was added. | +| Magento\Framework\Api\CriteriaInterface | Interface was added. | +| Magento\Framework\Api\SearchCriteria\CollectionProcessor\ConditionProcessor\CustomConditionInterface | Interface was added. | +| Magento\Framework\Api\SearchCriteria\CollectionProcessor\ConditionProcessor\CustomConditionProviderInterface | Interface was added. | +| Magento\Framework\Api\Search\AggregationInterface | Interface was added. | +| Magento\Framework\Api\Search\AggregationValueInterface | Interface was added. | +| Magento\Framework\Api\Search\BucketInterface | Interface was added. | +| Magento\Framework\Api\Search\DocumentInterface | Interface was added. | +| Magento\Framework\Api\Search\ReportingInterface | Interface was added. | +| Magento\Framework\Api\SimpleBuilderInterface | Interface was added. | +| Magento\Framework\App\Action\HttpConnectActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpDeleteActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpGetActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpOptionsActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPatchActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPostActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPropfindActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPutActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpTraceActionInterface | Interface was added. | +| Magento\Framework\App\AreaInterface | Interface was added. | +| Magento\Framework\App\Config\CommentInterface | Interface was added. | +| Magento\Framework\App\Config\CommentParserInterface | Interface was added. | +| Magento\Framework\App\Config\ConfigResource\ConfigInterface | Interface was added. | +| Magento\Framework\App\Config\ConfigSourceInterface | Interface was added. | +| Magento\Framework\App\Config\ConfigTypeInterface | Interface was added. | +| Magento\Framework\App\Config\Reader\Source\SourceInterface | Interface was added. | +| Magento\Framework\App\Config\Scope\ReaderInterface | Interface was added. | +| Magento\Framework\App\Config\Spi\PostProcessorInterface | Interface was added. | +| Magento\Framework\App\Config\Spi\PreProcessorInterface | Interface was added. | +| Magento\Framework\App\Config\ValueInterface | Interface was added. | +| Magento\Framework\App\CsrfAwareActionInterface | Interface was added. | +| Magento\Framework\App\DefaultPathInterface | Interface was added. | +| Magento\Framework\App\DeploymentConfig\ImporterInterface | Interface was added. | +| Magento\Framework\App\DeploymentConfig\ValidatorInterface | Interface was added. | +| Magento\Framework\App\DeploymentConfig\Writer\FormatterInterface | Interface was added. | +| Magento\Framework\App\DesignInterface | Interface was added. | +| Magento\Framework\App\EnvironmentInterface | Interface was added. | +| Magento\Framework\App\ExceptionHandlerInterface | Interface was added. | +| Magento\Framework\App\FeedFactoryInterface | Interface was added. | +| Magento\Framework\App\FeedInterface | Interface was added. | +| Magento\Framework\App\HttpRequestInterface | Interface was added. | +| Magento\Framework\App\ObjectManager\ConfigWriterInterface | Interface was added. | +| Magento\Framework\App\PageCache\NotCacheableInterface | Interface was added. | +| Magento\Framework\App\Request\ValidatorInterface | Interface was added. | +| Magento\Framework\App\ResourceConnection\ConfigInterface | Interface was added. | +| Magento\Framework\App\ResourceConnection\ConnectionAdapterInterface | Interface was added. | +| Magento\Framework\App\Response\FileInterface | Interface was added. | +| Magento\Framework\App\Response\HeaderProvider\HeaderProviderInterface | Interface was added. | +| Magento\Framework\App\Response\RedirectInterface | Interface was added. | +| Magento\Framework\App\RouterInterface | Interface was added. | +| Magento\Framework\App\RouterListInterface | Interface was added. | +| Magento\Framework\App\Router\NoRouteHandlerInterface | Interface was added. | +| Magento\Framework\App\Router\PathConfigInterface | Interface was added. | +| Magento\Framework\App\Rss\RssManagerInterface | Interface was added. | +| Magento\Framework\App\Rss\UrlBuilderInterface | Interface was added. | +| Magento\Framework\App\ScopeFallbackResolverInterface | Interface was added. | +| Magento\Framework\App\ScopeResolverInterface | Interface was added. | +| Magento\Framework\App\ScopeTreeProviderInterface | Interface was added. | +| Magento\Framework\App\ScopeValidatorInterface | Interface was added. | +| Magento\Framework\App\Scope\ValidatorInterface | Interface was added. | +| Magento\Framework\App\View\Asset\MaterializationStrategy\StrategyInterface | Interface was added. | +| Magento\Framework\App\View\Deployment\Version\StorageInterface | Interface was added. | +| Magento\Framework\Async\CancelableDeferredInterface | Interface was added. | +| Magento\Framework\Async\DeferredInterface | Interface was added. | +| Magento\Framework\Autoload\AutoloaderInterface | Interface was added. | +| Magento\Framework\Backup\SourceFileInterface | Interface was added. | +| Magento\Framework\Cache\ConfigInterface | Interface was added. | +| Magento\Framework\Cache\StaleCacheNotifierInterface | Interface was added. | +| Magento\Framework\Code\Generator\CodeGeneratorInterface | Interface was added. | +| Magento\Framework\Code\Minifier\AdapterInterface | Interface was added. | +| Magento\Framework\Code\Reader\ClassReaderInterface | Interface was added. | +| Magento\Framework\Code\ValidatorInterface | Interface was added. | +| Magento\Framework\Component\ComponentRegistrarInterface | Interface was added. | +| Magento\Framework\Crontab\CrontabManagerInterface | Interface was added. | +| Magento\Framework\Crontab\TasksProviderInterface | Interface was added. | +| Magento\Framework\Css\PreProcessor\ErrorHandlerInterface | Interface was added. | +| Magento\Framework\DB\DataConverter\DataConverterInterface | Interface was added. | +| Magento\Framework\DB\LoggerInterface | Interface was added. | +| Magento\Framework\DB\MapperInterface | Interface was added. | +| Magento\Framework\DB\QueryInterface | Interface was added. | +| Magento\Framework\DB\Query\BatchIteratorInterface | Interface was added. | +| Magento\Framework\DB\Select\QueryModifierInterface | Interface was added. | +| Magento\Framework\DB\Select\RendererInterface | Interface was added. | +| Magento\Framework\DB\Sequence\SequenceInterface | Interface was added. | +| Magento\Framework\DB\Sql\ExpressionInterface | Interface was added. | +| Magento\Framework\DataObject\IdentityGeneratorInterface | Interface was added. | +| Magento\Framework\DataObject\IdentityInterface | Interface was added. | +| Magento\Framework\DataObject\IdentityValidatorInterface | Interface was added. | +| Magento\Framework\DataObject\KeyValueObjectInterface | Interface was added. | +| Magento\Framework\Data\CollectionDataSourceInterface | Interface was added. | +| Magento\Framework\Data\CollectionModifierInterface | Interface was added. | +| Magento\Framework\Data\Collection\Db\FetchStrategyInterface | Interface was added. | +| Magento\Framework\Data\Collection\EntityFactoryInterface | Interface was added. | +| Magento\Framework\Data\SearchResultInterface | Interface was added. | +| Magento\Framework\Data\SearchResultProcessorInterface | Interface was added. | +| Magento\Framework\Data\ValueSourceInterface | Interface was added. | +| Magento\Framework\Encryption\Adapter\EncryptionAdapterInterface | Interface was added. | +| Magento\Framework\Event\ConfigInterface | Interface was added. | +| Magento\Framework\Event\InvokerInterface | Interface was added. | +| Magento\Framework\Event\ManagerInterface | Interface was added. | +| Magento\Framework\Exception\TemporaryStateExceptionInterface | Interface was added. | +| Magento\Framework\Filesystem\Directory\PathValidatorInterface | Interface was added. | +| Magento\Framework\Filesystem\DriverPoolInterface | Interface was added. | +| Magento\Framework\Filesystem\File\ReadInterface | Interface was added. | +| Magento\Framework\Filter\DirectiveProcessorInterface | Interface was added. | +| Magento\Framework\Filter\DirectiveProcessor\FilterInterface | Interface was added. | +| Magento\Framework\Filter\FactoryInterface | Interface was added. | +| Magento\Framework\Filter\FilterManager\ConfigInterface | Interface was added. | +| Magento\Framework\Filter\SimpleDirective\ProcessorInterface | Interface was added. | +| Magento\Framework\Filter\VariableResolverInterface | Interface was added. | +| Magento\Framework\ForeignKey\ConfigInterface | Interface was added. | +| Magento\Framework\ForeignKey\ConstraintInterface | Interface was added. | +| Magento\Framework\ForeignKey\StrategyInterface | Interface was added. | +| Magento\Framework\GraphQlSchemaStitching\GraphQlReader\TypeMetaReaderInterface | Interface was added. | +| Magento\Framework\GraphQl\ConfigInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\ConfigElementFactoryInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\ConfigElementInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\FieldInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\OutputFieldInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\TypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\UnionInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\ErrorHandlerInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\ResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\Argument\FieldEntityAttributesInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\ArgumentApplierInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchRequestItemInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchServiceContractResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\ContextInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\IdentityInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\ResolveRequestInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\TypeResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\SchemaGeneratorInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\TypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\Entity\MapperInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\Enum\DataMapperInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\InputTypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\OutputTypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\Output\ElementMapper\FormatterInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\WrappedTypeInterface | Interface was added. | +| Magento\Framework\HTTP\AsyncClientInterface | Interface was added. | +| Magento\Framework\HTTP\AsyncClient\HttpResponseDeferredInterface | Interface was added. | +| Magento\Framework\Image\Adapter\AdapterInterface | Interface was added. | +| Magento\Framework\Image\Adapter\ConfigInterface | Interface was added. | +| Magento\Framework\Indexer\Config\DependencyInfoProviderInterface | Interface was added. | +| Magento\Framework\Indexer\Table\StrategyInterface | Interface was added. | +| Magento\Framework\Interception\ConfigInterface | Interface was added. | +| Magento\Framework\Interception\ConfigLoaderInterface | Interface was added. | +| Magento\Framework\Interception\ConfigWriterInterface | Interface was added. | +| Magento\Framework\Interception\DefinitionInterface | Interface was added. | +| Magento\Framework\Interception\InterceptorInterface | Interface was added. | +| Magento\Framework\Interception\ObjectManager\ConfigInterface | Interface was added. | +| Magento\Framework\Interception\PluginListInterface | Interface was added. | +| Magento\Framework\Locale\AvailableLocalesInterface | Interface was added. | +| Magento\Framework\Locale\OptionInterface | Interface was added. | +| Magento\Framework\Mail\EmailMessageInterface | Interface was added. | +| Magento\Framework\Mail\MimeInterface | Interface was added. | +| Magento\Framework\Mail\MimeMessageInterface | Interface was added. | +| Magento\Framework\Mail\MimePartInterface | Interface was added. | +| Magento\Framework\MessageQueue\BulkPublisherInterface | Interface was added. | +| Magento\Framework\MessageQueue\CallbackInvokerInterface | Interface was added. | +| Magento\Framework\MessageQueue\ConnectionTypeResolverInterface | Interface was added. | +| Magento\Framework\MessageQueue\ConsumerConfigurationInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ConsumerConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ConsumerConfigItem\HandlerInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ValidatorInterface | Interface was added. | +| Magento\Framework\MessageQueue\LockInterface | Interface was added. | +| Magento\Framework\MessageQueue\Lock\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Lock\WriterInterface | Interface was added. | +| Magento\Framework\MessageQueue\MergedMessageInterface | Interface was added. | +| Magento\Framework\MessageQueue\MergerInterface | Interface was added. | +| Magento\Framework\MessageQueue\MessageProcessorInterface | Interface was added. | +| Magento\Framework\MessageQueue\PoisonPill\PoisonPillCompareInterface | Interface was added. | +| Magento\Framework\MessageQueue\PoisonPill\PoisonPillPutInterface | Interface was added. | +| Magento\Framework\MessageQueue\PoisonPill\PoisonPillReadInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\PublisherConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\PublisherConnectionInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\ValidatorInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ExchangeConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ExchangeConfigItem\BindingInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\QueueConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ValidatorInterface | Interface was added. | +| Magento\Framework\Message\ExceptionMessageFactoryInterface | Interface was added. | +| Magento\Framework\Model\EntitySnapshot\AttributeProviderInterface | Interface was added. | +| Magento\Framework\Model\Entity\ScopeInterface | Interface was added. | +| Magento\Framework\Model\Entity\ScopeProviderInterface | Interface was added. | +| Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationInterface | Interface was added. | +| Magento\Framework\Model\ResourceModel\Type\Db\ConnectionFactoryInterface | Interface was added. | +| Magento\Framework\Module\ModuleListInterface | Interface was added. | +| Magento\Framework\Mview\ConfigInterface | Interface was added. | +| Magento\Framework\Mview\ProcessorInterface | Interface was added. | +| Magento\Framework\Mview\ViewInterface | Interface was added. | +| Magento\Framework\Mview\View\ChangelogInterface | Interface was added. | +| Magento\Framework\Mview\View\CollectionInterface | Interface was added. | +| Magento\Framework\Mview\View\StateInterface | Interface was added. | +| Magento\Framework\Mview\View\State\CollectionInterface | Interface was added. | +| Magento\Framework\Mview\View\SubscriptionInterface | Interface was added. | +| Magento\Framework\ObjectManager\ConfigCacheInterface | Interface was added. | +| Magento\Framework\ObjectManager\ConfigInterface | Interface was added. | +| Magento\Framework\ObjectManager\ConfigLoaderInterface | Interface was added. | +| Magento\Framework\ObjectManager\DefinitionInterface | Interface was added. | +| Magento\Framework\ObjectManager\DynamicConfigInterface | Interface was added. | +| Magento\Framework\ObjectManager\FactoryInterface | Interface was added. | +| Magento\Framework\ObjectManager\NoninterceptableInterface | Interface was added. | +| Magento\Framework\ObjectManager\RelationsInterface | Interface was added. | +| Magento\Framework\Profiler\Driver\Standard\OutputInterface | Interface was added. | +| Magento\Framework\Search\AdapterInterface | Interface was added. | +| Magento\Framework\Search\Adapter\Aggregation\AggregationResolverInterface | Interface was added. | +| Magento\Framework\Search\Adapter\OptionsInterface | Interface was added. | +| Magento\Framework\Search\Adapter\Preprocessor\PreprocessorInterface | Interface was added. | +| Magento\Framework\Search\Dynamic\Algorithm\AlgorithmInterface | Interface was added. | +| Magento\Framework\Search\Request\Aggregation\StatusInterface | Interface was added. | +| Magento\Framework\Search\Request\IndexScopeResolverInterface | Interface was added. | +| Magento\Framework\Search\ResponseInterface | Interface was added. | +| Magento\Framework\Search\SearchEngineInterface | Interface was added. | +| Magento\Framework\Search\SearchEngine\ConfigInterface | Interface was added. | +| Magento\Framework\Session\Config\ConfigInterface | Interface was added. | +| Magento\Framework\Session\SaveHandlerInterface | Interface was added. | +| Magento\Framework\Session\StorageInterface | Interface was added. | +| Magento\Framework\Session\ValidatorInterface | Interface was added. | +| Magento\Framework\Setup\ConfigOptionsListInterface | Interface was added. | +| Magento\Framework\Setup\DataCacheInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\DataSavior\DataSaviorInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\DataSavior\DumpAccessorInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DDLTriggerInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DbDefinitionProcessorInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DbSchemaReaderInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DbSchemaWriterInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Declaration\ValidationInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Diff\DiffInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnDefaultAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnIdentityAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnNullableAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnUnsignedAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\ElementDiffAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Factories\FactoryInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\TableElementInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\OperationInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\SchemaConfigInterface | Interface was added. | +| Magento\Framework\Setup\Patch\DataPatchInterface | Interface was added. | +| Magento\Framework\Setup\Patch\DependentPatchInterface | Interface was added. | +| Magento\Framework\Setup\Patch\NonTransactionableInterface | Interface was added. | +| Magento\Framework\Setup\Patch\PatchInterface | Interface was added. | +| Magento\Framework\Setup\Patch\PatchRevertableInterface | Interface was added. | +| Magento\Framework\Setup\Patch\SchemaPatchInterface | Interface was added. | +| Magento\Framework\Setup\SampleData\InstallerInterface | Interface was added. | +| Magento\Framework\Setup\SampleData\StateInterface | Interface was added. | +| Magento\Framework\Setup\SchemaListenerDefinition\DefinitionConverterInterface | Interface was added. | +| Magento\Framework\Setup\SchemaListenerHandlers\SchemaListenerHandlerInterface | Interface was added. | +| Magento\Framework\Setup\UpToDateValidatorInterface | Interface was added. | +| Magento\Framework\TestFramework\Unit\Autoloader\GeneratorInterface | Interface was added. | +| Magento\Framework\TranslateInterface | Interface was added. | +| Magento\Framework\Translate\Inline\ProviderInterface | Interface was added. | +| Magento\Framework\Url\ModifierInterface | Interface was added. | +| Magento\Framework\Url\RouteParamsPreprocessorInterface | Interface was added. | +| Magento\Framework\Validator\Constraint\OptionInterface | Interface was added. | +| Magento\Framework\Validator\HTML\AttributeValidatorInterface | Interface was added. | +| Magento\Framework\Validator\HTML\TagValidatorInterface | Interface was added. | +| Magento\Framework\Validator\HTML\WYSIWYGValidatorInterface | Interface was added. | +| Magento\Framework\View\Asset\ContentProcessorInterface | Interface was added. | +| Magento\Framework\View\Asset\ContextInterface | Interface was added. | +| Magento\Framework\View\Asset\LockerProcessInterface | Interface was added. | +| Magento\Framework\View\Asset\MergeStrategyInterface | Interface was added. | +| Magento\Framework\View\Asset\MergeableInterface | Interface was added. | +| Magento\Framework\View\Asset\PreProcessor\FilenameResolverInterface | Interface was added. | +| Magento\Framework\View\DesignInterface | Interface was added. | +| Magento\Framework\View\Design\Fallback\Rule\RuleInterface | Interface was added. | +| Magento\Framework\View\Design\FileResolution\Fallback\ResolverInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\CustomizationInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Customization\ConfigInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Customization\FileAssetInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Customization\FileInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\FileInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\File\CollectionInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Image\PathInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\ResolverInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\ThemeProviderInterface | Interface was added. | +| Magento\Framework\View\Element\ComponentVisibilityInterface | Interface was added. | +| Magento\Framework\View\Element\Message\InterpretationStrategyInterface | Interface was added. | +| Magento\Framework\View\Element\Message\Renderer\PoolInterface | Interface was added. | +| Magento\Framework\View\Element\Message\Renderer\RendererInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\BlockWrapperInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Config\DomMergerInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Config\FileCollectorInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Config\UiReaderInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ContainerInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ContentType\ContentTypeInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ContextInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Control\ActionPoolInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Control\ControlInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\DataProvider\FilterApplierInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\DataSourceInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Factory\ComponentFactoryInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\JsConfigInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\LayoutInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ObserverInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\PoolInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\SubjectInterface | Interface was added. | +| Magento\Framework\View\File\FileList\CollateInterface | Interface was added. | +| Magento\Framework\View\Helper\SecureHtmlRender\SecurityProcessorInterface | Interface was added. | +| Magento\Framework\View\Layout\Argument\UpdaterInterface | Interface was added. | +| Magento\Framework\View\Layout\Condition\VisibilityConditionInterface | Interface was added. | +| Magento\Framework\View\Layout\GeneratorInterface | Interface was added. | +| Magento\Framework\View\Layout\LayoutCacheKeyInterface | Interface was added. | +| Magento\Framework\View\Layout\ProcessorInterface | Interface was added. | +| Magento\Framework\View\Layout\ReaderInterface | Interface was added. | +| Magento\Framework\View\Model\PageLayout\Config\BuilderInterface | Interface was added. | +| Magento\Framework\View\Page\Config\RendererInterface | Interface was added. | +| Magento\Framework\View\TemplateEngineInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\AttributeInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\CdataInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\CommentInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\Directive\DirectiveInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\Element\ElementInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\TextInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\ResultInterface | Interface was added. | +| Magento\Framework\View\Xsd\Media\TypeDataExtractorInterface | Interface was added. | +| Magento\Framework\Webapi\CustomAttributeTypeLocatorInterface | Interface was added. | +| Magento\Framework\Webapi\CustomAttribute\PreprocessorInterface | Interface was added. | +| Magento\Framework\Webapi\CustomAttribute\ServiceTypeListInterface | Interface was added. | +| Magento\Framework\Webapi\Rest\Request\DeserializerInterface | Interface was added. | +| Magento\GiftCardAccount\Api\GiftCardRedeemerInterface | Interface was added. | +| Magento\GiftCardAccount\Model\Spi\Data\UsageAttemptInterface | Interface was added. | +| Magento\GiftCardAccount\Model\Spi\GiftCardAccountManagerInterface | Interface was added. | +| Magento\GiftCardAccount\Model\Spi\GiftCardAccountResourceInterface | Interface was added. | +| Magento\GiftCardAccount\Model\Spi\UsageAttemptFactoryInterface | Interface was added. | +| Magento\GiftCardAccount\Model\Spi\UsageAttemptsManagerInterface | Interface was added. | +| Magento\GiftRegistry\Model\Attribute\ConfigInterface | Interface was added. | +| Magento\GraphQl\Controller\HttpHeaderProcessorInterface | Interface was added. | +| Magento\GraphQl\Controller\HttpRequestValidatorInterface | Interface was added. | +| Magento\GraphQl\Model\Query\ContextInterface | Interface was added. | +| Magento\GraphQl\Model\Query\ContextParametersInterface | Interface was added. | +| Magento\GraphQl\Model\Query\ContextParametersProcessorInterface | Interface was added. | +| Magento\ImportExport\Api\Data\ExtendedExportInfoInterface | Interface was added. | +| Magento\ImportExport\Model\Report\ReportProcessorInterface | Interface was added. | +| Magento\Indexer\Model\ModeSwitcherInterface | Interface was added. | +| Magento\Indexer\Model\Source\DataInterface | Interface was added. | +| Magento\Integration\Model\Oauth\Token\RequestLog\ReaderInterface | Interface was added. | +| Magento\Integration\Model\Oauth\Token\RequestLog\WriterInterface | Interface was added. | +| Magento\InventoryIndexer\Indexer\SelectBuilderInterface | Interface was added. | +| Magento\Invitation\Controller\Customer\AccountInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\Data\IsLoginAsCustomerEnabledForCustomerResultInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\GetLoggedAsCustomerAdminIdInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\GetLoggedAsCustomerCustomerIdInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\IsLoginAsCustomerEnabledForCustomerInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\SetLoggedAsCustomerAdminIdInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\SetLoggedAsCustomerCustomerIdInterface | Interface was added. | +| Magento\LoginAsCustomerAssistance\Api\ConfigInterface | Interface was added. | +| Magento\LoginAsCustomerAssistance\Api\IsAssistanceEnabledInterface | Interface was added. | +| Magento\LoginAsCustomerAssistance\Api\SetAssistanceInterface | Interface was added. | +| Magento\MediaContentApi\Api\GetAssetIdsByContentFieldInterface | Interface was added. | +| Magento\MediaContentApi\Api\UpdateContentAssetLinksInterface | Interface was added. | +| Magento\MediaContentApi\Model\GetAssetIdsByContentFieldInterface | Interface was added. | +| Magento\MediaContentApi\Model\SearchPatternConfigInterface | Interface was added. | +| Magento\MediaContentSynchronizationApi\Api\SynchronizeIdentitiesInterface | Interface was added. | +| Magento\MediaContentSynchronizationApi\Api\SynchronizeInterface | Interface was added. | +| Magento\MediaContentSynchronizationApi\Model\GetEntitiesInterface | Interface was added. | +| Magento\MediaGalleryApi\Api\SearchAssetsInterface | Interface was added. | +| Magento\MediaGalleryApi\Model\ExcludedPatternsConfigInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Api\AddMetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Api\Data\MetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Api\ExtractMetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\FileInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\ReadFileInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\ReadMetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\SegmentInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\WriteFileInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\WriteMetadataInterface | Interface was added. | +| Magento\MediaGalleryRenditionsApi\Api\GenerateRenditionsInterface | Interface was added. | +| Magento\MediaGalleryRenditionsApi\Api\GetRenditionPathInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Api\SynchronizeFilesInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Api\SynchronizeInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Model\CreateAssetFromFileInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Model\FetchBatchesInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Model\ImportFilesInterface | Interface was added. | +| Magento\MediaGalleryUiApi\Api\ConfigInterface | Interface was added. | +| Magento\Msrp\Pricing\MsrpPriceCalculatorInterface | Interface was added. | +| Magento\MultipleWishlist\Controller\IndexInterface | Interface was added. | +| Magento\MultipleWishlist\Model\Search\Strategy\StrategyInterface | Interface was added. | +| Magento\Newsletter\Model\SubscriptionManagerInterface | Interface was added. | +| Magento\PageCache\Model\Spi\PageCacheTagsPreprocessorInterface | Interface was added. | +| Magento\Payment\Api\Data\PaymentAdditionalInfoInterface | Interface was added. | +| Magento\Payment\Model\Method\TransparentInterface | Interface was added. | +| Magento\Paypal\Helper\Shortcut\ValidatorInterface | Interface was added. | +| Magento\Paypal\Model\Billing\Agreement\MethodInterface | Interface was added. | +| Magento\Paypal\Model\IpnInterface | Interface was added. | +| Magento\Paypal\Model\Payflow\Service\Response\Handler\HandlerInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\CartItem\DataProvider\CustomizableOptionValueInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\CartItem\DataProvider\Processor\ItemDataProcessorInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\BuyRequest\BuyRequestDataProviderInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\Payment\AdditionalDataProviderInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\SetShippingAddressesOnCartInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\SetShippingMethodsOnCartInterface | Interface was added. | +| Magento\Quote\Api\ChangeQuoteControlInterface | Interface was added. | +| Magento\Quote\Model\Cart\BuyRequest\BuyRequestDataProviderInterface | Interface was added. | +| Magento\Quote\Model\Product\QuoteItemsCleanerInterface | Interface was added. | +| Magento\Quote\Model\Quote\Address\CustomAttributeListInterface | Interface was added. | +| Magento\Quote\Model\Quote\Address\Total\CollectorInterface | Interface was added. | +| Magento\Quote\Model\Quote\Address\Total\ReaderInterface | Interface was added. | +| Magento\Quote\Model\Quote\Item\CartItemProcessorInterface | Interface was added. | +| Magento\Quote\Model\ValidationRules\QuoteValidationRuleInterface | Interface was added. | +| Magento\ReleaseNotification\Model\ContentProviderInterface | Interface was added. | +| Magento\RemoteStorage\Driver\DriverFactoryInterface | Interface was added. | +| Magento\RemoteStorage\Driver\RemoteDriverInterface | Interface was added. | +| Magento\RemoteStorage\FilesystemInterface | Interface was added. | +| Magento\RewardGraphQl\Model\Formatter\Customer\FormatterInterface | Interface was added. | +| Magento\Reward\Observer\PlaceOrder\RestrictionInterface | Interface was added. | +| Magento\Rma\Model\Spi\CommentResourceInterface | Interface was added. | +| Magento\Rma\Model\Spi\RmaResourceInterface | Interface was added. | +| Magento\Rma\Model\Spi\TrackResourceInterface | Interface was added. | +| Magento\SalesGraphQl\Model\Shipment\Item\FormatterInterface | Interface was added. | +| Magento\SalesRule\Api\Data\DiscountDataInterface | Interface was added. | +| Magento\SalesRule\Api\Data\RuleDiscountInterface | Interface was added. | +| Magento\SalesRule\Model\Spi\CodeLimitManagerInterface | Interface was added. | +| Magento\SalesRule\Model\Spi\QuoteResetAppliedRulesInterface | Interface was added. | +| Magento\SalesRule\Model\Spi\RuleQuoteRecollectTotalsInterface | Interface was added. | +| Magento\Sales\Api\OrderCustomerDelegateInterface | Interface was added. | +| Magento\Sales\Api\PaymentFailuresInterface | Interface was added. | +| Magento\Sales\Controller\AbstractController\OrderLoaderInterface | Interface was added. | +| Magento\Sales\Controller\AbstractController\OrderViewAuthorizationInterface | Interface was added. | +| Magento\Sales\Controller\OrderInterface | Interface was added. | +| Magento\Sales\Model\Order\Creditmemo\CreditmemoValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Creditmemo\ItemCreationValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Creditmemo\SenderInterface | Interface was added. | +| Magento\Sales\Model\Order\Email\Container\IdentityInterface | Interface was added. | +| Magento\Sales\Model\Order\Invoice\InvoiceValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Invoice\SenderInterface | Interface was added. | +| Magento\Sales\Model\Order\OrderValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Payment\State\CommandInterface | Interface was added. | +| Magento\Sales\Model\Order\Payment\Transaction\BuilderInterface | Interface was added. | +| Magento\Sales\Model\Order\Payment\Transaction\ManagerInterface | Interface was added. | +| Magento\Sales\Model\Order\Shipment\SenderInterface | Interface was added. | +| Magento\Sales\Model\Order\Shipment\ShipmentValidatorInterface | Interface was added. | +| Magento\Sales\Model\ResourceModel\Order\CollectionFactoryInterface | Interface was added. | +| Magento\Sales\Model\ResourceModel\Provider\NotSyncedDataProviderInterface | Interface was added. | +| Magento\Sales\Model\Spi\CreditmemoCommentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\CreditmemoItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\CreditmemoResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\InvoiceCommentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\InvoiceItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\InvoiceResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderAddressResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderPaymentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderStatusHistoryResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentCommentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentTrackResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\TransactionResourceInterface | Interface was added. | +| Magento\Sales\Model\ValidatorInterface | Interface was added. | +| Magento\ScheduledImportExport\Model\Scheduled\Operation\OperationInterface | Interface was added. | +| Magento\Search\Model\SearchEngine\ValidatorInterface | Interface was added. | +| Magento\Search\Setup\InstallConfigInterface | Interface was added. | +| Magento\Security\Api\Data\UserExpirationInterface | Interface was added. | +| Magento\Shipping\Model\Carrier\Source\GenericInterface | Interface was added. | +| Magento\Staging\Block\Adminhtml\Update\Entity\EntityProviderInterface | Interface was added. | +| Magento\Staging\Block\Adminhtml\Update\Entity\StoreIdProviderInterface | Interface was added. | +| Magento\Staging\Model\Entity\BuilderInterface | Interface was added. | +| Magento\Staging\Model\Entity\HydratorInterface | Interface was added. | +| Magento\Staging\Model\Entity\PersisterInterface | Interface was added. | +| Magento\Staging\Model\Entity\RemoverInterface | Interface was added. | +| Magento\Staging\Model\Entity\RetrieverInterface | Interface was added. | +| Magento\Staging\Model\Entity\Update\Action\TransactionExecutorInterface | Interface was added. | +| Magento\Staging\Model\Operation\Update\UpdateProcessorInterface | Interface was added. | +| Magento\Staging\Model\StagingApplierInterface | Interface was added. | +| Magento\Staging\Model\Update\Grid\ActionDataProviderInterface | Interface was added. | +| Magento\Staging\Model\Update\IncludesInterface | Interface was added. | +| Magento\Staging\Model\VersionHistoryInterface | Interface was added. | +| Magento\Staging\Ui\Component\Listing\Column\Entity\UrlProviderInterface | Interface was added. | +| Magento\Store\Model\Config\Importer\Processor\ProcessorInterface | Interface was added. | +| Magento\Store\Model\StoreResolver\ReaderInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcherInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\ContextInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataPostprocessorInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataPreprocessorInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataSerializerInterface | Interface was added. | +| Magento\Support\Model\Report\ConfigInterface | Interface was added. | +| Magento\Swat\Api\Data\JwtInterface | Interface was added. | +| Magento\Swat\Api\Data\SwatKeyPairInterface | Interface was added. | +| Magento\Tax\Api\TaxAddressManagerInterface | Interface was added. | +| Magento\Tax\Model\System\Message\NotificationInterface | Interface was added. | +| Magento\Tax\Model\TaxClass\Type\TypeInterface | Interface was added. | +| Magento\Theme\Model\Design\Config\MetadataProviderInterface | Interface was added. | +| Magento\Theme\Model\Theme\StoreThemesResolverInterface | Interface was added. | +| Magento\Ui\Component\Form\Element\DataType\DataTypeInterface | Interface was added. | +| Magento\Ui\Component\Layout\Tabs\TabInterface | Interface was added. | +| Magento\Ui\Component\Wysiwyg\ConfigInterface | Interface was added. | +| Magento\Ui\Config\Argument\ParserInterface | Interface was added. | +| Magento\Ui\Config\ConverterInterface | Interface was added. | +| Magento\Ui\Controller\UiActionInterface | Interface was added. | +| Magento\Ui\DataProvider\AddFieldToCollectionInterface | Interface was added. | +| Magento\Ui\DataProvider\AddFilterToCollectionInterface | Interface was added. | +| Magento\Ui\DataProvider\Mapper\MapperInterface | Interface was added. | +| Magento\Ui\DataProvider\Modifier\PoolInterface | Interface was added. | +| Magento\Ui\Model\ColorPicker\ModeInterface | Interface was added. | +| Magento\Ui\Model\UrlInput\ConfigInterface | Interface was added. | +| Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlLocatorInterface | Interface was added. | +| Magento\User\Model\Spi\NotificationExceptionInterface | Interface was added. | +| Magento\User\Model\Spi\NotificatorInterface | Interface was added. | +| Magento\Vault\Block\Customer\IconInterface | Interface was added. | +| Magento\VersionsCms\Model\CurrentNodeResolverInterface | Interface was added. | +| Magento\VersionsCms\Model\Hierarchy\ConfigInterface | Interface was added. | +| Magento\VisualMerchandiser\Api\RuleFactoryPoolInterface | Interface was added. | +| Magento\Webapi\Controller\Rest\RequestProcessorInterface | Interface was added. | +| Magento\Widget\Block\BlockInterface | Interface was added. | +| Magento\Wishlist\Controller\IndexInterface | Interface was added. | +| Magento\Wishlist\Controller\WishlistProviderInterface | Interface was added. | +| Magento\Wishlist\Model\AuthenticationStateInterface | Interface was added. | +| Magento\Wishlist\Model\ResourceModel\Item\Product\CollectionBuilderInterface | Interface was added. | +| Magento\Wishlist\Model\Wishlist\BuyRequest\BuyRequestDataProviderInterface | Interface was added. | diff --git a/src/_includes/backward-incompatible-changes/open-source/2.4.4-2.4.5.md b/src/_includes/backward-incompatible-changes/open-source/2.4.4-2.4.5.md new file mode 100644 index 00000000000..c752e5cc27c --- /dev/null +++ b/src/_includes/backward-incompatible-changes/open-source/2.4.4-2.4.5.md @@ -0,0 +1,781 @@ +#### Class changes {#ce-244-245-class} + +| What changed | How it changed | +| -------------------------------------------------------------------------------- | ------------------------------------ | +| Magento\CatalogInventory\Model\Source\Stock::\_\_construct | [public] Method has been added. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions::formatPrice | [protected] Method has been removed. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Eav::formatPrice | [protected] Method has been removed. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\General::formatPrice | [protected] Method has been removed. | +| Magento\GoogleGtag\Block\Ga | Class was added. | + +#### Database changes {#ce-244-245-database} + +| What changed | How it changed | +| ------------------------------------------------- | ----------------------- | +| catalog_product_index_price_tmp/PRIMARY | Primary key was changed | +| catalog_product_index_price_tmp/id | Column was added | +| customer_eav_attribute/grid_filter_condition_type | Column was added | + +#### System changes {#ce-244-245-system} + +| What changed | How it changed | +| ---------------------------------------------------------------- | ------------------------ | +| google/gtag | A group-node was added | +| google/gtag/adwords | A group-node was added | +| google/gtag/adwords/active | A field-node was added | +| google/gtag/adwords/conversion_id | A field-node was added | +| google/gtag/adwords/conversion_label | A field-node was added | +| google/gtag/analytics4 | A group-node was added | +| google/gtag/analytics4/active | A field-node was added | +| google/gtag/analytics4/experiments | A field-node was added | +| google/gtag/analytics4/measurement_id | A field-node was added | +| web_api | A section-node was added | +| web_api/graphql | A group-node was added | +| web_api/graphql/include_dynamic_attributes_as_entity_type_fields | A field-node was added | +| webapi/graphql_session | A group-node was added | +| webapi/graphql_session/disabled | A field-node was added | + +#### Class API membership changes {#ce-244-245-class-api-membership} + +| What changed | How it changed | +| ----------------------------------------------------------------------------- | ---------------- | +| Magento\Analytics\ReportXml\DB\SelectBuilder | Class was added. | +| Magento\CatalogGraphQl\Model\Resolver\Products\SearchResult | Class was added. | +| Magento\Catalog\Block\Adminhtml\Product\Edit\Button\Generic | Class was added. | +| Magento\Catalog\Block\Product\ImageFactory | Class was added. | +| Magento\Catalog\Controller\Adminhtml\Product | Class was added. | +| Magento\Catalog\Model\Config | Class was added. | +| Magento\Catalog\Model\Layer\Filter\Item | Class was added. | +| Magento\Catalog\Model\Layer\Resolver | Class was added. | +| Magento\Catalog\Model\Product\Type\Price\Factory | Class was added. | +| Magento\Catalog\Model\ResourceModel\Product\Indexer\Price\IndexTableStructure | Class was added. | +| Magento\Catalog\Pricing\Price\FinalPrice | Class was added. | +| Magento\Checkout\Api\Exception\PaymentProcessingRateLimitExceededException | Class was added. | +| Magento\Checkout\Controller\Cart | Class was added. | +| Magento\Checkout\Model\Type\Onepage | Class was added. | +| Magento\Cms\Model\Template\FilterProvider | Class was added. | +| Magento\Config\Block\System\Config\Form\Field\Factory | Class was added. | +| Magento\Config\Block\System\Config\Form\Fieldset\Factory | Class was added. | +| Magento\Customer\Block\Adminhtml\Edit\GenericButton | Class was added. | +| Magento\Customer\Controller\Adminhtml\Index | Class was added. | +| Magento\Customer\Controller\RegistryConstants | Class was added. | +| Magento\Customer\Model\Context | Class was added. | +| Magento\Customer\Model\CustomerRegistry | Class was added. | +| Magento\Customer\Model\Metadata\FormFactory | Class was added. | +| Magento\Customer\Model\Url | Class was added. | +| Magento\Customer\Setup\CustomerSetup | Class was added. | +| Magento\Deploy\Package\Package | Class was added. | +| Magento\Deploy\Package\PackageFile | Class was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\AttributeAdapter | Class was added. | +| Magento\Framework\AclFactory | Class was added. | +| Magento\Framework\Acl\AclResourceFactory | Class was added. | +| Magento\Framework\Amqp\ConfigFactory | Class was added. | +| Magento\Framework\Api\AbstractSimpleObject | Class was added. | +| Magento\Framework\Api\ExtensionAttribute\JoinData | Class was added. | +| Magento\Framework\Api\ExtensionAttribute\JoinDataInterfaceFactory | Class was added. | +| Magento\Framework\Api\SearchCriteriaBuilder | Class was added. | +| Magento\Framework\Api\Search\DocumentFactory | Class was added. | +| Magento\Framework\Api\Search\SearchCriteriaFactory | Class was added. | +| Magento\Framework\App\Area | Class was added. | +| Magento\Framework\App\Cache\Type\Config | Class was added. | +| Magento\Framework\App\Config\ValueFactory | Class was added. | +| Magento\Framework\App\Filesystem\DirectoryList | Class was added. | +| Magento\Framework\App\Http\Context | Class was added. | +| Magento\Framework\App\Request\Http | Class was added. | +| Magento\Framework\App\Request\InvalidRequestException | Class was added. | +| Magento\Framework\App\Response\Http | Class was added. | +| Magento\Framework\App\Response\Http\FileFactory | Class was added. | +| Magento\Framework\Config\Data\ConfigDataFactory | Class was added. | +| Magento\Framework\Config\ViewFactory | Class was added. | +| Magento\Framework\Console\Cli | Class was added. | +| Magento\Framework\Controller\Result\Forward | Class was added. | +| Magento\Framework\Controller\Result\JsonFactory | Class was added. | +| Magento\Framework\Controller\Result\Raw | Class was added. | +| Magento\Framework\Convert\DataObject | Class was added. | +| Magento\Framework\DB\Adapter\Pdo\MysqlFactory | Class was added. | +| Magento\Framework\DB\Ddl\TriggerFactory | Class was added. | +| Magento\Framework\DB\Helper | Class was added. | +| Magento\Framework\DB\Helper\AbstractHelper | Class was added. | +| Magento\Framework\DB\Transaction | Class was added. | +| Magento\Framework\DataObject\Factory | Class was added. | +| Magento\Framework\Data\FormFactory | Class was added. | +| Magento\Framework\Data\Form\Element\Factory | Class was added. | +| Magento\Framework\Data\Form\Element\Image | Class was added. | +| Magento\Framework\Data\TreeFactory | Class was added. | +| Magento\Framework\Data\Tree\Dbp | Class was added. | +| Magento\Framework\Data\Tree\NodeFactory | Class was added. | +| Magento\Framework\EventFactory | Class was added. | +| Magento\Framework\Event\ObserverFactory | Class was added. | +| Magento\Framework\File\Csv | Class was added. | +| Magento\Framework\File\UploaderFactory | Class was added. | +| Magento\Framework\Filesystem\DirectoryList | Class was added. | +| Magento\Framework\Filesystem\Directory\ReadFactory | Class was added. | +| Magento\Framework\Filesystem\Io\File | Class was added. | +| Magento\Framework\GraphQl\Config\Element\Field | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlAuthenticationException | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlAuthorizationException | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlInputException | Class was added. | +| Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException | Class was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchResponse | Class was added. | +| Magento\Framework\GraphQl\Query\Resolver\Value | Class was added. | +| Magento\Framework\GraphQl\Schema | Class was added. | +| Magento\Framework\GraphQl\Schema\Type\ResolveInfo | Class was added. | +| Magento\Framework\HTTP\Adapter\Curl | Class was added. | +| Magento\Framework\HTTP\AsyncClient\Request | Class was added. | +| Magento\Framework\HTTP\AsyncClient\Response | Class was added. | +| Magento\Framework\HTTP\Client\Curl | Class was added. | +| Magento\Framework\HTTP\PhpEnvironment\RemoteAddress | Class was added. | +| Magento\Framework\HTTP\PhpEnvironment\Request | Class was added. | +| Magento\Framework\Image\AdapterFactory | Class was added. | +| Magento\Framework\Image\Adapter\AbstractAdapter | Class was added. | +| Magento\Framework\Logger\Handler\Base | Class was added. | +| Magento\Framework\Mail\Address | Class was added. | +| Magento\Framework\Mail\TransportInterfaceFactory | Class was added. | +| Magento\Framework\Message\CollectionFactory | Class was added. | +| Magento\Framework\Module\Dir | Class was added. | +| Magento\Framework\Module\Manager | Class was added. | +| Magento\Framework\Module\Setup\MigrationFactory | Class was added. | +| Magento\Framework\Profiler\Driver\Standard\Stat | Class was added. | +| Magento\Framework\Session\Config | Class was added. | +| Magento\Framework\Session\SessionManager | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\StatementAggregator | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Diff\DiffFactory | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Schema | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Table | Class was added. | +| Magento\Framework\Setup\Declaration\Schema\ElementHistory | Class was added. | +| Magento\Framework\Url | Class was added. | +| Magento\Framework\UrlFactory | Class was added. | +| Magento\Framework\Url\Helper\Data | Class was added. | +| Magento\Framework\ValidatorFactory | Class was added. | +| Magento\Framework\View\Asset | Class was added. | +| Magento\Framework\View\Asset\FileFactory | Class was added. | +| Magento\Framework\View\Asset\File\FallbackContextFactory | Class was added. | +| Magento\Framework\View\Element\Html\Select | Class was added. | +| Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider | Class was added. | +| Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult | Class was added. | +| Magento\Framework\View\Helper\SecureHtmlRender\EventHandlerData | Class was added. | +| Magento\Framework\View\Helper\SecureHtmlRender\TagData | Class was added. | +| Magento\Framework\View\LayoutFactory | Class was added. | +| Magento\Framework\View\Layout\Generator\ContextFactory | Class was added. | +| Magento\Framework\View\Layout\Reader\ContextFactory | Class was added. | +| Magento\Framework\View\PageLayout\Config | Class was added. | +| Magento\Framework\View\Page\ConfigFactory | Class was added. | +| Magento\Framework\Webapi\Exception | Class was added. | +| Magento\Framework\Webapi\Rest\Request | Class was added. | +| Magento\ImportExport\Model\Export\Factory | Class was added. | +| Magento\Indexer\Model\DimensionModes | Class was added. | +| Magento\Payment\Gateway\Config\Config | Class was added. | +| Magento\Paypal\Model\Billing\AbstractAgreement | Class was added. | +| Magento\Quote\Model\Cart\Data\CartItem | Class was added. | +| Magento\Quote\Model\Quote\Address\RateCollectorInterfaceFactory | Class was added. | +| Magento\Quote\Model\Quote\Item\CartItemOptionsProcessor | Class was added. | +| Magento\Quote\Model\Quote\Item\Option | Class was added. | +| Magento\Quote\Setup\QuoteSetup | Class was added. | +| Magento\SalesRule\Api\Exception\CodeRequestLimitException | Class was added. | +| Magento\SalesRule\Model\Validator | Class was added. | +| Magento\Sales\Controller\Adminhtml\Order | Class was added. | +| Magento\Sales\Model\Order\CreditmemoFactory | Class was added. | +| Magento\Sales\Model\Order\Email\Sender\InvoiceSender | Class was added. | +| Magento\Sales\Model\Order\Email\Sender\OrderSender | Class was added. | +| Magento\Sales\Model\Order\Pdf\Total\DefaultTotal | Class was added. | +| Magento\Sales\Model\ResourceModel\Order\CollectionFactory | Class was added. | +| Magento\Sales\Model\ResourceModel\Order\Collection\Factory | Class was added. | +| Magento\Sales\Model\Service\InvoiceService | Class was added. | +| Magento\Sales\Setup\SalesSetup | Class was added. | +| Magento\Store\Ui\Component\Listing\Column\Store\Options | Class was added. | +| Magento\Ui\Component\Control\Container | Class was added. | +| Magento\Ui\Component\Form\Fieldset\Factory | Class was added. | +| Magento\Wishlist\Model\Wishlist\Data\WishlistItem | Class was added. | + +#### Interface API membership changes {#ce-244-245-interface-api-membership} + +| What changed | How it changed | +| ------------------------------------------------------------------------------------------------------------ | -------------------- | +| Magento\AdvancedSearch\Block\SearchDataInterface | Interface was added. | +| Magento\Analytics\Api\Data\LinkInterface | Interface was added. | +| Magento\Analytics\Api\LinkProviderInterface | Interface was added. | +| Magento\Analytics\Model\Connector\CommandInterface | Interface was added. | +| Magento\Analytics\Model\ExportDataHandlerInterface | Interface was added. | +| Magento\Analytics\Model\ReportWriterInterface | Interface was added. | +| Magento\Analytics\ReportXml\DB\Assembler\AssemblerInterface | Interface was added. | +| Magento\Backend\Model\Image\UploadResizeConfigInterface | Interface was added. | +| Magento\Backend\Model\Search\Config\Structure\ElementBuilderInterface | Interface was added. | +| Magento\Bundle\Pricing\Adjustment\BundleCalculatorInterface | Interface was added. | +| Magento\CardinalCommerce\Model\Response\JwtParserInterface | Interface was added. | +| Magento\CardinalCommerce\Model\Response\JwtPayloadValidatorInterface | Interface was added. | +| Magento\CatalogGraphQl\DataProvider\Product\LayeredNavigation\LayerBuilderInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Categories\DataProvider\Category\CollectionProcessorInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Product\Price\ProviderInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface | Interface was added. | +| Magento\CatalogGraphQl\Model\Resolver\Products\Query\ProductQueryInterface | Interface was added. | +| Magento\CatalogImportExport\Model\Export\ProductFilterInterface | Interface was added. | +| Magento\CatalogRule\Model\Indexer\IndexerTableSwapperInterface | Interface was added. | +| Magento\CatalogSearch\Model\Adapter\Aggregation\RequestCheckerInterface | Interface was added. | +| Magento\CatalogSearch\Model\Advanced\ProductCollectionPrepareStrategyInterface | Interface was added. | +| Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchCriteriaResolverInterface | Interface was added. | +| Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierInterface | Interface was added. | +| Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\TotalRecordsResolverInterface | Interface was added. | +| Magento\CatalogSearch\Model\Search\ItemCollectionProviderInterface | Interface was added. | +| Magento\CatalogUrlRewrite\Model\Map\DatabaseMapInterface | Interface was added. | +| Magento\CatalogUrlRewrite\Model\Map\HashMapInterface | Interface was added. | +| Magento\Catalog\Block\Product\AwareInterface | Interface was added. | +| Magento\Catalog\Block\Product\ReviewRendererInterface | Interface was added. | +| Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper\HandlerInterface | Interface was added. | +| Magento\Catalog\Controller\Product\View\ViewInterface | Interface was added. | +| Magento\Catalog\Model\Attribute\LockValidatorInterface | Interface was added. | +| Magento\Catalog\Model\Config\Source\ProductPriceOptionsInterface | Interface was added. | +| Magento\Catalog\Model\Entity\Product\Attribute\Group\AttributeMapperInterface | Interface was added. | +| Magento\Catalog\Model\Indexer\Product\Flat\TableDataInterface | Interface was added. | +| Magento\Catalog\Model\Layer\CollectionFilterInterface | Interface was added. | +| Magento\Catalog\Model\Layer\FilterableAttributeListInterface | Interface was added. | +| Magento\Catalog\Model\Layer\ItemCollectionProviderInterface | Interface was added. | +| Magento\Catalog\Model\Layer\StateKeyInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\CollectionProviderInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\Converter\ConverterInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\Data\ListCriteriaInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\Data\ListResultInterface | Interface was added. | +| Magento\Catalog\Model\ProductLink\MapProviderInterface | Interface was added. | +| Magento\Catalog\Model\ProductOptions\ConfigInterface | Interface was added. | +| Magento\Catalog\Model\Product\Condition\ConditionInterface | Interface was added. | +| Magento\Catalog\Model\Product\Configuration\Item\Option\OptionInterface | Interface was added. | +| Magento\Catalog\Model\Product\Media\ConfigInterface | Interface was added. | +| Magento\Catalog\Model\Product\Pricing\Renderer\SalableResolverInterface | Interface was added. | +| Magento\Catalog\Model\ResourceModel\Product\Indexer\Price\PriceModifierInterface | Interface was added. | +| Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderInterface | Interface was added. | +| Magento\Catalog\Pricing\Price\ConfiguredPriceInterface | Interface was added. | +| Magento\Catalog\Pricing\Price\MinimalPriceCalculatorInterface | Interface was added. | +| Magento\Catalog\Pricing\Price\SpecialPriceInterface | Interface was added. | +| Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Eav\WysiwygConfigDataProcessorInterface | Interface was added. | +| Magento\CheckoutAgreements\Model\AgreementsProviderInterface | Interface was added. | +| Magento\Checkout\Api\PaymentProcessingRateLimiterInterface | Interface was added. | +| Magento\Checkout\Controller\Express\RedirectLoginInterface | Interface was added. | +| Magento\Checkout\CustomerData\ItemPoolInterface | Interface was added. | +| Magento\Cms\Model\PageRepository\ValidatorInterface | Interface was added. | +| Magento\Cms\Model\Page\CustomLayoutManagerInterface | Interface was added. | +| Magento\Cms\Model\Page\CustomLayoutRepositoryInterface | Interface was added. | +| Magento\Cms\Model\Page\CustomLayout\Data\CustomLayoutSelectedInterface | Interface was added. | +| Magento\Cms\Ui\Component\AddFilterInterface | Interface was added. | +| Magento\ConfigurableProduct\Model\ResourceModel\Attribute\OptionSelectBuilderInterface | Interface was added. | +| Magento\Cron\Model\DeadlockRetrierInterface | Interface was added. | +| Magento\Csp\Api\CspAwareActionInterface | Interface was added. | +| Magento\Csp\Api\CspRendererInterface | Interface was added. | +| Magento\Csp\Api\Data\ModeConfiguredInterface | Interface was added. | +| Magento\Csp\Api\Data\PolicyInterface | Interface was added. | +| Magento\Csp\Api\InlineUtilInterface | Interface was added. | +| Magento\Csp\Api\ModeConfigManagerInterface | Interface was added. | +| Magento\Csp\Api\PolicyCollectorInterface | Interface was added. | +| Magento\Csp\Api\PolicyRendererInterface | Interface was added. | +| Magento\Csp\Model\Collector\Config\PolicyReaderInterface | Interface was added. | +| Magento\Csp\Model\Collector\MergerInterface | Interface was added. | +| Magento\Csp\Model\Policy\SimplePolicyInterface | Interface was added. | +| Magento\Customer\Api\AccountDelegationInterface | Interface was added. | +| Magento\Customer\Api\SessionCleanerInterface | Interface was added. | +| Magento\Customer\Block\Address\Renderer\RendererInterface | Interface was added. | +| Magento\Customer\Controller\AccountInterface | Interface was added. | +| Magento\Customer\CustomerData\JsLayoutDataProviderPoolInterface | Interface was added. | +| Magento\Customer\CustomerData\SectionPoolInterface | Interface was added. | +| Magento\Customer\Model\Customer\Attribute\Source\GroupSourceLoggedInOnlyInterface | Interface was added. | +| Magento\Deploy\Collector\CollectorInterface | Interface was added. | +| Magento\Deploy\Console\Command\App\SensitiveConfigSet\CollectorInterface | Interface was added. | +| Magento\Deploy\Package\BundleInterface | Interface was added. | +| Magento\Deploy\Package\Processor\ProcessorInterface | Interface was added. | +| Magento\Deploy\Source\SourceInterface | Interface was added. | +| Magento\Deploy\Strategy\StrategyInterface | Interface was added. | +| Magento\Directory\Model\Country\Postcode\ConfigInterface | Interface was added. | +| Magento\Directory\Model\Country\Postcode\ValidatorInterface | Interface was added. | +| Magento\Downloadable\Api\DomainManagerInterface | Interface was added. | +| Magento\Downloadable\Pricing\Price\LinkPriceInterface | Interface was added. | +| Magento\Eav\Model\Entity\AttributeLoaderInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\AttributeInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\Backend\BackendInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\Source\SpecificSourceInterface | Interface was added. | +| Magento\Eav\Model\Entity\Attribute\UniqueValidationInterface | Interface was added. | +| Magento\Eav\Model\Entity\Setup\PropertyMapperInterface | Interface was added. | +| Magento\Eav\Model\ResourceModel\Attribute\DefaultEntityAttributes\ProviderInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProviderInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\ConverterInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\ResolverInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\ResolverInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\ResolverInterface | Interface was added. | +| Magento\Elasticsearch\Model\Adapter\FieldsMappingPreprocessorInterface | Interface was added. | +| Magento\Elasticsearch\SearchAdapter\QueryAwareInterface | Interface was added. | +| Magento\Elasticsearch\SearchAdapter\Query\ValueTransformerInterface | Interface was added. | +| Magento\Framework\Amqp\Topology\BindingInstallerInterface | Interface was added. | +| Magento\Framework\Api\AttributeTypeResolverInterface | Interface was added. | +| Magento\Framework\Api\CriteriaInterface | Interface was added. | +| Magento\Framework\Api\SearchCriteria\CollectionProcessor\ConditionProcessor\CustomConditionInterface | Interface was added. | +| Magento\Framework\Api\SearchCriteria\CollectionProcessor\ConditionProcessor\CustomConditionProviderInterface | Interface was added. | +| Magento\Framework\Api\Search\AggregationInterface | Interface was added. | +| Magento\Framework\Api\Search\AggregationValueInterface | Interface was added. | +| Magento\Framework\Api\Search\BucketInterface | Interface was added. | +| Magento\Framework\Api\Search\DocumentInterface | Interface was added. | +| Magento\Framework\Api\Search\ReportingInterface | Interface was added. | +| Magento\Framework\Api\SimpleBuilderInterface | Interface was added. | +| Magento\Framework\App\Action\HttpConnectActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpDeleteActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpGetActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpOptionsActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPatchActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPostActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPropfindActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpPutActionInterface | Interface was added. | +| Magento\Framework\App\Action\HttpTraceActionInterface | Interface was added. | +| Magento\Framework\App\AreaInterface | Interface was added. | +| Magento\Framework\App\Config\CommentInterface | Interface was added. | +| Magento\Framework\App\Config\CommentParserInterface | Interface was added. | +| Magento\Framework\App\Config\ConfigResource\ConfigInterface | Interface was added. | +| Magento\Framework\App\Config\ConfigSourceInterface | Interface was added. | +| Magento\Framework\App\Config\ConfigTypeInterface | Interface was added. | +| Magento\Framework\App\Config\Reader\Source\SourceInterface | Interface was added. | +| Magento\Framework\App\Config\Scope\ReaderInterface | Interface was added. | +| Magento\Framework\App\Config\Spi\PostProcessorInterface | Interface was added. | +| Magento\Framework\App\Config\Spi\PreProcessorInterface | Interface was added. | +| Magento\Framework\App\Config\ValueInterface | Interface was added. | +| Magento\Framework\App\CsrfAwareActionInterface | Interface was added. | +| Magento\Framework\App\DefaultPathInterface | Interface was added. | +| Magento\Framework\App\DeploymentConfig\ImporterInterface | Interface was added. | +| Magento\Framework\App\DeploymentConfig\ValidatorInterface | Interface was added. | +| Magento\Framework\App\DeploymentConfig\Writer\FormatterInterface | Interface was added. | +| Magento\Framework\App\DesignInterface | Interface was added. | +| Magento\Framework\App\EnvironmentInterface | Interface was added. | +| Magento\Framework\App\ExceptionHandlerInterface | Interface was added. | +| Magento\Framework\App\FeedFactoryInterface | Interface was added. | +| Magento\Framework\App\FeedInterface | Interface was added. | +| Magento\Framework\App\HttpRequestInterface | Interface was added. | +| Magento\Framework\App\ObjectManager\ConfigWriterInterface | Interface was added. | +| Magento\Framework\App\PageCache\NotCacheableInterface | Interface was added. | +| Magento\Framework\App\Request\ValidatorInterface | Interface was added. | +| Magento\Framework\App\ResourceConnection\ConfigInterface | Interface was added. | +| Magento\Framework\App\ResourceConnection\ConnectionAdapterInterface | Interface was added. | +| Magento\Framework\App\Response\FileInterface | Interface was added. | +| Magento\Framework\App\Response\HeaderProvider\HeaderProviderInterface | Interface was added. | +| Magento\Framework\App\Response\RedirectInterface | Interface was added. | +| Magento\Framework\App\RouterInterface | Interface was added. | +| Magento\Framework\App\RouterListInterface | Interface was added. | +| Magento\Framework\App\Router\NoRouteHandlerInterface | Interface was added. | +| Magento\Framework\App\Router\PathConfigInterface | Interface was added. | +| Magento\Framework\App\Rss\RssManagerInterface | Interface was added. | +| Magento\Framework\App\Rss\UrlBuilderInterface | Interface was added. | +| Magento\Framework\App\ScopeFallbackResolverInterface | Interface was added. | +| Magento\Framework\App\ScopeResolverInterface | Interface was added. | +| Magento\Framework\App\ScopeTreeProviderInterface | Interface was added. | +| Magento\Framework\App\ScopeValidatorInterface | Interface was added. | +| Magento\Framework\App\Scope\ValidatorInterface | Interface was added. | +| Magento\Framework\App\View\Asset\MaterializationStrategy\StrategyInterface | Interface was added. | +| Magento\Framework\App\View\Deployment\Version\StorageInterface | Interface was added. | +| Magento\Framework\Async\CancelableDeferredInterface | Interface was added. | +| Magento\Framework\Async\DeferredInterface | Interface was added. | +| Magento\Framework\Autoload\AutoloaderInterface | Interface was added. | +| Magento\Framework\Backup\SourceFileInterface | Interface was added. | +| Magento\Framework\Cache\ConfigInterface | Interface was added. | +| Magento\Framework\Cache\StaleCacheNotifierInterface | Interface was added. | +| Magento\Framework\Code\Generator\CodeGeneratorInterface | Interface was added. | +| Magento\Framework\Code\Minifier\AdapterInterface | Interface was added. | +| Magento\Framework\Code\Reader\ClassReaderInterface | Interface was added. | +| Magento\Framework\Code\ValidatorInterface | Interface was added. | +| Magento\Framework\Component\ComponentRegistrarInterface | Interface was added. | +| Magento\Framework\Crontab\CrontabManagerInterface | Interface was added. | +| Magento\Framework\Crontab\TasksProviderInterface | Interface was added. | +| Magento\Framework\Css\PreProcessor\ErrorHandlerInterface | Interface was added. | +| Magento\Framework\DB\DataConverter\DataConverterInterface | Interface was added. | +| Magento\Framework\DB\LoggerInterface | Interface was added. | +| Magento\Framework\DB\MapperInterface | Interface was added. | +| Magento\Framework\DB\QueryInterface | Interface was added. | +| Magento\Framework\DB\Query\BatchIteratorInterface | Interface was added. | +| Magento\Framework\DB\Select\QueryModifierInterface | Interface was added. | +| Magento\Framework\DB\Select\RendererInterface | Interface was added. | +| Magento\Framework\DB\Sequence\SequenceInterface | Interface was added. | +| Magento\Framework\DB\Sql\ExpressionInterface | Interface was added. | +| Magento\Framework\DataObject\IdentityGeneratorInterface | Interface was added. | +| Magento\Framework\DataObject\IdentityInterface | Interface was added. | +| Magento\Framework\DataObject\IdentityValidatorInterface | Interface was added. | +| Magento\Framework\DataObject\KeyValueObjectInterface | Interface was added. | +| Magento\Framework\Data\CollectionDataSourceInterface | Interface was added. | +| Magento\Framework\Data\CollectionModifierInterface | Interface was added. | +| Magento\Framework\Data\Collection\Db\FetchStrategyInterface | Interface was added. | +| Magento\Framework\Data\Collection\EntityFactoryInterface | Interface was added. | +| Magento\Framework\Data\SearchResultInterface | Interface was added. | +| Magento\Framework\Data\SearchResultProcessorInterface | Interface was added. | +| Magento\Framework\Data\ValueSourceInterface | Interface was added. | +| Magento\Framework\Encryption\Adapter\EncryptionAdapterInterface | Interface was added. | +| Magento\Framework\Event\ConfigInterface | Interface was added. | +| Magento\Framework\Event\InvokerInterface | Interface was added. | +| Magento\Framework\Event\ManagerInterface | Interface was added. | +| Magento\Framework\Exception\TemporaryStateExceptionInterface | Interface was added. | +| Magento\Framework\Filesystem\Directory\PathValidatorInterface | Interface was added. | +| Magento\Framework\Filesystem\DriverPoolInterface | Interface was added. | +| Magento\Framework\Filesystem\File\ReadInterface | Interface was added. | +| Magento\Framework\Filter\DirectiveProcessorInterface | Interface was added. | +| Magento\Framework\Filter\DirectiveProcessor\FilterInterface | Interface was added. | +| Magento\Framework\Filter\FactoryInterface | Interface was added. | +| Magento\Framework\Filter\FilterManager\ConfigInterface | Interface was added. | +| Magento\Framework\Filter\SimpleDirective\ProcessorInterface | Interface was added. | +| Magento\Framework\Filter\VariableResolverInterface | Interface was added. | +| Magento\Framework\GraphQlSchemaStitching\GraphQlReader\TypeMetaReaderInterface | Interface was added. | +| Magento\Framework\GraphQl\ConfigInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\ConfigElementFactoryInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\ConfigElementInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\FieldInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\OutputFieldInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\TypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Config\Element\UnionInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\ErrorHandlerInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\ResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\Argument\FieldEntityAttributesInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\ArgumentApplierInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchRequestItemInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\BatchServiceContractResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\ContextInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\IdentityInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\ResolveRequestInterface | Interface was added. | +| Magento\Framework\GraphQl\Query\Resolver\TypeResolverInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\SchemaGeneratorInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\TypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\Entity\MapperInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\Enum\DataMapperInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\InputTypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\OutputTypeInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\Output\ElementMapper\FormatterInterface | Interface was added. | +| Magento\Framework\GraphQl\Schema\Type\WrappedTypeInterface | Interface was added. | +| Magento\Framework\HTTP\AsyncClientInterface | Interface was added. | +| Magento\Framework\HTTP\AsyncClient\HttpResponseDeferredInterface | Interface was added. | +| Magento\Framework\Image\Adapter\AdapterInterface | Interface was added. | +| Magento\Framework\Image\Adapter\ConfigInterface | Interface was added. | +| Magento\Framework\Indexer\Config\DependencyInfoProviderInterface | Interface was added. | +| Magento\Framework\Indexer\Table\StrategyInterface | Interface was added. | +| Magento\Framework\Interception\ConfigInterface | Interface was added. | +| Magento\Framework\Interception\ConfigLoaderInterface | Interface was added. | +| Magento\Framework\Interception\ConfigWriterInterface | Interface was added. | +| Magento\Framework\Interception\DefinitionInterface | Interface was added. | +| Magento\Framework\Interception\InterceptorInterface | Interface was added. | +| Magento\Framework\Interception\ObjectManager\ConfigInterface | Interface was added. | +| Magento\Framework\Interception\PluginListInterface | Interface was added. | +| Magento\Framework\Locale\AvailableLocalesInterface | Interface was added. | +| Magento\Framework\Locale\OptionInterface | Interface was added. | +| Magento\Framework\Mail\EmailMessageInterface | Interface was added. | +| Magento\Framework\Mail\MimeInterface | Interface was added. | +| Magento\Framework\Mail\MimeMessageInterface | Interface was added. | +| Magento\Framework\Mail\MimePartInterface | Interface was added. | +| Magento\Framework\MessageQueue\BulkPublisherInterface | Interface was added. | +| Magento\Framework\MessageQueue\CallbackInvokerInterface | Interface was added. | +| Magento\Framework\MessageQueue\ConnectionTypeResolverInterface | Interface was added. | +| Magento\Framework\MessageQueue\ConsumerConfigurationInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ConsumerConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ConsumerConfigItem\HandlerInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Consumer\Config\ValidatorInterface | Interface was added. | +| Magento\Framework\MessageQueue\LockInterface | Interface was added. | +| Magento\Framework\MessageQueue\Lock\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Lock\WriterInterface | Interface was added. | +| Magento\Framework\MessageQueue\MergedMessageInterface | Interface was added. | +| Magento\Framework\MessageQueue\MergerInterface | Interface was added. | +| Magento\Framework\MessageQueue\MessageProcessorInterface | Interface was added. | +| Magento\Framework\MessageQueue\PoisonPill\PoisonPillCompareInterface | Interface was added. | +| Magento\Framework\MessageQueue\PoisonPill\PoisonPillPutInterface | Interface was added. | +| Magento\Framework\MessageQueue\PoisonPill\PoisonPillReadInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\PublisherConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\PublisherConnectionInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Publisher\Config\ValidatorInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ExchangeConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ExchangeConfigItem\BindingInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\QueueConfigItemInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ReaderInterface | Interface was added. | +| Magento\Framework\MessageQueue\Topology\Config\ValidatorInterface | Interface was added. | +| Magento\Framework\Message\ExceptionMessageFactoryInterface | Interface was added. | +| Magento\Framework\Model\EntitySnapshot\AttributeProviderInterface | Interface was added. | +| Magento\Framework\Model\Entity\ScopeInterface | Interface was added. | +| Magento\Framework\Model\Entity\ScopeProviderInterface | Interface was added. | +| Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationInterface | Interface was added. | +| Magento\Framework\Model\ResourceModel\Type\Db\ConnectionFactoryInterface | Interface was added. | +| Magento\Framework\Module\ModuleListInterface | Interface was added. | +| Magento\Framework\Mview\ConfigInterface | Interface was added. | +| Magento\Framework\Mview\ProcessorInterface | Interface was added. | +| Magento\Framework\Mview\ViewInterface | Interface was added. | +| Magento\Framework\Mview\View\ChangelogInterface | Interface was added. | +| Magento\Framework\Mview\View\CollectionInterface | Interface was added. | +| Magento\Framework\Mview\View\StateInterface | Interface was added. | +| Magento\Framework\Mview\View\State\CollectionInterface | Interface was added. | +| Magento\Framework\Mview\View\SubscriptionInterface | Interface was added. | +| Magento\Framework\ObjectManager\ConfigCacheInterface | Interface was added. | +| Magento\Framework\ObjectManager\ConfigInterface | Interface was added. | +| Magento\Framework\ObjectManager\ConfigLoaderInterface | Interface was added. | +| Magento\Framework\ObjectManager\DefinitionInterface | Interface was added. | +| Magento\Framework\ObjectManager\DynamicConfigInterface | Interface was added. | +| Magento\Framework\ObjectManager\FactoryInterface | Interface was added. | +| Magento\Framework\ObjectManager\NoninterceptableInterface | Interface was added. | +| Magento\Framework\ObjectManager\RelationsInterface | Interface was added. | +| Magento\Framework\Profiler\Driver\Standard\OutputInterface | Interface was added. | +| Magento\Framework\Search\AdapterInterface | Interface was added. | +| Magento\Framework\Search\Adapter\Aggregation\AggregationResolverInterface | Interface was added. | +| Magento\Framework\Search\Adapter\OptionsInterface | Interface was added. | +| Magento\Framework\Search\Adapter\Preprocessor\PreprocessorInterface | Interface was added. | +| Magento\Framework\Search\Dynamic\Algorithm\AlgorithmInterface | Interface was added. | +| Magento\Framework\Search\Request\Aggregation\StatusInterface | Interface was added. | +| Magento\Framework\Search\Request\IndexScopeResolverInterface | Interface was added. | +| Magento\Framework\Search\ResponseInterface | Interface was added. | +| Magento\Framework\Search\SearchEngineInterface | Interface was added. | +| Magento\Framework\Search\SearchEngine\ConfigInterface | Interface was added. | +| Magento\Framework\Session\Config\ConfigInterface | Interface was added. | +| Magento\Framework\Session\SaveHandlerInterface | Interface was added. | +| Magento\Framework\Session\StorageInterface | Interface was added. | +| Magento\Framework\Session\ValidatorInterface | Interface was added. | +| Magento\Framework\Setup\ConfigOptionsListInterface | Interface was added. | +| Magento\Framework\Setup\DataCacheInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\DataSavior\DataSaviorInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\DataSavior\DumpAccessorInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DDLTriggerInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DbDefinitionProcessorInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DbSchemaReaderInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Db\DbSchemaWriterInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Declaration\ValidationInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Diff\DiffInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnDefaultAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnIdentityAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnNullableAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Columns\ColumnUnsignedAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\ElementDiffAwareInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\Factories\FactoryInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\Dto\TableElementInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\OperationInterface | Interface was added. | +| Magento\Framework\Setup\Declaration\Schema\SchemaConfigInterface | Interface was added. | +| Magento\Framework\Setup\Patch\DataPatchInterface | Interface was added. | +| Magento\Framework\Setup\Patch\DependentPatchInterface | Interface was added. | +| Magento\Framework\Setup\Patch\NonTransactionableInterface | Interface was added. | +| Magento\Framework\Setup\Patch\PatchInterface | Interface was added. | +| Magento\Framework\Setup\Patch\PatchRevertableInterface | Interface was added. | +| Magento\Framework\Setup\Patch\SchemaPatchInterface | Interface was added. | +| Magento\Framework\Setup\SampleData\InstallerInterface | Interface was added. | +| Magento\Framework\Setup\SampleData\StateInterface | Interface was added. | +| Magento\Framework\Setup\SchemaListenerDefinition\DefinitionConverterInterface | Interface was added. | +| Magento\Framework\Setup\SchemaListenerHandlers\SchemaListenerHandlerInterface | Interface was added. | +| Magento\Framework\Setup\UpToDateValidatorInterface | Interface was added. | +| Magento\Framework\TestFramework\Unit\Autoloader\GeneratorInterface | Interface was added. | +| Magento\Framework\TranslateInterface | Interface was added. | +| Magento\Framework\Translate\Inline\ProviderInterface | Interface was added. | +| Magento\Framework\Url\ModifierInterface | Interface was added. | +| Magento\Framework\Url\RouteParamsPreprocessorInterface | Interface was added. | +| Magento\Framework\Validator\Constraint\OptionInterface | Interface was added. | +| Magento\Framework\Validator\HTML\AttributeValidatorInterface | Interface was added. | +| Magento\Framework\Validator\HTML\TagValidatorInterface | Interface was added. | +| Magento\Framework\Validator\HTML\WYSIWYGValidatorInterface | Interface was added. | +| Magento\Framework\View\Asset\ContentProcessorInterface | Interface was added. | +| Magento\Framework\View\Asset\ContextInterface | Interface was added. | +| Magento\Framework\View\Asset\LockerProcessInterface | Interface was added. | +| Magento\Framework\View\Asset\MergeStrategyInterface | Interface was added. | +| Magento\Framework\View\Asset\MergeableInterface | Interface was added. | +| Magento\Framework\View\Asset\PreProcessor\FilenameResolverInterface | Interface was added. | +| Magento\Framework\View\DesignInterface | Interface was added. | +| Magento\Framework\View\Design\Fallback\Rule\RuleInterface | Interface was added. | +| Magento\Framework\View\Design\FileResolution\Fallback\ResolverInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\CustomizationInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Customization\ConfigInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Customization\FileAssetInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Customization\FileInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\FileInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\File\CollectionInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\Image\PathInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\ResolverInterface | Interface was added. | +| Magento\Framework\View\Design\Theme\ThemeProviderInterface | Interface was added. | +| Magento\Framework\View\Element\ComponentVisibilityInterface | Interface was added. | +| Magento\Framework\View\Element\Message\InterpretationStrategyInterface | Interface was added. | +| Magento\Framework\View\Element\Message\Renderer\PoolInterface | Interface was added. | +| Magento\Framework\View\Element\Message\Renderer\RendererInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\BlockWrapperInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Config\DomMergerInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Config\FileCollectorInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Config\UiReaderInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ContainerInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ContentType\ContentTypeInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ContextInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Control\ActionPoolInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Control\ControlInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\DataProvider\FilterApplierInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\DataSourceInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\Factory\ComponentFactoryInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\JsConfigInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\LayoutInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\ObserverInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\PoolInterface | Interface was added. | +| Magento\Framework\View\Element\UiComponent\SubjectInterface | Interface was added. | +| Magento\Framework\View\File\FileList\CollateInterface | Interface was added. | +| Magento\Framework\View\Helper\SecureHtmlRender\SecurityProcessorInterface | Interface was added. | +| Magento\Framework\View\Layout\Argument\UpdaterInterface | Interface was added. | +| Magento\Framework\View\Layout\Condition\VisibilityConditionInterface | Interface was added. | +| Magento\Framework\View\Layout\GeneratorInterface | Interface was added. | +| Magento\Framework\View\Layout\LayoutCacheKeyInterface | Interface was added. | +| Magento\Framework\View\Layout\ProcessorInterface | Interface was added. | +| Magento\Framework\View\Layout\ReaderInterface | Interface was added. | +| Magento\Framework\View\Model\PageLayout\Config\BuilderInterface | Interface was added. | +| Magento\Framework\View\Page\Config\RendererInterface | Interface was added. | +| Magento\Framework\View\TemplateEngineInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\AttributeInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\CdataInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\CommentInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\Directive\DirectiveInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\Element\ElementInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\Compiler\TextInterface | Interface was added. | +| Magento\Framework\View\TemplateEngine\Xhtml\ResultInterface | Interface was added. | +| Magento\Framework\View\Xsd\Media\TypeDataExtractorInterface | Interface was added. | +| Magento\Framework\Webapi\CustomAttributeTypeLocatorInterface | Interface was added. | +| Magento\Framework\Webapi\CustomAttribute\PreprocessorInterface | Interface was added. | +| Magento\Framework\Webapi\CustomAttribute\ServiceTypeListInterface | Interface was added. | +| Magento\Framework\Webapi\Rest\Request\DeserializerInterface | Interface was added. | +| Magento\GraphQl\Controller\HttpHeaderProcessorInterface | Interface was added. | +| Magento\GraphQl\Controller\HttpRequestValidatorInterface | Interface was added. | +| Magento\GraphQl\Model\Query\ContextInterface | Interface was added. | +| Magento\GraphQl\Model\Query\ContextParametersInterface | Interface was added. | +| Magento\GraphQl\Model\Query\ContextParametersProcessorInterface | Interface was added. | +| Magento\ImportExport\Api\Data\ExtendedExportInfoInterface | Interface was added. | +| Magento\ImportExport\Model\Report\ReportProcessorInterface | Interface was added. | +| Magento\Indexer\Model\ModeSwitcherInterface | Interface was added. | +| Magento\Indexer\Model\Source\DataInterface | Interface was added. | +| Magento\Integration\Model\Oauth\Token\RequestLog\ReaderInterface | Interface was added. | +| Magento\Integration\Model\Oauth\Token\RequestLog\WriterInterface | Interface was added. | +| Magento\InventoryIndexer\Indexer\SelectBuilderInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\Data\IsLoginAsCustomerEnabledForCustomerResultInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\GetLoggedAsCustomerAdminIdInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\GetLoggedAsCustomerCustomerIdInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\IsLoginAsCustomerEnabledForCustomerInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\SetLoggedAsCustomerAdminIdInterface | Interface was added. | +| Magento\LoginAsCustomerApi\Api\SetLoggedAsCustomerCustomerIdInterface | Interface was added. | +| Magento\LoginAsCustomerAssistance\Api\ConfigInterface | Interface was added. | +| Magento\LoginAsCustomerAssistance\Api\IsAssistanceEnabledInterface | Interface was added. | +| Magento\LoginAsCustomerAssistance\Api\SetAssistanceInterface | Interface was added. | +| Magento\MediaContentApi\Api\GetAssetIdsByContentFieldInterface | Interface was added. | +| Magento\MediaContentApi\Api\UpdateContentAssetLinksInterface | Interface was added. | +| Magento\MediaContentApi\Model\GetAssetIdsByContentFieldInterface | Interface was added. | +| Magento\MediaContentApi\Model\SearchPatternConfigInterface | Interface was added. | +| Magento\MediaContentSynchronizationApi\Api\SynchronizeIdentitiesInterface | Interface was added. | +| Magento\MediaContentSynchronizationApi\Api\SynchronizeInterface | Interface was added. | +| Magento\MediaContentSynchronizationApi\Model\GetEntitiesInterface | Interface was added. | +| Magento\MediaGalleryApi\Api\SearchAssetsInterface | Interface was added. | +| Magento\MediaGalleryApi\Model\ExcludedPatternsConfigInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Api\AddMetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Api\Data\MetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Api\ExtractMetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\FileInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\ReadFileInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\ReadMetadataInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\SegmentInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\WriteFileInterface | Interface was added. | +| Magento\MediaGalleryMetadataApi\Model\WriteMetadataInterface | Interface was added. | +| Magento\MediaGalleryRenditionsApi\Api\GenerateRenditionsInterface | Interface was added. | +| Magento\MediaGalleryRenditionsApi\Api\GetRenditionPathInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Api\SynchronizeFilesInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Api\SynchronizeInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Model\CreateAssetFromFileInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Model\FetchBatchesInterface | Interface was added. | +| Magento\MediaGallerySynchronizationApi\Model\ImportFilesInterface | Interface was added. | +| Magento\MediaGalleryUiApi\Api\ConfigInterface | Interface was added. | +| Magento\Msrp\Pricing\MsrpPriceCalculatorInterface | Interface was added. | +| Magento\Newsletter\Model\SubscriptionManagerInterface | Interface was added. | +| Magento\PageCache\Model\Spi\PageCacheTagsPreprocessorInterface | Interface was added. | +| Magento\Payment\Api\Data\PaymentAdditionalInfoInterface | Interface was added. | +| Magento\Payment\Model\Method\TransparentInterface | Interface was added. | +| Magento\Paypal\Helper\Shortcut\ValidatorInterface | Interface was added. | +| Magento\Paypal\Model\Billing\Agreement\MethodInterface | Interface was added. | +| Magento\Paypal\Model\IpnInterface | Interface was added. | +| Magento\Paypal\Model\Payflow\Service\Response\Handler\HandlerInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\CartItem\DataProvider\CustomizableOptionValueInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\CartItem\DataProvider\Processor\ItemDataProcessorInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\BuyRequest\BuyRequestDataProviderInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\Payment\AdditionalDataProviderInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\SetShippingAddressesOnCartInterface | Interface was added. | +| Magento\QuoteGraphQl\Model\Cart\SetShippingMethodsOnCartInterface | Interface was added. | +| Magento\Quote\Api\ChangeQuoteControlInterface | Interface was added. | +| Magento\Quote\Model\Cart\BuyRequest\BuyRequestDataProviderInterface | Interface was added. | +| Magento\Quote\Model\Product\QuoteItemsCleanerInterface | Interface was added. | +| Magento\Quote\Model\Quote\Address\CustomAttributeListInterface | Interface was added. | +| Magento\Quote\Model\Quote\Address\Total\CollectorInterface | Interface was added. | +| Magento\Quote\Model\Quote\Address\Total\ReaderInterface | Interface was added. | +| Magento\Quote\Model\Quote\Item\CartItemProcessorInterface | Interface was added. | +| Magento\Quote\Model\ValidationRules\QuoteValidationRuleInterface | Interface was added. | +| Magento\ReleaseNotification\Model\ContentProviderInterface | Interface was added. | +| Magento\RemoteStorage\Driver\DriverFactoryInterface | Interface was added. | +| Magento\RemoteStorage\Driver\RemoteDriverInterface | Interface was added. | +| Magento\RemoteStorage\FilesystemInterface | Interface was added. | +| Magento\SalesGraphQl\Model\Shipment\Item\FormatterInterface | Interface was added. | +| Magento\SalesRule\Api\Data\DiscountDataInterface | Interface was added. | +| Magento\SalesRule\Api\Data\RuleDiscountInterface | Interface was added. | +| Magento\SalesRule\Model\Spi\CodeLimitManagerInterface | Interface was added. | +| Magento\SalesRule\Model\Spi\QuoteResetAppliedRulesInterface | Interface was added. | +| Magento\SalesRule\Model\Spi\RuleQuoteRecollectTotalsInterface | Interface was added. | +| Magento\Sales\Api\OrderCustomerDelegateInterface | Interface was added. | +| Magento\Sales\Api\PaymentFailuresInterface | Interface was added. | +| Magento\Sales\Controller\AbstractController\OrderLoaderInterface | Interface was added. | +| Magento\Sales\Controller\AbstractController\OrderViewAuthorizationInterface | Interface was added. | +| Magento\Sales\Controller\OrderInterface | Interface was added. | +| Magento\Sales\Model\Order\Creditmemo\CreditmemoValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Creditmemo\ItemCreationValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Creditmemo\SenderInterface | Interface was added. | +| Magento\Sales\Model\Order\Email\Container\IdentityInterface | Interface was added. | +| Magento\Sales\Model\Order\Invoice\InvoiceValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Invoice\SenderInterface | Interface was added. | +| Magento\Sales\Model\Order\OrderValidatorInterface | Interface was added. | +| Magento\Sales\Model\Order\Payment\State\CommandInterface | Interface was added. | +| Magento\Sales\Model\Order\Payment\Transaction\BuilderInterface | Interface was added. | +| Magento\Sales\Model\Order\Payment\Transaction\ManagerInterface | Interface was added. | +| Magento\Sales\Model\Order\Shipment\SenderInterface | Interface was added. | +| Magento\Sales\Model\Order\Shipment\ShipmentValidatorInterface | Interface was added. | +| Magento\Sales\Model\ResourceModel\Order\CollectionFactoryInterface | Interface was added. | +| Magento\Sales\Model\ResourceModel\Provider\NotSyncedDataProviderInterface | Interface was added. | +| Magento\Sales\Model\Spi\CreditmemoCommentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\CreditmemoItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\CreditmemoResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\InvoiceCommentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\InvoiceItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\InvoiceResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderAddressResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderPaymentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\OrderStatusHistoryResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentCommentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentItemResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\ShipmentTrackResourceInterface | Interface was added. | +| Magento\Sales\Model\Spi\TransactionResourceInterface | Interface was added. | +| Magento\Sales\Model\ValidatorInterface | Interface was added. | +| Magento\Search\Model\SearchEngine\ValidatorInterface | Interface was added. | +| Magento\Search\Setup\InstallConfigInterface | Interface was added. | +| Magento\Security\Api\Data\UserExpirationInterface | Interface was added. | +| Magento\Shipping\Model\Carrier\Source\GenericInterface | Interface was added. | +| Magento\Store\Model\Config\Importer\Processor\ProcessorInterface | Interface was added. | +| Magento\Store\Model\StoreResolver\ReaderInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcherInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\ContextInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataPostprocessorInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataPreprocessorInterface | Interface was added. | +| Magento\Store\Model\StoreSwitcher\RedirectDataSerializerInterface | Interface was added. | +| Magento\Tax\Api\TaxAddressManagerInterface | Interface was added. | +| Magento\Tax\Model\System\Message\NotificationInterface | Interface was added. | +| Magento\Tax\Model\TaxClass\Type\TypeInterface | Interface was added. | +| Magento\Theme\Model\Design\Config\MetadataProviderInterface | Interface was added. | +| Magento\Theme\Model\Theme\StoreThemesResolverInterface | Interface was added. | +| Magento\Ui\Component\Form\Element\DataType\DataTypeInterface | Interface was added. | +| Magento\Ui\Component\Layout\Tabs\TabInterface | Interface was added. | +| Magento\Ui\Component\Wysiwyg\ConfigInterface | Interface was added. | +| Magento\Ui\Config\Argument\ParserInterface | Interface was added. | +| Magento\Ui\Config\ConverterInterface | Interface was added. | +| Magento\Ui\Controller\UiActionInterface | Interface was added. | +| Magento\Ui\DataProvider\AddFieldToCollectionInterface | Interface was added. | +| Magento\Ui\DataProvider\AddFilterToCollectionInterface | Interface was added. | +| Magento\Ui\DataProvider\Mapper\MapperInterface | Interface was added. | +| Magento\Ui\DataProvider\Modifier\PoolInterface | Interface was added. | +| Magento\Ui\Model\ColorPicker\ModeInterface | Interface was added. | +| Magento\Ui\Model\UrlInput\ConfigInterface | Interface was added. | +| Magento\UrlRewriteGraphQl\Model\Resolver\UrlRewrite\CustomUrlLocatorInterface | Interface was added. | +| Magento\User\Model\Spi\NotificationExceptionInterface | Interface was added. | +| Magento\User\Model\Spi\NotificatorInterface | Interface was added. | +| Magento\Vault\Block\Customer\IconInterface | Interface was added. | +| Magento\Webapi\Controller\Rest\RequestProcessorInterface | Interface was added. | +| Magento\Widget\Block\BlockInterface | Interface was added. | +| Magento\Wishlist\Controller\IndexInterface | Interface was added. | +| Magento\Wishlist\Controller\WishlistProviderInterface | Interface was added. | +| Magento\Wishlist\Model\AuthenticationStateInterface | Interface was added. | +| Magento\Wishlist\Model\ResourceModel\Item\Product\CollectionBuilderInterface | Interface was added. | +| Magento\Wishlist\Model\Wishlist\BuyRequest\BuyRequestDataProviderInterface | Interface was added. | diff --git a/src/_includes/browsers/supported-browsers.md b/src/_includes/browsers/supported-browsers.md index dab3451f284..4661b3f9b99 100644 --- a/src/_includes/browsers/supported-browsers.md +++ b/src/_includes/browsers/supported-browsers.md @@ -1,6 +1,6 @@ Storefront and Admin: -* Internet Explorer 11 or later, Microsoft Edge, latest and previous major version +* Microsoft Edge, latest and previous major version * Firefox latest, latest and previous major version (any operating system) * Chrome latest, latest and previous major version (any operating system) * Safari latest, latest and previous major version (Mac OS only) diff --git a/src/_includes/cloud/customize-build-deploy.md b/src/_includes/cloud/customize-build-deploy.md index 6afad956fe8..b413912a260 100644 --- a/src/_includes/cloud/customize-build-deploy.md +++ b/src/_includes/cloud/customize-build-deploy.md @@ -1,4 +1,4 @@ For more information about customizing the build and deploy process: -- [Manage build and deploy actions]({{ site.baseurl }}/cloud/project/magento-env-yaml.html) +- [Deployment configuration]({{ site.baseurl }}/cloud/project/magento-env-yaml.html) - [Deployment process]({{ site.baseurl }}/cloud/deploy/cloud-deployment-process.html) \ No newline at end of file diff --git a/src/_includes/cloud/enable-ssh.md b/src/_includes/cloud/enable-ssh.md index 4d9351009e5..c9d8e14291a 100644 --- a/src/_includes/cloud/enable-ssh.md +++ b/src/_includes/cloud/enable-ssh.md @@ -11,7 +11,7 @@ For more information on SSH keys, see the following: - [Connecting to GitHub with SSH](https://help.github.com/articles/connecting-to-github-with-ssh/) - [Manually generating your SSH key in Windows](https://docs.joyent.com/public-cloud/getting-started/ssh-keys/generating-an-ssh-key-manually/manually-generating-your-ssh-key-in-windows) -- [ssh-keygen man page](http://linux.die.net/man/1/ssh-keygen) +- [ssh-keygen man page](https://linux.die.net/man/1/ssh-keygen) ## Locate an existing SSH key pair {#existing} diff --git a/src/_includes/cloud/error-codes.md b/src/_includes/cloud/error-codes.md index 615afdb3280..1af7f26772a 100644 --- a/src/_includes/cloud/error-codes.md +++ b/src/_includes/cloud/error-codes.md @@ -2,7 +2,7 @@ ## Critical Errors -Critical errors indicate a problem with the Magento Commerce Cloud project configuration that causes deployment failure, for example incorrect, unsupported, or missing configuration for required settings. Before you can deploy, you must update the configuration to resolve these errors. +Critical errors indicate a problem with the Commerce on cloud infrastructure project configuration that causes deployment failure, for example incorrect, unsupported, or missing configuration for required settings. Before you can deploy, you must update the configuration to resolve these errors. ### Build stage @@ -16,7 +16,7 @@ Critical errors indicate a problem with the Magento Commerce Cloud project confi | 6 | | Unable to read the `.schema.yaml` file | Unable to read the `./vendor/magento/ece-tools/config/magento.env.yaml` file. Check file permissions and redeploy (`magento-cloud environment:redeploy`). | | 7 | refresh-modules | Cannot write to the `./app/etc/config.php` file | The deployment script cannot make required changes to the `/app/etc/config.php` file. Check your filesystem permissions. | | 8 | validate-config | Cannot read the `composer.json` file | Unable to read the `./composer.json` file. Check file permissions. | -| 9 | validate-config | Composer.json is missing required autoload section | Required `autoload` section is missing from the `composer.json` file. Compare the autoload section to the `composer.json` file in the Magento Cloud template, and add the missing configuration. | +| 9 | validate-config | Composer.json is missing required autoload section | Required `autoload` section is missing from the `composer.json` file. Compare the autoload section to the `composer.json` file in the Cloud template, and add the missing configuration. | | 10 | validate-config | The file `.magento.env.yaml` contains an option that is not declared in the schema, or an option configured with an invalid value or stage | The `./.magento.env.yaml` file contains invalid configuration. Check the error log for detailed info. | | 11 | refresh-modules | Command failed: `/bin/magento module:enable --all` | Try to run `composer update` locally. Then, commit and push the updated `composer.lock` file. Also check the `cloud.log` for more information. For more detailed command output, add the `VERBOSE_COMMANDS: '-vvv'` option to the `.magento.env.yaml` file. | | 12 | apply-patches | Failed to apply patch | | @@ -32,8 +32,8 @@ Critical errors indicate a problem with the Magento Commerce Cloud project confi | 22 | backup-data: writable-dirs | Failed to copy some writable directories into the `init` directory | Failed to copy writable directories into the `./init` folder. Check your filesystem permissions. | | 23 | | Unable to create a logger object | | | 24 | backup-data: static-content | Failed to clean the `./init/pub/static/` directory | Failed to clean `./init/pub/static` folder. Check your filesystem permissions. | -| 25 | | Cannot find the Composer package | If you installed the Magento application version directly from the Magento git repository, verify that the `DEPLOYED_MAGENTO_VERSION_FROM_GIT` environment variable is configured. | -| 26 | validate-config | Remove Magento Braintree module configuration which is no longer supported in Magento 2.4 and later versions. | Support for the Braintree module is no longer included with Magento 2.4.0 and later. Remove the CONFIG__STORES__DEFAULT__PAYMENT__BRAINTREE__CHANNEL variable from the variables section of the .magento.app.yaml file. For Braintree payment support, use an official extension from the Magento Marketplace instead. | +| 25 | | Cannot find the Composer package | If you installed the Adobe Commerce application version directly from the GitHub repository, verify that the `DEPLOYED_MAGENTO_VERSION_FROM_GIT` environment variable is configured. | +| 26 | validate-config | Remove Magento Braintree module configuration which is no longer supported in Adobe Commerce and Magento Open Source 2.4 and later versions. | Support for the Braintree module is no longer included with Magento 2.4.0 and later. Remove the CONFIG__STORES__DEFAULT__PAYMENT__BRAINTREE__CHANNEL variable from the variables section of the `.magento.app.yaml` file. For Braintree payment support, use an official extension from the Commerce Marketplace instead. | ### Deploy stage @@ -69,16 +69,16 @@ Critical errors indicate a problem with the Magento Commerce Cloud project confi | 127 | clean-cache | Command `/bin/magento cache:flush` failed | Check the `cloud.log` for more information. For more detailed command output, add the `VERBOSE_COMMANDS: '-vvv'` option to the `.magento.env.yaml` file. | | 128 | disable-maintenance-mode | Command `/bin/magento maintenance:disable` failed | Check the `cloud.log` for more information. Add `VERBOSE_COMMANDS: '-vvv'` into `.magento.env.yaml` for more detailed command output. | | 129 | install-update: reset-password | Unable to read reset password template | | -| 130 | install-update: cache_type | Command failed: `php ./bin/magento cache:enable` | Command `php ./bin/magento cache:enable` runs only when Magento was installed but `./app/etc/env.php` file was absent or empty at the beginning of the deployment. Check the `cloud.log` for more information. Add `VERBOSE_COMMANDS: '-vvv'` into `.magento.env.yaml` for more detailed command output. | -| 131 | install-update | The `crypt/key` key value does not exist in the `./app/etc/env.php` file or the `CRYPT_KEY` cloud environment variable | This error occurs if the `./app/etc/env.php` file is not present when Magento deployment begins, or if the `crypt/key` value is undefined. If you migrated the database from another environment, retrieve the crypt key value from that environment. Then, add the value to the [CRYPT_KEY](https://devdocs.magento.com/cloud/env/variables-deploy.html#crypt_key) cloud environment variable in your current environment. See [Add the Magento encryption key](https://devdocs.magento.com/cloud/setup/first-time-setup-import-import.html#encryption-key). If you accidentally removed the `./app/etc/env.php` file, use the following command to restore it from the backup files created from a previous deployment: `./vendor/bin/ece-tools backup:restore` CLI command ." | -| 132 | | Cannot connect to the Elasticsearch service | Check for valid Elasticsearch credentials and verify that the service is running | -| 137 | | Cannot connect to the OpenSearch service | Check for valid OpenSearch credentials and verify that the service is running | -| 133 | validate-config | Remove Magento Braintree module configuration which is no longer supported in Magento 2.4 and later versions. | Support for the Braintree module is no longer included with Magento 2.4.0 and later. Remove the CONFIG__STORES__DEFAULT__PAYMENT__BRAINTREE__CHANNEL variable from the variables section of the .magento.app.yaml file. For Braintree support, use an official Braintree Payments extension from the Magento Marketplace instead. | -| 134 | validate-config | Magento 2.4.0 requires Elasticsearch service to be installed | Install Elasticsearch service | -| 138 | validate-config | Magento 2.4.4 requires OpenSearch or Elasticsearch service to be installed | Install OpenSearch service | -| 135 | validate-config | The search engine must be set to Elasticsearch for Magento >= 2.4.0 | Check the SEARCH_CONFIGURATION variable for the `engine` option. If it is configured, remove the option, or set the value to "elasticsearch". | -| 136 | validate-config | Split Database was removed starting from Magento 2.5.0. | If you use split database that you have to revert to or migrate to a single database or use an alternative approach. | -| 139 | validate-config | Incorrect search engine | This Magento version does not support OpenSearch. You must use versions 2.3.7-p3, 2.4.3-p2, or higher | +| 130 | install-update: cache_type | Command failed: `php ./bin/magento cache:enable` | Command `php ./bin/magento cache:enable` runs only when Adobe Commerce was installed but `./app/etc/env.php` file was absent or empty at the beginning of the deployment. Check the `cloud.log` for more information. Add `VERBOSE_COMMANDS: '-vvv'` into `.magento.env.yaml` for more detailed command output. | +| 131 | install-update | The `crypt/key` key value does not exist in the `./app/etc/env.php` file or the `CRYPT_KEY` cloud environment variable | This error occurs if the `./app/etc/env.php` file is not present when Adobe Commerce deployment begins, or if the `crypt/key` value is undefined. If you migrated the database from another environment, retrieve the crypt key value from that environment. Then, add the value to the [CRYPT_KEY](https://devdocs.magento.com/cloud/env/variables-deploy.html#crypt_key) cloud environment variable in your current environment. See [Add the Magento encryption key](https://devdocs.magento.com/cloud/setup/first-time-setup-import-import.html#encryption-key). If you accidentally removed the `./app/etc/env.php` file, use the following command to restore it from the backup files created from a previous deployment: `./vendor/bin/ece-tools backup:restore` CLI command ." | +| 132 | | Can not connect to the Elasticsearch service | Check for valid Elasticsearch credentials and verify that the service is running | +| 137 | | Can not connect to the Opensearch service | Check for valid Opensearch credentials and verify that the service is running | +| 133 | validate-config | Remove Magento Braintree module configuration which is no longer supported in Adobe Commerce or Magento Open Source 2.4 and later versions. | Support for the Braintree module is no longer included with Adobe Commerce or Magento Open Source 2.4.0 and later. Remove the CONFIG__STORES__DEFAULT__PAYMENT__BRAINTREE__CHANNEL variable from the variables section of the `.magento.app.yaml` file. For Braintree support, use an official Braintree Payments extension from the Commerce Marketplace instead. | +| 134 | validate-config | Adobe Commerce and Magento Open Source 2.4.0 require Elasticsearch service to be installed | Install Elasticsearch service | +| 138 | validate-config | Adobe Commerce and Magento Open Source 2.4.4 requires Opensearch or Elasticsearch service to be installed | Install Opensearch service | +| 135 | validate-config | The search engine must be set to Elasticsearch for Adobe Commerce and Magento Open Source >= 2.4.0 | Check the SEARCH_CONFIGURATION variable for the `engine` option. If it is configured, remove the option, or set the value to "elasticsearch". | +| 136 | validate-config | Split Database was removed starting from Adobe Commerce and Magento Open Source 2.5.0. | If you use split database you have to revert to or migrate to a single database or use an alternative approach. | +| 139 | validate-config | Incorrect search engine | This Adobe Commerce or Magento Open Source version does not support Opensearch. You must use versions 2.3.7-p3, 2.4.3-p2, or higher | ### Post-deploy stage @@ -91,7 +91,7 @@ Critical errors indicate a problem with the Magento Commerce Cloud project confi | 204 | | Failed to parse the `.magento.env.yaml` file | The `./.magento.env.yaml` file format is invalid. Use a YAML parser to check the syntax and fix any errors. | | 205 | | Unable to read the `.magento.env.yaml` file | Check file permissions. | | 206 | | Unable to read the `.schema.yaml` file | | -| 207 | warm-up | Failed to warm up some pages | | +| 207 | warm-up | Failed to warm-up some pages | | | 208 | time-to-firs-byte | Failed to test time to first byte (TTFB) | | | 227 | clean-cache | Command `/bin/magento cache:flush` failed | Check the `cloud.log` for more information. Add `VERBOSE_COMMANDS: '-vvv'` into `.magento.env.yaml` for more detailed command output. | @@ -104,10 +104,12 @@ Critical errors indicate a problem with the Magento Commerce Cloud project confi | 244 | | Failed to parse the `.magento.env.yaml` file | The `./.magento.env.yaml` file format is invalid. Use a YAML parser to check the syntax and fix any errors. | | 245 | | Unable to read the `.magento.env.yaml` file | Unable to read the `./.magento.env.yaml` file. Check file permissions. | | 246 | | Unable to read the `.schema.yaml` file | | +| 247 | | Unable to generate a module for eventing | Check the `cloud.log` for more information. | +| 248 | | Unable to enable a module for eventing | Check the `cloud.log` for more information. | ## Warning Errors -Warning errors indicate a problem with the Magento Commerce Cloud project configuration such as incorrect, deprecated, unsupported, or missing configuration settings for optional features that can affect site operation. Although a warning does not cause deployment failure, you should review warning messages and update the configuration to resolve them. +Warning errors indicate a problem with the Commerce on cloud infrastructure project configuration such as incorrect, deprecated, unsupported, or missing configuration settings for optional features that can affect site operation. Although a warning does not cause deployment failure, you should review warning messages and update the configuration to resolve them. ### Build stage @@ -127,45 +129,45 @@ Warning errors indicate a problem with the Magento Commerce Cloud project config {:.error-table} | Error code | Deploy step | Error description (Title) | Suggested action | | - | - | - | - | -| 2001 | pre-deploy:cache | Cache is configured for a Redis service that is not available. Configuration is ignored. | | +| 2001 | pre-deploy:cache | Cache is configured for a Redis service that is not available. Configuration will be ignored. | | | 2002 | validate-config | The configured state is not ideal | | | 2003 | validate-config | The directory nesting level value for error reporting has not been configured | | | 2004 | validate-config | Invalid configuration in the ./pub/errors/local.xml file. | | | 2005 | validate-config | Admin data is used to create an admin user during initial installation only. Any changes to Admin data are ignored during the upgrade process. | After the initial installation, you can remove admin data from the configuration. | | 2006 | validate-config | Admin user was not created as admin email was not set | After installation, you can create an admin user manually: Use ssh to connect to your environment. Then, run the `bin/magento admin:user:create` command. | | 2007 | validate-config | Update php version to recommended version | | -| 2008 | validate-config | Solr support has been deprecated in Magento 2.1. | | -| 2009 | validate-config | Solr is no longer supported by Magento 2.2 or later. | | +| 2008 | validate-config | Solr support has been deprecated in Adobe Commerce and Magento Open Source 2.1. | | +| 2009 | validate-config | Solr is no longer supported by Adobe Commerce and Magento Open Source 2.2 or later. | | | 2010 | validate-config | Elasticsearch service is installed at infrastructure layer, but it is not used as a search engine. | Consider removing the Elasticsearch service from the infrastructure layer to optimize resource usage. | -| 2011 | validate-config | Elasticsearch service version on infrastructure layer is not compatible with current version of the elasticsearch/elasticsearch module, used by your Magento application. | | -| 2012 | validate-config | The current configuration is not compatible with this version of Magento | | +| 2011 | validate-config | Elasticsearch service version on infrastructure layer is not compatible with current version of the elasticsearch/elasticsearch module, used by your Adobe Commerce application. | | +| 2012 | validate-config | The current configuration is not compatible with this version of Adobe Commerce | | | 2013 | validate-config | SCD options ignored because the deploy process did not run on the build phase | | | 2014 | validate-config | The configuration contains deprecated variables or values | | | 2015 | validate-config | Environment configuration is not valid | | -| 2016 | validate-config | JSON type configuration cannot be decoded | | -| 2017 | validate-config | The current configuration is not compatible with this version of Magento | | +| 2016 | validate-config | JSON type configuration can not be decoded | | +| 2017 | validate-config | The current configuration is not compatible with this version of Adobe Commerce | | | 2018 | validate-config | Some services have passed EOL | | | 2019 | validate-config | The MySQL search configuration option is deprecated | Use Elasticsearch instead. | -| 2029 | validate-config | Split Database was deprecated in the Magento 2.4.2 and will be removed in 2.5. | If you use split database that you should start planning to revert to or migrate to a single database or use an alternative approach. | -| 2020 | install-update | Magento installation completed, but the `app/etc/env.php` configuration file was missing or empty. | Required data will be restored from environment configurations and from .magento.env.yaml file. | +| 2029 | validate-config | Split Database was deprecated in the Adobe Commerce and Magento Open Source 2.4.2 and will be removed in 2.5. | If you use split database you should start planning to revert to or migrate to a single database or use an alternative approach. | +| 2020 | install-update | Adobe Commerce installation completed, but the `app/etc/env.php` configuration file was missing or empty. | Required data will be restored from environment configurations and from .magento.env.yaml file. | | 2021 | install-update:db-connection | For split databases used custom connections | | | 2022 | install-update:db-connection | You have changed to a database configuration that is not compatible with the slave connection. | | | 2023 | install-update:split-db | Enabling a split database will be skipped. | | | 2024 | install-update:split-db | The SPLIT_DB variable is missing the configuration for split connection types. | | | 2025 | install-update:split-db | Slave connection not set. | | | 2026 | pre-deploy:restore-writable-dirs | Failed to restore some data generated during the build phase to the mounted directories | Check the `cloud.log` for more information. | -| 2027 | validate-config:mage-mode-variable | Mode value for MAGE_MODE environment variable not supported | Remove the MAGE_MODE environment variable, or change its value to "production". Magento Cloud supports "production" mode only. | +| 2027 | validate-config:mage-mode-variable | Mode value for MAGE_MODE environment variable not supported | Remove the MAGE_MODE environment variable, or change its value to "production". Adobe Commerce on cloud infrastructure supports "production" mode only. | | 2028 | remote-storage | Remote storage could not be enabled. | Verify remote storage credentials. | -| 2030 | validate-config | Elasticsearch and OpenSearch services are both installed at infrastructure layer. Magento 2.4.4 and higher uses OpenSearch by default | Consider removing the Elasticsearch or OpenSearch service from the infrastructure layer to optimize resource usage. | +| 2030 | validate-config | Elasticsearch and Opensearch services are both installed at infrastructure layer. Adobe Commerce and Magento Open Source 2.4.4 and higher use Opensearch by default | Consider removing the Elasticsearch or Opensearch service from the infrastructure layer to optimize resource usage. | ### Post-deploy stage {:.error-table} | Error code | Post-deploy step | Error description (Title) | Suggested action | | - | - | - | - | -| 3001 | validate-config | Debug logging is enabled in Magento | To save disk space, do not enable debug logging for your production environments. | -| 3002 | warm-up | Cannot fetch store urls | | -| 3003 | warm-up | Cannot fetch store url | | +| 3001 | validate-config | Debug logging is enabled in Adobe Commerce | To save disk space, do not enable debug logging for your production environments. | +| 3002 | warm-up | Can not fetch store urls | | +| 3003 | warm-up | Can not fetch store url | | | 3004 | backup | Cannot create backup files | | ### General @@ -173,7 +175,7 @@ Warning errors indicate a problem with the Magento Commerce Cloud project config {:.error-table} | Error code | General step | Error description (Title) | Suggested action | | - | - | - | - | -| 4001 | | Cannot get system processor count: | | +| 4001 | | Can not get system processor count: | | @@ -188,4 +190,4 @@ table.error-table td:nth-child(1) { table.error-table td:nth-child(2) { width: 200px; } - + \ No newline at end of file diff --git a/src/_includes/cloud/note-elasticsearch.md b/src/_includes/cloud/note-elasticsearch.md index 62124d0668d..5f3a944b2b6 100644 --- a/src/_includes/cloud/note-elasticsearch.md +++ b/src/_includes/cloud/note-elasticsearch.md @@ -1,2 +1,2 @@ {:.bs-callout-warning} - Elasticsearch 7.11 and later is not supported for {{ site.data.var.ece }}. {{ site.data.var.ee }} and {{ site.data.var.ce }} versions 2.4.4, 2.4.3-p2, and 2.3.7-p3 support the OpenSearch service. The on-premises installations continue to support Elasticsearch. \ No newline at end of file + Elasticsearch 7.11 and later is not supported for {{ site.data.var.ece }}. {{ site.data.var.ee }} and {{ site.data.var.ce }} versions 2.3.7-p3, 2.4.3-p2, 2.4.4 and later support the OpenSearch service. The on-premises installations continue to support Elasticsearch. diff --git a/src/_includes/cloud/note-pro-missing-self-service-options.md b/src/_includes/cloud/note-pro-missing-self-service-options.md index 1d665e74811..0b2566719e7 100644 --- a/src/_includes/cloud/note-pro-missing-self-service-options.md +++ b/src/_includes/cloud/note-pro-missing-self-service-options.md @@ -1,2 +1,7 @@ - {:.bs-callout-info} -On Pro projects, we recommend updating YAML configuration files in an Integration environment and testing the changes before pushing the updates to Staging and Production environments. If you discover that configuration changes are not applied to Staging and Production sites after you redeploy and do not see any related error messages in the log, submit a [Support ticket](http://support.magento.com) that describes the attempted configuration changes. Include any updated YAML configuration files in the ticket. +For {{site.data.var.ece}} Pro Staging and Production environments, you can update many configuration options in your local development environment and commit the changes to apply them to these environments. However, you must submit a [Support ticket](https://support.magento.com/hc/en-us) to update the following configuration options: + +- Install or update services in the `.magento/services.yaml` file. +- Change the configuration for the `mounts` and `disk` properties in the `.magento.app.yaml` file. + +{:.bs-callout-warning} +Some **Pro projects** require a support ticket to update the route configuration in the `routes.yaml` file and the cron configuration in the `.magento.app.yaml` file. Adobe recommends updating and testing YAML configuration files in an Integration environment, then deploying changes to the Staging environment. If you discover that your configuration changes are not applied to Staging sites after you redeploy and do not see any related error messages in the log, then you **MUST** submit a [Support ticket](https://support.magento.com/hc/en-us) that describes the attempted configuration changes. Include any updated YAML configuration files in the ticket. diff --git a/src/_includes/cloud/note-pro-mount-disk-config-yaml-support.md b/src/_includes/cloud/note-pro-mount-disk-config-yaml-support.md index 360d6e8f93d..d3c61aecc70 100644 --- a/src/_includes/cloud/note-pro-mount-disk-config-yaml-support.md +++ b/src/_includes/cloud/note-pro-mount-disk-config-yaml-support.md @@ -1,2 +1,2 @@ {:.bs-callout-info} -For Pro Staging and Production environments, you must submit a [Support ticket](http://support.magento.com) to update the `mounts` and `disk` configuration for your application. When you submit the ticket, indicate the required configuration changes and include an updated version of your `.magento.app.yaml` file. +For Pro Staging and Production environments, you must submit a [Support ticket](https://support.magento.com/hc/en-us) to update the `mounts` and `disk` configuration for your application. When you submit the ticket, indicate the required configuration changes and include an updated version of your `.magento.app.yaml` file. diff --git a/src/_includes/cloud/note-pro-using-yaml-support.md b/src/_includes/cloud/note-pro-using-yaml-support.md index 0c9d7b53cd6..abc0dd75a9e 100644 --- a/src/_includes/cloud/note-pro-using-yaml-support.md +++ b/src/_includes/cloud/note-pro-using-yaml-support.md @@ -1,2 +1,2 @@ - {:.bs-callout-info} -For Pro projects, you must create a [Support ticket](http://support.magento.com) to install or update services in Staging and Production environments. Indicate the service changes needed and include your updated `.magento.app.yaml` and `services.yaml` files in the ticket. It can take up to 48 hours for the Cloud infrastructure team to update your project. \ No newline at end of file +{:.bs-callout-tip} +For Pro projects, you must create a [Support ticket](https://support.magento.com/hc/en-us) to install or update services in Staging and Production environments. Indicate the service changes needed and include your updated `.magento.app.yaml` and `services.yaml` files and PHP version in the ticket. It can take up to 48 hours for the Cloud infrastructure team to update your project. \ No newline at end of file diff --git a/src/_includes/cloud/service-config-integration-starter.md b/src/_includes/cloud/service-config-integration-starter.md index 2105b468586..880ef24b518 100644 --- a/src/_includes/cloud/service-config-integration-starter.md +++ b/src/_includes/cloud/service-config-integration-starter.md @@ -1,4 +1,4 @@ Use the following instructions for service setup on {{site.data.var.ece}} Pro Integration environments and Starter environments, including the `master` branch. {:.bs-callout-info} -You must submit a support ticket to change the service configuration on Pro Production and Staging environments. See [Services]({{ site.baseurl }}/cloud/project/services.html). +You must submit a [Support ticket](https://support.magento.com/hc/en-us/articles/360000913794#support-tickets) to change the service configuration on Pro Production and Staging environments. See [Services]({{ site.baseurl }}/cloud/project/services.html). diff --git a/src/_includes/cloud/tip-creating-branches.md b/src/_includes/cloud/tip-creating-branches.md index e4c84c0622b..3974e3714e8 100644 --- a/src/_includes/cloud/tip-creating-branches.md +++ b/src/_includes/cloud/tip-creating-branches.md @@ -1,2 +1,2 @@ {:.bs-callout-tip} -We highly recommend that you have your {{site.data.var.ee}} application fully deployed to an Integration or Staging environment before attempting to add a module. Always work in a development branch when adding a module to your implementation. If you do not have a branch, see [Get started creating branches]({{ site.baseurl }}/cloud/env/environments-start.html#getstarted). \ No newline at end of file +We highly recommend that you have your {{site.data.var.ee}} application fully deployed to an Integration or Staging environment before attempting to add a module. Always work in a development branch when adding a module to your implementation. If you do not have a branch, see [Get started creating branches]({{ site.baseurl }}/cloud/env/environments-start.html). \ No newline at end of file diff --git a/src/_includes/cloud/wings-variables.md b/src/_includes/cloud/wings-variables.md index da562baa3dd..d06e519b844 100644 --- a/src/_includes/cloud/wings-variables.md +++ b/src/_includes/cloud/wings-variables.md @@ -1 +1 @@ -If you want to add the same variables to your Integration, Staging, and Production environments, we recommend adding all of the variables one at a time to the Integration environment. After you finish adding variables, push the changes to the Staging and Production environments. \ No newline at end of file +If you want to add the same variables to your Integration, Staging, and Production environments, Adobe recommends adding all of the variables one at a time to the Integration environment. After you finish adding variables, push the changes to the Staging and Production environments. \ No newline at end of file diff --git a/src/_includes/config/es-webserver-overview.md b/src/_includes/config/es-webserver-overview.md index 93c622038ba..ffcff2e92a7 100644 --- a/src/_includes/config/es-webserver-overview.md +++ b/src/_includes/config/es-webserver-overview.md @@ -1,6 +1,6 @@ ## Overview of secure web server communication {#es-ws-secure-over} -This topic discusses an example of securing communication between your web server and search engine (Elasticsearch or OpenSearch) using a combination of Transport Layer Security (TLS) encryption and [HTTP basic authentication](http://tools.ietf.org/html/rfc2617). You can optionally configure other types of authentication as well; we provide references for that information. +This topic discusses an example of securing communication between your web server and search engine (Elasticsearch or OpenSearch) using a combination of Transport Layer Security (TLS) encryption and [HTTP basic authentication](https://datatracker.ietf.org/doc/html/rfc2617). You can optionally configure other types of authentication as well; we provide references for that information. (An older term, Secure Sockets Layer (SSL), is frequently used interchangeably with TLS. In this topic, we refer to *TLS*.) diff --git a/src/_includes/config/install-java8.md b/src/_includes/config/install-java8.md index 2898bd45646..32608dd4e7c 100644 --- a/src/_includes/config/install-java8.md +++ b/src/_includes/config/install-java8.md @@ -24,7 +24,7 @@ yum -y install java-1.8.0-openjdk ``` {:.bs-callout-info} -Java version 8 might not be available for all operating systems. For example, you can [search the list of available packages for Ubuntu](http://packages.ubuntu.com/). +Java version 8 might not be available for all operating systems. For example, you can [search the list of available packages for Ubuntu](https://packages.ubuntu.com/). #### Install the JDK on Ubuntu {#install-prereq-java-ubuntu} diff --git a/src/_includes/config/message-queue-consumers.md b/src/_includes/config/message-queue-consumers.md index 0bd02fc209e..a8854144467 100644 --- a/src/_includes/config/message-queue-consumers.md +++ b/src/_includes/config/message-queue-consumers.md @@ -23,4 +23,4 @@ bin/magento queue:consumers:start & See [queue:consumers:start]({{ page.baseurl }}/reference/cli/magento-commerce.html#queueconsumersstart) in the _Magento command-line reference_ for details about the command options, parameters, and values. {:.bs-callout-info} -The `--multi-process` option is present in the `queue:consumers:start` command, but to run consumers with parallel processes, configure the [`multiple_processes`]({{ site.baseurl }}/guides/v2.4/config-guide/mq/manage-message-queues.html#configuration) option in `/app/etc/env.php`. Otherwise, if `queue:consumers:start` is called with the `--multi-process` option, it will only work on a single thread. +The `--multi-process` option is present in the `queue:consumers:start` command, but to run consumers with parallel processes, configure the [`multiple_processes`](https://experienceleague.adobe.com/docs/commerce-operations/configuration-guide/message-queues/manage-message-queues.html#configuration) option in `/app/etc/env.php`. Otherwise, if `queue:consumers:start` is called with the `--multi-process` option, it will only work on a single thread. diff --git a/src/_includes/config/php-memcache.md b/src/_includes/config/php-memcache.md index e63349956dc..bb292d4f4d1 100644 --- a/src/_includes/config/php-memcache.md +++ b/src/_includes/config/php-memcache.md @@ -4,13 +4,13 @@ Because PHP has no native support for memcache, you must install an extension fo * `memcache` (no *d*), an older but very popular extension that is not maintained regularly. The `memcache` extension currently *does not* work with PHP 7. - [PHP documentation for memcache](http://php.net/manual/en/book.memcache.php) + [PHP documentation for memcache](https://php.net/manual/en/book.memcache.php) The exact name is `php5-memcache` for Ubuntu and `php-pecl-memcache` for CentOS * `memcached` (with a `d`), a newer and maintained extension that should be compatible with PHP 7. - [PHP documentation for memcached](http://php.net/memcached) + [PHP documentation for memcached](https://php.net/memcached) The exact name is `php5-memcached` for Ubuntu and `php-pecl-memcached` for CentOS diff --git a/src/_includes/config/redis-verify.md b/src/_includes/config/redis-verify.md index 4c7f338c485..2f952240d66 100644 --- a/src/_includes/config/redis-verify.md +++ b/src/_includes/config/redis-verify.md @@ -67,4 +67,4 @@ redis-cli ping If both commands succeeded, Redis is set up properly. #### More information -[`redis-cli` command reference](http://redis.io/topics/rediscli) +[`redis-cli` command reference](https://redis.io/topics/rediscli) diff --git a/src/_includes/graphql/cart-address-input-24.md b/src/_includes/graphql/cart-address-input-24.md index d30049e6eda..3ca6c4629e5 100644 --- a/src/_includes/graphql/cart-address-input-24.md +++ b/src/_includes/graphql/cart-address-input-24.md @@ -6,7 +6,8 @@ Attribute | Data Type | Description `firstname` | String! | The customer's first name `lastname` | String! | The customer's last name `postcode` | String | The postal code for the billing or shipping address -`region` | String | The region code and label for the billing or shipping address +`region` | String | The region code for the billing or shipping address +`region_id` | Int | The unique ID that identifies the region for the billing or shipping address `save_in_address_book` | Boolean | Determines whether to save the address in the customer's address book. The default value is true. `street` | [String]! | An array containing the street for the billing or shipping address -`telephone` | String | The telephone number for the billing or shipping address +`telephone` | String | The telephone number for the billing or shipping address \ No newline at end of file diff --git a/src/_includes/graphql/cart-user-input-errors.md b/src/_includes/graphql/cart-user-input-errors.md new file mode 100644 index 00000000000..cae8d362cd7 --- /dev/null +++ b/src/_includes/graphql/cart-user-input-errors.md @@ -0,0 +1,14 @@ + + +The `CartUserInputError` object contains information about errors that are specific to carts. + +| Attribute | Data Type | Description | +|-----------|-------------------------|------------------------------------------------------------------------------------------------------------------------------| +| `code` | CartUserInputErrorType! | A cart-specific error code. Possible values include `PRODUCT_NOT_FOUND`, `NOT_SALABLE`, `INSUFFICIENT_STOCK` and `UNDEFINED` | +| `message` | String! | A localized error message | diff --git a/src/_includes/graphql/catalog-service/headers.md b/src/_includes/graphql/catalog-service/headers.md new file mode 100644 index 00000000000..8bce01eb59e --- /dev/null +++ b/src/_includes/graphql/catalog-service/headers.md @@ -0,0 +1,8 @@ +Header | Description +--- | --- +`Magento-Customer-Group` | For storefront clients, this value will be available at the storefront in the `dataservices_customer_group` cookie. +`Magento-Environment-Id` | This value is displayed at **System** > **Commerce Services Connector** > **SaaS Identifier** > **Data Space ID** or can be obtained by running the `bin/magento config:show services_connector/services_id/environment_id` command. +`Magento-Store-Code`| The code assigned to the store associated with the active store view. For example, `main_website_store`. +`Magento-Store-View-Code`| The code assigned to the active store view. For example, `default`. +`Magento-Website-Code`| The code assigned to the website associated with the active store view. For example, `base`. +`X-Api-Key` | A unique key that is generated during the onboarding process. diff --git a/src/_includes/graphql/catalog-service/product-view.md b/src/_includes/graphql/catalog-service/product-view.md new file mode 100644 index 00000000000..a130843dd35 --- /dev/null +++ b/src/_includes/graphql/catalog-service/product-view.md @@ -0,0 +1,161 @@ +The `ProductView` return object is an interface that can contain the following fields. It is implemented by the [`SimpleProductView`](#SimpleProductView-type) and [`ComplexProductView`](#ComplexProductView-type) types. + +Field | Data Type | Description +--- | --- | --- +`attributes(roles: [String])` | [ProductViewAttribute] | A list of merchant-defined attributes designated for the storefront. +`description` | String | The detailed description of the product. +`id` | ID! | The product ID, generated as a composite key, unique per locale. +`images(roles: [String])` | [ProductViewImage] | A list of images defined for the product. +`metaDescription` | String | A brief overview of the product for search results listings. +`metaKeyword` | String | A comma-separated list of keywords that are visible only to search engines. +`metaTitle` | String | A string that is displayed in the title bar and tab of the browser and in search results lists. +`name` | String | Product name. +`shortDescription` | String | A summary of the product. +`sku` | String | Product SKU. +`url` | String | Canonical URL of the product. + +### ComplexProductView type {#ComplexProductView-type} + +The `ComplexProductView` type represents bundle, configurable, and group products. Complex product prices are returned as a price range, because price values can vary based on selected options. The type implements `ProductView`. + +Field | Data Type | Description +--- | --- | --- +`attributes(roles: [String])` | [ProductViewAttribute] | A list of merchant-defined attributes designated for the storefront. +`description` | String | The detailed description of the product. +`id` | ID! | The product ID, generated as a composite key, unique per locale. +`images(roles: [String])` | [ProductViewImage] | A list of images defined for the product. +`metaDescription` | String | A brief overview of the product for search results listings. +`metaKeyword` | String | A comma-separated list of keywords that are visible only to search engines. +`metaTitle` | String | A string that is displayed in the title bar and tab of the browser and in search results lists. +`name` | String | Product name. +`options` | [ProductViewOption] | A list of selectable options. +`priceRange` | ProductViewPriceRange | A range of possible prices for a complex product. +`shortDescription` | String | A summary of the product. +`sku` | String | Product SKU. +`url` | String | Canonical URL of the product. + +### Price type + +The `Price type` defines the price of a simple product or a part of a price range for a complex product. It can include a list of price adjustments. + +Field | Data Type | Description +--- | --- | --- +`adjustments` | [PriceAdjustment] | A list of price adjustments. +`amount` | ProductViewMoney | Contains the monetary value and currency code of a product. + +### PriceAdjustment type + +The `PriceAdjustment` type specifies the amount and type of a price adjustment. An example code value is `weee`. + +Field | Data Type | Description +--- | --- | --- +`amount` | Float | The amount of the price adjustment. +`code` | String | Identifies the type of price adjustment. + +### ProductViewAttribute type + +The `ProductViewAttribute` type is a container for customer-defined attributes that are displayed the storefront. + +Field | Data Type | Description +--- | --- | --- +`label` | String | Label of the attribute. +`name` | String! | Name of an attribute code. +`roles` | [String] | Roles designated for an attribute on the storefront, such as "Show on PLP", "Show in PDP", or "Show in Search". +`value` | JSON | Attribute value, arbitrary of type. + +### ProductViewImage type + +The `ProductViewImage` type contains details about a product image. + +Field | Data Type | Description +--- | --- | --- +`label` | String | The display label of the product image. +`roles` | [String] | A list that describes how the image is used. Can be `image`, `small_image`, or `thumbnail`. +`url` | String! | The URL to the product image. + +### ProductViewMoney type + +The `ProductViewMoney` type defines a monetary value, including a numeric value and a currency code. + +Field | Data Type | Description +--- | --- | --- +`currency` | ProductViewCurrency | A three-letter currency code, such as USD or EUR. +`value` | Float | A number expressing a monetary value. + +### ProductViewOption type + +Product options provide a way to configure products by making selections of particular option values. Selecting one or many options will point to a specific simple product. + +Field | Data Type | Description +--- | --- | --- +`id` | ID | The ID of the option. +`multi` | Boolean | Indicates whether the option allows multiple choices. +`required` | Boolean | Indicates whether the option must be selected. +`title` | String | The display name of the option. +`values` | [ProductViewOptionValue!] | List of available option values. + +### ProductViewOptionValue interface + +The `ProductViewOptionValue` interface defines the product fields available to the `ProductViewOptionValueProduct` and `ProductViewOptionValueConfiguration` types. + +Field | Data Type | Description +--- | --- | --- +`id` | ID | The ID of an option value. +`title` | String | The display name of the option value. + +### ProductViewOptionValueConfiguration type + +The `ProductViewOptionValueConfiguration` type is an implementation of `ProductViewOptionValue` for configuration values. + +Field | Data Type | Description +--- | --- | --- +`id` | ID | The ID of an option value. +`title` | String | The display name of the option value. + +### ProductViewOptionValueProduct type + +The `ProductViewOptionValueProduct` type is an implementation of `ProductViewOptionValue` that adds details about a simple product. + +Field | Data Type | Description +--- | --- | --- +`id` | ID | The ID of an option value. +`title` | String | The display name of the option value. +`product` | SimpleProductView | Details about a simple product. + +### ProductViewPrice type + +The `ProductViewPrice` type provides the base product price view, inherent for simple products. + +Field | Data Type | Description +--- | --- | --- +`final` | Price | Price value after discounts, excluding personalized promotions. +`regular` | Price | Base product price specified by the merchant. +`roles` | [String] | Determines if the price should be visible or hidden. + +### ProductViewPriceRange type + +The `ProductViewPriceRange` type lists the minimum and maximum price of a complex product. + +Field | Data Type | Description +--- | --- | --- +`maximum` | ProductViewPrice | Maximum price. +`minimum` | ProductViewPrice | Minimum price. + +### SimpleProductView type {#SimpleProductView-type} + +The `SimpleProductView` type represents all product types, except bundle, configurable, and group. Simple product prices do not contain price ranges. `SimpleProductView` implements `ProductView`. + +Field | Data Type | Description +--- | --- | --- +`attributes(roles: [String])` | [ProductViewAttribute] | A list of merchant-defined attributes designated for the storefront. +`description` | String | The detailed description of the product. +`id` | ID! | The product ID, generated as a composite key, unique per locale. +`images(roles: [String])` | [ProductViewImage] | A list of images defined for the product. +`metaDescription` | String | A brief overview of the product for search results listings. +`metaKeyword` | String | A comma-separated list of keywords that are visible only to search engines. +`metaTitle` | String | A string that is displayed in the title bar and tab of the browser and in search results lists. +`name` | String | Product name. +`price` | ProductViewPrice | Base product price view. +`shortDescription` | String | A summary of the product. +`sku` | String | Product SKU. +`url` | String | Canonical URL of the product. diff --git a/src/_includes/home/intro.html b/src/_includes/home/intro.html index b09271b6fa6..6067770d531 100644 --- a/src/_includes/home/intro.html +++ b/src/_includes/home/intro.html @@ -3,7 +3,9 @@

{{site.data.var.ee}} {{ page.guide_version }} Developer Guide

Everything you need to build and manage a customized Commerce store.

- {% include layout/search-form.html %} + {% if page.guide_version != "2.4" %} + {% include layout/search-form.html %} + {% endif %} diff --git a/src/_includes/install/allowoverrides24.md b/src/_includes/install/allowoverrides24.md index b290a07f1c2..ce5c992c71b 100644 --- a/src/_includes/install/allowoverrides24.md +++ b/src/_includes/install/allowoverrides24.md @@ -1,4 +1,4 @@ -Use this section to enable Apache 2.4 rewrites and specify a setting for the [distributed configuration file, `.htaccess`](http://httpd.apache.org/docs/current/howto/htaccess.html) +Use this section to enable Apache 2.4 rewrites and specify a setting for the [distributed configuration file, `.htaccess`](https://httpd.apache.org/docs/current/howto/htaccess.html) Magento uses server rewrites and `.htaccess` to provide directory-level instructions for Apache. @@ -11,7 +11,7 @@ Failure to enable these settings typically results in no styles displaying on yo a2enmod rewrite ``` -1. To enable Magento to use the distributed `.htaccess` configuration file, see the guidelines in the [Apache 2.4 documentation](http://httpd.apache.org/docs/current/mod/mod_rewrite.html). +1. To enable Magento to use the distributed `.htaccess` configuration file, see the guidelines in the [Apache 2.4 documentation](https://httpd.apache.org/docs/current/mod/mod_rewrite.html). Note that in Apache 2.4, the server's default site configuration file is `/etc/apache2/sites-available/000-default.conf`. diff --git a/src/_includes/install/file-system-umask.md b/src/_includes/install/file-system-umask.md index 7931bdd8051..322f62b795e 100644 --- a/src/_includes/install/file-system-umask.md +++ b/src/_includes/install/file-system-umask.md @@ -38,4 +38,4 @@ To set `magento_umask`: [file system owner]: {{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html -[umask]: http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html +[umask]: https://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html diff --git a/src/_includes/install/first-steps-cli.md b/src/_includes/install/first-steps-cli.md index a0a7e296812..f769f84028f 100644 --- a/src/_includes/install/first-steps-cli.md +++ b/src/_includes/install/first-steps-cli.md @@ -14,7 +14,7 @@ 1. To run Magento commands from any directory, add `/bin` to your system `PATH`. - Because shells have differing syntax, consult a reference like [unix.stackexchange.com](http://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables). + Because shells have differing syntax, consult a reference like [unix.stackexchange.com](https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables). Sample bash shell for CentOS: diff --git a/src/_includes/install/get-help.md b/src/_includes/install/get-help.md index 466c6ff801b..5213237f83a 100644 --- a/src/_includes/install/get-help.md +++ b/src/_includes/install/get-help.md @@ -4,6 +4,6 @@ In the event you need additional help, consult the following resources. |Commerce edition|How to get help| |--- |--- | -|{{site.data.var.ce}} and {{site.data.var.ee}}|- [Commerce support forums](http://community.magento.com/)
- [stack Exchange](http://magento.stackexchange.com)
- [Twitter](https://twitter.com/magento)| -|{{site.data.var.ce}}|[Submit bug reports](http://www.magentocommerce.com/bug-tracking)| -|{{site.data.var.ee}} only|[Submit bug reports](http://support.magentocommerce.com)| +|{{site.data.var.ce}} and {{site.data.var.ee}}|- [Commerce support forums](https://community.magento.com/)
- [stack Exchange](https://magento.stackexchange.com/)
- [Twitter](https://twitter.com/magento)| +|{{site.data.var.ce}}|[Submit bug reports](https://github.com/magento/magento2/issues)| +|{{site.data.var.ee}} only|[Submit bug reports](https://account.magento.com/customer/account/login/)| diff --git a/src/_includes/install/get-software_zip.md b/src/_includes/install/get-software_zip.md index 4d8fd598282..fce13afe10a 100644 --- a/src/_includes/install/get-software_zip.md +++ b/src/_includes/install/get-software_zip.md @@ -17,7 +17,7 @@ Archives are available in the following formats: `.zip`, `.tar.bz2`, `.tar.gz` {{site.data.var.ce}} -

www.magento.com/download

+

www.magento.com/download

Choose either the software or the software and sample data:

  • Magento-CE-<version>.* (without sample data)
  • Magento-CE-<version>+Samples.* (with sample data)
  • @@ -26,7 +26,7 @@ Archives are available in the following formats: `.zip`, `.tar.bz2`, `.tar.gz` {{site.data.var.ee}} Use the following steps: -
    1. Go to www.magento.com
    2. +
      1. Go to www.magento.com
      2. In the top horizontal navigation bar, click My Account.
      3. Log in with your Magento username and password.
      4. In the left navigation bar, click Downloads.
      5. diff --git a/src/_includes/install/system-requirements-table.html b/src/_includes/install/system-requirements-table.html index 2d75e7fb706..898af39162d 100644 --- a/src/_includes/install/system-requirements-table.html +++ b/src/_includes/install/system-requirements-table.html @@ -178,10 +178,21 @@ {% endfor %} - AWS ElasticSearch + AWS Elasticsearch {% for requirement in requirements %} - {% if requirement[1]['AWS ElasticSearch'] %} - {{requirement[1]['AWS ElasticSearch']}} + {% if requirement[1]['AWS Elasticsearch'] %} + {{requirement[1]['AWS Elasticsearch']}} + {% else %} + -- + {% endif %} + + {% endfor %} + + + AWS OpenSearch + {% for requirement in requirements %} + {% if requirement[1]['AWS OpenSearch'] %} + {{requirement[1]['AWS OpenSearch']}} {% else %} -- {% endif %} @@ -191,6 +202,3 @@ -

        - Elasticsearch version support and compatibility for {{site.data.var.ece}} is determined by service versions deployed on the Cloud infrastructure, and in rare cases may differ from the versions supported by {{site.data.var.ee}} on-premises deployments. -

        diff --git a/src/_includes/install/ulimit.md b/src/_includes/install/ulimit.md index d560990dbbb..ae9d51cafcd 100644 --- a/src/_includes/install/ulimit.md +++ b/src/_includes/install/ulimit.md @@ -6,7 +6,7 @@ In some cases, a very long query string causes the user's allocated memory space ## How to set open files ulimit -We recommend setting the open files [`ulimit`](http://ss64.com/bash/ulimit.html) for the Magento file system user to a value of 65536 or more. +We recommend setting the open files [`ulimit`](https://ss64.com/bash/ulimit.html) for the Magento file system user to a value of 65536 or more. You can do this either on the command line or you can make it a permanent setting for the user by editing their shell script. @@ -36,4 +36,4 @@ To optionally set the value in the user's Bash shell: 1. Save your changes to `.bashrc` and exit the text editor. {:.bs-callout-warning} -We recommend you avoid setting a value for [`pcre.recursion_limit`](http://php.net/manual/en/pcre.configuration.php) in `php.ini` because it can result in incomplete rollbacks with no failure notice. +We recommend you avoid setting a value for [`pcre.recursion_limit`](https://php.net/manual/en/pcre.configuration.php) in `php.ini` because it can result in incomplete rollbacks with no failure notice. diff --git a/src/_includes/layout/header-scripts.html b/src/_includes/layout/header-scripts.html index 0625420cf3b..5ae0261c8a4 100644 --- a/src/_includes/layout/header-scripts.html +++ b/src/_includes/layout/header-scripts.html @@ -7,7 +7,7 @@ }; var indices = [{ - label: "DevDocs", + label: "Results", name: "devdocs", facetFilters: [ ["guide_version: {% if page.guide_version == nil %}{{ site.version }}{% else %}{{ page.guide_version }}{% endif %}", @@ -19,26 +19,6 @@ attribute: "functional_areas" }], baseUrl: "{{ site.baseurl }}" - }, - { - label: "User Guide", - name: "merchdocs", - baseUrl: "{{ site.user_guide_url }}" - }, - { - label: "Commerce Reporting User Guide", - name: "merchdocs-mbi", - baseUrl: "https://docs.magento.com/mbi" - }, - { - label: "PWA", - name: "pwa-devdocs", - baseUrl: "https://developer.adobe.com" - }, - { - label: "Order Management", - name: "oms-en", - baseUrl: "https://omsdocs.magento.com" } ]; diff --git a/src/_includes/layout/header-styles.html b/src/_includes/layout/header-styles.html index 76dbbbdc3e5..a884e32a5f9 100644 --- a/src/_includes/layout/header-styles.html +++ b/src/_includes/layout/header-styles.html @@ -1,8 +1,2 @@ - - -{% if page.canonical_url != nil %} - -{% endif %} - diff --git a/src/_includes/layout/page-header.html b/src/_includes/layout/page-header.html index 29e6190b528..b2f7a0fff1b 100644 --- a/src/_includes/layout/page-header.html +++ b/src/_includes/layout/page-header.html @@ -1,20 +1,9 @@
        - {% if page.url contains "guides/v2.4/payments-integrations/" %} - {% unless page.url contains "guides/v2.4/payments-integrations/cardinal" %} -
        - The Payment Provider Gateway documentation uses the Magento 2.3 (now {{site.data.var.ee}} and {{site.data.var.ce}}) of the Braintree module as a - reference application. The Braintree module was removed in version 2.4.0. The concepts described in this guide are - still applicable to version 2.4.0, but the code samples are not supported. -
        - {% endunless %} - {% endif %} - - {% if page.url contains "guides/v2.4/install-gde/" %} + {% if page.url contains "mftf/v2" %}
        - You must install Elasticsearch or OpenSearch before installing {{ site.data.var.ee }} or {{ site.data.var.ce }} 2.4.0. See Search engine prerequisites for details. + This documentation is for version 2.0 of the framework, which supports Adobe Commerce and Magento Open Source 2.3.x. You can find documentation for version 3.0 here. See find your version if you are unsure about which version you are using.
        {% endif %} @@ -28,15 +17,9 @@ {% endif %} - {% unless page.github_link %} -
        - Contributions through pull requests are not supported for this topic. Open a GitHub issue to provide feedback. -
        - {% endunless %} - {% if page.url contains "guides/v2.3/" %} -
        - PHP 7.3 reached end of support in December 2021 and {{site.data.var.ee}} 2.3.x reaches end of support in September 2022. You may want to consider planning your upgrade now to {{site.data.var.ee}} 2.4.x and PHP 7.4.x to help maintain PCI compliance. +
        +
        {{site.data.var.ee}} 2.3 reached end of support in September 2022.
        {% endif %} @@ -48,7 +31,7 @@

        {{ page.title }}

        {{ page.subtitle }}

        {% endif %} - {% unless page.layout == 'migrated' %} + {% unless page.layout contains 'migrated' %} {% include layout/github-links.html %} {% endunless %} diff --git a/src/_includes/layout/site-nav.html b/src/_includes/layout/site-nav.html index 14222ec6541..59605fa8b4e 100644 --- a/src/_includes/layout/site-nav.html +++ b/src/_includes/layout/site-nav.html @@ -26,9 +26,9 @@ diff --git a/src/_includes/php-dev/lang-pack-file-struct.md b/src/_includes/php-dev/lang-pack-file-struct.md index 320b6950d95..b27de77b540 100644 --- a/src/_includes/php-dev/lang-pack-file-struct.md +++ b/src/_includes/php-dev/lang-pack-file-struct.md @@ -23,6 +23,6 @@ A typical directory structure for three language packages follows: │   └── registration.php ``` -The only required directory for a language package is the top-level directory. Although not required, we recommend that the directory name match the [ISO](http://www.iso.org/iso/home/standards/language_codes.htm) code to identify the locale. +The only required directory for a language package is the top-level directory. Although not required, we recommend that the directory name match the [ISO](https://www.iso.org/iso-639-language-codes.html) code to identify the locale. For more information about language packages, see [Translation dictionaries and language packages]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-i18n.html). diff --git a/src/_includes/release-notes/engcomm-2-4-5-issues.md b/src/_includes/release-notes/engcomm-2-4-5-issues.md new file mode 100644 index 00000000000..8b717f9111d --- /dev/null +++ b/src/_includes/release-notes/engcomm-2-4-5-issues.md @@ -0,0 +1,25 @@ +| Contributing community member | Pull Requests | Related GitHub Issues | +| ------- | ------- | ------- | +| hostep | [magento/magento2#30640](https://github.com/magento/magento2/pull/30640) | [magento/magento2#30607](https://github.com/magento/magento2/issues/30607) | +| nuzil | [magento/magento2#31944](https://github.com/magento/magento2/pull/31944) | [magento/magento2#31947](https://github.com/magento/magento2/issues/31947) | +| kate-kyzyma | [magento/magento2#32293](https://github.com/magento/magento2/pull/32293) | [magento/magento2#32378](https://github.com/magento/magento2/issues/32378) | +| wassuupp | [magento/magento2#32371](https://github.com/magento/magento2/pull/32371) | [magento/magento2#33767](https://github.com/magento/magento2/issues/33767) | +| nuzil | [magento/magento2#32648](https://github.com/magento/magento2/pull/32648) | [magento/magento2#32649](https://github.com/magento/magento2/issues/32649) | +| DmitryTsymbal | [magento/magento2#33342](https://github.com/magento/magento2/pull/33342) | [magento/magento2#33344](https://github.com/magento/magento2/issues/33344) | +| AnnaAPak | [magento/magento2#33557](https://github.com/magento/magento2/pull/33557) | [magento/magento2#33692](https://github.com/magento/magento2/issues/33692) | +| ihor-sviziev | [magento/magento2#33904](https://github.com/magento/magento2/pull/33904) | [magento/magento2#33929](https://github.com/magento/magento2/issues/33929) | +| marvinhinz | [magento/magento2#34388](https://github.com/magento/magento2/pull/34388) | [magento/magento2#35150](https://github.com/magento/magento2/issues/35150) | +| kate-kyzyma | [magento/magento2#34552](https://github.com/magento/magento2/pull/34552) | [magento/magento2#34631](https://github.com/magento/magento2/issues/34631) | +| in-session | [magento/magento2#34558](https://github.com/magento/magento2/pull/34558) | [magento/magento2#34563](https://github.com/magento/magento2/issues/34563) [magento/magento2#34595](https://github.com/magento/magento2/issues/34595) | +| convenient | [magento/magento2#34582](https://github.com/magento/magento2/pull/34582) | [magento/magento2#34988](https://github.com/magento/magento2/issues/34988) | +| ihor-sviziev | [magento/magento2#34943](https://github.com/magento/magento2/pull/34943) | [magento/magento2#34942](https://github.com/magento/magento2/issues/34942) | +| liamjtoohey | [magento/magento2#35050](https://github.com/magento/magento2/pull/35050) | [magento/magento2#35180](https://github.com/magento/magento2/issues/35180) | +| dudzio12 | [magento/magento2#35109](https://github.com/magento/magento2/pull/35109) | [magento/magento2#35108](https://github.com/magento/magento2/issues/35108) [magento/magento2#35128](https://github.com/magento/magento2/issues/35128) | +| shochdoerfer | [magento/magento2#35234](https://github.com/magento/magento2/pull/35234) | [magento/magento2#35315](https://github.com/magento/magento2/issues/35315) | +| tobias-forkel | [magento/magento2#35299](https://github.com/magento/magento2/pull/35299) | [magento/magento2#35458](https://github.com/magento/magento2/issues/35458) | +| Inevix | [magento/magento2#35349](https://github.com/magento/magento2/pull/35349) | [magento/magento2#35480](https://github.com/magento/magento2/issues/35480) | +| fredden | [magento/magento2#35356](https://github.com/magento/magento2/pull/35356) | [magento/magento2#35587](https://github.com/magento/magento2/issues/35587) | +| mahesh-singh-rajawat | [magento/magento2#35376](https://github.com/magento/magento2/pull/35376) | [magento/magento2#35204](https://github.com/magento/magento2/issues/35204) | +| Usik2203 | [magento/magento2#35385](https://github.com/magento/magento2/pull/35385) | [magento/magento2#35386](https://github.com/magento/magento2/issues/35386) | +| arifadobe | [magento/magento2#35439](https://github.com/magento/magento2/pull/35439) | [magento/magento2#35506](https://github.com/magento/magento2/issues/35506) | +| pykettk | [magento/magento2#35504](https://github.com/magento/magento2/pull/35504) | [magento/magento2#35505](https://github.com/magento/magento2/issues/35505) | \ No newline at end of file diff --git a/src/_includes/release-notes/engcomm-2-4-5-partner.md b/src/_includes/release-notes/engcomm-2-4-5-partner.md new file mode 100644 index 00000000000..7cd865118e3 --- /dev/null +++ b/src/_includes/release-notes/engcomm-2-4-5-partner.md @@ -0,0 +1,7 @@ +| Partner | Pull Requests | Related GitHub Issues | +| ------- | ------- | ------- | +| Fisheye | [magento/magento2#35504](https://github.com/magento/magento2/pull/35504) [magento/magento2#35356](https://github.com/magento/magento2/pull/35356) [magento/magento2#35355](https://github.com/magento/magento2/pull/35355) | [magento/magento2#35505](https://github.com/magento/magento2/issues/35505) [magento/magento2#35587](https://github.com/magento/magento2/issues/35587) | +| Atwix | [magento/magento2#35421](https://github.com/magento/magento2/pull/35421) [magento/magento2#35385](https://github.com/magento/magento2/pull/35385) [magento/magento2#35118](https://github.com/magento/magento2/pull/35118) [magento/magento2#35099](https://github.com/magento/magento2/pull/35099) [magento/magento2#35040](https://github.com/magento/magento2/pull/35040) [magento/magento2#34883](https://github.com/magento/magento2/pull/34883) [magento/magento2#34862](https://github.com/magento/magento2/pull/34862) [magento/magento2#34552](https://github.com/magento/magento2/pull/34552) [magento/magento2#33795](https://github.com/magento/magento2/pull/33795) [magento/magento2#33557](https://github.com/magento/magento2/pull/33557) [magento/magento2#33536](https://github.com/magento/magento2/pull/33536) [magento/magento2#33409](https://github.com/magento/magento2/pull/33409) [magento/magento2#33342](https://github.com/magento/magento2/pull/33342) [magento/magento2#32293](https://github.com/magento/magento2/pull/32293) [magento/magento2#28958](https://github.com/magento/magento2/pull/28958) | [magento/magento2#35386](https://github.com/magento/magento2/issues/35386) [magento/magento2#34631](https://github.com/magento/magento2/issues/34631) [magento/magento2#33692](https://github.com/magento/magento2/issues/33692) [magento/magento2#33344](https://github.com/magento/magento2/issues/33344) [magento/magento2#32378](https://github.com/magento/magento2/issues/32378) | +| Ampersand | [magento/magento2#35050](https://github.com/magento/magento2/pull/35050) [magento/magento2#34582](https://github.com/magento/magento2/pull/34582) | [magento/magento2#35180](https://github.com/magento/magento2/issues/35180) [magento/magento2#34988](https://github.com/magento/magento2/issues/34988) | +| EY | [magento/magento2#33898](https://github.com/magento/magento2/pull/33898) | | +| Comwrap | [magento/magento2#32648](https://github.com/magento/magento2/pull/32648) [magento/magento2#32371](https://github.com/magento/magento2/pull/32371) [magento/magento2#31944](https://github.com/magento/magento2/pull/31944) | [magento/magento2#32649](https://github.com/magento/magento2/issues/32649) [magento/magento2#33767](https://github.com/magento/magento2/issues/33767) [magento/magento2#31947](https://github.com/magento/magento2/issues/31947) | \ No newline at end of file diff --git a/src/_includes/webapi/b2b_roles.md b/src/_includes/webapi/b2b_roles.md index 3c372d4e29a..3812aa40aa7 100644 --- a/src/_includes/webapi/b2b_roles.md +++ b/src/_includes/webapi/b2b_roles.md @@ -14,13 +14,13 @@ Display name | Resource name         Checkout with Quote | Magento_NegotiableQuote::checkout       View quotes of subordinate users | Magento_NegotiableQuote::view_quotes_sub   Order Approvals | Magento_PurchaseOrder::all -    View My Purchase Orders | Magento_PurchaseOrder:view_purchase_orders -      View for subordinates | Magento_PurchaseOrder:view_purchase_orders_for_subordinates -      View for all company | Magento_PurchaseOrder:view_purchase_orders_for_company -    Auto-approve POs created within this role | Magento_PurchaseOrder:autoapprove_purchase_order -    Approve Purchase Orders without other approvals | Magento_PurchaseOrder:super_approve_purchase_order -    View Approval Rules | Magento_PurchaseOrder:view_approval_rules -      Create, Edit and Delete | Magento_PurchaseOrder:manage_approval_rules +    View My Purchase Orders | Magento_PurchaseOrder::view_purchase_orders +      View for subordinates | Magento_PurchaseOrder::view_purchase_orders_for_subordinates +      View for all company | Magento_PurchaseOrder::view_purchase_orders_for_company +    Auto-approve POs created within this role | Magento_PurchaseOrder::autoapprove_purchase_order +    Approve Purchase Orders without other approvals | Magento_PurchaseOrderRule::super_approve_purchase_order +    View Approval Rules | Magento_PurchaseOrderRule::view_approval_rules +      Create, Edit and Delete | Magento_PurchaseOrderRule::manage_approval_rules     Company Profile | Magento_Company::view       Account Information (View) | Magento_Company::view_account         Edit | Magento_Company::edit_account @@ -35,4 +35,4 @@ Display name | Resource name       View users and teams | Magento_Company::users_view         Manage users and teams | Magento_Company::users_edit     Company credit | Magento_Company::credit -      view | Magento_Company::credit_history \ No newline at end of file +      view | Magento_Company::credit_history diff --git a/src/_layouts/migrated-video.html b/src/_layouts/migrated-video.html new file mode 100644 index 00000000000..7bc924ea9e2 --- /dev/null +++ b/src/_layouts/migrated-video.html @@ -0,0 +1,109 @@ +{% include layout/header.html %} + +
        + + +
        +
        +
        +
        + This page has moved and will be redirected soon. See Migrated topics for the complete list. +
        + {% include layout/page-header.html %} +
        +
        +
        +
        +
        + +
        +
        +
        + + {{ content }} +
        +
        +
        {{ playlists[0].title }}
        + {% assign prev = current | minus: 2 %} + {% if prev >= 0 %} + + {% endif %} + + {% assign next = current %} + {% if next < videos.size %} + + {% endif %} +
        + + + +
        + + + {% include layout/page-info.html %} + +
        + + +
        + +{% include layout/footer.html %} + + diff --git a/src/_layouts/migrated-videos.html b/src/_layouts/migrated-videos.html new file mode 100644 index 00000000000..138f34338c2 --- /dev/null +++ b/src/_layouts/migrated-videos.html @@ -0,0 +1,58 @@ +{% include layout/header.html %} + +
        + + +
        +
        +
        +
        + This page has moved and will be redirected soon. See Migrated topics for the complete list. +
        + {% include layout/page-header.html %} +
        +
        + {{ content }} + {% assign sorted_videos = site.videos | where: 'layout', 'migrated-video' | sort: 'date' | reverse %} + {% if page.group != nil %} + {% assign sorted_videos = sorted_videos | where: 'group', page.group | sort: 'menu_order' %} + {% endif %} +
        + {% for video in sorted_videos %} + {% include video/preview.html %} + {% endfor %} +
        +
        +
        +
        + + +
        + +{% include layout/footer.html %} + + diff --git a/src/_layouts/redirect.html b/src/_layouts/redirect.html deleted file mode 100644 index 87fd33ec103..00000000000 --- a/src/_layouts/redirect.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - Redirecting… - - - - -

        Redirecting…

        - Click here if you are not redirected. - \ No newline at end of file diff --git a/src/_videos/fundamentals/add-a-javascript-module.md b/src/_videos/fundamentals/add-a-javascript-module.md index 0b5fafbb98e..6777a9a7db2 100644 --- a/src/_videos/fundamentals/add-a-javascript-module.md +++ b/src/_videos/fundamentals/add-a-javascript-module.md @@ -5,6 +5,8 @@ group: "Fundamentals of Magento 2 Development" title: "How to Add a JavaScript Module" thumbnail: "fundamentals/thumbs/add-js-module.png" menu_order: 1 +redirect_to: https://experienceleague.adobe.com/docs/commerce-learn/tutorials/frontend-development/add-javascript-module.html +layout: migrated-video --- Magento 2 uses requireJS as a tool to define the module structure. diff --git a/src/_videos/fundamentals/add-new-product-attribute.md b/src/_videos/fundamentals/add-new-product-attribute.md index 9d504c63def..9192b655d0c 100644 --- a/src/_videos/fundamentals/add-new-product-attribute.md +++ b/src/_videos/fundamentals/add-new-product-attribute.md @@ -5,6 +5,8 @@ group: "Fundamentals of Magento 2 Development" title: "How to Add a New Product Attribute" thumbnail: "fundamentals/thumbs/add-attribute.png" menu_order: 1 +redirect_to: https://experienceleague.adobe.com/docs/commerce-learn/tutorials/backend-development/add-product-attribute.html +layout: migrated-video --- Adding a product attribute is one of the most popular operations in both Magento 1 and Magento 2. diff --git a/src/_videos/fundamentals/create-a-new-module.md b/src/_videos/fundamentals/create-a-new-module.md index c6c4dffd49e..82f0660d172 100644 --- a/src/_videos/fundamentals/create-a-new-module.md +++ b/src/_videos/fundamentals/create-a-new-module.md @@ -5,6 +5,8 @@ group: "Fundamentals of Magento 2 Development" title: "Create a New Module" thumbnail: "fundamentals/thumbs/create-new-module.png" menu_order: 1 +redirect_to: https://experienceleague.adobe.com/docs/commerce-learn/tutorials/backend-development/create-module.html +layout: migrated-video --- Module is a structural element of Magento 2 – the whole system is built upon modules. Typically, the first step in creating a customization is building a module. diff --git a/src/_videos/fundamentals/create-a-new-page.md b/src/_videos/fundamentals/create-a-new-page.md index 7d4e698d437..ca9d5025678 100644 --- a/src/_videos/fundamentals/create-a-new-page.md +++ b/src/_videos/fundamentals/create-a-new-page.md @@ -5,6 +5,8 @@ group: "Fundamentals of Magento 2 Development" title: "Create a New Page" thumbnail: "fundamentals/thumbs/create-new-page.png" menu_order: 1 +redirect_to: https://experienceleague.adobe.com/docs/commerce-learn/tutorials/frontend-development/create-new-page.html +layout: migrated-video --- In this video on how to create a new page, we’ll create a page which returns JSON with one parameter: the message “HELLO WORLD!” diff --git a/src/_videos/fundamentals/index.md b/src/_videos/fundamentals/index.md index 105f1b4f0cb..1d30d507623 100644 --- a/src/_videos/fundamentals/index.md +++ b/src/_videos/fundamentals/index.md @@ -1,10 +1,12 @@ --- group: "Fundamentals of Magento 2 Development" -layout: videos +layout: migrated-videos permalink: "videos/fundamentals/" title: "Fundamentals of Magento 2 Development" menu_order: 0 +redirect_to: https://experienceleague.adobe.com/docs/commerce-learn/tutorials/overview.html --- +
        Magento U Logo

        diff --git a/src/_videos/index.html b/src/_videos/index.html deleted file mode 100644 index 37c72abe357..00000000000 --- a/src/_videos/index.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: videos -title: "Videos" -menu_title: "Videos" ---- diff --git a/src/catalog-service/images/catalog-service-architecture.png b/src/catalog-service/images/catalog-service-architecture.png new file mode 100644 index 00000000000..c6a351197a6 Binary files /dev/null and b/src/catalog-service/images/catalog-service-architecture.png differ diff --git a/src/catalog-service/images/catalog-service-architecture.svg b/src/catalog-service/images/catalog-service-architecture.svg new file mode 100644 index 00000000000..8461ec48c87 --- /dev/null +++ b/src/catalog-service/images/catalog-service-architecture.svg @@ -0,0 +1,4 @@ + + + +
        Tax
        Tax
        Core GraphQL
        Core GraphQL
        Indexation
        Indexation
        Adobe Commerce
        Adobe Commerce
        Customer
        Customer
        Shipping
        Shipping
        Payment
        Payment
        Products
        Products
        Client (Storefront)
        Client (Storefront)
        Products
        Products
        Catalog
        Storefront
        Service
        Catalog...
        Round-trip
        Latency
        Round-trip...
        Live
        Search
        Service
        Live...
        Recommendations
        Service
        Recommendations...
        Recommendations
        Recommendations
        SaaS 
        SaaS 
        Round-trip
        Latency
        Round-trip...
        Current
        Current
        New
        New
        Catalog
        Export
        Catalog...
        Search
        Search
        Services GraphQL
        Services GraphQL
        Text is not SVG - cannot display
        \ No newline at end of file diff --git a/src/catalog-service/index.md b/src/catalog-service/index.md new file mode 100644 index 00000000000..2f942b10f38 --- /dev/null +++ b/src/catalog-service/index.md @@ -0,0 +1,52 @@ +--- +group: catalog-service +title: Catalog Service for Adobe Commerce +ee_only: True +redirect_to: https://experienceleague.adobe.com/docs/commerce-merchant-services/catalog-service/overview.html +status: migrated +--- + +Catalog Service uses GraphQL queries to provide rich view-model (read-only) catalog data to quickly and fully render product-related content on storefront, including product detail pages and product list pages. Catalog Service, along with [Live Search]({{site.baseurl}}/live-search/overview.html), each implement queries that return information that is not available to the [`products` query]({{site.baseurl}}/guides/v2.4/graphql/queries/products.html) on Adobe Commerce and Magento Open Source. For example, the Catalog Service [`products` query](products.html) treats all products as either simple or complex. Simple products have a single price, while complex products have a price range. The Live Search [`productSearch` query](../live-search/product-search.html) returns detailed facet information. + +You run these queries by sending them to the gateway at `https://catalog-service.adobe.io/graphql`. + +{:.bs-callout-info} +The gateway is for future integration with Live Search and [Product Recommendations](https://experienceleague.adobe.com/docs/commerce-merchant-services/product-recommendations/overview.html?lang=en). In this release, you can access Catalog Service and Live Search queries from the same endpoint, if you have a valid license key for both products. However, the queries from the two products do not currently share any response data. + +## Architecture overview + +The two Adobe Commerce GraphQL systems are shown in the following diagram: + +![Catalog architecture diagram](images/catalog-service-architecture.png) + +In the core GraphQL system, the frontend client sends a request to the Commerce application, which receives each request, processes it, possibly sending a request through multiple subsystems, then returns a response to the storefront. This round trip can cause slow page load times, potentially impacting conversion rates. + +Catalog Service sends queries to a separate GraphQL gateway. The service accesses a separate data store that contains product details and related information, such as product attributes, variants, prices, and categories. The service keeps the database in sync with the Adobe Commerce through indexation. Because the service bypasses direct communication with the application, it is able to reduce the latency of the request and response cycle. + +The core and service GraphQL systems do not directly communicate with each other. You access each system from a different URL, and calls require different header information. The two GraphQL systems are designed to be used together. The [!DNL Catalog Service] GraphQL system augments the core system to make product storefront experiences faster. + +You can optionally implement [API Mesh for Adobe Developer App Builder](https://developer.adobe.com/graphql-mesh-gateway/) to integrate the two Adobe Commerce GraphQL systems with private and third-party APIs and other software interfaces using Adobe Developer. The mesh can be configured to ensure calls routed to each endpoint contain the correct authorization information in the headers. + +## Architectural details + +The following sections describe some of the differences between the two GraphQL systems. + +### Schema management + +Since Catalog Service operates as a service, integrators do not need to be concerned about the underlying version of Commerce. The syntax of the queries will be the same for all versions. In addition, the schema is consistent for all merchants. As a result, it will be easier to establish best practices, and increase reuse of storefront widgets significantly. + +### Simplification of product types + +The schema reduces the diversity of product types to two use cases: + +* Simple products are those that are defined with a single price and quantity. Catalog Service maps the simple, virtual, downloadable, and gift card product types to `simpleProductViews`. + +* Complex products are comprised of multiple simple products. The component simple products may have different prices. A complex product can also be defined so that the shopper can specify the quanity of component simple products. Catalog Service maps the configurable, bundle, and grouped product types to `complexProductViews`. + +Complex product options are unified and distinguished by their behavior, not type. Each option value represents a simple product. This option value has access to the simple product attributes, including price. When the shopper selects all the options for a complex product, the combination of selected options points to a specific simple product. The simple product remains ambiguous until the shopper selects a value for all the available options. + +### Prices + +Simple products represent the base selling unit that has a price. Catalog Service calculates the regular price before discounts as well as the final price after discounts. Pricing calculations may include fixed product taxes. They exclude personalized promotions. + +A complex product does not have a set price. Instead, Catalog Service returns the prices of linked simples. As an example, a merchant could initially assign the same prices to all the variants of a configurable product. If certain sizes or colors are unpopular, the merchant could reduce the prices of those variants. Thus, the price of the complex (configurable) product would at first show a price range, reflecting the price of both standard and unpopular variants. After the shopper has selected a value for all the available options, the storefront displays a single price. diff --git a/src/catalog-service/products.md b/src/catalog-service/products.md new file mode 100644 index 00000000000..0d94fe04bd0 --- /dev/null +++ b/src/catalog-service/products.md @@ -0,0 +1,375 @@ +--- +group: catalog-service +title: products query +ee_only: True +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/catalog-service/queries/products/ +status: migrated +--- + +The Catalog Service for Adobe Commerce `products` query returns details about the SKUs specified as input. Although this query has the same name as the [`products` query]({{site.baseurl}}/guides/v2.4/graphql/queries/products.html) that is provided with core Adobe Commerce and Magento Open Source, there are some differences. + +The Catalog Service query requires one or more SKU values as input. The query is primarily designed to retrieve information to render the following types of content: + +* Product detail pages - You can provide full details about the product identified by the specified SKU. + +* Product compare pages - You can retrieve selected information about multiple products, such as the name, price and image. + + + +The `ProductView` output object is significantly different than the core `products` query `Products` output object. Key differences include: + +* Products are either simple or complex. Simple, virtual, downloadable, and gift card products map to `SimpleProductView`. All other product types map to `ComplexProductView`. Simple products have defined prices. Complex products have price ranges. Since complex products are comprised of multiple simple products, they have access to simple product prices. + +* Merchant-defined attributes are exposed in a top-level container and indicate their storefront roles. Roles include Show on PDP, Show on PLP, and Show on Search Results. + +* Images are also accessible as a top-level container and can be filtered by their role. An image can have a base, small, or thumbnail role. + +## Syntax + +```graphql +products (skus [String]) [ProductView] +``` + +## Required headers + +You must specify the following HTTP headers to run this query. + +{% include graphql/catalog-service/headers.md %} + +## Example usage + +### Return details about a simple product + +The following query returns details about a simple product. + +**Request:** + +```graphql +query { + products(skus: ["24-MB02"]) { + id + sku + name + url + description + shortDescription + attributes(roles: ["visible in Search"]) { + name + label + value + roles + } + ... on SimpleProductView { + price { + regular { + amount { + value + currency + } + } + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "products": [ + { + "id": "TWpRdFRVSXdNZwBaR1ZtWVhWc2RBAE16UmxNamMwTUdFdE56UTNNeTAwWXpnNUxUZzNNekF0TlRjME1ETm1ZMlV5TjJGbABiV0ZwYmw5M1pXSnphWFJsWDNOMGIzSmwAWW1GelpRAFRVRkhVMVJITURBMU5UYzVNRE00", + "sku": "24-MB02", + "name": "Fusion Backpack 567890", + "url": "http://example.com/fusion-backpack.html", + "description": "

        With the Fusion Backpack strapped on, every trek is an adventure - even a bus ride to work. That's partly because two large zippered compartments store everything you need, while a front zippered pocket and side mesh pouches are perfect for stashing those little extras, in case you change your mind and take the day off.

        \r\n
          \r\n
        • Durable nylon construction.
        • \r\n
        • 2 main zippered compartments.
        • \r\n
        • 1 exterior zippered pocket.
        • \r\n
        • Mesh side pouches.
        • \r\n
        • Padded, adjustable straps.
        • \r\n
        • Top carry handle.
        • \r\n
        • Dimensions: 18\" x 10\" x 6\".
        • \r\n
        ", + "shortDescription": "", + "attributes": [ + { + "name": "activity", + "label": "Activity", + "value": [ + "Hiking", + "School", + "Yoga" + ], + "roles": [ + "visible in PDP", + "visible in compare list", + "visible in Search" + ] + }, + { + "name": "features_bags", + "label": "Features", + "value": [ + "Hydration Pocket", + "Audio Pocket", + "Waterproof", + "Lightweight" + ], + "roles": [ + "visible in PDP", + "visible in Search" + ] + }, + { + "name": "material", + "label": "Material", + "value": [ + "Burlap", + "Nylon", + "Polyester" + ], + "roles": [ + "visible in PDP", + "visible in Search" + ] + }, + { + "name": "strap_bags", + "label": "Strap/Handle", + "value": [ + "Adjustable", + "Double", + "Padded" + ], + "roles": [ + "visible in PDP", + "visible in Search" + ] + }, + { + "name": "style_bags", + "label": "Style Bags", + "value": [ + "Backpack", + "Laptop" + ], + "roles": [ + "visible in PDP", + "visible in Search" + ] + } + ], + "price": { + "regular": { + "amount": { + "value": 59, + "currency": "USD" + } + } + } + } + ] + } +} +``` + +### Return details about a complex product {#complex-product-example} + +The following query returns details about a configurable product. + +**Request:** + +```graphql +query { + products(skus: ["MH12"]) { + __typename + id + sku + name + url + description + shortDescription + attributes(roles: ["visible in Search"]) { + name + label + value + roles + } + ... on ComplexProductView { + priceRange { + maximum { + regular { + amount { + value + currency + } + } + } + minimum { + regular { + amount { + value + currency + } + } + } + } + options { + id + required + title + values { + id + title + } + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "products": [ + { + "__typename": "ComplexProductView", + "id": "VFVneE1nAFpHVm1ZWFZzZEEATXpSbE1qYzBNR0V0TnpRM015MDBZemc1TFRnM016QXROVGMwTURObVkyVXlOMkZsAGJXRnBibDkzWldKemFYUmxYM04wYjNKbABZbUZ6WlEAVFVGSFUxUkhNREExTlRjNU1ETTQ", + "sku": "MH12", + "name": "Ajax Full-Zip Sweatshirt 2", + "url": "http://example.com/ajax-full-zip-sweatshirt.html", + "description": "

        The Ajax Full-Zip Sweatshirt makes the optimal layering or outer piece for archers, golfers, hikers and virtually any other sportsmen. Not only does it have top-notch moisture-wicking abilities, but the tight-weave fabric also prevents pilling from repeated wash-and-wear cycles.

        \r\n

        • Mint striped full zip hoodie.
        • 100% bonded polyester fleece.
        • Pouch pocket.
        • Rib cuffs and hem.
        • Machine washable.

        ", + "shortDescription": "", + "attributes": [ + { + "name": "climate", + "label": "Climate", + "value": [ + "All-Weather", + "Cool", + "Indoor", + "Spring", + "Windy" + ], + "roles": [ + "visible in PDP", + "visible in Search" + ] + }, + { + "name": "customattribute", + "label": "customAttribute", + "value": "asd", + "roles": [ + "visible in PDP", + "visible in PLP", + "visible in Search" + ] + }, + { + "name": "material", + "label": "Material", + "value": [ + "Fleece", + "Polyester" + ], + "roles": [ + "visible in PDP", + "visible in Search" + ] + }, + { + "name": "pattern", + "label": "Pattern", + "value": "Striped", + "roles": [ + "visible in PDP", + "visible in Search" + ] + }, + { + "name": "testtttattribute", + "label": "testtttAttribute", + "value": "asd", + "roles": [ + "visible in PDP", + "visible in PLP", + "visible in Search" + ] + } + ], + "priceRange": { + "maximum": { + "regular": { + "amount": { + "value": 69, + "currency": "USD" + } + } + }, + "minimum": { + "regular": { + "amount": { + "value": 69, + "currency": "USD" + } + } + } + }, + "options": [ + { + "id": "color", + "required": false, + "title": "Color", + "values": [ + { + "id": "Y29uZmlndXJhYmxlLzkzLzU5", + "title": "Blue" + }, + { + "id": "Y29uZmlndXJhYmxlLzkzLzY3", + "title": "Red" + }, + { + "id": "Y29uZmlndXJhYmxlLzkzLzYy", + "title": "Green" + } + ] + }, + { + "id": "size", + "required": false, + "title": "Size", + "values": [ + { + "id": "Y29uZmlndXJhYmxlLzE4Ni8xNzU=", + "title": "XS" + }, + { + "id": "Y29uZmlndXJhYmxlLzE4Ni8xNzY=", + "title": "S" + }, + { + "id": "Y29uZmlndXJhYmxlLzE4Ni8xNzc=", + "title": "M" + }, + { + "id": "Y29uZmlndXJhYmxlLzE4Ni8xNzg=", + "title": "L" + }, + { + "id": "Y29uZmlndXJhYmxlLzE4Ni8xNzk=", + "title": "XL" + } + ] + } + ] + } + ] + } +} +``` + +## Output fields + +{% include graphql/catalog-service/product-view.md %} diff --git a/src/catalog-service/productsearch.md b/src/catalog-service/productsearch.md new file mode 100644 index 00000000000..0d395898e0c --- /dev/null +++ b/src/catalog-service/productsearch.md @@ -0,0 +1,267 @@ +--- +group: catalog-service +title: productSearch query +ee_only: True +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/catalog-service/queries/product-search/ +status: migrated +--- + +The Catalog Service for Adobe Commerce `productSearch` query can use LiveSearch to return details about the SKUs specified as input. Although this query is the same as the [`productSearch` query]({{site.baseurl}}/live-search/product-search.html), LiveSearch returns a `productView` object. See the [`productSearch` query]({{site.baseurl}}/live-search/product-search.html) topic for reference information. + +## Syntax + +```graphql +productSearch( + phrase: String! + page_size: Int = 20 + current_page: Int = 1 + filter: [SearchClauseInput!] + sort: [ProductSearchSortInput!] +): ProductSearchResponse! +``` + +## Example usage + +In the following example, the query returns information on the same products as the previous example. However, it has been constructed to return item information inside the Catalog Service `productView` object instead of the core `product` object. Note that the pricing information varies, depending on the product type. For the sake of brevity, facet information is not shown. + +**Request:** + +```graphql +{ + productSearch( + phrase: "bag" + sort: [ + { + attribute: "price" + direction: DESC }] + page_size: 9 + ) { + page_info { + current_page + page_size + total_pages + } + items { + productView { + name + sku + ... on SimpleProductView { + price { + final { + amount { + value + currency + } + } + regular { + amount { + value + currency + } + } + } + } + ... on ComplexProductView { + options { + id + title + required + values { + id + title + } + } + priceRange { + maximum { + final { + amount { + value + currency + } + } + regular { + amount { + value + currency + } + } + } + minimum { + final { + amount { + value + currency + } + } + regular { + amount { + value + currency + } + } + } + } + } + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "productSearch": { + "page_info": { + "current_page": 1, + "page_size": 9, + "total_pages": 3 + }, + "items": [ + { + "productView": { + "name": "Impulse Duffle", + "sku": "24-UB02", + "price": { + "final": { + "amount": { + "value": 74, + "currency": "USD" + } + }, + "regular": { + "amount": { + "value": 74, + "currency": "USD" + } + } + } + } + }, + { + "productView": { + "name": "Fusion Backpack 567890", + "sku": "24-MB02", + "price": { + "final": { + "amount": { + "value": 59, + "currency": "USD" + } + }, + "regular": { + "amount": { + "value": 59, + "currency": "USD" + } + } + } + } + }, + { + "productView": { + "name": "Rival Field Messenger", + "sku": "24-MB06", + "price": { + "final": { + "amount": { + "value": 45, + "currency": "USD" + } + }, + "regular": { + "amount": { + "value": 45, + "currency": "USD" + } + } + } + } + }, + { + "productView": { + "name": "Push It Messenger Bag", + "sku": "24-WB04", + "price": { + "final": { + "amount": { + "value": 45, + "currency": "USD" + } + }, + "regular": { + "amount": { + "value": 45, + "currency": "USD" + } + } + } + } + }, + { + "productView": { + "name": "Overnight Duffle", + "sku": "24-WB07", + "price": { + "final": { + "amount": { + "value": 45, + "currency": "USD" + } + }, + "regular": { + "amount": { + "value": 45, + "currency": "USD" + } + } + } + } + }, + { + "productView": { + "name": "Wayfarer Messenger Bag 987", + "sku": "24-MB05", + "price": { + "final": { + "amount": { + "value": 44, + "currency": "USD" + } + }, + "regular": { + "amount": { + "value": 44, + "currency": "USD" + } + } + } + } + }, + { + "productView": { + "name": "Driven Backpack", + "sku": "24-WB03", + "price": { + "final": { + "amount": { + "value": 36, + "currency": "USD" + } + }, + "regular": { + "amount": { + "value": 36, + "currency": "USD" + } + } + } + } + } + ] + } + } +} +``` diff --git a/src/catalog-service/refine-product.md b/src/catalog-service/refine-product.md new file mode 100644 index 00000000000..c5318928d7f --- /dev/null +++ b/src/catalog-service/refine-product.md @@ -0,0 +1,269 @@ +--- +group: catalog-service +title: refineProduct query +ee_only: True +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/catalog-service/queries/refine-product/ +status: migrated +--- + +The `refineProduct` query narrows the results of a `products` query that was run against a complex product. Before you run the `refineProduct` query, you must run the `products` query and construct the response so that it returns a list of `options` within a `ComplexProductView` inline fragment. When a shopper selects a product option (such as size or color) on the storefront, run the `refineProduct` query, specifying the SKU and selected option value IDs as input. Depending on the number of product options the complex product has, you might need to run the `refineProduct` query multiple times, until the shopper has selected a specific variant. + +You should construct the response of your query so that it contains both the `ComplexProductView` and `SimpleProductView` inline fragments. If the shopper has not selected all of the required options, the query will return the IDs of unselected options and the minimum and maximum price of the product, based on the selected options and possible remaining options. If the shopper has selected all the required options, the query returns details about a simple product, which includes a set price. + +## Syntax + +```graphql +refineProduct(sku: String!, optionIds: [String!]!): ProductView +``` + +## Required headers + +You must specify the following HTTP headers to run this query. + +{% include graphql/catalog-service/headers.md %} + +## Example usage + +### Return details about a partially selected complex product + +The following query returns details about the color options available for a medium-sized variant of product `MH12`. The value of the `optionIDs` input parameter is taken from the `products` query's [Return details about a complex product](products.html#complex-product-example) example. + +**Request:** + +```graphql +query { + refineProduct(optionIds: ["Y29uZmlndXJhYmxlLzE4Ni8xNzc="], sku: "MH12") { + __typename + id + sku + name + url + ... on SimpleProductView { + price { + final { + amount { + value + } + } + regular { + amount { + value + } + } + } + } + ... on ComplexProductView { + options { + id + title + required + values { + id + title + + } + } + priceRange { + maximum { + final { + amount { + value + } + } + regular { + amount { + value + } + } + } + minimum { + final { + amount { + value + } + } + regular { + amount { + value + } + } + } + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "refineProduct": { + "__typename": "ComplexProductView", + "id": "VFVneE1nAFpHVm1ZWFZzZEEATXpSbE1qYzBNR0V0TnpRM015MDBZemc1TFRnM016QXROVGMwTURObVkyVXlOMkZsAGJXRnBibDkzWldKemFYUmxYM04wYjNKbABZbUZ6WlEAVFVGSFUxUkhNREExTlRjNU1ETTQ", + "sku": "MH12", + "name": "Ajax Full-Zip Sweatshirt 2", + "url": "http://example.com/ajax-full-zip-sweatshirt.html", + "options": [ + { + "id": "color", + "title": "Color", + "required": false, + "values": [ + { + "id": "Y29uZmlndXJhYmxlLzkzLzU5", + "title": "Blue" + }, + { + "id": "Y29uZmlndXJhYmxlLzkzLzY3", + "title": "Red" + }, + { + "id": "Y29uZmlndXJhYmxlLzkzLzYy", + "title": "Green" + } + ] + } + ], + "priceRange": { + "maximum": { + "final": { + "amount": { + "value": 69 + } + }, + "regular": { + "amount": { + "value": 69 + } + } + }, + "minimum": { + "final": { + "amount": { + "value": 69 + } + }, + "regular": { + "amount": { + "value": 69 + } + } + } + } + } + } +} +``` + +### Return details about a fully selected complex product + +In the following query, the shopper has selected options for both size and color. The response contains details about the corresponding simple product. + +**Request:** + +```graphql +query { + refineProduct(optionIds: ["Y29uZmlndXJhYmxlLzE4Ni8xNzc=", "Y29uZmlndXJhYmxlLzkzLzU5"], sku: "MH12") { + __typename + id + sku + name + url + ... on SimpleProductView { + price { + final { + amount { + value + } + } + regular { + amount { + value + } + } + } + } + ... on ComplexProductView { + options { + id + title + required + values { + id + title + + } + } + priceRange { + maximum { + final { + amount { + value + } + } + regular { + amount { + value + } + } + } + minimum { + final { + amount { + value + } + } + regular { + amount { + value + } + } + } + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "refineProduct": { + "__typename": "SimpleProductView", + "id": "VFVneE1pMU5MVUpzZFdVAFpHVm1ZWFZzZEEATXpSbE1qYzBNR0V0TnpRM015MDBZemc1TFRnM016QXROVGMwTURObVkyVXlOMkZsAGJXRnBibDkzWldKemFYUmxYM04wYjNKbABZbUZ6WlEAVFVGSFUxUkhNREExTlRjNU1ETTQ", + "sku": "MH12-M-Blue", + "name": "Ajax Full-Zip Sweatshirt -M-Blue", + "url": "http://example.com/catalog/product/view/id/235/s/ajax-full-zip-sweatshirt-m-blue/", + "price": { + "final": { + "amount": { + "value": 69 + } + }, + "regular": { + "amount": { + "value": 69 + } + } + } + } + } +} +``` + +## Input fields + +You must specify a SKU value and at least one option ID as input. + +Field | Data type | Description +--- | --- | --- +`optionIds` | [String!]! | A list of IDs assigned to the product options the shopper has selected, such specific colors and sizes. +`sku` | String! | The SKU of a complex product. + +## Output fields + +{% include graphql/catalog-service/product-view.md %} diff --git a/src/cloud/architecture/cloud-architecture.md b/src/cloud/architecture/cloud-architecture.md index 6199cab8269..65fb22d3593 100644 --- a/src/cloud/architecture/cloud-architecture.md +++ b/src/cloud/architecture/cloud-architecture.md @@ -5,6 +5,8 @@ functional_areas: - Cloud redirect_from: - /cloud/basic-information/cloud-plans.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/architecture/cloud-architecture.html +status: migrated --- {{site.data.var.ece}} has a Starter and a Pro plan. Each plan has a unique architecture to drive your {{site.data.var.ee}} development and deployment process. Both the Starter plan and the Pro plan architecture deploy databases, web server, and caching servers across multiple environments for end-to-end testing while supporting continuous integration. diff --git a/src/cloud/architecture/pro-architecture.md b/src/cloud/architecture/pro-architecture.md index f007f05161e..4eede8662d3 100644 --- a/src/cloud/architecture/pro-architecture.md +++ b/src/cloud/architecture/pro-architecture.md @@ -7,6 +7,8 @@ redirect_from: - /cloud/architecture/pro-architecture-legacy.html functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/architecture/pro-architecture.html +status: migrated --- Your {{site.data.var.ece}} Pro architecture supports multiple environments that you can use to develop, test, and launch your store. @@ -76,7 +78,7 @@ Your project is a single Git repository with three, main environment branches fo ## Integration environment {#cloud-arch-int} -The Integration environment runs in a Linux container (LXC) on a grid of servers known as Platform-as-a-Service (PaaS). Each environment includes a web server and database to test your site. +The Integration environment runs in a Linux container (LXC) on a grid of servers known as Platform-as-a-Service (PaaS). Each environment includes a web server and database to test your site. See [Regional IP Addresses]({{ site.baseurl }}/cloud/env/environments-start.html#regional-ip-addresses) for a list of AWS and Azure IP addresses. **Recommended use cases:** @@ -92,7 +94,7 @@ For best performance in the Integration environment follow these best practices: - Limit use to one or two concurrent users -- Disable crons and manually run as needed +- Disable cron jobs and manually run as needed **Caveats:** @@ -140,7 +142,7 @@ See [Deploy your store]({{ site.baseurl }}/cloud/live/stage-prod-live.html) and ## Production environment {#cloud-arch-prod} -The Production environment runs your public-facing single and multi-site storefronts. This environment runs on dedicated IaaS hardware featuring redundant, high-availability nodes for continuous access and failover protection for your customers. The Production environment includes all services in the Staging environment, plus the [New Relic Infrastructure (NRI)](https://newrelic.com/products/infrastructure) service, which automatically connects with the application data and performance analytics to provide dynamic server monitoring. +The Production environment runs your public-facing single and multi-site storefronts. This environment runs on dedicated IaaS hardware featuring redundant, high-availability nodes for continuous access and failover protection for your customers. The Production environment includes all services in the Staging environment, plus the [New Relic Infrastructure (NRI)](https://newrelic.com/platform/infrastructure) service, which automatically connects with the application data and performance analytics to provide dynamic server monitoring. You cannot create a branch from the Production environment branch. You must push code changes from the Staging environment branch to the Production environment branch. @@ -161,17 +163,15 @@ The three gateways map to the three servers in your Production environment clust Your Pro plan backup and recovery approach uses a high-availability architecture combined with full-system backups. We replicate each Project—all data, code, and assets—across three separate AWS or Azure Availability Zones, each zone with a separate data center. -In addition to the redundancy of the high-availability architecture, {{site.data.var.ece}} provides -incremental backups, which include the file system and the database, every hour for the last 24 hours of operation. After the -24-hour period, we retain the backups according to the following schedule: +In addition to the redundancy of the high-availability architecture, {{site.data.var.ece}} provides incremental backups, which include the file system and the database, according to the following schedule: -Time Period | Backup Retention Policy ---- | --- -Days 1 to 3 | Each backup -Days 4 to 6 | One backup per day -Weeks 2 to 6 | One backup per week -Weeks 8 to 12 | One bi-weekly backup -Weeks 12 to 22 | One backup per month +| Time Period | Backup Retention Policy | +| ------------------ | ----------------------- | +| Day 1 through 3 | One backup per hour | +| Days 4 through 7 | One backup per day | +| Weeks 2 through 6 | One backup per week | +| Weeks 8 through 12 | One bi-weekly backup | +| Month 3 through 5 | One backup per month | {{site.data.var.ece}} creates the backup using snapshots to encrypted elastic block storage (EBS) volumes. An EBS snapshot is immediate, but the time it takes to write to the simple storage service (S3) depends on the volume of changes. @@ -179,7 +179,7 @@ Weeks 12 to 22 | One backup per month - **Recovery Time Objective (RTO)**—depends on the size of the storage. Large EBS volumes take more time to restore. {:.bs-callout-tip} -On Pro Staging and Production environments, you must submit a support ticket to restore an environment from an automatic backup. You can backup the database and code for your Production and Staging environments using CLI commands. See [Dump your database]({{site.baseurl}}/cloud/project/project-webint-snap.html#db-dump) and [bin/magento setup:backup]({{site.baseurl }}/guides/v2.4/reference/cli/magento-commerce.html#setupbackup). For Integration environments, we highly recommend that you create a snapshot as a first step after accessing your {{site.data.var.ece}} project and before applying any major changes. See [Snapshots and backup management]({{site.baseurl}}/cloud/project/project-webint-snap.html). +On Pro Staging and Production environments, you must [Submit a support ticket](https://support.magento.com/hc/en-us/articles/360000913794#submit-ticket) to restore an environment from an automatic backup. You can create a backup of the database and code for your Production and Staging environments using `magento-cloud` CLI commands. See [Dump your database]({{site.baseurl}}/cloud/project/project-webint-snap.html#db-dump) and [`bin/magento setup:backup`]({{site.baseurl }}/guides/v2.4/reference/cli/magento-commerce.html#setupbackup). For Integration environments, we highly recommend that you create a snapshot as a first step after accessing your {{site.data.var.ece}} project and before applying any major changes. See [Snapshots and backup management]({{site.baseurl}}/cloud/project/project-webint-snap.html). ### Production technology stack @@ -205,14 +205,14 @@ The following figure shows the technologies used in the Production environment: {{site.data.var.ee}} can scale from the smallest Pro12 cluster to the largest Pro120 cluster. -- Pro12 offers a 12-CPU (4 x 3 nodes) and 48GB RAM (16 x 3 nodes) -- Pro120 offers 120 CPU (40 x 3 nodes) up to 480GB RAM (160 x 3 nodes) +- Pro12 offers a 12-CPU (4 x 3 nodes) and 48-GB RAM (16 x 3 nodes) +- Pro120 offers 120 CPU (40 x 3 nodes) up to 480-GB RAM (160 x 3 nodes) -Our redundant architecture means we can offer upscaling without downtime. When upscaling, we rotate each of the three instances to upgrade capacity without impacting site operation. +Our redundant architecture means that we can offer to upscale without downtime. When upscaling, we rotate each of the three instances to upgrade capacity without impacting site operation. For example, you can add extra web servers to an existing cluster should the constriction be at the PHP level rather than the database level. This provides _horizontal scaling_ to complement the vertical scaling provided by extra CPUs on the database level. See [Scaled architecture]({{ site.baseurl }}/cloud/architecture/scaled-architecture.html). -If you expect a significant increase in traffic for an event or other reason, you can request a temporary increase in capacity. See [How to request temporary Magento upsize](https://support.magento.com/hc/en-us/articles/360041138511) in the _Commerce Help Center_. +If you expect a significant increase in traffic for an event or other reason, you can request a temporary increase in capacity. See [How to request temporary upsize](https://support.magento.com/hc/en-us/articles/360041138511) in the _Commerce Help Center_. ## Master environment @@ -221,7 +221,7 @@ On Pro plan projects, the Master branch provides an active PaaS environment with **Caveats:** - Do **not** create a branch from Master. Use the Integration environment branch to create new, active branches. -- Do not use the Master environment for development, UAT or performance testing +- Do not use the Master environment for development, UAT, or performance testing ## Software versions {#cloud-arch-software} diff --git a/src/cloud/architecture/pro-develop-deploy-workflow.md b/src/cloud/architecture/pro-develop-deploy-workflow.md index 66699d6ffa0..ac4671f9e0a 100644 --- a/src/cloud/architecture/pro-develop-deploy-workflow.md +++ b/src/cloud/architecture/pro-develop-deploy-workflow.md @@ -7,6 +7,8 @@ redirect_from: - /cloud/trouble/pro-env-management.html functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/architecture/pro-develop-deploy-workflow.html +status: migrated --- The {{site.data.var.ece}} Pro plan includes a single Git repository with a Global Master and three main environments: the **Integration** environment for development and testing, the **Staging** environment for testing with all services, and the **Production** environment for launching and maintaining your live site. See [Pro architecture]({{ site.baseurl }}/cloud/architecture/pro-architecture.html) for an overview. @@ -17,7 +19,7 @@ The following graphic demonstrates the Pro develop and deploy workflow, which us ## Development workflow {#develop} -The Integration environment provides a single, base integration branch containing your {{site.data.var.ece}} code. You can create one additional, environment branch. This allows for up to two active branches deployed to Platform-as-a-Service (PaaS) containers.(PaaS) containers. +The Integration environment provides a single, base integration branch containing your {{site.data.var.ece}} code. You can create one additional active environment branch. This allows for up to two active branches deployed to Platform-as-a-Service (PaaS) containers. There is no limit on the number of inactive environments. {% include cloud/note-enhanced-integration-envs-kb.md%} diff --git a/src/cloud/architecture/scaled-architecture.md b/src/cloud/architecture/scaled-architecture.md index d57180b15e6..3d8aca9d203 100644 --- a/src/cloud/architecture/scaled-architecture.md +++ b/src/cloud/architecture/scaled-architecture.md @@ -3,6 +3,8 @@ group: cloud-guide title: Scaled architecture functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/architecture/scaled-architecture.html +status: migrated --- The Cloud infrastructure scales according to your resource needs to achieve greater efficiency. The {{site.data.var.ece}} monitors your applications and can adjust capacity to maintain steady, predictable performance. Converting to this architecture helps to mitigate problems, such as latency or large spikes in traffic. diff --git a/src/cloud/architecture/starter-architecture.md b/src/cloud/architecture/starter-architecture.md index 4079dddbe18..11659c31d8d 100644 --- a/src/cloud/architecture/starter-architecture.md +++ b/src/cloud/architecture/starter-architecture.md @@ -5,6 +5,8 @@ functional_areas: - Cloud redirect_from: - /cloud/basic-information/starter-architecture.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/architecture/starter-architecture.html +status: migrated --- Your {{site.data.var.ece}} Starter architecture supports up to **four** environments, including a Master environment that contains the initial project code, the Staging environment, and up to two Integration environments. diff --git a/src/cloud/architecture/starter-develop-deploy-workflow.md b/src/cloud/architecture/starter-develop-deploy-workflow.md index d45cc33a822..cbe6e88747a 100644 --- a/src/cloud/architecture/starter-develop-deploy-workflow.md +++ b/src/cloud/architecture/starter-develop-deploy-workflow.md @@ -5,6 +5,8 @@ functional_areas: - Cloud redirect_from: - /cloud/basic-information/starter-develop-deploy-workflow.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/architecture/starter-develop-deploy-workflow.html +status: migrated --- The {{site.data.var.ece}} includes a single Git repository with a master branch for the Production environment that can be branched to create Staging and Integration environments for testing and development work. You can have up to four active environments, including a `master` environment for your production server. See [Starter architecture]({{ site.baseurl }}/cloud/architecture/starter-architecture.html) for an overview. diff --git a/src/cloud/before/before-setup-env-2_clone.md b/src/cloud/before/before-setup-env-2_clone.md index ac8376e2882..d9065492bb5 100644 --- a/src/cloud/before/before-setup-env-2_clone.md +++ b/src/cloud/before/before-setup-env-2_clone.md @@ -6,6 +6,8 @@ redirect_from: functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/cli-branches.html +status: migrated --- {:.ref-header} diff --git a/src/cloud/before/before-setup-env-install.md b/src/cloud/before/before-setup-env-install.md index 1ce7677b736..a58a25f132a 100644 --- a/src/cloud/before/before-setup-env-install.md +++ b/src/cloud/before/before-setup-env-install.md @@ -8,6 +8,8 @@ functional_areas: - Install - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/overview.html +status: migrated --- {:.ref-header} diff --git a/src/cloud/before/before-workspace-file-sys-owner.md b/src/cloud/before/before-workspace-file-sys-owner.md index 614731e59f3..c6fb56d3f39 100644 --- a/src/cloud/before/before-workspace-file-sys-owner.md +++ b/src/cloud/before/before-workspace-file-sys-owner.md @@ -4,6 +4,8 @@ title: Set up the file system owner functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/cloud-cli.html +status: migrated --- {:.ref-header} @@ -11,7 +13,7 @@ Previous step [Enable SSH keys]({{ site.baseurl }}/cloud/before/before-workspace-ssh.html) -**This step is optional if you installed nginx as your web server.** The [file system owner]({{ site.baseurl }}/guides/v2.3/install-gde/prereq/file-sys-perms-over.html#magento-file-system-owner) provides root access and permissions, for security reasons on a hosted system. Apache installations require +**This step is optional if you installed nginx as your web server.** The [file system owner]({{ site.baseurl }}/guides/v2.3/install-gde/prereq/file-sys-perms-over.html) provides root access and permissions, for security reasons on a hosted system. To enable the web server (Apache) to write files and directories in the file system but to also maintain *ownership* by the [file system owner](https://glossary.magento.com/magento-file-system-owner), both users must be in the same group. This is necessary so both users can share access to {{site.data.var.ee}} files, including files created using the [Admin](https://glossary.magento.com/magento-admin) or other web-based utilities. @@ -19,7 +21,7 @@ You need to create a new file system owner and put that user in the web server's ## Create the file system owner {#mage-owner-create-user} -Create the file system owner with a strong password. file system owner is another term for the *command-line user*. +Create the file system owner with a strong password. File system owner is another term for the *command-line user*. To create the file system owner, enter the following command as a user with `root` privileges: diff --git a/src/cloud/before/before-workspace-magento-prereqs.md b/src/cloud/before/before-workspace-magento-prereqs.md index 03121d47363..5cc905dc2ef 100644 --- a/src/cloud/before/before-workspace-magento-prereqs.md +++ b/src/cloud/before/before-workspace-magento-prereqs.md @@ -8,6 +8,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/overview.html +status: migrated --- {:.ref-header} @@ -46,22 +48,22 @@ We strongly recommend installing [Nginx]({{ site.baseurl }}/guides/v2.3/install- ## PHP (local) {#php} -Install [PHP](https://glossary.magento.com/php) on your local workstation. For information on installing PHP, see [PHP Settings]({{ site.baseurl }}/guides/v2.3/install-gde/prereq/php-settings.html). For instructions for another OS, see the [PHP documentation](http://php.net/manual/en/install.php). +Install [PHP](https://glossary.magento.com/php) on your local workstation. For information on installing PHP, see [PHP Settings]({{ site.baseurl }}/guides/v2.3/install-gde/prereq/php-settings.html). For instructions for another OS, see the [PHP documentation](https://php.net/manual/en/install.php). The following packages may also be helpful for your PHP installation: -* [bcmath](http://php.net/manual/en/book.bc.php) -* [curl](http://php.net/manual/en/book.curl.php) +* [bcmath](https://php.net/manual/en/book.bc.php) +* [curl](https://php.net/manual/en/book.curl.php) * ext-dom * [fpm](https://php-fpm.org/) -* [gd](http://php.net/manual/en/book.image.php) -* [intl](http://php.net/manual/en/book.intl.php) -* [json](http://php.net/manual/en/ref.json.php) -* [mbstring](http://php.net/manual/en/book.mbstring.php) -* [mcrypt](http://php.net/manual/en/book.mcrypt.php) (for PHP 7.1 and earlier only) -* [mysql](http://php.net/manual/en/set.mysqlinfo.php) -* [xml](http://php.net/manual/en/book.xml.php) -* [zip](http://php.net/manual/en/book.zip.php) +* [gd](https://php.net/manual/en/book.image.php) +* [intl](https://php.net/manual/en/book.intl.php) +* [json](https://php.net/manual/en/ref.json.php) +* [mbstring](https://php.net/manual/en/book.mbstring.php) +* [mcrypt](https://php.net/manual/en/book.mcrypt.php) (for PHP 7.1 and earlier only) +* [mysql](https://php.net/manual/en/set.mysqlinfo.php) +* [xml](https://php.net/manual/en/book.xml.php) +* [zip](https://php.net/manual/en/book.zip.php) ### Set up PHP memory limit {#cloud-first-php} @@ -92,7 +94,7 @@ To set a memory limit: ## Database (local) {#database} -You have multiple options for databases to use for your local. One database option you may want to consider is MariaDB. The {{site.data.var.ee}} environments use [MariaDB](https://mariadb.org/), with a [Galera Cluster](http://galeracluster.com/) with triple redundancy in the Production environment. +You have multiple options for databases to use for your local. One database option you may want to consider is MariaDB. The {{site.data.var.ee}} environments use [MariaDB](https://mariadb.org/), with a [Galera Cluster](https://galeracluster.com/) with triple redundancy in the Production environment. Regardless of database, for **Pro plans** you need to modify the `auto_increment_increment` value. @@ -140,7 +142,7 @@ You need to set an auto-increment value for the MariaDB installation. ### Pro: Set up the auto-increment for MySQL {#cloud-mysql} -The MySQL configuration parameter [`auto_increment_increment`](http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html) is set to `1` by default in a local MySQL installation. You need to change this value to `3`. The {{site.data.var.ee}} database cluster includes 3 database implementations. The increment ensures data is unique across all databases for consistent data in the High Availability structure. +The MySQL configuration parameter [`auto_increment_increment`](https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html) is set to `1` by default in a local MySQL installation. You need to change this value to `3`. The {{site.data.var.ee}} database cluster includes 3 database implementations. The increment ensures data is unique across all databases for consistent data in the High Availability structure. To avoid issues, we recommend you set `auto_increment_increment=3`. diff --git a/src/cloud/before/before-workspace-ssh.md b/src/cloud/before/before-workspace-ssh.md index 5595c54e74a..4c2f8dbe0c3 100644 --- a/src/cloud/before/before-workspace-ssh.md +++ b/src/cloud/before/before-workspace-ssh.md @@ -8,6 +8,8 @@ functional_areas: - Setup - Security - Config +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/secure-connections.html +status: migrated --- {:.ref-header} diff --git a/src/cloud/before/before-workspace.md b/src/cloud/before/before-workspace.md index 53ed0bde7df..1f91e7f0a9f 100644 --- a/src/cloud/before/before-workspace.md +++ b/src/cloud/before/before-workspace.md @@ -4,6 +4,8 @@ title: Prepare for local environment setup functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/project/overview.html +status: migrated --- To develop, deploy, and test {{site.data.var.ece}}, you need to setup your local environment and clone your project's master Git branch. This local environment provides a development system for your custom code, extensions, and configurations to push for active testing in one of the Integration environments. @@ -28,7 +30,7 @@ You need to set up the [file system owner](https://glossary.magento.com/magento- ## Recommended tools -This guide assumes you're working on a UNIX system or in a UNIX shell environment. For MAC OS and Linux-based systems, feel free to use any CLI tools of choice for issuing commands. For Windows users, we recommend a UNIX environment like [Cygwin](https://www.cygwin.com/), [Putty](http://www.putty.org/), or Git Bash. +This guide assumes you're working on a UNIX system or in a UNIX shell environment. For MAC OS and Linux-based systems, feel free to use any CLI tools of choice for issuing commands. For Windows users, we recommend a UNIX environment like [Cygwin](https://www.cygwin.com/), [Putty](https://www.putty.org/), or Git Bash. For development on your local workstation, use any development environment or tools you prefer. For recommendations, many {{site.data.var.ee}} developers use tools including [WebStorm](https://www.jetbrains.com/webstorm/), [PhpStorm](https://www.jetbrains.com/phpstorm/), and [Atom](https://atom.io/). diff --git a/src/cloud/bk-cloud.md b/src/cloud/bk-cloud.md index b1f752beebf..48aecd24031 100644 --- a/src/cloud/bk-cloud.md +++ b/src/cloud/bk-cloud.md @@ -3,6 +3,8 @@ group: cloud-guide title: Cloud guide for Commerce functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/overview.html +status: migrated --- {{site.data.var.ece}} is a managed, automated hosting platform for the {{site.data.var.ee}} software. {{site.data.var.ece}} comes with additional features that set it apart from the on-premises {{site.data.var.ee}} and {{site.data.var.ce}} platforms: diff --git a/src/cloud/cdn/cloud-fastly-custom-response.md b/src/cloud/cdn/cloud-fastly-custom-response.md index 72d69ac8471..13b6c6ce207 100644 --- a/src/cloud/cdn/cloud-fastly-custom-response.md +++ b/src/cloud/cdn/cloud-fastly-custom-response.md @@ -7,6 +7,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/setup-fastly/fastly-custom-response.html +status: migrated --- When a request to the Fastly origin fails, Fastly returns default response pages with basic formatting and generic messaging that can be confusing for users. For example, Fastly returns the following default error page when a request to the Fastly origin fails because of a 503 error. diff --git a/src/cloud/cdn/cloud-fastly.md b/src/cloud/cdn/cloud-fastly.md index a3e5d907f54..8f69c600ad0 100644 --- a/src/cloud/cdn/cloud-fastly.md +++ b/src/cloud/cdn/cloud-fastly.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Security +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/fastly.html +status: migrated --- {:.bs-callout-warning} @@ -12,7 +14,7 @@ To maintain PCI compliance for {{site.data.var.ee}} sites deployed on the Cloud Fastly provides the following services to optimize and secure content delivery operations for your {{ site.data.var.ece }} projects. These services are included with your {{ site.data.var.ece }} subscription at no additional cost. -- **Content delivery network (CDN)**—Varnish-based service that caches your site pages, assets, CSS, and more in backend data centers you set up. As customers access your site and stores, the requests hit Fastly to load cached pages faster. The CDN service provides the following features: +- **Content Delivery Network (CDN)**—Varnish-based service that caches your site pages, assets, CSS, and more in backend data centers you set up. As customers access your site and stores, the requests hit Fastly to load cached pages faster. The CDN service provides the following features: - Cache your site pages, assets, CSS, and more in back-end data centers that you set up to reduce bandwidth load and costs @@ -28,24 +30,25 @@ Fastly provides the following services to optimize and secure content delivery o - Create [custom error response pages] -- **Security**—After you set up your {{ site.data.var.ece }} project to use the Fastly CDN, additional security features are available to protect your sites and network. - - [**DDoS protection**](#ddos-protection)—Built-in protection against common attacks like Ping of Death, Smurf attacks, as well as other ICMP-based floods. +- **Security**—After you set up your {{ site.data.var.ece }} project to use the Fastly CDN, additional security features are available to protect your sites and network: - - **[Web Application Firewall]**—Managed web application firewall service that provides PCI-compliant protection to block malicious traffic before it can damage your production {{ site.data.var.ece }} sites and network. The WAF service is available on Pro and Starter Production environments only. + - [Web Application Firewall (WAF)]—Managed web application firewall service that provides PCI-compliant protection to block malicious traffic before it can damage your production {{ site.data.var.ece }} sites and network. The WAF service is available on Pro and Starter Production environments only. - - **SSL/TLS certificates**–The Fastly service requires an SSL/TLS certificate to serve secure traffic over HTTPS. {{site.data.var.ee}} provides a Domain-validated Let's Encrypt SSL/TLS certificate for each Staging and Production environment. {{site.data.var.ee}} completes domain validation and certificate provisioning during the Fastly set up process. See [TLS and Fastly]. + - [Distributed Denial of Service (DDoS) protection](#ddos-protection)—Built-in DDoS protection against common attacks like Ping of Death, Smurf attacks, and other ICMP-based flood attacks. - - **Origin cloaking**–Adobe can enable Origin Cloaking for all {{ site.data.var.ece }} projects. This option hides the IP addresses of your origin servers to protect them from direct access. When this feature is enabled, all traffic to your Cloud infrastructure must route through the Fastly CDN or another secure channel. Any traffic sent directly to the Origin servers is blocked. If you have traffic that does not require caching, you can customize the Fastly service configuration to allow requests to [bypass the Fastly cache]. + - [SSL/TLS certificates]—The Fastly service requires an SSL/TLS certificate to serve secure traffic over HTTPS. {{site.data.var.ee}} provides a Domain-validated Let's Encrypt SSL/TLS certificate for each Staging and Production environment. {{site.data.var.ee}} completes domain validation and certificate provisioning during the Fastly set up process. -- **Image optimization**—Offloads image processing and resizing load to the Fastly service freeing servers to process orders and conversions efficiently. See [Fastly image optimization]. + - **Origin cloaking**—Prevents traffic from bypassing the Fastly WAF and hides the IP addresses of your origin servers to protect them from direct access and DDoS attacks. Origin cloaking is enabled by default on {{ site.data.var.ece }} Pro Production projects. To enable origin cloaking on {{ site.data.var.ece }} Starter Production projects, submit a [{{site.data.var.ee}} support ticket]. If you have traffic that does not require caching, you can customize the Fastly service configuration to allow requests to [bypass the Fastly cache]. -- **Fastly CDN and WAF logs**–For {{ site.data.var.ece }} Pro projects, you can use the New Relic Logs service to review and analyze Fastly CDN and WAF log data. See [New Relic]. +- [Image optimization]—Offloads image processing and resizing load to the Fastly service freeing servers to process orders and conversions efficiently. + +- [Fastly CDN and WAF logs]—For {{ site.data.var.ece }} Pro projects, you can use the New Relic Logs service to review and analyze Fastly CDN and WAF log data. ## Fastly CDN module for Magento 2 Fastly services for {{ site.data.var.ece }} use the [Fastly CDN module for Magento 2] installed in the following environments: Pro Staging and Production, Starter Production (`master` branch). -On initial provisioning or upgrade of your {{ site. data.var.ece }} project, we install the latest version of the Fastly CDN module in your Staging and Production environments. When Fastly releases module updates, you receive notifications in the Admin UI for your environments. We recommend that you update your environments to use the latest release. See [Upgrade Fastly]. +On initial provisioning or upgrade of your {{ site. data.var.ece }} project, Adobe installs the latest version of the Fastly CDN module in your Staging and Production environments. When Fastly releases module updates, you receive notifications in the Admin UI for your environments. Adobe recommends that you update your environments to use the latest release. See [Upgrade Fastly]. ## Fastly service account and credentials @@ -68,7 +71,7 @@ To change the Fastly API token credential: 1. [Test the new credential]. -1. After you have updated the credentials, submit a support ticket to delete the old API token. +1. After you have updated the credential, submit a [{{site.data.var.ee}} support ticket] to delete the old API token. ### Multiple Fastly accounts and assigned domains {#domain} @@ -115,7 +118,7 @@ DDOS protection is built-in to the Fastly CDN service. After you enable and conf [Fastly CDN module for Magento 2]: https://github.com/fastly/fastly-magento2 [Fastly credentials configuration]: {{site.baseurl}}/cloud/cdn/configure-fastly.html#test-the-fastly-credentials [Fastly custom VCL snippets]: {{site.baseurl}}/cloud/cdn/cloud-vcl-custom-snippets.html -[Fastly image optimization]: {{site.baseurl}}/cloud/cdn/fastly-image-optimization.html +[Image optimization]: {{site.baseurl}}/cloud/cdn/fastly-image-optimization.html [Fastly support ticket]: https://docs.fastly.com/products/support-description-and-sla#support-requests [Force unencrypted requests over to TLS]: {{site.baseurl}}/cloud/cdn/configure-fastly-customize-cache.html#force-tls [GeoIP service support]: {{site.baseurl}}/cloud/cdn/configure-fastly-customize-cache.html#configure-geoip-handling @@ -123,12 +126,13 @@ DDOS protection is built-in to the Fastly CDN service. After you enable and conf [How to block malicious traffic]: https://support.magento.com/hc/en-us/articles/360039447892-How-to-block-malicious-traffic-for-Magento-Commerce-Cloud-on-Fastly-level [{{site.data.var.ee}} support ticket]: https://support.magento.com/hc/en-us/articles/360019088251 [New Relic]: {{site.baseurl}}/cloud/project/new-relic.html +[Fastly CDN and WAF logs]: {{site.baseurl}}/cloud/project/new-relic.html#new-relic-logs [Project Web UI environment configuration variables]: {{site.baseurl}}/cloud/project/projects.html#environment-configuration-variables [purge options]: {{site.baseurl}}/cloud/cdn/configure-fastly-customize-cache.html#configure-purge-options [set up Fastly]: {{site.baseurl}}/cloud/cdn/configure-fastly.html [Test the new credential]: {{site.baseurl}}/cloud/cdn/configure-fastly.html#test-the-fastly-credentials -[TLS and Fastly]: {{site.baseurl}}/cloud/cdn/configure-fastly.html#provision-ssltls-certificates +[SSL/TLS certificates]: {{site.baseurl}}/cloud/cdn/configure-fastly.html#provision-ssltls-certificates [Upgrade Fastly]: {{site.baseurl}}/cloud/cdn/configure-fastly.html#upgrade -[Web Application Firewall]: {{site.baseurl}}/cloud/cdn/fastly-waf-service.html +[Web Application Firewall (WAF)]: {{site.baseurl}}/cloud/cdn/fastly-waf-service.html [Working with Domains]: https://docs.fastly.com/en/guides/working-with-domains [test the Fastly credentials]: {{site.baseurl}}/cloud/cdn/configure-fastly.html#test-the-fastly-credentials diff --git a/src/cloud/cdn/cloud-vcl-custom-snippets.md b/src/cloud/cdn/cloud-vcl-custom-snippets.md index 2b2bf0d2aef..468918b704c 100644 --- a/src/cloud/cdn/cloud-vcl-custom-snippets.md +++ b/src/cloud/cdn/cloud-vcl-custom-snippets.md @@ -6,6 +6,8 @@ redirect_from: functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/custom-vcl-snippets/fastly-vcl-custom-snippets.html +status: migrated --- Fastly supports a customized version of the Varnish Configuration Language (VCL) to customize the Fastly service configuration. For example, you can allow, block, or redirect access for specific users or IPs using VCL code blocks in combination with edge and ACL dictionaries. @@ -43,7 +45,7 @@ The examples and instructions in the {{ site.data.var.ece }} documentation expla You can create and manage custom VCL snippets from the Admin UI or by using the Fastly API: -- [Admin UI](#manage-custom-vcl-snippets-from-the-magento-admin-ui)—We recommend using the Admin UI to manage custom VCL snippets because it automates the process to validate and upload the custom snippet and apply your changes to the Fastly service configuration. Additionally, you can view and edit the custom VCL snippets added to the Fastly service configuration from the Admin UI. +- [Admin UI](#manage-custom-vcl-snippets-from-the-admin-ui)—We recommend using the Admin UI to manage custom VCL snippets because it automates the process to validate and upload the custom snippet and apply your changes to the Fastly service configuration. Additionally, you can view and edit the custom VCL snippets added to the Fastly service configuration from the Admin UI. {:.bs-callout-info} You must use the Fastly API to [delete custom VCL snippets]({{ site.baseurl }}/cloud/cdn/cloud-vcl-custom-snippets.html#manage-vcl), or you can delete the contents of the snippet in the Admin UI and upload an empty snippet. See [Delete a custom snippet]({{ site.baseurl }}/cloud/cdn/fastly-vcl-badreferer.html#delete-the-custom-vcl-snippet). @@ -268,7 +270,7 @@ After you add a custom VCL snippet, Fastly inserts the snippet in the VCL versio These API request examples use exported environment variables to provide the credentials to authenticate with Fastly. For details on these commands, see the [Fastly API reference](https://docs.fastly.com/api/config#vcl). {:.bs-callout-info} -Use these commands to manage snippets that you added using the Fastly API. If you added snippets from the Admin UI, see [Manage VCL snippets using the Admin UI](#manage-custom-vcl-snippets-from-the-magento-admin-ui). +Use these commands to manage snippets that you added using the Fastly API. If you added snippets from the Admin UI, see [Manage VCL snippets using the Admin UI](#manage-custom-vcl-snippets-from-the-admin-ui). - **Get active VCL version number** diff --git a/src/cloud/cdn/configure-fastly-customize-cache.md b/src/cloud/cdn/configure-fastly-customize-cache.md index c5ddf274060..434e476a6cb 100644 --- a/src/cloud/cdn/configure-fastly-customize-cache.md +++ b/src/cloud/cdn/configure-fastly-customize-cache.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/setup-fastly/fastly-custom-cache-configuration.html +status: migrated --- After you enable and verify the Fastly service in your Staging and Production environments, you can review and customize cache configuration settings like enabling force TLS to redirect HTTP requests to Fastly, updating purge settings, enabling basic authentication to password-protect your site during development, and setting up GeoIP support. @@ -98,6 +100,9 @@ To set up GeoIp handling: 1. After page reload, click **Upload VCL to Fastly** in the *Fastly Configuration* section. +{:.bs-callout-info} +The current Adobe Commerce Fastly GeoIP module implementation does not support redirects between multiple websites. + Fastly also provides a series of [geolocation-related VCL features](https://docs.fastly.com/guides/vcl/geolocation-related-vcl-features) for customized geolocation coding. ## Enable Fastly Edge modules diff --git a/src/cloud/cdn/configure-fastly.md b/src/cloud/cdn/configure-fastly.md index b757e585e76..70e256aa213 100644 --- a/src/cloud/cdn/configure-fastly.md +++ b/src/cloud/cdn/configure-fastly.md @@ -7,6 +7,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/setup-fastly/fastly-configuration.html +status: migrated --- [Fastly]({{ site.baseurl }}/cloud/cdn/cloud-fastly.html) is required for {{site.data.var.ece}}, and is used in Staging and Production environments. It works with Varnish to provide fast caching capabilities and a [Content Delivery Network](https://glossary.magento.com/content-delivery-network) (CDN) for static assets. Fastly also provides a Web Application Firewall (WAF) to secure your site and Cloud infrastructure. You must route all incoming site traffic through Fastly to protect your site and Cloud infrastructure from malicious traffic and attacks. diff --git a/src/cloud/cdn/fastly-image-optimization.md b/src/cloud/cdn/fastly-image-optimization.md index 48a9589175e..74e426b1efa 100644 --- a/src/cloud/cdn/fastly-image-optimization.md +++ b/src/cloud/cdn/fastly-image-optimization.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/fastly-image-optimization.html +status: migrated --- Fastly image optimization (Fastly IO) provides real-time image manipulation and optimization to speed up image delivery and simplify maintenance of image source sets for responsive web applications. Once configured Fastly IO provides the following image optimization features: @@ -12,7 +14,7 @@ Fastly image optimization (Fastly IO) provides real-time image manipulation and - Force lossy conversion - Deep image optimization - Adaptive pixel ratios -- Support for common image formats: PNG, JPEG, and GIF +- Support for common image formats: PNG, JPEG, GIF, and WebP You must set up your Fastly service and configure Origin shielding before you enable and configure the Fastly IO option. diff --git a/src/cloud/cdn/fastly-vcl-allowlist.md b/src/cloud/cdn/fastly-vcl-allowlist.md index 32644256c4d..2664c101aaf 100644 --- a/src/cloud/cdn/fastly-vcl-allowlist.md +++ b/src/cloud/cdn/fastly-vcl-allowlist.md @@ -8,6 +8,8 @@ functional_areas: redirect_from: - /cloud/configure/fastly-vcl-whitelist.html - /cloud/cdn/fastly-vcl-whitelist.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/custom-vcl-snippets/fastly-vcl-allowlist.html +status: migrated --- You can use a Fastly Edge ACL list in combination with a custom VCL code snippet to filter incoming requests and allow access by IP address. The ACL list specifies the IP addresses to allow. diff --git a/src/cloud/cdn/fastly-vcl-badreferer.md b/src/cloud/cdn/fastly-vcl-badreferer.md index 9e802cee52f..8def84dd62f 100644 --- a/src/cloud/cdn/fastly-vcl-badreferer.md +++ b/src/cloud/cdn/fastly-vcl-badreferer.md @@ -6,6 +6,8 @@ redirect_from: functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/custom-vcl-snippets/fastly-vcl-badreferer.html +status: migrated --- The following example shows how to configure [Fastly Edge Dictionary](https://docs.fastly.com/guides/edge-dictionaries/working-with-dictionaries-using-the-api) with a custom VCL snippet to block referral spam from your {{ site.data.var.ece }} site. diff --git a/src/cloud/cdn/fastly-vcl-blocking.md b/src/cloud/cdn/fastly-vcl-blocking.md index 7f9e0a5552c..58d395edb22 100644 --- a/src/cloud/cdn/fastly-vcl-blocking.md +++ b/src/cloud/cdn/fastly-vcl-blocking.md @@ -4,10 +4,11 @@ title: Custom VCL for blocking requests redirect_from: - /cloud/configure/fastly-vcl-blacklist.html - /cloud/cdn/fastly-vcl-blacklist.html - functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/custom-vcl-snippets/fastly-vcl-blocking.html +status: migrated --- You can use the Fastly CDN module for Magento 2 to create an Edge ACL with a list of IP addresses that you want to block. Then, you can use that list in combination with a VCL snippet to block incoming requests. The code checks the IP address of the incoming request. If it matches an IP address included in the ACL list, Fastly blocks the request from accessing your site and returns a `403 Forbidden error`. All other client IPs are allowed access. diff --git a/src/cloud/cdn/fastly-vcl-bypass-to-origin.md b/src/cloud/cdn/fastly-vcl-bypass-to-origin.md index 792fdd7633c..af5ce4d5469 100644 --- a/src/cloud/cdn/fastly-vcl-bypass-to-origin.md +++ b/src/cloud/cdn/fastly-vcl-bypass-to-origin.md @@ -4,6 +4,8 @@ title: Custom VCL to bypass Fastly cache functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/custom-vcl-snippets/fastly-vcl-bypass-to-origin.html +status: migrated --- You can create a custom VCL snippet to bypass the Fastly cache so you can troubleshoot request traffic to the origin server, for example to determine whether site issues are caused by caching, or to troubleshoot headers. diff --git a/src/cloud/cdn/fastly-vcl-wordpress.md b/src/cloud/cdn/fastly-vcl-wordpress.md index a2e3705d5fe..2eb8e79f05b 100644 --- a/src/cloud/cdn/fastly-vcl-wordpress.md +++ b/src/cloud/cdn/fastly-vcl-wordpress.md @@ -6,6 +6,8 @@ redirect_from: functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/custom-vcl-snippets/fastly-vcl-wordpress.html +status: migrated --- The following procedure describes how to reroute incoming requests from a {{ site.data.var.ee }} store to a separate WordPress site using the Fastly edge module _Other CMS/backend integration_ with an Edge dictionary. You can follow a similar process to reroute requests to other CMS backends. diff --git a/src/cloud/cdn/fastly-waf-service.md b/src/cloud/cdn/fastly-waf-service.md index c726d1b6b4d..8399f914de2 100644 --- a/src/cloud/cdn/fastly-waf-service.md +++ b/src/cloud/cdn/fastly-waf-service.md @@ -6,6 +6,8 @@ functional_areas: - Install - Security - Compliance +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/fastly-waf-service.html +status: migrated --- Powered by Fastly, the web application firewall (WAF) service for {{ site.data.var.ece }} detects, logs, and blocks malicious request traffic before it can damage your sites or network. The WAF service is available on production environments only. diff --git a/src/cloud/cdn/trouble-fastly.md b/src/cloud/cdn/trouble-fastly.md index 3fa38bc0e25..3d5db746e79 100644 --- a/src/cloud/cdn/trouble-fastly.md +++ b/src/cloud/cdn/trouble-fastly.md @@ -6,6 +6,8 @@ redirect_from: functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/cdn/fastly-troubleshooting.html +status: migrated --- Use the following information to troubleshoot and manage the Fastly CDN module for Magento 2 in your {{ site.data.var.ece }} project environments. For example, you can investigate response header values and caching behavior to resolve Fastly service and performance issues. diff --git a/src/cloud/composer-packages/ece-patches.md b/src/cloud/composer-packages/ece-patches.md index ff1f7058ff1..1deabbc1762 100644 --- a/src/cloud/composer-packages/ece-patches.md +++ b/src/cloud/composer-packages/ece-patches.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/release-notes/ece-tools-package.html +status: migrated --- {:.bs-callout-warning} diff --git a/src/cloud/composer-packages/patch-notes.md b/src/cloud/composer-packages/patch-notes.md index 9e111f6c3f3..cbdd099331d 100644 --- a/src/cloud/composer-packages/patch-notes.md +++ b/src/cloud/composer-packages/patch-notes.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/release-notes/cloud-tools-suite.html +status: migrated --- The release information in this section relates to [Composer packages]({{ site.baseurl }}/cloud/reference/cloud-composer.html) used by {{site.data.var.ece}} only. For general release information, refer to the main {{site.data.var.ee}} [v2.3 Release Notes]({{ site.baseurl }}/guides/v2.3/release-notes/bk-release-notes.html) page. diff --git a/src/cloud/configure/configuration-overview.md b/src/cloud/configure/configuration-overview.md index 92637488df9..d3f75bdc9c7 100644 --- a/src/cloud/configure/configuration-overview.md +++ b/src/cloud/configure/configuration-overview.md @@ -8,6 +8,8 @@ menu_node: parent functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/overview.html +status: migrated --- The following information walks you through the options for configuring your store on your local and in all environments. You may need to configure files and settings in your local, pushing settings with your code. For specific services, you configure settings directly in Staging and Production environments. diff --git a/src/cloud/configure/configure-best-practices.md b/src/cloud/configure/configure-best-practices.md index 4a568802595..d8d34d2ee12 100644 --- a/src/cloud/configure/configure-best-practices.md +++ b/src/cloud/configure/configure-best-practices.md @@ -8,6 +8,8 @@ menu_node: functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/best-practices.html +status: migrated --- For detailed information for configuring your store, sites, and websites, you may want to review the [{{site.data.var.ee}} 2.2.x User Guide]({{ site.user_guide_url }}/getting-started.html). This page provides best practices, helpful information, and guidelines for configuring your stores, sites, and more with additional content to post over time and across versions. @@ -26,7 +28,7 @@ The following are tips to help create, update, and manage promotions and campaig * A promotion can be part of a campaign. A campaign cannot be a part of a promotion. You can have lists of promotions as price rules to use multiples times, with multiple campaigns. * When you create a promotion, it will always create an initial campaign that is inactive. It will have a start date but not an end date. You can ignore this initial campaign. You can Schedule a New Update with the correct campaign schedule and make it active. -* A campaign has a start and end date, not a promotion. The Scheduler that appears when you create a promotion does not configure the start and end dates for the promotion. It allows you so schedule your campaign this promotion is associated with while you are on the promotion’s configuration page. +* A campaign has a start and end date, not a promotion. The Scheduler that appears when you create a promotion does not configure the start and end dates for the promotion. It allows you so schedule your campaign this promotion is associated with while you are on the promotion's configuration page. * You cannot directly edit in Staged Content. If you need to edit settings and options in the campaign, you will need to edit the original or a replica and push to overwrite in Staged Content. For example, if you do not an end date for a campaign, you must edit the original and push to update. ## Advanced Pricing and Staged Content {#adv-pricing} diff --git a/src/cloud/configure/import-url-rewrites.md b/src/cloud/configure/import-url-rewrites.md index 09116065e17..2f86f1de02b 100644 --- a/src/cloud/configure/import-url-rewrites.md +++ b/src/cloud/configure/import-url-rewrites.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/routes/redirects.html +status: migrated --- You can easily migrate to the {{site.data.var.ece}} platform without losing SEO rankings and traffic. Use the `magento/url-rewrite-import-export` module to redirect traffic from your old, indexed URLs to new URLs. diff --git a/src/cloud/configure/setup-b2b.md b/src/cloud/configure/setup-b2b.md index 120898d0190..a592b784e19 100644 --- a/src/cloud/configure/setup-b2b.md +++ b/src/cloud/configure/setup-b2b.md @@ -6,6 +6,8 @@ functional_areas: - Extensions - Module - B2B +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/b2b-module.html +status: migrated --- If your customers are companies, you can install the {{site.data.var.b2b}} module to extend your {{site.data.var.ece}} Pro project to accommodate a business-to-business model. Although this topic provides information specific to installing and configuring the B2B module for {{site.data.var.ece}}, you can find additional B2B information in the following guides: @@ -83,10 +85,10 @@ To extend functionality, see the [{{site.data.var.ee}} B2B Developer Guide][b2b- -[admin-enable]: {{ site.baseurl }}/extensions/b2b/#enable-b2b-features-in-magento-admin +[admin-enable]: {{ site.baseurl }}/extensions/b2b/ [b2b-dev]: {{ site.baseurl }}/guides/v2.3/b2b/bk-b2b.html [b2b-user]: {{ site.user_guide_url }}/getting-started.html -[branching]: {{ site.baseurl }}/cloud/env/environments-start.html#getstarted +[branching]: {{ site.baseurl }}/cloud/env/environments-start.html [config]: {{ site.baseurl }}/guides/v2.3/config-guide/config/config-php.html [extensions]: {{ site.baseurl }}/extensions/ [install-b2b]: {{ site.baseurl }}/extensions/b2b/ diff --git a/src/cloud/configure/setup-cron-jobs.md b/src/cloud/configure/setup-cron-jobs.md index 04eddf28a40..2562ca416b5 100644 --- a/src/cloud/configure/setup-cron-jobs.md +++ b/src/cloud/configure/setup-cron-jobs.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/app/properties/crons-property.html +status: migrated --- {{site.data.var.ee}} uses cron jobs for numerous features to schedule activities. This topic provides information for configuring crons for `{{site.data.var.ece}}` projects using the [`.magento.app.yaml`]({{ site.baseurl }}/cloud/project/magento-app.html) file. @@ -53,7 +55,7 @@ To review cron configuration on Pro plan environments: ``` {:.bs-callout-info} - If the `crontab -l` command returns a `Command not found` error, contact your Customer Technical Advisor (CTA) or Customer Success Manager (CSM) about enabling the auto-crons self-service configuration option on your {{site.data.var.ece}} project. + If the `crontab -l` command returns a `Command not found` error, you must submit a [Support ticket](https://support.magento.com/hc/en-us/articles/360000913794#submit-ticket) to enable the auto-crons self-service configuration option on your {{site.data.var.ece}} project. The following example shows the crontab output for an environment that has only the default crons configuration: @@ -120,7 +122,7 @@ The default cron interval for all environments provisioned in the US-3, EU-3, an ### Prerequisite -On {{ site.data.var.ee }} Pro projects, the [auto-crons feature](#verify-cron-configuration-on-pro-projects) must be enabled on your {{site.data.var.ece}} project before you can add custom cron jobs to Staging and Production environments using `.magento.app.yaml`. If this feature is not enabled, contact your Customer Technical Advisor (CTA). +On {{ site.data.var.ee }} Pro projects, the [auto-crons feature](#verify-cron-configuration-on-pro-projects) must be enabled on your {{site.data.var.ece}} project before you can add custom cron jobs to Staging and Production environments using `.magento.app.yaml`. If this feature is not enabled, submit a [Support ticket](https://support.magento.com/hc/en-us/articles/360000913794#submit-ticket) to enable auto-crons. {:.procedure} To add custom crons: @@ -189,6 +191,12 @@ Adobe has updated the {{site.data.var.ece}} package to optimize cron processing You can review cron processing information in the application-level log files for each environment. See [Application logs]({{ site.baseurl }}/cloud/project/log-locations.html#application-logs). +{:.bs-callout-info} +Note that on multi-node environments (such as Pro), cron jobs are executed on a randomly selected node. Because `~/var/log` is not shared between nodes, you may need to manually merge logs to get full visibility of cron execution. + +{:.bs-callout-info} +Cron jobs are executed with a different set of environment variables than are available in an SSH session. Notably, `$USER` is not available to cron jobs. + See the following {{site.data.var.ee}} Support articles for help troubleshooting cron-related problems: - [Cron tasks lock tasks from other groups](https://support.magento.com/hc/en-us/articles/360029219812-Cron-tasks-lock-tasks-from-other-groups) diff --git a/src/cloud/deploy/cloud-deployment-process.md b/src/cloud/deploy/cloud-deployment-process.md index 8df7740d0b0..e962c40babd 100644 --- a/src/cloud/deploy/cloud-deployment-process.md +++ b/src/cloud/deploy/cloud-deployment-process.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Deploy - SCD +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/process.html +status: migrated --- The deployment process begins when you perform a merge, push, or synchronization of your environment, or when you trigger a [manual redeployment]({{ site.baseurl }}/cloud/reference/cli-ref-topic.html#git-commands). The deployment process takes time, but there are ways to optimize deployment that depend on whether you are developing and testing or working with a live site. Most notably, you can control the [static content deployment]({{ site.baseurl }}/cloud/deploy/static-content-deployment.html). diff --git a/src/cloud/deploy/continuous-deployment.md b/src/cloud/deploy/continuous-deployment.md index bbaf05c576b..4210ad7d4c5 100644 --- a/src/cloud/deploy/continuous-deployment.md +++ b/src/cloud/deploy/continuous-deployment.md @@ -8,6 +8,8 @@ menu_node: functional_areas: - Cloud - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/best-practices.html +status: migrated --- Following your branching and development methodologies, you can easily develop new features, configure changes, and add extensions to continuously develop and deploy updates. diff --git a/src/cloud/deploy/optimize-cloud-deployment.md b/src/cloud/deploy/optimize-cloud-deployment.md index c1ba5b59b07..38c9cb32076 100644 --- a/src/cloud/deploy/optimize-cloud-deployment.md +++ b/src/cloud/deploy/optimize-cloud-deployment.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Deploy - SCD +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/optimization.html +status: migrated --- Site performance can suffer during the deployment process. The length of time a site is in maintenance mode when deploying to a production site depends on many factors, such as environment configuration and the amount of content a site contains. The first best practice for optimizing your Cloud deployment is to [upgrade to use `{{site.data.var.ct}}`]({{ site.baseurl }}/cloud/project/ece-tools-upgrade-project.html) to benefit from the package features, such as commands to create a backup of the database and verify environment configuration. diff --git a/src/cloud/deploy/reduce-downtime.md b/src/cloud/deploy/reduce-downtime.md index f560a207df8..370a5ce8334 100644 --- a/src/cloud/deploy/reduce-downtime.md +++ b/src/cloud/deploy/reduce-downtime.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Deploy - SCD +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/reduce-downtime.html +status: migrated --- {{site.data.var.ece}} runs the application in [_maintenance_ mode]({{site.baseurl}}/guides/v2.3/config-guide/bootstrap/magento-modes.html#maintenance-mode) during the deploy phase, which takes your site offline until the deployment is complete. The length of time your Production site is in maintenance mode depends on the size of the site, the number of changes applied during the deployment, and the configuration for static content deployment. It is possible to configure your project so that it deploys with a **zero** downtime effect. diff --git a/src/cloud/deploy/scenario-based-deployment.md b/src/cloud/deploy/scenario-based-deployment.md index 67c1fb1a8ab..ed4b9e23de5 100644 --- a/src/cloud/deploy/scenario-based-deployment.md +++ b/src/cloud/deploy/scenario-based-deployment.md @@ -4,6 +4,8 @@ title: Scenario-based deployment functional_areas: - Cloud - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/scenario-based.html +status: migrated --- With `{{site.data.var.ct}}` 2002.1.0 and later, you can use the scenario-based deployment feature to customize the default deployment behavior. diff --git a/src/cloud/deploy/smart-wizards.md b/src/cloud/deploy/smart-wizards.md index 2537733dbf1..9059f8ef10e 100644 --- a/src/cloud/deploy/smart-wizards.md +++ b/src/cloud/deploy/smart-wizards.md @@ -7,6 +7,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/smart-wizards.html +status: migrated --- The smart wizards can help you determine whether your Cloud configuration follows best practices. The available wizards assist with the following configurations: diff --git a/src/cloud/deploy/static-content-deployment.md b/src/cloud/deploy/static-content-deployment.md index b0c02c07b8d..adae1ed2baa 100644 --- a/src/cloud/deploy/static-content-deployment.md +++ b/src/cloud/deploy/static-content-deployment.md @@ -4,6 +4,8 @@ title: Static content deployment strategies functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/static-content.html +status: migrated --- Static content deployment (SCD) has a significant impact on the store deployment process that depends on how much content to generate—such as images, scripts, CSS, videos, themes, locales, and web pages—and when to generate the content. For example, the default strategy generates static content during the [deploy phase]({{ site.baseurl }}/cloud/deploy/cloud-deployment-process.html#-deploy-phase) when the site is in maintenance mode; however, this deployment strategy takes time to write the content directly to the mounted `pub/static` directory. You have several options or strategies to help you improve the deployment time depending on your needs. @@ -36,7 +38,7 @@ Generating static content requires access to themes and locales. {{site.data.var {:.procedure} To configure your project to generate SCD on build: -1. Log in to your Cloud environment using SSH and move locales to the file system, then update the [`config.php` file]({{site.baseurl}}/cloud/project/project-upgrade.html#create-a-new-configphp-file). +1. Log in to your Cloud environment using SSH and move locales to the file system, then update the [`config.php` file]({{site.baseurl}}/cloud/project/project-upgrade.html). 1. The `.magento.env.yaml` configuration file should contain the following values: diff --git a/src/cloud/docker/docker-config-blackfire-io.md b/src/cloud/docker/docker-config-blackfire-io.md index 46aa002c9db..c9d449e84d6 100644 --- a/src/cloud/docker/docker-config-blackfire-io.md +++ b/src/cloud/docker/docker-config-blackfire-io.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/test/blackfire/ +status: migrated --- You can add Blackfire.io to your {{site.data.var.mcd-prod}} environment to fully automate performance testing. diff --git a/src/cloud/docker/docker-config-sources.md b/src/cloud/docker/docker-config-sources.md index 98fcd7cce88..5ddb6804c1c 100644 --- a/src/cloud/docker/docker-config-sources.md +++ b/src/cloud/docker/docker-config-sources.md @@ -7,11 +7,13 @@ functional_areas: - Configuration redirect_from: - /cloud/reference/docker-config.html +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/configure/configuration-sources/ +status: migrated --- You can create the Docker Compose configuration to build and deploy the Docker containers for your {{site.data.var.ee}} project from the following sources: -- [{{site.data.var.ece}} project configuration files](#magento-commerce-cloud-configuration) for Cloud projects +- [{{site.data.var.ece}} project configuration files](#cloud-configuration-for-commerce) for Cloud projects - [Unified configuration](#unified-configuration) (`.magento.docker.yml`) for On-premises projects - [CLI configuration](#cli-configuration) using `ece-docker build:compose` command options - [Custom Docker Compose configuration file](#build-a-custom-docker-compose-configuration) supports installation for both Cloud and On-premises projects diff --git a/src/cloud/docker/docker-config.md b/src/cloud/docker/docker-config.md index 02c6b42714d..2c3a33247bc 100644 --- a/src/cloud/docker/docker-config.md +++ b/src/cloud/docker/docker-config.md @@ -7,6 +7,8 @@ functional_areas: - Configuration redirect_from: - /cloud/reference/docker-config.html +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/configure/ +status: migrated --- {{site.data.var.mcd-prod}} uses Docker Compose to build and deploy {{site.data.var.ee}} to a multi-container Docker application. You can generate the Docker Compose configuration to build and deploy Docker from the following sources: @@ -77,5 +79,5 @@ After you start the Docker environment, go to the following URL to access the Ma [Docker Hub PHP Image Tag]: https://hub.docker.com/r/magento/magento-cloud-docker-php/tags [MailHog]: {{site.baseurl}}/cloud/docker/docker-containers-service.html#mailhog-container [Override configuration]: {{site.baseurl}}/cloud/docker/docker-quick-reference.html#override-configuration -[{{site.data.var.ece}} project configuration files]: {{site.baseurl}}/cloud/docker/docker-config-sources.html#magento-commerce-cloud-configuration +[{{site.data.var.ece}} project configuration files]: {{site.baseurl}}/cloud/docker/docker-config-sources.html#cloud-configuration-for-commerce [Unified configuration]: {{site.baseurl}}/cloud/docker/docker-config-sources.html#unified-configuration diff --git a/src/cloud/docker/docker-containers-cli.md b/src/cloud/docker/docker-containers-cli.md index 40eb4c6cab6..d59cf7f4c5d 100755 --- a/src/cloud/docker/docker-containers-cli.md +++ b/src/cloud/docker/docker-containers-cli.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Docker - Configuration +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/containers/cli/ +status: migrated --- The following CLI containers, most of which are based on a [PHP-CLI version 7 image], provide `magento-cloud` and `{{site.data.var.ct}}` commands to perform file system operations and interact with the application: diff --git a/src/cloud/docker/docker-containers-service.md b/src/cloud/docker/docker-containers-service.md index 7cb3b4781dc..e46b293e15f 100755 --- a/src/cloud/docker/docker-containers-service.md +++ b/src/cloud/docker/docker-containers-service.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Docker - Configuration +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/containers/service/ +status: migrated --- The following containers provide the services required to build, deploy and run {{site.data.var.ee}} sites. @@ -117,6 +119,59 @@ To permanently update the system setting for `vm.max_map_count`: sysctl vm.max_map_count ``` +## OpenSearch container + +**Container name**: opensearch
        +**Docker base image**: [magento/magento-cloud-docker-opensearch](https://hub.docker.com/r/magento/magento-cloud-docker-opensearch)
        +**Ports exposed**: `9200`, `9300`
        + +The OpenSearch container for {{site.data.var.mcd-prod}} is a standard OpenSearch container with required plugins and configurations for {{site.data.var.ee}}. + +Use the `--os-env-var` option to customize the OpenSearch container when you generate the Docker Compose configuration file. You can set OpenSearch options and specify the environment variables to apply when the container starts, such as the heap size for JVM. + +```bash +php vendor/bin/ece-docker build:compose --os-env-var=OPENSEARCH_JAVA_OPTS="-Xms512m -Xmx512m" --os-env-var=bootstrap.memory_lock=true +``` + +See [Important OpenSearch configuration] in the OpenSearch documentation for details about available configuration options. + +{:.bs-callout-info} +If your Cloud project uses {{site.data.var.ee}} version 2.4.4 or earlier with MySQL or Elasticsearch search, add the `--no-os` option to skip the OpenSearch container configuration when you generate the Docker Compose configuration file: `ece-docker build:compose --no-os` + +### OpenSearch plugins + +There is a list of OpenSearch plugins: https://opensearch.org/docs/latest/opensearch/install/plugins/ + +The following plugins are installed by default and can **not** be skipped: + +- OpenSearch 1.1: + - opensearch-notebooks +- OpenSearch 1.2: + - opensearch-observability +- OpenSearch 1.1 and 1.2: + - analysis-icu + - analysis-phonetic + - opensearch-alerting + - opensearch-anomaly-detection + - opensearch-asynchronous-search + - opensearch-cross-cluster-replication + - opensearch-index-management + - opensearch-job-scheduler + - opensearch-knn + - opensearch-performance-analyzer + - opensearch-reports-scheduler + - opensearch-security + - opensearch-sql + +The following example adds the `opensearch-asynchronous-search` plugin to the Docker environment. + +```yaml +services: + opensearch: + environment: + - 'OS_PLUGINS=opensearch-asynchronous-search' +``` + ## FPM container **Container name**: fpm
        @@ -337,6 +392,7 @@ The latest Zookeeper version is installed by default from Docker Hub. You can ad [Docker override file]: https://docs.docker.com/compose/extends/ [FPM]: https://php-fpm.org [Important Elasticsearch configuration]: https://www.elastic.co/guide/en/elasticsearch/reference/6.5/important-settings.html +[Important OpenSearch configuration]: https://opensearch.org/docs/latest/opensearch/install/important-settings/ [mailhog]: https://hub.docker.com/u/mailhog [MailHog service]: https://github.com/mailhog/MailHog [Manage the database]: {{site.baseurl}}/cloud/docker/docker-manage-database.html @@ -354,4 +410,4 @@ The latest Zookeeper version is installed by default from Docker Hub. You can ad [varnish]: https://hub.docker.com/r/magento/magento-cloud-docker-varnish [varnish]: https://hub.docker.com/r/magento/magento-cloud-docker-varnish [web config]: https://github.com/magento/docker -[Configure the lock provider]: {{site.baseurl}}/guides/v2.4/install-gde/install/cli/install-cli-subcommands-lock.html#instgde-cli-lockconfig \ No newline at end of file +[Configure the lock provider]: {{site.baseurl}}/guides/v2.4/install-gde/install/cli/install-cli-subcommands-lock.html#instgde-cli-lockconfig diff --git a/src/cloud/docker/docker-containers.md b/src/cloud/docker/docker-containers.md index 14c29e24135..792e5017d9c 100644 --- a/src/cloud/docker/docker-containers.md +++ b/src/cloud/docker/docker-containers.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/containers/ +status: migrated --- The [`{{site.data.var.mcd-package}}` repository][docker-repo] contains build information to create a Docker environment with the required specifications for {{site.data.var.ece}}. The build configuration creates a Docker instance with CLI and service containers required to run {{site.data.var.ece}} in a local Docker environment. You can customize the Docker containers available in the repository and add more as needed. @@ -41,21 +43,21 @@ The following table shows the options to customize service container configurati {: .docker-service-versions-table} -| Name | Service | Key & options | Available Versions | Notes | -|------------------------------------|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [db] | MariaDB or MySQL
        | `--db`, `--db-image` (MySQL)
        `--expose-db-port`
        `--db-increment`
        `--db-offset`
        `--with-entrypoint`
        `--with-mariadb-config` | 10.0, 10.1, 10.2, 10.3, 10.4
        5.6, 5.7, 8.0 | Use the increment and offset options to customize the [auto-increment settings][Using AUTO_INCREMENT] for replication.

        Use the `--with-entrypoint` and `--with-mariadb-config` options to automatically configure database directories in the Docker environment

        *Example build commands:*
        `ece-docker build:compose --db `
        `ece-docker build:compose --db --db-image` | -| [elasticsearch] | Elasticsearch | `--es`
        `--es-env-var`
        `--no-es` | 5.2, 6.5, 6.8, 7.5, 7.6, 7.7, 7.9 | Use the options to specify the Elasticsearch version, customize Elasticsearch configuration options, or to build a Docker environment without Elasticsearch. | -| [fpm][fpm-container] | PHP FPM | `--php`
        `--with-xdebug` | 7.2, 7.3, 7.4, 8.0 | Used for all incoming requests. Optionally, install a specific php version or add Xdebug to debug PHP code in the Docker environment. | -| [fpm_xdebug][fpm_xdebug-container] | Xdebug | `--set-docker-host` | latest | Optional container for PHP debugging
        On Linux systems, `--set-docker-host` sets the `.host.docker.internal` value in the container `/etc/hosts` file. | -| [mailhog][mailhog-container] | MailHog | `--no-mailhog`
        `--mailhog-http-port`
        `--mailhog-smtp-port` | latest | Email service to replace Sendmail service, which can cause issues in Docker environment | -| [node][node-container] | Node | `--node` | 6, 8, 10, 11 | Node container to run gulp or other NPM based commands in the Docker environment. Use the `--node` option to install a specific node version. | -| [rabbitmq][rabbitmq-container] | RabbitMQ | `--rmq` | 3.5, 3.7, 3.8 | Use the `--rmq` option to install a specific RabbitMQ version. | -| [redis][redis-container] | Redis | `--redis` | 3.2, 5.0, 6.0 | Standard redis container | -| [selenium][selenium-container] | Selenium | `--with-selenium`
        `--selenium-version`
        `--selenium-image` | Any | Enables application testing using the Magento Functional Testing Framework (MFTF) | -| [test][test-container] | PHP CLI | `--with-test` | Any | Optional container with a writable file system for running tests | -| [tls][tls-container] | SSL Endpoint | `--tls-port`
        `--no-tls` | nginx 1.19 | Terminates SSL, can be configured to pass to varnish or nginx. Use the `--tls-port` option to change the default port (443).
        Use the `--no-tls` option to disable tls. | -| [varnish][varnish-container] | Varnish | `--no-varnish` | 4, 6.2, 6.6 | Varnish is provisioned by default. Use the `--no-varnish` option to skip Varnish service installation. | -| [zookeeper][zookeeper-container] | Zookeeper | `--with-zookeeper`
        `--zookeeper-version`
        `--zookeeper-image` | latest (default)
        User-specified version | Optional container for Zookeeper lock provider for projects not hosted on {{ site.data.var.ee }} on Cloud infrastructure.
        Use the `--zookeeper-version` option to install a specified version of Zookeeper from the Docker Hub or install a specified image by name with the `--zookeeper-image` option. | +| Name | Service | Key & options | Available Versions | Notes | +|------------------------------------|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [db] | MariaDB or MySQL
        | `--db`, `--db-image` (MySQL)
        `--expose-db-port`
        `--db-increment`
        `--db-offset`
        `--with-entrypoint`
        `--with-mariadb-config` | 10.0, 10.1, 10.2, 10.3, 10.4
        5.6, 5.7, 8.0 | Use the increment and offset options to customize the [auto-increment settings][Using AUTO_INCREMENT] for replication.

        Use the `--with-entrypoint` and `--with-mariadb-config` options to automatically configure database directories in the Docker environment

        *Example build commands:*
        `ece-docker build:compose --db `
        `ece-docker build:compose --db --db-image` | +| [elasticsearch] | Elasticsearch | `--es`
        `--es-env-var`
        `--no-es` | 5.2, 6.5, 6.8, 7.5, 7.6, 7.7, 7.9, 7.10, 7.11 | Use the options to specify the Elasticsearch version, customize Elasticsearch configuration options, or to build a Docker environment without Elasticsearch. | +| [opensearch] | OpenSearch | `--os`
        `--os-env-var`
        `--no-os` | 1.1, 1.2 | Use the options to specify the Openseach version, customize OpenSearch configuration options, or to build a Docker environment without OpenSearch. | +| [fpm][fpm-container] | PHP FPM | `--php`
        `--with-xdebug` | 7.2, 7.3, 7.4, 8.0 | Used for all incoming requests. Optionally, install a specific php version or add Xdebug to debug PHP code in the Docker environment. | +| [mailhog][mailhog-container] | MailHog | `--no-mailhog`
        `--mailhog-http-port`
        `--mailhog-smtp-port` | latest | Email service to replace Sendmail service, which can cause issues in Docker environment | +| [node][node-container] | Node | `--node` | 6, 8, 10, 11 | Node container to run gulp or other NPM based commands in the Docker environment. Use the `--node` option to install a specific node version. | +| [rabbitmq][rabbitmq-container] | RabbitMQ | `--rmq` | 3.5, 3.7, 3.8 | Use the `--rmq` option to install a specific RabbitMQ version. | +| [redis][redis-container] | Redis | `--redis` | 3.2, 5.0, 6.0 | Standard redis container | +| [selenium][selenium-container] | Selenium | `--with-selenium`
        `--selenium-version`
        `--selenium-image` | Any | Enables application testing using the Magento Functional Testing Framework (MFTF) | +| [test][test-container] | PHP CLI | `--with-test` | Any | Optional container with a writable file system for running tests | +| [tls][tls-container] | SSL Endpoint | `--tls-port`
        `--no-tls` | nginx 1.19 | Terminates SSL, can be configured to pass to varnish or nginx. Use the `--tls-port` option to change the default port (443).
        Use the `--no-tls` option to disable tls. | +| [varnish][varnish-container] | Varnish | `--no-varnish` | 4, 6.2, 6.6 | Varnish is provisioned by default. Use the `--no-varnish` option to skip Varnish service installation. | +| [zookeeper][zookeeper-container] | Zookeeper | `--with-zookeeper`
        `--zookeeper-version`
        `--zookeeper-image` | latest (default)
        User-specified version | Optional container for Zookeeper lock provider for projects not hosted on {{ site.data.var.ee }} on Cloud infrastructure.
        Use the `--zookeeper-version` option to install a specified version of Zookeeper from the Docker Hub or install a specified image by name with the `--zookeeper-image` option. | Use the following command to view all available options for the `ece-docker build:compose` command: @@ -148,6 +150,7 @@ Now you can see all requests that are passing through the TLS container and chec [deploy]: {{site.baseurl}}/cloud/docker/docker-containers-cli.html#deploy-container [db]: {{site.baseurl}}/cloud/docker/docker-containers-service.html#database-container [elasticsearch]: {{site.baseurl}}/cloud/docker/docker-containers-service.html#elasticsearch-container +[opensearch]: {{site.baseurl}}/cloud/docker/docker-containers-service.html#opensearch-container [Docker CLI containers]: {{site.baseurl}}/cloud/docker/docker-containers-cli.html [Docker service containers]: {{site.baseurl}}/cloud/docker/docker-containers-service.html [Using AUTO_INCREMENT]: https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html diff --git a/src/cloud/docker/docker-development-debug.md b/src/cloud/docker/docker-development-debug.md index ab133120ade..2c0e920ac0e 100644 --- a/src/cloud/docker/docker-development-debug.md +++ b/src/cloud/docker/docker-development-debug.md @@ -6,6 +6,8 @@ functional_areas: - Setup - Configuration - Testing +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/test/configure-xdebug/ +status: migrated --- Xdebug is an extension for debugging your PHP code. {{site.data.var.mcd-prod}} provides a separate container to handle Xdebug requests in the Docker environment. Use this container to enable Xdebug and debug PHP code in your Docker environment without affecting your {{site.data.var.ece}} project configuration. @@ -26,12 +28,6 @@ If you use Microsoft Windows, take the following steps before continuing: vendor/bin/ece-docker build:compose --mode="developer" --sync-engine="mutagen" --with-xdebug ``` - For Linux systems, you must use the `--set-docker-host` option to add the `host.docker.internal` entry to the `/etc/hosts` file for the `fpm_xdebug` container. - - ```bash - vendor/bin/ece-docker build:compose --mode="developer" --with-xdebug --set-docker-host - ``` - This command adds the Xdebug configuration to your `docker-compose.yml` file. ```yaml @@ -128,7 +124,7 @@ You can debug any {{site.data.var.ee}} command or PHP script using the following {:.procedure} To debug CLI commands: -1. In your PhpStorm project, open the **Build, Extension, Deployment** > **Docker** panel, and then click `+` to add a new Docker server and update the following settings: +1. In your PhpStorm project, open the **Build, Execution, Deployment** > **Docker** panel, and then click `+` to add a new Docker server and update the following settings: - **Name**—Enter a name for the server, for example `Docker Cloud`. - **Connect to Docker daemon with**— diff --git a/src/cloud/docker/docker-development.md b/src/cloud/docker/docker-development.md index 54f34698bb5..ef91cfc1014 100644 --- a/src/cloud/docker/docker-development.md +++ b/src/cloud/docker/docker-development.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Docker - Configuration +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/ +status: migrated --- {{site.data.var.mcd-prod}} provides an option to deploy {{site.data.var.ee}} to a Docker environment for development, testing, and automation tasks. It includes the following features: @@ -26,7 +28,7 @@ The Cloud Docker environment supports Linux, macOS, and Windows operating system - [Git] for interaction between your local system and {{site.data.var.ece}} source repositories - [Docker] for Mac 2.2.0.0 or later or Docker for Linux -- Developer mode on macOS systems might require the [mutagen] option for file synchronization. +- Developer mode on macOS systems might require the [Mutagen] option for file synchronization. ### Docker engine @@ -111,7 +113,7 @@ Prior to setting up a local workspace, gather the following credentials and acco [Docker]: https://www.docker.com/get-started [Docker desktop]: https://docs.docker.com/desktop/#configure-docker-desktop [init-docker.sh]: https://github.com/magento/magento-cloud-docker/blob/develop/bin/init-docker.sh -[mutagen]: https://mutagen.io/documentation/introduction/installation +[Mutagen]: https://mutagen.io/documentation/introduction/installation [authentication keys]: {{site.baseurl}}/guides/v2.3/install-gde/prereq/connect-auth.html [Magento Cloud template]: https://github.com/magento/magento-cloud [Set up an account]: {{site.baseurl}}/cloud/before/before-workspace.html#newaccount diff --git a/src/cloud/docker/docker-extend.md b/src/cloud/docker/docker-extend.md index 607642cde4a..5f167501a0f 100644 --- a/src/cloud/docker/docker-extend.md +++ b/src/cloud/docker/docker-extend.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Docker - Configuration +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/configure/extend-docker-configuration/ +status: migrated --- You can use the built-in extension mechanism of Docker to specify [multiple compose files]. The following example replaces the default value of the `ENABLE_SENDMAIL` environment variable. diff --git a/src/cloud/docker/docker-installation.md b/src/cloud/docker/docker-installation.md index ac860eadf25..3c5903f5613 100644 --- a/src/cloud/docker/docker-installation.md +++ b/src/cloud/docker/docker-installation.md @@ -4,6 +4,8 @@ title: Prepare Commerce for Docker functional_areas: - Cloud - Configuration +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/setup/initialize-docker/ +status: migrated --- {{site.data.var.mcd-prod}} is one of the {{site.data.var.csuite}} packages designed to deploy and manage local {{site.data.var.ee}} Docker environments for both cloud and on-premises projects. diff --git a/src/cloud/docker/docker-launch.md b/src/cloud/docker/docker-launch.md index 546a6383e7e..602b7ab314e 100644 --- a/src/cloud/docker/docker-launch.md +++ b/src/cloud/docker/docker-launch.md @@ -7,6 +7,8 @@ functional_areas: - Configuration redirect_from: - /cloud/reference/docker-launch.html +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/deploy/ +status: migrated --- By default, `{{site.data.var.mcd-prod}}` deploys {{site.data.var.ee}} to a read-only file system in the Docker environment. This deployment mirrors the read-only file system in the Production environment. You have the option to deploy a Docker environment in developer mode, which provides an active development environment with full, writable file system permissions. diff --git a/src/cloud/docker/docker-manage-cron-jobs.md b/src/cloud/docker/docker-manage-cron-jobs.md index 7ef48dc50fc..b3620a01047 100644 --- a/src/cloud/docker/docker-manage-cron-jobs.md +++ b/src/cloud/docker/docker-manage-cron-jobs.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/configure/manage-cron-jobs/ +status: migrated --- The [Cron container] runs the scheduled cron jobs automatically based on the cron configuration defined in the [`crons` property of the `.magento.app.yaml` file]({{ site.baseurl }}/cloud/project/magento-app-properties.html#crons), and any custom configuration specified in the `docker-compose-override.yml` file. diff --git a/src/cloud/docker/docker-manage-database.md b/src/cloud/docker/docker-manage-database.md index 550ed414b7e..a80b1b01d1d 100644 --- a/src/cloud/docker/docker-manage-database.md +++ b/src/cloud/docker/docker-manage-database.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/configure/manage-database/ +status: migrated --- The Cloud Docker development environment provides MySQL services through a MariaDB (default) or MySQL database deployed to the [Docker database container][]. You connect to the database using `docker-compose` commands. You can also import data from an existing {{site.data.var.ece}} project into the database container using the `magento-cloud db:dump` command. diff --git a/src/cloud/docker/docker-mode-developer.md b/src/cloud/docker/docker-mode-developer.md index 50fbb0a01d1..a8a2faa3152 100644 --- a/src/cloud/docker/docker-mode-developer.md +++ b/src/cloud/docker/docker-mode-developer.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Docker +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/deploy/developer-mode/ +status: migrated --- Developer mode supports an active development environment with full, writable file system permissions. This option builds the Docker environment in developer mode and verifies configured service versions. @@ -153,7 +155,7 @@ To launch the Docker environment in developer mode: [installation steps]: {{site.baseurl}}/cloud/docker/docker-installation.html -[magento-creds]: {{site.baseurl}}/cloud/setup/first-time-setup-import-prepare.html#auth-json +[magento-creds]: {{site.baseurl}}/cloud/setup/first-time-setup-import-prepare.html [mutagen-install]: https://mutagen.io/documentation/introduction/installation/ [services]: {{site.baseurl}}/cloud/docker/docker-containers.html#service-containers [service configuration options]: {{site.baseurl}}/cloud/docker/docker-containers.html#service-configuration-options diff --git a/src/cloud/docker/docker-mode-production.md b/src/cloud/docker/docker-mode-production.md index c0ab394cff8..9e8eb467bb9 100644 --- a/src/cloud/docker/docker-mode-production.md +++ b/src/cloud/docker/docker-mode-production.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Docker +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/deploy/production-mode/ +status: migrated --- Production mode is the default configuration setting for launching the Docker environment with read-only filesystem permissions. This option builds the Docker environment in production mode and verifies configured service versions. diff --git a/src/cloud/docker/docker-multi-website.md b/src/cloud/docker/docker-multi-website.md index b13338d267a..a28a95b695e 100644 --- a/src/cloud/docker/docker-multi-website.md +++ b/src/cloud/docker/docker-multi-website.md @@ -6,6 +6,8 @@ functional_areas: - Setup - Configuration - Website +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/configure/multiple-sites/ +status: migrated --- Cloud Docker supports multiple websites or stores by adding subdomains to your configuration. See [Understanding websites, stores, and store views][]. @@ -36,6 +38,6 @@ After updating the `php.ini` file and adding subdomains, start the Docker enviro -[Modify {{site.data.var.ee}} variables]: {{site.baseurl}}/cloud/project/project-multi-sites.html#modify-magento-variables +[Modify {{site.data.var.ee}} variables]: {{site.baseurl}}/cloud/project/project-multi-sites.html [Understanding websites, stores, and store views]: {{site.baseurl}}/cloud/configure/configure-best-practices.html#sites [Set up websites, stores, and store views]: {{site.baseurl}}/guides/v2.4/config-guide/multi-site/ms_websites.html diff --git a/src/cloud/docker/docker-quick-reference.md b/src/cloud/docker/docker-quick-reference.md index d5ec54a2827..1e4dac7aba2 100644 --- a/src/cloud/docker/docker-quick-reference.md +++ b/src/cloud/docker/docker-quick-reference.md @@ -4,6 +4,8 @@ title: Docker development quick reference functional_areas: - Cloud - Docker +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/quick-reference/ +status: migrated --- This Quick Reference provides information about using Docker Compose commands, the Docker Compose configuration generator, and the {{site.data.var.mcd-prod}} CLI to configure, deploy, and use your Docker environment for application development. See the following topics for more detailed instructions: diff --git a/src/cloud/docker/docker-syncing-data.md b/src/cloud/docker/docker-syncing-data.md index 4a03fa99ff7..f2e44c6bb4d 100755 --- a/src/cloud/docker/docker-syncing-data.md +++ b/src/cloud/docker/docker-syncing-data.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/setup/synchronize-data/ +status: migrated --- You have the option to launch a Docker environment in [developer mode][set the launch mode], which provides an active development environment with full, writable file system permissions. diff --git a/src/cloud/docker/docker-test-app-mftf.md b/src/cloud/docker/docker-test-app-mftf.md index a45c7bd753d..371f76e5775 100644 --- a/src/cloud/docker/docker-test-app-mftf.md +++ b/src/cloud/docker/docker-test-app-mftf.md @@ -5,6 +5,8 @@ functional_areas: - Cloud redirect_from: - /cloud/docker/docker-mftf.html +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/test/application-testing/ +status: migrated --- In a Cloud Docker development environment, you can use the [Magento Functional Testing Framework (MFTF)][MFTF docs] for Magento application testing. In this environment, you run MFTF commands using the `mftf-command` ([CLI container command]). For example, the following command generates the MFTF tests: diff --git a/src/cloud/docker/docker-test-magecloud-pkg-code.md b/src/cloud/docker/docker-test-magecloud-pkg-code.md index acc0685d4a0..d18ea96abc2 100644 --- a/src/cloud/docker/docker-test-magecloud-pkg-code.md +++ b/src/cloud/docker/docker-test-magecloud-pkg-code.md @@ -7,6 +7,8 @@ functional_areas: - Configuration redirect from: - /cloud/docker/docker-development-testing.html +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/test/code-testing/ +status: migrated --- In a {{site.data.var.mcd-prod}} development environment, you can use the integrated test suite in each [{{site.data.var.csuite}}] package for Magento code testing. The test suites, which use the [Codeception testing framework for PHP], provide acceptance tests to validate code intended for contribution to Magento Cloud package repositories. diff --git a/src/cloud/docker/docker-troubleshooting.md b/src/cloud/docker/docker-troubleshooting.md index 8b8eba6cfa0..4b769c4dcba 100644 --- a/src/cloud/docker/docker-troubleshooting.md +++ b/src/cloud/docker/docker-troubleshooting.md @@ -4,6 +4,8 @@ title: Get support for Magento Cloud Docker functional_areas: - Cloud - Configuration +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/get-support/ +status: migrated --- {{site.data.var.mcd-prod}} is a Magento Community Engineering project supported by the Magento developer community. You have several options to get support and learn more about {{site.data.var.mcd-prod}} and local development. diff --git a/src/cloud/docker/docker-upgrade.md b/src/cloud/docker/docker-upgrade.md index f66b5089197..629ce1d9101 100644 --- a/src/cloud/docker/docker-upgrade.md +++ b/src/cloud/docker/docker-upgrade.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Configuration - Upgrade +redirect_to: https://developer.adobe.com/commerce/cloud-tools/docker/upgrade-docker-package/ +status: migrated --- We recommend that you use the latest version of {{site.data.var.mcd-prod}}. The version requirement is specified in the `composer.json` file for your project. Use the following instructions for the upgrade process. diff --git a/src/cloud/env/environment-vars_magento.md b/src/cloud/env/environment-vars_magento.md index c36d110dc1d..c06f14cfad0 100644 --- a/src/cloud/env/environment-vars_magento.md +++ b/src/cloud/env/environment-vars_magento.md @@ -4,15 +4,17 @@ title: ADMIN variables functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/stage/variables-admin.html +status: migrated --- -Users that have administrative access to the {{site.data.var.ece}} project can use the following project environment variables to override the configuration settings for the administrative user account to access the Admin UI. See [Change the ADMIN variables]({{ site.baseurl }}/cloud/before/before-setup-env-2_clone.html#change-the-magento-admin-variables). +Users that have administrative access to the {{site.data.var.ece}} project can use the following project environment variables to override the configuration settings for the administrative user account to access the Admin UI. See [Change the ADMIN variables]({{ site.baseurl }}/cloud/before/before-setup-env-2_clone.html). ## Admin credentials Use the ADMIN variables in the following table to override credentials for the Admin user during installation. -If you want to change the values after installation, connect to your environment using ssh and use the `magento-cloud` CLI [`admin:user` command]({{ site.baseurl }}/guides/v2.3/install-gde/install/cli/install-cli-subcommands-admin.html) to create or edit the Admin user credentials. +If you want to change the values after installation, connect to your environment using ssh and use the {{site.data.var.ee}} CLI [`admin:user` command]({{ site.baseurl }}/guides/v2.4/install-gde/install/cli/install-cli-subcommands-admin.html#create-or-edit-an-administrator) to create or edit the Admin user credentials. | Variable | Default | Description | | -------------- | --------------------------- | ----------- | diff --git a/src/cloud/env/environments-ssh.md b/src/cloud/env/environments-ssh.md index 011271f53b2..973875007b1 100644 --- a/src/cloud/env/environments-ssh.md +++ b/src/cloud/env/environments-ssh.md @@ -9,6 +9,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/secure-connections.html +status: migrated --- SSH, or Secure Shell, is a common protocol used to securely log into remote servers and systems. You will typically use SSH to access your environments directly to enter [CLI commands]({{ site.baseurl }}/cloud/reference/cli-ref-topic.html) for managing your branching, creating variables, and much more. We also support [sFTP](#sftp) (Secure FTP) using your SSH public key. diff --git a/src/cloud/env/environments-start.md b/src/cloud/env/environments-start.md index 01e9371b08a..7e3bc472e7b 100644 --- a/src/cloud/env/environments-start.md +++ b/src/cloud/env/environments-start.md @@ -1,29 +1,31 @@ --- group: cloud-guide -title: Manage branches with the Magento Cloud CLI +title: Manage branches with the CLI redirect_from: - /cloud/before/integration-ip-addr.html - /cloud/howtos/environment-tutorial-env-merge.html - /cloud/howtos/how-to.html functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/cli-branches.html +status: migrated --- To install the `magento-cloud` CLI, see the [Magento Cloud CLI reference]({{ site.baseurl }}/cloud/reference/cli-ref-topic.html). After you install the `magento-cloud` CLI and set up SSH keys for remote access to your cloud infrastructure, you can use `magento-cloud` CLI commands to manage the environments for your {{site.data.var.ece}} projects. For information about the environment architecture, see [Starter architecture]({{ site.baseurl }}/cloud/architecture/starter-architecture.html) or [Pro architecture]({{ site.baseurl }}/cloud/architecture/pro-architecture.html). To manage the branches and environments with the Project Web Interface, see [Manage branches with the Project Web Interface]({{ site.baseurl }}/cloud/project/project-webint-branch.html). -## Use Magento Cloud CLI commands {#env-start-comm} +## Use magento-cloud CLI commands -The `magento-cloud` CLI commands are very similar to Git commands. You can use them to connect to your {{site.data.var.ece}} project and manage your {{site.data.var.ece}} environments. Although you can run the commands from any directory, we recommend that you run them from a project directory. When run from a project directory, you can omit the `-p ` parameter. See the [Magento Cloud CLI reference]({{ site.baseurl }}/cloud/reference/cli-ref-topic.html). +The `magento-cloud` CLI commands are similar to Git commands. You can use them to connect to your {{site.data.var.ece}} project and manage your {{site.data.var.ece}} environments. Although you can run the commands from any directory, we recommend that you run them from a project directory. When run from a project directory, you can omit the `-p ` parameter. See the [Magento Cloud CLI reference]({{ site.baseurl }}/cloud/reference/cli-ref-topic.html). -## Get started creating branches {#getstarted} +### Get started creating branches -To begin, create a new branch. +To begin, create a branch. {% include cloud/cli-get-started.md %} -## Merge a branch {#merge} +### Merge a branch After completing development, you can merge this branch to the parent: @@ -41,7 +43,7 @@ After completing development, you can merge this branch to the parent: magento-cloud environment:merge ``` -## Delete an environment {#env-delete} +### Delete an environment Only delete an environment if you are certain that you no longer need it. You cannot recover an environment after you delete it. @@ -108,157 +110,21 @@ To delete an environment: {:.bs-callout-info} To activate an inactive environment, use the `magento-cloud environment:activate` command. -## Integration environment IP addresses {#ipaddress} +## Interact with remote environments -The following table lists incoming and outgoing IP addresses used by {{site.data.var.ece}} [Integration environments]({{ site.baseurl }}/cloud/architecture/pro-architecture.html#cloud-arch-int). These IP addresses are stable, but might change. We always notify customers before making any IP address changes. +After you [set up SSH keys]({{ site.baseurl }}/cloud/env/environments-ssh.html), you can connect from your local workspace to a remote environment and use `magento-cloud` CLI commands to interact with your {{site.data.var.ece}} project services and modify settings. -If you have a corporate firewall that blocks outgoing SSH connections, you can add the inbound IP addresses to your allowlist. +{% include cloud/log-in-db.md %} -### AWS regions +### SSH tunneling + +{% include cloud/ssh-tunnel.md %} + +## Regional IP addresses - - - - - - - - - - - - - - - - - - - - - - -
        Incoming IP addresses
        US RegionUS-2 RegionUS-3 RegionUS-5 RegionEU RegionEU-3 RegionAP-3 Region
        -

        52.200.159.23

        -

        52.200.159.125

        -

        52.200.160.5

        -
        -

        34.197.214.148

        -

        34.197.144.144

        -

        34.196.44.47

        -
        -

        34.210.133.187

        -

        34.214.72.239

        -

        34.215.10.85

        -
        -

        50.112.160.58

        -

        `54.213.195.223`

        -

        `35.163.170.185`

        -
        -

        52.209.44.44

        -

        52.209.23.96

        -

        52.51.117.101

        -
        -

        34.240.75.192

        -

        34.251.110.37

        -

        52.19.113.35

        -
        -

        52.65.39.201

        -

        52.65.10.202

        -

        52.65.30.37

        -
        - - - - - - - - - - - - - - - - - - - - - - - -
        Outgoing IP addresses
        US RegionUS-2 RegionUS-3 RegionUS-5 RegionEU RegionEU-3 RegionAP-3 Region
        -

        52.200.155.111

        -

        52.200.149.44

        -

        50.17.163.75

        -
        -

        34.197.219.58

        -

        34.197.201.45

        -

        34.197.217.71

        -
        -

        34.210.166.180

        -

        34.215.83.92

        -

        34.213.20.158

        -
        -

        54.70.238.217

        -

        52.88.113.98

        -

        52.36.188.230

        -
        -

        52.51.163.159

        -

        52.209.44.60

        -

        52.208.156.247

        -
        -

        34.240.57.142

        -

        52.16.140.48

        -

        52.209.134.55

        -
        -

        52.65.143.178

        -

        13.54.80.197

        -

        52.62.224.4

        -
        - -### Azure region - - - - - - - - - - - -
        Incoming IP addresses
        US-A1 Region
        -

          40.79.241.76

        -

        52.147.176.136

        -

           20.49.0.170

        -
        - - - - - - - - - - - -
        Outgoing IP addresses
        US-A1 Region
        -

          40.79.241.76

        -

        52.147.176.136

        -

           20.49.0.170

        -
        - -### Get IP address of Cloud instance - -Use `ping` command for retrieving IP address for particular Cloud instance. - -Example of usage: +The following tables list the incoming and outgoing IP addresses used by {{site.data.var.ece}} [Integration environments]({{ site.baseurl }}/cloud/architecture/pro-architecture.html#cloud-arch-int). These IP addresses are stable, but might change. We always notify customers before making any IP address changes. + +You can use the `ping` command to retrieve the incoming IP address: ```bash ping integration-abcd123-abcd78910.us-3.magentosite.cloud @@ -273,12 +139,20 @@ Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 ``` -## Interact with environments using the magento-cloud CLI {#commands} +If you have a corporate firewall that blocks outgoing SSH connections, you can add the inbound IP addresses to your allowlist. -After you [setup SSH keys]({{ site.baseurl }}/cloud/env/environments-ssh.html), you can connect from your local workspace to a remote environment and use `magento-cloud` CLI commands to interact with your {{site.data.var.ece}} project services and modify settings. +### AWS regions -{% include cloud/log-in-db.md %} +| | United States | | | Europe | | | | Asia-Pacific | +| --- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :---| +| | US | US-3 | US-5 | EU | EU-3 | EU-5 | EU-6 | AP-3 | +| Incoming | 52.200.159.23

        52.200.159.125

        52.200.160.5 | 34.210.133.187

        34.214.72.239

        34.215.10.85 | 50.112.160.58

        54.213.195.223

        35.163.170.185 | 52.209.44.44

        52.209.23.96

        52.51.117.101 | 34.240.75.192

        34.251.110.37

        52.19.113.35 | 35.157.81.88

        3.122.198.131

        52.28.102.195 | 35.181.23.47

        35.181.24.165

        35.180.237.48 | 52.65.39.201

        52.65.10.202

        52.65.30.37 | +| Outgoing | 52.200.155.111

        52.200.149.44

        50.17.163.75 | 34.210.166.180

        34.215.83.92

        34.213.20.158 | 54.70.238.217

        52.88.113.98

        52.36.188.230 | 52.51.163.159

        52.209.44.60

        52.208.156.247 | 34.240.57.142

        52.16.140.48

        52.209.134.55 | 3.121.163.221

        3.121.79.229

        18.197.3.230 | 52.47.155.26

        35.181.0.157

        35.181.12.15 | 52.65.143.178

        13.54.80.197

        52.62.224.4 | -## SSH tunneling {#env-start-tunn} +### Azure regions -{% include cloud/ssh-tunnel.md %} +| | United States | Europe | +| -------- | :-------------- | :-------------- | +| | US-A1 | AZ-WESTEUROPE-1 | +| Incoming | 20.186.27.68

        20.186.58.163

        20.186.113.8 | 50.112.160.58

        54.213.195.223

        35.163.170.185 | +| Outgoing | 20.186.58.163

        20.186.27.68

        20.186.113.8 | 104.45.78.98

        51.105.168.218

        51.105.163.143 | diff --git a/src/cloud/env/environments.md b/src/cloud/env/environments.md index 07035fb505d..e5e049b3028 100644 --- a/src/cloud/env/environments.md +++ b/src/cloud/env/environments.md @@ -5,6 +5,8 @@ redirect_from: - /cloud/deploy/configure-deploy.html functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/overview.html +status: migrated --- After fully configuring your store, you need to configure your environments. Environments in {{site.data.var.ece}} include containers with applications, services, and a database to provide a complete system for your {{site.data.var.ee}} application codebase and files. @@ -18,11 +20,6 @@ You can configure application settings, routes, build and deploy actions, and no When you push code changes, the active environment provisions container updates using the YAML configuration files. -## Update Pro Staging and Production environment configuration +## Configuration updates to Pro environments -For {{site.data.var.ece}} Pro Staging and Production environments, you can update many configuration options in your local development environment and commit the changes to apply them to these environments. However, you must submit a support ticket to update the following configuration options: - -- Install or update services in the `.magento/services.yaml` file. -- Change the configuration for the `mounts` and `disk` properties in the `.magento.app.yaml` file. - -Some Pro projects might also require a support ticket to update the [route configuration]({{site.baseurl}}/cloud/project/routes.html) in the `routes.yaml` file, and the [cron configuration]({{site.baseurl}}/cloud/configure/setup-cron-jobs.html) in the `.magento.app.yaml` file. +{% include cloud/note-pro-missing-self-service-options.md %} diff --git a/src/cloud/env/log-handlers.md b/src/cloud/env/log-handlers.md index a3ca9f4dd43..223d73976e4 100644 --- a/src/cloud/env/log-handlers.md +++ b/src/cloud/env/log-handlers.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/log/log-handlers.html +status: migrated --- You can configure logging handlers to send messages to a remote logging server. A logging handler pushes build and deploy logs to other systems, similarly to the way you push logs to Slack and email. You can enable a _syslog_ handler, which is ideal for logging messages related to hardware, or a Graylog Extended Log Format (GELF) handler, which is ideal for logging messages from software applications. @@ -15,14 +17,14 @@ The following example configures both of these handlers by adding the configurat log: syslog: ident: "" - facility: 8 # http://php.net/manual/en/network.constants.php + facility: 8 # https://php.net/manual/en/network.constants.php min_level: "info" logopts: syslog_udp: host: "" port: - facility: 8 # http://php.net/manual/en/network.constants.php + facility: 8 # https://php.net/manual/en/network.constants.php ident: "" min_level: "info" diff --git a/src/cloud/env/restore-environment.md b/src/cloud/env/restore-environment.md index 7a83aafaa21..aeb64fd4a8d 100644 --- a/src/cloud/env/restore-environment.md +++ b/src/cloud/env/restore-environment.md @@ -1,6 +1,8 @@ --- title: Restore an environment group: cloud-guide +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/restore-environment.html +status: migrated --- If you encounter issues in your environment and do not have a [valid snapshot]({{ site.baseurl }}/cloud/project/project-webint-snap.html), you can try restoring your environment in one of the following ways: diff --git a/src/cloud/env/setup-notifications.md b/src/cloud/env/setup-notifications.md index f807c8cbfde..9bf5d250692 100644 --- a/src/cloud/env/setup-notifications.md +++ b/src/cloud/env/setup-notifications.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/log/set-up-notifications.html +status: migrated --- By default, {{site.data.var.ece}} writes build and deploy actions to the `app/var/log/cloud.log` file inside the {{site.data.var.ee}} root application directory. Optionally, you can send logs to a messaging system, such as Slack and email, to receive real-time notifications. diff --git a/src/cloud/env/variables-build.md b/src/cloud/env/variables-build.md index 96d14176a2b..6aafd3a75de 100644 --- a/src/cloud/env/variables-build.md +++ b/src/cloud/env/variables-build.md @@ -4,6 +4,8 @@ title: Build variables functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/stage/variables-build.html +status: migrated --- The following _build_ variables control actions in the build phase and can inherit and override values from the [Global variables]({{ site.baseurl }}/cloud/env/variables-global.html). Insert these variables in the `build` stage of the `.magento.env.yaml` file: diff --git a/src/cloud/env/variables-cloud.md b/src/cloud/env/variables-cloud.md index a29865fa385..4c236c7d756 100644 --- a/src/cloud/env/variables-cloud.md +++ b/src/cloud/env/variables-cloud.md @@ -4,6 +4,8 @@ title: Cloud variables functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/stage/variables-cloud.html +status: migrated --- Environment variables that are specific to {{site.data.var.ece}} use the `MAGENTO_CLOUD_*` prefix: diff --git a/src/cloud/env/variables-deploy.md b/src/cloud/env/variables-deploy.md index c1b10d060ac..7f012331f4f 100644 --- a/src/cloud/env/variables-deploy.md +++ b/src/cloud/env/variables-deploy.md @@ -6,6 +6,8 @@ functional_areas: - Configuration redirect_from: - /cloud/trouble/message-queues.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/stage/variables-deploy.html +status: migrated --- The following _deploy_ variables control actions in the deploy phase and can inherit and override values from the [Global variables]({{ site.baseurl }}/cloud/env/variables-global.html). Insert these variables in the `deploy` stage of the `.magento.env.yaml` file: @@ -72,8 +74,7 @@ stage: CLEAN_STATIC_FILES: false ``` -Failure to clean static view files before deploying can cause problems if you -deploy updates to existing files without removing the previous versions. Because of [static file fallback]({{ site.baseurl }}/guides/v2.3/frontend-dev-guide/cache_for_frontdevs.html#clean_static_cache) rules, fallback operations can display the wrong file if the directory contains multiple versions of the same file. +Failure to clean static view files before deploying can cause problems if you deploy updates to existing files without removing the previous versions. Because of [static file fallback]({{ site.baseurl }}/guides/v2.3/frontend-dev-guide/cache_for_frontdevs.html#clean_static_cache) rules, fallback operations can display the wrong file if the directory contains multiple versions of the same file. ### `CRON_CONSUMERS_RUNNER` @@ -85,8 +86,14 @@ Use this environment variable to confirm message queues are running after a depl - `cron_run`—A boolean value that enables or disables the `consumers_runner` cron job (default = `false`). - `max_messages`—A number specifying the maximum number of messages each consumer must process before terminating (default = `1000`). Although we do not recommend it, you can use `0` to prevent the consumer from terminating. - `consumers`—An array of strings specifying which consumer(s) to run. An empty array runs _all_ consumers. + - `multiple_processes`-A number specifying the number of processes to spawn for each consumer. Supported in Magento **2.4.4** or greater. +{:.bs-callout-info} +To return a list of message queue `consumers`, run the `./bin/magento queue:consumers:list` command. + +Example array that runs specific `consumers` and the `multiple_processes` to spawn for each consumer: + ```yaml stage: deploy: @@ -101,27 +108,32 @@ stage: consumer2: 3 ``` -By default, the deployment process overwrites all settings in the `env.php` file. Refer to [Manage message queues]({{ site.baseurl }}/guides/v2.3/config-guide/mq/manage-message-queues.html) for more information about how this works in {{site.data.var.ce}} and {{site.data.var.ee}}. +Example of an empty array that runs all `consumers`: -The following command returns a list of message queue consumers: - -```bash -./bin/magento queue:consumers:list +```yaml +stage: + deploy: + CRON_CONSUMERS_RUNNER: + cron_run: true + max_messages: 1000 + consumers: [] ``` +By default, the deployment process overwrites all settings in the `env.php` file. Refer to [Manage message queues]({{ site.baseurl }}/guides/v2.3/config-guide/mq/manage-message-queues.html) for more information about how this works in {{site.data.var.ce}} and {{site.data.var.ee}}. + ### `CONSUMERS_WAIT_FOR_MAX_MESSAGES` - **Default**—`false` - **Version**—{{site.data.var.ee}} 2.2.0 and later -Configure how consumers process messages from the message queue by choosing one of the following options: +Configure how `consumers` process messages from the message queue by choosing one of the following options: -- `false`—Consumers process available messages in the queue, close the TCP connection, and terminate. Consumers do not wait for additional messages to enter the queue, even if the number of processed messages is less than the `max_messages` value specified in the `CRON_CONSUMERS_RUNNER` deploy variable. +- `false`—`Consumers` process available messages in the queue, close the TCP connection, and terminate. `Consumers` do not wait for additional messages to enter the queue, even if the number of processed messages is less than the `max_messages` value specified in the `CRON_CONSUMERS_RUNNER` deploy variable. -- `true`—Consumers continue to process messages from the message queue until reaching the maximum number of messages (`max_messages`) specified in the `CRON_CONSUMERS_RUNNER` deploy variable before closing the TCP connection and terminating the consumer process. If the queue empties before reaching `max_messages`, the consumer waits for more messages to arrive. +- `true`—`Consumers` continue to process messages from the message queue until reaching the maximum number of messages (`max_messages`) specified in the `CRON_CONSUMERS_RUNNER` deploy variable before closing the TCP connection and terminating the consumer process. If the queue empties before reaching `max_messages`, the consumer waits for more messages to arrive. {:.bs-callout-warning} -If you use workers to run consumers instead of using a cron job, set this variable to true. +If you use workers to run `consumers` instead of using a cron job, set this variable to true. ```yaml stage: @@ -300,6 +312,9 @@ See [Configure the lock]({{site.baseurl}}/guides/v2.3/install-gde/install/cli/in - **Default**—`false` - **Version**—{{site.data.var.ee}} 2.1.4 and later +{:.bs-callout-tip} +The `MYSQL_USE_SLAVE_CONNECTION` variable is supported only on {{site.data.var.ece}} Staging and Production Pro cluster environments and is not supported on Starter projects. + {{site.data.var.ee}} can read multiple databases asynchronously. Set to `true` to automatically use a _read-only_ connection to the database to receive read-only traffic on a non-master node. This improves performance through load balancing, because only one node needs to handle read-write traffic. Set to `false` to remove any existing read-only connection array from the `env.php` file. ```yaml @@ -308,6 +323,8 @@ stage: MYSQL_USE_SLAVE_CONNECTION: true ``` +When the `MYSQL_USE_SLAVE_CONNECTION` variable is set to `true`, the `synchronous_replication` parameter is set to `true` by default in the `env.php` file on Pro Staging and Production environments. When the `MYSQL_USE_SLAVE_CONNECTION` is set to `false`, the `synchronous_replication` parameter is not configured. + ### `QUEUE_CONFIGURATION` - **Default**—_Not set_ @@ -382,6 +399,9 @@ If you specify `\Magento\Framework\Cache\Backend\RemoteSynchronizedCache` as the {:.bs-callout-warning} Do not enable this variable on scaled architecture (split architecture) projects. It causes Redis connection errors. Redis slaves are still active but will not be used for Redis reads. As an alternative, we recommend the following: use {{site.data.var.ee}} 2.3.5 or later on Cloud projects with a scaled architecture, implement a new Redis backend configuration, and implement L2 caching for Redis. +{:.bs-callout-tip} +The `REDIS_USE_SLAVE_CONNECTION` variable is supported only on {{site.data.var.ece}} Staging and Production Pro cluster environments and is not supported on Starter projects. + {{site.data.var.ee}} can read multiple Redis instances asynchronously. Set to `true` to automatically use a _read-only_ connection to a Redis instance to receive read-only traffic on a non-master node. This improves performance through load balancing, because only one node needs to handle read-write traffic. Set to `false` to remove any existing read-only connection array from the `env.php` file. ```yaml diff --git a/src/cloud/env/variables-global.md b/src/cloud/env/variables-global.md index ac93dfc59c0..6ff84f7cf75 100644 --- a/src/cloud/env/variables-global.md +++ b/src/cloud/env/variables-global.md @@ -4,6 +4,8 @@ title: Global variables functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/stage/variables-global.html +status: migrated --- The following _global_ variables control actions across each phase: build, deploy, and post-deploy. Because global variables impact every phase, you must set them in the `global` stage of the `.magento.env.yaml` file: diff --git a/src/cloud/env/variables-intro.md b/src/cloud/env/variables-intro.md index 2060e332d42..7bcd528261a 100644 --- a/src/cloud/env/variables-intro.md +++ b/src/cloud/env/variables-intro.md @@ -4,9 +4,11 @@ title: Environment variables functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/stage/variables-intro.html +status: migrated --- -{{site.data.var.ece}} enables you to assign environment variables to override configuration options: +{{site.data.var.ece}} enables you to assign environment variables to override configuration options. The `ece-tools` package sets values in the `env.php` file based on values from [Cloud variables]({{site.baseurl}}/cloud/env/variables-cloud.html), variables set in the Project Web interface, and the `.magento.env.yaml` configuration file. The types of environment variables include: - [ADMIN]({{ site.baseurl }}/cloud/env/environment-vars_magento.html)—variables override project ADMIN variables - [Global]({{ site.baseurl }}/cloud/env/variables-global.html)—variables affect each stage @@ -17,4 +19,9 @@ functional_areas: Variables are _hierarchical_, which means that if a variable is not overridden, it is inherited from the parent environment. -You can set [ADMIN variables]({{ site.baseurl }}/cloud/env/environment-vars_magento.html) from the Project Web interface or using the {{site.data.var.ee}} CLI. You can manage other environment variables from the [`.magento.env.yaml`]({{ site.baseurl }}/cloud/project/magento-env-yaml.html) file to manage build and deploy actions across all of your environments—including Pro Staging and Production—without requiring a support ticket. \ No newline at end of file +{% include cloud/customize-build-deploy.md %} + +You can set [ADMIN variables]({{ site.baseurl }}/cloud/env/environment-vars_magento.html) from the Project Web interface or using the {{site.data.var.ee}} CLI. You can manage other environment variables from the [`.magento.env.yaml`]({{ site.baseurl }}/cloud/project/magento-env-yaml.html) file to manage build and deploy actions across all of your environments—including Pro Staging and Production—without requiring a support ticket. + +{:.bs-callout-tip} +YAML files are case sensitive and do not allow tabs. Be careful to use consistent indentation throughout the `.magento.env.yaml` file or your configuration may not work as expected. The examples in our documentation and in the sample file use _two-space_ indentation. Use the [ece-tools validate command]({{ site.baseurl }}/cloud/project/magento-env-yaml.html#validate-configuration-file) to check your configuration. diff --git a/src/cloud/env/variables-post-deploy.md b/src/cloud/env/variables-post-deploy.md index 8967034dd2d..0e8b4418265 100644 --- a/src/cloud/env/variables-post-deploy.md +++ b/src/cloud/env/variables-post-deploy.md @@ -4,6 +4,8 @@ title: Post-deploy variables functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/stage/variables-post-deploy.html +status: migrated --- The following _post\_deploy_ variables control actions in the post-deploy phase and can inherit and override values from the [Global variables]({{ site.baseurl }}/cloud/env/variables-global.html). Insert these variables in the `post-deploy` stage of the `.magento.env.yaml` file: diff --git a/src/cloud/env/working-with-variables.md b/src/cloud/env/working-with-variables.md index 00dd1f1f6f0..47d99146feb 100644 --- a/src/cloud/env/working-with-variables.md +++ b/src/cloud/env/working-with-variables.md @@ -4,8 +4,10 @@ title: Working with variables functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/variable-levels.html +status: migrated --- -Environment variables apply to a specific environment or branch. An environment _inherits_ variable definitions from the parent environment. You can override an inherited value by defining the variable specifically for the environment. For example, to set variables for development, define the variable values in the `.magento.env.yaml` file in the Integration environment. All environments branching from the Integration environment inherit those values. Refer to [Build and deploy]({{ site.baseurl }}/cloud/project/magento-env-yaml.html) for details about configuring your environment using the `.magento.env.yaml` file. +Environment variables apply to a specific environment or branch. An environment _inherits_ variable definitions from the parent environment. You can override an inherited value by defining the variable specifically for the environment. For example, to set variables for development, define the variable values in the `.magento.env.yaml` file in the Integration environment. All environments branching from the Integration environment inherit those values. See [Deployment configuration]({{ site.baseurl }}/cloud/project/magento-env-yaml.html) for details about configuring your environment using the `.magento.env.yaml` file. The following demonstrates a specific case for preventing a variable from being seen or inherited. You can only specify these options in the CLI. This case does not pertain to all available environment variables. When using the CLI, you must set variables using one of the following methods: diff --git a/src/cloud/howtos/custom-theme.md b/src/cloud/howtos/custom-theme.md index b012fe7b1be..97909e15859 100644 --- a/src/cloud/howtos/custom-theme.md +++ b/src/cloud/howtos/custom-theme.md @@ -9,6 +9,8 @@ functional_areas: - Cloud - Setup - Theme +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/custom-theme.html +status: migrated --- You can install one or multiple themes to use for one or all of your stores and sites in your project. Themes include multiple static files including images, fonts, CSS, JavaScript, PHP, and more to fully design your stores. You can add the theme by either extracting its code to the file system or using Composer. diff --git a/src/cloud/howtos/debug.md b/src/cloud/howtos/debug.md index 84ef8c19e69..fef7c7541fc 100644 --- a/src/cloud/howtos/debug.md +++ b/src/cloud/howtos/debug.md @@ -1,13 +1,11 @@ --- group: cloud-guide -subgroup: How To title: Configure Xdebug -menu_title: Configure Xdebug -menu_order: 100 -menu_node: functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/test/debug.html +status: migrated --- Xdebug is an extension for debugging your PHP. The following explains how to configure Xdebug and PhpStorm to debug in your local environment. You can use the IDE of your choice. See the vendor documentation for those applications for further configuration information. @@ -15,7 +13,7 @@ Xdebug is an extension for debugging your PHP. The following explains how to con {:.bs-callout-info} You can configure Xdebug to run in the {{site.data.var.mcd-prod}} environment for local debugging without changing your {{site.data.var.ece}} project configuration. See [Configure Xdebug for Docker]({{site.baseurl}}/cloud/docker/docker-development-debug.html). -To set up Xdebug, you need to [configure](#configure-xdebug) a file in your Git repository, configure your IDE, and set up port forwarding. You can configure settings in the `magento.app.yaml` file. After editing, you can push the Git changes across all Starter environments and Pro Integration environments to enable Xdebug. To push these settings to Pro plan Staging and Production environments, you must enter a ticket. +To set up Xdebug, [configure](#configure-xdebug) a file in your Git repository, configure your IDE, and set up port forwarding. You can configure settings in the `magento.app.yaml` file. After editing, you can push the Git changes across all Starter environments and Pro Integration environments to enable Xdebug. You do not need to do this for Pro Staging & Production environments as Xdebug is always available, see [Debug for Pro Staging and Production](#pro-debug). Once configured, you can debug [CLI commands](#debugcli), [web requests](#webrequests), and [code](#code). Remember, all {{site.data.var.ece}} environments are read-only. You need to pull code to your local development environment to perform debugging. For Pro Staging and Production environments, we include [additional instructions](#pro-debug) for Xdebug. @@ -32,8 +30,6 @@ To configure Xdebug, you need to do the following: - Configure your IDE, like [PhpStorm](#phpstorm) - [Set up port forwarding](#port) -For configuring on Pro plan Staging and Production, you need to enter a [ticket for Staging and Production](#pro). - ### Get started with a branch {#branch} To add Xdebug, we recommend creating a branch to work in and add the files. @@ -42,9 +38,12 @@ To add Xdebug, we recommend creating a branch to work in and add the files. ### Enable Xdebug in your environment {#enable} +{:.bs-callout-info} +For Pro Production & Staging environments this configuration step is not required. See [Debug for Pro Staging and Production](#pro-debug) + To enable Xdebug for your project, add `xdebug` to the `runtime:extensions` section of the `.magento.app.yaml` file. -You can enable Xdebug directly to all Starter environments and Pro Integration environments. For Pro Staging and Production, you need to update this file and enter a [Support ticket]({{ site.baseurl }}/cloud/trouble/trouble.html) to have it enabled. We enable Xdebug on those environments for you. +You can enable Xdebug directly to all Starter environments and Pro Integration environments. {:.procedure} To enable Xdebug: @@ -179,12 +178,12 @@ To troubleshoot the connection: #### Port forwarding on Windows {#portwindows} -To set up port forwarding (SSH tunneling) on Windows, you must configure your Windows terminal application. For this example, we walk through creating an SSH tunnel using [Putty](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html). You can use other applications such as Cygwin. For more information on other applications, see the vendor documentation provided with those applications. +To set up port forwarding (SSH tunneling) on Windows, you must configure your Windows terminal application. For this example, we walk through creating an SSH tunnel using [Putty](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html). You can use other applications such as Cygwin. For more information on other applications, see the vendor documentation provided with those applications. {:.procedure} To set up an SSH tunnel on Windows using Putty: -1. If you have not already done so, download [Putty](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html). +1. If you have not already done so, download [Putty](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html). 1. Start Putty. @@ -224,12 +223,6 @@ To set up an SSH tunnel on Windows using Putty: - All Putty settings are correct - You are running Putty on the machine on which your private {{site.data.var.ece}} SSH keys are located -### Configure Pro Staging and Production {#pro} - -To complete configuration for Pro plan Staging and Production environments, you must enter a [Support ticket]({{ site.baseurl }}/cloud/trouble/trouble.html) to have Xdebug enabled and configured in Staging and Production environments. - -We enable Xdebug in the environment. Be aware that this is a configuration change that requires us to redeploy your Staging and Production environments. - ## SSH access to Xdebug environments {#ssh} For initiating debugging, performing setup, and more, you need the SSH commands for accessing the environments. You can get this information, through the [Project Web Interface]({{ site.baseurl }}/cloud/project/projects.html) and your project spreadsheet. @@ -254,12 +247,21 @@ ssh -R 9000:localhost:9000 pwga8A0bhuk7o-mybranch@ssh.us.magentosite.cloud ## Debug for Pro Staging and Production {#pro-debug} +{:.bs-callout-info} +On Pro Staging & Production environments, Xdebug is always available as these environments have a special setup for Xdebug. All normal web requests are routed to a dedicated PHP process that does not have Xdebug. Therefore, these requests are processed normally and are not subject to the performance degradation when Xdebug is loaded. When a web request is sent that has the Xdebug key, it is routed to a separate PHP process that has Xdebug loaded. + To use Xdebug specifically on Pro plan Staging and Production environment, you create a separate SSH tunnel and web session only you have access to. This usage differs from typical access, only providing access to you and not to all users. You need the following: - SSH commands for accessing the environments. You can get this information, through the [Project Web Interface]({{ site.baseurl }}/cloud/project/projects.html) or your Cloud Onboarding UI. -- The `xdebug_key` value we set when configuring the Staging and Pro environments +- The `xdebug_key` value we set when configuring the Staging and Pro environments. + + The `xdebug_key` can be found by using SSH to log in to the primary node and executing: + + ```bash + cat /etc/platform/*/nginx.conf | grep xdebug.sock | head -n1 + ``` {:.procedure} To set up an SSH tunnel to a Staging or Production environment: diff --git a/src/cloud/howtos/install-components.md b/src/cloud/howtos/install-components.md index f2545bcd8f1..2e96767b96c 100644 --- a/src/cloud/howtos/install-components.md +++ b/src/cloud/howtos/install-components.md @@ -6,6 +6,8 @@ functional_areas: - Configuration - Extensions - Module +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/extensions.html +status: migrated --- You can extend your {{site.data.var.ee}} application capabilities by adding an extension from the [Commerce Marketplace][]. For example, you can add a theme to change the look and feel of your storefront, or you can add a language package to localize your storefront and Admin panel. @@ -88,11 +90,13 @@ To enable or disable an extension: 1. Enable or disable a module. The `module` command updates the `config.php` file with the requested status of the module. >Enable a module. + ```bash bin/magento module:enable ``` >Disable a module. + ```bash bin/magento module:disable ``` @@ -164,7 +168,7 @@ If you encounter errors, see [extension deployment failure][trouble]. -[branching]: {{ site.baseurl }}/cloud/env/environments-start.html#getstarted +[branching]: {{ site.baseurl }}/cloud/env/environments-start.html [config]: {{ site.baseurl }}/guides/v2.3/config-guide/config/config-php.html [extensions]: {{ site.baseurl }}/extensions/ [Commerce Marketplace]: https://marketplace.magento.com diff --git a/src/cloud/howtos/sample-data.md b/src/cloud/howtos/sample-data.md index a09b38e3f01..9eb2a7ad5f6 100644 --- a/src/cloud/howtos/sample-data.md +++ b/src/cloud/howtos/sample-data.md @@ -8,6 +8,8 @@ menu_node: functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/test/sample-data.html +status: migrated --- If you need some example data when developing your store, you can install our sample data. This data simulates an active {{site.data.var.ee}} store including customers, products, and other data. This sample data works best with a new "blank site" {{site.data.var.ece}} template installation when creating your project in your Integration environment. diff --git a/src/cloud/integrations/bitbucket-integration.md b/src/cloud/integrations/bitbucket-integration.md index d84f3d487f7..ff205a5d9a2 100644 --- a/src/cloud/integrations/bitbucket-integration.md +++ b/src/cloud/integrations/bitbucket-integration.md @@ -4,6 +4,8 @@ title: Bitbucket integration functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/integrations/bitbucket.html +status: migrated --- You can configure your Bitbucket repository to automatically build and deploy an environment when you push code changes. This integration synchronizes your Bitbucket repository with your {{site.data.var.ece}} account. diff --git a/src/cloud/integrations/cloud-integrations.md b/src/cloud/integrations/cloud-integrations.md index 55bd48bf82f..62dee4266f1 100644 --- a/src/cloud/integrations/cloud-integrations.md +++ b/src/cloud/integrations/cloud-integrations.md @@ -4,6 +4,8 @@ title: Integrations functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/integrations/overview.html +status: migrated --- Integrations are useful for leveraging the functionality of external services—such as Git hosting or Slack bots—and maintaining your current development processes, such as using the code review pull request function in GitHub. You can add the following integrations to your {{site.data.var.ece}} project: diff --git a/src/cloud/integrations/github-integration.md b/src/cloud/integrations/github-integration.md index 57f963afeb4..79f06dd232d 100644 --- a/src/cloud/integrations/github-integration.md +++ b/src/cloud/integrations/github-integration.md @@ -4,6 +4,8 @@ title: GitHub integration functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/integrations/github.html +status: migrated --- The GitHub integration enables you to manage your {{site.data.var.ece}} environments directly from your GitHub repository. The integration manages content already in GitHub and synchronizes it with {{site.data.var.ee}}. Before you begin, your project and environments must be in a GitHub repository. @@ -186,7 +188,7 @@ To remove the GitHub integration: 1. Delete the integration. ```bash - magento-cloud integration:delete + magento-cloud integration:delete ``` Also, you can remove the GitHub integration by logging in to your GitHub account and removing the web hook in the _Webhooks_ tab of the repository _Settings_. diff --git a/src/cloud/integrations/gitlab-integration.md b/src/cloud/integrations/gitlab-integration.md index c555dff5748..74d692de0aa 100644 --- a/src/cloud/integrations/gitlab-integration.md +++ b/src/cloud/integrations/gitlab-integration.md @@ -4,6 +4,8 @@ title: GitLab integration functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/integrations/gitlab.html +status: migrated --- You can configure a GitLab repository to automatically build and deploy an environment when you push code changes. This integration synchronizes your GitLab repository with your {{ site.data.var.ece }} account. @@ -105,7 +107,7 @@ To enable the GitLab integration: 1. From the terminal, add the GitLab integration to your {{site.data.var.ece}} project: ```bash - magento-cloud integration:add --type gitlab --project=3txxjf32gtryos --token=qVUfeEn4ouze7A7JH --base-url=https://gitlab.com/ --server-project=my-agency/project-name --build-merge-requests=false --merge-requests-clone-parent-data=false --fetch-branches=true --prune-branches=true + magento-cloud integration:add --type gitlab --project=3txxjf32gtryos --token=qVUfeEn4ouze7A7JH #gitleaks:allow --base-url=https://gitlab.com/ --server-project=my-agency/project-name --build-merge-requests=false --merge-requests-clone-parent-data=false --fetch-branches=true --prune-branches=true ``` 1. When prompted, enter "Y" to add the integration. @@ -184,7 +186,7 @@ Or you can test it by pushing a simple change to your GitLab repository. ## Create a Cloud branch -Use the `magento-cloud` CLI `environment:push` command to create and activate a new environment. See [Create a new Cloud branch]({{site.baseurl}}/cloud/integrations/bitbucket-integration.html#create-a-new-cloud-branch). +Use the `magento-cloud` CLI `environment:push` command to create and activate a new environment. See [Create a new Cloud branch]({{site.baseurl}}/cloud/integrations/bitbucket-integration.html). ## Remove the integration diff --git a/src/cloud/integrations/health-notifications.md b/src/cloud/integrations/health-notifications.md index 070cebf3cc0..96c162f16a9 100644 --- a/src/cloud/integrations/health-notifications.md +++ b/src/cloud/integrations/health-notifications.md @@ -4,6 +4,8 @@ title: Health notifications functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/integrations/health-notifications.html +status: migrated --- {{site.data.var.ece}} monitors disk space usage on all applications and services in your Starter environment or your Pro Integration environment. A database disk that runs out of space could cause data corruption. The health status check occurs every 5 minutes and can notify you by email or other external service. There are three low-disk warnings for health notifications: diff --git a/src/cloud/live/launch-steps.md b/src/cloud/live/launch-steps.md index 21e1868d672..e980813331f 100644 --- a/src/cloud/live/launch-steps.md +++ b/src/cloud/live/launch-steps.md @@ -8,6 +8,8 @@ menu_node: functional_areas: - Cloud - Testing +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/launch/steps.html +status: migrated --- {:.ref-header} diff --git a/src/cloud/live/live-prot.md b/src/cloud/live/live-prot.md index b0e38130800..9b9709fd6d9 100644 --- a/src/cloud/live/live-prot.md +++ b/src/cloud/live/live-prot.md @@ -8,6 +8,8 @@ menu_node: functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/protective-block.html +status: migrated --- {{site.data.var.ece}} has a protective blocking feature that, under certain circumstances, restricts access to websites with security vulnerabilities. We use this partial blocking method to prevent exploitation of known security vulnerabilities. diff --git a/src/cloud/live/live-sanity-check.md b/src/cloud/live/live-sanity-check.md index 9a171671901..116803633a9 100644 --- a/src/cloud/live/live-sanity-check.md +++ b/src/cloud/live/live-sanity-check.md @@ -4,6 +4,8 @@ title: Build and deploy on local functional_areas: - Cloud - Testing +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/staging-production.html +status: migrated --- Before pushing your code to your [Starter]({{ site.baseurl }}/cloud/architecture/starter-architecture.html) or [Pro]({{ site.baseurl }}/cloud/architecture/pro-architecture.html) Staging and Production environments, you should fully build on your local. Fully testing builds and deploys along with full site testing can reduce the risk of issues or delays for your final site deployment, and expose any issues early for debugging. diff --git a/src/cloud/live/live.md b/src/cloud/live/live.md index af3b850e2f3..8ff628ceb93 100644 --- a/src/cloud/live/live.md +++ b/src/cloud/live/live.md @@ -3,6 +3,8 @@ group: cloud-guide title: Site launch functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/launch/overview.html +status: migrated --- When you have completed deployment and testing in Integration and Staging environments, you can begin site launch preparation. First, you should complete all development and testing before working in the Production environment. Feel ready to launch? Review our checklists, best practices, and final steps to launch your site. diff --git a/src/cloud/live/paypal-onboarding.md b/src/cloud/live/paypal-onboarding.md index 78b5341af5a..b2ffd3f9a9e 100644 --- a/src/cloud/live/paypal-onboarding.md +++ b/src/cloud/live/paypal-onboarding.md @@ -9,6 +9,8 @@ functional_areas: - Cloud - Setup - Services +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/paypal.html +status: migrated --- {{site.data.var.ece}} provides an on-boarding tool to configure PayPal Express Checkout accounts directly through the Admin panel. This tool is available for ECE 2.1.8 and later. To better support going live and testing PayPal payment methods, you can enable and configure your PayPal Express Checkout account for sandbox or production accounts. diff --git a/src/cloud/live/sens-data-initial.md b/src/cloud/live/sens-data-initial.md index 8e6f941383f..447b05441e8 100644 --- a/src/cloud/live/sens-data-initial.md +++ b/src/cloud/live/sens-data-initial.md @@ -4,6 +4,8 @@ title: Example of managing system-specific settings functional_areas: - Cloud - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/store-settings.html +status: migrated --- Configuration management exports your configurations to a file for pushing across your environments. This file, `config.php`, keeps your configurations consistent across all environments, decreases downtime by moving static deploy to build, and much more. This information details an example for configuring your settings, exporting the file, and deploying it. diff --git a/src/cloud/live/sens-data-over.md b/src/cloud/live/sens-data-over.md index f7f404d8311..1aa2f4b2f20 100644 --- a/src/cloud/live/sens-data-over.md +++ b/src/cloud/live/sens-data-over.md @@ -4,6 +4,8 @@ title: Configuration management for store settings functional_areas: - Cloud - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/store-settings.html +status: migrated --- Configuration management provides a way to deploy across your environments with minimal downtime using [Pipeline deployment][]. {{site.data.var.ece}} provides the build server, build and deploy scripts, and deployment environments. @@ -185,7 +187,7 @@ This process **overwrites** the store configuration; only do the following if th [admin]: {{ site.baseurl }}/cloud/project/user-admin.html -[auth]: {{ site.baseurl }}/cloud/setup/first-time-setup-import-prepare.html#auth-json +[auth]: {{ site.baseurl }}/cloud/setup/first-time-setup-import-prepare.html [app-yaml]: {{ site.baseurl }}/cloud/project/magento-app.html [commerce-dump]: {{ site.baseurl }}/guides/v2.3/reference/cli/magento-commerce.html#appconfigdump [env-yaml]: {{ site.baseurl }}/cloud/project/magento-env-yaml.html diff --git a/src/cloud/live/site-launch-checklist.md b/src/cloud/live/site-launch-checklist.md index 3828d79e94c..a896100763e 100644 --- a/src/cloud/live/site-launch-checklist.md +++ b/src/cloud/live/site-launch-checklist.md @@ -4,10 +4,11 @@ title: Launch checklist functional_areas: - Cloud - Testing - redirect_from: - /common/pdf/magento-commerce-cloud-prelaunch-checklist.pdf - /cloud/live/go-live-checklist.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/launch/checklist.html +status: migrated --- Before you deploy to the Production environment, download the [Launch checklist]({{ site.downloads }}/magento-commerce-cloud-prelaunch-checklist.pdf), and use it with these instructions to confirm that you have completed all required configuration and testing. See an overview of the complete deployment process for Starter and Pro at [Deploy your store]({{ site.baseurl }}/cloud/live/stage-prod-live.html). @@ -46,7 +47,7 @@ To update DNS configuration for site launch: 1. Update the following DNS configuration for your Production site: - Set all necessary redirects, especially if you are migrating from an existing site - - Set the zone’s root resource record to address the hostname + - Set the zone's root resource record to address the hostname - Lower the value for the Time-to-Live (TTL) to refresh DNS information to point customers to the correct Production store We recommend a significantly lower TTL value when switching the DNS record. This value tells the DNS how long to cache the DNS record. When shortened, it refreshes the DNS faster. For example, you can change the TTL value from 3 days to 10 minutes when you are updating your site. Be advised that shortening the TTL value adds load to the DNS infrastructure. You should restore the previous higher value after site launch. @@ -112,7 +113,7 @@ We recommend that you review the [Performance Toolkit]({{ site.mage2bloburl }}/{ You can also test using the following 3rd party options: - [Siege](https://www.joedog.org/siege-home/): Traffic shaping and testing software to push your store to the limit. Hit your site with a configurable number of simulated clients. Siege supports basic authentication, cookies, HTTP, HTTPS and FTP protocols. -- [Jmeter](http://jmeter.apache.org/): Excellent load testing to help gauge performance for spiked traffic, like for flash sales. Create custom tests to run against your site. +- [Jmeter](https://jmeter.apache.org/): Excellent load testing to help gauge performance for spiked traffic, like for flash sales. Create custom tests to run against your site. - [New Relic](https://support.newrelic.com/) (provided): Helps locate processes and areas of the site causing slow performance with tracked time spent per action like transmitting data, queries, Redis, and so on. - [WebPageTest](https://www.webpagetest.org/) and [Pingdom](https://www.pingdom.com/): Real-time analysis of your site pages load time with different origin locations. Pingdom may cost a fee. WebPageTest is a free tool. diff --git a/src/cloud/live/stage-prod-live.md b/src/cloud/live/stage-prod-live.md index be0c83078e2..1afa582275a 100644 --- a/src/cloud/live/stage-prod-live.md +++ b/src/cloud/live/stage-prod-live.md @@ -6,6 +6,8 @@ redirect_from: functional_areas: - Cloud - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/staging-production.html +status: migrated --- The process for deploying and going live begins with development, continues to Staging, and ends with going live in Production. To provide the best experience for developing, testing, and deploying your store with consistent configurations we provide an end-to-end environment solution. Every environment supports direct URL access to the store and Admin console and SSH access for CLI commands. diff --git a/src/cloud/live/stage-prod-migrate-prereq.md b/src/cloud/live/stage-prod-migrate-prereq.md index 0f5247d0ea9..15736850a63 100644 --- a/src/cloud/live/stage-prod-migrate-prereq.md +++ b/src/cloud/live/stage-prod-migrate-prereq.md @@ -9,6 +9,8 @@ functional_areas: - Cloud - Configuration - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/staging-production.html +status: migrated --- {:.ref-header} diff --git a/src/cloud/live/stage-prod-migrate.md b/src/cloud/live/stage-prod-migrate.md index d9e0375b25f..d28c6c9e248 100644 --- a/src/cloud/live/stage-prod-migrate.md +++ b/src/cloud/live/stage-prod-migrate.md @@ -4,6 +4,8 @@ title: Deploy code and migrate static files and data functional_areas: - Cloud - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/staging-production.html +status: migrated --- {:.ref-header} @@ -195,7 +197,7 @@ This command uses the following options: - `v`–verbose - `P`–partial progress -See the [rsync man page](http://linux.die.net/man/1/rsync). +See the [rsync man page](https://linux.die.net/man/1/rsync). {:.bs-callout-info} To transfer media from remote-to-remote environments directly, you must enable SSH agent forwarding, see [GitHub guidance](https://developer.github.com/v3/guides/using-ssh-agent-forwarding/). diff --git a/src/cloud/live/stage-prod-test.md b/src/cloud/live/stage-prod-test.md index 30f2df3eb5a..8934a7744fb 100644 --- a/src/cloud/live/stage-prod-test.md +++ b/src/cloud/live/stage-prod-test.md @@ -9,6 +9,8 @@ functional_areas: - Cloud - Testing - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/test/staging-and-production.html +status: migrated --- {:.ref-header} diff --git a/src/cloud/onboarding/onboarding-tasks.md b/src/cloud/onboarding/onboarding-tasks.md index 7c03221a20d..36c64d185ca 100644 --- a/src/cloud/onboarding/onboarding-tasks.md +++ b/src/cloud/onboarding/onboarding-tasks.md @@ -8,6 +8,8 @@ functional_areas: redirect_from: - /cloud/before/before-project-owner.html - /cloud/onboarding/onboarding-portal.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/start/onboarding.html +status: migrated --- After your company purchases a {{site.data.var.ece}} subscription, initial project and code access is available only to the person designated as the License Owner (Account Owner). @@ -112,7 +114,7 @@ Anyone working on your project can subscribe to the {{site.data.var.ece}} status -[your {{site.data.var.ece}} account]: https://account.magento.com/customer/account/login +[your {{site.data.var.ece}} account]: https://accounts.magento.cloud/user [Projects section]: https://cloud.magento.com/cloud/project/subscriptions/ [Sales]: https://magento.com/explore/contact-sales [Adobe Solution Partner]: https://magento.com/partners/choose diff --git a/src/cloud/project/ece-tools-update.md b/src/cloud/project/ece-tools-update.md index b379495ca68..9f5f5a26ead 100644 --- a/src/cloud/project/ece-tools-update.md +++ b/src/cloud/project/ece-tools-update.md @@ -7,12 +7,14 @@ redirect_from: functional_areas: - Cloud - Upgrade +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/ece-tools/update-package.html +status: migrated --- An update to the `{{site.data.var.ct}}` package also updates the other [{{site.data.var.csuite}} packages][], which are dependencies for `{{site.data.var.ct}}`. Therefore, you must use a version of {{site.data.var.ece}} that supports the `{{site.data.var.ct}}` package. {:.bs-callout-warning} -If you use a version of {{site.data.var.ece}} that does not contain the {{site.data.var.ct}} package, then you must perform a one-time [upgrade][upgrade-project] to your cloud project to remove deprecated packages. To verify the {{site.data.var.ct}} package is installed, retrieve the Commerce version using the `php vendor/bin/ece-tools -V` command at your local project root directory. +If you use a version of {{site.data.var.ece}} that does not contain the {{site.data.var.ct}} package, then you must perform a one-time [upgrade]({{site.baseurl}}/cloud/project/ece-tools-upgrade-project.html) to your cloud project to remove deprecated packages. To verify the {{site.data.var.ct}} package is installed, retrieve the Commerce template version using the `php vendor/bin/ece-tools -V` command at your local project root directory. **Prerequisites**: @@ -32,7 +34,7 @@ To update the `{{site.data.var.ct}}` package: ``` {:.bs-callout-info} - If you cannot update beyond `{{site.data.var.ct}}` version 2002.0.8, see [Upgrade project][]. + If you cannot update beyond `{{site.data.var.ct}}` version 2002.0.8, see [Upgrade project]({{site.baseurl}}/cloud/project/ece-tools-upgrade-project.html). 1. Add, commit, and push code changes. @@ -55,7 +57,6 @@ To update the `{{site.data.var.ct}}` package: [latest `{{site.data.var.ct}}` release]: {{site.baseurl}}/cloud/release-notes/ece-release-notes.html [backward incompatible changes]: {{site.baseurl}}/cloud/release-notes/backward-incompatible-changes.html [Upgrade to use ece-tools]: {{site.baseurl}}/cloud/project/ece-tools-upgrade-project.html -[upgrade project]: {{site.baseurl}}/cloud/project/ece-tools-upgrade-project.html [upgrade {{site.data.var.ee}} version]: {{site.baseurl}}/cloud/project/project-upgrade.html [Upgrades and Patches]: {{site.baseurl}}/cloud/project/project-upgrade-parent.html [{{site.data.var.csuite}} packages]: {{site.baseurl}}/cloud/release-notes/cloud-tools.html diff --git a/src/cloud/project/ece-tools-upgrade-project.md b/src/cloud/project/ece-tools-upgrade-project.md index 0cf39666cd3..5e0e381bb1b 100644 --- a/src/cloud/project/ece-tools-upgrade-project.md +++ b/src/cloud/project/ece-tools-upgrade-project.md @@ -4,6 +4,8 @@ title: Upgrade project to use ece-tools functional_areas: - Cloud - Upgrade +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/ece-tools/install-package.html +status: migrated --- Adobe deprecated the `magento/magento-cloud-configuration` and `magento/ece-patches` packages in favor of the `{{site.data.var.ct}}` package, which simplifies many cloud processes. If you use an older {{site.data.var.ece}} project that does _not_ contain the `{{site.data.var.ct}}` package, then you must perform a one-time, manual _upgrade_ process to your project. diff --git a/src/cloud/project/log-locations.md b/src/cloud/project/log-locations.md index 6fc891c8e9a..efabcc32346 100644 --- a/src/cloud/project/log-locations.md +++ b/src/cloud/project/log-locations.md @@ -6,6 +6,8 @@ functional_areas: - Configuration redirect_from: - /cloud/trouble/environments-logs.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/test/log-locations.html +status: migrated --- Logs for {{site.data.var.ece}} projects are useful for troubleshooting problems related to {{site.data.var.ece}} [build and deploy hooks][hook], cloud services, and the {{site.data.var.ee}} application. diff --git a/src/cloud/project/magento-app-php-application.md b/src/cloud/project/magento-app-php-application.md index b89905eed97..e9da609abf0 100644 --- a/src/cloud/project/magento-app-php-application.md +++ b/src/cloud/project/magento-app-php-application.md @@ -4,7 +4,9 @@ title: PHP application functional_areas: - Cloud - Setup - - Application + - Application +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/app/php-settings.html +status: migrated --- You can choose which [version of PHP]({{ site.baseurl}}/guides/v2.4/install-gde/system-requirements.html) to run in your `.magento.app.yaml` file: @@ -45,10 +47,19 @@ The following table shows the supported PHP extensions when deploying {{site.dat | Default extensions | Installed extensions
        that cannot be uninstalled | Extensions that can be installed
        and uninstalled as needed| |--------------------|---------------------|---------------------| -| `bcmath`
        `bz2`
        `calendar`
        `exif`
        `gd`
        `gettext`
        `intl`
        `mysqli`
        `pcntl`
        `pdo_mysql`
        `soap`
        `sockets`
        `sysvmsg`
        `sysvsem`
        `sysvshm`
        `opcache`
        `zip` |`ctype`
        `curl`
        `date`
        `dom`
        `fileinfo`
        `filter`
        `ftp`
        `hash`
        `iconv`
        `json`
        `mbstring`
        `mysqlnd`
        `openssl`
        `pcre`
        `pdo`
        `pdo_sqlite`
        `phar`
        `posix`
        `readline`
        `session`
        `sqlite3`
        `tokenizer`
        `xml`
        `xmlreader`
        `xmlwriter`
        |`geoip`
        `gmp`
        `igbinary`
        `imagick`
        `imap`
        `ioncube`
        `ldap`
        `mailparse`
        `mcrypt`
        `msgpack`
        `mysqli`
        `oauth`
        `pdo_mysql`
        `propro`
        `pspell`
        `raphf`
        `recode`
        `redis`
        `shmop` `sockets`
        `sodium`
        `ssh2`
        `tidy`
        `xdebug`
        `xmlrpc`
        `xsl`
        `yaml`| +| `bcmath`
        `bz2`
        `calendar`
        `exif`
        `gd`
        `gettext`
        `intl`
        `mysqli`
        `pcntl`
        `pdo_mysql`
        `soap`
        `sockets`
        `sysvmsg`
        `sysvsem`
        `sysvshm`
        `opcache`
        `zip` | `ctype`
        `curl`
        `date`
        `dom`
        `fileinfo`
        `filter`
        `ftp`
        `hash`
        `iconv`
        `json`
        `mbstring`
        `mysqlnd`
        `openssl`
        `pcre`
        `pdo`
        `pdo_sqlite`
        `phar`
        `posix`
        `readline`
        `session`
        `sqlite3`
        `tokenizer`
        `xml`
        `xmlreader`
        `xmlwriter`
        |`geoip`
        `gmp`
        `igbinary`
        `imagick`
        `imap`
        `ldap`
        `mailparse`
        `mcrypt`
        `msgpack`
        `mysqli`
        `oauth`
        `pdo_mysql`
        `propro`
        `pspell`
        `raphf`
        `recode`
        `redis`
        `shmop` `sockets`
        `sodium`
        `ssh2`
        `tidy`
        `xdebug`
        `xmlrpc`
        `xsl`
        `yaml` | PHP module requirements are tied to the {{site.data.var.ee}} version. See [PHP requirements]({{ site.baseurl }}{{ site.gdeurl }}/install-gde/prereq/php-settings.html). +### Extension support + +For Pro projects, the following extensions require additional support to install: + +- `ioncube` +- `sourceguardian` + +[Submit a support ticket](https://support.magento.com/hc/en-us/articles/360000913794#submit-ticket) to install these PHP extensions. + {:.bs-callout-warning} PHP compiled with debug is not supported and the Probe may conflict with XDebug or XHProf. Disable those extensions when enabling the Probe. The Probe conflicts with some PHP extensions like Pinba or IonCube. diff --git a/src/cloud/project/magento-app-php-ini.md b/src/cloud/project/magento-app-php-ini.md index 93276bddd1d..305d1b9e492 100644 --- a/src/cloud/project/magento-app-php-ini.md +++ b/src/cloud/project/magento-app-php-ini.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Application +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/app/php-settings.html +status: migrated --- You can customize the PHP settings for your environment using a `php.ini` file that is appended to the configuration maintained by {{site.data.var.ee}}. @@ -47,10 +49,10 @@ For a list of recommended PHP configuration settings, see [Required PHP settings ## Check custom php.ini settings -After pushing the `php.ini` changes to your Cloud environment, you can check that the custom PHP configuration has been added to your environment by [creating an SSH tunnel]({{ site.baseurl }}/cloud/env/environments-start.html#env-start-tunn) to your environment and entering: +After pushing the `php.ini` changes to your Cloud environment, you can check that the custom PHP configuration has been added to your environment. For example, use SSH to log in to the remote environment and view the file using something similar to the following: ```bash -cat /etc/php5/fpm/php.ini +cat /etc/php//fpm/php.ini ``` {:.bs-callout-info} diff --git a/src/cloud/project/magento-app-properties.md b/src/cloud/project/magento-app-properties.md index 7a38f8ff416..766da3c821f 100644 --- a/src/cloud/project/magento-app-properties.md +++ b/src/cloud/project/magento-app-properties.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Application +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/app/properties/properties.html +status: migrated --- Use the following properties to build your application configuration file. The `name`, `type`, `disk`, and one `web` or `worker` block is required. @@ -67,6 +69,9 @@ hooks: composer --no-ansi --no-interaction install --no-progress --prefer-dist --optimize-autoloader ``` +{:.bs-callout-warning} +The `.magento.app.yaml` file is deployed to all environments. This `composer` command installs all `dev` dependencies. Use caution and modify your code as needed for Production environments. + ## `access` The `access` property indicates a minimum user role level that is allowed SSH access to the environments. The available user roles are: diff --git a/src/cloud/project/magento-app-variables.md b/src/cloud/project/magento-app-variables.md index 8cbb62cbefa..12ed81cb875 100644 --- a/src/cloud/project/magento-app-variables.md +++ b/src/cloud/project/magento-app-variables.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Application +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/app/properties/variables-property.html +status: migrated --- The following environment variables are included in the `.magento.app.yaml` file. diff --git a/src/cloud/project/magento-app-workers.md b/src/cloud/project/magento-app-workers.md index 53098c92c42..0194175fbee 100644 --- a/src/cloud/project/magento-app-workers.md +++ b/src/cloud/project/magento-app-workers.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Application +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/app/properties/workers-property.html +status: migrated --- You can define zero or multiple work instances for each application. A worker instance runs as a container, independent from the web instance and without diff --git a/src/cloud/project/magento-app.md b/src/cloud/project/magento-app.md index 34f5ff630a3..2cdab8c0e3b 100644 --- a/src/cloud/project/magento-app.md +++ b/src/cloud/project/magento-app.md @@ -1,11 +1,13 @@ --- group: cloud-guide -title: Application +title: Application configuration functional_areas: - Cloud - Setup redirect_from: - /cloud/project/project-conf-files_magento-app.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/app/configure-app-yaml.html +status: migrated --- The `.magento.app.yaml` file controls the way your application builds and deploys. Although {{site.data.var.ece}} supports multiple applications per project, typically, a project has a single application with the `.magento.app.yaml` file at the root of the repository. @@ -19,3 +21,7 @@ Use the `.magento.app.yaml` file to define the following configuration values: - [PHP Application]({{ site.baseurl }}/cloud/project/magento-app-php-application.html)—Configure runtime PHP options. - [Workers]({{ site.baseurl }}/cloud/project/magento-app-workers.html)—Create a worker instance and understand background tasks. - [Set Cache For Static Files]({{ site.baseurl }}/cloud/project/set-cache.html)—Set cache time-to-live (TTL) for your media and static files. + +## Configuration updates to Pro environments + +{% include cloud/note-pro-missing-self-service-options.md %} diff --git a/src/cloud/project/magento-env-yaml.md b/src/cloud/project/magento-env-yaml.md index a45fa23e19e..ff1bf53bd9d 100644 --- a/src/cloud/project/magento-env-yaml.md +++ b/src/cloud/project/magento-env-yaml.md @@ -1,92 +1,66 @@ --- group: cloud-guide -title: Build and deploy +title: Deployment configuration functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/configure-env-yaml.html +status: migrated --- The `.magento.env.yaml` file uses environment variables to centralize the management of build and deploy actions across all of your environments, including Pro Staging and Production. To configure unique actions in each environment, you must modify this file in each environment. +{:.bs-callout-tip} +YAML files are case sensitive and do not allow tabs. Be careful to use consistent indentation throughout the `.magento.env.yaml` file or your configuration may not work as expected. The examples in our documentation and in the sample file use _two-space_ indentation. Use the [ece-tools validate command](#validate-configuration-file) to check your configuration. + ## File structure -The `.magento.env.yaml` file includes the following sections: +The `.magento.env.yaml` file contains two sections: `stage` and `log`. The `stage` section controls actions that occur during the phases of the [Cloud deployment process]({{site.baseurl}}/cloud/deploy/cloud-deployment-process.html). -- **`stage`**—Accommodates the following stages of deployment: +- **`stage`**Use the stage section to define certain actions for the following stages of deployment: - `global`—Controls actions in both the build, deploy, and post-deploy phases. You can override these settings in the build, deploy, and post-deploy sections. - `build`—Controls actions in the build phase only. If you do not specify settings in this section, the build phase uses settings from the global section. - `deploy`—Controls actions in the deploy phase only. If you do not specify settings in this section, the deploy phase uses settings from the global section. - `post-deploy`—Controls actions _after_ deploying your application and _after_ the container begins accepting connections. -- **`log`**—Controls [notifications]({{ site.baseurl }}/cloud/env/setup-notifications.html), including notification types and level of detail. +- **`log`**—Use the log section to configure [notifications]({{ site.baseurl }}/cloud/env/setup-notifications.html), including notification types and level of detail. - `slack`—Configure a message to send to a Slack bot. - `email`—Configure an email to send to one or more email recipients. - [logging handlers]({{ site.baseurl }}/cloud/env/log-handlers.html)—Configure hardware and software application messages sent to a remote logging server. -The latest sample of the `.magento.env.yaml` file contains a detailed definition for all variables described in the following reference topics: +### Environment variables -- [Application]({{ site.baseurl }}/cloud/env/environment-vars_magento.html)—variables control administrative credentials -- [Global]({{ site.baseurl }}/cloud/env/variables-global.html)—variables control actions in the following stages: - - [Build]({{ site.baseurl }}/cloud/env/variables-build.html)—variables control build actions - - [Deploy]({{ site.baseurl }}/cloud/env/variables-deploy.html)—variables control deploy actions - - [Post-deploy]({{ site.baseurl }}/cloud/env/variables-post-deploy.html)—variables control actions after deploy +The `ece-tools` package sets values in the `env.php` file based on values from [Cloud variables]({{site.baseurl}}/cloud/env/variables-cloud.html), variables set in the Project Web interface, and the `.magento.env.yaml` configuration file. The environment variables in the `.magento.env.yaml` file customize the Cloud environment by overriding your existing Commerce configuration. If a default value is `Not Set`, then the `ece-tools` package takes **NO** action and uses the Commerce default or the value from the MAGENTO_CLOUD_RELATIONSHIPS configuration. If the default value is set, then the `ece-tools` package takes the action to set that default. -## PHP constants +The following topics contain detailed definitions, such as whether a default value is set or not set, of all variables that you can use in the `.magento.env.yaml` file: -{:.bs-callout-warning} -Constant parsing does not work when using a `symfony/yaml` package version earlier than 3.2. +- [Global]({{ site.baseurl }}/cloud/env/variables-global.html)—variables control actions in each phase: build, deploy, and post-deploy +- [Build]({{ site.baseurl }}/cloud/env/variables-build.html)—variables control build actions +- [Deploy]({{ site.baseurl }}/cloud/env/variables-deploy.html)—variables control deploy actions +- [Post-deploy]({{ site.baseurl }}/cloud/env/variables-post-deploy.html)—variables control actions after deploy -You can use PHP constants in `.magento.env.yaml` file definitions instead of hard-coding values. The following example defines the `driver_ options` using a PHP constant: +### Create configuration file from CLI -```yaml -stage: - deploy: - DATABASE_CONFIGURATION: - connection: - default: - driver_options: - !php/const:\PDO::MYSQL_ATTR_LOCAL_INFILE : 1 - indexer: - driver_options: - !php/const:\PDO::MYSQL_ATTR_LOCAL_INFILE : 1 - _merge: true -``` +You can generate a `.magento.env.yaml` configuration file for a Cloud environment using the following `ece-tools` commands. -## Error handling - -When a failure occurs because of an unexpected value in the `.magento.env.yaml` configuration file, you receive an error message. For example, the following error message presents a list of suggested changes to each item with an unexpected value, in some cases providing valid options: - -```terminal -- Environment configuration is not valid. Please correct .magento.env.yaml file with next suggestions: - Item CRON_CONSUMERS_RUNNER is not supposed to be in stage build. Please move it to one of possible stages: global, deploy - Item SKIP_SCD has unexpected type string. Please use one of next types: boolean - Item VERBOSE_COMMANDS has unexpected type boolean. Please use one of next types: string - Item SKIP_HTML_MINIFICATION has unexpected type string. Please use one of next types: boolean - Item CRON_CONSUMERS_RUNNER has unexpected type boolean. Please use one of next types: array - Item VAR_WARM_UP_PAGES is not allowed in configuration. - Item WARM_UP_PAGES has unexpected type string. Please use one of next types: array -``` - -Make any corrections, commit, and push the changes. If you do not receive an error message, then the changes to your configuration file pass the validation. - -## Create configuration file from CLI - -You can generate a `.magento.env.yaml` configuration file for a Cloud environment using the following `ece-tools` CLI commands. +>Creates a configuration file ```bash -php ./vendor/bin/ece-tools cloud:config:create # Creates a new configuration file +php ./vendor/bin/ece-tools cloud:config:create ``` +>Updates values in the configuration file + ```bash -php ./vendor/bin/ece-tools cloud:config:update # Updates values in the configuration file +php ./vendor/bin/ece-tools cloud:config:update ``` -Both commands require a single argument, a JSON-formatted array that specifies a value for at least one build, deploy, or post-deploy variable. For example, the following command sets values for the `SCD_THREADS` and `CLEAN_STATIC_FILES` variables. +Both commands require a single argument: a JSON-formatted array that specifies a value for at least one build, deploy, or post-deploy variable. For example, the following command sets values for the `SCD_THREADS` and `CLEAN_STATIC_FILES` variables: ```bash php vendor/bin/ece-tools cloud:config:create '{"stage":{"build":{"SCD_THREADS":5}, "deploy":{"CLEAN_STATIC_FILES":false}}}' ``` -This command creates a new .magento.env.yaml file with the following settings: +And creates a `.magento.env.yaml` file with the following settings: ```yaml stage: @@ -113,9 +87,9 @@ stage: CLEAN_STATIC_FILES: false ``` -## Validate configuration file +### Validate configuration file -Use the following CLI command to validate the `.magento.env.yaml` configuration file before pushing changes to the remote Cloud environment. +Use the following `ece-tools` command to validate the `.magento.env.yaml` configuration file before pushing changes to the remote Cloud environment. ```bash php ./vendor/bin/ece-tools cloud:config:validate @@ -130,9 +104,46 @@ The SCD_STRATEGY variable contains an invalid value fast. Use one of the availab The NOT_EXIST_OPTION variable is not allowed in configuration. ``` +## PHP constants + +You can use PHP constants in `.magento.env.yaml` file definitions instead of hard-coding values. The following example defines the `driver_options` using a PHP constant: + +```yaml +stage: + deploy: + DATABASE_CONFIGURATION: + connection: + default: + driver_options: + !php/const:\PDO::MYSQL_ATTR_LOCAL_INFILE : 1 + indexer: + driver_options: + !php/const:\PDO::MYSQL_ATTR_LOCAL_INFILE : 1 + _merge: true +``` + +{:.bs-callout-warning} +Constant parsing does not work when using a `symfony/yaml` package version earlier than 3.2. + +## Error handling + +When a failure occurs because of an unexpected value in the `.magento.env.yaml` configuration file, you receive an error message. For example, the following error message presents a list of suggested changes to each item with an unexpected value, in some cases providing valid options: + +```terminal +- Environment configuration is not valid. Please correct .magento.env.yaml file with next suggestions: + Item CRON_CONSUMERS_RUNNER is not supposed to be in stage build. Please move it to one of possible stages: global, deploy + Item SKIP_SCD has unexpected type string. Please use one of next types: boolean + Item VERBOSE_COMMANDS has unexpected type boolean. Please use one of next types: string + Item SKIP_HTML_MINIFICATION has unexpected type string. Please use one of next types: boolean + Item CRON_CONSUMERS_RUNNER has unexpected type boolean. Please use one of next types: array + Item VAR_WARM_UP_PAGES is not allowed in configuration. + Item WARM_UP_PAGES has unexpected type string. Please use one of next types: array +``` + +Make any corrections, commit, and push the changes. If you do not receive an error message, then the changes to your configuration file pass the validation. + ## Configuration management optimization -{:.bs-callout-info} If you have enabled Configuration Management after dumping the configurations, you should move the SCD_* variables from the deploy to the build stage. {% include cloud/scd-configuration-management.md %} \ No newline at end of file diff --git a/src/cloud/project/manage-disk-space.md b/src/cloud/project/manage-disk-space.md index b3f2680c843..3ab28c0c90e 100644 --- a/src/cloud/project/manage-disk-space.md +++ b/src/cloud/project/manage-disk-space.md @@ -4,6 +4,8 @@ title: Manage disk space functional_areas: - Cloud - Storage +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/storage/manage-disk-space.html +status: migrated --- You can find the total storage capacity for your Cloud project in your {{site.data.var.ece}} contract and on your [account page](https://accounts.magento.cloud/user). Each project card in your account shows the number of _environments_, the _storage_ capacity in GB, and the number of _users_. @@ -101,7 +103,7 @@ Filesystem Size Used Avail Use% Mounted on Two configuration files control the allocation of disk space in the Cloud environments: the `.magento.app.yaml` file and the `.magento/services.yaml` file. Each file contains the `disk` property, which defines the disk size value in MB for the respective configuration. {:.bs-callout-info} -You can change disk space allocation on Pro Integration and Starter environments only. You must submit an support ticket to change disk space allocation on Pro Production and Staging environments. +You can only change disk space allocation on Pro Integration and Starter environments. You must submit a support ticket to change disk space allocation on Pro Production and Staging environments. A size increase of Pro Production and Staging environments can only occur at certain intervals, so, depending on your current disk space usage, support might recommend increasing disk space allocation by a minimum of 10 GB. ### Application disk space diff --git a/src/cloud/project/monitor-performance.md b/src/cloud/project/monitor-performance.md index 42fe896ab77..2a456d8f36a 100644 --- a/src/cloud/project/monitor-performance.md +++ b/src/cloud/project/monitor-performance.md @@ -4,6 +4,8 @@ title: Monitor performance functional_areas: - Cloud - Storage +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/monitor/performance.html +status: migrated --- You can use the following services to monitor performance of your Cloud environments: diff --git a/src/cloud/project/new-relic.md b/src/cloud/project/new-relic.md index ea0a99f0a9e..060beb96d27 100644 --- a/src/cloud/project/new-relic.md +++ b/src/cloud/project/new-relic.md @@ -6,6 +6,8 @@ functional_areas: - Integration - Setup - Services +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/monitor/new-relic.html +status: migrated --- {{ site.data.var.ece }} projects include access to the following New Relic services to help manage, monitor, and troubleshoot your applications and infrastructure by collecting, viewing, and analyzing data from your {{ site.data.var.ece }} project. @@ -22,7 +24,7 @@ functional_areas: - **Database query monitoring**—Locate and monitor database queries affecting performance. - **App Map**—View all application dependencies within your site, extensions, and external services. - **Apdex scores**—Evaluate performance and create alerts that identify issues and notify you when they occur, such as site performance affected by a flash sale or web event. See [Apdex score]. -- **Managed Alerts for Magento Commerce**–Use this New Relic alert policy to monitor application and infrastructure performance based on industry best practices. See [Monitor performance with the Managed Alerts for Magento Commerce alert policy](#monitor-performance-with-managed-alerts). +- **Managed alerts for Adobe Commerce**–Use this New Relic alert policy to monitor application and infrastructure performance based on industry best practices. See [Monitor performance with the Managed alerts for Adobe Commerce alert policy](#monitor-performance-with-managed-alerts). Your {{site.data.var.ece}} project includes the software for the New Relic APM service along with a license key. You do not need to purchase or install any additional software. @@ -35,7 +37,7 @@ For Pro accounts, if New Relic APM is not installed on the Staging and Productio ## New Relic Logs -{{site.data.var.ece}} Pro projects include the [New Relic Logs][] service on both Production and Staging environments. The service is pre-configured to aggregate all log data from your Staging and Production environments and display it in a centralized log management dashboard. +{{site.data.var.ece}} projects include the [New Relic Logs][] service. The service is pre-configured to aggregate all log data from your Staging and Production environments and display it in a centralized log management dashboard. The aggregated data includes information from the following logs: @@ -104,14 +106,14 @@ To connect a Cloud environment to New Relic, add the New Relic license key to th ### Configure New Relic for Starter environments -For Starter environments, enable the New Relic integration by adding the New Relic license key to the environment configuration. We recommend adding the key to the Staging and Production (master) environments and one other environment of your choice. Only the New Relic license key is required for configuration. You can find information about additional configuration options in the [New Relic reporting] topic in the _{{site.data.var.ee}} User Guide_. +For Starter environments, enable the New Relic integration by adding the New Relic license key to the environment configuration. We recommend adding the key to the Staging and Production (`master` branch) environments and one other environment of your choice. Only the New Relic license key is required for configuration. You can find information about additional configuration options in the [New Relic reporting] topic in the _{{site.data.var.ee}} User Guide_. {% include cloud/note-env-config-redeploy-warning.md%} **Prerequisites:** - Log in credentials for the {{site.data.var.ee}} account page, or for the New Relic account associated with your project -- [Admin level access]({{site.baseurl}}/cloud/project/user-admin.html) to the Starter environments to configure, or credentials to access the [Admin](https://docs.magento.com/m2/ce/user_guide/system/permissions.html) for the environment. +- [Admin level access]({{site.baseurl}}/cloud/project/user-admin.html) to the Starter environments to configure, or credentials to access the [Admin](https://docs.magento.com/user-guide/system/permissions.html) for the environment. {:.procedure} To configure New Relic for Starter environments: @@ -194,11 +196,11 @@ From this view, you can track and find the following types of information: We recommend reviewing tracked data: -- **Most time consuming**—Determine time consumption by tracking requests in parallel. For example, you may have the highest transaction time spent in product and category views. If a customer account page suddenly ranks very high in time consumption, your application might be affected by a call or query dragging performance. +- **Most time consuming**—Determine time consumption by tracking requests in parallel. For example, you may have the highest transaction time spent in product and category views. If a customer account page suddenly ranks high in time consumption, your application might be affected by a call or query-dragging performance. - **Highest throughput**—Identify pages hit the most based on the size and frequency of bytes transmitted. -All collected data details the time spent on an action transmitting data, queries, or _Redis_ data. If queries cause issues, New Relic provides information to track and respond to those issues. +All collected data details the time spent on an action that transmits data, queries, or _Redis_ data. If queries cause issues, New Relic provides information to track and respond to those issues. For details on using this data to troubleshoot application performance issues, see [Troubleshoot performance using New Relic][] in the _{{site.data.var.ee}} Help Center_. @@ -214,14 +216,9 @@ To use the New Relic Logs application: 1. Use your New Relic credentials to [log in to your New Relic account][New Relic login]. -1. Select your application. +1. Select the application name in the **Services - APM** list. -1. On the _APM applications page_, select **Logs** from the navigation menu. - - ![Cloud project APM menu select Logs page]({{ site.baseurl }}/common/images/cloud/cloud-newrelic-dashboard-logs-access.png){:width="650px"} - - {:.bs-callout-tip} - You can also access the New Relic Logs application from the New Relic ONE home page. See [New Relic ONE core UI components][New Relic One UI]. +1. Select **Logs** from the Explorer navigation menu. 1. To review infrastructure log data for cloud services, enter the query string `has: "filePath"` in the _Find logs where_ field. Then, click **Query logs**. The names of the log files are stored in the `filePath` field, with full paths to the log file. @@ -230,8 +227,6 @@ To use the New Relic Logs application: 1. To review Fastly log data, enter the query string `has: "client_ip"` in the _Find logs where_ field. Then, click **Query logs**. - ![Cloud project New Relic Fastly log data]({{ site.baseurl }}/common/images/cloud/cloud-new-relic-logs-has-client_ip-fastly.png){:width="650px"} - 1. To filter the Fastly log results further, select an attribute from the left menu, then click **Query logs** to apply the updated query. For example, to query the Fastly data by country code, select the _Geo Country Code_ attribute. @@ -242,7 +237,7 @@ The following example shows a New Relic Insights dashboard created from queries ![Cloud project New Relic CDN Logs dashboard]({{ site.baseurl }}/common/images/cloud/cloud-new-relic-cdn-logs-dashboard.png){:width="650px"} -For further information and examples, see [Introduction to New Relic Logs][New Relic Logs] and [Introduction to New Relic Insights][New Relic Insights]. +See [Get started with log management][New Relic Logs] and [Introduction to New Relic's query language][nrql] on the _New Relic Docs_ site. ### Monitor performance with Managed Alerts @@ -259,7 +254,7 @@ Based on industry best practices, the policy includes a collection of alerts tha | Redis | NRI | Pro | | MariaDB | NRI | Pro | -When site infrastructure or application conditions trigger an alert threshold, New Relic sends alert notifications so that you can proactively address the issue. See [Managed Alerts for Magento Commerce] in the _{{site.data.var.ee}} Help Center_ for details about alert thresholds and troubleshooting steps to resolve the issues that triggered the alert. +When site infrastructure or application conditions trigger an alert threshold, New Relic sends alert notifications so that you can proactively address the issue. See [Managed alerts for Adobe Commerce] in the _{{site.data.var.ee}} Help Center_ for details about alert thresholds and troubleshooting steps to resolve the issues that triggered the alert. {:.bs-callout-info} For Pro Staging and Integration environments and Starter environments, use [Health notifications] to monitor disk space. @@ -275,7 +270,7 @@ To review the Managed Alerts for {{ site.data.var.ee }} policy: 1. Use your New Relic credentials to [log in to your New Relic account][New Relic login]. -1. Locate the _Managed Alerts for Magento Commerce_ policy: +1. Locate the _Managed alerts for Adobe Commerce_ policy: - In the top navigation menu, click **Alerts & AI** to open the _Applied Intelligence_ page. @@ -285,14 +280,14 @@ To review the Managed Alerts for {{ site.data.var.ee }} policy: ![Select account and project]({{ site.baseurl }}/common/images/cloud/cloud-new-relic-select-account.png){:width="650px"} - - In the _Policy_ list, you should see the **Managed Alerts for Magento Commerce** policy. + - In the _Policy_ list, you should see the **Managed alerts for Adobe Commerce** policy. ![Generated alert policies]({{ site.baseurl }}/common/images/cloud/cloud-newrelic-managed-alerts-for-magento.png){:width="650px"} {:.bs-callout-info} - If the Managed Alerts for {{ site.data.var.ee }} alert policy is not available, see [Managed Alerts for Magento Commerce][] in the _{{site.data.var.ee}} Help Center_. + If the Managed Alerts for {{ site.data.var.ee }} alert policy is not available, see [Managed alerts for Adobe Commerce][] in the _{{site.data.var.ee}} Help Center_. -1. Click **Managed Alerts for Magento Commerce** to review the alert conditions defined in the policy. +1. Click **Managed alerts for Adobe Commerce** to review the alert conditions defined in the policy. ![Managed alerts list]({{ site.baseurl }}/common/images/cloud/cloud-newrelic-magento-alert-conditions.png){:width="650px"} @@ -311,7 +306,7 @@ To configure a notification channel: 1. Use your New Relic credentials to [log in to your New Relic account][New Relic login]. -1. Create a new notification channel. +1. Create a notification channel. - In the top navigation menu, click **Alerts & AI** to open the _Applied Intelligence_ page. @@ -344,13 +339,13 @@ See the following New Relic documentation topics for additional information: - [Configure notification channels using the New Relic API] {:.bs-callout-warning} -The alerts in the Managed Alerts for Magento Commerce policy have default notification channels configured to notify Adobe teams that support {{ site.data.var.ece }} customers. Do not modify the configuration for these default channels, and do not remove any alert policies assigned to them. +The alerts in the Managed alerts for Adobe Commerce policy have default notification channels configured to notify Adobe teams that support {{ site.data.var.ece }} customers. Do not modify the configuration for these default channels, and do not remove any alert policies assigned to them. ### Create alert policies -Do not modify any alerts included in the Managed Alerts for Magento Commerce policy. We update and improve the alert conditions in this policy over time, which overwrites any customizations you add to the policy. +Do not modify any alerts included in the Managed alerts for Adobe Commerce policy. We update and improve the alert conditions in this policy over time, which overwrites any customizations you add to the policy. -Instead of modifying an existing alert, you can create a new alert policy. Then, copy the alert conditions to the new policy. See [Update policies or conditions] in the New Relic documentation. +Instead of modifying an existing alert, you can create an alert policy. Then, copy the alert conditions to the new policy. See [Update policies or conditions] in the New Relic documentation. {:.bs-callout-tip} See [Alerts concepts and workflow] in the New Relic documentation for more detailed information about Alerts, alert policies, and notification channels. @@ -372,17 +367,17 @@ See [Alerts concepts and workflow] in the New Relic documentation for more detai [Instructions for specific notification channels]: https://docs.newrelic.com/docs/alerts/new-relic-alerts/managing-notification-channels/notification-channels-control-where-send-alerts#channel-types [Admin credentials]: https://docs.magento.com/m2/ce/user_guide/system/permissions.html [Adobe Partnership Owner Account]: https://account.newrelic.com/accounts/1311131/users -[Managed Alerts for Magento Commerce]: https://support.magento.com/hc/en-us/articles/360045806832 +[Managed alerts for Adobe Commerce]: https://support.magento.com/hc/en-us/articles/360045806832 [New Relic account]: #manage-new-relic-account [New Relic APM]: https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/introduction-new-relic-apm [New Relic APM Overview]: https://docs.newrelic.com/docs/apm/applications-menu/monitoring/apm-overview-page-view-transaction-apdex-usage-data [New Relic ONE UI]: https://docs.newrelic.com/docs/new-relic-one/use-new-relic-one/get-started/new-relic-one-core-ui-components [New Relic for application performance management (APM)]: https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/introduction-new-relic-apm [New Relic Help Center]: https://newrelic.com/ -[New Relic Logs]: https://docs.newrelic.com/docs/logs/new-relic-logs/get-started/introduction-new-relic-logs +[New Relic Logs]: https://docs.newrelic.com/docs/logs/get-started/get-started-log-management/ [New Relic login]: https://login.newrelic.com/login [New Relic infrastructure]: https://newrelic.com/products/infrastructure -[New Relic Insights]: https://docs.newrelic.com/docs/insights/use-insights-ui/getting-started/introduction-new-relic-insights +[nrql]: https://docs.newrelic.com/docs/query-your-data/nrql-new-relic-query-language/get-started/introduction-nrql-new-relics-query-language/ [New Relic query syntax for logs]: https://docs.newrelic.com/docs/logs/new-relic-logs/ui-data/query-syntax-logs [New Relic reporting]: https://docs.magento.com/m2/ce/user_guide/configuration/general/new-relic-reporting.html [prerequisite steps]: https://docs.newrelic.com/docs/alerts/new-relic-alerts/managing-notification-channels/notification-channels-control-where-send-alerts#channel-types diff --git a/src/cloud/project/privatelink-service.md b/src/cloud/project/privatelink-service.md index 6fe09a09d60..b96b870f2cc 100644 --- a/src/cloud/project/privatelink-service.md +++ b/src/cloud/project/privatelink-service.md @@ -4,6 +4,8 @@ title: PrivateLink service functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/privatelink-service.html +status: migrated --- {{site.data.var.ece}} supports integration with the [AWS PrivateLink][] or [Azure Private Link][] service to allow Cloud customers to establish secure, private communication between {{site.data.var.ece}} environments and services and applications hosted on external systems. Both the {{site.data.var.ee}} application and external systems must be accessible through private VPC endpoints configured within the same Cloud region (AWS or Azure). diff --git a/src/cloud/project/profile-database-queries.md b/src/cloud/project/profile-database-queries.md index ee3011ab5b1..9a6e292e60e 100644 --- a/src/cloud/project/profile-database-queries.md +++ b/src/cloud/project/profile-database-queries.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Services +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/storage/profile-database-queries.html +status: migrated --- When making changes to a database, you may find it helpful to run profiling to identify the impact of those changes. Profiling maintains a log of database queries and increases run-time precision. @@ -12,7 +14,7 @@ When making changes to a database, you may find it helpful to run profiling to i {:.procedure} To enable database query profiling: -1. [Log in to the database]({{ site.baseurl }}/cloud/env/environments-start.html#commands). +1. [Log in to the database]({{ site.baseurl }}/cloud/env/environments-start.html#interact-with-remote-environments). 1. Enable profiling. @@ -38,7 +40,6 @@ To enable database query profiling: ## Example log -{:.no-copy} ```sql MariaDB [6fck2obu3244c]> show profiles; +----------+------------+---------------------------------------------------------------------------------------------------------------------------------+ diff --git a/src/cloud/project/project-enable-mfa-enforcement.md b/src/cloud/project/project-enable-mfa-enforcement.md index 6d57e3b5e36..87ee741a2a7 100644 --- a/src/cloud/project/project-enable-mfa-enforcement.md +++ b/src/cloud/project/project-enable-mfa-enforcement.md @@ -6,9 +6,10 @@ functional_areas: - Configuration - Security - Compliance - redirect_from: - /cloud/project/project-enable-mfa-project.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/project/multi-factor-authentication.html +status: migrated --- For added security, {{site.data.var.ece}} provides multi-factor authentication (MFA) enforcement to manage authentication requirements for SSH access to Cloud environments. @@ -316,6 +317,6 @@ To fix the problem, you might need to add the SSH key to your current session, o [add public ssh key]: {{ site.baseurl }}/cloud/before/before-workspace-ssh.html#ssh-add-to-account [Cloud account page]: https://accounts.magento.cloud/user [Create an API token]: {{ site.baseurl }}/cloud/project/user-admin.html#create-an-api-token -[Enable TFA]: {{ site.baseurl }}/cloud/project/user-admin.html#enable-tfa-for-cloud-accounts +[Enable TFA]: {{ site.baseurl }}/cloud/project/user-admin.html [Manage user access]: {{ site.baseurl }}/cloud/project/user-admin.html [Unable to access projects without MFA]: {{ site.baseurl }}/cloud/before/before-workspace-ssh.html#unable-to-access-projects-without-mfa diff --git a/src/cloud/project/project-multi-sites.md b/src/cloud/project/project-multi-sites.md index aa6970b9ffa..ca647704fbe 100644 --- a/src/cloud/project/project-multi-sites.md +++ b/src/cloud/project/project-multi-sites.md @@ -6,6 +6,8 @@ functional_areas: - Configuration - Setup - Stores +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/multiple-sites.html +status: migrated --- You can configure {{site.data.var.ee}} to have multiple websites or stores, such as an English store, a French store, and a German store. See [Understanding websites, stores, and store views]({{ site.baseurl }}/cloud/configure/configure-best-practices.html#sites). @@ -64,13 +66,14 @@ After successfully creating and testing the local installation to use multiple s {:.bs-callout-tip} You can also use a local {{site.data.var.mcd-prod}} environment to set up multiple websites or stores. See the Cloud Docker instructions to [Set up multiple websites or stores]({{site.baseurl}}/cloud/docker/docker-multi-website.html). +### Configuration updates to Pro environments + +{% include cloud/note-pro-missing-self-service-options.md %} + ### Configure routes for separate domains {#routes} Routes define how to process incoming URLs. Multiple stores with unique domains require you to define each domain in the `routes.yaml` file. The way you configure routes depends on how you want your site to operate. -{:.bs-callout-info} -For Pro, if your route configurations are not setting properly, you can create a [Support ticket]({{ site.baseurl }}/cloud/trouble/trouble.html) and include "enable self-service routes" in your request. - {:.procedure} To configure routes in an integration environment: diff --git a/src/cloud/project/project-patch.md b/src/cloud/project/project-patch.md index a91be66d3e3..412b36a8631 100644 --- a/src/cloud/project/project-patch.md +++ b/src/cloud/project/project-patch.md @@ -4,6 +4,8 @@ title: Apply patches functional_areas: - Cloud - Upgrade +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/upgrade/apply-patches.html +status: migrated --- [{{ site.data.var.mcp-prod }}](https://github.com/magento/magento-cloud-patches) and the [Quality Patches Tool](https://github.com/magento/quality-patches) deliver patches to your installed {{site.data.var.ee}} application. @@ -18,7 +20,7 @@ Both packages improve the integration of all {{site.data.var.ee}} versions with {:.bs-callout-tip} You can use the [Quality Patches Tool]({{ site.baseurl }}/quality-patches/usage.html) and [{{ site.data.var.mcp-prod }}](#standalone) packages as stand-alone packages for {{ site.data.var.ce }} and {{ site.data.var.ee }} projects. We recommend using the Quality Patches Tool for non-Cloud projects. -When you deploy changes to the remote environment, `{{site.data.var.ct}}` uses {{ site.data.var.mcp-package }} and `magento/quality-patches` to check for pending patches and applies them automatically in the following order: +When you deploy changes to the remote environment, `{{site.data.var.ct}}` uses `{{ site.data.var.mcp-package }}` and `magento/quality-patches` to check for pending patches and applies them automatically in the following order: 1. Apply all required Magento patches included in the {{ site.data.var.mcp-prod }} package. 1. Apply selected optional Magento patches included in the Quality Patches Tool. @@ -156,7 +158,11 @@ To apply patches in a Cloud environment: {:.bs-callout-info} After upgrading to a new version of {{site.data.var.ee}}, you must re-apply patches if the patches are not included in the new version. -1. Commit and push the updated `.magento.env.yaml` file. +1. Add, commit and push the updated `.magento.env.yaml` file. + + ```bash + git add .magento.env.yaml + ``` ```bash git commit -m "Apply patch" @@ -187,7 +193,7 @@ To apply and test a custom patch on a Cloud environment: 1. Add, commit, and push code changes. ```bash - git add -A + git add m2-hotfixes/ ``` ```bash @@ -201,6 +207,29 @@ To apply and test a custom patch on a Cloud environment: {:.bs-callout-info} Make sure to test all patches in a pre-production environment. For {{site.data.var.ece}}, you can create new branches with the `magento-cloud environment:branch ` CLI command. +## Revert a custom patch + +To revert or uninstall a previously applied custom patch: + +1. Delete the patch file from the `/m2-hotfixes` directory. + +1. Add, commit, and push code changes. + + ```bash + git add m2-hotfixes/ + ``` + + ```bash + git commit -m "Revert patch" + ``` + + ```bash + git push origin + ``` + + {:.bs-callout-info} + Make sure to test in a pre-production environment. For {{site.data.var.ece}}, you can create new branches with the `magento-cloud environment:branch ` CLI command. + ## Apply patches to a non-Cloud project {#standalone} Use the [Quality Patches Tool]({{ site.baseurl }}/quality-patches/usage.html) for {{ site.data.var.ce }} and {{ site.data.var.ee }} projects. diff --git a/src/cloud/project/project-routes-more-cache.md b/src/cloud/project/project-routes-more-cache.md index 561979fed61..da84f979ec8 100644 --- a/src/cloud/project/project-routes-more-cache.md +++ b/src/cloud/project/project-routes-more-cache.md @@ -4,6 +4,8 @@ title: Caching functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/routes/caching.html +status: migrated --- {{site.data.var.ee}} enables you to use caching in your environment. If you disable caching, {{site.data.var.ee}} directly serves the files. diff --git a/src/cloud/project/project-routes-more-redir.md b/src/cloud/project/project-routes-more-redir.md index 3f6b7eebc62..84bb98abe46 100644 --- a/src/cloud/project/project-routes-more-redir.md +++ b/src/cloud/project/project-routes-more-redir.md @@ -4,6 +4,8 @@ title: Redirects functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/routes/redirects.html +status: migrated --- Managing redirection rules is a common requirement for web applications, especially in cases where you do not want to lose incoming links that have changed or been removed over time. @@ -12,10 +14,14 @@ The following demonstrates how to manage redirection rules on your {{site.data.v {% include cloud/note-route-all-placeholder.md %} +## Updates to Pro environments + +{% include cloud/note-pro-missing-self-service-options.md %} + {:.bs-callout-warning} For {{ site.data.var.ece }} projects, configuring large numbers of non-regex redirects and rewrites in the `routes.yaml` file can cause performance issues. If your `routes.yaml` file is 32KB or larger, offload your non-regex redirects and rewrites to Fastly. See [Offload non-regex redirects to Fastly instead of Nginx (routes)](https://support.magento.com/hc/en-us/articles/360035192891-Offload-non-regex-redirects-to-Fastly-instead-of-Nginx-routes-) in the _{{site.data.var.ee}} Help Center_. -## Whole-route redirects {#cloud-route-whole} +## Whole-route redirects Using whole-route redirects, you can define simple routes using the `routes.yaml` file. For example, you can redirect from an apex domain to a `www` subdomain as follows: @@ -25,7 +31,7 @@ http://{default}/: to: http://www.{default}/ ``` -## Partial-route redirects {#cloud-route-partial} +## Partial-route redirects In the [`.magento/routes.yaml`]({{ site.baseurl }}/cloud/project/routes.html) file, you can also add partial redirect rules to existing routes based on pattern matching: @@ -59,11 +65,11 @@ Two keys are available under `redirects`: `code` | Specifies the HTTP status code. Valid status codes are [`301` (Moved Permanently)](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2), [`302`](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3), [`307`](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8), and [`308`](https://tools.ietf.org/html/rfc7238). Defaults to `302`. `expires`| Optional, specifies the amount of time to cache the redirect in the browser. Defaults to the `expires` value defined directly under the `redirects` key, but at this level you can fine-tune the cache expiration for individual partial redirects. -### Examples +## Examples of partial-route redirects The following examples show how to specify partial-route redirects in the `routes.yaml` file using various `paths` configuration options. -#### Regular expression pattern matching {#redirect-with-regex} +### Regular expression pattern matching Use the following format to configure redirect requests based on a regular expression. @@ -77,7 +83,7 @@ http://{default}/: This configuration filters request paths against a regular expression and redirects matching requests to `https://example.com`. For example, a request to `https://example.com/regexp/a/b/c/match` redirects to `https://example.com/a/b/c`. -#### Prefix pattern matching {#redirect-with-prefix} +### Prefix pattern matching Use the following format to configure redirect requests for paths that begin with a specified prefix pattern. @@ -97,7 +103,7 @@ This configuration works as follows: - If you change the `prefix` property to `false`, requests that match the pattern `/from` trigger a redirect, but requests that match the pattern `/from/another/path` does not. -#### Suffix pattern matching {#redirect-with-suffix} +### Suffix pattern matching Use the following format to configure redirect requests which append the path suffix from the request to the target destination. @@ -114,7 +120,7 @@ This configuration works as follows: - If you change the `append_suffix` property to `true`, then requests that match `/from/path/suffix` redirect to the path `https://{default}/to/path/suffix`. -#### Path-specific cache configuration {#redirect-with-custom-cache} +### Path-specific cache configuration Use the following format to customize the time to cache a redirect from a specific path: @@ -130,6 +136,6 @@ http://{default}/: This configuration works as follows: -- Redirects from the first path (`/from`) are cached for 1 day. +- Redirects from the first path (`/from`) are cached for one day. -- Redirects from the second path (`/here`) are cached for 2 weeks. +- Redirects from the second path (`/here`) are cached for two weeks. diff --git a/src/cloud/project/project-routes-more-ssi.md b/src/cloud/project/project-routes-more-ssi.md index 15f6c437823..26d849afcb4 100644 --- a/src/cloud/project/project-routes-more-ssi.md +++ b/src/cloud/project/project-routes-more-ssi.md @@ -4,9 +4,11 @@ title: Server side includes functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/routes/server-side-includes.html +status: migrated --- -[Server side includes](http://nginx.org/en/docs/http/ngx_http_ssi_module.html) (SSI) are directives in [HTML](https://glossary.magento.com/html) pages that get evaluated on the server while the pages are being rendered. Use of [server side](https://glossary.magento.com/server-side) includes enables you to add dynamically generated content to an existing HTML page without having to serve the entire page. +[Server side includes](https://nginx.org/en/docs/http/ngx_http_ssi_module.html) (SSI) are directives in [HTML](https://glossary.magento.com/html) pages that get evaluated on the server while the pages are being rendered. Use of [server side](https://glossary.magento.com/server-side) includes enables you to add dynamically generated content to an existing HTML page without having to serve the entire page. You can activate or deactivate SSI on a per-route basis in your `.magento/routes.yaml`; for example: diff --git a/src/cloud/project/project-start.md b/src/cloud/project/project-start.md index 13901b3180b..00fe06d4e18 100644 --- a/src/cloud/project/project-start.md +++ b/src/cloud/project/project-start.md @@ -4,6 +4,8 @@ title: Project structure functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/project/file-structure.html +status: migrated --- All {{site.data.var.ece}} projects include essential files for credentials and application configuration: @@ -20,7 +22,7 @@ File | Description `.magento.env.yaml` | Configuration file that defines actions for the build, deploy, and post-deploy phases. The ece-tools package includes a sample of this file with detailed descriptions for the available variables. See [Configure environments]({{ site.baseurl }}/cloud/env/environments.html). `composer.json` | Fetches the {{site.data.var.ee}} and the necessary configuration scripts to prepare your application. See [Prepare your install]({{ site.baseurl }}/cloud/setup/first-time-setup-import-prepare.html). `composer.lock` | Stores version dependencies for every package. -`magento-vars.php` | A file used to define [multiple stores]({{ site.baseurl }}/cloud/project/project-multi-sites.html#modify-magento-variables) and sites using [variables]({{ site.baseurl }}/guides/v2.3/config-guide/multi-site/ms_over.html). +`magento-vars.php` | A file used to define [multiple stores]({{ site.baseurl }}/cloud/project/project-multi-sites.html) and sites using [variables]({{ site.baseurl }}/guides/v2.3/config-guide/multi-site/ms_over.html). {:.bs-callout-info} When you push your local environment to the remote server, our deploy script uses the values defined by configuration files in the `.magento` directory, then the script deletes the directory and its contents. Your local development environment is not affected. diff --git a/src/cloud/project/project-upgrade-parent.md b/src/cloud/project/project-upgrade-parent.md index 5d526e711be..db588dbfc10 100644 --- a/src/cloud/project/project-upgrade-parent.md +++ b/src/cloud/project/project-upgrade-parent.md @@ -4,6 +4,8 @@ title: Upgrades and patches functional_areas: - Cloud - Upgrade +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/upgrade/best-practices.html +status: migrated --- The Upgrades and patches section contains detailed release notes for the `{{site.data.var.ct}}` package, and information on how to upgrade the `{{site.data.var.ct}}` package, upgrade {{site.data.var.ece}}, and apply custom patches and hotfixes. diff --git a/src/cloud/project/project-upgrade.md b/src/cloud/project/project-upgrade.md index 77d70cf7dca..cd033e33684 100644 --- a/src/cloud/project/project-upgrade.md +++ b/src/cloud/project/project-upgrade.md @@ -4,6 +4,8 @@ title: Upgrade version functional_areas: - Cloud - Upgrade +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/upgrade/commerce-version.html +status: migrated --- You can upgrade the core {{site.data.var.ee}} code base to a newer version. Before upgrading your project, review the [service versions][System requirements] information for the latest software version requirements. If you must upgrade from a version older than 2.1, you must upgrade to a supported version first. See [Upgrades and patches] for upgrade path details. diff --git a/src/cloud/project/project-webint-basic.md b/src/cloud/project/project-webint-basic.md index f7450bb6eea..78ab1cf3f60 100644 --- a/src/cloud/project/project-webint-basic.md +++ b/src/cloud/project/project-webint-basic.md @@ -4,16 +4,18 @@ title: Configure your project functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/project/overview.html +status: migrated --- -The {{site.data.var.ece}} [Project Web Interface](https://account.magento.com/customer/account/login/) enables you to do the following for all Starter and Pro environments: +For all {{site.data.var.ece}} projects, you can use the [Project Web Interface](https://account.magento.com/customer/account/login/) to perform the following tasks: - [Access projects](#project-access) -- [Configure environment settings](#configure-environment-settings) +- [Configure environment settings](#project-conf-env-set) - [Add users and manage access]({{ site.baseurl }}/cloud/project/user-admin.html) - [Manage Git branches]({{ site.baseurl }}/cloud/project/project-webint-branch.html) -As you make changes to these settings, the branch redeploys to the environment. You can make these setting changes for all Starter and Pro environments. +Changes that you make to environment configuration trigger a redeployment of that environment. ## Access your project and environments {#project-access} @@ -26,9 +28,8 @@ The Project Web Interface provides several ways to access your project and envir To access projects and environments through the Project Web Interface: 1. [Log in to your project](https://account.magento.com/customer/account/login/). -1. Click **Access Site** for a list of URLs for web access and the command for SSH access. - - ![Access your project by URL or SSH]({{ site.baseurl }}/common/images/cloud/cloud_project-access.png){:width="600px"} +1. The left pane shows your list of environments. +1. Click **Access Site** for a list of storefront URLs for web access and the command for SSH access. For more information about using SSH, see [SSH to an environment]({{ site.baseurl }}/cloud/env/environments-ssh.html#magento-cli). To clone the project using either the {{site.data.var.ece}} CLI or Git, use the links in the field under the branch name. @@ -61,6 +62,9 @@ You can set the following configuration options for each environment: +{:.bs-callout-warning} +**DO NOT** use the HTTP access control method for securing Pro Staging and Production environments. This will break Fastly caching. You must use the [Blocking]({{ site.baseurl }}/cloud/cdn/fastly-vcl-blocking.html) feature available in the Fastly CDN for Magento. + ### Configure emails for testing {#email} By default, email support is **disabled** on Staging and Production environments. You must enable email support on an environment to send emails including Welcome, password reset, and two-factor authentication emails for Cloud project users. diff --git a/src/cloud/project/project-webint-branch.md b/src/cloud/project/project-webint-branch.md index ee7ce545924..721408ea2fe 100644 --- a/src/cloud/project/project-webint-branch.md +++ b/src/cloud/project/project-webint-branch.md @@ -6,6 +6,8 @@ redirect_from: functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/cli-branches.html +status: migrated --- Every {{site.data.var.ece}} *environment* has an associated active Git *branch*. You can manage your environments using either the Project Web Interface, the `magento-cloud` CLI, or Git commands. For more information on Git branches, see [Git documentation](https://git-scm.com/doc). @@ -30,7 +32,7 @@ Complete development of code and added extensions in a branch and, when complete For branching strategies, review [Starter]({{ site.baseurl }}/cloud/architecture/starter-architecture.html) and [Pro]({{ site.baseurl }}/cloud/architecture/starter-develop-deploy-workflow.html) architecture overviews. -Your account supports a limited number of active Git branches and an unlimited number of inactive branches. Manage active and inactive branches by deleting a branch. When deleted, it is deactivated and still listed in the project branches list. You can either activate the branch later or you can [delete it entirely]({{ site.baseurl }}/cloud/env/environments-start.html#env-delete) using the CLI. +Your account supports a limited number of active Git branches and an unlimited number of inactive branches. Manage active and inactive branches by deleting a branch. When deleted, it is deactivated and still listed in the project branches list. You can either activate the branch later or you can [delete it entirely]({{ site.baseurl }}/cloud/env/environments-start.html#delete-an-environment) using the CLI. If you need additional environments for development, enter a [Support ticket]({{ site.baseurl }}/cloud/trouble/trouble.html) for more information. @@ -234,6 +236,9 @@ To add the public SSH key for your project as a [GitLab deploy key](https://docs ## Secure your environments and branches {#security} +{:.bs-callout-warning} +**DO NOT** use the following methods for securing Pro Staging and Production environments. This will break Fastly caching. You must use the [Blocking]({{ site.baseurl }}/cloud/cdn/fastly-vcl-blocking.html) feature available in the Fastly CDN for Magento. + You can access your project and environments from any location through a web browser using the Project Web Interface. You may have security set for your Production environment, stores, and sites. This section helps you secure your Integration and Staging environments for strictly your developers, DBAs, and more. To secure your Starter and Pro environments: diff --git a/src/cloud/project/project-webint-snap.md b/src/cloud/project/project-webint-snap.md index 3843d9b31d3..c6972425518 100644 --- a/src/cloud/project/project-webint-snap.md +++ b/src/cloud/project/project-webint-snap.md @@ -3,12 +3,17 @@ group: cloud-guide title: Snapshots and backup management functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/storage/snapshots.html +status: migrated --- You can back up and restore specific environments at any time using a snapshot. Snapshot options are available for all Starter environments and Pro Integration environments. The snapshot feature does not apply to the Pro Staging and Production environments. The Pro Staging and Production environments receive regular backups for disaster recovery purposes by default, see [Pro Backup & Disaster Recovery]({{ site.baseurl }}/cloud/architecture/pro-architecture.html#backup-and-disaster-recovery). However, these backups are not publicly accessible because they are stored in a separate system. You can open a ticket to request a backup with a specific date, time, and timezone. Then we can extract it from the external system and provide it to you. +{:.bs-callout-tip} +Snapshots for Starter and Pro Integration environments are different from Pro backup and disaster recovery backups. Snapshots are **not** automatic. It is _your_ responsibility to manually create a snapshot or set up a cron job to periodically take snapshots of your Starter or Pro Integration environments. + A _snapshot_ is a complete backup of an environment that includes all persistent data from all running services (for example, your MySQL database, Redis, and so on) and any files stored on the mounted volumes. Because an environment deploys as a read-only file system, restoring a snapshot is very fast. {:.bs-callout-warning} @@ -123,7 +128,7 @@ You can create a copy of your database using the `{{site.data.var.ct}} db-dump` You can choose to back up selected databases by appending the database names to the command, for example: ```bash -php vendor/bin/ece-tools -- main sales +php vendor/bin/ece-tools db-dump -- main sales ``` Consider the following guidelines: diff --git a/src/cloud/project/projects.md b/src/cloud/project/projects.md index b1853f3693c..8a148545fbb 100644 --- a/src/cloud/project/projects.md +++ b/src/cloud/project/projects.md @@ -3,6 +3,8 @@ group: cloud-guide title: Manage your project functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/project/overview.html +status: migrated --- The {{site.data.var.ece}} *project* includes all code in Git branches, associated environments, and *applications*. Applications have *environments* and *services* that run on them including a database, web server, and caching server. diff --git a/src/cloud/project/routes.md b/src/cloud/project/routes.md index 7daed31a86e..e9235a95bd8 100644 --- a/src/cloud/project/routes.md +++ b/src/cloud/project/routes.md @@ -5,13 +5,13 @@ functional_areas: - Cloud - Setup redirect_from: - - /cloud/project/project-conf-files_routes.html + - /cloud/project/project-conf-files_routes.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/routes/routes-yaml.html +status: migrated --- The `routes.yaml` file in the `.magento/routes.yaml` directory defines routes for your {{ site.data.var.ece }} Integration, Staging, and Production environments. Routes determine how the application processes incoming HTTP and HTTPS requests. -{% include cloud/note-pro-missing-self-service-options.md %} - The default `routes.yaml` file specifies the route templates for processing HTTP requests as HTTPS on projects that have a single default domain and on projects configured for multiple domains: ```yaml @@ -36,6 +36,10 @@ magento-cloud environment:routes ``` {:.no-copy} +## Configuration updates to Pro environments + +{% include cloud/note-pro-missing-self-service-options.md %} + ## Route templates The `routes.yaml` file is a list of templated routes and their configurations. You can use the following placeholders in route templates: @@ -98,11 +102,24 @@ For example, the `refactorcss` branch for the `mswy7hzcuhcjw` project hosted in ```text https://refactorcss-oy3m2pq-mswy7hzcuhcjw.us.magentosite.cloud/ ``` - {:.no-copy} +{:.no-copy} {:.bs-callout-info} If your Cloud project supports multiple stores, follow the route configuration instructions for [multiple websites or stores]({{ site.baseurl }}/cloud/project/project-multi-sites.html). +### Trailing slash + +Route definitions contain a trailing slash to indicate a folder or directory; however, the same content can be served with or without a trailing slash. The following URLs resolve the same but can be interpreted as _two different_ URLs: + +```text +https://www.example.com/blog/ + +https://www.example.com/blog +``` +{:.no-copy} + +It is a best practice to use a trailing slash for directories, but whichever method you choose, it is very important to **stay consistent** to avoid generating two locations. + ## Route protocols All environments support both HTTP and HTTPS automatically. diff --git a/src/cloud/project/sendgrid.md b/src/cloud/project/sendgrid.md index 44ea9b0b53d..cf9b75387ac 100644 --- a/src/cloud/project/sendgrid.md +++ b/src/cloud/project/sendgrid.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Services +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/project/sendgrid.html +status: migrated --- The SendGrid Simple Mail Transfer Protocol (SMTP) proxy service provides outbound email authentication and reputation monitoring services, including support for: @@ -45,7 +47,7 @@ To enable domain authentication: **Example `TXT` record with account ID:** ```text ->v=spf1 include:u17504801.wl.sendgrid.net -all +v=spf1 include:u17504801.wl.sendgrid.net -all ``` **Example `CNAME` records:** diff --git a/src/cloud/project/services-elastic.md b/src/cloud/project/services-elastic.md index 0dc9d5e7595..ec26542c7e1 100644 --- a/src/cloud/project/services-elastic.md +++ b/src/cloud/project/services-elastic.md @@ -7,6 +7,8 @@ functional_areas: - Search redirect_from: - /cloud/project/project-conf-files_services-elastic.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/service/elasticsearch.html +status: migrated --- [Elasticsearch](https://www.elastic.co) is an open-source product that enables you to take data from any source, any format, and search and visualize it in real time. diff --git a/src/cloud/project/services-mysql.md b/src/cloud/project/services-mysql.md index d1afe35c9f4..b1d11183910 100644 --- a/src/cloud/project/services-mysql.md +++ b/src/cloud/project/services-mysql.md @@ -5,7 +5,9 @@ functional_areas: - Cloud - Setup redirect_from: - - /cloud/project/project-conf-files_services-mysql.html + - /cloud/project/project-conf-files_services-mysql.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/service/mysql.html +status: migrated --- The `mysql` service provides persistent data storage based on [MariaDB](https://mariadb.com/) versions 10.2 to 10.4, supporting the [XtraDB](https://www.percona.com/software/mysql-database/percona-server/xtradb) storage engine and reimplemented features from MySQL 5.6 and 5.7. diff --git a/src/cloud/project/services-opensearch.md b/src/cloud/project/services-opensearch.md index 0e5d0893e82..0174007cf72 100644 --- a/src/cloud/project/services-opensearch.md +++ b/src/cloud/project/services-opensearch.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Search +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/service/opensearch.html +status: migrated --- The [OpenSearch](https://www.opensearch.org) service is an open-source fork of Elasticsearch 7.10.2, following the licensing changes for Elasticsearch. See [System requirements]({{ site.baseurl }}/guides/v2.4/install-gde/system-requirements.html) for a list of supported versions. @@ -23,10 +25,12 @@ OpenSearch enables you to take data from any source, any format, and search and {:.bs-callout-tip} Adobe recommends that you always set up OpenSearch for your {{ site.data.var.ece }} project even if you plan to configure a third-party search tool for your {{ site.data.var.ee }} application. Setting up OpenSearch provides a fallback option in the event that the third-party search tool fails. +## Enable OpenSearch + {:.procedure} To enable OpenSearch: -1. For Starter projects, add the `opensearch` service to the `.magento/services.yaml` file with the appropriate version and allocated disk space in MB. +1. For Starter projects and Pro Integration environments, add the `opensearch` service to the `.magento/services.yaml` file with the appropriate version and allocated disk space in MB. ```yaml opensearch: @@ -34,7 +38,7 @@ To enable OpenSearch: disk: 1024 ``` - For Pro projects, you must submit a {{site.data.var.ee}} Support ticket to change the OpenSearch version in the Staging and Production environments. + For Pro projects, you must submit a {{site.data.var.ee}} [Support ticket](https://support.magento.com/hc/en-us/articles/360000913794#support-tickets) to change the OpenSearch version in the Staging and Production environments. 1. Set the `relationships` property in the `.magento.app.yaml` file. @@ -66,3 +70,17 @@ To enable OpenSearch: ``` {%include cloud/tip-change-installed-service-version.md%} + +## Add plugins for OpenSearch + +You can add plugins to OpenSearch by adding the `configuration:plugins` section to the OpenSearch service in the `.magento/services.yaml` file. For example, the following code enables both the ICU and Phonetic analysis plugins. + +```yaml +opensearch: + type: opensearch: + disk: 1024 + configuration: + plugins: + - analysis-icu + - analysis-phonetic +``` diff --git a/src/cloud/project/services-rabbit.md b/src/cloud/project/services-rabbit.md index 964cad7b6b0..806140bf055 100644 --- a/src/cloud/project/services-rabbit.md +++ b/src/cloud/project/services-rabbit.md @@ -5,12 +5,14 @@ functional_areas: - Cloud - Setup redirect_from: - - /cloud/project/project-conf-files_services-rabbit.html + - /cloud/project/project-conf-files_services-rabbit.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/service/rabbitmq.html +status: migrated --- The [Message Queue Framework (MQF)]({{ site.baseurl }}/guides/v2.3/config-guide/mq/rabbitmq-overview.html) is a system within {{site.data.var.ee}} that allows a [module](https://glossary.magento.com/module) to publish messages to queues. It also defines the consumers that will receive the messages asynchronously. -The MQF uses [RabbitMQ](http://www.rabbitmq.com) as the messaging broker, which provides a scalable platform for sending and receiving messages. It also includes a mechanism for storing undelivered messages. RabbitMQ is based on the Advanced Message Queuing Protocol (AMQP) 0.9.1 specification. +The MQF uses [RabbitMQ](https://www.rabbitmq.com/) as the messaging broker, which provides a scalable platform for sending and receiving messages. It also includes a mechanism for storing undelivered messages. RabbitMQ is based on the Advanced Message Queuing Protocol (AMQP) 0.9.1 specification. {:.bs-callout-warning} If you prefer using an existing AMQP-based service, like RabbitMQ, instead of relying on {{site.data.var.ece}} to create it for you, use the [`QUEUE_CONFIGURATION`]({{ site.baseurl }}/cloud/env/variables-deploy.html#queue_configuration) environment variable to connect it to your site. diff --git a/src/cloud/project/services-redis.md b/src/cloud/project/services-redis.md index 855a8b12eaf..a653ab58509 100644 --- a/src/cloud/project/services-redis.md +++ b/src/cloud/project/services-redis.md @@ -6,9 +6,11 @@ functional_areas: - Setup redirect_from: - /cloud/project/project-conf-files_services-redis.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/service/redis.html +status: migrated --- -[Redis](http://redis.io) is an optional, backend cache solution that replaces the Zend Framework [Zend_Cache_Backend_File](http://framework.zend.com/apidoc/1.0/Zend_Cache/Backend/Zend_Cache_Backend_File.html), which {{site.data.var.ee}} uses by default. +[Redis](https://redis.io) is an optional, backend cache solution that replaces the Zend Framework [Zend_Cache_Backend_File](https://framework.zend.com/apidoc/1.0/Zend_Cache/Backend/Zend_Cache_Backend_File.html), which {{site.data.var.ee}} uses by default. We support Redis versions 3.2, 5.0, and 6.0. See [Configure Redis]({{ site.baseurl }}{{ site.gdeurl }}/config-guide/redis/config-redis.html). @@ -93,7 +95,7 @@ See the following {{site.data.var.ee}} Support articles for help troubleshooting - [Redis issue delay Admin login or checkout](https://support.magento.com/hc/en-us/articles/360000448493) - [Extended Redis cache implementation Magento Commerce and Cloud 2.3.5+](https://support.magento.com/hc/en-us/articles/360049292532-Extended-Redis-cache-implementation-Magento-Commerce-and-Cloud-2-3-5-) -- [MDVA-30102 Magento patch: Redis cache getting full](https://support.magento.com/hc/en-us/articles/360050393371)] +- [MDVA-30102 Magento patch: Redis cache getting full](https://support.magento.com/hc/en-us/articles/360050393371) - [Managed alerts on Magento Commerce: Redis memory warning alert](https://support.magento.com/hc/en-us/articles/360049928852) - [Managed alerts on Magento Commerce: Redis memory critical alert](https://support.magento.com/hc/en-us/articles/360049936112) - [Redis troubleshooter](https://support.magento.com/hc/en-us/articles/360046673932-Redis-troubleshooter) diff --git a/src/cloud/project/services.md b/src/cloud/project/services.md index 80f04d83a9a..49a0bb37e80 100644 --- a/src/cloud/project/services.md +++ b/src/cloud/project/services.md @@ -6,6 +6,8 @@ functional_areas: - Setup redirect_from: - /cloud/project/project-conf-files_services.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/service/services-yaml.html +status: migrated --- The `services.yaml` file defines the services supported and used by {{site.data.var.ece}}, such as MySQL, Redis, and Elasticsearch or OpenSearch. You do not need to subscribe to external service providers. This file is in the `.magento` directory of your project. @@ -216,7 +218,7 @@ You can upgrade the installed service version by updating the service configurat 1. Add, commit, and push your code changes. ```bash - git add -A + git add .magento/services.yaml ``` ```bash diff --git a/src/cloud/project/set-cache.md b/src/cloud/project/set-cache.md index effb8d37aad..370efa81733 100644 --- a/src/cloud/project/set-cache.md +++ b/src/cloud/project/set-cache.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Services +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/app/set-cache.html +status: migrated --- The cache time-to-live (TTL) for your media and static files is set in the `.magento.app.yaml` configuration file using the `expires` key. diff --git a/src/cloud/project/user-admin.md b/src/cloud/project/user-admin.md index 893ce40e091..8ab90b617c6 100644 --- a/src/cloud/project/user-admin.md +++ b/src/cloud/project/user-admin.md @@ -6,24 +6,28 @@ functional_areas: - Configuration - Account - Security - redirect_from: - /cloud/admin/admin-user-admin.html - /cloud/project/user-admin.html#cloud-role-acct-owner - /cloud/project/user-admin.html#cloud-role-env - /cloud/project/user-admin.html#cloud-role-project +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/project/user-access.html +status: migrated --- -You can manage access to {{site.data.var.ece}} projects by adding users and assigning roles. Assign project-level roles to provide access to the entire project, and environment-level roles to set permissions per available environment. +You manage access to {{site.data.var.ece}} projects and certain environment types by adding users and assigning roles. Project level roles provide access to the entire project. + +Adobe Commerce on cloud infrastructure consists of three environments types: Production, Staging, and Integration. Access to an environment is granted by assigning a user the Admin, Contributor, Viewer, or None role. | **Role** | **Scope** | **Access** | |-|-|-| -| **Account owner** | Project | Perform any task in any project or environment, including deleting it.
        Adobe assigns this role to the License Owner associated with the email address,
        name, and information of the person who registered the {{ site.data.var.ece }} account.

        You must submit a {{site.data.var.ee}} Support ticket to modify settings or change the Account owner. | +| **Account owner** | Project | Perform any task in any project or environment, including deleting it.
        Adobe assigns this role to the License Owner associated with the email address, name, and information of the person who registered the {{ site.data.var.ece }} account. You submit a {{site.data.var.ee}} Support ticket to modify settings or change the Account owner. | | **Super User** | Project | Administrator access to all project settings and Cloud environments. Super users can change settings and perform tasks on any environment, including creating and restoring [snapshots][] and managing users. | -| **Project reader** | Project | View access to all project environments. Users with this role cannot perform tasks on any environment. However, you can configure environment-level permissions for users with this role to permit write access to a specific environment. | -| **Admin** | Environment | Change settings and perform tasks on an environment, including merging with the parent environment | -| **Contributor** | Environment | Push code and branch the environment | -| **Reader** | Environment | View-only access to an environment | +| **Project viewer** | Project | View access to all project environments. Users with this role cannot perform tasks on any environment. However, you can configure environment-level permissions for users with this role to permit write access to a specific environment. | +| **Admin** | Environment | Change settings, push code, perform tasks and branch environments, including merging with the parent environment; SSH access | +| **Contributor** | Environment | Cannot change settings or execute actions; Can push code and branch the environment; SSH access | +| **Viewer** | Environment | View-only access to an environment; No SSH access | +| **None** | Environment | No access to an environment; No SSH access | ## Add user authentication requirements @@ -33,20 +37,20 @@ When MFA enforcement is enabled on a {{site.data.var.ece}} project, all users wi ## Add users and manage access -You can add users and assign roles using the `magento-cloud` CLI or the Project Web Interface. +You add users and assign roles using the `magento-cloud` CLI or the Project Web Interface. {:.bs-callout-tip} -Changing user configuration on an {{site.data.var.ece}} environment requires a site deployment for the changes to take effect, which takes your site offline until the deployment completes. For Production environments, we recommend completing user administration tasks during off-peak hours to prevent service disruptions. +Changing user configuration on an {{site.data.var.ece}} environment requires a site deployment for the changes to take effect, which takes your site offline until the deployment completes. For Production environments, Adobe recommends completing user administration tasks during off-peak hours to prevent service disruptions. **Prerequisites:** - To add a user to a project or environment, you need the email address associated with an existing {{ site.data.var.ece }} account. New users can [register for an account][{{site.data.var.ece}} account] and provide the associated email address after completing account validation. -- Users assigned the **Admin** role can no longer manage users using the `magento-cloud` CLI. Only users that are granted the **Super User** or **Account Owner** role can manage users. +- Users assigned the **Admin** role cannot manage users using the `magento-cloud` CLI. Only users that are granted the **Super User** or **Account Owner** role can manage users. -### Manage users with the `magento-cloud` CLI {#cloud-user-mg-cli} +## Manage users with the `magento-cloud` CLI {#cloud-user-mg-cli} -Use the {{site.data.var.ece}} command line client to manage users and integrate this with any other automated system. +Use the {{site.data.var.ece}} `magento-cloud` CLI to manage users and integrate with automated systems. Available commands: @@ -54,8 +58,14 @@ Available commands: - `magento-cloud user:delete`–delete a user - `magento-cloud user:list [users]`–list project users - `magento-cloud user:role`–view or change the user role +- `magento-cloud user:update`–update user role on a project + +{:.bs-callout-tip} +The `magento-cloud list` command displays all the `magento-cloud` CLI commands. To view the command and parameters for a specific command and not the entire list, append the command with a -help. For example, `magento-cloud` `environment:list`, you run `magento-cloud environment:list -help`. + +The following examples use the `magento-cloud` CLI to add a user, configure roles, modify project assignments, and assign user roles. -The following examples use the `magento-cloud` CLI to add a user, configure roles, and modify project assignments and assigned user roles. +### Add a user and assign roles {:.procedure} To add a user and assign roles: @@ -65,23 +75,31 @@ To add a user and assign roles: ```bash magento-cloud user:add ``` - -1. Follow the prompts to specify the user email address, set the project and environment roles, and add the user: +1. Follow the prompts to specify the user email address, set the project and environment type roles, and add the user: ```terminal Enter the user's email address: alice@example.com Email address: alice@example.com - The user's project role can be 'viewer' ('v') or 'admin' ('a'). - Project role [V/a]: a - The user's environment-level roles can be 'viewer', 'contributor', or 'admin'. - development environment role [V/c/a]: c - Summary: - Email address: alice@example.com - Project role: contributor + The user's project role can be admin (a) or viewer (v). + + Project role (default: viewer) [a/v]: viewer + + The user's environment type role(s) can be admin (a), viewer (v), contributor (c) or none (n). + + Role on type development (default: none) [a/v/c/n]: none + Role on type production (default: none) [a/v/c/n]: admin + Role on type staging (default: none) [a/v/c/n]: admin + + Adding the user alice@example.com to (project_id): + Project role: viewer + Role on type production: admin + Role on type staging: admin + Adding users can result in additional charges. - Are you sure you want to add this user? [Y/n] + + Are you sure you want to add this user? [Y/n] y Adding the user to the project ``` {:.no-copy} @@ -90,23 +108,50 @@ To add a user and assign roles: After you add the user, Adobe sends an email to the specified address with instructions for accessing the {{ site.data.var.ece }} project. -The following example changes the environment-level role that is assigned to a user: +### View a user's project role + +To view a user's project role: ```bash -magento-cloud user:role alice@example.com --level environment --environment development --role admin +magento-cloud user:get user@example.com + ``` -{:.bs-callout-tip} -The `magento-cloud list` command displays all the `magento-cloud` CLI commands. +Sample response: + +```terminal +Current role(s) of User (user@example.com) on Production (project_id): + Project role: admin +``` + +### Add a user to multiple environments + +To add a user as a `viewer` on a `Production` environment, and as a `contributor` on an `Integration` environment: + +```bash +magento-cloud user:add user@example.com -r production:v -r integration:c -### Manage users from the Project Web UI {#cloud-user-webinterface} +``` + +### Update user environment permissions + +To update user environment permissions to `admin` on the `Production` environment: + +```bash +magento-cloud user:update user@example.com -r production:a +``` -You can add project-level and environment-level users from the Project Web UI, and use the _Edit_ feature to modify permissions for an existing user. +## Manage users from the Project Web UI {#cloud-user-webinterface} +You add project-level and environment-level permissions from the Project Web UI, and use the _Edit_ feature to modify permissions for an existing user. + +{:.bs-callout-tip} After you add a user, the user receives an email inviting them to join the {{site.data.var.ece}} project. +### Add users from the Project Web UI + {:.procedure} -Access the Project Web UI to add users: +To add users from the Project Web UI: 1. Log in to [your {{site.data.var.ece}} account][{{site.data.var.ece}} account]. @@ -122,8 +167,10 @@ Access the Project Web UI to add users: 1. In the Project Web UI, add project-level users and environment-level users as needed. +### Add a project-level user + {:.procedure} -Add a project-level user: +To add a project-level user: 1. In the Project Web UI, click the settings icon in the top navigation bar. @@ -143,40 +190,21 @@ Add a project-level user: For a project administrator account, select **Super User**. This role provides Admin rights to all settings and environments. If not selected, the account has only view options for all project environments. - - Select permissions per specific environment (or branch) in the Integration environment: _No access_, _Admin_ (change settings, execute action, merge code), _Contributor_ (push code), or _Reader_ (view only). When you add active environments, you can modify permissions per user. + - Select permissions per specific environment (or branch) in the Integration environment: _No access_, _Admin_ (change settings, execute action, merge code), _Contributor_ (push code), or _Viewer_ (view only). When you add active environments, you can modify permissions per user. 1. Click **Add User**. {:.bs-callout-warning} - After adding project-level users, you must redeploy all environments to apply the changes. Adding a project user does not trigger the redeploy automatically. + After adding project-level users, you must redeploy all environments to apply the changes. Adding a project user does not trigger a redeploy automatically. {:.bs-callout-warning} Only **Super Users** can manage users in any environment. To grant a user access to the **Users** tab when configuring the environment, another **Super User** or the **Account Owner** must assign that user the **Super User** role. -{:.procedure} -Add an environment-level user: - -1. In the Project Web UI, select the environment. Then, click **Configure environment**. - - ![Configure the environment]({{ site.baseurl }}/common/images/cloud/cloud_project-env.png){:width="550px"} - -1. Click the **Users** tab, and then click **Add User**. - -1. Complete the _Add User_ form: - - ![Add the user]({{ site.baseurl }}/common/images/cloud/cloud_project-add-env-user.png){:width="550px"} - - - Enter the user email address. - - - Select the user role from the dropdown menu: _Admin_, _Contributor_, or _Reader_. - - - Click *Add User*. - {%include cloud/note-prevent-site-availability-issues.md%} ## Update account security settings -After you add a user to a Cloud project, ask the user to review their account settings and add the following security configuration as needed: +After you add a user to a Cloud project, ask the user to review their account security settings and add the following security configuration as needed: - Enable 2FA @@ -188,7 +216,7 @@ After you add a user to a Cloud project, ask the user to review their account se - Create an API token - Users can generate an API token that can be used for secure SSH access to an environment. You need the token to enable authentication workflows for automated processes. + Users must generate an API token that is used for SSH access to an environment. You need the token to enable authentication workflows for automated processes. On projects with MFA enforcement enabled, you must use the API token to authenticate SSH access requests from automated accounts. The token allows automated processes to bypass authentication workflows which require 2FA. @@ -201,7 +229,7 @@ After you add a user to a Cloud project, ask the user to review their account se - [FreeOTP (Android)][] - [GAuth Authenticator (Firefox OS, desktop, others)][] -Instructions for installing the authenticator application and enabling 2FA are available on the {{site.data.var.ece}} _Account settings_ page in the Cloud Project Web UI. +Instructions for installing the authenticator application and enabling 2FA are available on the {{site.data.var.ece}} _Account settings_ page in the Project Web UI. {:.procedure} To enable 2FA on your {{site.data.var.ece}} user account: @@ -253,7 +281,7 @@ To enable 2FA on your {{site.data.var.ece}} user account: - Click **Save** to save the codes to your account so you can view and manage them from your account security settings. {:.bs-callout-warning} - If you lose access to an account with 2FA and have no recovery codes, you must contact your project administrator, or submit a support ticket to reset the 2FA application. + If you lose access to an account with 2FA and have no recovery codes, you must contact your project administrator, or [submit a Support ticket](https://support.magento.com/hc/en-us/articles/360000913794#submit-ticket) to reset the 2FA application. 1. After completing the 2FA setup, click **Save** to update your account. @@ -267,7 +295,7 @@ To enable 2FA on your {{site.data.var.ece}} user account: ### Manage 2FA configuration and recovery codes -You can manage the 2FA configuration for a {{site.data.var.ece}} account from the _Security_ section on the _Account settings_ page. +You manage the 2FA configuration for a {{site.data.var.ece}} account from the _Security_ section on the _Account settings_ page. 1. Log in to the {{ site.data.var.ece }} user account. @@ -288,7 +316,7 @@ You can manage the 2FA configuration for a {{site.data.var.ece}} account from th An API token can be exchanged for an OAuth 2 access token, which can then be used to authenticate requests. -On projects that have MFA enforcement enabled, you must have an API token to enable secure SSH access for machine users and automated processes. +On projects that have MFA enforcement enabled, you must have an API token to enable SSH access for machine users and automated processes. {%include cloud/cloud-secure-api-token.md%} @@ -305,7 +333,7 @@ To create an API token: ![Cloud create API token]({{ site.baseurl }}/common/images/cloud/cloud_account_settings-create-api-token.png){:width="550px"} -1. Specify an **Application** name for the token, for example specify a name that matches the machine user or automated process that will use the API token. +1. Specify an **Application** name for the token, for example, specify a name that matches the machine user or automated process that uses the API token. ![Cloud create API token]({{ site.baseurl }}/common/images/cloud/cloud_account_settings-api-token-app-name.png){:width="550px"} diff --git a/src/cloud/reference/cli-ref-topic.md b/src/cloud/reference/cli-ref-topic.md index e6448090840..18a530419ab 100644 --- a/src/cloud/reference/cli-ref-topic.md +++ b/src/cloud/reference/cli-ref-topic.md @@ -3,6 +3,8 @@ group: cloud-guide title: Magento Cloud CLI functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/cloud-cli.html +status: migrated --- The `magento-cloud` CLI tool enables developers and system administrators the ability to manage Cloud projects and environments, perform routines and run automation tasks. The `magento-cloud` CLI extends the features and functionality of the Project Web Interface. After you install the `magento-cloud` CLI on your local workstation, you can use it to manage your {{site.data.var.ece}} Starter and Pro Integration environments. diff --git a/src/cloud/reference/cloud-composer.md b/src/cloud/reference/cloud-composer.md index 5e150c903c2..34093d4fb2d 100644 --- a/src/cloud/reference/cloud-composer.md +++ b/src/cloud/reference/cloud-composer.md @@ -6,6 +6,8 @@ redirect_from: functional_areas: - Cloud - Upgrade +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/overview.html +status: migrated --- We use [Composer](https://getcomposer.org/doc) to manage {{site.data.var.ece}} dependencies and upgrades and provide context about the included packages, what the packages do, and how they fit together. We highly recommend experience with Composer. diff --git a/src/cloud/reference/discover-deploy.md b/src/cloud/reference/discover-deploy.md index f56485606c1..3c5de7e5000 100644 --- a/src/cloud/reference/discover-deploy.md +++ b/src/cloud/reference/discover-deploy.md @@ -6,6 +6,8 @@ redirect_from: functional_areas: - Cloud - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/best-practices.html +status: migrated --- Build and deploy scripts activate when you merge code to a remote environment. These scripts use the environment configuration files and application code to prepare data and configurations to provision Cloud infrastructure and services, and to install or update the {{ site.var.data.ee }} application and third-party and custom extensions in the Cloud environment. @@ -87,7 +89,7 @@ We highly recommend the following best practices and considerations for your dep Follow best practices for builds and deployment, and use the [Upgrades and patches]({{ site.baseurl }}/cloud/project/project-upgrade-parent.html) workflow to upgrade your project and environments. Use the following guidelines to plan your upgrade and post-upgrade work: -- **Backup your project**–Before upgrading the {{ site.data.var.ee }} and any third-party or custom extensions, back up the database in Integration, Staging, and Production environments. See [Back up the database]({{ site.baseurl }}/cloud/project/project-upgrade.html#back-up-the-database). +- **Backup your project**–Before upgrading the {{ site.data.var.ee }} and any third-party or custom extensions, back up the database in Integration, Staging, and Production environments. See [Back up the database]({{ site.baseurl }}/cloud/project/project-upgrade.html). - **Check for compatibility issues**– diff --git a/src/cloud/reference/ece-tools-error-reference.md b/src/cloud/reference/ece-tools-error-reference.md index 739ac89f302..7d1d8900f73 100644 --- a/src/cloud/reference/ece-tools-error-reference.md +++ b/src/cloud/reference/ece-tools-error-reference.md @@ -7,6 +7,8 @@ functional_areas: - Configuration redirect_from: - /cloud/reference/error-codes.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/ece-tools/error-reference.html +status: migrated --- This error message reference provides information to troubleshoot errors that can occur during the {{site.data.var.ece }} build, deploy, and post-deploy processes. diff --git a/src/cloud/reference/ece-tools-reference.md b/src/cloud/reference/ece-tools-reference.md index 00ac8e6bc8d..aa306556da0 100644 --- a/src/cloud/reference/ece-tools-reference.md +++ b/src/cloud/reference/ece-tools-reference.md @@ -3,6 +3,8 @@ group: cloud-guide title: ece-tools package functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/ece-tools/package-overview.html +status: migrated --- The `{{site.data.var.ct}}` package is a set of scripts and tools designed to manage and deploy {{site.data.var.ece}} projects. The `{{site.data.var.ct}}` package simplifies many {{site.data.var.ece}} processes, such as deploying to a Docker environment, managing crons, verifying project configuration, and applying Adobe patches and hot fixes. You can view and contribute to the open-source [ece-tools repository on Github](https://github.com/magento/ece-tools). diff --git a/src/cloud/reference/git-integration.md b/src/cloud/reference/git-integration.md index 6d91dd41fc1..716e3be023b 100644 --- a/src/cloud/reference/git-integration.md +++ b/src/cloud/reference/git-integration.md @@ -3,6 +3,8 @@ group: cloud-guide title: Git redirect_from: - /cloud/project/admin-git-push.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/dev-tools/integrations/overview.html +status: migrated --- Git is the center of all code management, build, and deployment for your {{site.data.var.ece}} stores and sites. We use Git to provide source control for your code: @@ -14,7 +16,7 @@ Git is the center of all code management, build, and deployment for your {{site. If you need help understand Git, you can review the following resources: * [Git documentation](https://git-scm.com/documentation) and [videos](https://git-scm.com/videos) from the makers of Git -* [Git cheatsheet](http://rogerdudler.github.io/git-guide/files/git_cheat_sheet.pdf) and [quick guide](http://rogerdudler.github.io/git-guide/) from Roger Dudler +* [Git cheatsheet](https://rogerdudler.github.io/git-guide/files/git_cheat_sheet.pdf) and [quick guide](https://rogerdudler.github.io/git-guide/) from Roger Dudler * [Git video](https://www.youtube.com/watch?v=8KCQe9Pm1kg) with DevForge to understand how people use the repo and commands with a fun story ## Git CLI and clients {#clients} diff --git a/src/cloud/release-notes/backward-incompatible-changes.md b/src/cloud/release-notes/backward-incompatible-changes.md index 6a026427ef2..38eab160421 100644 --- a/src/cloud/release-notes/backward-incompatible-changes.md +++ b/src/cloud/release-notes/backward-incompatible-changes.md @@ -1,6 +1,8 @@ --- group: cloud-guide title: Backward incompatible changes +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/release-notes/backward-incompatible-changes.html +status: migrated --- Use the following information to learn about backward incompatible changes that might require you to adjust Cloud configuration and processes for existing Cloud projects when you upgrade to the latest release of the `{{site.data.var.ct}}` package or other {{site.data.var.csuite}} packages. diff --git a/src/cloud/release-notes/cloud-release-archive.md b/src/cloud/release-notes/cloud-release-archive.md index 8ef057dece9..d0ea2656f70 100644 --- a/src/cloud/release-notes/cloud-release-archive.md +++ b/src/cloud/release-notes/cloud-release-archive.md @@ -3,6 +3,8 @@ group: cloud-guide title: Release notes archive for ece-tools functional_areas: - Cloud +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/release-notes/cloud-release-archive.html +status: migrated --- {:.bs-callout-info} @@ -394,7 +396,7 @@ The `{{site.data.var.ct}}` version 2002.0.17 includes an important security patc - {:.new}**Docker Compose for Cloud**—Added a command—`docker:build`—to generate a [Docker Compose]({{ site.baseurl }}/cloud/docker/docker-config.html) configuration from the Cloud `{{site.data.var.ct}}` repository. -- {:.new}**Change Locales**—Now you can [change store locale]({{ site.baseurl }}/cloud/live/sens-data-over.html#change-locales) without the exporting and importing configuration process. While the application is in Production and the SCD_ON_DEMAND is enabled, the store and admin locale options are available. +- {:.new}**Change Locales**—Now you can [change store locale](https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/store-settings.html#change-locales) without the exporting and importing configuration process. While the application is in Production and the SCD_ON_DEMAND is enabled, the store and admin locale options are available. - {:.new}**Site map and Robots**—Created a [workflow]({{ site.baseurl }}/cloud/trouble/robots-sitemap.html) to add a `robots.txt` file and generate a `sitemap.xml` file for a single domain configuration without requiring a change to the infrastructure. diff --git a/src/cloud/release-notes/cloud-tools.md b/src/cloud/release-notes/cloud-tools.md index 69536362301..062889b3256 100644 --- a/src/cloud/release-notes/cloud-tools.md +++ b/src/cloud/release-notes/cloud-tools.md @@ -7,6 +7,8 @@ functional_areas: - Configuration redirect_from: - /cloud/release-notes/CloudReleaseNotes.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/release-notes/cloud-tools-suite.html +status: migrated --- This release information details the latest improvements to the {{site.data.var.csuite}} packages which are designed to deploy and manage {{site.data.var.ee}} installations and upgrades on the Cloud platform. diff --git a/src/cloud/release-notes/ece-release-notes.md b/src/cloud/release-notes/ece-release-notes.md index b9e699ae36f..c1bca4c39b7 100644 --- a/src/cloud/release-notes/ece-release-notes.md +++ b/src/cloud/release-notes/ece-release-notes.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/release-notes/ece-tools-package.html +status: migrated --- The [{{site.data.var.ct}}](https://github.com/magento/ece-tools) package is a set of scripts and tools designed to manage and deploy Cloud projects. These release notes describe the latest improvements to this package, which is part of the [{{site.data.var.csuite}}]({{page.baseurl}}/cloud/release-notes/cloud-tools.html). @@ -21,6 +23,29 @@ The release notes include: +## v2002.1.13 {#latest} + +Release date: October 27, 2022 + +- {:.new}**Added support for Adobe I/O Events for Adobe Commerce**. Extension developers can now use the [Adobe I/O Events](https://developer.adobe.com/events/docs/) framework to send Commerce event information from Cloud instances to their applications written for [Adobe App Builder](https://developer.adobe.com/app-builder/docs/overview/). Adobe I/O Events for Adobe Commerce is currently in Partner Preview. +- {:.new}**Validator for OPcache configuration**—Added a validator to check the OPcache configuration for excluded paths. +- {:.fix}**Fixed an issue with GraphQL cache configuration**—Now ECE-Tools keeps the GraphQL `id_salt` value in `cache` configuration in the `app/etc/env.php` file. + +## v2002.1.12 + +Release date: September 13, 2022 + +- {:.new}**Enable `synchronous_replication`**—ECE-Tools sets `synchronous_replication=>true` in the `app/etc/env.php` file when `MYSQL_USE_SLAVE_CONNECTION` is enabled. This configuration affects only Magento 2.4.6+. See the `MYSQL_USE_SLAVE_CONNECTION` variable description in the [Deploy variables]({{ site.baseurl }}/cloud/env/variables-deploy.html#mysql_use_slave_connection). +- {:.new}**OpenSearch**—Added functionality to configure and set the `opensearch` engine for the next Adobe Commerce release 2.4.6. See [Set up OpenSearch service]({{ site.baseurl }}/cloud/project/services-opensearch.html). + +## v2002.1.11 + +Release date: August 4, 2022 + +- {:.fix}**ElasticSuite Validator and Opensearch**—Fixed ElasticSuite integrity check validator issue when Opensearch is installed. +- {:.fix}**Return types for deploy commands**—Fixed return types for deploy commands. +- {:.fix}**RabbitMQ issue with new Magento 2.4.5 installation**—Fixed RabbitMQ crash issue on new Magento 2.4.5. installation. + ## v2002.1.10 Release date: March 31, 2022 diff --git a/src/cloud/release-notes/mcc-release-notes.md b/src/cloud/release-notes/mcc-release-notes.md index b466385c3f5..61be5937e96 100644 --- a/src/cloud/release-notes/mcc-release-notes.md +++ b/src/cloud/release-notes/mcc-release-notes.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/release-notes/cloud-components.html +status: migrated --- The [Magento Cloud Components](https://github.com/magento/magento-cloud-components) package provides extended {{site.data.var.ee}} core functionality for sites deployed on Cloud infrastructure. This package is a dependency for the {{ site.data.var.ct }} package. These release notes describe the latest improvements to this package, which is a component of [{{ site.data.var.csuite }}]({{ page.baseurl }}/cloud/release-notes/cloud-tools.html). @@ -18,6 +20,18 @@ The release notes include: +## v1.0.12 {#latest} + +Release date: September 13, 2022 + +- {:.fix}**Errors on warmup**—Fixed an issue that attempted to [warmup]({{ site.baseurl }}/cloud/env/variables-post-deploy.html#warm_up_pages) when the page visibility is set to [**Not Visible Individually**]({{site.user_guide_url}}/system/data-attributes-product.html#simple-product-csv-file-structure) in the Admin, resulting in `ERROR: Warming up failed: ` errors in the deployment log. + +## v1.0.11 + +Release date: August 4, 2022 + +- {:.fix}**Added Support for Symfony 5.4 compatibility**—Fixes for compatibility with Symfony 5.4. + ## v1.0.10 Release date: March 10, 2022 diff --git a/src/cloud/release-notes/mcd-release-notes.md b/src/cloud/release-notes/mcd-release-notes.md index 1b2c08e8ef4..ac1e187a0d3 100644 --- a/src/cloud/release-notes/mcd-release-notes.md +++ b/src/cloud/release-notes/mcd-release-notes.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/release-notes/cloud-docker.html +status: migrated --- The [`{{site.data.var.mcd-package}}`](https://github.com/magento/magento-cloud-docker) package provides functionality and Docker images to deploy {{ site.data.var.ee }} to a local Cloud environment. These release notes describe the latest improvements to this package, which is a component of [{{ site.data.var.csuite }}]({{ page.baseurl }}/cloud/release-notes/cloud-tools.html). @@ -18,6 +20,20 @@ The release notes include: +## v1.3.4 {#latest} + +Release date: October 27, 2022 + +- {:.new}**Added new Varnish images**—Added Varnish images for next versions 6.5, 7.0, and 7.1. + +## v1.3.3 + +Release date: September 13, 2022 + +- {:.new}**Apple M1 (ARM64) support**—Added changes to Docker images to enable support for Apple M1 (ARM64) architecture. +- {:.fix}**Mailhog**—Fixed an issue where the Mailhog service did not catch emails while in developer mode. +- {:.fix}**init-docker.sh**—Fixed the service versions validator in the `init-docker.sh` script. + ## v1.3.2 Release date: March 31, 2022 @@ -285,7 +301,7 @@ Release date: Feb 5, 2020 - {:.new}**Created a separate package to deliver `{{site.data.var.mcd-prod}}`**—Moved the source code to deliver {{site.data.var.mcd-prod}} from the `{{site.data.var.ct}}` repository to the [new `magento-cloud-docker` repository](https://github.com/magento/magento-cloud-docker) to maintain code quality and provide independent releases. The new package is a dependency for {{site.data.var.ct}} v2002.1.0 and later. - When you update {{site.data.var.ct}}, you also update the `{{site.data.var.mcd-package}}` package to version 1.0.0. If you used {{site.data.var.mcd-prod}} with an earlier `{{site.data.var.ct}}` release (2002.0.x), review the [backward incompatibilities]({{site.baseurl}}/cloud/release-notes/backward-incompatible-changes.html#magento-cloud-docker-changes) and update your project as scripts, commands, and processes as needed. + When you update {{site.data.var.ct}}, you also update the `{{site.data.var.mcd-package}}` package to version 1.0.0. If you used {{site.data.var.mcd-prod}} with an earlier `{{site.data.var.ct}}` release (2002.0.x), review the [backward incompatibilities]({{site.baseurl}}/cloud/release-notes/backward-incompatible-changes.html) and update your project as scripts, commands, and processes as needed. - {:.new}**Added versioning to the Docker images**—You must now update the `{{site.data.var.mcd-package}}` package to get the updated images. @@ -362,7 +378,7 @@ Release date: Feb 5, 2020 - {:.new}Added a container health check to the Elasticsearch service to ensure that the service is ready before continuing with build and deploy processing. If the health check returns an error, the container restarts automatically. -[Sharing project data]: {{site.baseurl}}/cloud/docker/docker-containers.html#sharing-magento-cloud-project-data +[Sharing project data]: {{site.baseurl}}/cloud/docker/docker-containers.html [Database containers]: {{site.baseurl}}/cloud/docker/docker-containers-service.html#database-container [developer]: {{site.baseurl}}/cloud/docker/docker-mode-developer.html [production]: {{site.baseurl}}/cloud/docker/docker-mode-production.html diff --git a/src/cloud/release-notes/mcp-release-notes.md b/src/cloud/release-notes/mcp-release-notes.md index f842b93eb23..ef0ef1d20cc 100644 --- a/src/cloud/release-notes/mcp-release-notes.md +++ b/src/cloud/release-notes/mcp-release-notes.md @@ -5,6 +5,8 @@ functional_areas: - Cloud - Setup - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/release-notes/cloud-patches.html +status: migrated --- The [Magento Cloud Patches](https://github.com/magento/magento-cloud-patches) package provides a set of required patches which improve the integration of all {{site.data.var.ee}} versions with Cloud environments and supports quick delivery of critical fixes. @@ -20,6 +22,33 @@ See [Apply patches]({{site.baseurl}}/cloud/project/project-patch.html) for instr The `{{site.data.var.mcp-package}}` package uses the following version sequence: `..` +## v1.0.20 {#latest} + +Release date: October 27, 2022 + +- **Added L2 cache improvements patch**—This patch fixes an issue with flushing the local L2 cache for Commerce version 2.4.0 and 2.4.1. + +## v1.0.19 + +Release date: September 13, 2022 + +- **Enhanced support for PHP 8.1**—Fixed compatibility issues with certain PHP 8.1.x versions. + +## v1.0.18 + +Release date: August 11, 2022 + +Critical patch for {{site.data.var.ee}} 2.4.5: + +- **Issue with orders using Braintree payments**—This patch resolves a critical issue preventing admins from placing new orders or reorders. + +See [Admin can't create order/reorder when Braintree payment enabled](https://support.magento.com/hc/en-us/articles/8322266352525). + +## v1.0.17 + +Release date: May 24, 2022 + +Fixed constraints for security patches in the patches.json file. ## v1.0.16 diff --git a/src/cloud/requirements/cloud-requirements.md b/src/cloud/requirements/cloud-requirements.md index 2a03f818e7b..53d25de3ed6 100644 --- a/src/cloud/requirements/cloud-requirements.md +++ b/src/cloud/requirements/cloud-requirements.md @@ -4,9 +4,11 @@ title: Technologies and requirements functional_areas: - Cloud - Install +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/overview.html +status: migrated --- -This topic describes technologies, knowledge, accounts, and steps to complete when working with your {{site.data.var.ece}} code, environments, and store(s) and site(s). If you are not experienced with a technology, we provide additional links and information to get you started. +This topic describes technologies, knowledge, accounts, and steps to complete when working with your {{site.data.var.ece}} code, environments, stores, and sites. If you are not experienced with a technology, links to information and resources are provided below to help get you started. ## Technologies {#cloud-req-pre} @@ -18,51 +20,54 @@ The following technologies are requirements for developing and deploying your st * Continuous Integration * Architectures including Starter or Pro architecture -Here are some advanced technologies we recommend getting familiar with: +Below are advanced technologies that you should become familiar with: -* [Fastly]({{ site.baseurl }}/cloud/cdn/cloud-fastly.html) for CDN and caching (based on Varnish) -* [New Relic]({{ site.baseurl }}/cloud/project/new-relic.html) for performance testing -* [GitHub]({{ site.baseurl }}/cloud/integrations/github-integration.html) if you need a Git repo * [Bitbucket]({{ site.baseurl }}/cloud/integrations/bitbucket-integration.html) if you need a Git repo +* [Fastly]({{ site.baseurl }}/cloud/cdn/cloud-fastly.html) for CDN (Content Delivery Network) and caching (based on Varnish) +* [GitHub]({{ site.baseurl }}/cloud/integrations/github-integration.html) if you need a Git repo * [GitLab]({{ site.baseurl }}/cloud/integrations/gitlab-integration.html) if you need a Git repo +* [New Relic]({{ site.baseurl }}/cloud/project/new-relic.html) for performance testing {% include cloud/split-db-nosupport.md %} ### What is Git {#git} -Git is the heart of all your code in repositories. It acts as a version control system through branches from a parent. Multiple developers can work together in personal branches all merging into the same parent. You can also work on features at the same time in multiple branches. +Git is the heart of all your code in repositories. Git acts as a version control system through branches from a parent. Multiple developers can work together in personal branches all merging into the same parent. You can work on features at the same time in multiple branches. -We hope you have a good working knowledge of Git. Need some help? Don't worry, we have you covered with some of our favorite links and information. We'll also include a Git guide to branching and developing soon. +If you need help with Git, resource links are provided below. * [Git documentation](https://git-scm.com/documentation) and [videos](https://git-scm.com/videos) from the makers of Git -* [Git cheatsheet](http://rogerdudler.github.io/git-guide/files/git_cheat_sheet.pdf) and [quick guide](http://rogerdudler.github.io/git-guide/) from Roger Dudler +* [Git cheatsheet](https://rogerdudler.github.io/git-guide/files/git_cheat_sheet.pdf) and [quick guide](https://rogerdudler.github.io/git-guide/) from Roger Dudler * [Git video](https://www.youtube.com/watch?v=8KCQe9Pm1kg) with DevForge to understand how people use the repo and commands with a fun story -To get started with Git, you should have [Git installed](https://git-scm.com/downloads) on your local. +To get started with Git, [download](https://git-scm.com/downloads) and install Git on your local. {:.bs-callout-info} In addition to Git requirements for valid branch names, {{site.data.var.ee}} adds two additional requirements: The `/` character is not allowed. Branch names must be case-insensitively unique. In other words, if you have a branch named `CaSe`, you cannot create another branch named `case`. -You must use Secure Shell (SSH) and not HTTPS to connect to the Git repository. We walk you through the process of setting this up with your local. +To clone the Git repository, use the Secure Shell (SSH) access method. Do not use HTTPS. For a walk through of configuring SSH with your local, see [Enable SSH keys]({{ site.baseurl }}/cloud/before/before-workspace-ssh.html). -## Supported software versions {#cloud-arch-software} +## Supported software and services {#cloud-arch-software} {{site.data.var.ece}} uses: * Operating system: Debian GNU/Linux -* Web server: [nginx](https://glossary.magento.com/nginx) +* Web server: [Nginx](https://glossary.magento.com/nginx) +* Database: MySQL (MariaDB) +* Content Delivery Network (CDN): Fastly CDN +* Search: Elasticsearch, OpenSearch -You cannot upgrade the software, but you can configure the following services: +You cannot upgrade the software, but you can [configure the following services]({{ site.baseurl }}/cloud/project/services.html#default-and-supported-services): * [PHP]({{ site.baseurl }}/cloud/project/magento-app.html) * [MySQL]({{ site.baseurl }}/cloud/project/services-mysql.html) * [Redis]({{ site.baseurl }}/cloud/project/services-redis.html) * [RabbitMQ]({{ site.baseurl }}/cloud/project/services-rabbit.html) -* [Elasticsearch]({{ site.baseurl }}/cloud/project/services-elastic.html) -* [OpenSearch]({{ site.baseurl }}/cloud/project/services-opensearch.html) +* [Elasticsearch]({{ site.baseurl }}/cloud/project/services-elastic.html). Elasticsearch 7.11 and later is not supported for {{site.data.var.ece}}. +* [OpenSearch]({{ site.baseurl }}/cloud/project/services-opensearch.html). Adobe Commerce and Magento Open Source versions 2.3.7-p3, 2.4.3-p2, 2.4.4 and later support the OpenSearch service. - {:.bs-callout-info} +{:.bs-callout-info} See [System requirements]({{ site.baseurl }}/guides/v2.4/install-gde/system-requirements.html) in the _Installation guide_ for recommended versions. For Staging and Production environments, you use the Fastly CDN module for Magento 2 for CDN and caching services. See [Configure Fastly services]({{ site.baseurl }}/cloud/cdn/cloud-fastly.html#fastly-cdn-module-for-magento-2). @@ -83,7 +88,7 @@ To get started as a developer in a {{site.data.var.ece}} project, you need to se * Set up a [local Docker development environment]({{ site.baseurl }}/cloud/docker/docker-development.html). - {{ site.data.var.ece }} environments are **Read Only**, including all Starter environments and all Pro Integration, Staging, and Production environments. In a local development environment, you can write and test code prior to pushing it to an Integration environment for further testing, followed by deployment to Staging and Production. + {{ site.data.var.ece }} environments are **Read Only**, including all Starter environments and all Pro Integration, Staging, and Production environments. In a local development environment, you write and test code before pushing it to an Integration environment for further testing, followed by deployment to Staging and Production. In the local development environment, you develop in branches to add modules, extensions, third-party integrations, and configurations. We recommend reading over develop and deploy process for your [Starter]({{ site.baseurl }}/cloud/architecture/starter-develop-deploy-workflow.html) or [Pro]({{ site.baseurl }}/cloud/architecture/pro-develop-deploy-workflow.html) plan. @@ -109,20 +114,20 @@ Before you test any custom code in your local {{site.data.var.ee}} environment, ## Development and testing {#cloud-req-devtest} -For development and testing, we recommend the following: +For development and testing, Adobe recommends the following: * Test your site in an Integration (development) and Staging (near-production) environment as you complete modifications - You can enable and test individual features, new extensions, and third-party integration on different environments prior to merging into a single environment. + You can enable and test individual features, new extensions, and third-party integrations on different environments before you merge into a single environment. * Verify [`magento setup:install`]({{ site.baseurl }}/guides/v2.3/install-gde/install/cli/install-cli-install.html) and [`magento setup:upgrade`](https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/implementation/perform-upgrade.html) commands work during the build and deploy process and that any extensions and customizations compile correctly in [Production mode]({{ site.baseurl }}/guides/v2.3/config-guide/bootstrap/magento-modes.html#production-mode) You can set an environment variable or enter a CLI command for this specific mode. -* Fully [test your site]({{ site.baseurl }}/cloud/live/stage-prod-test.html) in Staging as a merchant and customer prior to Production deployment -* [Set up Fastly]({{ site.baseurl }}/cloud/cdn/configure-fastly.html) and verify that the Fastly VCL is uploaded -* Before you begin the site launch process, submit a support ticket to provide all storefront domains and subdomains for Staging and Production environments. This information is required to provision SSL/TLS certificates for each environment. See [Information you need to launch your site]({{ site.baseurl }}/cloud/live/live.html#prerequisites-for-site-launch). -* For custom deploy hooks in Integration, submit a Support ticket to add the hooks to the Staging and Production deployment process +* Fully [test your site]({{ site.baseurl }}/cloud/live/stage-prod-test.html) in Staging as a merchant and as a customer before deployment to Production +* [Set up Fastly]({{ site.baseurl }}/cloud/cdn/configure-fastly.html) and verify that the Fastly Varnish Configuration Language (VCL) is uploaded +* Before you begin the site launch process, submit a support ticket to provide all storefront domains and subdomains for Staging and Production environments. This information is required to provision SSL/TLS certificates for each environment. See [Information that you need to launch your site]({{ site.baseurl }}/cloud/live/live.html#prerequisites-for-site-launch). +* For custom deploy hooks in Integration, submit a [Support ticket](https://support.magento.com/hc/en-us/articles/360000913794#support-tickets) to add the hooks to the Staging and Production deployment process. ## License and authentication requirements @@ -130,7 +135,7 @@ When you purchase a {{site.data.var.ece}} subscription, Adobe creates an account To work with and deploy stores, you need the following: -* A [{{site.data.var.ece}} account]({{ site.baseurl }}/cloud/onboarding/onboarding-tasks.html#cloud-first-acct) already created or created via an invitation +* A [{{site.data.var.ece}} account]({{ site.baseurl }}/cloud/onboarding/onboarding-tasks.html#cloud-first-acct) already created or created through an invitation * [Project invitation]({{ site.baseurl }}/cloud/onboarding/onboarding-tasks.html#users) for contributing developers from the Account Owner or a super user * [Authentication keys]({{ site.baseurl }}/guides/v2.3/install-gde/prereq/connect-auth.html) for each user who contributes to the project diff --git a/src/cloud/setup/first-time-deploy.md b/src/cloud/setup/first-time-deploy.md index 8eeaba4acdf..77b9caa64e4 100644 --- a/src/cloud/setup/first-time-deploy.md +++ b/src/cloud/setup/first-time-deploy.md @@ -7,6 +7,8 @@ functional_areas: - Cloud - Setup - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/launch/overview.html +status: migrated --- {:.ref-header} diff --git a/src/cloud/setup/first-time-setup-import-first-steps.md b/src/cloud/setup/first-time-setup-import-first-steps.md index d22054edfcd..ea52ad0188c 100755 --- a/src/cloud/setup/first-time-setup-import-first-steps.md +++ b/src/cloud/setup/first-time-setup-import-first-steps.md @@ -4,6 +4,8 @@ title: Import existing code into a project functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/staging-production.html +status: migrated --- You can create a {{site.data.var.ece}} project from a blank template or by importing existing code. We recommend starting with a blank template first, and then importing existing code on top of it. diff --git a/src/cloud/setup/first-time-setup-import-import.md b/src/cloud/setup/first-time-setup-import-import.md index a82459f1d72..123d8ec8a6a 100755 --- a/src/cloud/setup/first-time-setup-import-import.md +++ b/src/cloud/setup/first-time-setup-import-import.md @@ -4,6 +4,8 @@ title: Import code functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/staging-production.html +status: migrated --- Use the following instructions to import your {{site.data.var.ee}} code into a current {{ site.data.var.ece }} environment. @@ -226,7 +228,7 @@ For your system to be fully functional, you must also set unsecure and secure UR The {{site.data.var.ee}} encryption key is required as an environment variable in `env.php` for Integration, Staging, and Production environments. If you deployed {{site.data.var.ee}} when first creating a project across all environments, the encryption key should have been saved to `env.php`. If you have not deployed previously, you should verify and add the encryption key if needed in every environment. Without this key, the store encounters authentication and authorization errors such as payments and shipping. -You copied the key in a [previous step]({{ site.baseurl }}/cloud/setup/first-time-setup-import-prepare.html#encryption-key). +You copied the key in a [previous step]({{ site.baseurl }}/cloud/setup/first-time-setup-import-prepare.html). {:.procedure} To add your {{site.data.var.ee}} encryption key using the `CRYPT_KEY` environment variable: @@ -250,7 +252,7 @@ To add your {{site.data.var.ee}} encryption key to the `env.php` file for each e 1. Open the `app/etc/env.php` file in a text editor. -1. Replace the existing value of `key` with your [{{site.data.var.ee}} key]({{ site.baseurl }}/cloud/setup/first-time-setup-import-prepare.html#encryption-key). +1. Replace the existing value of `key` with your [{{site.data.var.ee}} key]({{ site.baseurl }}/cloud/setup/first-time-setup-import-prepare.html). ```php?start_inline=1 return array ( diff --git a/src/cloud/setup/first-time-setup-import-prepare.md b/src/cloud/setup/first-time-setup-import-prepare.md index c2aaf7b1258..cb3549f1509 100755 --- a/src/cloud/setup/first-time-setup-import-prepare.md +++ b/src/cloud/setup/first-time-setup-import-prepare.md @@ -4,6 +4,8 @@ title: Prepare your existing system functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/project/overview.html +status: migrated --- You need to prepare your existing {{site.data.var.ee}} implementation to import it into a new {{site.data.var.ece}} project. This includes updating and adding files, transferring media files, and migrating data. diff --git a/src/cloud/setup/first-time-setup.md b/src/cloud/setup/first-time-setup.md index 050bad062dc..896bf30372b 100644 --- a/src/cloud/setup/first-time-setup.md +++ b/src/cloud/setup/first-time-setup.md @@ -6,6 +6,8 @@ redirect_from: functional_areas: - Cloud - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/overview.html +status: migrated --- {{site.data.var.ece}} environments are **Read Only**, including all Starter environments and all Pro Integration, Staging, and Production environments. In a local development environment, you can write and test code prior to pushing it to an Integration environment for further testing and deployment to Staging and Production. You must develop in a local workspace using a cloned Integration environment and push changes to the remote, read-only {{site.data.var.ece}} Git repository. You can choose one of two methods: diff --git a/src/cloud/trouble/robots-sitemap.md b/src/cloud/trouble/robots-sitemap.md index 4b1523bed3d..ec98155c9e8 100644 --- a/src/cloud/trouble/robots-sitemap.md +++ b/src/cloud/trouble/robots-sitemap.md @@ -4,6 +4,8 @@ title: Add site map and search engine robots functional_areas: - Cloud - Configuration +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/robots-sitemap.html +status: migrated --- An attempt to generate and write the `sitemap.xml` file to the root directory results in the following error: @@ -114,3 +116,6 @@ In the `sitemap` admin config, you must specify the location of the file using ` To activate `robots.txt` customizations, you must enable the **Indexing by search engines is On for ** option in your project settings. ![Use the Project Web Interface to manage environments]({{ site.baseurl }}/common/images/cloud/cloud_project-robots-indexing-by-search-engine.png) + +{:.bs-callout-info} +If you are using PWA Studio and are unable to access your configured `robots.txt` file, add `robots.txt` to the [Front Name Allowlist](https://github.com/magento/magento2-upward-connector#front-name-allowlist) at **Stores** > Configuration > **General** > **Web** > UPWARD PWA Configuration. diff --git a/src/cloud/trouble/trouble-crypt-key-variable.md b/src/cloud/trouble/trouble-crypt-key-variable.md index 7989b9edeff..e2d1f97c5ba 100644 --- a/src/cloud/trouble/trouble-crypt-key-variable.md +++ b/src/cloud/trouble/trouble-crypt-key-variable.md @@ -13,7 +13,7 @@ For a new Starter project, the {{site.data.var.ee}} encryption key is on your `m For a new Pro project starting with a "blank site" {{site.data.var.ece}} template, the {{site.data.var.ee}} encryption key is on the Integration `master` branch and environment until you [initially deploy]({{ site.baseurl }}/cloud/setup/first-time-deploy.html) across all environments. -If you have imported data from an existing installation into {{site.data.var.ece}}, you need to [copy the key]({{ site.baseurl }}/cloud/setup/first-time-setup-import-prepare.html#encryption-key) and [deploy it]({{ site.baseurl }}/cloud/setup/first-time-setup-import-import.html#encryption-key) to the environments. +If you have imported data from an existing installation into {{site.data.var.ece}}, you need to [copy the key]({{ site.baseurl }}/cloud/setup/first-time-setup-import-prepare.html) and [deploy it]({{ site.baseurl }}/cloud/setup/first-time-setup-import-import.html#encryption-key) to the environments. ### Encryption key not in all environments {#cloud-trouble-nocrypt} @@ -28,7 +28,7 @@ To verify and update the encryption key environment variable: ``` 1. Open `app/etc/env.php` in a text editor. -1. Verify the existing value of `key` for `crypt`. The value should be your [{{site.data.var.ee}} key]({{ site.baseurl }}/cloud/setup/first-time-setup-import-prepare.html#encryption-key). +1. Verify the existing value of `key` for `crypt`. The value should be your [{{site.data.var.ee}} key]({{ site.baseurl }}/cloud/setup/first-time-setup-import-prepare.html). ```php?start_inline=1 return array ( diff --git a/src/cloud/trouble/trouble.md b/src/cloud/trouble/trouble.md index 260911ef711..19fe59b6ff6 100644 --- a/src/cloud/trouble/trouble.md +++ b/src/cloud/trouble/trouble.md @@ -4,6 +4,8 @@ title: Troubleshooting functional_areas: - Cloud - Help +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/best-practices.html +status: migrated --- The troubleshooting topics help to resolve specific issues with your {{site.data.var.ece}} project. Before submitting a Support ticket, check the following: diff --git a/src/cloud/trouble/trouble_comp-deploy-fail.md b/src/cloud/trouble/trouble_comp-deploy-fail.md index 74b596c9ed0..1e7e9959f26 100644 --- a/src/cloud/trouble/trouble_comp-deploy-fail.md +++ b/src/cloud/trouble/trouble_comp-deploy-fail.md @@ -4,6 +4,8 @@ title: Component deployment failure functional_areas: - Cloud - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/recover-failed-deployment.html +status: migrated --- This topic discusses how to recover from a failed component deployment. Typical examples include components that have dependencies that are not met by your environment, such as incompatible PHP versions. diff --git a/src/cloud/trouble/troubleshoot-deployment.md b/src/cloud/trouble/troubleshoot-deployment.md index cd92f0a4436..0864c3da314 100644 --- a/src/cloud/trouble/troubleshoot-deployment.md +++ b/src/cloud/trouble/troubleshoot-deployment.md @@ -7,6 +7,8 @@ redirect_to: https://support.magento.com/hc/en-us/articles/4411647469965 functional_areas: - Cloud - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/deploy/recover-failed-deployment.html +status: migrated --- This topic discusses how to recover if you deployed the {{site.data.var.ee}} application with the incorrect [authentication keys]({{ site.baseurl }}/guides/v2.3/install-gde/prereq/connect-auth.html). For example, you might have used the keys for another account or you might have used {{site.data.var.ce}} keys instead of {{site.data.var.ee}} keys. diff --git a/src/codelinks/attributes.md b/src/codelinks/attributes.md index a492eaabfc6..56b3fbe2dec 100644 --- a/src/codelinks/attributes.md +++ b/src/codelinks/attributes.md @@ -1,6 +1,9 @@ --- layout: full-width title: Retrieving detailed attributes +group: rest-api +redirect_to: https://developer.adobe.com/commerce/webapi/rest/attributes +status: migrated --- Swagger and other types of code-generated documentation erroneously indicate several APIs that @@ -8,6 +11,9 @@ search across multiple objects return detailed information about individual obje This document lists the PHP, REST, and SOAP calls that indicate they return detailed information, but might not. It also provides the call that returns the detailed data. +{:.bs-callout-info} +If the attribute is not required (is_required = false) and has a null value, then the attribute is excluded from the REST/SOAP response. + ## Customer module {#Customer} ### Magento\Customer\Api\CustomerRepositoryInterface {#CustomerRepositoryInterface} diff --git a/src/common/fonts/LICENSE.txt b/src/common/fonts/LICENSE.txt index d6456956733..62589edd12a 100755 --- a/src/common/fonts/LICENSE.txt +++ b/src/common/fonts/LICENSE.txt @@ -1,7 +1,7 @@ Apache License Version 2.0, January 2004 - http://www.apache.org/licenses/ + https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -193,7 +193,7 @@ you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/src/common/images/cloud/cloud-new-relic-fastly-log-attribute-filter.png b/src/common/images/cloud/cloud-new-relic-fastly-log-attribute-filter.png index 2c9f64b2692..946ad0f0706 100644 Binary files a/src/common/images/cloud/cloud-new-relic-fastly-log-attribute-filter.png and b/src/common/images/cloud/cloud-new-relic-fastly-log-attribute-filter.png differ diff --git a/src/common/images/cloud/cloud-new-relic-log-query-has-ident.png b/src/common/images/cloud/cloud-new-relic-log-query-has-ident.png index 8dafdd36b43..8f9b1f311ee 100644 Binary files a/src/common/images/cloud/cloud-new-relic-log-query-has-ident.png and b/src/common/images/cloud/cloud-new-relic-log-query-has-ident.png differ diff --git a/src/common/images/cloud/cloud-new-relic-logs-has-client_ip-fastly.png b/src/common/images/cloud/cloud-new-relic-logs-has-client_ip-fastly.png deleted file mode 100644 index fdba5b7cebc..00000000000 Binary files a/src/common/images/cloud/cloud-new-relic-logs-has-client_ip-fastly.png and /dev/null differ diff --git a/src/common/images/cloud/cloud-newrelic-dashboard-logs-access.png b/src/common/images/cloud/cloud-newrelic-dashboard-logs-access.png deleted file mode 100644 index cfda332e735..00000000000 Binary files a/src/common/images/cloud/cloud-newrelic-dashboard-logs-access.png and /dev/null differ diff --git a/src/common/images/cloud/cloud_arch-starter.png b/src/common/images/cloud/cloud_arch-starter.png index a5fd3c9dacd..81238807e32 100644 Binary files a/src/common/images/cloud/cloud_arch-starter.png and b/src/common/images/cloud/cloud_arch-starter.png differ diff --git a/src/common/images/cloud/cloud_pro-branch-architecture.png b/src/common/images/cloud/cloud_pro-branch-architecture.png index 4dd1b38d587..b6ac006b8bd 100644 Binary files a/src/common/images/cloud/cloud_pro-branch-architecture.png and b/src/common/images/cloud/cloud_pro-branch-architecture.png differ diff --git a/src/common/images/contribute-prerequisites.png b/src/common/images/contribute-prerequisites.png new file mode 100644 index 00000000000..f741de43661 Binary files /dev/null and b/src/common/images/contribute-prerequisites.png differ diff --git a/src/common/images/contribute-write-submit-pr.png b/src/common/images/contribute-write-submit-pr.png new file mode 100644 index 00000000000..b929f8ef09c Binary files /dev/null and b/src/common/images/contribute-write-submit-pr.png differ diff --git a/src/common/images/phpstorm/download-from-jetbrains.png b/src/common/images/phpstorm/download-from-jetbrains.png new file mode 100644 index 00000000000..ab55055e758 Binary files /dev/null and b/src/common/images/phpstorm/download-from-jetbrains.png differ diff --git a/src/common/images/phpstorm/enable-magento-integration.png b/src/common/images/phpstorm/enable-magento-integration.png new file mode 100644 index 00000000000..6c7c5aa7b6a Binary files /dev/null and b/src/common/images/phpstorm/enable-magento-integration.png differ diff --git a/src/common/images/phpstorm/install-through-phpstorm.png b/src/common/images/phpstorm/install-through-phpstorm.png new file mode 100644 index 00000000000..ac6004ca9b9 Binary files /dev/null and b/src/common/images/phpstorm/install-through-phpstorm.png differ diff --git a/src/community/best-practices.md b/src/community/best-practices.md index 5797b84c2f4..9e68a2e3448 100644 --- a/src/community/best-practices.md +++ b/src/community/best-practices.md @@ -3,8 +3,8 @@ group: community title: Community contributed best practices redirect_from: - /community/resources/best-practices.html -migrated_to: https://developer.adobe.com/commerce/contributor/community/best-practices/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/community/best-practices/ +status: migrated --- This section covers a broad scope of Community contributed best and leading practices, common solutions, and recommendations for Magento. diff --git a/src/community/contribution-day-organizer-handbook.md b/src/community/contribution-day-organizer-handbook.md index 210dd189703..7b5d3b9abbd 100644 --- a/src/community/contribution-day-organizer-handbook.md +++ b/src/community/contribution-day-organizer-handbook.md @@ -3,8 +3,8 @@ group: community title: Contribution Day Organizer's Handbook redirect_from: - /community/resources/contribution-day-organizer-handbook.html -migrated_to: https://developer.adobe.com/commerce/contributor/community/organizer-handbook/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/community/organizer-handbook/ +status: migrated --- Thank you for taking the time to organize a Magento Contribution Day! This handbook aims to answer any questions you have on the matter, but if you still have questions feel free to email the Community Engineering team: `engcom@adobe.com`. diff --git a/src/community/contribution-programs.md b/src/community/contribution-programs.md index 6ea1d834d4c..1895b9c804e 100644 --- a/src/community/contribution-programs.md +++ b/src/community/contribution-programs.md @@ -1,8 +1,8 @@ --- group: community title: Contribution programs -migrated_to: https://developer.adobe.com/commerce/contributor/community/contribution-programs/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/community/contribution-programs/ +status: migrated --- Adobe is pleased to provide a Solution Partners program for partners. diff --git a/src/community/resources.md b/src/community/resources.md index 7506faa2a6e..8097cb8cdc2 100644 --- a/src/community/resources.md +++ b/src/community/resources.md @@ -3,8 +3,8 @@ group: community title: Community Resources redirect_from: - /community/resources/resources.html -migrated_to: https://developer.adobe.com/commerce/contributor/community/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/community/ +status: migrated --- ## Magento DevBlog diff --git a/src/community/support.md b/src/community/support.md index 28cd1b0c753..5af5faee635 100644 --- a/src/community/support.md +++ b/src/community/support.md @@ -5,8 +5,8 @@ subgroup: resources title: Adobe Commerce Support redirect_from: - /community/resources/support.html -migrated_to: https://developer.adobe.com/commerce/contributor/community/support/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/community/support/ +status: migrated --- If you have issues, receive error messages, or need additional How To's, see our [{{site.data.var.ee}} Support Knowledge Base](https://support.magento.com). The knowledge base includes a growing amount of troubleshooting, how to, and FAQ articles for Magento 2 Commerce, Commerce (Cloud), and Open Source. We are constantly adding new content for Magento platform, services, modules, and much more. diff --git a/src/compliance/industry-compliance.md b/src/compliance/industry-compliance.md index 883fd948f9c..140b9e86a0e 100644 --- a/src/compliance/industry-compliance.md +++ b/src/compliance/industry-compliance.md @@ -1,6 +1,8 @@ --- group: compliance title: Industry Compliance +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/security-and-compliance/overview.html +status: migrated --- Merchants are obligated to meet industry guidelines for maintaining a secure environment, legal requirements in their jurisdiction, and best practices for online commerce. To learn more from a business perspective, see the [Industry Compliance](https://docs.magento.com/m2/ee/user_guide/stores/compliance-industry.html) section in the _{{site.data.var.ee}} User Guide_. diff --git a/src/compliance/privacy/__adobe-privacy-js-library.md b/src/compliance/privacy/__adobe-privacy-js-library.md index f78b83205ce..012527d65ca 100644 --- a/src/compliance/privacy/__adobe-privacy-js-library.md +++ b/src/compliance/privacy/__adobe-privacy-js-library.md @@ -1,6 +1,8 @@ --- group: compliance title: Adobe Privacy JavaScript Library +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/security-and-compliance/privacy/adobe-javascript-library.html +status: migrated --- diff --git a/src/compliance/privacy/ccpa.md b/src/compliance/privacy/ccpa.md index 24b23cb5f29..55fb45d7d94 100644 --- a/src/compliance/privacy/ccpa.md +++ b/src/compliance/privacy/ccpa.md @@ -1,6 +1,8 @@ --- group: compliance title: California Consumer Privacy Act +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/security-and-compliance/privacy/ccpa.html +status: migrated --- {:.bs-callout-info} diff --git a/src/compliance/privacy/gdpr.md b/src/compliance/privacy/gdpr.md index 9d152ac9a69..56dc5a614c9 100644 --- a/src/compliance/privacy/gdpr.md +++ b/src/compliance/privacy/gdpr.md @@ -1,6 +1,8 @@ --- group: compliance title: General Data Protection Regulation +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/security-and-compliance/privacy/gdpr.html +status: migrated --- {: .bs-callout-info} diff --git a/src/compliance/privacy/magento-privacy-js-library.md b/src/compliance/privacy/magento-privacy-js-library.md index 938294172a6..8c0a798880c 100644 --- a/src/compliance/privacy/magento-privacy-js-library.md +++ b/src/compliance/privacy/magento-privacy-js-library.md @@ -1,6 +1,8 @@ --- group: compliance title: Privacy JavaScript Library +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/security-and-compliance/privacy/javascript-library.html +status: migrated --- diff --git a/src/compliance/privacy/pi-data-reference-m1.md b/src/compliance/privacy/pi-data-reference-m1.md index 4089c3240e0..b58b8d326b6 100644 --- a/src/compliance/privacy/pi-data-reference-m1.md +++ b/src/compliance/privacy/pi-data-reference-m1.md @@ -1,6 +1,8 @@ --- group: compliance title: Personal Information Reference (Magento 1.x) +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/security-and-compliance/reference/data-m1.html +status: migrated --- {: .bs-callout-info} diff --git a/src/compliance/privacy/pi-data-reference-m2.md b/src/compliance/privacy/pi-data-reference-m2.md index ef2cfc509a5..554bf2d6d3a 100644 --- a/src/compliance/privacy/pi-data-reference-m2.md +++ b/src/compliance/privacy/pi-data-reference-m2.md @@ -1,6 +1,8 @@ --- group: compliance title: Personal Information Reference (Magento 2.x) +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/security-and-compliance/reference/data-m2.html +status: migrated --- {: .bs-callout-info} @@ -57,7 +59,7 @@ Magento 2 can be figured to store the following customer attributes: - Name Suffix {:.bs-callout-info} -In keeping with current security and privacy best practices, be sure you are aware of any potential legal and security risks associated with the storage of customers’ full date of birth (month, day, year) along with other personal identifiers, such as full name, before collecting or processing such data. +In keeping with current security and privacy best practices, be sure you are aware of any potential legal and security risks associated with the storage of customers' full date of birth (month, day, year) along with other personal identifiers, such as full name, before collecting or processing such data. #### `customer_entity` and 'customer_entity' references diff --git a/src/contributor-guide/backward-compatible-development/index.md b/src/contributor-guide/backward-compatible-development/index.md index e63cb3d9ddd..f436d0c73c5 100644 --- a/src/contributor-guide/backward-compatible-development/index.md +++ b/src/contributor-guide/backward-compatible-development/index.md @@ -4,8 +4,8 @@ title: Backward compatible development redirect_from: - guides/v2.3/contributor-guide/backward-compatible-development/index.html - guides/v2.4/contributor-guide/backward-compatible-development/index.html -migrated_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/backward-compatibility-policy/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/backward-compatibility-policy/ +status: migrated --- This page describes rules and best practices for backward compatible development. diff --git a/src/contributor-guide/contributing.md b/src/contributor-guide/contributing.md index 97fc92ca887..54ada9763ae 100644 --- a/src/contributor-guide/contributing.md +++ b/src/contributor-guide/contributing.md @@ -4,12 +4,12 @@ title: Code Contributions redirect_from: - guides/v2.3/contributor-guide/contributing.html - guides/v2.4/contributor-guide/contributing.html -migrated_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/ +status: migrated --- {:.bs-callout-tip} -Connect with Magento Contributors and Maintainers to learn more about Magento contributions and special projects. Join us in our [Slack workspace](https://opensource.magento.com/slack), in the [#general](https://magentocommeng.slack.com/archives/C4YS78WE6) channel, follow the [#announcements](https://magentocommeng.slack.com/archives/C7FA71S3V), and browse for more [channels]({{ site.baseurl }}/community/resources/resources.html#community-engineering-slack)! +Connect with Magento Contributors and Maintainers to learn more about Magento contributions and special projects. Join us in our [Slack workspace](https://opensource.magento.com/slack), in the [#general](https://magentocommeng.slack.com/archives/C4YS78WE6) channel, follow the [#announcements](https://magentocommeng.slack.com/archives/C7FA71S3V), and browse for more [channels]({{ site.baseurl }}/community/resources/resources.html)! ## Contribute to Magento 2 code {#contribute} @@ -183,7 +183,6 @@ Currently, the Magento Contributor Assistant automatically deploys a test instan - [Deploy vanilla Magento instance](#vanilla-pr) - [Deploy instance based on PR changes](#deploy-pr) -- [Combine multiple pull requests](#combine-pr) ### Deploy vanilla Magento instance {#vanilla-pr} @@ -337,7 +336,7 @@ Before creating an issue, do the following: - Check the [Developer Documentation]({{ site.baseurl }}/) and [User Guide]({{ site.user_guide_url }}/getting-started.html) to make sure the behavior you are reporting is really a bug, not a feature. - Check the [existing issues](https://github.com/magento/magento2/issues) to make sure you are not duplicating somebody’s work. -- Ensure that information you are reporting is a technical issue. Refer to the [Community Forums](https://community.magento.com/) or [Magento Stack Exchange](http://magento.stackexchange.com/) for technical questions, feature requests, etc. +- Ensure that information you are reporting is a technical issue. Refer to the [Community Forums](https://community.magento.com/) or [Magento Stack Exchange](https://magento.stackexchange.com//) for technical questions, feature requests, etc. - Verify that the issue you are reporting does not relate to {{site.data.var.ee}}. GitHub is intended for {{site.data.var.ce}} users to report on issues related to Open Source only. You can report Commerce-related issues one of two ways: - Use the Support portal associated with your account diff --git a/src/contributor-guide/contributing_dod.md b/src/contributor-guide/contributing_dod.md index c6e0b85ffe8..256bf662319 100644 --- a/src/contributor-guide/contributing_dod.md +++ b/src/contributor-guide/contributing_dod.md @@ -4,8 +4,8 @@ title: Commerce Definition of Done redirect_from: - guides/v2.3/contributor-guide/contributing_dod.html - guides/v2.4/contributor-guide/contributing_dod.html -migrated_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/definition-of-done/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/definition-of-done/ +status: migrated --- ## Overview diff --git a/src/contributor-guide/contributors.md b/src/contributor-guide/contributors.md index 288600a861f..bc0c284db78 100644 --- a/src/contributor-guide/contributors.md +++ b/src/contributor-guide/contributors.md @@ -5,8 +5,8 @@ redirect_from: - contributor-guide/quarterly-contributors.html - guides/v2.3/contributor-guide/contributors.html - guides/v2.4/contributor-guide/contributors.html -migrated_to: https://developer.adobe.com/commerce/contributor/guides/contributors/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/contributors/ +status: migrated --- Many thanks to our community members, partners, and Magento fans who contribute to our open source projects. diff --git a/src/contributor-guide/maintainer-handbook.md b/src/contributor-guide/maintainer-handbook.md index 3dca05764ba..9d15e877c77 100644 --- a/src/contributor-guide/maintainer-handbook.md +++ b/src/contributor-guide/maintainer-handbook.md @@ -1,8 +1,8 @@ --- group: contributor-guide title: Maintainer's Handbook -migrated_to: https://developer.adobe.com/commerce/contributor/guides/maintainers/handbook/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/maintainers/handbook/ +status: migrated --- This document describes activities performed by a community maintainer, provides some insight and description of the tools integrated within GitHub to assist our maintainers. @@ -75,7 +75,7 @@ Once all the steps above are complete, the maintainer can approve the contributo #### Set award labels -We are thankful for all contributions, and we recognize our most active members. Contributors earn points in numerous ways with a focus on PRs in the backlog and special projects. We use labels to highlight the different types of achievements. We encourage maintainers to review all the [existing awards]({{ site.baseurl }}/contributor-guide/contributing.html#points) and based on the information provided decide which award is most suitable. +We are thankful for all contributions, and we recognize our most active members. Contributors earn points in numerous ways with a focus on PRs in the backlog and special projects. We use labels to highlight the different types of achievements. We encourage maintainers to review all the [existing awards]({{ site.baseurl }}/contributor-guide/contributing.html) and based on the information provided decide which award is most suitable. ![Set Award Labels]({{ site.baseurl }}/contributor-guide/img/award-labels.png) diff --git a/src/contributor-guide/maintainers.md b/src/contributor-guide/maintainers.md index 3ae9a9d8b84..926bc94f6b4 100644 --- a/src/contributor-guide/maintainers.md +++ b/src/contributor-guide/maintainers.md @@ -4,8 +4,8 @@ title: Maintainers redirect_from: - guides/v2.3/contributor-guide/maintainers.html - guides/v2.4/contributor-guide/maintainers.html -migrated_to: https://developer.adobe.com/commerce/contributor/guides/maintainers/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/maintainers/ +status: migrated --- Magento trusts our active community members to review pull requests and accept or reject proposed code changes. [Community Maintainers](https://magento.com/magento-contributors#maintainers) take part in discussions, reviews, and help process pull requests. diff --git a/src/contributor-guide/phpstorm-code-inspections.md b/src/contributor-guide/phpstorm-code-inspections.md index b3973863762..c78dc123333 100644 --- a/src/contributor-guide/phpstorm-code-inspections.md +++ b/src/contributor-guide/phpstorm-code-inspections.md @@ -1,8 +1,8 @@ --- group: contributor-guide title: PHPStorm plugin code inspections -migrated_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/phpstorm-code-inspections/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/phpstorm-code-inspections/ +status: migrated --- The PHPStorm plugin is a tool created by the community to optimize routine coding operations and improve the {{site.data.var.ee}} development experience. The plugin is compatible with the IntelliJ IDEA Ultimate and PhpStorm IDEs. The functionality includes {{site.data.var.ee}} specific code generation shortcuts, code inspections, autocomplete functionality for configuration files, MFTF tests, and RequireJS. diff --git a/src/contributor-guide/processing-workflow.md b/src/contributor-guide/processing-workflow.md index bf285c2d371..d4412880a27 100644 --- a/src/contributor-guide/processing-workflow.md +++ b/src/contributor-guide/processing-workflow.md @@ -1,8 +1,8 @@ --- group: contributor-guide title: GitHub issue processing workflow -migrated_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/processing-workflow/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/processing-workflow/ +status: migrated --- The GitHub issue workflow ensures that issues are clear, well written, and thoroughly vetted. Following these procedures allows valid issues to get the attention they deserve. diff --git a/src/contributor-guide/pull-request-tests.md b/src/contributor-guide/pull-request-tests.md index 7ce00119ee1..c3f38673646 100644 --- a/src/contributor-guide/pull-request-tests.md +++ b/src/contributor-guide/pull-request-tests.md @@ -1,8 +1,8 @@ --- group: contributor-guide title: Pull Request Tests -migrated_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/pull-request-tests/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/code-contributions/pull-request-tests/ +status: migrated --- ## Magento Automated Testing @@ -56,7 +56,7 @@ Database Compare is a test that compares the database schema and data between a Magento Component Health Index is a test that analyses Magento code quality and calculates a weighted health index (100 is great, lower is worse) for each Magento Component (module). The index is calculated based on three groups of indicators: -- [General code quality indicators (GCQI)](http://pdepend.org/documentation/software-metrics/index.html) +- [General code quality indicators (GCQI)](https://pdepend.org/documentation/software-metrics/index.html) - Magento-specific code quality indicators (MSCQ) - Legacy API usage indicators (LAI) diff --git a/src/contributor-guide/templates/basic_template.md b/src/contributor-guide/templates/basic_template.md index a54724aab79..55bf6a4f83a 100644 --- a/src/contributor-guide/templates/basic_template.md +++ b/src/contributor-guide/templates/basic_template.md @@ -4,6 +4,7 @@ title: Basic template redirect_from: - guides/v2.3/contributor-guide/templates/basic_template.html - guides/v2.4/contributor-guide/templates/basic_template.html +redirect_to: https://developer.adobe.com/commerce/contributor/guides/doc-contributions/ --- Introductory text that gives an overview of the topic you will be writing about. @@ -124,13 +125,13 @@ Tables can be useful for displaying different kinds of data in an organized way. | Data 4 | Data 5 | | | Data 6 | | | -You can read more about table syntax [here](http://kramdown.gettalong.org/syntax.html#tables). +You can read more about table syntax [here](https://kramdown.gettalong.org/syntax.html#tables). ## Advanced Syntax {#advanced} ### Code blocks {#code-blocks} -Code blocks can also be defined using [Rouge formatting](http://rouge.jneen.net/). View the .md file of this template for examples. +Code blocks can also be defined using [Rouge formatting](https://github.com/rouge-ruby/rouge). View the .md file of this template for examples. For inline code, surround the content with single backticks: `` `example` ``. diff --git a/src/contributor-guide/templates/tutorial-template-first.md b/src/contributor-guide/templates/tutorial-template-first.md index 4f5a0cceab6..469fb60c6e3 100644 --- a/src/contributor-guide/templates/tutorial-template-first.md +++ b/src/contributor-guide/templates/tutorial-template-first.md @@ -10,6 +10,7 @@ return_to: redirect_from: - guides/v2.3/contributor-guide/templates/tutorial-template-first.html - guides/v2.4/contributor-guide/templates/tutorial-template-first.html +redirect_to: https://developer.adobe.com/commerce/contributor/guides/doc-contributions/ --- A tutorial provides procedural information spread across multiple pages. It contains several design elements that differ from standard topics: diff --git a/src/contributor-guide/templates/tutorial-template-last.md b/src/contributor-guide/templates/tutorial-template-last.md index 6d665fd0e3a..b59760ec96d 100644 --- a/src/contributor-guide/templates/tutorial-template-last.md +++ b/src/contributor-guide/templates/tutorial-template-last.md @@ -10,6 +10,7 @@ return_to: redirect_from: - guides/v2.3/contributor-guide/templates/tutorial-template-last.html - guides/v2.4/contributor-guide/templates/tutorial-template-last.html +redirect_to: https://developer.adobe.com/commerce/contributor/guides/doc-contributions/ --- The last page of a tutorial should acknowledge the reader has completed the tutorial and provide links to related information. Otherwise, add the content as you see fit. @@ -48,9 +49,3 @@ Use a Head2 (`## Heading`) as the highest-level heading in this topic. ## Congratulations! You've finished. {:.no_toc} - -{:.ref-header} -Related topics - -* [Title of linked topic](http://example.com/index.html) -* [Link and open new tab](http://example.com/index.html) diff --git a/src/contributor-guide/templates/tutorial-template-middle.md b/src/contributor-guide/templates/tutorial-template-middle.md index 0157ee8c497..4cccf4a263b 100644 --- a/src/contributor-guide/templates/tutorial-template-middle.md +++ b/src/contributor-guide/templates/tutorial-template-middle.md @@ -10,6 +10,7 @@ return_to: redirect_from: - guides/v2.3/contributor-guide/templates/tutorial-template-middle.html - guides/v2.4/contributor-guide/templates/tutorial-template-middle.html +redirect_to: https://developer.adobe.com/commerce/contributor/guides/doc-contributions/ --- Add the content for each step as you see fit. diff --git a/src/extensions/amazon-sales/index.md b/src/extensions/amazon-sales/index.md index ea1b07c4189..5078d4af978 100644 --- a/src/extensions/amazon-sales/index.md +++ b/src/extensions/amazon-sales/index.md @@ -1,14 +1,14 @@ --- group: extensions title: Install Amazon Sales Channel -migrated_to: https://experienceleague.adobe.com/docs/commerce-channels/amazon/install.html -layout: migrated +redirect_to: https://experienceleague.adobe.com/docs/commerce-channels/amazon/getting-started/install.html +status: migrated --- {: .bs-callout-warning } Amazon Sales Channel versions 4.0+ are only supported when integrated with Magento 2.3.x versions. -The Amazon Sales Channel extension installs and adds features to integrate your Magento catalog with Amazon Seller Accounts to sell through the Amazon Marketplace. To review additional information, see the [Amazon Sales Channel Marketplace](http://marketplace.magento.com/magento-module-amazon.html) page. +The Amazon Sales Channel extension installs and adds features to integrate your Magento catalog with Amazon Seller Accounts to sell through the Amazon Marketplace. To review additional information, see the [Amazon Sales Channel Marketplace](https://marketplace.magento.com/magento-module-amazon.html) page. ## Requirements @@ -87,4 +87,4 @@ You have the following options for configuring Amazon Sales Channel. You do not 1. Click **Download**. -Complete the upgrade following the instructions [Upgrade an extension]({{site.baseurl}}/extensions/install/#upgrade-an-extension). +Complete the upgrade following the instructions [Upgrade an extension]({{site.baseurl}}/extensions/install/). diff --git a/src/extensions/amazon-sales/release-notes/index.md b/src/extensions/amazon-sales/release-notes/index.md index d0d67f18e83..3496fc5d88e 100644 --- a/src/extensions/amazon-sales/release-notes/index.md +++ b/src/extensions/amazon-sales/release-notes/index.md @@ -1,8 +1,8 @@ --- group: extensions title: Amazon Sales Channel Release Notes -migrated_to: https://experienceleague.adobe.com/docs/commerce-channels/amazon/release-notes.html -layout: migrated +redirect_to: https://experienceleague.adobe.com/docs/commerce-channels/amazon/release-notes.html +status: migrated --- {: .bs-callout-warning } Amazon Sales Channel versions 4.0.0 and 4.1.0 are only supported for {{site.data.var.ee}} 2.3.x versions.
        Amazon Sales Channel version 4.2.0 is compatible with {{site.data.var.ee}} 2.3.x versions but is only supported for {{site.data.var.ee}} 2.4.x versions. @@ -13,7 +13,7 @@ See the following documentation: - [Amazon Sales Channel](https://docs.magento.com/m2/ee/user_guide/sales-channels/asc/amazon-sales-channel.html) for merchant information and instructions - [Amazon Sales Channel install]({{site.baseurl}}/extensions/amazon-sales/) for installation and API key information -- [Amazon Sales Channel Marketplace](http://marketplace.magento.com/magento-module-amazon.html) +- [Amazon Sales Channel Marketplace](https://marketplace.magento.com/magento-module-amazon.html) The release notes include: diff --git a/src/extensions/b2b/index.md b/src/extensions/b2b/index.md index 7a9887226a9..45ba91c15a7 100644 --- a/src/extensions/b2b/index.md +++ b/src/extensions/b2b/index.md @@ -4,6 +4,8 @@ title: Install B2B ee_only: true redirect_from: - guides/v2.3/comp-mgr/install-extensions/b2b-installation.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-admin/b2b/install.html +status: migrated --- {:.bs-callout-warning} @@ -74,23 +76,19 @@ After installing the {{site.data.var.b2b}} extension, follow these instructions ### Start message consumers -The {{site.data.var.b2b}} extension uses MySQL for message queue management. If you want to enable the B2B **Shared Catalog** feature, you must start the corresponding message consumers after installation. - -1. List the available message consumers: - - ```bash - bin/magento queue:consumers:list - ``` - - You should see the following consumers: - - ```terminal - sharedCatalogUpdatePrice - sharedCatalogUpdateCategoryPermissions - quoteItemCleaner - inventoryQtyCounter - async.operations.all - ``` +The {{site.data.var.b2b}} extension uses MySQL for message queue management. The following table describes the required message consumers that you must start to use [B2B features]({{ site.user_guide_url }}/stores/b2b-features.html): + +| Consumer | Description | +|------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `sharedCatalogUpdatePrice` | Updates price for each product in a shared catalog. Required when the [**Shared Catalogs**]({{ site.user_guide_url }}/catalog/catalog-shared.html) option is enabled in the Admin system configuration settings. | +| `sharedCatalogUpdateCategoryPermissions` | Updates categories assigned to a shared catalog category. Required when the [**Shared Catalogs**]({{ site.user_guide_url }}/catalog/catalog-shared.html) option is enabled in the Admin system configuration settings. | +| `negotiableQuotePriceUpdate` | Updates prices for negotiable quotes. Required when the [**Quotes**]({{ site.user_guide_url }}/sales/quotes.html) option is enabled in the Admin system configuration settings. | +| `purchaseorder.toorder` | Converts purchase order to [order]({{ site.user_guide_url }}/stores/b2b-purchase-order-flow.html#approval-rules). Required when the [**Purchase Order**]({{ site.user_guide_url }}/payments/purchase-order.html) option is enabled in the Admin system configuration settings. | +| `purchaseorder.transactional.email` | Send purchase order emails. Required when the [**Purchase Order**]({{ site.user_guide_url }}/payments/purchase-order.html) option is enabled in the Admin system configuration settings. | +| `purchaseorder.validation` | Validates purchase order against relevant [approval rules]({{ site.user_guide_url }}/customers/account-dashboard-approval-rules.html). Required when the [**Purchase Order**]({{ site.user_guide_url }}/payments/purchase-order.html) option is enabled in the Admin system configuration settings. | +| `quoteItemCleaner` | Deletes invalid or inactive price quotes when a product is deleted from the catalog or removed from the cart. Required when the [**Quotes**]({{ site.user_guide_url }}/sales/quotes.html) option is enabled in the Admin system configuration settings. | +| `inventoryQtyCounter` | Asynchronously corrects the stock index after an order is placed or a product is removed. Required when the [**Use deferred stock update**]({{ site.user_guide_url }}/configuration/catalog/inventory.html#product-stock-options) option is enabled in the Admin configuration settings. See [Performance Best Practices](https://experienceleague.adobe.com/docs/commerce-operations/performance-best-practices/configuration.html#deferred-stock-update). | +| `async.operations.all` | Creates messages for each individual task of a [bulk operation](https://developer.adobe.com/commerce/php/development/components/message-queues/bulk-operations/), such as importing or exporting items, changing prices on a mass scale, and assigning products to a warehouse. Required when the [**Admin bulk operations**]({{ site.user_guide_url }}/configuration/catalog/inventory.html?#admin-bulk-operations) option is set to **Run asynchronously** in the Admin system configuration settings. | 1. Start each consumer separately: diff --git a/src/extensions/index.md b/src/extensions/index.md index cbeba537548..90633b4a2ef 100644 --- a/src/extensions/index.md +++ b/src/extensions/index.md @@ -1,6 +1,8 @@ --- group: extensions title: Introduction +redirect_to: https://experienceleague.adobe.com/docs/commerce-admin/start/resources/extensions.html +status: migrated --- Extensions allow you to add custom features, functionality, services, and integrations to your Admin and storefront. Extension developers package and install custom code as extensions, modules, components, addons, etc. You can design and develop extensions or purchase and install extensions from the Commerce Marketplace or third-party providers. diff --git a/src/extensions/install/index.md b/src/extensions/install/index.md index 99f1a03ac23..8e4223288d7 100644 --- a/src/extensions/install/index.md +++ b/src/extensions/install/index.md @@ -14,6 +14,8 @@ redirect_from: - guides/v2.3/comp-mgr/extens-man/extensman-uninst-final.html - guides/v2.3/comp-mgr/extens-man/extensman-update.html - guides/v2.3/comp-mgr/extens-man/step3-parent.html +redirect_to: + - guides/v2.4/install-gde/install/cli/extensions.html --- Code that extends or customizes {{site.data.var.ee}} and {{site.data.var.ce}} behavior is called an extension. You can optionally package and distribute extensions on the [Commerce Marketplace](https://marketplace.magento.com) or another extension distribution system. diff --git a/src/extensions/inventory-management/index.md b/src/extensions/inventory-management/index.md index 1ab5ce3f9e5..091507b3835 100644 --- a/src/extensions/inventory-management/index.md +++ b/src/extensions/inventory-management/index.md @@ -2,6 +2,8 @@ group: extensions title: Install Inventory Management redirect_from: guides/v2.3/comp-mgr/install-extensions/inventory-management-installation.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-admin/inventory/get-started/install-update.html +status: migrated --- {{site.data.var.im}} modules provide all inventory features and options for Single and Multi Source merchants to manage product quantities and stock for sales channels. These features are available in 2.3.x {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. diff --git a/src/extensions/vendor/vendor.md b/src/extensions/vendor/vendor.md index 41e1468c7b5..5ac61b61124 100644 --- a/src/extensions/vendor/vendor.md +++ b/src/extensions/vendor/vendor.md @@ -5,6 +5,8 @@ permalink: extensions/vendor/ redirect_from: - /extensions/vendor/yotpo/release-notes.html - /extensions/vendor/dotdigital/release-notes.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/modules/upgrade.html +status: migrated --- {:.bs-callout-warning} diff --git a/src/feed.xml b/src/feed.xml deleted file mode 100644 index 0b1408515cd..00000000000 --- a/src/feed.xml +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: none ---- - - - - - {{ site.title | xml_escape }} - {{ site.description | xml_escape }} - {{ site.url }} - - {{ site.time | date_to_rfc822 }} - {{ site.time | date_to_rfc822 }} - Jekyll v{{ jekyll.version }} - {% assign sorted_pages = site.html_pages | where_exp: "page", "page.tag != 'omit'"| sort:"last_modified_at" | reverse %} - {% for page in sorted_pages limit: 100 %} - - {{ page.title | xml_escape }} - {{ page.content | xml_escape | strip_html | truncatewords: 75 }} - {{ page.url | prepend: site.url }} - {{ page.last_modified_at | date_to_rfc822 }} - - {% endfor %} - - diff --git a/src/guides/v2.3/architecture/archi_perspectives/present_layer.md b/src/guides/v2.3/architecture/archi_perspectives/present_layer.md index d41a6fac09a..1982d6d6bf8 100644 --- a/src/guides/v2.3/architecture/archi_perspectives/present_layer.md +++ b/src/guides/v2.3/architecture/archi_perspectives/present_layer.md @@ -81,4 +81,4 @@ Related topics [Frontend Developer Guide]: {{page.baseurl}}/frontend-dev-guide/bk-frontend-dev-guide.html [GraphQL Developer Guide]: {{ page.baseurl }}/graphql/ -[PWA Studio docs]: http://pwastudio.io \ No newline at end of file +[PWA Studio docs]: https://developer.adobe.com/commerce/pwa-studio/ \ No newline at end of file diff --git a/src/guides/v2.3/architecture/security_intro.md b/src/guides/v2.3/architecture/security_intro.md index 0d669b65de1..bc42aa22022 100644 --- a/src/guides/v2.3/architecture/security_intro.md +++ b/src/guides/v2.3/architecture/security_intro.md @@ -24,7 +24,7 @@ The Magento Framework has adopted conventions that regulate the escaping of data Starting in version 2.0.6, Magento no longer explicitly sets file system permissions. Instead, we recommend that certain files and directories be writable in a development environment and read-only in a production environment. -To provide you with a simple way to restrict access to the file system in production, we provide the flexibility for you to further restrict those permissions using a [umask](http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html). +To provide you with a simple way to restrict access to the file system in production, we provide the flexibility for you to further restrict those permissions using a [umask](https://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html). For an overview, see [Overview of ownership and permissions]({{page.baseurl}}/install-gde/prereq/file-sys-perms-over.html). diff --git a/src/guides/v2.3/coding-standards/code-standard-demarcation.md b/src/guides/v2.3/coding-standards/code-standard-demarcation.md index 91808a72e62..e3d78b7e6b5 100644 --- a/src/guides/v2.3/coding-standards/code-standard-demarcation.md +++ b/src/guides/v2.3/coding-standards/code-standard-demarcation.md @@ -22,7 +22,7 @@ The standard was developed in the scope of our efforts to ensure the following: - Reinstate emphasis on using of [jQuery](https://glossary.magento.com/jquery) templates. - Reinstate emphasis on decoupling HTML, [CSS](https://glossary.magento.com/css) and JS from [PHP](https://glossary.magento.com/php) classes. -Use [RFC 2119](http://www.ietf.org/rfc/rfc2119.txt) to interpret the "MUST," "MUST NOT," "REQUIRED," "SHALL," "SHALL NOT," "SHOULD," "SHOULD NOT," "RECOMMENDED," "MAY," and "OPTIONAL" keywords. +Use [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt) to interpret the "MUST," "MUST NOT," "REQUIRED," "SHALL," "SHALL NOT," "SHOULD," "SHOULD NOT," "RECOMMENDED," "MAY," and "OPTIONAL" keywords. ## Semantics diff --git a/src/guides/v2.3/coding-standards/code-standard-javascript.md b/src/guides/v2.3/coding-standards/code-standard-javascript.md index eaa5bf27bfd..b319d75f924 100644 --- a/src/guides/v2.3/coding-standards/code-standard-javascript.md +++ b/src/guides/v2.3/coding-standards/code-standard-javascript.md @@ -9,7 +9,7 @@ functional_areas: Use Magento's [ESLint Rules][eslint-rules] to make sure your code adheres to Magento's coding standards. Developers writing [JavaScript](https://glossary.magento.com/javascript) and [jQuery](https://glossary.magento.com/jquery) code for Magento must adhere to these guidelines and follow the standards listed in this document. -Use [RFC 2119](http://www.ietf.org/rfc/rfc2119.txt) to interpret the "must," "must not," "required," "shall," "shall not," "should," "should not," "recommended," "may," and "optional" keywords. +Use [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt) to interpret the "must," "must not," "required," "shall," "shall not," "should," "should not," "recommended," "may," and "optional" keywords. Magento uses the [jQuery library][jquery] including standard and custom [jQuery widgets][jquery-widgets]. For the jQuery widget coding standard, see [jQuery widget coding standard][jquery-widget-coding-standard]. @@ -355,7 +355,7 @@ var foo = 'bar', ``` [jquery]: https://jquery.com/ -[jquery-widgets]: http://api.jqueryui.com/category/widgets +[jquery-widgets]: https://api.jqueryui.com/category/widgets [jquery-widget-coding-standard]: {{ page.baseurl }}/coding-standards/code-standard-jquery-widgets.html -[eslint]: http://eslint.org/ +[eslint]: https://eslint.org/ [eslint-rules]: https://github.com/magento/magento-coding-standard/blob/develop/eslint/.eslintrc-magento diff --git a/src/guides/v2.3/coding-standards/code-standard-jquery-widgets.md b/src/guides/v2.3/coding-standards/code-standard-jquery-widgets.md index 9d8d0478f0f..7bb255b6320 100644 --- a/src/guides/v2.3/coding-standards/code-standard-jquery-widgets.md +++ b/src/guides/v2.3/coding-standards/code-standard-jquery-widgets.md @@ -347,9 +347,9 @@ When a component is initialized, it is also important to send parameters to it, * Maintains proper `this` context inside the handlers, so it is not necessary to use the `$.proxy()` method. * Event handlers are automatically namespaced and cleaned up on destruction. -[jquery-ui-widget-factory]: http://jqueryui.com/widget/ -[jquery-ui-api-doc]: http://api.jqueryui.com/jQuery.widget/ -[rfc2119]: http://www.ietf.org/rfc/rfc2119.txt +[jquery-ui-widget-factory]: https://jqueryui.com/widget/ +[jquery-ui-api-doc]: https://api.jqueryui.com/jQuery.widget/ +[rfc2119]: https://www.ietf.org/rfc/rfc2119.txt [single-responsibility-principle]: https://en.wikipedia.org/wiki/Single_responsibility_principle -[dom-event-bubbling]: http://stackoverflow.com/questions/4616694/what-is-event-bubbling-and-capturing -[law-of-demeter]: http://en.wikipedia.org/wiki/Law_of_Demeter +[dom-event-bubbling]: https://stackoverflow.com/questions/4616694/what-is-event-bubbling-and-capturing +[law-of-demeter]: https://en.wikipedia.org/wiki/Law_of_Demeter diff --git a/src/guides/v2.3/coding-standards/code-standard-php.md b/src/guides/v2.3/coding-standards/code-standard-php.md index cd5890d92a1..f556c3f60e0 100644 --- a/src/guides/v2.3/coding-standards/code-standard-php.md +++ b/src/guides/v2.3/coding-standards/code-standard-php.md @@ -35,7 +35,7 @@ Learn more about using rule sets with PHP CodeSniffer [ruleset] ### Literal Namespace Rule -For class name resolution, use the [`::class`](http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class) [keyword](https://glossary.magento.com/keyword) instead of a string literal for every class name reference outside of that class. +For class name resolution, use the [`::class`](https://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class) [keyword](https://glossary.magento.com/keyword) instead of a string literal for every class name reference outside of that class. This includes references to: * Fully qualified class name @@ -57,10 +57,10 @@ The [Coding standards overview] introduces Magento-specific practices for PHP, J -[PHP_CodeSniffer]: http://pear.php.net/manual/en/package.php.php-codesniffer.faq.php -[PSR-1]: http://www.php-fig.org/psr/psr-1/ -[PSR-2]: http://www.php-fig.org/psr/psr-2/ +[PHP_CodeSniffer]: https://pear.php.net/manual/en/package.php.php-codesniffer.faq.php +[PSR-1]: https://www.php-fig.org/psr/psr-1/ +[PSR-2]: https://www.php-fig.org/psr/psr-2/ [Coding standards overview]: {{ page.baseurl }}/coding-standards/bk-coding-standards.html -[ruleset]: http://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php +[ruleset]: https://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php [ruleset.xml]: https://github.com/magento/magento-coding-standard/blob/develop/Magento2/ruleset.xml [Magento Coding Standard]: https://github.com/magento/magento-coding-standard diff --git a/src/guides/v2.3/coding-standards/docblock-standard-general.md b/src/guides/v2.3/coding-standards/docblock-standard-general.md index 23f2f281ca5..39257c723af 100644 --- a/src/guides/v2.3/coding-standards/docblock-standard-general.md +++ b/src/guides/v2.3/coding-standards/docblock-standard-general.md @@ -12,7 +12,7 @@ Some parts of Magento code might not comply with this standard, but we are worki Following these standards is optional for third-party Magento developers, but doing so helps to create consistent, clean, and easy to read inline documentation. -Use [RFC 2119](http://www.ietf.org/rfc/rfc2119.txt) to interpret the "MUST," "MUST NOT," "REQUIRED," "SHALL," "SHALL NOT," "SHOULD," "SHOULD NOT," "RECOMMENDED," "MAY," and "OPTIONAL keywords." +Use [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt) to interpret the "MUST," "MUST NOT," "REQUIRED," "SHALL," "SHALL NOT," "SHOULD," "SHOULD NOT," "RECOMMENDED," "MAY," and "OPTIONAL keywords." ## Scope of the standard {#scope} @@ -168,7 +168,7 @@ interface MetadataObjectInterface ## Code structural elements {#code-elements} -A structural element is defined in [phpDocumentor](http://phpdoc.org/) as part of the imperative source code, such as PHP or JavaScript, or procedural SQL. +A structural element is defined in [phpDocumentor](https://phpdoc.org/) as part of the imperative source code, such as PHP or JavaScript, or procedural SQL. For example: * namespace @@ -660,7 +660,7 @@ The `@api` tag can be applied to a constant, a method, or to the entire class/in If the `@api` tag is applied at the file level, then all methods within the file are part of the public [API](https://glossary.magento.com/api). You do not need to annotate each method individually. -See [Semantic Versioning 2.0.0](http://semver.org/) for information about changing and updating code while maintaining backward compatibility. +See [Semantic Versioning 2.0.0](https://semver.org/) for information about changing and updating code while maintaining backward compatibility. ### @deprecated tag {#deprecated} diff --git a/src/guides/v2.3/coding-standards/docblock-standard-javascript.md b/src/guides/v2.3/coding-standards/docblock-standard-javascript.md index d3af74620f3..ad1c5a49aa7 100644 --- a/src/guides/v2.3/coding-standards/docblock-standard-javascript.md +++ b/src/guides/v2.3/coding-standards/docblock-standard-javascript.md @@ -14,7 +14,7 @@ functional_areas: To add [JavaScript](https://glossary.magento.com/javascript) code inline documentation, follow these guidelines. Some parts of Magento code may not comply with this standard, but we are working to gradually improve this. Following these standard is optional for 3rd-party Magento developers, but will help to create consistent, clean, and easy to read inline documentation. This standard are a subset of [Google JavaScript Style Guide](https://google.github.io/styleguide/javascriptguide.xml) regulations. -Use [RFC 2119](http://www.ietf.org/rfc/rfc2119.txt) to interpret the "must," "must not," "required," "shall," "shall not," "should," "should not," "recommended," "may," and "optional" keywords. +Use [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt) to interpret the "must," "must not," "required," "shall," "shall not," "should," "should not," "recommended," "may," and "optional" keywords. ## Use JSDoc {#frontend-dev-guide-javascript-js-coding-docblock-use} @@ -388,7 +388,7 @@ new Date() An array of numbers - Array.> + Array.<Array.<string>>
        [['one', 'two', 'three'], ['foo', 'bar']]
        Array of arrays of strings @@ -404,7 +404,7 @@ new Date() An object. In the object, the values are strings. - Object. + Object.<number, string>
        var obj = {};
         obj[1] = 'bar';
        An object. In the object, the keys are numbers and the values are strings. @@ -725,4 +725,4 @@ new project.MyClass() - \ No newline at end of file + diff --git a/src/guides/v2.3/coding-standards/technical-guidelines.md b/src/guides/v2.3/coding-standards/technical-guidelines.md index 7a5893543b5..457a474ef2a 100644 --- a/src/guides/v2.3/coding-standards/technical-guidelines.md +++ b/src/guides/v2.3/coding-standards/technical-guidelines.md @@ -775,7 +775,7 @@ You need to read configuration from different sources (like database or filesyst 11.3.1.1. Page file names MUST follow this pattern: * `{Admin or Storefront}{Description}Page.xml`, where `{Description}` briefly describes the page under test. -* Use [PascalCase](http://wiki.c2.com/?PascalCase). +* Use [PascalCase](https://wiki.c2.com/?PascalCase). * Example: `AdminProductAttributeGridPage.xml` 11.3.1.2. Page `name` attribute MUST be the same as the file name. @@ -792,7 +792,7 @@ You need to read configuration from different sources (like database or filesyst 11.3.2.1. Section file names MUST follow this pattern: * `{Admin or Storefront}{Description}Section.xml`, where `{Description}` briefly describes the section under test. -* Use [PascalCase](http://wiki.c2.com/?PascalCase). +* Use [PascalCase](https://wiki.c2.com/?PascalCase). * Example: `StorefrontCheckoutCartSummarySection.xml` 11.3.2.2. Section `name` attribute MUST be the same as the file name. @@ -805,7 +805,7 @@ You need to read configuration from different sources (like database or filesyst 11.3.3.2. The element `name` MUST be unique within the `
        `. -11.3.3.3. The element `name` SHOULD be written in [camelCase](http://wiki.c2.com/?CamelCase). +11.3.3.3. The element `name` SHOULD be written in [camelCase](https://wiki.c2.com/?CamelCase). 11.3.3.4. Parameterized selectors MUST use descriptive names for their parameters. @@ -816,7 +816,7 @@ You need to read configuration from different sources (like database or filesyst 11.3.4.1. Data entity file names MUST follow this pattern: * `{Type}Data.xml`, where `{Type}` describes the type of entities. -* Use [PascalCase](http://wiki.c2.com/?PascalCase). +* Use [PascalCase](https://wiki.c2.com/?PascalCase). * Examples: `ProductData.xml` or `CustomerData.xml` 11.3.4.2. Data entities SHOULD make use of `unique="suffix"` or `unique="prefix"` to ensure that tests using the entity can be repeatedly ran against the same environment. @@ -844,7 +844,7 @@ You need to read configuration from different sources (like database or filesyst 11.3.6.1. Metadata file names MUST follow this pattern: * `{Type}Meta.xml`, where `{Type}` describes the type of entity. -* Use [PascalCase](http://wiki.c2.com/?PascalCase). +* Use [PascalCase](https://wiki.c2.com/?PascalCase). * Examples: `CategoryMeta.xml` and `ProductAttributeMeta.xml` ## 12. Web API @@ -994,7 +994,7 @@ class SampleEventObserverThatModifiesInputs implements ObserverInterface [RFC2119]: https://tools.ietf.org/html/rfc2119 [SOLID principles]: https://en.wikipedia.org/wiki/SOLID_(object-oriented_design) -[Temporal coupling]: http://blog.ploeh.dk/2011/05/24/DesignSmellTemporalCoupling/ +[Temporal coupling]: https://blog.ploeh.dk/2011/05/24/DesignSmellTemporalCoupling/ [Law of Demeter]: https://en.wikipedia.org/wiki/Law_of_Demeter [CQRS principle]: https://martinfowler.com/bliki/CQRS.html [HTTP Protocol]: https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol diff --git a/src/guides/v2.3/comp-mgr/trouble/cman/tshoot_backup.md b/src/guides/v2.3/comp-mgr/trouble/cman/tshoot_backup.md index c81ba2ac88f..843d3e3d79c 100644 --- a/src/guides/v2.3/comp-mgr/trouble/cman/tshoot_backup.md +++ b/src/guides/v2.3/comp-mgr/trouble/cman/tshoot_backup.md @@ -37,16 +37,16 @@ For additional information on backups, see [Back up and roll back the file syste If the backup failed because of insufficient disk space, you should typically free up disk space by moving some files to another storage device or drive. However, there might be other ways to resolve the issue. See one of the following resources for tips: -* [8 Tips to Solve Linux & Unix Systems Hard Disk Problems Like Disk Full Or Can’t Write to the Disk](http://www.cyberciti.biz/datacenter/linux-unix-bsd-osx-cannot-write-to-hard-disk) +* [8 Tips to Solve Linux & Unix Systems Hard Disk Problems Like Disk Full Or Can’t Write to the Disk](https://www.cyberciti.biz/datacenter/linux-unix-bsd-osx-cannot-write-to-hard-disk) * [serverfault: df says disk is full, but it is not](http://serverfault.com/questions/315181/df-says-disk-is-full-but-it-is-not) -* [unix.stackexchange.com: Tracking down where disk space has gone on Linux?](http://unix.stackexchange.com/questions/125429/tracking-down-where-disk-space-has-gone-on-linux) +* [unix.stackexchange.com: Tracking down where disk space has gone on Linux?](https://unix.stackexchange.com/questions/125429/tracking-down-where-disk-space-has-gone-on-linux) ## Operating system error {#trouble-backup-os} Unfortunately, we can't recommend anything specific because of the variety of errors you might encounter. We can suggest, however, you: * Contact your system administrator -* Search public forums like [Stack Exchange](http://unix.stackexchange.com) or [Stack Overflow](http://stackoverflow.com) +* Search public forums like [Stack Exchange](https://unix.stackexchange.com) or [Stack Overflow](http://stackoverflow.com) * Open a [GitHub issue](https://github.com/magento/magento2/issues) and we'll try to help ## Backup fails {#trouble-backup-all} diff --git a/src/guides/v2.3/comp-mgr/upgrade-best-practices.md b/src/guides/v2.3/comp-mgr/upgrade-best-practices.md index c5fed801b55..9aa94d08790 100644 --- a/src/guides/v2.3/comp-mgr/upgrade-best-practices.md +++ b/src/guides/v2.3/comp-mgr/upgrade-best-practices.md @@ -67,7 +67,7 @@ Assess the work to be done for upgrading: * Review the [release notes]({{page.baseurl}}/release-notes/bk-release-notes.html) to understand the scope and impact of the new version. -* Use the [Upgrade Compatibility Tool]({{site.url}}/upgrade-compatibility-tool/introduction.html) to identify potential problems that must be fixed in your custom code before attempting to upgrade to a newer version. +* Use the [Upgrade Compatibility Tool]({{site.baseurl}}/upgrade-compatibility-tool/introduction.html) to identify potential problems that must be fixed in your custom code before attempting to upgrade to a newer version. * If you are using 3rd-party extensions, validate their compatibility with the target version you are planning to upgrade to. diff --git a/src/guides/v2.3/config-guide/bootstrap/mage-dirs.md b/src/guides/v2.3/config-guide/bootstrap/mage-dirs.md index 25169e3f4c1..0307ff90006 100644 --- a/src/guides/v2.3/config-guide/bootstrap/mage-dirs.md +++ b/src/guides/v2.3/config-guide/bootstrap/mage-dirs.md @@ -34,7 +34,7 @@ You can set `MAGE_DIRS` in any of the following ways: require __DIR__ . '/app/bootstrap.php'; $params = $_SERVER; $params[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] = [ - DirectoryList::PUB => [DirectoryList::URL_PATH => '', + DirectoryList::PUB => [DirectoryList::URL_PATH => ''], DirectoryList::MEDIA => [DirectoryList::PATH => '/mnt/nfs/media', DirectoryList::URL_PATH => ''], DirectoryList::STATIC_VIEW => [DirectoryList::URL_PATH => 'static'], DirectoryList::UPLOAD => [DirectoryList::URL_PATH => '/mnt/nfs/media/upload'], diff --git a/src/guides/v2.3/config-guide/bootstrap/magento-how-to-set.md b/src/guides/v2.3/config-guide/bootstrap/magento-how-to-set.md index 07dddbde286..cc5a2721b05 100644 --- a/src/guides/v2.3/config-guide/bootstrap/magento-how-to-set.md +++ b/src/guides/v2.3/config-guide/bootstrap/magento-how-to-set.md @@ -37,7 +37,7 @@ For example, you can use the `MAGE_PROFILER` system environment variable to spec MAGE_PROFILER={firebug|csv|} ``` -Set the variable using a shell-specific command. Because shells have differing syntax, consult a reference like [unix.stackexchange.com](http://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables). +Set the variable using a shell-specific command. Because shells have differing syntax, consult a reference like [unix.stackexchange.com](https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables). Bash shell example for CentOS: @@ -95,7 +95,7 @@ To set a variable: The Apache web server supports setting the Magento mode using `mod_env` directives. -The Apache `mod_env` directive is slightly different in [version 2.2](http://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv) and [version 2.4](http://httpd.apache.org/docs/2.4/mod/mod_env.html#setenv). +The Apache `mod_env` directive is slightly different in [version 2.2](https://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv) and [version 2.4](https://httpd.apache.org/docs/2.4/mod/mod_env.html#setenv). The procedures that follows show how to set the Magento mode in an Apache virtual host. This is not the only way to use `mod_env` directives; consult the Apache documentation for details. diff --git a/src/guides/v2.3/config-guide/cache.md b/src/guides/v2.3/config-guide/cache.md index 4ee48825cf6..2abfb1b8bac 100644 --- a/src/guides/v2.3/config-guide/cache.md +++ b/src/guides/v2.3/config-guide/cache.md @@ -24,7 +24,7 @@ Magento uses the following caching terminology: * *Frontend*: Similar to an interface or gateway to cache storage, implemented by [Magento\Framework\Cache\Frontend]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Cache/Frontend). * *Cache types*: Can be one of the types provided with Magento or you can [create your own]({{ page.baseurl }}/extension-dev-guide/cache/partial-caching/create-cache-type.html). -* *Backend*: Specifies details about [cache storage](http://framework.zend.com/manual/1.12/en/zend.cache.backends.html), implemented by [Magento\Framework\Cache\Backend]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Cache/Backend) +* *Backend*: Specifies details about [cache storage](https://framework.zend.com/manual/1.12/en/zend.cache.backends.html), implemented by [Magento\Framework\Cache\Backend]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Cache/Backend) * *Two-level backend*: Stores cache records in two backends---a faster one and a slower one. Two-level backend cache configuration is beyond the scope of this guide at this time. diff --git a/src/guides/v2.3/config-guide/cache/cache-options.md b/src/guides/v2.3/config-guide/cache/cache-options.md index 9aba058f1d2..6228c638fa0 100644 --- a/src/guides/v2.3/config-guide/cache/cache-options.md +++ b/src/guides/v2.3/config-guide/cache/cache-options.md @@ -11,11 +11,11 @@ The Magento application uses a low-level [cache](https://glossary.magento.com/ca ## Low-level frontend cache {#cache-lowlevel-front} -Magento extends [Zend_Cache_Core](http://framework.zend.com/manual/1.12/en/zend.cache.frontends.html) by implementing [Magento\Framework\Cache\Core]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Cache/Core.php) frontend cache. +Magento extends [Zend_Cache_Core](https://framework.zend.com/manual/1.12/en/zend.cache.frontends.html) by implementing [Magento\Framework\Cache\Core]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Cache/Core.php) frontend cache. ## Low-level backend cache {#cache-lowlevel-back} -In general, the Magento application works with any backend cache that [Zend_Cache Backends](http://framework.zend.com/manual/1.12/en/zend.cache.backends.html) supports. However, this guide covers only the following low-level backend caches: +In general, the Magento application works with any backend cache that [Zend_Cache Backends](https://framework.zend.com/manual/1.12/en/zend.cache.backends.html) supports. However, this guide covers only the following low-level backend caches: * [Redis]({{ page.baseurl }}/config-guide/redis/config-redis.html) * [Database]({{ page.baseurl }}/extension-dev-guide/cache/partial-caching/database-caching.html) diff --git a/src/guides/v2.3/config-guide/cache/cache-types.md b/src/guides/v2.3/config-guide/cache/cache-types.md index 1218e5b6ae7..cbeacada4d7 100644 --- a/src/guides/v2.3/config-guide/cache/cache-types.md +++ b/src/guides/v2.3/config-guide/cache/cache-types.md @@ -63,11 +63,11 @@ You can specify frontend and [backend](https://glossary.magento.com/backend) cac where -* `` is the low-level frontend [cache type](https://glossary.magento.com/cache-type). Specify the name of a class that is compatible with [Zend\Cache\Core](http://framework.zend.com/apidoc/1.7/Zend_Cache/Zend_Cache_Core.html). +* `` is the low-level frontend [cache type](https://glossary.magento.com/cache-type). Specify the name of a class that is compatible with [Zend\Cache\Core](https://framework.zend.com/apidoc/1.7/Zend_Cache/Zend_Cache_Core.html). If you omit ``, [Magento\Framework\Cache\Core]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Cache/Core.php) is used. * ``, `` are the name and value of options the Magento framework passes as an associative array to the frontend cache upon its creation. -* `` is the low-level backend cache type. Specify the name of a class that is compatible with [Zend_Cache_Backend](http://framework.zend.com/apidoc/1.7/Zend_Cache/Zend_Cache_Backend/Zend_Cache_Backend.html) and that implements [Zend_Cache_Backend_Interface](http://framework.zend.com/apidoc/1.6/Zend_Cache/Zend_Cache_Backend/Zend_Cache_Backend_Interface.html). +* `` is the low-level backend cache type. Specify the name of a class that is compatible with [Zend_Cache_Backend](https://framework.zend.com/apidoc/1.7/Zend_Cache/Zend_Cache_Backend/Zend_Cache_Backend.html) and that implements [Zend_Cache_Backend_Interface](https://framework.zend.com/apidoc/1.6/Zend_Cache/Zend_Cache_Backend/Zend_Cache_Backend_Interface.html). * ``, `` are the name and value of options the Magento framework passes as an associative array to backend cache upon its creation. {:.ref-header} diff --git a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-cache.md b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-cache.md index 6c769fd959f..b6d458a8acf 100644 --- a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-cache.md +++ b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-cache.md @@ -43,6 +43,7 @@ To view the status of the cache, enter A sample follows: ```terminal +Current status: config: 1 layout: 1 block_html: 1 diff --git a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-catalog-sync.md b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-catalog-sync.md index 8b3df767d61..746b59ea695 100644 --- a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-catalog-sync.md +++ b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-catalog-sync.md @@ -1,8 +1,6 @@ --- group: configuration-guide title: Catalog Sync -migrated_to: https://experienceleague.adobe.com/docs/commerce-merchant-services/user-guides/catalog-sync.html -layout: migrated --- Adobe Commerce and Magento Open Source compiles catalog data into tables using indexers. This process is automatically [triggered by several events]({{ site.user_guide_url }}/system/index-management-events.html), such as changes to a product's price or inventory levels. To allow some Commerce services to use that catalog data, a catalog sync process runs hourly. The catalog sync process exports product data from the Commerce server to Commerce services, which are deployed as SaaS, on an ongoing basis. For example, the [Product Recommendations]({{ site.user_guide_url }}/marketing/product-recommendations.html) feature needs up-to-date catalog information so that it can accurately return recommendations with correct names, pricing, and availability. Use the command-line interface to trigger the catalog sync and reindex product data for consumption by Commerce services. @@ -24,7 +22,7 @@ Command options: bin/magento saas:resync --feed [no-reindex] ``` -The following table explains this command’s parameters and descriptions. +The following table explains this command's parameters and descriptions. |Parameter|Description|Required?| |---| ---| ---| diff --git a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-depen.md b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-depen.md index 35ed2f7c905..1d21512a593 100644 --- a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-depen.md +++ b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-depen.md @@ -13,9 +13,9 @@ functional_areas: You can run the following types of reports: -- [**Module**](https://glossary.magento.com/module) dependencies: Shows the total number of dependencies between modules and whether the dependencies are hard or soft. +- [**Module**](https://glossary.magento.com/module) **dependencies:** Shows the total number of dependencies between modules and whether the dependencies are hard or soft. - **Circular dependencies:** Shows the total number of dependency chains and the number and list of circular dependencies for each module. -- **Framework dependencies:** Shows the total number of dependencies on the Magento framework by module (including the total number of framework entries for each library). +- [**Framework**](https://glossary.magento.com/framework) **dependencies:** Shows the total number of dependencies on the Magento framework by module (including the total number of framework entries for each library). A dependency in a comment is also a dependency. @@ -39,11 +39,11 @@ The following table explains this command's options, parameters, and values. If no directory or filename is passed as an argument, the following application root is used as the default directory, and the following default filenames are used: -| Command | Filename | -| ------------------------------------------------- | ----------------------------------- | -| `magento info:dependencies:show-modules` | `modules-dependencies.csv` | -| `magento info:dependencies:show-modules-circular` | `modules-circular-dependencies.csv` | -| `magento info:dependencies:show-framework` | `framework-dependencies.csv` | +| Command | Filename | +| ----------------------------------------------------- | ----------------------------------- | +| `bin/magento info:dependencies:show-modules` | `modules-dependencies.csv` | +| `bin/magento info:dependencies:show-modules-circular` | `modules-circular-dependencies.csv` | +| `bin/magento info:dependencies:show-framework` | `framework-dependencies.csv` | ### Sample module dependencies report diff --git a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-i18n.md b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-i18n.md index 308295b8793..793961cd482 100644 --- a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-i18n.md +++ b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-i18n.md @@ -335,8 +335,8 @@ Similar to the preceding example, generate a `.csv` file, but instead of specify [translation dictionary]: {{ page.baseurl }}/frontend-dev-guide/translations/xlate.html#m2devgde-xlate-dictionaries [configures the translations]: {{ site.user_guide_url }}/stores/store-language-add.html?Highlight=translation [Learn more about language packages]: {{ page.baseurl }}/frontend-dev-guide/translations/xlate.html#m2devgde-xlate-languagepack -[ISO 639-1]: http://www.iso.org/iso/home/standards/language_codes.htm -[ISO 3166]: http://www.iso.org/iso/country_codes.htm +[ISO 639-1]: https://www.iso.org/iso-639-language-codes.html +[ISO 3166]: https://www.iso.org/iso-3166-country-codes.html [registers]: {{ page.baseurl }}/extension-dev-guide/build/component-registration.html [`de_de`]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/i18n/Magento/de_DE/registration.php [`composer.json`]: {{ page.baseurl }}/extension-dev-guide/build/composer-integration.html diff --git a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-index.md b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-index.md index f322234f4d7..e4943462d39 100644 --- a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-index.md +++ b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-index.md @@ -45,13 +45,7 @@ bin/magento indexer:status [indexer] Where `[indexer]` is a space-separated list of indexers. Omit `[indexer]` to view the status of all indexers. -To list all indexers: - -```bash -bin/magento indexer:info -``` - -A sample follows: +To list status of all indexers: ```bash bin/magento indexer:status @@ -92,13 +86,7 @@ bin/magento indexer:reindex [indexer] Where ```[indexer]``` is a space-separated list of indexers. Omit ```[indexer]``` to reindex all indexers. -To view a list of all indexers: - -```bash -bin/magento indexer:info -``` - -A sample follows: +To reindex all indexers: ```bash bin/magento indexer:reindex @@ -125,7 +113,7 @@ Reindexing all indexers can take a long time for stores with large numbers of pr ### Reindexing in parallel mode -Indexers are scoped and multi-threaded to support reindexing in parallel mode. It parallelizes by the indexer’s dimension and executes across multiple threads, reducing processing time. +Indexers are scoped and multi-threaded to support reindexing in parallel mode. It parallelizes by the indexer's dimension and executes across multiple threads, reducing processing time. In this context, `dimension` is the scope of the reindexing, for instance a `website` or just a specific `customer_group`. @@ -136,8 +124,9 @@ You can run the following indexes in parallel mode: - `Catalog Search Fulltext` can be paralleled by store views. - `Category Product` can be paralleled by store views. - `Catalog Price` can be paralleled by website and customer groups. +- `Catalog Permissions` can be paralleled by customer groups. -If you want to use parallelization, you must set one of the available modes of dimensions for the product price indexer: +To use parallelization, set one of the available dimensions modes for the product price indexer: - `none` (default) - `website` @@ -149,6 +138,10 @@ For example, to set the mode per website: ```bash bin/magento indexer:set-dimensions-mode catalog_product_price website ``` +To use parallelization for Catalog permissions, set one of the available dimensions modes for the Catalog Permissions indexer: + +- `none` (default) +- `customer_group` Or to check the current mode: @@ -240,7 +233,7 @@ Catalog Search: Update on Save ### Configure indexers {:.bs-callout-info} -Before switching indexer modes, we recommend putting your website to [maintenance]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-maint.html) mode and [disable cron]({{ site.baseurl }}/cloud/configure/setup-cron-jobs.html#disable-cron-jobs). This will ensure you do not suffer database locks. +Before switching indexer modes, we recommend putting your website to [maintenance]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-maint.html) mode and [disable cron](https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/app/properties/crons-property.html#disable-cron-jobs). This will ensure you do not suffer database locks. To specify the indexer configuration: @@ -254,12 +247,6 @@ Where: - **`schedule`** - Sets the specified indexers to save according to the cron schedule. - **`indexer`** - Is a space-separated list of indexers. Omit `indexer` to configure all indexers the same way. -To view the list of indexers: - -```bash -bin/magento indexer:info -``` - For example, to change only the category products and product categories indexers to update on schedule, enter: ```bash diff --git a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-mode.md b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-mode.md index b8d4ecbd4d0..63ffab54472 100644 --- a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-mode.md +++ b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-mode.md @@ -68,7 +68,7 @@ bin/magento deploy:mode:set {mode} [-s|--skip-compilation] where: -- **`{mode}`** is required; it can be either `developer` or `production` +- **`{mode}`** is required; it can be either `default`, `developer`, or `production` - **`--skip-compilation`** is an optional parameter you can use to skip [code compilation]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-compiler.html) when you change to production mode. diff --git a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-static-view.md b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-static-view.md index d1bbde48c44..2fd4e376ed0 100644 --- a/src/guides/v2.3/config-guide/cli/config-cli-subcommands-static-view.md +++ b/src/guides/v2.3/config-guide/cli/config-cli-subcommands-static-view.md @@ -63,7 +63,7 @@ The following table explains this command's parameters and values. <languages> -

        Space-separated list of ISO-639 language codes for which to output static view files. (Default is +

        Space-separated list of ISO-639 language codes for which to output static view files. (Default is en_US.)

        You can find the list by running bin/magento info:language:list.

        @@ -74,7 +74,7 @@ The following table explains this command's parameters and values. --language (-l) -

        Generate files only for the specified languages. The default, with no option specified, is to generate files for all ISO-639 language codes. You can specify the name of one language code at a time. Default value is all.

        +

        Generate files only for the specified languages. The default, with no option specified, is to generate files for all ISO-639 language codes. You can specify the name of one language code at a time. Default value is all.

        For example, --language en_US --language es_ES

        @@ -355,4 +355,4 @@ Use the following steps: When creating a custom implementation of the static content deployment tool, use only [atomic](https://en.wikipedia.org/wiki/Linearizability) file writing for files that should be available on the client. If you use non-atomic file writing, those files might be loaded on the client with partial content. -One of the options for making it atomic is to write to files stored in a temporary directory and copying or moving them to the destination directory (from where they are loaded to client) after writing is over. For details about writing to files, see [http://php.net/manual/en/function.fwrite.php](http://php.net/manual/en/function.fwrite.php). +One of the options for making it atomic is to write to files stored in a temporary directory and copying or moving them to the destination directory (from where they are loaded to client) after writing is over. For details about writing to files, see [https://php.net/manual/en/function.fwrite.php](https://php.net/manual/en/function.fwrite.php). diff --git a/src/guides/v2.3/config-guide/cli/config-cli-subcommands.md b/src/guides/v2.3/config-guide/cli/config-cli-subcommands.md index 604447df9f8..29a1b414f1e 100644 --- a/src/guides/v2.3/config-guide/cli/config-cli-subcommands.md +++ b/src/guides/v2.3/config-guide/cli/config-cli-subcommands.md @@ -28,7 +28,7 @@ You can run the commands in any of the following ways: - `php magento ` - `./magento ` -- `magento ` (after [adding](http://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables) `/bin` to your system `PATH`) +- `magento ` (after [adding](https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables) `/bin` to your system `PATH`) ## Command summary {#config-cli-summary} @@ -52,8 +52,8 @@ Before you run any of these commands, you must either [install the Magento appli |[`magento setup:perf:generate-fixtures`]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-perf-data.html)|Generate data to use for performance testing.| |[`magento sampledata:install`]({{ page.baseurl }}/install-gde/install/sample-data.html)|Installs optional Magento sample data after you install the Magento application.

        For more details about Magento sample data, see [Optional Magento sample data]({{ page.baseurl }}/install-gde/install/sample-data.html).| |[`magento config:{set/sensitive:set/show/}`]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-config-mgmt-set.html)|Manages backend configurations| -|[`bin/magento admin:user:{create/unlock}`]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-admin.html)| Creates/edits/unlocks admin users.| -|[`bin/magento dev:template-hints:{enable/disable`}]({{ page.baseurl }}/frontend-dev-guide/themes/debug-theme.html)|Enables/disables developer template hints.| +|[`magento admin:user:{create/unlock}`]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-admin.html)| Creates/edits/unlocks admin users.| +|[`magento dev:template-hints:{enable/disable}`]({{ page.baseurl }}/frontend-dev-guide/themes/debug-theme.html)|Enables/disables developer template hints.| ## Help commands {#config-cli-help} diff --git a/src/guides/v2.3/config-guide/cli/logging.md b/src/guides/v2.3/config-guide/cli/logging.md index 7e0a01a6555..faf5e7d583a 100644 --- a/src/guides/v2.3/config-guide/cli/logging.md +++ b/src/guides/v2.3/config-guide/cli/logging.md @@ -47,7 +47,7 @@ As of Magento 2.3.1, you can no longer use the `bin/magento config:set dev/debug ## Database logging -By default, Magento writes database activity logs to the `var/debug/db.log` file inside the Magento application directory. +By default, Magento writes database activity logs to `/var/debug/db.log`. ### To enable database logging @@ -61,6 +61,12 @@ By default, Magento writes database activity logs to the `var/debug/db.log` file bin/magento dev:query-log:disable ``` +1. In the [production mode]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-mode.html#config-mode-show), run the command for [import configuration]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-config-mgmt-import.html), because the `bin/magento dev:query-log:disable` command adds settings to the `app/etc/env.php` file: + + ```bash + bin/magento app:config:import + ``` + 1. Flush the cache. ```bash diff --git a/src/guides/v2.3/config-guide/config/config-files.md b/src/guides/v2.3/config-guide/config/config-files.md index 89775f2cac8..fcf4cb86573 100644 --- a/src/guides/v2.3/config-guide/config/config-files.md +++ b/src/guides/v2.3/config-guide/config/config-files.md @@ -139,4 +139,4 @@ Related topics - [Magento's deployment configuration]({{ page.baseurl }}/config-guide/config/config-php.html) -[RabbitMQ]: http://www.rabbitmq.com +[RabbitMQ]: https://www.rabbitmq.com/ diff --git a/src/guides/v2.3/config-guide/config/config-php.md b/src/guides/v2.3/config-guide/config/config-php.md index 9a7cefa43ec..dc045e50180 100644 --- a/src/guides/v2.3/config-guide/config/config-php.md +++ b/src/guides/v2.3/config-guide/config/config-php.md @@ -29,7 +29,7 @@ The Magento 2 deployment configuration replaces `local.xml` in Magento 1.x. Unlike other [module configuration files]({{ page.baseurl }}/config-guide/config/config-files.html), Magento's deployment configuration is loaded into memory when Magento initializes, is not merged with any other files, and cannot be extended. (`config.php` and `env.php` are merged with each other, however.) ## Details about the deployment configuration {#config-php-contents} -`config.php` and `env.php` are [PHP](https://glossary.magento.com/php) files that return a [multi-dimensional associative array](http://www.w3schools.com/php/php_arrays.asp), which is basically a hierarchical arrangement of configuration parameters and values. +`config.php` and `env.php` are [PHP](https://glossary.magento.com/php) files that return a [multi-dimensional associative array](https://www.w3schools.com/php/php_arrays.asp), which is basically a hierarchical arrangement of configuration parameters and values. On the top level of this array are *configuration segments*. A segment has arbitrary content (a scalar value or a nested array) distinguished by an arbitrary key---where both the key and its value are defined by the Magento framework. diff --git a/src/guides/v2.3/config-guide/cron/custom-cron-ref.md b/src/guides/v2.3/config-guide/cron/custom-cron-ref.md index 8fe9ce27cc7..e2cef702f92 100644 --- a/src/guides/v2.3/config-guide/cron/custom-cron-ref.md +++ b/src/guides/v2.3/config-guide/cron/custom-cron-ref.md @@ -48,7 +48,7 @@ where: |`job_name`|Unique ID for this cron job.| |`classpath`|Class to be instantiated (classpath).| |`method`|Method in `classpath` to call.| -|`time`|Schedule in [cron format](http://www.nncron.ru/help/EN/working/cron-format.htm). Omit this parameter if the schedule is defined in the Magento database or other storage.| +|`time`|Schedule in cron format. Omit this parameter if the schedule is defined in the Magento database or other storage.| The resulting `crontab.xml` with two groups may look like this: diff --git a/src/guides/v2.3/config-guide/db-profiler/db-profiler.md b/src/guides/v2.3/config-guide/db-profiler/db-profiler.md index 2e417dfe1c3..b0274439ece 100644 --- a/src/guides/v2.3/config-guide/db-profiler/db-profiler.md +++ b/src/guides/v2.3/config-guide/db-profiler/db-profiler.md @@ -2,7 +2,7 @@ group: configuration-guide title: Configure the database profiler contributor_name: Atish Goswami -contributor_link: http://atishgoswami.com +contributor_link: https://atishgoswami.com/ functional_areas: - Configuration - System diff --git a/src/guides/v2.3/config-guide/deployment/pipeline/index.md b/src/guides/v2.3/config-guide/deployment/pipeline/index.md index b080e4fd8a5..edb0ef52630 100644 --- a/src/guides/v2.3/config-guide/deployment/pipeline/index.md +++ b/src/guides/v2.3/config-guide/deployment/pipeline/index.md @@ -15,7 +15,7 @@ functional_areas: You can optionally use other deployment methods, including: * Secure copying with SCP or rsync -* [Capistrano](http://capistranorb.com/documentation/overview/what-is-capistrano) +* [Capistrano](https://capistranorb.com/documentation/overview/what-is-capistrano) * The [Deployer tool](https://deployer.org/) ## Manage the configuration diff --git a/src/guides/v2.3/config-guide/deployment/single-machine.md b/src/guides/v2.3/config-guide/deployment/single-machine.md index db94b9c357c..fb90be8afc5 100644 --- a/src/guides/v2.3/config-guide/deployment/single-machine.md +++ b/src/guides/v2.3/config-guide/deployment/single-machine.md @@ -108,4 +108,4 @@ Related topics [5]: {{ page.baseurl }}/config-guide/bootstrap/magento-modes.html#production-mode [6]: https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/developer/git-installs.html [8]: {{ page.baseurl }}/install-gde/composer.html -[10]: {{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html#magento-file-system-owner +[10]: {{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html diff --git a/src/guides/v2.3/config-guide/elasticsearch/es-config-apache.md b/src/guides/v2.3/config-guide/elasticsearch/es-config-apache.md index 5ee58b1b05f..3d2921a0868 100644 --- a/src/guides/v2.3/config-guide/elasticsearch/es-config-apache.md +++ b/src/guides/v2.3/config-guide/elasticsearch/es-config-apache.md @@ -81,9 +81,9 @@ This section discusses how to configure an Elasticsearch proxy using a virtual h ## Secure communication with Apache {#es-ws-secure-apache} -This section discusses how to secure communication between Apache and Elasticsearch using [HTTP Basic](http://tools.ietf.org/html/rfc2617) authentication with Apache. For more options, consult one of the following resources: +This section discusses how to secure communication between Apache and Elasticsearch using [HTTP Basic](https://datatracker.ietf.org/doc/html/rfc2617) authentication with Apache. For more options, consult one of the following resources: -* [Apache 2.4 authentication and authorization tutorial](http://httpd.apache.org/docs/2.4/howto/auth.html) +* [Apache 2.4 authentication and authorization tutorial](https://httpd.apache.org/docs/2.4/howto/auth.html) See one of the following sections: diff --git a/src/guides/v2.3/config-guide/elasticsearch/es-config-nginx.md b/src/guides/v2.3/config-guide/elasticsearch/es-config-nginx.md index 12663f61ab1..7202538f535 100644 --- a/src/guides/v2.3/config-guide/elasticsearch/es-config-nginx.md +++ b/src/guides/v2.3/config-guide/elasticsearch/es-config-nginx.md @@ -83,7 +83,7 @@ This section discusses how to specify who can access the [nginx](https://glossar ## Secure communication with nginx {#es-ws-secure-nginx} -This section discusses how to set up [HTTP Basic authentication](http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html) with your secure proxy. Use of TLS and HTTP Basic authentication together prevents anyone from intercepting communication with Elasticsearch or with your Magento server. +This section discusses how to set up [HTTP Basic authentication](https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html) with your secure proxy. Use of TLS and HTTP Basic authentication together prevents anyone from intercepting communication with Elasticsearch or with your Magento server. Because nginx natively supports HTTP Basic authentication, we recommend it over, for example, [Digest authentication](https://www.nginx.com/resources/wiki/modules/auth_digest/), which isn't recommended in production. diff --git a/src/guides/v2.3/config-guide/log/log-intro.md b/src/guides/v2.3/config-guide/log/log-intro.md index 9fe67e1215a..3c07146ee85 100644 --- a/src/guides/v2.3/config-guide/log/log-intro.md +++ b/src/guides/v2.3/config-guide/log/log-intro.md @@ -17,7 +17,7 @@ We recommend using centralized application logging for the following reasons: * It allows storage of logs on a server other than the application server and decreases disk I/O operations, simplifying support of the application server. -* It makes processing of logs data more effective by using special tools without impact to a production server (for example, [logstash](https://www.elastic.co/products/logstash), [logplex](https://devcenter.heroku.com/articles/logplex), or [fluentd](http://www.fluentd.org)). +* It makes processing of logs data more effective by using special tools without impact to a production server (for example, [logstash](https://www.elastic.co/products/logstash), [logplex](https://devcenter.heroku.com/articles/logplex), or [fluentd](https://www.fluentd.org/)). {:.bs-callout-info} Magento does not recommend or endorse any particular logging solution. diff --git a/src/guides/v2.3/config-guide/memcache/memcache.md b/src/guides/v2.3/config-guide/memcache/memcache.md index 117688d13c1..c75f91e7558 100644 --- a/src/guides/v2.3/config-guide/memcache/memcache.md +++ b/src/guides/v2.3/config-guide/memcache/memcache.md @@ -9,7 +9,7 @@ functional_areas: Memcached is a general-purpose, distributed memory caching system. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source (such as a database or API) must be read. (Source: [Wikipedia](https://en.wikipedia.org/wiki/Memcached)) -Memcached provides a very large hash table that can be distributed across multiple machines. When the table is full, subsequent inserts cause older data to be purged in least recently used (LRU) order. The size of this hash table is often very large. (Source: [memcached.org](http://memcached.org/)) +Memcached provides a very large hash table that can be distributed across multiple machines. When the table is full, subsequent inserts cause older data to be purged in least recently used (LRU) order. The size of this hash table is often very large. (Source: [memcached.org](https://memcached.org/)) Magento uses memcached for session storage but not for page caching. For page caching, we recommend [Redis]({{ page.baseurl }}/config-guide/redis/config-redis.html) or [Varnish]({{ page.baseurl }}/config-guide/varnish/config-varnish.html). diff --git a/src/guides/v2.3/config-guide/memcache/memcache_centos.md b/src/guides/v2.3/config-guide/memcache/memcache_centos.md index ba2141cef17..6edf64328ea 100644 --- a/src/guides/v2.3/config-guide/memcache/memcache_centos.md +++ b/src/guides/v2.3/config-guide/memcache/memcache_centos.md @@ -198,7 +198,7 @@ flush_all quit ``` -[Additional information about the Telnet test](http://www.darkcoding.net/software/memcached-list-all-keys/) +[Additional information about the Telnet test](https://www.darkcoding.net/software/memcached-list-all-keys/) {:.ref-header} Related topics diff --git a/src/guides/v2.3/config-guide/memcache/memcache_magento.md b/src/guides/v2.3/config-guide/memcache/memcache_magento.md index fa943866f81..0e5ee16cb85 100644 --- a/src/guides/v2.3/config-guide/memcache/memcache_magento.md +++ b/src/guides/v2.3/config-guide/memcache/memcache_magento.md @@ -29,7 +29,7 @@ To configure Magento to use memcached: ), ``` - memcached has an optional startup parameters that are beyond the scope of this guide. You can find more information about them in the [memcached](http://php.net/manual/en/memcached.sessions.php) documentation, source code, and changelogs. + memcached has an optional startup parameters that are beyond the scope of this guide. You can find more information about them in the [memcached](https://php.net/manual/en/memcached.sessions.php) documentation, source code, and changelogs. 1. Continue with the next section. @@ -72,4 +72,4 @@ To verify memcached works with Magento: STAT items:3:outofmemory 0 STAT items:3:tailrepairs 0 - [Look at the keys in more detail](http://www.darkcoding.net/software/memcached-list-all-keys/) + [Look at the keys in more detail](https://www.darkcoding.net/software/memcached-list-all-keys/) diff --git a/src/guides/v2.3/config-guide/memcache/memcache_ubuntu.md b/src/guides/v2.3/config-guide/memcache/memcache_ubuntu.md index ebd5b31f087..bb8498519e9 100644 --- a/src/guides/v2.3/config-guide/memcache/memcache_ubuntu.md +++ b/src/guides/v2.3/config-guide/memcache/memcache_ubuntu.md @@ -150,7 +150,7 @@ flush_all quit ``` -[Additional information about the Telnet test](http://www.darkcoding.net/software/memcached-list-all-keys/) +[Additional information about the Telnet test](https://www.darkcoding.net/software/memcached-list-all-keys/) {:.ref-header} Related topics diff --git a/src/guides/v2.3/config-guide/mq/manage-message-queues.md b/src/guides/v2.3/config-guide/mq/manage-message-queues.md index 0118235ee4b..c0ba4d57ae2 100644 --- a/src/guides/v2.3/config-guide/mq/manage-message-queues.md +++ b/src/guides/v2.3/config-guide/mq/manage-message-queues.md @@ -28,7 +28,7 @@ The following example shows the Magento `crontab` configuration for running cons {:.bs-callout-info} How often you check message queues depends on your business logic and available system resources. In general, you'll probably want to check for newly created customers and send welcome emails more frequently than a more resource intensive process (e.g., updating your catalog). You should define `cron` schedules according to your business needs.

        It can be configured in Admin Panel **Stores > Settings > Configuration > Advanced > System > Cron configuration options for group: consumers**

        See [Configure and run cron]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-cron.html) for more information about using `cron` with Magento. -You can also use a process manager such as [Supervisor](http://supervisord.org/index.html) to monitor the status of processes. The manager can use the command line to restart the processes as needed. +You can also use a process manager such as [Supervisor](https://supervisord.org/index.html) to monitor the status of processes. The manager can use the command line to restart the processes as needed. ### Configuration @@ -39,7 +39,7 @@ You can also use a process manager such as [Supervisor](http://supervisord.org/i * Each consumer processes 10000 messages and then terminates {:.bs-callout-info} -If your {{ site.data.var.ee }} store is hosted on the Cloud platform, use the [`CRON_CONSUMERS_RUNNER`]({{ site.baseurl }}/cloud/env/variables-deploy.html#cron_consumers_runner) to configure the `consumers_runner` cron job. +If your {{ site.data.var.ee }} store is hosted on the Cloud platform, use the [`CRON_CONSUMERS_RUNNER`](https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/stage/variables-deploy.html#cron_consumers_runner) to configure the `consumers_runner` cron job. #### Specific configuration @@ -63,7 +63,7 @@ Edit the `/app/etc/env.php` file to configure the cron job `consumers_runner`. * `consumers` - An array of strings specifying which consumer(s) to run. An empty array runs *all* consumers. {:.bs-callout-info} - If your {{ site.data.var.ee }} store is hosted on the Cloud platform, use the [`CONSUMERS_WAIT_FOR_MAX_MESSAGES`]({{ site.baseurl }}/cloud/env/variables-deploy.html#consumers_wait_for_max_messages) to configure how consumers process messages from the message queue. + If your {{ site.data.var.ee }} store is hosted on the Cloud platform, use the [`CONSUMERS_WAIT_FOR_MAX_MESSAGES`](https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/stage/variables-deploy.html#consumers_wait_for_max_messages) to configure how consumers process messages from the message queue. {% include config/message-queue-consumers.md %} diff --git a/src/guides/v2.3/config-guide/mq/rabbitmq-overview.md b/src/guides/v2.3/config-guide/mq/rabbitmq-overview.md index f1dea1eefdc..efcfddc78fd 100644 --- a/src/guides/v2.3/config-guide/mq/rabbitmq-overview.md +++ b/src/guides/v2.3/config-guide/mq/rabbitmq-overview.md @@ -3,7 +3,7 @@ group: configuration-guide title: Message Queues Overview --- -The Message Queue Framework (MQF) is a system that allows a [module](https://glossary.magento.com/module) to publish messages to queues. It also defines the consumers that will receive the messages asynchronously. The MQF uses [RabbitMQ](http://www.rabbitmq.com) as the messaging broker, which provides a scalable platform for sending and receiving messages. It also includes a mechanism for storing undelivered messages. RabbitMQ is based on the Advanced Message Queuing Protocol (AMQP) 0.9.1 specification. +The Message Queue Framework (MQF) is a system that allows a [module](https://glossary.magento.com/module) to publish messages to queues. It also defines the consumers that will receive the messages asynchronously. The MQF uses [RabbitMQ](https://www.rabbitmq.com/) as the messaging broker, which provides a scalable platform for sending and receiving messages. It also includes a mechanism for storing undelivered messages. RabbitMQ is based on the Advanced Message Queuing Protocol (AMQP) 0.9.1 specification. The following diagram illustrates the Message Queue Framework. diff --git a/src/guides/v2.3/config-guide/multi-master/multi-master_manual.md b/src/guides/v2.3/config-guide/multi-master/multi-master_manual.md index 1e20b976130..24bac03eff8 100644 --- a/src/guides/v2.3/config-guide/multi-master/multi-master_manual.md +++ b/src/guides/v2.3/config-guide/multi-master/multi-master_manual.md @@ -266,7 +266,7 @@ This script restores sales data in your quote database. #### NDB requirement {#sql-sales-restore-ndb-req} -If you are using a [Network Database (NDB)](http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster.html) cluster: +If you are using a [Network Database (NDB)](https://dev.mysql.com/doc/refman/5.6/en/mysql-cluster.html) cluster: 1. Convert tables from InnoDb to NDB type in dump files: @@ -367,7 +367,7 @@ mysqldump -u -p magent ### NDB requirement -If you are using a [Network Database (NDB)](http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster.html) cluster: +If you are using a [Network Database (NDB)](https://dev.mysql.com/doc/refman/5.6/en/mysql-cluster.html) cluster: 1. Convert tables from InnoDb to NDB type in dump files: diff --git a/src/guides/v2.3/config-guide/multi-site/change-increment-id.md b/src/guides/v2.3/config-guide/multi-site/change-increment-id.md index 8ff231223f0..c626400c00a 100644 --- a/src/guides/v2.3/config-guide/multi-site/change-increment-id.md +++ b/src/guides/v2.3/config-guide/multi-site/change-increment-id.md @@ -77,5 +77,5 @@ Before executing the `ALTER TABLE` query on a production environment of {{site.d [Set up a remote MySQL database connection]: {{ page.baseurl }}/install-gde/prereq/mysql_remote.html [Create a DB backup]: https://support.magento.com/hc/en-us/articles/360003254334 [Create database dump on Cloud]: https://support.magento.com/hc/en-us/articles/360003254334 -[SSH to your environment]: {{site.baseurl}}/cloud/env/environments-ssh.html#ssh +[SSH to your environment]: https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/secure-connections.html [any supported version]: {{ page.baseurl }}/install-gde/prereq/mysql.html diff --git a/src/guides/v2.3/config-guide/multi-site/ms_apache.md b/src/guides/v2.3/config-guide/multi-site/ms_apache.md index d5197471167..fa7adb8df9c 100644 --- a/src/guides/v2.3/config-guide/multi-site/ms_apache.md +++ b/src/guides/v2.3/config-guide/multi-site/ms_apache.md @@ -44,8 +44,8 @@ This section discusses how to set values for `MAGE_RUN_TYPE` and `MAGE_RUN_CODE` For more information about `SetEnvIf`, see: -* [Apache 2.2](http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html) -* [Apache 2.4](http://httpd.apache.org/docs/2.4/mod/mod_setenvif.html) +* [Apache 2.2](https://httpd.apache.org/docs/2.2/mod/mod_setenvif.html) +* [Apache 2.4](https://httpd.apache.org/docs/2.4/mod/mod_setenvif.html) {% collapsible To create Apache virtual hosts: %} diff --git a/src/guides/v2.3/config-guide/multi-site/ms_nginx.md b/src/guides/v2.3/config-guide/multi-site/ms_nginx.md index 1b9c9170ede..82afdb2dc9a 100644 --- a/src/guides/v2.3/config-guide/multi-site/ms_nginx.md +++ b/src/guides/v2.3/config-guide/multi-site/ms_nginx.md @@ -103,7 +103,7 @@ This configuration expands upon [Magento Nginx Configuration]({{ page.baseurl }} ln -s /etc/nginx/sites-available/magento magento ``` -For more detail about the map directive, see [nginx documentation on the map directive](http://nginx.org/en/docs/http/ngx_http_map_module.html#map). +For more detail about the map directive, see [nginx documentation on the map directive](https://nginx.org/en/docs/http/ngx_http_map_module.html#map). {% endcollapsible %} diff --git a/src/guides/v2.3/config-guide/prod/config-reference-systemxml.md b/src/guides/v2.3/config-guide/prod/config-reference-systemxml.md index d4158510cf8..bd078c4af22 100644 --- a/src/guides/v2.3/config-guide/prod/config-reference-systemxml.md +++ b/src/guides/v2.3/config-guide/prod/config-reference-systemxml.md @@ -281,7 +281,7 @@ A ``-Tag can have the following children: | `backend_model` | Specifies a different backend model to modify the configured values. | `typeModel` | | `source_model` | Specifies a different source model that provides a specific set of values. | `typeModel` | | `config_path` | Can be used to overwrite the generic config path of a field. | `typeConfigPath` | -| `validate` | Define different validation rules (comma separated). Full reference list of available validation rules is listed below. | `string` | +| `validate` | Define different validation rules (space separated). Full reference list of available validation rules is listed below. | `string` | | `can_be_empty` | Used when `type` is `multiselect` to specify that a field can be empty. | `int` | | `if_module_enabled` | Used to display a field only when a given module is enabled. | `typeModule` | | `base_url` | Used in combination with `upload_dir` for file uploads. | `typeUrl` | diff --git a/src/guides/v2.3/config-guide/prod/config-reference-var-name.md b/src/guides/v2.3/config-guide/prod/config-reference-var-name.md index 58a6e4c560f..becf242ec58 100644 --- a/src/guides/v2.3/config-guide/prod/config-reference-var-name.md +++ b/src/guides/v2.3/config-guide/prod/config-reference-var-name.md @@ -7,11 +7,14 @@ functional_areas: - Setup --- -This topic discusses how to derive an environment variable name knowing a configuration path. You can override Magento configuration settings using environment variables. For example, you can override the value of a payment processor's live URL on your production system. +This topic discusses how to derive an environment variable name knowing a configuration path. You can override Adobe Commerce configuration settings using environment variables. For example, you can override the value of a payment processor's live URL on your production system. -You can override the value of _any_ configuration setting using environment variables; however, we recommend you maintain consistent settings using the shared configuration file, `config.php`, and the system-specific configuration file, `env.php`, as discussed in [Deployment general overview]({{ page.baseurl }}/config-guide/deployment/pipeline/). +You can override the value of _any_ configuration setting using environment variables; however, Adobe recommends you maintain consistent settings using the shared configuration file, `config.php`, and the system-specific configuration file, `env.php`, as discussed in [Deployment general overview]({{ page.baseurl }}/config-guide/deployment/pipeline/). -A environment variable name consists of its scope followed by its configuration path in a particular format. The following sections discuss how to determine a variable name in more detail. +{:.bs-callout-tip} +Check out the [Configure environments]({{ site.baseurl }}/cloud/env/variables-intro.html) topic in the _Cloud_ guide for details on working with variables in {{site.data.var.ece}}. + +An environment variable name consists of its scope followed by its configuration path in a particular format. The following sections discuss how to determine a variable name in more detail. You can use variables for any of the following: @@ -33,7 +36,7 @@ Configuration paths can be found in: The general format of system settings variable names follows: -
        <SCOPE>__<SYSTEM__VARIABLE__NAME>
        +`__` `` can be either: @@ -41,18 +44,18 @@ The general format of system settings variable names follows: Global scope variables have the following format: -
        CONFIG__DEFAULT__<SYSTEM__VARIABLE__NAME>
        + `CONFIG__DEFAULT__` * A specific scope (that is, the setting affects only a specified store view or website) Store view scope variables, for example, have the following format: -
        CONFIG__STORES__ <STORE_VIEW_CODE>__<SYSTEM__VARIABLE__NAME>
        + `CONFIG__STORES__ __` For more information about scopes, see: * [Step 1: Find the website or store view scope value](#deploy-system-vars-scopes) - * [Magento User Guide]({{ site.user_guide_url }}/configuration/scope.html) + * [Magento User Guide topic on scope]({{ site.user_guide_url }}/configuration/scope.html) * [Scope quick reference]({{ site.user_guide_url }}/stores/store-scope-reference.html) `` is the configuration path with double underscore characters substituted for `/`. For more information, see [Step 2: Set system variables](#cloud-system-vars-sys). @@ -124,7 +127,7 @@ For example, to find a website or store view scope value in the Admin: To get these values from the database: -1. If you haven't done so already, log in to your development system as the [file system owner](https://glossary.magento.com/magento-file-system-owner). +1. Log in to your development system as the [file system owner](https://glossary.magento.com/magento-file-system-owner) if you have not done so already. 1. Enter the following command: ```bash @@ -224,9 +227,16 @@ To find the variable name for the shipping country origin: ## How to use environment variables -Set configuration values as variables using PHP's [`$_ENV`](http://php.net/manual/en/reserved.variables.environment.php) associate array. You can set the values in any PHP script that runs when Magento runs, such as `index.php`. +Set configuration values as variables using PHP's [`$_ENV`](https://php.net/manual/en/reserved.variables.environment.php) associate array. You can set the values in any PHP script that runs when Commerce runs. + +{% +include note.html +type='tip' +content=' +Be aware that setting variable values in `index.php` or `pub/index.php` does not always function as expected since different application entry points can be used depending on the web server configuration. By placing `$_ENV` directives in the `app/bootstrap.php` file,regardless of different application entry points, the `$_ENV` directives always execute since the `app/bootstrap.php` file loads as part of the Commerce architecture. +'%} -An example of setting two values follows: +An example of setting two `$_ENV` values follows: ```php $_ENV['CONFIG__DEFAULT__CATALOG__SEARCH__ELASTICSEARCH_SERVER_HOSTNAME'] = 'http://search.example.com'; @@ -240,16 +250,16 @@ include note.html type='warning' content=' -* To use values you set in the `$_ENV` array, you must set `variables_order = "EGPCS"` in your `php.ini` file. For details, see [PHP documentation](http://us.php.net/manual/en/ini.core.php#ini.variables-order). +* To use values that you set in the `$_ENV` array, you must set `variables_order = "EGPCS"`(Environment, Get, Post, Cookie, and Server) in your `php.ini` file. For details, see [PHP documentation](https://www.php.net/manual/en/ini.core.php#ini.variables-order). * For Adobe Commerce on cloud infrastructure, if you are attempting to override configuration settings using the [Project Web Interface](https://devdocs.magento.com/cloud/project/project-webint-basic.html#project-conf-env-var), you must prepend the variable name with `env:`. For example: -![Environment variable example](https://devdocs.magento.com/common/images/cloud/cloud_env_var_example.png)' +![Environment variable example](https://devdocs.magento.com/common/images/cloud/cloud_env_var_example.png) -%} +'%} {:.ref-header} Related topics -* [Magento User Guide discussion of scope]({{ site.user_guide_url }}/configuration/scope.html) +* [Magento User Guide topic on scope]({{ site.user_guide_url }}/configuration/scope.html) * [Magento User Guide scope quick reference]({{ site.user_guide_url }}/stores/store-scope-reference.html) diff --git a/src/guides/v2.3/config-guide/prod/prod_file-sys-perms.md b/src/guides/v2.3/config-guide/prod/prod_file-sys-perms.md index 7ad11f1b66f..a0c55bbab37 100644 --- a/src/guides/v2.3/config-guide/prod/prod_file-sys-perms.md +++ b/src/guides/v2.3/config-guide/prod/prod_file-sys-perms.md @@ -133,7 +133,7 @@ Files in the following directories must be writable by both users in developer a * `pub/media` * `app/etc` -Set the [`setgid`](http://linuxg.net/how-to-set-the-setuid-and-setgid-bit-for-files-in-linux-and-unix/) bit on directories so permissions always inherit from the parent directory. +Set the [`setgid`](https://linuxg.net/how-to-set-the-setuid-and-setgid-bit-for-files-in-linux-and-unix/) bit on directories so permissions always inherit from the parent directory. {:.bs-callout-info} `setgid` applies to directories only, _not_ to files. diff --git a/src/guides/v2.3/config-guide/redis/config-redis.md b/src/guides/v2.3/config-guide/redis/config-redis.md index ca876441a6c..fb39ef7cc6e 100644 --- a/src/guides/v2.3/config-guide/redis/config-redis.md +++ b/src/guides/v2.3/config-guide/redis/config-redis.md @@ -19,10 +19,10 @@ Redis features include: Installing and configuring the Redis software is beyond the scope of this guide. Consult resources such as: -* [Download Redis page](http://redis.io/download) -* [Redis quick start](http://redis.io/topics/quickstart) +* [Download Redis page](https://redis.io/download/) +* [Redis quick start](https://redis.io/docs/getting-started/) * [digitalocean](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-redis) -* [Redis documentation page](http://redis.io/documentation) +* [Redis documentation page](https://redis.io/docs/) ## Set up redis configuration {#config-redis-setup} @@ -41,7 +41,7 @@ You can also enable both the RDB and AOF options at the same time. For additiona For the cache instance, set up the instance so that it is large enough to store your entire Magento cache. Size requirements depend on different factors like the number of products and store views. As a starting point, you can use the size of the cache folder on your file system. For example, if the `var/cache` folder on your file system is 5 GB, set up your Redis instance with at least 5 GB to start. Persistence is not required for the cache instance because the Magento cache can be restored. See also [Redis cache guide](https://redis.io/topics/lru-cache). -For performance tuning, you can also enable the following settings for asynchronous deletion. These settings do not change the behavior of Redis. See also [redis news](http://antirez.com/news/93) for details about asynchronous deletion. +For performance tuning, you can also enable the following settings for asynchronous deletion. These settings do not change the behavior of Redis. ```ini lazyfree-lazy-eviction yes @@ -60,8 +60,8 @@ lazyfree-lazy-user-del yes You can find more information about configuring Redis from the following: -* [David Alger](http://davidalger.com/development/magento/configuring-magento-2-to-use-redis-cache-backend/) -* [TechyTalk](http://www.techytalk.info/configuring-cache-storage-backends-magento-2-redis/) +* [David Alger](https://davidalger.com/posts/configuring-magento-2-to-use-redis-cache-backend/) +* [TechyTalk](https://www.techytalk.info/configuring-cache-storage-backends-magento-2-redis/) ## Next diff --git a/src/guides/v2.3/config-guide/redis/redis-session.md b/src/guides/v2.3/config-guide/redis/redis-session.md index d09c5d87b22..0773f4e19eb 100644 --- a/src/guides/v2.3/config-guide/redis/redis-session.md +++ b/src/guides/v2.3/config-guide/redis/redis-session.md @@ -35,7 +35,7 @@ where |session-save-redis-timeout|timeout|Connection timeout, in seconds.|2.5| |session-save-redis-persistent-id|persistent_identifier|Unique string to enable persistent connections (for example, sess-db0).
        [Known issues with phpredis and php-fpm](https://github.com/nicolasff/phpredis/issues/70). |session-save-redis-db|database|Unique Redis database number, which is recommended to protect against data loss.

        **Important**: If you use Redis for more than one type of caching, the database numbers must be different. It is recommended that you assign the default caching database number to 0, the page caching database number to 1, and the session storage database number to 2.|0| -|session-save-redis-compression-threshold|compression_threshold|Set to 0 to disable compression (recommended when [suhosin.session.encrypt = On](http://suhosin.org/stories/howtos.html#encryption-features)).
        [Known issue with strings of more than 64KB](https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/issues/18).|2048| +|session-save-redis-compression-threshold|compression_threshold|Set to 0 to disable compression (recommended when suhosin.session.encrypt = On).
        [Known issue with strings of more than 64KB](https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/issues/18).|2048| |session-save-redis-compression-lib|compression_library|Options: gzip, lzf, lz4 or snappy.|gzip| |session-save-redis-log-level|log_level|Set to any of the following, listed in order from least verbose to most verbose:
        0 (emergency: only the most severe errors)
        1 (alert: immediate action required)
        2 (critical: application component unavailable)
        3 (error: runtime errors, not critical but must be monitored)
        4 (warning: additional information, recommended)
        5 (notice: normal but significant condition)
        6 (info: informational messages)
        7 (debug: the most information for development or testing only)|1| |session-save-redis-max-concurrency|max_concurrency|Maximum number of processes that can wait for a lock on one session. For large production clusters, set this to at least 10% of the number of PHP processes.|6| diff --git a/src/guides/v2.3/config-guide/secy/secy-cron.md b/src/guides/v2.3/config-guide/secy/secy-cron.md index 12a9dddaf1f..2bbe0cecb91 100644 --- a/src/guides/v2.3/config-guide/secy/secy-cron.md +++ b/src/guides/v2.3/config-guide/secy/secy-cron.md @@ -29,10 +29,10 @@ You don't need to do anything if you use the [`magento cron:run`]({{ page.baseur ## Secure cron with Apache -This section discusses how to secure cron using [HTTP Basic authentication](http://tools.ietf.org/html/rfc2617") with Apache. These instructions are based on Apache 2.2 with CentOS 6. For more information, refer to one of the following resources: +This section discusses how to secure cron using [HTTP Basic authentication](https://datatracker.ietf.org/doc/html/rfc2617) with Apache. These instructions are based on Apache 2.2 with CentOS 6. For more information, refer to one of the following resources: -- [Apache 2.2 authentication and authorization tutorial](http://httpd.apache.org/docs/2.2/howto/auth.html) -- [Apache 2.4 authentication and authorization tutorial](http://httpd.apache.org/docs/2.4/howto/auth.html) +- [Apache 2.2 authentication and authorization tutorial](https://httpd.apache.org/docs/2.2/howto/auth.html) +- [Apache 2.4 authentication and authorization tutorial](https://httpd.apache.org/docs/2.4/howto/auth.html) ### Create a password file diff --git a/src/guides/v2.3/config-guide/secy/secy-xframe.md b/src/guides/v2.3/config-guide/secy/secy-xframe.md index c71109b267a..9b4a6ced891 100644 --- a/src/guides/v2.3/config-guide/secy/secy-xframe.md +++ b/src/guides/v2.3/config-guide/secy/secy-xframe.md @@ -49,4 +49,4 @@ Look for the `X-Frame-Options` value in the headers. ## For more information * [mozilla.org](https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options) -* [security.stackexchange.com](http://security.stackexchange.com/questions/67889/why-do-browsers-enforce-the-same-origin-security-policy-on-iframes) +* [security.stackexchange.com](https://security.stackexchange.com/questions/67889/why-do-browsers-enforce-the-same-origin-security-policy-on-iframes) diff --git a/src/guides/v2.3/config-guide/secy/secy.md b/src/guides/v2.3/config-guide/secy/secy.md index 1f36e7ce323..cbe70ba7624 100644 --- a/src/guides/v2.3/config-guide/secy/secy.md +++ b/src/guides/v2.3/config-guide/secy/secy.md @@ -49,7 +49,7 @@ Related topics [X-Frame-Options header]: {{page.baseurl}}/config-guide/secy/secy-xframe.html [Secure cron.php]: {{page.baseurl}}/config-guide/secy/secy-cron.html [Overview of ownership and permissions]: {{page.baseurl}}/install-gde/prereq/file-sys-perms-over.html -[umask]: http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html +[umask]: https://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html [Security measures against XSS attacks]: {{page.baseurl}}/extension-dev-guide/xss-protection.html [Configuration Guide]: {{page.baseurl}}/config-guide/bk-config-guide.html [Password Hashing]: ./hashing.html diff --git a/src/guides/v2.3/config-guide/varnish/config-varnish-configure.md b/src/guides/v2.3/config-guide/varnish/config-varnish-configure.md index cd256755bb2..f59f2424f6b 100644 --- a/src/guides/v2.3/config-guide/varnish/config-varnish-configure.md +++ b/src/guides/v2.3/config-guide/varnish/config-varnish-configure.md @@ -112,7 +112,6 @@ include note.html type='info' content='If Varnish does not start as a service, you must configure SELinux rules to allow it to run. Consult the following resources: -* [flatlinesecurity](http://flatlinesecurity.com/posts/varnish-4-selinux/) * [CentOS wiki](https://wiki.centos.org/HowTos/SELinux) * [CentOS documentation](https://www.centos.org)' @@ -174,7 +173,7 @@ The preceding shows Varnish running on port 80 and Apache running on port 8080. If you don't see output for `varnishd`, make sure Varnish is running. -[More information about netstat options](http://tldp.org/LDP/nag2/x-087-2-iface.netstat.html) +[More information about netstat options](https://tldp.org/LDP/nag2/x-087-2-iface.netstat.html) ## Install the Magento 2 software {#config-varnish-install} diff --git a/src/guides/v2.3/config-guide/varnish/config-varnish-install.md b/src/guides/v2.3/config-guide/varnish/config-varnish-install.md index c705ca5ffc4..33019d7adc4 100644 --- a/src/guides/v2.3/config-guide/varnish/config-varnish-install.md +++ b/src/guides/v2.3/config-guide/varnish/config-varnish-install.md @@ -13,7 +13,7 @@ Installing the Varnish software is beyond the scope of this guide. For more info * [Installation wiki](https://www.varnish-software.com/wiki/start/index.html) * [Varnish installation guides](https://www.varnish-cache.org/docs) -* [How to install Varnish (Tecmint)](http://www.tecmint.com/install-varnish-cache-web-accelerator) +* [How to install Varnish (Tecmint)](https://www.tecmint.com/install-varnish-cache-web-accelerator/) {:.bs-callout-info} This topic is written for Varnish on CentOS and Apache 2.4. If you are setting up Varnish in a different environment, some commands are likely different. Consult the preceding documentation for more information.

        If you intend to install Varnish modules (vmods), such as saint mode, you should install Varnish by compiling the code, rather than installing from a package. See [Saint mode]({{ page.baseurl }}/config-guide/varnish/config-varnish-advanced.html#saint) for more details. diff --git a/src/guides/v2.3/design-styleguide/content-formats/content-formats.md b/src/guides/v2.3/design-styleguide/content-formats/content-formats.md index 5c3a9ff68b3..173bbfb11e9 100644 --- a/src/guides/v2.3/design-styleguide/content-formats/content-formats.md +++ b/src/guides/v2.3/design-styleguide/content-formats/content-formats.md @@ -48,7 +48,7 @@ When in doubt, spell it out. If there’s a chance a reader doesn't know an abbr ## Addresses -For international formats, see [Bitboost International Mailing Address Formats](http://www.bitboost.com/ref/international-address-formats.html). +For international formats, see [Bitboost International Mailing Address Formats](https://www.bitboost.com/ref/international-address-formats.html). For United States, use these formats: diff --git a/src/guides/v2.3/design-styleguide/content-voice-tone/content-voice-tone.md b/src/guides/v2.3/design-styleguide/content-voice-tone/content-voice-tone.md index 770121c41a9..56c41121c16 100644 --- a/src/guides/v2.3/design-styleguide/content-voice-tone/content-voice-tone.md +++ b/src/guides/v2.3/design-styleguide/content-voice-tone/content-voice-tone.md @@ -43,7 +43,7 @@ To ensure that users with special needs – including the use of screen readers For more guidance, see this summary of [Web Content Accessibility Guidelines (WCAG) 2.0 standards](https://www.w3.org/WAI/WCAG20/glance/). -Also, test your content’s readability. On the [Flesch-Kincaid Readability Test](http://www.readabilityformulas.com/free-readability-formula-tests.php), Admin content should score above 50, which is approximately high-school level. +Also, test your content’s readability. On the [Flesch-Kincaid Readability Test](https://www.readabilityformulas.com/free-readability-formula-tests.php), Admin content should score above 50, which is approximately high-school level. **Use correct terms and content style.** diff --git a/src/guides/v2.3/design-styleguide/iconography/iconography.md b/src/guides/v2.3/design-styleguide/iconography/iconography.md index a03b0771bba..4c656f7efc6 100644 --- a/src/guides/v2.3/design-styleguide/iconography/iconography.md +++ b/src/guides/v2.3/design-styleguide/iconography/iconography.md @@ -90,7 +90,7 @@ To hide these characters from assistive devices, use the "aria-hidden" attribute Modern versions of assistive technologies will announce CSS generated content, as well as specific Unicode characters. To avoid unintentional and confusing output in screen readers hide them with the aria-hidden="true" attribute. -*Source:* [Bootstrap Components](http://getbootstrap.com/components/) +*Source:* [Bootstrap Components](https://getbootstrap.com/docs/5.2/components/accordion/) **Code sample:** @@ -103,7 +103,7 @@ Modern versions of assistive technologies will announce CSS generated content, a ``` -*Source:* [filament group's "Bulletproof Accessible Icon Fonts"](http://www.filamentgroup.com/lab/bulletproof_icon_fonts.html) +*Source:* [filament group's "Bulletproof Accessible Icon Fonts"](https://www.filamentgroup.com/lab/bulletproof_icon_fonts.html) ### How to Easily Make An Icon Font Accessible diff --git a/src/guides/v2.3/ext-best-practices/extension-coding/coding-faq.md b/src/guides/v2.3/ext-best-practices/extension-coding/coding-faq.md index dfe7f1f61b7..d497420285d 100644 --- a/src/guides/v2.3/ext-best-practices/extension-coding/coding-faq.md +++ b/src/guides/v2.3/ext-best-practices/extension-coding/coding-faq.md @@ -13,9 +13,9 @@ This page is a compilation of frequently asked coding questions by the Magento C ### What do I need to know to work with the framework? * [SOLID principles](https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)) - The essential principles needed to create maintainable and extendable code. -* [PHP](http://php.net/) - This is the programming language used for developing Magento 2 code. +* [PHP](https://php.net/) - This is the programming language used for developing Magento 2 code. * [HTML](https://en.wikipedia.org/wiki/HTML), [CSS](https://en.wikipedia.org/wiki/Cascading_Style_Sheets), and [JavaScript](https://www.javascript.com/) - Languages used for [frontend development]({{ page.baseurl }}/frontend-dev-guide/bk-frontend-dev-guide.html). -* [Architecture basics overview]({{ page.baseurl }}/architecture/archi_perspectives/ABasics_intro.html) - Developers should be familiar with the architectural concepts used in Magento such as the [Model-View-Controller](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) pattern and the [Command Query Responsibility Segregation](http://martinfowler.com/bliki/CQRS.html) principle. +* [Architecture basics overview]({{ page.baseurl }}/architecture/archi_perspectives/ABasics_intro.html) - Developers should be familiar with the architectural concepts used in Magento such as the [Model-View-Controller](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) pattern and the [Command Query Responsibility Segregation](https://martinfowler.com/bliki/CQRS.html) principle. * [Dependency Injection]({{ page.baseurl }}/extension-dev-guide/depend-inj.html) - An important [design pattern](https://glossary.magento.com/design-pattern) used in Magento to handle dependencies across classes and modules. ### In Magento 2, how can my extension distinguish between the {{site.data.var.ce}} and the {{site.data.var.ee}}? diff --git a/src/guides/v2.3/ext-best-practices/extension-coding/common-programming-bp.md b/src/guides/v2.3/ext-best-practices/extension-coding/common-programming-bp.md index 767f2836ce6..a4aa23d09ba 100644 --- a/src/guides/v2.3/ext-best-practices/extension-coding/common-programming-bp.md +++ b/src/guides/v2.3/ext-best-practices/extension-coding/common-programming-bp.md @@ -15,9 +15,9 @@ Coding standards are a set of guidelines that describe how code should be writte [Magento's Coding Standards]({{ page.baseurl }}/coding-standards/bk-coding-standards.html) are based on the following: -* [Zend Coding standards](http://framework.zend.com/manual/1.12/en/coding-standard.html) -* [PSR2](http://www.php-fig.org/psr/psr-2/) -* [PSR4](http://www.php-fig.org/psr/psr-4/) +* [Zend Coding standards](https://framework.zend.com/manual/1.12/en/coding-standard.html) +* [PSR2](https://www.php-fig.org/psr/psr-2/) +* [PSR4](https://www.php-fig.org/psr/psr-4/) To help you stick to coding standards, we recommend using the [PHP_CodeSniffer tool](https://github.com/squizlabs/PHP_CodeSniffer). diff --git a/src/guides/v2.3/ext-best-practices/phpstorm/installation.md b/src/guides/v2.3/ext-best-practices/phpstorm/installation.md new file mode 100644 index 00000000000..895ad2cd56c --- /dev/null +++ b/src/guides/v2.3/ext-best-practices/phpstorm/installation.md @@ -0,0 +1,31 @@ +--- +group: extension-best-practices +title: Installation +functional_areas: + - Standards +--- + +To install the Magento PHPStorm plugin: + +* Download the plugin from the [PHPStorm Marketplace](https://plugins.jetbrains.com/plugin/8024-magento-phpstorm). + + ![]({{site.baseurl}}/common/images/phpstorm/download-from-jetbrains.png) + +* Or alternatively, you can install it from your PHPStorm screen. Navigate to **Preferences** > **Plugins** and select Magento PHPStorm. + + ![]({{site.baseurl}}/common/images/phpstorm/install-through-phpstorm.png) + +After the installation, it is necessary to enable the integration with Magento: + +1. Go to **Preferences** > **Frameworks**. +1. Select the **Enable Magento Integration** checkbox. See [Install PHPStorm plugin](https://github.com/magento/magento2-phpstorm-plugin#installation) topic for more information. + +You also need to provide: + +* Magento installation path +* Adobe Commerce version (i.e., `2.4.1`) +* Default license name for new modules (by default, `Proprietary`) + +![]({{site.baseurl}}/common/images/phpstorm/enable-magento-integration.png) + +See the video tutorial [Using the Upgrade Compatibility Tool on PHP Storm](https://experienceleague.adobe.com/docs/commerce-learn/tutorials/upgrade/uct-phpstorm.html?lang=en) page for more information about the Magento PHPStorm plugin. diff --git a/src/guides/v2.3/ext-best-practices/phpstorm/introduction.md b/src/guides/v2.3/ext-best-practices/phpstorm/introduction.md index a84b7c04a32..698d2e3f97c 100644 --- a/src/guides/v2.3/ext-best-practices/phpstorm/introduction.md +++ b/src/guides/v2.3/ext-best-practices/phpstorm/introduction.md @@ -7,6 +7,8 @@ functional_areas: The PHPStorm plugin is a tool created by the community to optimize routine coding operations and improve the {{site.data.var.ee}} development experience. The plugin is compatible with the IntelliJ IDEA Ultimate and PhpStorm IDEs. The functionality includes {{site.data.var.ee}} specific code generation shortcuts, code inspections, autocomplete functionality for configuration files, MFTF tests, and RequireJS. +Check the [Installation]({{site.baseurl}}/guides/v2.3/ext-best-practices/phpstorm/installation.html) topic for detailed steps. + See the [Code generation]({{site.baseurl}}/guides/v2.3/ext-best-practices/phpstorm/code-generation.html) topic for more information. The PHPStorm plugin includes shortcuts for Functional Testing, Require JS mapping, GraphQL, Plugin declaration inspection, code generation, and many more. diff --git a/src/guides/v2.3/ext-best-practices/security/writing-secure-code.md b/src/guides/v2.3/ext-best-practices/security/writing-secure-code.md index afd336fb36c..f3af4cc994a 100644 --- a/src/guides/v2.3/ext-best-practices/security/writing-secure-code.md +++ b/src/guides/v2.3/ext-best-practices/security/writing-secure-code.md @@ -25,7 +25,7 @@ Avoid using these functions in your code. ## Standard PHP library classes to avoid -* [`ArrayObject`](http://php.net/manual/en/class.arrayobject.php) - Using `ArrayObject` class is not recommended because it contains `unserialize` method, which attackers can use to create an exploit. +* [`ArrayObject`](https://php.net/manual/en/class.arrayobject.php) - Using `ArrayObject` class is not recommended because it contains `unserialize` method, which attackers can use to create an exploit. If you need to use the `ArrayObject` class, override the `serialize`/`unserialize` methods so that they use secure logic. Convert objects into arrays to serialize them, and reconstruct the objects using arrays during unserialization. @@ -36,16 +36,16 @@ Avoid using these functions in your code. * [Serialize Library][12] -[0]:http://php.net/manual/en/function.eval.php +[0]:https://php.net/manual/en/function.eval.php [1]:https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet#Code_Injection -[2]:http://php.net/manual/en/function.serialize.php -[3]:http://php.net/manual/en/function.unserialize.php +[2]:https://php.net/manual/en/function.serialize.php +[3]:https://php.net/manual/en/function.unserialize.php [4]:https://www.owasp.org/index.php/PHP_Object_Injection -[5]:http://php.net/manual/en/function.md5.php +[5]:https://php.net/manual/en/function.md5.php [6]:https://www.owasp.org/index.php/Guide_to_Cryptography#Hashes -[7]:http://php.net/manual/en/function.srand.php -[8]:http://programmers.stackexchange.com/questions/76229/predicting-the-output-of-phps-rand -[9]:http://php.net/manual/en/function.mt-rand.php -[10]:http://phpsecurity.readthedocs.io/en/latest/Insufficient-Entropy-For-Random-Values.html -[11]:http://php.net/manual/en/class.arrayobject.php +[7]:https://php.net/manual/en/function.srand.php +[8]:https://softwareengineering.stackexchange.com/questions/76229/predicting-the-output-of-phps-rand +[9]:https://php.net/manual/en/function.mt-rand.php +[10]:https://phpsecurity.readthedocs.io/en/latest/Insufficient-Entropy-For-Random-Values.html +[11]:https://php.net/manual/en/class.arrayobject.php [12]: {{ page.baseurl }}/extension-dev-guide/framework/serializer.html "Serialize Library" diff --git a/src/guides/v2.3/ext-best-practices/tutorials/create-custom-rest-api.md b/src/guides/v2.3/ext-best-practices/tutorials/create-custom-rest-api.md index 9f128092ab7..7bf275cdded 100644 --- a/src/guides/v2.3/ext-best-practices/tutorials/create-custom-rest-api.md +++ b/src/guides/v2.3/ext-best-practices/tutorials/create-custom-rest-api.md @@ -415,7 +415,7 @@ class ProductRepository implements ProductRepositoryInterface } /** - * {@inheritDoc} + * @inheritDoc * * @param int $id * @return ResponseItemInterface @@ -436,7 +436,7 @@ class ProductRepository implements ProductRepositoryInterface } /** - * {@inheritDoc} + * @inheritDoc * * @param RequestItemInterface[] $products * @return void diff --git a/src/guides/v2.3/ext-best-practices/tutorials/create-integration-with-api.md b/src/guides/v2.3/ext-best-practices/tutorials/create-integration-with-api.md index f9e1d3ba4b1..2cfc6443d46 100644 --- a/src/guides/v2.3/ext-best-practices/tutorials/create-integration-with-api.md +++ b/src/guides/v2.3/ext-best-practices/tutorials/create-integration-with-api.md @@ -5,7 +5,7 @@ contributor_name: Atwix contributor_link: https://www.atwix.com/ --- -This tutorial shows you how to create an integration with an external API using [GuzzleHttp](http://docs.guzzlephp.org/en/stable/quickstart.html) library, that is included into Magento package. +This tutorial shows you how to create an integration with an external API using [GuzzleHttp](https://docs.guzzlephp.org/en/stable/quickstart.html) library, that is included into Magento package. Guzzle is a PHP HTTP client that makes it easy to create some integrations with some web services. Its implementation code is more simpler, cleaner and readable, in comparision with cURL. diff --git a/src/guides/v2.3/ext-best-practices/tutorials/serialized-to-json-data-upgrade.md b/src/guides/v2.3/ext-best-practices/tutorials/serialized-to-json-data-upgrade.md index 7aabe2ec11e..e6c34fc2652 100644 --- a/src/guides/v2.3/ext-best-practices/tutorials/serialized-to-json-data-upgrade.md +++ b/src/guides/v2.3/ext-best-practices/tutorials/serialized-to-json-data-upgrade.md @@ -107,7 +107,7 @@ class UpgradeData implements UpgradeDataInterface } /** - * {@inheritdoc} + * @inheritDoc */ public function upgrade( ModuleDataSetupInterface $setup, diff --git a/src/guides/v2.3/extension-dev-guide/bk-extension-dev-guide.md b/src/guides/v2.3/extension-dev-guide/bk-extension-dev-guide.md index c60966d3ace..260932cdf10 100644 --- a/src/guides/v2.3/extension-dev-guide/bk-extension-dev-guide.md +++ b/src/guides/v2.3/extension-dev-guide/bk-extension-dev-guide.md @@ -16,7 +16,7 @@ The Magento application is made up of *Modules*, *Themes*, and *Language Package * [**Language packages**]({{ page.baseurl }}/frontend-dev-guide/translations/xlate.html) assist in internationalization(i18n) and localization by providing translations for strings that display on the storefront and Admin. {:.bs-callout-info} -You must follow a [PSR-4 compliant](http://www.php-fig.org/psr/psr-4/) structure when building a module. +You must follow a [PSR-4 compliant](https://www.php-fig.org/psr/psr-4/) structure when building a module. {:.ref-header} Related topics diff --git a/src/guides/v2.3/extension-dev-guide/build/composer-integration.md b/src/guides/v2.3/extension-dev-guide/build/composer-integration.md index c45cf90a9c5..17631cbd650 100644 --- a/src/guides/v2.3/extension-dev-guide/build/composer-integration.md +++ b/src/guides/v2.3/extension-dev-guide/build/composer-integration.md @@ -12,7 +12,7 @@ Composer reads a `composer.json` file in Magento's root directory to download th We recommend you include `composer.json` in your component's root directory even if you do not intend to distribute it to other merchants using Magento. {:.bs-callout-info} -Magento does not support the [`path`][3] repository. +Magento does not support the [`path`][3] repository pointing to a folder outside of the Magento root. ## composer.json diff --git a/src/guides/v2.3/extension-dev-guide/build/di-xml-file.md b/src/guides/v2.3/extension-dev-guide/build/di-xml-file.md index 4bfa02e45eb..defad987dbb 100644 --- a/src/guides/v2.3/extension-dev-guide/build/di-xml-file.md +++ b/src/guides/v2.3/extension-dev-guide/build/di-xml-file.md @@ -167,7 +167,7 @@ Node Format: : `{numericValue}` -Acceptable values for this type include: integers, floats, or [numeric strings](http://us3.php.net/is_numeric). +Acceptable values for this type include: integers, floats, or [numeric strings](https://www.php.net/is_numeric). --- diff --git a/src/guides/v2.3/extension-dev-guide/build/optimal-dev-environment.md b/src/guides/v2.3/extension-dev-guide/build/optimal-dev-environment.md index 38b878fcf1f..f32d621be94 100644 --- a/src/guides/v2.3/extension-dev-guide/build/optimal-dev-environment.md +++ b/src/guides/v2.3/extension-dev-guide/build/optimal-dev-environment.md @@ -42,7 +42,7 @@ The following is a list of optimizations you can make on your local development * We recommend installing and using the latest supported version of [PHP](https://glossary.magento.com/php) 7 to increase performance. * Replace your MySQL database with [Percona](https://www.percona.com/software/mysql-database/percona-server). -* Make sure you install and enable [PHP OPcache](http://php.net/manual/en/intro.opcache.php). +* Make sure you install and enable [PHP OPcache](https://php.net/manual/en/intro.opcache.php). * Xdebug is off by default. Enable this feature only when you need it because it requires a lot of memory and degrades performance. The `xdebug.max_nesting_level` configuration needs to be set to 200 or greater for Magento. You can increase the memory available to PHP to get an increase in performance with Xdebug on. @@ -50,5 +50,5 @@ The following is a list of optimizations you can make on your local development * To speed up frontend development, [turn off merging of CSS and JavaScript]({{ site.user_guide_url }}/system/file-optimization.html). * Make sure [caching]({{ page.baseurl }}/config-guide/cache.html) is turned on (this is the default behavior). Generally, only page [cache](https://glossary.magento.com/cache) and block cache should be turned off for development and turned back on when testing. -* [Opcache timestamp validation](http://php.net/manual/en/opcache.configuration.php#ini.opcache.validate-timestamps) should always be on for development. +* [Opcache timestamp validation](https://php.net/manual/en/opcache.configuration.php#ini.opcache.validate-timestamps) should always be on for development. Development is impossible with opcache on and revalidation off because any PHP modification would require a cache reset. diff --git a/src/guides/v2.3/extension-dev-guide/cache/page-caching/private-content.md b/src/guides/v2.3/extension-dev-guide/cache/page-caching/private-content.md index 044ab63618a..5888fd5705e 100644 --- a/src/guides/v2.3/extension-dev-guide/cache/page-caching/private-content.md +++ b/src/guides/v2.3/extension-dev-guide/cache/page-caching/private-content.md @@ -36,7 +36,7 @@ To render private content, create a block and a template to display user-agnosti {:.bs-callout-info} Do not use the `$_isScopePrivate` property in your blocks. This property is obsolete and will not work properly. -Replace private data in blocks with placeholders (using [Knockout](http://knockoutjs.com/documentation/introduction.html) syntax). The init scope on the root element is `data-bind="scope: 'compareProducts'"`, where you define the scope name (`compareProducts` in this example) in your [layout](https://glossary.magento.com/layout). +Replace private data in blocks with placeholders (using [Knockout](https://knockoutjs.com/documentation/introduction.html) syntax). The init scope on the root element is `data-bind="scope: 'compareProducts'"`, where you define the scope name (`compareProducts` in this example) in your [layout](https://glossary.magento.com/layout). Initialize the component as follows: diff --git a/src/guides/v2.3/extension-dev-guide/cache/partial-caching.md b/src/guides/v2.3/extension-dev-guide/cache/partial-caching.md index abfda46d554..367e4b5b853 100644 --- a/src/guides/v2.3/extension-dev-guide/cache/partial-caching.md +++ b/src/guides/v2.3/extension-dev-guide/cache/partial-caching.md @@ -7,7 +7,7 @@ menu_order: 1 menu_node: parent --- -Magento uses [Zend_Cache](http://framework.zend.com/manual/1.12/en/zend.cache.html) to interact with the cache storage. However, Magento also has the [Magento\Cache]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Cache) [library](https://glossary.magento.com/library) for implementing Magento-specific caching. These topics discuss how to configure caching and [cache](https://glossary.magento.com/cache) types. +Magento uses [Zend_Cache](https://framework.zend.com/manual/1.12/en/zend.cache.html) to interact with the cache storage. However, Magento also has the [Magento\Cache]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Cache) [library](https://glossary.magento.com/library) for implementing Magento-specific caching. These topics discuss how to configure caching and [cache](https://glossary.magento.com/cache) types. {:.bs-callout-info} By default, file system caching is enabled; no configuration is necessary to use it. This means the cache is located under `/var`. diff --git a/src/guides/v2.3/extension-dev-guide/declarative-schema/db-schema.md b/src/guides/v2.3/extension-dev-guide/declarative-schema/db-schema.md index 84ae6f3d55f..efc114c87f9 100644 --- a/src/guides/v2.3/extension-dev-guide/declarative-schema/db-schema.md +++ b/src/guides/v2.3/extension-dev-guide/declarative-schema/db-schema.md @@ -13,7 +13,7 @@ Each script iteratively adds changes. During the installation process, upgrade s The main disadvantage of this approach is that Magento applies changes blindly. For example, in one version a new database column might be introduced, only to be removed in the next. _Declarative setup_ eliminates this type of unnecessary work. -Declarative setup is based on database structure declarations, and is used in projects such as [Doctrine](http://www.doctrine-project.org/). Schema files declare what the database structure should be, +Declarative setup is based on database structure declarations, and is used in projects such as [Doctrine](https://www.doctrine-project.org/). Schema files declare what the database structure should be, and Magento determines the differences between the current table structure and what it should be. These differences can be represented with atomic SQL operations. Magento prioritizes the declarative schema and executes the declarative install schemas before the [data and schema patches]({{ page.baseurl }}/extension-dev-guide/declarative-schema/data-patches.html). diff --git a/src/guides/v2.3/extension-dev-guide/depend-inj.md b/src/guides/v2.3/extension-dev-guide/depend-inj.md index dd283323909..4c8ae5c262c 100644 --- a/src/guides/v2.3/extension-dev-guide/depend-inj.md +++ b/src/guides/v2.3/extension-dev-guide/depend-inj.md @@ -136,7 +136,7 @@ Related topics * [Programming concepts]({{ page.baseurl }}/extension-dev-guide/api-concepts.html) [Dependency Injection]: https://en.wikipedia.org/wiki/Dependency_injection -[dependency inversion principle]: http://www.oodesign.com/dependency-inversion-principle.html +[dependency inversion principle]: https://www.oodesign.com/dependency-inversion-principle [`di.xml`]: {{ page.baseurl }}/extension-dev-guide/build/di-xml-file.html [`ObjectManager`]: {{ page.baseurl }}/extension-dev-guide/object-manager.html [code compiler tool]: {{ page.baseurl }}/config-guide/cli/config-cli-subcommands-compiler.html diff --git a/src/guides/v2.3/extension-dev-guide/factories.md b/src/guides/v2.3/extension-dev-guide/factories.md index 20442d265f0..dc51562f6ab 100644 --- a/src/guides/v2.3/extension-dev-guide/factories.md +++ b/src/guides/v2.3/extension-dev-guide/factories.md @@ -5,7 +5,7 @@ title: Factories menu_title: Factories menu_order: 6 contributor_name: Classy Llama -contributor_link: http://www.classyllama.com/ +contributor_link: https://www.classyllama.com/ --- ## Overview diff --git a/src/guides/v2.3/extension-dev-guide/framework/serializer.md b/src/guides/v2.3/extension-dev-guide/framework/serializer.md index a49f098c2f8..1fb93fa3457 100644 --- a/src/guides/v2.3/extension-dev-guide/framework/serializer.md +++ b/src/guides/v2.3/extension-dev-guide/framework/serializer.md @@ -25,15 +25,15 @@ For security reasons, `SerializerInterface` implementations, such as the Json an ### Json (default) -The [`Magento\Framework\Serialize\Serializer\Json`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Serialize/Serializer/Json.php) class serializes and unserializes data using the [JSON](http://www.json.org/) format. +The [`Magento\Framework\Serialize\Serializer\Json`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Serialize/Serializer/Json.php) class serializes and unserializes data using the [JSON](https://www.json.org/) format. ### JsonHexTag -The [`Magento\Framework\Serialize\Serializer\JsonHexTag`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Serialize/Serializer/JsonHexTag.php) class serializes and unserializes data using the [JSON](http://www.json.org/) format using the `JSON_HEX_TAG` option enabled. +The [`Magento\Framework\Serialize\Serializer\JsonHexTag`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Serialize/Serializer/JsonHexTag.php) class serializes and unserializes data using the [JSON](https://www.json.org/) format using the `JSON_HEX_TAG` option enabled. ### Base64Json -The [`Magento\Framework\Serialize\Serializer\Base64Json`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Serialize/Serializer/Base64Json.php) class serializes and encodes in the base64 format, and decodes the base64 encoded string and unserializes data using the [JSON](http://www.json.org/) format. +The [`Magento\Framework\Serialize\Serializer\Base64Json`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Serialize/Serializer/Base64Json.php) class serializes and encodes in the base64 format, and decodes the base64 encoded string and unserializes data using the [JSON](https://www.json.org/) format. ### Serialize @@ -41,7 +41,7 @@ The [`Magento\Framework\Serialize\Serializer\Serialize`]({{ site.mage2bloburl }} ### FormData -The [`Magento\Framework\Serialize\Serializer\FormData`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Serialize/Serializer/FormData.php) class unserializes the form data using the [JSON](http://www.json.org/) format. This class does not serialize objects to a form data format. +The [`Magento\Framework\Serialize\Serializer\FormData`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Serialize/Serializer/FormData.php) class unserializes the form data using the [JSON](https://www.json.org/) format. This class does not serialize objects to a form data format. {:.bs-callout-warning} Magento discourages using the Serialize implementation directly because it can lead to security vulnerabilities. Always use the `SerializerInterface` for serializing and unserializing. diff --git a/src/guides/v2.3/extension-dev-guide/indexing.md b/src/guides/v2.3/extension-dev-guide/indexing.md index f5900673ba6..bf39bda2c0b 100644 --- a/src/guides/v2.3/extension-dev-guide/indexing.md +++ b/src/guides/v2.3/extension-dev-guide/indexing.md @@ -12,7 +12,7 @@ Without indexing, Magento would have to calculate the price of every product on ## Indexing terminology Dictionary -: Original data entered to the system. Dictionaries are organized in normal form to facilitate maintenance (updating the data). +: Original data entered to the system. Dictionaries are organized in normal form to facilitate maintenance (updating the data). Index : Representation of the original data for optimized reading and searching. Indexes can contain results of aggregations and various calculations. Index data can be always re-created from a dictionary using a certain algorithm. @@ -52,7 +52,7 @@ The following components are involved in the indexing process:
        • Allows tracking database changes for a certain entity (product, category, etc.) and running change handler.
        • -
        • Emulates the materialized view technology for MySQL using triggers and separate materialization process (provides executing PHP code instead of SQL queries, which allows materializing multiple queries).
        • +
        • Emulates the materialized view technology for MySQL using triggers and separate materialization process (provides executing PHP code instead of SQL queries, which allows materializing multiple queries).
        diff --git a/src/guides/v2.3/extension-dev-guide/intro/intro-composer-gloss.md b/src/guides/v2.3/extension-dev-guide/intro/intro-composer-gloss.md index 6f0fa6f3e38..de2c6b5bdf7 100644 --- a/src/guides/v2.3/extension-dev-guide/intro/intro-composer-gloss.md +++ b/src/guides/v2.3/extension-dev-guide/intro/intro-composer-gloss.md @@ -34,7 +34,7 @@ For example, you might want to list two metapackages in the Commerce Marketplace Merchants do not need to understand that, under the covers, some packages are shared. {:.bs-callout-warning} -You can upload to Commerce Marketplace as many shared packages as you want but you must specifically give components access to them. Failure to do so means your components won't work properly after they're installed by merchants. For more information, see the [Commerce Marketplace User Guide](http://docs.magento.com/marketplace/user_guide/getting-started.html). +You can upload to Commerce Marketplace as many shared packages as you want but you must specifically give components access to them. Failure to do so means your components won't work properly after they're installed by merchants. For more information, see the [Commerce Marketplace User Guide](https://developer.adobe.com/commerce/marketplace/guides/sellers/). {:.ref-header} Related topics diff --git a/src/guides/v2.3/extension-dev-guide/message-queues/config-mq.md b/src/guides/v2.3/extension-dev-guide/message-queues/config-mq.md index 6fe5e886e8e..d7a4fb02040 100644 --- a/src/guides/v2.3/extension-dev-guide/message-queues/config-mq.md +++ b/src/guides/v2.3/extension-dev-guide/message-queues/config-mq.md @@ -264,4 +264,4 @@ See [Migrate message queue configuration]({{page.baseurl}}/extension-dev-guide/m [MySQL]: https://www.mysql.com/ -[RabbitMQ]: http://www.rabbitmq.com +[RabbitMQ]: https://www.rabbitmq.com/ diff --git a/src/guides/v2.3/extension-dev-guide/message-queues/message-queues-stores.md b/src/guides/v2.3/extension-dev-guide/message-queues/message-queues-stores.md index 6a1e6ad9a1d..e722aa8b8c2 100644 --- a/src/guides/v2.3/extension-dev-guide/message-queues/message-queues-stores.md +++ b/src/guides/v2.3/extension-dev-guide/message-queues/message-queues-stores.md @@ -125,7 +125,7 @@ The plugin checks the message headers and sets the current store value in `store * [Install RabbitMQ] -[RabbitMQ]: http://www.rabbitmq.com +[RabbitMQ]: https://www.rabbitmq.com/ [Configure message queues]: {{ page.baseurl }}/extension-dev-guide/message-queues/config-mq.html [Message Queues Overview]: {{ page.baseurl }}/config-guide/mq/rabbitmq-overview.html [Configure message queues]: {{ page.baseurl }}/extension-dev-guide/message-queues/config-mq.html diff --git a/src/guides/v2.3/extension-dev-guide/message-queues/message-queues.md b/src/guides/v2.3/extension-dev-guide/message-queues/message-queues.md index f4031929efb..d222212a0ee 100644 --- a/src/guides/v2.3/extension-dev-guide/message-queues/message-queues.md +++ b/src/guides/v2.3/extension-dev-guide/message-queues/message-queues.md @@ -89,7 +89,7 @@ The following sample introduces a runtime configuration that allows you to redef * [Install RabbitMQ] -[RabbitMQ]: http://www.rabbitmq.com +[RabbitMQ]: https://www.rabbitmq.com/ [Configure message queues]: {{ page.baseurl }}/extension-dev-guide/message-queues/config-mq.html [Message Queues Overview]: {{ page.baseurl }}/config-guide/mq/rabbitmq-overview.html [Configure message queues]: {{ page.baseurl }}/extension-dev-guide/message-queues/config-mq.html diff --git a/src/guides/v2.3/extension-dev-guide/package/package.md b/src/guides/v2.3/extension-dev-guide/package/package.md index 6bd0dc6788f..fee7328748a 100644 --- a/src/guides/v2.3/extension-dev-guide/package/package.md +++ b/src/guides/v2.3/extension-dev-guide/package/package.md @@ -10,4 +10,4 @@ menu_node: parent Use [Composer](https://getcomposer.org/) to package your [module](https://glossary.magento.com/module). * [Using Composer to package a Magento 2 module](package_module.html) -* *Distribution on Commerce Marketplace only*. [Upload your package to the Commerce Marketplace](http://docs.magento.com/marketplace/user_guide/getting-started.html) +* *Distribution on Commerce Marketplace only*. [Upload your package to the Commerce Marketplace](https://developer.adobe.com/commerce/marketplace/guides/sellers/) diff --git a/src/guides/v2.3/extension-dev-guide/package/package_mktpl.md b/src/guides/v2.3/extension-dev-guide/package/package_mktpl.md index 070bf09e640..fce20a91c01 100644 --- a/src/guides/v2.3/extension-dev-guide/package/package_mktpl.md +++ b/src/guides/v2.3/extension-dev-guide/package/package_mktpl.md @@ -7,4 +7,4 @@ menu_order: 100 menu_node: --- -When component development is complete, upload your components to the Commerce Marketplace using the instructions in the [Commerce Marketplace User Guide](http://docs.magento.com/marketplace/user_guide/getting-started.html). +When component development is complete, upload your components to the Commerce Marketplace using the instructions in the [Commerce Marketplace User Guide](https://developer.adobe.com/commerce/marketplace/guides/sellers/). diff --git a/src/guides/v2.3/extension-dev-guide/prepare/dev-summary.md b/src/guides/v2.3/extension-dev-guide/prepare/dev-summary.md index 4299d42eca7..d0932097937 100644 --- a/src/guides/v2.3/extension-dev-guide/prepare/dev-summary.md +++ b/src/guides/v2.3/extension-dev-guide/prepare/dev-summary.md @@ -11,4 +11,4 @@ To develop your component, use the following steps: 1. [Validate your component]({{ page.baseurl }}/extension-dev-guide/validate/test-module.html) 1. Upload the components to the Commerce Marketplace. - See the [Commerce Marketplace User Guide](http://docs.magento.com/marketplace/user_guide/getting-started.html) for details. + See the [Commerce Marketplace User Guide](https://developer.adobe.com/commerce/marketplace/guides/sellers/) for details. diff --git a/src/guides/v2.3/extension-dev-guide/prepare/lifecycle.md b/src/guides/v2.3/extension-dev-guide/prepare/lifecycle.md index 43969b43e17..77dc1e2e538 100644 --- a/src/guides/v2.3/extension-dev-guide/prepare/lifecycle.md +++ b/src/guides/v2.3/extension-dev-guide/prepare/lifecycle.md @@ -153,7 +153,7 @@ use Magento\Framework\Setup\InstallDataInterface; class InstallData implements InstallDataInterface { /** - * {@inheritdoc} + * @inheritDoc */ public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { @@ -267,7 +267,7 @@ class DefaultCustomerGroupsAndAttributes implements DataPatchInterface, PatchVer $this->moduleDataSetup = $moduleDataSetup; } /** - * {@inheritdoc} + * @inheritDoc * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function apply() diff --git a/src/guides/v2.3/extension-dev-guide/proxies.md b/src/guides/v2.3/extension-dev-guide/proxies.md index 6c5115d8e24..36620d7d802 100644 --- a/src/guides/v2.3/extension-dev-guide/proxies.md +++ b/src/guides/v2.3/extension-dev-guide/proxies.md @@ -5,7 +5,7 @@ title: Proxies menu_title: Proxies menu_order: 7 contributor_name: Classy Llama -contributor_link: http://www.classyllama.com/ +contributor_link: https://www.classyllama.com/ --- Magento's [constructor injection pattern]({{ page.baseurl }}/extension-dev-guide/depend-inj.html#constructor-injection) enables you to flexibly manage your class dependencies. However, constructor injection also means that a chain reaction of object instantiation is often the result when you create an object. (The original object has dependencies that have dependencies, and those objects have dependencies, and so on.) @@ -54,7 +54,7 @@ Assume that class `SlowLoading` has a non-trivial performance impact when instan ### Proxies are generated code -Magento has a solution for this situation: proxies. [Proxies](http://en.wikipedia.org/wiki/Proxy_pattern) extend other classes to become lazy-loaded versions of them. That is, a real instance of the class a proxy extends is created only after one of the class's methods is actually called. A proxy implements the same interface as the original class and so can be used as a dependency anywhere the original class can. Unlike its parent, a proxy has only one dependency: the object manager. +Magento has a solution for this situation: proxies. [Proxies](https://en.wikipedia.org/wiki/Proxy_pattern) extend other classes to become lazy-loaded versions of them. That is, a real instance of the class a proxy extends is created only after one of the class's methods is actually called. A proxy implements the same interface as the original class and so can be used as a dependency anywhere the original class can. Unlike its parent, a proxy has only one dependency: the object manager. Proxies are generated code and therefore do not need to be manually written. (See [Code generation]({{ page.baseurl }}/extension-dev-guide/code-generation.html) for more information.) Simply reference a class in the form `\Original\Class\Name\Proxy`, and the class is generated if it does not exist. diff --git a/src/guides/v2.3/extension-dev-guide/searching-with-repositories.md b/src/guides/v2.3/extension-dev-guide/searching-with-repositories.md index c23b3608c72..72dfcdb1c7c 100644 --- a/src/guides/v2.3/extension-dev-guide/searching-with-repositories.md +++ b/src/guides/v2.3/extension-dev-guide/searching-with-repositories.md @@ -438,7 +438,7 @@ Below is an example of how the [`CustomerRepositoryInterface`]({{ site.mage2blob } ... /** - * {@inheritdoc} + * @inheritDoc **/ public function getList(SearchCriteriaInterface $searchCriteria) { diff --git a/src/guides/v2.3/extension-dev-guide/security/non-secure-functions.md b/src/guides/v2.3/extension-dev-guide/security/non-secure-functions.md index 78644ba93db..046f9c0e800 100644 --- a/src/guides/v2.3/extension-dev-guide/security/non-secure-functions.md +++ b/src/guides/v2.3/extension-dev-guide/security/non-secure-functions.md @@ -16,12 +16,12 @@ As a developer, you should avoid using functions that introduce vulnerabilities The following is a list of [PHP](https://glossary.magento.com/php) functions that are known to be vulnerable and exploitable. Avoid using these functions in your code. -* [`eval`](http://php.net/manual/en/function.eval.php) - Using `eval` is considered bad practice because of its ability to [execute arbitrary PHP code](https://cheatsheetseries.owasp.org/cheatsheets/Injection_Prevention_Cheat_Sheet.html). -* [`serialize`](http://php.net/manual/en/function.serialize.php)/[`unserialize`](http://php.net/manual/en/function.unserialize.php) - Attackers can create an exploit for these functions by passing a string with a serialized arbitrary object to the `unserialize` function to [run arbitrary code](https://www.owasp.org/index.php/PHP_Object_Injection). -* [`md5`](http://php.net/manual/en/function.md5.php) - The algorithm for this function is known to have [cryptographic weaknesses](https://www.owasp.org/index.php/Guide_to_Cryptography#Hashes). +* [`eval`](https://php.net/manual/en/function.eval.php) - Using `eval` is considered bad practice because of its ability to [execute arbitrary PHP code](https://cheatsheetseries.owasp.org/cheatsheets/Injection_Prevention_Cheat_Sheet.html). +* [`serialize`](https://php.net/manual/en/function.serialize.php)/[`unserialize`](https://php.net/manual/en/function.unserialize.php) - Attackers can create an exploit for these functions by passing a string with a serialized arbitrary object to the `unserialize` function to [run arbitrary code](https://www.owasp.org/index.php/PHP_Object_Injection). +* [`md5`](https://php.net/manual/en/function.md5.php) - The algorithm for this function is known to have [cryptographic weaknesses](https://www.owasp.org/index.php/Guide_to_Cryptography#Hashes). You should never use this function for hashing passwords or any other sensitive data. * [`sha1`](https://www.php.net/manual/en/function.sha1.php) - It is not recommended to use this function to secure passwords. This hashing algorithm has been compromised. See the [Password Hashing FAQ](https://www.php.net/manual/en/faq.passwords.php#faq.passwords.fasthash) for details and best practices. -* [`srand`](http://php.net/manual/en/function.srand.php) - Using a predetermined number to seed the random number generator results in a [predictable sequence of numbers](http://programmers.stackexchange.com/questions/76229/predicting-the-output-of-phps-rand). -* [`mt_srand`](http://php.net/manual/en/function.mt-rand.php) - This function is a pseudo-random number generator (PRNG) and is [not cryptographically secure](http://phpsecurity.readthedocs.io/en/latest/Insufficient-Entropy-For-Random-Values.html). +* [`srand`](https://php.net/manual/en/function.srand.php) - Using a predetermined number to seed the random number generator results in a [predictable sequence of numbers](https://softwareengineering.stackexchange.com/questions/76229/predicting-the-output-of-phps-rand). +* [`mt_srand`](https://php.net/manual/en/function.mt-rand.php) - This function is a pseudo-random number generator (PRNG) and is [not cryptographically secure](https://phpsecurity.readthedocs.io/en/latest/Insufficient-Entropy-For-Random-Values.html). * [`include`](https://www.php.net/manual/en/function.include.php) - Depends on implementation. If you specifically set the path, then it is secure. An attack could happen if you allow user input to determine the file path without sanitization or checks. For example `include($_GET['file']);`. The remote file may be processed at the remote server, but also on the local server. If the file from the remote server is processed there and outputted only, [readfile()](https://www.php.net/manual/en/function.readfile.php) is much better function to use. Otherwise, special care should be taken to secure the remote script to produce a valid and desired code. diff --git a/src/guides/v2.3/extension-dev-guide/service-contracts/service-to-web-service.md b/src/guides/v2.3/extension-dev-guide/service-contracts/service-to-web-service.md index 300f4a92297..d9a6ad51a6f 100644 --- a/src/guides/v2.3/extension-dev-guide/service-contracts/service-to-web-service.md +++ b/src/guides/v2.3/extension-dev-guide/service-contracts/service-to-web-service.md @@ -2,7 +2,7 @@ group: php-developer-guide title: Configure services as web APIs contributor_name: Classy Llama -contributor_link: http://www.classyllama.com/ +contributor_link: https://www.classyllama.com/ functional_areas: - Services --- diff --git a/src/guides/v2.3/extension-dev-guide/versioning/index.md b/src/guides/v2.3/extension-dev-guide/versioning/index.md index bc16c6e2edf..5b93841ecc1 100644 --- a/src/guides/v2.3/extension-dev-guide/versioning/index.md +++ b/src/guides/v2.3/extension-dev-guide/versioning/index.md @@ -74,7 +74,7 @@ Related Topics [version-dependencies]: {{ page.baseurl }}/extension-dev-guide/versioning/dependencies.html [codebase-changes]: {{ page.baseurl }}/extension-dev-guide/versioning/codebase-changes.html -[semantic-versioning]: http://semver.org/ +[semantic-versioning]: https://semver.org/ [composer-versioning]: https://getcomposer.org/doc/04-schema.md#version -[php-version-compare]: http://php.net/version_compare +[php-version-compare]: https://php.net/version_compare [composer-json]: {{ page.baseurl }}/extension-dev-guide/build/composer-integration.html diff --git a/src/guides/v2.3/frontend-dev-guide/css-topics/css-overview.md b/src/guides/v2.3/frontend-dev-guide/css-topics/css-overview.md index a79ee2df52f..fc11af58ad0 100644 --- a/src/guides/v2.3/frontend-dev-guide/css-topics/css-overview.md +++ b/src/guides/v2.3/frontend-dev-guide/css-topics/css-overview.md @@ -7,7 +7,7 @@ functional_areas: ## Overview -Magento 2 incorporates [Less](http://lesscss.org/), a CSS pre-processor that simplifies the management of complex CSS files. +Magento 2 incorporates [Less](https://lesscss.org/), a CSS pre-processor that simplifies the management of complex CSS files. To define styles of a Magento store, you can use both - CSS and Less stylesheets. Magento application provides a built-in Less UI library, which you can optionally extend. diff --git a/src/guides/v2.3/frontend-dev-guide/css-topics/css-preprocess.md b/src/guides/v2.3/frontend-dev-guide/css-topics/css-preprocess.md index 473061f5d8b..c1506b92a2e 100644 --- a/src/guides/v2.3/frontend-dev-guide/css-topics/css-preprocess.md +++ b/src/guides/v2.3/frontend-dev-guide/css-topics/css-preprocess.md @@ -148,7 +148,7 @@ See the [Compile LESS with Grunt]({{ page.baseurl }}/frontend-dev-guide/css-topi The client-side compilation flow is similar to [server-side](#server-side). The difference is in the set of files, published to `pub/static` on the last step. In the client-side mode, the following files are published to the `pub/static/frontend///` directory: - root source (.less) files with resolved `@magento_import` directive -- [symlinks](http://en.wikipedia.org/wiki/Symbolic_link) to the root source file that do not contain `@magento_import` +- [symlinks](https://en.wikipedia.org/wiki/Symbolic_link) to the root source file that do not contain `@magento_import` - symlinks to all other `.less` files imported recursively by the `@magento_import` and `@import` directives {:.bs-callout-info} @@ -158,7 +158,7 @@ Symlink is not created, and a copy of the processed file is published to `pub/st Client-side LESS compilation is implemented using the native `less.js` library. The default configuration is set in `lib/web/less/config.less.js`; you can change it as needed. -You can find the detailed information about the configuration and other options of the `less.js` used in a browser at [http://lesscss.org/usage/#using-less-in-the-browser](http://lesscss.org/usage/#using-less-in-the-browser). +You can find the detailed information about the configuration and other options of the `less.js` used in a browser at [https://lesscss.org/usage/#using-less-in-the-browser](https://lesscss.org/usage/#using-less-in-the-browser). In client-side compilation mode, most of the stylesheet customizations display immediately after you reload a page in a browser. @@ -177,7 +177,7 @@ To clear the `pub/static/frontend///` directory, delete t ## The `@import` directive rules of usage {#fedg_css-import} -You can import local and remote `.less` and `.css` files in your `.less` Magento stylesheets by using the standard LESS [`@import` directive](http://lesscss.org/features/#import-directives-feature). +You can import local and remote `.less` and `.css` files in your `.less` Magento stylesheets by using the standard LESS [`@import` directive](https://lesscss.org/features/#import-directives-feature). According to the `@import` syntax, specifying the file extension for the imported file is not mandatory. For example, the following notation is allowed: ```less @@ -280,7 +280,7 @@ Example of how `@magento_import` is used and processed in ` [production application mode]: {{page.baseurl}}/config-guide/bootstrap/magento-modes.html#production-mode [LESS PHP library]: https://github.com/wikimedia/less.php -[native `less.js` library]: http://lesscss.org/usage/#using-less-in-the-browser +[native `less.js` library]: https://lesscss.org/usage/#using-less-in-the-browser [Magento fallback mechanism]: {{page.baseurl}}/frontend-dev-guide/themes/theme-inherit.html#theme-inherit-static [publication]: {{page.baseurl}}/config-guide/cli/config-cli-subcommands-static-view.html#config-cli-static-overview [root source files]: {{page.baseurl}}/frontend-dev-guide/css-topics/css-preprocess.html#css_preprocess_terms diff --git a/src/guides/v2.3/frontend-dev-guide/css-topics/css_debug.md b/src/guides/v2.3/frontend-dev-guide/css-topics/css_debug.md index cad4ce6ae60..7d8ff6675d7 100644 --- a/src/guides/v2.3/frontend-dev-guide/css-topics/css_debug.md +++ b/src/guides/v2.3/frontend-dev-guide/css-topics/css_debug.md @@ -5,7 +5,7 @@ functional_areas: - Frontend --- -The topic describes how to install, configure, and use [Grunt JavaScript task runner](http://gruntjs.com/) to compile `.less` files in Magento 2. +The topic describes how to install, configure, and use [Grunt JavaScript task runner](https://gruntjs.com/) to compile `.less` files in Magento 2. ## Prerequisites @@ -125,5 +125,5 @@ To change or override any of these variables, simply create a file in ``]: {{page.baseurl}}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_ref [``]: {{page.baseurl}}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_block [``]: {{page.baseurl}}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_ref diff --git a/src/guides/v2.3/frontend-dev-guide/responsive-web-design/rwd_css.md b/src/guides/v2.3/frontend-dev-guide/responsive-web-design/rwd_css.md index 87ef6f3fa96..a1f5b8664f3 100644 --- a/src/guides/v2.3/frontend-dev-guide/responsive-web-design/rwd_css.md +++ b/src/guides/v2.3/frontend-dev-guide/responsive-web-design/rwd_css.md @@ -138,7 +138,7 @@ Related topics [magento-ui-link]: {{page.baseurl}}/frontend-dev-guide/css-topics/theme-ui-lib.html [css-preprocessing]: {{page.baseurl}}/frontend-dev-guide/css-topics/css-preprocess.html [theme-create]: {{page.baseurl}}/frontend-dev-guide/themes/theme-create.html -[css3-media-queries-wiki]: http://en.wikipedia.org/wiki/Media_queries +[css3-media-queries-wiki]: https://en.wikipedia.org/wiki/Media_queries [breakpoints-link]: {{ page.baseurl }}/frontend-dev-guide/responsive-web-design/rwd_overview.html#fedg_rwd_terms [theme-inherit]: {{ page.baseurl }}/frontend-dev-guide/themes/theme-inherit.html [rwd-breakpoints]: {{ page.baseurl }}/frontend-dev-guide/responsive-web-design/rwd-breakpoints.html diff --git a/src/guides/v2.3/frontend-dev-guide/templates/template-email.md b/src/guides/v2.3/frontend-dev-guide/templates/template-email.md index 6619737d46d..206e516acbf 100644 --- a/src/guides/v2.3/frontend-dev-guide/templates/template-email.md +++ b/src/guides/v2.3/frontend-dev-guide/templates/template-email.md @@ -405,7 +405,7 @@ Exception: argument value can contain spaces if it is enclosed in brackets. ## Supported email clients and devices {#supported-clients} -We test responsive emails using a combination of real devices and [Litmus](http://litmus.com/). Due to the greatly varied level of support among email clients for modern web technologies, not all email clients rendered the emails perfectly. +We test responsive emails using a combination of real devices and [Litmus](https://www.litmus.com/). Due to the greatly varied level of support among email clients for modern web technologies, not all email clients rendered the emails perfectly. We strive to support all current, modern e-mail clients. Let us know about any client-specific issues you might have. ## Newsletter templates {#newsletter-templates} diff --git a/src/guides/v2.3/frontend-dev-guide/templates/template-overview.md b/src/guides/v2.3/frontend-dev-guide/templates/template-overview.md index 143c4039a75..cd8cca414b6 100644 --- a/src/guides/v2.3/frontend-dev-guide/templates/template-overview.md +++ b/src/guides/v2.3/frontend-dev-guide/templates/template-overview.md @@ -10,7 +10,7 @@ functional_areas: In Magento application templates are the part of the view layer. Templates define exactly how the content of [layout blocks]({{ page.baseurl }}/frontend-dev-guide/layouts/layout-overview.html) is presented on a page: order, [CSS](https://glossary.magento.com/css) classes, elements grouping, and so on. In most cases, templates do not contain any logic about whether they will or will not be rendered, this is typically handled by the [layout](https://glossary.magento.com/layout) files. Once a template is called in a layout, it will be displayed. -Default Magento templates are [PHTML](https://glossary.magento.com/phtml) files. Also HTML templates are used for [Knockout JS](http://knockoutjs.com/index.html) scripts. +Default Magento templates are [PHTML](https://glossary.magento.com/phtml) files. Also HTML templates are used for [Knockout JS](https://knockoutjs.com/index.html) scripts. {:.bs-callout-info} [The Magento template rendering subsystem]({{ page.baseurl }}/frontend-dev-guide/templates/template-overview.html) supports multiple template engines, including the default PHP-based engine for processing PHTML templates. diff --git a/src/guides/v2.3/frontend-dev-guide/tools/using_grunt.md b/src/guides/v2.3/frontend-dev-guide/tools/using_grunt.md index 3b78063c5c4..ce138feae78 100644 --- a/src/guides/v2.3/frontend-dev-guide/tools/using_grunt.md +++ b/src/guides/v2.3/frontend-dev-guide/tools/using_grunt.md @@ -6,7 +6,7 @@ functional_areas: - Tools --- -The topic describes how to install and configure [Grunt JavaScript task runner](http://gruntjs.com/). +The topic describes how to install and configure [Grunt JavaScript task runner](https://gruntjs.com/). ## Overview @@ -48,7 +48,7 @@ Magento has built-in Grunt tasks configured, but there are still several steps y npm update ``` -1. (Optional) If you want to use Grunt for "watching" changes automatically, without reloading pages in a browser each time, install the [LiveReload extension](http://livereload.com/extensions/) in your browser. +1. (Optional) If you want to use Grunt for "watching" changes automatically, without reloading pages in a browser each time, install the [LiveReload extension](https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei?hl=en) in your browser. ## Grunt configuration file {#grunt_config} diff --git a/src/guides/v2.3/frontend-dev-guide/validations/custom-validation.md b/src/guides/v2.3/frontend-dev-guide/validations/custom-validation.md index 312b5960f7a..5dc0576e377 100644 --- a/src/guides/v2.3/frontend-dev-guide/validations/custom-validation.md +++ b/src/guides/v2.3/frontend-dev-guide/validations/custom-validation.md @@ -39,7 +39,7 @@ var config = { define(['jquery'], function($) { 'use strict'; - return function() { + return function(targetWidget) { $.validator.addMethod( 'validate-five-words', function(value, element) { @@ -47,6 +47,7 @@ define(['jquery'], function($) { }, $.mage.__('Please enter exactly five words') ) + return targetWidget; } }); ``` diff --git a/src/guides/v2.3/get-started/bk-get-started-api.md b/src/guides/v2.3/get-started/bk-get-started-api.md index a632e23b2e2..b0e7a1c3e28 100644 --- a/src/guides/v2.3/get-started/bk-get-started-api.md +++ b/src/guides/v2.3/get-started/bk-get-started-api.md @@ -39,7 +39,7 @@ The APIs can be used to perform a wide array of tasks. For example: * Integrate with CRM (Customer Relationship Management) or ERP (Enterprise Resource Planning) backend systems, such as Salesforce or Xero. -* Integrate with a [CMS](https://glossary.magento.com/cms) (Content Management System). At present, content tagging is not supported. +* Integrate with a [CMS](https://glossary.magento.com/cms) (Content Management System). Currently, content tagging is not supported. * Create [JavaScript](https://glossary.magento.com/javascript) widgets in the Magento [storefront](https://glossary.magento.com/storefront) or on the [Admin](https://glossary.magento.com/admin) panel. The [widget](https://glossary.magento.com/widget) makes AJAX calls to access services. diff --git a/src/guides/v2.3/get-started/create-integration.md b/src/guides/v2.3/get-started/create-integration.md index 793caf66dd0..4fc3b9eb470 100644 --- a/src/guides/v2.3/get-started/create-integration.md +++ b/src/guides/v2.3/get-started/create-integration.md @@ -4,7 +4,6 @@ subgroup: Web APIs title: Create an integration menu_title: Create an integration menu_order: 1 - --- An **integration** enables third-party services to call the Magento web APIs. The Magento APIs currently supports Accounting, Enterprise Resource Planning (ERP), Customer Relationship Management (CRM), Product Information Management (PIM), and marketing automation systems out of the box. @@ -66,19 +65,13 @@ To develop a module, you must: ```xml - - - - - - - - + + + + + + + ``` Module `Magento_Integration` is added to "sequence" to be loaded first. It helps to avoid the issue, when a module with integration config loaded, that leads to a malfunction. @@ -107,16 +100,12 @@ To develop a module, you must: } ``` - For more information, see [Create a component]({{ page.baseurl }}/extension-dev-guide/build/create_component.html). + For more information, see [Create a component]({{ page.baseurl }}/extension-dev-guide/build/create_component.html). 1. **Create a `registration.php` file** The `registration.php` registers the module with the Magento system. It must be placed in the module's root directory. ```php customer data object in the POST call payload, specify [JSON](http://www.json.com/) or [XML](https://glossary.magento.com/xml) request body on the call. +1. To pass the customer data object in the POST call payload, specify JSON or [XML](https://glossary.magento.com/xml) request body on the call. ### Customers Search API request example {#customers-search-api-request-example} diff --git a/src/guides/v2.3/graphql/custom-filters.md b/src/guides/v2.3/graphql/custom-filters.md index cb9ec707358..a5e9c0efeb9 100644 --- a/src/guides/v2.3/graphql/custom-filters.md +++ b/src/guides/v2.3/graphql/custom-filters.md @@ -18,7 +18,7 @@ You have several options when enabling a custom attribute (or any attribute that The [`filter`]({{page.baseurl}}/graphql/queries/products.html#ProductFilterInput) definition for your custom attribute requires one of the following input data types: - `FilterEqualTypeInput` - Specify this data type when the **Catalog Input Type for Store Owner** field for your custom attribute is set to Yes/No, Select, or Multiple select. Your filter can contain the `eq` or `in` attribute. Use the `eq` attribute to exactly match the specified string. Use the `in` attribute to filter on a comma-separated list of values. -- `FilterMatchTypeInput` - Specify this data type when the **Catalog Input Type for Store Owner** field for your custom attribute is set to Text Field or Text Area. Your filter must contain the `match` attribute, which will return all items that exactly match the specified string. +- `FilterMatchTypeInput` - Specify this data type when the **Catalog Input Type for Store Owner** field for your custom attribute is set to Text Field or Text Area. Your filter must contain the `match` attribute, which will return all items that partially fuzzy match the specified string. - `FilterRangeTypeInput` - Specify this data type when the **Catalog Input Type for Store Owner** field for your custom attribute is set to Price or Date. Your filter can contain one or both of the `to` and `from` attributes, which serve to provide a range of values to filter on. ## Example diff --git a/src/guides/v2.3/graphql/index.md b/src/guides/v2.3/graphql/index.md index 91c2de97e8c..1665fc6d05f 100755 --- a/src/guides/v2.3/graphql/index.md +++ b/src/guides/v2.3/graphql/index.md @@ -4,7 +4,7 @@ title: GraphQL Overview landing-page: GraphQL Developer's Guide --- -[GraphQL](http://graphql.org/) is a data query language developed internally by Facebook in 2012 before being publicly released in 2015. Magento implements GraphQL to provide an alternative to REST and SOAP web APIs for frontend development. +[GraphQL](https://graphql.org/) is a data query language developed internally by Facebook in 2012 before being publicly released in 2015. Magento implements GraphQL to provide an alternative to REST and SOAP web APIs for frontend development. ## The current state of Magento GraphQL diff --git a/src/guides/v2.3/graphql/protected-mutations.md b/src/guides/v2.3/graphql/protected-mutations.md index f9d4552ccbc..6a8d9f2e3aa 100644 --- a/src/guides/v2.3/graphql/protected-mutations.md +++ b/src/guides/v2.3/graphql/protected-mutations.md @@ -3,10 +3,19 @@ group: graphql title: Protected mutations --- -If CAPTCHA is enabled on pages requiring shopper input, then in most cases, the corresponding mutations that send requests to the Magento server must include the shopper's CAPTCHA response. Supply the shopper's response in the HTTP `X-Captcha` header. The exception to this policy is that you do not send the CAPTCHA response if you specify an integration authorization token in the header of the mutation. +If CAPTCHA or reCAPTCHA is enabled on pages requiring shopper input, then in most cases, the corresponding mutations that send requests to the Magento server must include an HTTP header that contains a value entered by the shopper (for CAPTCHA) or generated by the Google API (for reCAPTCHA). However, if you specify an integration authorization token in the header of the mutation, then you do not supply a header specific to CAPTCHA or reCAPTCHA. + +The HTTP `X-Captcha` and `X-ReCaptcha` headers: + +* Cannot be received by an automated script or a non-UI API call. They are captured and returned by the UI Web form only. +* Are optional in protected mutation API calls that provide **_integration authorization_** tokens only. They cannot be skipped when you provide an Admin or Bearer token. + +## CAPTCHA The following table lists the forms that can be configured to require CAPTCHA. Go to **Stores** > **Configuration** > **Customers** > **Customer Configuration** > **CAPTCHA** > **Forms** to enable or disable CAPTCHA on these forms. +The mutation that corresponds to a CAPTCHA-enabled form must include the HTTP `X-Captcha` header, along with the text the shopper entered in response to the CAPTCHA challenge. + Form name | Mutation --- | --- Add Gift Card Code | `applyGiftCardToCart` @@ -22,6 +31,25 @@ Payflow Pro | `setPaymentMethodOnCart`, `setPaymentMethodAndPlaceOrder` Send to Friend Form | `sendEmailToFriend` Share Wishlist Form | Not applicable +## reCAPTCHA + +The following table lists the forms that can be configured to require reCAPTCHA. Go to **Stores** > **Configuration** > **Security** > **Google reCAPTCHA Storefront** > **Storefront** to enable or disable reCAPTCHA on these forms. If reCAPTCHA is enabled, unless an integration token is provided, always specify the HTTP `X-ReCaptcha` header and the value generated by the Google API. + +Field name | Mutation +--- | --- +Enable for Customer Login | `generateCustomerToken` +Enable for Forgot Password | `changeCustomerPassword` +Enable for Create New Customer Account | `createCustomer` +Enable for Edit Customer Account | `updateCustomer` +Enable for Contact Us | Not applicable +Enable for Product Review | `createProductReview` +Enable for Newsletter Subscription | `subscribeEmailToNewsletter` +Enable for Send To Friend | `sendEmailToFriend` +Enable for PayPal PayflowPro payment form | `createPayflowProToken` +Enable for Braintree payment form | Not applicable +Enable for Checkout/Placing Order | `setPaymentMethodOnCart`, `setPaymentMethodAndPlaceOrder` +Enable for Coupon Codes | `applyCouponToCart` + {:.ref-header} Related topics diff --git a/src/guides/v2.3/graphql/queries/products.md b/src/guides/v2.3/graphql/queries/products.md index 9f63e818daf..6f0a3a5fb91 100644 --- a/src/guides/v2.3/graphql/queries/products.md +++ b/src/guides/v2.3/graphql/queries/products.md @@ -81,11 +81,11 @@ Attribute | Data type | Description #### FilterMatchTypeInput attributes -Use the `FilterMatchTypeInput` object to construct a filter that returns products that exactly match a string or contain the specified pattern. +Use the `FilterMatchTypeInput` object to construct a filter that returns products that partially fuzzy match a string or contain the specified pattern. Attribute | Data type | Description --- | --- | --- -`match` | String | Use this attribute to exactly match the specified string. For example, to filter on a specific SKU, specify a value such as `24-MB01` +`match` | String | Use this attribute to partially fuzzy match the specified string. For example, to filter on a specific SKU, specify a value such as `24-MB01` You must specify a `FilterMatchTypeInput` object to filter on a custom product attribute of the following types: diff --git a/src/guides/v2.3/howdoi/checkout/checkout_address.md b/src/guides/v2.3/howdoi/checkout/checkout_address.md index e7f0cd7bd4c..197cbc6fb08 100644 --- a/src/guides/v2.3/howdoi/checkout/checkout_address.md +++ b/src/guides/v2.3/howdoi/checkout/checkout_address.md @@ -79,7 +79,7 @@ define([ ## Step 2: Create a template for the shipping address renderer {#template} -In your custom module directory, create a new `/view/frontend/web/template/.html` file. The template can use [Knockout JS](http://knockoutjs.com/) syntax. +In your custom module directory, create a new `/view/frontend/web/template/.html` file. The template can use [Knockout JS](https://knockoutjs.com/) syntax. The template should contain a button for setting the address to be used for shipping. @@ -289,7 +289,7 @@ If you want your custom address type to be displayed here as well, you need to c ### Add template for displaying the address in the Ship-To section -In your custom module directory create a new `/view/frontend/web/template/.html` file. The template can use [Knockout JS](http://knockoutjs.com/) syntax. +In your custom module directory create a new `/view/frontend/web/template/.html` file. The template can use [Knockout JS](https://knockoutjs.com/) syntax. You can use the code from the default template: [app/code/Magento/Checkout/view/frontend/web/template/shipping-information/address-renderer/default.html]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Checkout/view/frontend/web/template/shipping-information/address-renderer/default.html). diff --git a/src/guides/v2.3/howdoi/checkout/checkout_payment.md b/src/guides/v2.3/howdoi/checkout/checkout_payment.md index 7fae086a135..90dc3d58b9f 100644 --- a/src/guides/v2.3/howdoi/checkout/checkout_payment.md +++ b/src/guides/v2.3/howdoi/checkout/checkout_payment.md @@ -228,7 +228,7 @@ If your [module](https://glossary.magento.com/module) adds several payment metho ## Step 3: Create the template for the payment method component {#template} -In your custom module directory create a new `/view/frontend/web/template/.html` file. The template can use [Knockout JS](http://knockoutjs.com/) syntax. You can find a sample `.html` template in any module implementing payment methods, for example the Magento_Authorizenet module. +In your custom module directory create a new `/view/frontend/web/template/.html` file. The template can use [Knockout JS](https://knockoutjs.com/) syntax. You can find a sample `.html` template in any module implementing payment methods, for example the Magento_Authorizenet module. The template for rendering the Authorize.Net payment method in checkout is [`/view/frontend/web/template/payment/authorizenet-directpost.html`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Authorizenet/view/frontend/web/template/payment/authorizenet-directpost.html). diff --git a/src/guides/v2.3/howdoi/customize-modifier-class.md b/src/guides/v2.3/howdoi/customize-modifier-class.md index 8a414ae0000..3b32010f130 100644 --- a/src/guides/v2.3/howdoi/customize-modifier-class.md +++ b/src/guides/v2.3/howdoi/customize-modifier-class.md @@ -81,7 +81,7 @@ class Example extends AbstractModifier } /** - * {@inheritdoc} + * @inheritDoc */ public function modifyData(array $data) { diff --git a/src/guides/v2.3/index.html b/src/guides/v2.3/index.html index d0aa4b4174b..895220e4409 100644 --- a/src/guides/v2.3/index.html +++ b/src/guides/v2.3/index.html @@ -3,7 +3,7 @@ ---
        -
        PHP 7.3 reached end of support in December 2021 and {{site.data.var.ee}} 2.3.x reaches end of support in September 2022. You may want to consider planning your upgrade now to {{site.data.var.ee}} 2.4.x and PHP 7.4.x to help maintain PCI compliance.
        +
        {{site.data.var.ee}} 2.3 reached end of support in September 2022.
        diff --git a/src/guides/v2.3/install-gde/install/cli/dev_downgrade.md b/src/guides/v2.3/install-gde/install/cli/dev_downgrade.md index 9f4afccffd4..12482b5f366 100644 --- a/src/guides/v2.3/install-gde/install/cli/dev_downgrade.md +++ b/src/guides/v2.3/install-gde/install/cli/dev_downgrade.md @@ -4,8 +4,8 @@ functional_areas: - Install - System - Setup -migrated_to: https://developer.adobe.com/commerce/contributor/guides/install/change-version/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/install/change-version/ +status: migrated --- This topic discusses how a contributing developer can change versions of the Magento software after cloning the `develop` branch. This might be necessary to perform some tasks that require a specific Magento version other than `develop`. diff --git a/src/guides/v2.3/install-gde/install/cli/install-cli-adminurl.md b/src/guides/v2.3/install-gde/install/cli/install-cli-adminurl.md index 1cd23e973cc..9d4519650f6 100644 --- a/src/guides/v2.3/install-gde/install/cli/install-cli-adminurl.md +++ b/src/guides/v2.3/install-gde/install/cli/install-cli-adminurl.md @@ -15,7 +15,7 @@ In addition to the command arguments discussed here, see [Common arguments]({{ p Before you run this command, you must [Create or update the deployment configuration]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-deployment.html). ## Display the Admin URI {#instgde-cli-displayurl} -This section discusses how to use the command line to display the [Admin](https://glossary.magento.com/admin) Uniform Resource Identifier ([URI](http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2)). +This section discusses how to use the command line to display the [Admin](https://glossary.magento.com/admin) Uniform Resource Identifier ([URI](https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2)). Command options: diff --git a/src/guides/v2.3/install-gde/install/cli/install-cli-install.md b/src/guides/v2.3/install-gde/install/cli/install-cli-install.md index 53bc668fc95..0d898730bcf 100644 --- a/src/guides/v2.3/install-gde/install/cli/install-cli-install.md +++ b/src/guides/v2.3/install-gde/install/cli/install-cli-install.md @@ -84,7 +84,7 @@ In {{site.data.var.ee}} version 2.2.8 and later, you can create the Admin user d |--- |--- |--- | |`--base-url`|Base URL to use to access your Admin and storefront in any of the following formats:

        `http[s]:////`.

        **Note:** The scheme (http:// or https://) and a trailing slash are both required.

        `` is the docroot-relative path in which to install the Magento software. Depending on how you set up your web server and virtual hosts, the path might be magento2 or it might be blank.

        To access Magento on localhost, you can use either `http://127.0.0.1//` or `http://127.0.0.1//`.

        - `{{base_url}}` which represents a base URL defined by a virtual host setting or by a virtualization environment like Docker. For example, if you set up a virtual host for Magento with the hostname magento.example.com, you can install the Magento software with `--base-url={{base_url}}` and access the Admin with a URL like http://magento.example.com/admin.|Yes| |`--backend-frontname`|Uniform Resource Identifier (URI) to access the Admin. You can omit this parameter to let Magento generate a random URI for you with the following pattern admin_jkhgdfq.

        We recommend a random URI for security purposes. A random URI is harder for hackers or malicious software to exploit.

        The URI displays at the end of the installation. You can display it later at any time using the magento info:adminuri command.

        If you choose to enter a value, we recommend you not use a common word like admin, backend, and so on. The Admin URI can contain alphanumeric values and the underscore character (`_`) only.|No| -|`--db-host`|Use any of the following:

        - The database server's fully qualified hostname or IP address.

        - `localhost` (default) or `127.0.0.1` if your database server is on the same host as your web server.localhost means the MySQL client library uses UNIX sockets to connect to the database. `127.0.0.1` causes the client library to use the TCP protocol. For more information about sockets, see the [PHP PDO_MYSQL documentation](http://php.net/manual/en/ref.pdo-mysql.php).

        **Note:** You can optionally specify the database server port in its hostname like www.example.com:9000|Yes| +|`--db-host`|Use any of the following:

        - The database server's fully qualified hostname or IP address.

        - `localhost` (default) or `127.0.0.1` if your database server is on the same host as your web server.localhost means the MySQL client library uses UNIX sockets to connect to the database. `127.0.0.1` causes the client library to use the TCP protocol. For more information about sockets, see the [PHP PDO_MYSQL documentation](https://php.net/manual/en/ref.pdo-mysql.php).

        **Note:** You can optionally specify the database server port in its hostname like www.example.com:9000|Yes| |`--db-name`|Name of the Magento database instance in which you want to install the Magento database tables.

        Default is `magento2`.|Yes| |`--db-user`|Username of the Magento database instance owner.

        Default is `root`.|Yes| |`--db-password`|Magento database instance owner's password.|Yes| diff --git a/src/guides/v2.3/install-gde/install/cli/install-cli-subcommands-deployment.md b/src/guides/v2.3/install-gde/install/cli/install-cli-subcommands-deployment.md index 991275cac31..a909395e86d 100644 --- a/src/guides/v2.3/install-gde/install/cli/install-cli-subcommands-deployment.md +++ b/src/guides/v2.3/install-gde/install/cli/install-cli-subcommands-deployment.md @@ -37,15 +37,15 @@ The following table discusses the meanings of installation parameters and values |Parameter|Value|Required?| |--- |--- |--- | -|`--backend-frontname`|Uniform Resource Identifier ([URI](http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2)) to access the Admin.

        To prevent exploits, we recommend you not use a common word like admin, backend, and so on. The Admin URI can contain alphanumeric values and the underscore character (`_`) only.|No| -|`--db-host`|Use any of the following:

        - The database server's fully qualified hostname or IP address.

        - `localhost` (default) or `127.0.0.1` if your database server is on the same host as your web server. localhost means the MySQL client library uses UNIX sockets to connect to the database. `127.0.0.1` causes the client library to use the TCP protocol. For more information about sockets, see the [PHP PDO_MYSQL documentation](http://php.net/manual/en/ref.pdo-mysql.php).

        **Note:** You can optionally specify the database server port in its hostname like `www.example.com:9000`|No| +|`--backend-frontname`|Uniform Resource Identifier ([URI](https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2)) to access the Admin.

        To prevent exploits, we recommend you not use a common word like admin, backend, and so on. The Admin URI can contain alphanumeric values and the underscore character (`_`) only.|No| +|`--db-host`|Use any of the following:

        - The database server's fully qualified hostname or IP address.

        - `localhost` (default) or `127.0.0.1` if your database server is on the same host as your web server. localhost means the MySQL client library uses UNIX sockets to connect to the database. `127.0.0.1` causes the client library to use the TCP protocol. For more information about sockets, see the [PHP PDO_MYSQL documentation](https://php.net/manual/en/ref.pdo-mysql.php).

        **Note:** You can optionally specify the database server port in its hostname like `www.example.com:9000`|No| |`--db-name`|Name of the Magento database instance in which you want to install the Magento database tables.

        Default is `magento2`.|No| |`--db-user`|Username of the Magento database instance owner.

        Default is `root`.|No| |`--db-password`|Magento database instance owner's password.|No| |`--db-prefix`|Use only if you're installing the Magento database tables in a database instance that has Magento tables in it already.

        In that case, use a prefix to identify the Magento tables for this installation. Some customers have more than one Magento instance running on a server with all tables in the same database.

        The prefix can be a maximum of five characters in length. It must begin with a letter and can include only letters, numbers, and underscore characters.

        This option enables those customers to share the database server with more than one Magento installation.|No| |`--session-save`|Use any of the following:

        - `db` to store session data in the [database]({{ page.baseurl }}/extension-dev-guide/cache/partial-caching/database-caching.html). Choose database storage if you have a clustered database; otherwise, there might not be much benefit over file-based storage.

        - `files` to store session data in the file system. File-based session storage is appropriate unless the Magento file system access is slow, you have a clustered database, or you want to store session data in Redis.

        - `redis` to store session data in [Use Redis for session storage]({{ page.baseurl }}/config-guide/redis/config-redis.html>Redis. If you will be using Redis for default or page caching, Redis must be already installed. |No| |`--key`|If you have one, specify a key to encrypt [sensitive data](#sens-data) in the Magento database. If you don't have one, Magento generates one for you.|No| -|`--db-init-statements`|Advanced MySQL configuration parameter. Uses database initialization statements to run when connecting to the MySQL database.

        Default is `SET NAMES utf8;`.

        Consult a reference similar to [this one](http://dev.mysql.com/doc/refman/5.6/en/server-options.html) before you set any values.|No| +|`--db-init-statements`|Advanced MySQL configuration parameter. Uses database initialization statements to run when connecting to the MySQL database.

        Default is `SET NAMES utf8;`.

        Consult a reference similar to [this one](https://dev.mysql.com/doc/refman/5.6/en/server-options.html) before you set any values.|No| |`--http-cache-hosts`|Comma-separated list of HTTP cache gateway hosts to which to send purge requests. (For example, Varnish servers.) Use this parameter to specify the host or hosts to purge in the same request. (It doesn't matter if you have only one host or many hosts.)

        Format must be `:`, where you can omit `` if it's port 80. For example, `--http-cache-hosts=192.0.2.100,192.0.2.155:6081`. Do not separate hosts with a space character.|No| ## Import configuration data diff --git a/src/guides/v2.3/install-gde/install/post-install-config.md b/src/guides/v2.3/install-gde/install/post-install-config.md index f9bb0a7b591..17b483321ce 100644 --- a/src/guides/v2.3/install-gde/install/post-install-config.md +++ b/src/guides/v2.3/install-gde/install/post-install-config.md @@ -11,6 +11,7 @@ Now that you've finished installing the Magento application, you need to configu ## Set up cron {#post-install-cron} cron---the UNIX task scheduler---is critical to Magento's day-to-day operations. It schedules things like reindexing, newsletters, e-mails, sitemaps, and so on. A *crontab* is a cron configuration. +You must install Magento services in the *crontab*, or some core functionality (as well as some third-party extensions) will not function properly. {% include config/setup-cron_2.3_how-to.md %} @@ -50,8 +51,8 @@ The UNIX `logrotate` utility enables you to administer systems that generate lar For more information, see one of the following: * [HowTo: The Ultimate Logrotate Command Tutorial with 10 Examples](https://www.thegeekstuff.com/2010/07/logrotate-examples) -* [stackexchange](http://unix.stackexchange.com/questions/85662/how-to-properly-automatically-manually-rotate-log-files-for-production-rails-app) -* [logrotate man page](http://linuxconfig.org/logrotate-8-manual-page) +* [stackexchange](https://unix.stackexchange.com/questions/85662/how-to-properly-automatically-manually-rotate-log-files-for-production-rails-app) +* [logrotate man page](https://linuxconfig.org/logrotate-8-manual-page) ### Set up iptables rules to enable various Magento services to communicate. @@ -60,7 +61,7 @@ Whether you have one server or many, you must open ports in the firewall to enab More information: * Ubuntu: [Ubuntu documentation page](https://help.ubuntu.com/community/IptablesHowTo). -* CentOS: [CentOS how-to](http://wiki.centos.org/HowTos/Network/IPTables). +* CentOS: [CentOS how-to](https://wiki.centos.org/HowTos/Network/IPTables). ### Security Enhanced Linux (SELinux) rules diff --git a/src/guides/v2.3/install-gde/install/prepare-install.md b/src/guides/v2.3/install-gde/install/prepare-install.md index 96345533a62..e41ed9b8365 100644 --- a/src/guides/v2.3/install-gde/install/prepare-install.md +++ b/src/guides/v2.3/install-gde/install/prepare-install.md @@ -8,7 +8,7 @@ functional_areas: ## Introduction to Magento installation dependencies {#install-update-depend} -We now use [Composer](http://getcomposer.org) to resolve dependencies before you install the Magento software and extensions. +We now use [Composer](https://getcomposer.org/) to resolve dependencies before you install the Magento software and extensions. [Composer](https://glossary.magento.com/composer) is a separate application that manages [PHP](https://glossary.magento.com/php) dependencies. Before you can install the Magento software, you must perform the following tasks in the order shown: diff --git a/src/guides/v2.3/install-gde/prereq/apache.md b/src/guides/v2.3/install-gde/prereq/apache.md index fc1f074dccd..84568b4bce1 100644 --- a/src/guides/v2.3/install-gde/prereq/apache.md +++ b/src/guides/v2.3/install-gde/prereq/apache.md @@ -23,7 +23,7 @@ Magento supports Apache 2.4.x. ## Important: Apache rewrites and .htaccess {#apache-help-rewrite} -This topic discusses how to enable Apache 2.4 rewrites and specify a setting for the [distributed configuration file, `.htaccess`](http://httpd.apache.org/docs/current/howto/htaccess.html). +This topic discusses how to enable Apache 2.4 rewrites and specify a setting for the [distributed configuration file, `.htaccess`](https://httpd.apache.org/docs/current/howto/htaccess.html). Magento uses server rewrites and `.htaccess` to provide directory-level instructions for Apache. The following instructions are included in all of the other sections in this topic as well. @@ -137,7 +137,7 @@ To upgrade to Apache 2.4: ``` {:.bs-callout-info} - If the 'apt-get install' command fails because of unmet dependencies, consult a resource like [http://askubuntu.com](http://askubuntu.com/questions/140246/how-do-i-resolve-unmet-dependencies-after-adding-a-ppa). + If the 'apt-get install' command fails because of unmet dependencies, consult a resource like [http://askubuntu.com](https://askubuntu.com/questions/140246/how-do-i-resolve-unmet-dependencies-after-adding-a-ppa). 1. Verify the installation. @@ -299,7 +299,7 @@ If you encounter 403 Forbidden errors when trying to access the Magento site, yo ### Solving 403 Forbidden errors for Apache 2.4 {#apache-error-2-4} -To enable website visitors to access your site, use one of the [Require directives](http://httpd.apache.org/docs/2.4/howto/access.html). +To enable website visitors to access your site, use one of the [Require directives](https://httpd.apache.org/docs/2.4/howto/access.html). For example: diff --git a/src/guides/v2.3/install-gde/prereq/install-rabbitmq.md b/src/guides/v2.3/install-gde/prereq/install-rabbitmq.md index 8c2ed8ad672..b690b44d142 100644 --- a/src/guides/v2.3/install-gde/prereq/install-rabbitmq.md +++ b/src/guides/v2.3/install-gde/prereq/install-rabbitmq.md @@ -100,7 +100,13 @@ If you already had Magento installed and you want to connect it to RabbitMQ, add ), ``` -Then, run `bin/magento setup:upgrade` to apply the changes and create the required queues in RabbitMQ. +You can also set RabbitMQ configuration values using the `bin/magento setup:config:set` command: + +```bash +bin/magento setup:config:set --amqp-host="rabbitmq.example.com" --amqp-port="11213" --amqp-user="magento" --amqp-password="magento" --amqp-virtualhost="/" +``` + +After the running the command or updating the `/app/etc/env.php` file with AMQP configuration values, run `bin/magento setup:upgrade` to apply the changes and create the required queues and exchanges in RabbitMQ. ## Configure SSL diff --git a/src/guides/v2.3/install-gde/prereq/mysql.md b/src/guides/v2.3/install-gde/prereq/mysql.md index 83ffac3bc12..e931e7471b4 100644 --- a/src/guides/v2.3/install-gde/prereq/mysql.md +++ b/src/guides/v2.3/install-gde/prereq/mysql.md @@ -11,10 +11,10 @@ See [Magento technology stack requirements]({{ page.baseurl }}/install-gde/syste Magento _strongly_ recommends you observe the following standard when you set up your Magento database: -* Magento uses [MySQL database triggers](http://dev.mysql.com/doc/refman/5.0/en/triggers.html) to improve database access during reindexing. These get created when the indexer mode is set to [schedule]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-index.html#configure-indexers-1). Magento does not support any custom triggers in the Magento database because custom triggers can introduce incompatibilities with future Magento versions. -* Familiarize yourself with [these potential MySQL trigger limitations](http://dev.mysql.com/doc/mysql-reslimits-excerpt/5.1/en/stored-program-restrictions.html) before you continue. +* Magento uses [MySQL database triggers](https://dev.mysql.com/doc/refman/5.0/en/triggers.html) to improve database access during reindexing. These get created when the indexer mode is set to [schedule]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-index.html#configure-indexers-1). Magento does not support any custom triggers in the Magento database because custom triggers can introduce incompatibilities with future Magento versions. +* Familiarize yourself with [these potential MySQL trigger limitations](https://dev.mysql.com/doc/mysql-reslimits-excerpt/5.1/en/stored-program-restrictions.html) before you continue. * To enhance your database security posture, enable the [`STRICT_ALL_TABLES`](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_strict_all_tables) SQL mode to prevent storing invalid data values, which might cause unwanted database interactions. -* If you use MySQL database replication, be aware that Magento does _not_ support MySQL statement-based replication. Make sure you use _only_ [row-based replication](http://dev.mysql.com/doc/refman/5.1/en/replication-formats.html). +* If you use MySQL database replication, be aware that Magento does _not_ support MySQL statement-based replication. Make sure you use _only_ [row-based replication](https://dev.mysql.com/doc/refman/5.1/en/replication-formats.html). {:.bs-callout-warning} Magento 2 currently utilizes `CREATE TEMPORARY TABLE` statements inside transactions, which are [incompatible](https://dev.mysql.com/doc/refman/5.7/en/replication-gtids-restrictions.html) with database implementations utilizing GTID-based replication, such as [Google Cloud SQL second-generation instances](https://cloud.google.com/sql/docs/features#differences). @@ -78,7 +78,7 @@ To install MySQL 5.7 on Ubuntu 16: mysql> ``` -1. If you expect to import large numbers of products into Magento, you can increase the value for [`max_allowed_packet`](http://dev.mysql.com/doc/refman/5.6/en/program-variables.html) that is larger than the default, 16MB. +1. If you expect to import large numbers of products into Magento, you can increase the value for [`max_allowed_packet`](https://dev.mysql.com/doc/refman/5.6/en/program-variables.html) that is larger than the default, 16MB. {:.bs-callout-info} The default value applies to {{site.data.var.ece}} *and* on-premises projects. {{site.data.var.ece}} Pro customers must open a support ticket to increase the `max_allowed_packet` value. {{site.data.var.ece}} Starter customers can increase the value by updating the configuration in the `/etc/mysql/mysql.cnf` file. @@ -130,7 +130,7 @@ To install MySQL 5.6 on Ubuntu 14: mysql> ``` -1. If you expect to import large numbers of products into Magento, you can increase the value for [`max_allowed_packet`](http://dev.mysql.com/doc/refman/5.6/en/program-variables.html) that is larger than the default, 16MB. +1. If you expect to import large numbers of products into Magento, you can increase the value for [`max_allowed_packet`](https://dev.mysql.com/doc/refman/5.6/en/program-variables.html) that is larger than the default, 16MB. {% include install/mysql_max-allowed-packet-ubuntu.md %} @@ -138,7 +138,7 @@ To install MySQL 5.6 on Ubuntu 14: ### Installing MySQL 5.6 on Ubuntu 12 {#instgde-prereq-mysql56ubu12} -To install MySQL 5.6 on Ubuntu 12, use the following instructions from [askubuntu.com](http://askubuntu.com/questions/433014/unable-to-install-mysql-5-6-in-ubuntu-12-04). +To install MySQL 5.6 on Ubuntu 12, use the following instructions from [askubuntu.com](https://askubuntu.com/questions/433014/unable-to-install-mysql-5-6-in-ubuntu-12-04). 1. Enter the following commands in the order shown: @@ -191,7 +191,7 @@ To install MySQL 5.6 on Ubuntu 12, use the following instructions from [askubunt mysql> ``` -1. If you expect to import large numbers of products into Magento, you can increase the value for [`max_allowed_packet`](http://dev.mysql.com/doc/refman/5.6/en/program-variables.html) that is larger than the default, 16MB. +1. If you expect to import large numbers of products into Magento, you can increase the value for [`max_allowed_packet`](https://dev.mysql.com/doc/refman/5.6/en/program-variables.html) that is larger than the default, 16MB. {% include install/mysql_max-allowed-packet-ubuntu.md %} @@ -206,12 +206,12 @@ The Magento application 2.1.2 and later are compatible with MySQL 5.7. ### Get MySQL 5.7 for CentOS 7 -The following procedure is based on [How to Install Latest MySQL 5.7.9 on RHEL/CentOS 7/6/5 and Fedora 23/22/21](http://www.tecmint.com/install-latest-mysql-on-rhel-centos-and-fedora). +The following procedure is based on [How to Install Latest MySQL 5.7.9 on RHEL/CentOS 7/6/5 and Fedora 23/22/21](https://www.tecmint.com/install-latest-mysql-on-rhel-centos-and-fedora/). As a user with `root` privileges, enter the following commands in the order shown: ```bash -wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm +wget https://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm ``` ```bash @@ -222,12 +222,12 @@ Continue with [Install and configure MySQL 5.7 on CentOS 6 or 7](#mysql57-centos ### Get MySQL 5.7 for CentOS 6 -The following procedure is based on [How to Install Latest MySQL 5.7.9 on RHEL/CentOS 7/6/5 and Fedora 23/22/21](http://www.tecmint.com/install-latest-mysql-on-rhel-centos-and-fedora). +The following procedure is based on [How to Install Latest MySQL 5.7.9 on RHEL/CentOS 7/6/5 and Fedora 23/22/21](https://www.tecmint.com/install-latest-mysql-on-rhel-centos-and-fedora/). As a user with `root` privileges, enter the following commands in the order shown: ```bash -wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm +wget https://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm ``` ```bash @@ -282,8 +282,6 @@ Continue with the next section. ## Installing and configuring MySQL 5.6 on CentOS {#instgde-prereq-mysql-centos} -The following procedure is based on [Install MySQL Server 5.6 in CentOS 6.x and Red Hat 6.x Linux](http://sharadchhetri.com/2013/12/26/install-mysql-server-5-6-in-centos-6-x-and-red-hat-6-x-linux/). - 1. *CentOS 6* Install the MySQL database: ```bash @@ -343,7 +341,7 @@ The following procedure is based on [Install MySQL Server 5.6 in CentOS 6.x and Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. ``` -1. If you expect to import large numbers of products into Magento, you can configure MySQL to use the [`max_allowed_packet`](http://dev.mysql.com/doc/refman/5.6/en/program-variables.html) parameter. We recommend a value of at least 16MB. +1. If you expect to import large numbers of products into Magento, you can configure MySQL to use the [`max_allowed_packet`](https://dev.mysql.com/doc/refman/5.6/en/program-variables.html) parameter. We recommend a value of at least 16MB. {% include install/mysql_max-allowed-packet-centos.md %} diff --git a/src/guides/v2.3/install-gde/prereq/nginx.md b/src/guides/v2.3/install-gde/prereq/nginx.md index b22c1e5e22d..974796d303a 100644 --- a/src/guides/v2.3/install-gde/prereq/nginx.md +++ b/src/guides/v2.3/install-gde/prereq/nginx.md @@ -6,7 +6,7 @@ functional_areas: - Setup --- -Magento supports nginx 1.8 (or the [latest mainline version](http://nginx.org/en/linux_packages.html#mainline)). You must also install the latest version of `php-fpm`. +Magento supports nginx 1.18 (or the [latest mainline version](https://nginx.org/en/linux_packages.html#mainline)). You must also install the latest version of `php-fpm`. Installation instructions vary based on which operating system you are using. See [PHP](php-settings.html) for information. diff --git a/src/guides/v2.3/install-gde/prereq/optional.md b/src/guides/v2.3/install-gde/prereq/optional.md index 8f426ed367b..bdcc6677f08 100644 --- a/src/guides/v2.3/install-gde/prereq/optional.md +++ b/src/guides/v2.3/install-gde/prereq/optional.md @@ -16,7 +16,7 @@ The other optional utilities discussed in this topic might assist you with your ## Installing and Configuring Network Time Protocol (NTP) {#install-optional-ntp} -[NTP](http://www.ntp.org) enables servers to synchronize their system clocks using [globally available pool servers](http://www.pool.ntp.org/en). We recommend you use NTP servers you trust, whether they are dedicated hardware solutions your internal network or external, public servers. +[NTP](https://www.ntp.org/) enables servers to synchronize their system clocks using [globally available pool servers](https://www.ntppool.org/en/). We recommend you use NTP servers you trust, whether they are dedicated hardware solutions your internal network or external, public servers. If you are deploying Magento on multiple hosts, NTP is a simple way to guarantee their clocks are all synchronized, no matter what time zone the servers are in. Also, cron-related tasks (such as indexing and transactional e-mails) depend on the server clock being accurate. @@ -64,7 +64,7 @@ To install and configure NTP: ### Use NTP pool servers {#install-optional-ntp-servers} -Selecting pool servers is up to you. If you use NTP pool servers, ntp.org recommends you use [pool servers](http://www.pool.ntp.org/en) that are close to your servers' time zone as discussed on the [NTP pool project help page](http://www.pool.ntp.org/en/use.html). If you have a private NTP server that is available to all hosts in your Magento deployment, you can use that server instead. +Selecting pool servers is up to you. If you use NTP pool servers, ntp.org recommends you use [pool servers](https://www.ntppool.org/en/) that are close to your servers' time zone as discussed on the [NTP pool project help page](https://www.ntppool.org/en//use.html). If you have a private NTP server that is available to all hosts in your Magento deployment, you can use that server instead. 1. Open `/etc/ntp.conf` in a text editor. @@ -104,7 +104,7 @@ Selecting pool servers is up to you. If you use NTP pool servers, ntp.org recomm ## Create phpinfo.php {#install-optional-phpinfo} -[`phpinfo.php`](http://php.net/manual/en/function.phpinfo.php) displays a large amount of information about [PHP](https://glossary.magento.com/php) and its extensions. +[`phpinfo.php`](https://php.net/manual/en/function.phpinfo.php) displays a large amount of information about [PHP](https://glossary.magento.com/php) and its extensions. {:.bs-callout-info} Use `phpinfo.php` in a development system _only_. It can be a security issue in production. @@ -117,7 +117,7 @@ Add the following code anywhere in your web server's docroot: phpinfo(); ``` -For more information, see the [phpinfo manual page](http://php.net/manual/en/function.phpinfo.php). +For more information, see the [phpinfo manual page](https://php.net/manual/en/function.phpinfo.php). To view the results, enter the following [URL](https://glossary.magento.com/url) in your browser's location or address field: @@ -132,15 +132,15 @@ If a 404 (Not Found) error displays, check the following: [Help for Ubuntu](https://help.ubuntu.com/community/UFW) - [Help for CentOS](http://wiki.centos.org/HowTos/Network/IPTables) + [Help for CentOS](https://wiki.centos.org/HowTos/Network/IPTables) ## phpmyadmin {#install-optional-phpmyadmin} `phpmyadmin` is an easy-to-use, free database administration utility. You can use it to check and manipulate the contents of your database. You must log in to `phpmyadmin` as the MySQL database administrative user. -For more information about `phpmyadmin`, see the [phpmyadmin home page](http://www.phpmyadmin.net/home_page/index.php). +For more information about `phpmyadmin`, see the [phpmyadmin home page](https://www.phpmyadmin.net/). -For more detailed information about installation, see the [phpmyadmin installation documentation](http://docs.phpmyadmin.net/en/latest/setup.html#quick-install). +For more detailed information about installation, see the [phpmyadmin installation documentation](https://docs.phpmyadmin.net/en/latest/setup.html#quick-install). {:.bs-callout-info} Use phpmyadmin in a development system _only_. It can be a security issue in production. diff --git a/src/guides/v2.3/install-gde/prereq/prereq-overview.md b/src/guides/v2.3/install-gde/prereq/prereq-overview.md index 0acb644a7c5..5f3a98b936b 100644 --- a/src/guides/v2.3/install-gde/prereq/prereq-overview.md +++ b/src/guides/v2.3/install-gde/prereq/prereq-overview.md @@ -19,7 +19,7 @@ Before you install Magento, you must do all of the following: * Make sure you can back up your entire system at various points during the installation so you can roll back in the [event](https://glossary.magento.com/event) of issues. {:.bs-callout-info} -We assume you're installing the Magento 2 software in a **development environment**, which means you have [root user](http://www.linfo.org/root.html) access to the machine **and** that the machine does not need to be highly secure. If you're setting up a more secure machine, we strongly recommend you consult a network administrator for additional assistance. +We assume you're installing the Magento 2 software in a **development environment**, which means you have root user access to the machine **and** that the machine does not need to be highly secure. If you're setting up a more secure machine, we strongly recommend you consult a network administrator for additional assistance. We strongly recommend you update and upgrade your operating system software. These upgrades can provide security and software fixes that might prevent future problems. Don't know what any of this means? Check out our [installation overview page]({{page.baseurl}}/install-gde/bk-install-guide.html). diff --git a/src/guides/v2.3/install-gde/prereq/security.md b/src/guides/v2.3/install-gde/prereq/security.md index a8a3aa8913d..3ef66424618 100644 --- a/src/guides/v2.3/install-gde/prereq/security.md +++ b/src/guides/v2.3/install-gde/prereq/security.md @@ -11,10 +11,10 @@ functional_areas: ## SELinux {#install-prereq-selinux} -[Security Enhanced Linux (SELinux)](http://selinuxproject.org/page/Main_Page) enables CentOS and Ubuntu administrators greater access control over their servers. If you are using SELinux *and* Apache must initiate a connection to another host, you must run the commands discussed in this section. +[Security Enhanced Linux (SELinux)](https://selinuxproject.org/page/Main_Page) enables CentOS and Ubuntu administrators greater access control over their servers. If you are using SELinux *and* Apache must initiate a connection to another host, you must run the commands discussed in this section. {:.bs-callout-info} -Magento has no recommendation about using SELinux; you can use it for enhanced security if you wish. If you use SELinux, you must configure it properly or the Magento application will function unpredictably. If you choose to use SELinux, consult a resource like [the CentOS wiki](http://wiki.centos.org/HowTos/SELinux) to set up rules to enable communication. +Magento has no recommendation about using SELinux; you can use it for enhanced security if you wish. If you use SELinux, you must configure it properly or the Magento application will function unpredictably. If you choose to use SELinux, consult a resource like [the CentOS wiki](https://wiki.centos.org/HowTos/SELinux) to set up rules to enable communication. ### Suggestion for installing the Magento software with Apache @@ -42,8 +42,8 @@ chcon -R --type httpd_sys_rw_content_t /generated The preceding commands work only with the Apache web server. Because of the variety of configurations and security requirements, we do not guarantee these commands work in all situations. For more information, see: -* [man page](http://linux.die.net/man/8/httpd_selinux) -* [serverlab](http://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-selinux-policies-for-apache-web-servers/) +* [man page](https://linux.die.net/man/8/httpd_selinux) +* [serverlab](https://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-selinux-policies-for-apache-web-servers/) ### Enable inter-server communication @@ -66,7 +66,7 @@ To enable Apache to initiate a connection to another host with SELinux enabled: Depending on your security requirements, you might find it necessary to open port 80 and other ports in your firewall. Because of the sensitive nature of networking security, Magento strongly recommends you consult with your IT department before proceeding. Following are some suggested references: * Ubuntu: [Ubuntu documentation page](https://help.ubuntu.com/community/IptablesHowTo) -* CentOS: [CentOS how-to](http://wiki.centos.org/HowTos/Network/IPTables). +* CentOS: [CentOS how-to](https://wiki.centos.org/HowTos/Network/IPTables). {:.ref-header} Related topics diff --git a/src/guides/v2.3/install-gde/system-requirements.md b/src/guides/v2.3/install-gde/system-requirements.md index fbad55412fa..f9c6eec28d2 100644 --- a/src/guides/v2.3/install-gde/system-requirements.md +++ b/src/guides/v2.3/install-gde/system-requirements.md @@ -10,7 +10,7 @@ redirect_from: --- {:.bs-callout-info} -If you are working on a {{site.data.var.ece}} project, see [Service versions]({{ site.baseurl }}/cloud/project/services.html#service-versions) in the _Cloud Guide_. +If you are working on a {{site.data.var.ece}} project, see [Service versions](https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/service/services-yaml.html#service-versions) in the _Cloud Guide_. This table shows versions of third-party software dependencies that Adobe has tested with specific {{ site.data.var.ee }} and {{ site.data.var.ce }} releases. Adobe only supports the combination of system requirements described in the following table. @@ -100,20 +100,20 @@ There is a known issue with `xdebug` that can affect Magento installations or ac [Known issue with xdebug]: https://support.magento.com/hc/en-us/articles/360034242212 -[php_xdebug 2.5.x]: http://xdebug.org/download.php +[php_xdebug 2.5.x]: https://xdebug.org/download [bash]: https://www.gnu.org/software/bash/ [gzip]: https://www.gzip.org/ [lsof]: https://linux.die.net/man/8/lsof [mysql]: https://www.mysql.com/ [mysqldump]: https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html [nice]: https://linux.die.net/man/1/nice -[php]: http://www.php.net/ +[php]: https://www.php.net/ [sed]: https://www.gnu.org/software/sed/manual/sed.html [tar]: https://linux.die.net/man/1/tar [PHP installation instructions]: prereq/php-settings.html -[official PHP documentation]: http://php.net/manual/en/extensions.php -[PHP OPcache]: http://php.net/manual/en/intro.opcache.php +[official PHP documentation]: https://php.net/manual/en/extensions.php +[PHP OPcache]: https://php.net/manual/en/intro.opcache.php [PHP documentation]: prereq/php-settings.html -[PHP OPcache documentation]: http://php.net/manual/en/opcache.setup.php +[PHP OPcache documentation]: https://php.net/manual/en/opcache.setup.php [Required PHP settings]: {{ page.baseurl }}/install-gde/prereq/php-settings.html [security certificate]: https://glossary.magento.com/security-certificate diff --git a/src/guides/v2.3/install-gde/trouble/php/tshoot_mod_access_compat.md b/src/guides/v2.3/install-gde/trouble/php/tshoot_mod_access_compat.md index d84147ecfb7..4ede2a5e5e8 100644 --- a/src/guides/v2.3/install-gde/trouble/php/tshoot_mod_access_compat.md +++ b/src/guides/v2.3/install-gde/trouble/php/tshoot_mod_access_compat.md @@ -44,7 +44,7 @@ On CentOS, `` is `httpd`. On Ubuntu, `` is `apache2`. ### Additional resources -* [Apache documentation about mod_access_compat](http://httpd.apache.org/docs/current/mod/mod_access_compat.html) -* [Apache documentation about mod_authz_host](http://httpd.apache.org/docs/current/mod/mod_authz_host.html) -* [Order, Allow, Deny from the Apache Definitive Guide](http://docstore.mik.ua/orelly/linux/apache/ch05_06.htm) -* [askubuntu.com](http://askubuntu.com/questions/335228/changes-in-apache-config-between-12-04-2-and-12-04-3-lts) +* [Apache documentation about mod_access_compat](https://httpd.apache.org/docs/current/mod/mod_access_compat.html) +* [Apache documentation about mod_authz_host](https://httpd.apache.org/docs/current/mod/mod_authz_host.html) +* [Order, Allow, Deny from the Apache Definitive Guide](https://docstore.mik.ua/orelly/linux/apache/ch05_06.htm) +* [askubuntu.com](https://askubuntu.com/questions/335228/changes-in-apache-config-between-12-04-2-and-12-04-3-lts) diff --git a/src/guides/v2.3/inventory/index.md b/src/guides/v2.3/inventory/index.md index c50bafbfae5..ecbcc2f1690 100644 --- a/src/guides/v2.3/inventory/index.md +++ b/src/guides/v2.3/inventory/index.md @@ -48,3 +48,17 @@ In this diagram, a bicycle merchant has inventory for a mountain bike in two war ## Shipping algorithms When merchants are ready to make a partial or full shipment, they select the source or sources from which to send the products. Customers typically want low-cost shipping and a guarantee of safe arrival of products, while the merchant needs to ensure minimal overhead for the inventory storage and shipping costs. {{site.data.var.im}} includes an algorithm that takes these considerations into account and recommends the best shipping option or options. Magento provides an algorithm for Priority, using the source priority per stock, where each source is given a priority in the scope of a specific sales channel, and for Distance, using the locations of sources and shipping destinations. {{site.data.var.im}} also supports developer-provided extensions for other algorithms based on criteria such as cheapest shipping and closest GPS location. + +## Message queue consumers + +The following table lists all [message queue consumers]({{ page.baseurl }}/config-guide/mq/manage-message-queues.html) related to {{ site.data.var.im }}, describes what they do, and identifies the Admin system configuration settings associated with them: + +| Consumer | Description | +|-------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `inventory.source.items.cleanup` | Asynchronously deletes source items by product SKU when a product is removed.
        Required when the [**Synchronize with Catalog**]({{ site.user_guide_url }}/configuration/catalog/inventory.html) stock option is enabled in the Admin system configuration settings. | +| `inventory.mass.update` | Asynchronously processes legacy stock items, updates legacy stock items, updates default source items, and reindexes inventory for specific product SKUs.
        Required when the [**Run asynchronously**]({{ site.user_guide_url }}/configuration/catalog/inventory.html#admin-bulk-operations) bulk operation is enabled in the Admin system configuration settings. | +| `inventory.reservations.cleanup` | Asynchronously deletes reservations by product SKU after a product is removed.
        Required when the [**Synchronize with Catalog**]({{ site.user_guide_url }}/configuration/catalog/inventory.html) stock option is enabled in the Admin system configuration settings. | +| `inventory.reservations.update` | Asynchronously updates reservations by product SKU after a product is removed.
        Required when the [**Synchronize with Catalog**]({{ site.user_guide_url }}/configuration/catalog/inventory.html) stock option is enabled in the Admin system configuration settings. | +| `inventory.reservations.updateSalabilityStatus` | Asynchronously updates the salable quantity of each product assigned to a stock.
        This consumer should be up and running at all times if you are using {{ site.data.var.im }}. | +| `inventory.indexer.sourceItem` | Asynchronously reindexes source items.
        Required when the [**Stock/Source reindex strategy**]({{ site.user_guide_url }}/configuration/catalog/inventory.html#inventory-indexer-settings) is set to "aynschronous" in the Admin system configuration settings. | +| `inventory.indexer.stock` | Asynchronously reindexes stock.
        Required when the [**Stock/Source reindex strategy**]({{ site.user_guide_url }}/configuration/catalog/inventory.html#inventory-indexer-settings) is set to "aynschronous" in the Admin system configuration settings. | diff --git a/src/guides/v2.3/inventory/release-notes.md b/src/guides/v2.3/inventory/release-notes.md index 6b9f7e481c1..a0595a802c6 100644 --- a/src/guides/v2.3/inventory/release-notes.md +++ b/src/guides/v2.3/inventory/release-notes.md @@ -1,6 +1,8 @@ --- group: inventory title: Release Notes +redirect_to: https://experienceleague.adobe.com/docs/commerce-admin/inventory/release-notes.html +status: migrated --- **{{site.data.var.im}} (provided by the [Magento Inventory (was MSI)](https://github.com/magento/inventory) project)** is available with {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}} 2.3.x. Merchants can use {{site.data.var.im}} to manage inventory for all product types in a single warehouse and across complex shipping networks. Manage these locations as sources, tracking on-hand inventory quantities per product. Stocks connect these sources with sales channels (websites) to provide an accurate salable quantity, calculating available on-hand products, pending orders (reservations), and configured thresholds. {{site.data.var.im}} also updates order and shipment options, giving you full control over your inventory and deductions at the source level. @@ -200,9 +202,9 @@ New modules for Inventory Management 1.1.2 Beta include: {{site.data.var.im}} 1.1.0 (module version: `inventory-composer-metapackage = 1.1.0`) is supported and compatible with version 2.3.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. {{site.data.var.im}} 1.1.1 released only as a package name update, supported with version 2.3.1 and compatible with version 2.3.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. -- {:.fix} **Added support for Elasticsearch for single and multi sources modes** — You can now configure and use Elasticsearch with custom stocks. This resolves a [known issue]({{ page.baseurl }}/release-notes/ReleaseNotes2.3.0OpenSource.html#known-issues) in version 2.3.0 of {{site.data.var.ce}} and {{site.data.var.ee}}. See [Set up the search engine]({{ page.baseurl }}/config-guide/elasticsearch/es-overview.html) for installation information and [Elasticsearch](https://docs.magento.com/m2/ce/user_guide/catalog/search-elasticsearch.html) to configure through the Admin. +- {:.fix} **Added support for Elasticsearch for single and multi sources modes** — You can now configure and use Elasticsearch with custom stocks. This resolves a [known issue]({{ site.baseurl }}/guides/v2.3/release-notes/ReleaseNotes2.3.0OpenSource.html) in version 2.3.0 of {{site.data.var.ce}} and {{site.data.var.ee}}. See [Set up the search engine]({{ page.baseurl }}/config-guide/elasticsearch/es-overview.html) for installation information and [Elasticsearch](https://docs.magento.com/m2/ce/user_guide/catalog/search-elasticsearch.html) to configure through the Admin. -- {:.fix} Resolved performance issues with Default Stock to drastically increase performance with numerous operations. Improvements increase performance for Single Source mode, Transfer Inventory to Source, Storefront Category pages, and Salable Quantity calculations. This resolves a [known issue]({{ page.baseurl }}/release-notes/ReleaseNotes2.3.0OpenSource.html#known-issues) requiring custom stocks creation for Single Source merchants in version 2.3.0 of {{site.data.var.ce}} and {{site.data.var.ee}}. +- {:.fix} Resolved performance issues with Default Stock to drastically increase performance with numerous operations. Improvements increase performance for Single Source mode, Transfer Inventory to Source, Storefront Category pages, and Salable Quantity calculations. This resolves a [known issue]({{ site.baseurl }}/guides/v2.3/release-notes/ReleaseNotes2.3.0OpenSource.html) requiring custom stocks creation for Single Source merchants in version 2.3.0 of {{site.data.var.ce}} and {{site.data.var.ee}}. diff --git a/src/guides/v2.3/inventory/reservations.md b/src/guides/v2.3/inventory/reservations.md index beb1436ab4d..e5a1ec2500d 100644 --- a/src/guides/v2.3/inventory/reservations.md +++ b/src/guides/v2.3/inventory/reservations.md @@ -3,13 +3,16 @@ group: inventory title: Reservations --- -Magento uses _reservations_ to calculate and keep track of the salable quantity of each product assigned to a stock. When a customer places an order, Magento checks whether the quantity requested for each item is available for sale. If yes, Magento creates a reservation as an inventory request for each item, thereby reducing the salable quantity available for purchase. As items are shipped, cancelled or refunded, Magento issues additional reservations that compensate the original. A cron job removes the original reservation and all compensatory reservations from the database when all ordered items have been shipped, cancelled, or refunded. +Adobe Commerce and Magento Open Source use _reservations_ to calculate and keep track of the salable quantity of each product assigned to a stock. When a customer places an order, the system checks whether the quantity requested for each item is available for sale. If yes, the system creates a reservation as an inventory request for each item, thereby reducing the salable quantity available for purchase. As items are shipped, cancelled or refunded, the system issues additional reservations that compensate the original. A cron job removes the original reservation and all compensatory reservations from the database when all ordered items have been shipped, cancelled, or refunded. + +{:.bs-callout-info} +The reservation capability requires the `inventory.reservations.updateSalabilityStatus` message queue consumer to be running at all times. To check if it is running, use the `bin/magento queue:consumers:list` command. If you do not see it in the list, start it: `bin/magento queue:consumers:start inventory.reservations.updateSalabilityStatus`. Reservations prevent the merchant from overselling products, even in cases where the latency between order placement and order processing is high. In addition, reservations are append-only operations that help prevent blocking operations and race conditions at the time of checkout. ## Reservation calculations -Magento creates a reservation for each product when the following events occur: +The system creates a reservation for each product when the following events occur: * A customer or merchant places an order. * A customer or merchant fully or partially cancels an order. @@ -19,18 +22,18 @@ Magento creates a reservation for each product when the following events occur: Reservations are append-only operations, similar to a log of events. The initial reservation is assigned a negative quantity value. All subsequent reservations created while processing the order are positive values. When the order is complete, the sum of all reservations for the product is 0. -Before Magento can issue a reservation in response to a new order, it determines whether there are enough salable items to fulfill the order. The following quantities factor into the calculation: +Before the system can issue a reservation in response to a new order, it determines whether there are enough salable items to fulfill the order. The following quantities factor into the calculation: * **StockItem quantity**. The StockItem quantity is the aggregated amount of inventory from all the physical sources for the current sales channel. If the Baltimore source has 20 units of a product, the Austin source has 25 units of the same product, while the Reno source has 10, and all these sources are linked to Stock A, then the StockItem count for thus product is 55 (20 + 25 + 10). (When items are shipped, the Inventory indexer updates the quantities available at each source.) -* **Outstanding reservations**. Magento totals all the initial reservations that have not been compensated. This number will always be negative. If customer A has a reservation for 10 items, and customer B has a reservation 5 for items, then outstanding reservations for the product total -15. +* **Outstanding reservations**. The system totals all the initial reservations that have not been compensated. This number will always be negative. If customer A has a reservation for 10 items, and customer B has a reservation 5 for items, then outstanding reservations for the product total -15. Therefore, the merchant can fulfill an incoming order as long as the customer orders less than 40 (55 + -15) units. When you complete processing an order (Complete, Canceled, Closed), all reservations in the scope of that order should resolve to `0`. This clears all salable quantity holds. - {:.bs-callout-info} -Backorders (with Out-of-Stock Thresholds) and Notify for Quantity Below Threshold settings also affect the calculation of salable quantities, but they are outside the scope of this topic. For more information about these settings, see [Configuring Inventory Management](https://docs.magento.com/m2/ce/user_guide/catalog/inventory-configure-inventory-management.html) in the _Magento User Guide_. +{:.bs-callout-info} +Backorders (with Out-of-Stock Thresholds) and Notify for Quantity Below Threshold settings also affect the calculation of salable quantities, but they are outside the scope of this topic. For more information about these settings, see [Configuring Inventory Management](https://docs.magento.com/m2/ce/user_guide/catalog/inventory-configure-inventory-management.html) in the _Admin User Guide_. ## Reservation objects @@ -90,15 +93,17 @@ The following example shows the sequence of reservations generated for a simple event_type = shipment_created ``` -The three `quantity` values sum up to 0 (-25 + 5 + 20). Note that Magento does not modify any existing reservations. +The three `quantity` values sum up to 0 (-25 + 5 + 20). Note that the system does not modify any existing reservations. ## Removing processed reservations -Magento provides the `inventory_cleanup_reservations` cron job to clear the reservation table. By default, it runs daily at midnight, though you can configure the times and frequency. The cron job runs a script that queries the database to find complete reservation sequences in which the sum of quantity values is 0. When all reservations for a given product that originated on the same day (or other configured time) have been compensated, Magento subsequently deletes these reservations all at once. +The `inventory_cleanup_reservations` cron job executes SQL queries to clear the reservation database table. By default, it runs daily at midnight, but you can configure the times and frequency. The cron job runs a script that queries the database to find complete reservation sequences in which the sum of quantity values is 0. When all reservations for a given product that originated on the same day (or other configured time) have been compensated, the cron job deletes the reservations all at once. + +The `inventory_reservations_cleanup` cron job is not the same as the `inventory.reservations.cleanup` message queue consumer. The consumer asynchronously deletes reservations by product SKU after a product has been removed, whereas the cron job clears the entire reservations table. The consumer is required when you enable the [**Synchronize with Catalog**]({{ site.user_guide_url }}/configuration/catalog/inventory.html) stock option in the Admin system configuration. See [Manage message queues]({{ page.baseurl }}/config-guide/mq/manage-message-queues.html). -Often, all initial reservations produced in a single day cannot compensated that same day. This situation could occur when a customer places an order minutes before the cron job begins or makes the purchase with an offline payment method, such as a bank transfer. The compensated reservation sequences remain in the database until they have all been compensated. This practice does not interfere with reservation calculations, because the total for each reservation is 0. +Often, all initial reservations produced in a single day cannot compensated that same day. This situation could occur when a customer places an order minutes before the cron job begins or makes the purchase with an offline payment method, such as a bank transfer. The compensated reservation sequences remain in the database until they have all been compensated. This practice does not interfere with reservation calculations, because the total for each reservation is 0. - {:.bs-callout-info} +{:.bs-callout-info} {{site.data.var.im}} provides commands to detect and manage reservation inconsistencies. See [Inventory CLI reference]({{page.baseurl}}/inventory/inventory-cli-reference.html). ## Interfaces and services @@ -172,4 +177,4 @@ Interface | Description ## Web API support -Magento Web APIs (REST and SOAP) imposes restrictions for entity interfaces that are outside the scope of reservations. Most notably, Web APIs require getter and setter methods. Because reservations are append-only immutable entities, there are no reservation setter methods. Therefore, reservation Web APIs are not supported. +Adobe Commerce and Magento Open Source web APIs (REST and SOAP) impose restrictions for entity interfaces that are outside the scope of reservations. Most notably, Web APIs require getter and setter methods. Because reservations are append-only immutable entities, there are no reservation setter methods. Therefore, reservation Web APIs are not supported. diff --git a/src/guides/v2.3/javascript-dev-guide/bk-javascript-dev-guide.md b/src/guides/v2.3/javascript-dev-guide/bk-javascript-dev-guide.md index b0c10891cfe..2890d599f8d 100644 --- a/src/guides/v2.3/javascript-dev-guide/bk-javascript-dev-guide.md +++ b/src/guides/v2.3/javascript-dev-guide/bk-javascript-dev-guide.md @@ -31,13 +31,13 @@ JavaScript automatic testing is described in a separate [JavaScript unit testing | *jQuery UI widget* | A JS component/widget provided by the [jQuery UI library used in Magento]. | | *jQuery widget* | Custom widget created using jQuery UI Widget Factory and decorated as AMD module. Many Magento JS components are the jQuery widgets. | -[AMD module]: http://requirejs.org/docs/whyamd.html#amd +[AMD module]: https://requirejs.org/docs/whyamd.html#amd [`Magento_Ui`]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Ui [app/code/Magento/Ui/view]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Ui/view [jQuery UI library used in Magento]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/jquery/jquery-ui-1.9.2.js [jQuery Widget]: https://jqueryui.com/widget/ -[RequireJS file and module loader]: http://requirejs.org/ +[RequireJS file and module loader]: https://requirejs.org/ [JavaScript resources]: {{page.baseurl}}/javascript-dev-guide/javascript/js-resources.html [JavaScript initialization]: {{page.baseurl}}/javascript-dev-guide/javascript/js_init.html diff --git a/src/guides/v2.3/javascript-dev-guide/javascript/js-resources.md b/src/guides/v2.3/javascript-dev-guide/javascript/js-resources.md index c6556f88b15..a05452779dd 100644 --- a/src/guides/v2.3/javascript-dev-guide/javascript/js-resources.md +++ b/src/guides/v2.3/javascript-dev-guide/javascript/js-resources.md @@ -8,7 +8,7 @@ title: JavaScript resources in Commerce This topic describes general concepts of how [JavaScript](https://glossary.magento.com/javascript) (JS) components are organized in Magento. -To address the problem of slow page loads, we exclude JavaScript from the page headers and we added the ability to use the [RequireJS library](http://requirejs.org). +To address the problem of slow page loads, we exclude JavaScript from the page headers and we added the ability to use the [RequireJS library](https://requirejs.org). RequireJS improves the perceived page load time because it allows JavaScript to load in the background; in particular, it enables asynchronous JavaScript loading. @@ -71,7 +71,7 @@ Relative paths are also used in for [mapping and setting `paths` in requirejs-co ## Dependencies between JavaScript resources {#m2devgde-js-resources-dependencies} -To build a dependency on the third-party plugin, specify a [shim](http://requirejs.org/docs/api.html#config-shim) in the following configuration files: +To build a dependency on the third-party plugin, specify a [shim](https://requirejs.org/docs/api.html#config-shim) in the following configuration files: * `requirejs-config.js` @@ -226,6 +226,6 @@ The `baseUrl` parameter for RequireJS is specified in the following files: Related reading * [About AMD modules and RequireJS]({{ page.baseurl }}/javascript-dev-guide/javascript/js-resources.html) -* [RequireJS library](http://requirejs.org) +* [RequireJS library](https://requirejs.org) * [inheriting]({{ page.baseurl }}/frontend-dev-guide/themes/theme-inherit.html) -* [shim](http://requirejs.org/docs/api.html#config-shim) +* [shim](https://requirejs.org/docs/api.html#config-shim) diff --git a/src/guides/v2.3/javascript-dev-guide/javascript/js_overview.md b/src/guides/v2.3/javascript-dev-guide/javascript/js_overview.md index 04fdeaf61d3..f22c77464f3 100644 --- a/src/guides/v2.3/javascript-dev-guide/javascript/js_overview.md +++ b/src/guides/v2.3/javascript-dev-guide/javascript/js_overview.md @@ -27,8 +27,8 @@ Topics of this chapter describe the following: | *jQuery UI widget* | A JS component/widget provided by [jQuery UI library used in Magento]. | | *jQuery widget* | Custom widget created using jQuery UI Widget Factory and decorated as AMD module. Many Magento JS components are jQuery widget. | -[RequireJS file and module loader]: http://requirejs.org/ +[RequireJS file and module loader]: https://requirejs.org/ [Configure JavaScript]: {{page.baseurl}}/javascript-dev-guide/javascript/js-resources.html -[AMD module]: http://requirejs.org/docs/whyamd.html#amd +[AMD module]: https://requirejs.org/docs/whyamd.html#amd [app/code/Magento/Ui/view]: {{ site.mage2bloburl }}/{{page.guide_version}}/app/code/Magento/Ui/view [jQuery UI library used in Magento]: {{ site.mage2bloburl }}/{{page.guide_version}}/lib/web/jquery/jquery-ui-1.9.2.js diff --git a/src/guides/v2.3/javascript-dev-guide/javascript/js_practice.md b/src/guides/v2.3/javascript-dev-guide/javascript/js_practice.md index 079a1339898..e9d10ba22cb 100644 --- a/src/guides/v2.3/javascript-dev-guide/javascript/js_practice.md +++ b/src/guides/v2.3/javascript-dev-guide/javascript/js_practice.md @@ -135,6 +135,6 @@ Recommended reading [`gallery.js`]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/mage/gallery/gallery.js [can be reached from the page source view or from the file system]: {{page.baseurl}}/javascript-dev-guide/javascript/custom_js.html#extend_js [RequireJS config file]: {{site.baseurl}}/common/images/fdg_pr_2.png -[jCarousel widget]: http://sorgalla.com/jcarousel/ +[jCarousel widget]: https://sorgalla.com/jcarousel/ [`gallery.js`]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/mage/gallery/gallery.js [Use custom JavaScript]: {{page.baseurl}}/javascript-dev-guide/javascript/custom_js.html diff --git a/src/guides/v2.3/javascript-dev-guide/javascript/requirejs.md b/src/guides/v2.3/javascript-dev-guide/javascript/requirejs.md index c1d5152b714..cef9c28cc7a 100644 --- a/src/guides/v2.3/javascript-dev-guide/javascript/requirejs.md +++ b/src/guides/v2.3/javascript-dev-guide/javascript/requirejs.md @@ -5,7 +5,7 @@ contributor_name: Adarsh Manickam contributor_link: https://github.com/drpayyne --- -This topic describes general concepts of how the [RequireJS library](http://requirejs.org) is used in Magento, with examples. Please refer to official RequireJS documentation for in-depth explanation. +This topic describes general concepts of how the [RequireJS library](https://requirejs.org) is used in Magento, with examples. Please refer to official RequireJS documentation for in-depth explanation. RequireJS is a JavaScript file and module loader. It improves perceived page load times because it allows JavaScript to load in the background. In particular, it enables asynchronous JavaScript loading. diff --git a/src/guides/v2.3/javascript-dev-guide/widgets/jquery-widgets-about.md b/src/guides/v2.3/javascript-dev-guide/widgets/jquery-widgets-about.md index 420f216bea2..2f53866c281 100644 --- a/src/guides/v2.3/javascript-dev-guide/widgets/jquery-widgets-about.md +++ b/src/guides/v2.3/javascript-dev-guide/widgets/jquery-widgets-about.md @@ -73,5 +73,5 @@ Magento out of the box does not contain jQuery UI styles. Also, it is not recomm [Tabs widget]: {{page.baseurl}}/javascript-dev-guide/widgets/widget_tabs.html [ToggleAdvanced widget]: {{page.baseurl}}/javascript-dev-guide/widgets/widget_toggle.html [TrimInput widget]: {{page.baseurl}}/javascript-dev-guide/widgets/widget-trim-input.html -[jQuery UI 1.9.2]: http://blog.jqueryui.com/2012/11/jquery-ui-1-9-2/ +[jQuery UI 1.9.2]: https://blog.jqueryui.com/2012/11/jquery-ui-1-9-2/ [Sticky widget]: {{page.baseurl}}/javascript-dev-guide/widgets/widget_sticky.html diff --git a/src/guides/v2.3/javascript-dev-guide/widgets/widget_calendar.md b/src/guides/v2.3/javascript-dev-guide/widgets/widget_calendar.md index 291fcef1d16..a7b5944f199 100644 --- a/src/guides/v2.3/javascript-dev-guide/widgets/widget_calendar.md +++ b/src/guides/v2.3/javascript-dev-guide/widgets/widget_calendar.md @@ -90,8 +90,8 @@ The result is a calendar and a icon(_Click Here_) that opens the calendar. ![Calendar Widget]({{ site.baseurl }}/common/images/widget/calendar-widget-result.png) -[Datepicker Widget]: http://api.jQueryui.com/datepicker/ +[Datepicker Widget]: https://api.jqueryui.com/datepicker/ [global configuration]: #fedg_calendar_config [lib/web/mage/calendar.js]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/mage/calendar.js [Initialize JavaScript]: {{page.baseurl}}/javascript-dev-guide/javascript/js_init.html -[Datepicker Widget]: http://api.jqueryui.com/datepicker/ +[Datepicker Widget]: https://api.jqueryui.com/datepicker/ diff --git a/src/guides/v2.3/javascript-dev-guide/widgets/widget_collapsible.md b/src/guides/v2.3/javascript-dev-guide/widgets/widget_collapsible.md index 0b774ccc37a..998077e97df 100644 --- a/src/guides/v2.3/javascript-dev-guide/widgets/widget_collapsible.md +++ b/src/guides/v2.3/javascript-dev-guide/widgets/widget_collapsible.md @@ -106,7 +106,7 @@ Multiple types are supported: - Boolean: the `false` value disables the animation - Number: duration in milliseconds - String: is parsed to an object as a json string -- Object: For details about the object passed, see [jQuery.animate()](http://api.jquery.com/animate/). +- Object: For details about the object passed, see [jQuery.animate()](https://api.jquery.com/animate/). ```javascript { diff --git a/src/guides/v2.3/javascript-dev-guide/widgets/widget_dialog.md b/src/guides/v2.3/javascript-dev-guide/widgets/widget_dialog.md index e5bbcda3eef..2e7eafdc6da 100644 --- a/src/guides/v2.3/javascript-dev-guide/widgets/widget_dialog.md +++ b/src/guides/v2.3/javascript-dev-guide/widgets/widget_dialog.md @@ -4,7 +4,7 @@ subgroup: 3_Widgets title: DropdownDialog widget --- -Magento dropdownDialog [widget](https://glossary.magento.com/widget) is a customization of the standard [jQuery UI Dialog](http://api.jqueryui.com/dialog/). As extra functionality it implements the following: +Magento dropdownDialog [widget](https://glossary.magento.com/widget) is a customization of the standard [jQuery UI Dialog](https://api.jqueryui.com/dialog/). As extra functionality it implements the following: - triggering [event](https://glossary.magento.com/event) for opening - delaying to automatically close the drop-down on mouse out @@ -18,7 +18,7 @@ For information about how to initialize a widget in a JS component or `.phtml` t ## Options {#dialog_options} -Magento customized Dialog widget has default [jQuery UI Dialog widget](http://api.jqueryui.com/dialog/) options, plus several custom options: +Magento customized Dialog widget has default [jQuery UI Dialog widget](https://api.jqueryui.com/dialog/) options, plus several custom options: - [autoPosition](#d_autoPosition) - [autoSize](#d_autoSize) @@ -246,10 +246,10 @@ The result is a dropdown dialog and a button (_Click Here_) that opens the dialo [lib/web/mage/dropdown.js]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/mage/dropdown.js [Initialize JavaScript]: {{ page.baseurl }}/javascript-dev-guide/javascript/js_init.html -[`position`]: http://api.jqueryui.com/dialog/#option-position -[height]: http://api.jqueryui.com/dialog/#option-height -[width]: http://api.jqueryui.com/dialog/#option-width -[minHeight]: http://api.jqueryui.com/dialog/#option-minHeight -[minWidth]: http://api.jqueryui.com/dialog/#option-minWidth -[title]: http://api.jqueryui.com/dialog/#option-title -[jQuery UI Dialog widget]: http://api.jqueryui.com/dialog/ +[`position`]: https://api.jqueryui.com/dialog/#option-position +[height]: https://api.jqueryui.com/dialog/#option-height +[width]: https://api.jqueryui.com/dialog/#option-width +[minHeight]: https://api.jqueryui.com/dialog/#option-minHeight +[minWidth]: https://api.jqueryui.com/dialog/#option-minWidth +[title]: https://api.jqueryui.com/dialog/#option-title +[jQuery UI Dialog widget]: https://api.jqueryui.com/dialog/ diff --git a/src/guides/v2.3/javascript-dev-guide/widgets/widget_gallery.md b/src/guides/v2.3/javascript-dev-guide/widgets/widget_gallery.md index b37de9fa68b..999c62f624d 100644 --- a/src/guides/v2.3/javascript-dev-guide/widgets/widget_gallery.md +++ b/src/guides/v2.3/javascript-dev-guide/widgets/widget_gallery.md @@ -14,7 +14,7 @@ In addition, the [magnifier widget]({{ page.baseurl }}/javascript-dev-guide/widg Gallery is displayed consistently across all supported browsers and is responsive --- it sizes correctly on mobile devices and desktops. -The gallery widget uses the [Fotorama widget]. +The gallery widget uses the Fotorama widget. The important feature of the gallery widget implementation is the possibility to configure the widget options in the `view.xml` configuration file of a theme. @@ -577,7 +577,6 @@ api.updateOptions([{ }]); ``` -[Fotorama widget]: http://fotorama.io/ [lib/web/mage/gallery/gallery.js]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/mage/gallery/gallery.js [lib/web/magnifier/magnify.js]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/magnifier/magnify.js diff --git a/src/guides/v2.3/javascript-dev-guide/widgets/widget_menu.md b/src/guides/v2.3/javascript-dev-guide/widgets/widget_menu.md index ae62bd3727b..4325b554713 100644 --- a/src/guides/v2.3/javascript-dev-guide/widgets/widget_menu.md +++ b/src/guides/v2.3/javascript-dev-guide/widgets/widget_menu.md @@ -4,7 +4,7 @@ subgroup: 3_Widgets title: Menu widget --- -The Magento menu widget is a customized [jQuery UI Menu widget](http://api.jqueryui.com/menu/). Magento menu extends the default functionality with the following: +The Magento menu widget is a customized [jQuery UI Menu widget](https://api.jqueryui.com/menu/). Magento menu extends the default functionality with the following: - expanding all layers of the menu tree past the second layer - declaring a responsive menu @@ -92,7 +92,7 @@ The following methods from [jQuery UI menu widget] were adjusted in scope of the [lib/web/mage/menu.js]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/mage/menu.js [Initialize JavaScript]: {{page.baseurl}}/javascript-dev-guide/javascript/js_init.html -[jQuery UI menu widget]: http://api.jqueryui.com/menu/ +[jQuery UI menu widget]: https://api.jqueryui.com/menu/ ## Code Sample {#menu_code_sample} diff --git a/src/guides/v2.3/javascript-dev-guide/widgets/widget_modal.md b/src/guides/v2.3/javascript-dev-guide/widgets/widget_modal.md index 7cb7576303d..2ee1f5d79d0 100644 --- a/src/guides/v2.3/javascript-dev-guide/widgets/widget_modal.md +++ b/src/guides/v2.3/javascript-dev-guide/widgets/widget_modal.md @@ -326,7 +326,7 @@ The modal widget is subscribed to the following events: You can listen to these events in two ways: -Use jQuery's [`on`](http://api.jquery.com/on/) function: +Use jQuery's [`on`](https://api.jquery.com/on/) function: ```javascript var modal = $('#modal_content').modal({...}); diff --git a/src/guides/v2.3/javascript-dev-guide/widgets/widget_tabs.md b/src/guides/v2.3/javascript-dev-guide/widgets/widget_tabs.md index d7d41642c25..e8dd48ea8f4 100644 --- a/src/guides/v2.3/javascript-dev-guide/widgets/widget_tabs.md +++ b/src/guides/v2.3/javascript-dev-guide/widgets/widget_tabs.md @@ -298,4 +298,4 @@ The result is three tabs with content, where the last tab is disabled based on i [lib/web/mage/tabs.js]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/mage/tabs.js [Initialize JavaScript]: {{page.baseurl}}/javascript-dev-guide/javascript/js_init.html [collapsible]: {{page.baseurl}}/javascript-dev-guide/widgets/widget_collapsible.html -[jQuery.animate()]: http://api.jquery.com/animate/ +[jQuery.animate()]: https://api.jquery.com/animate/ diff --git a/src/guides/v2.3/pattern-library/containers/slideouts-modals-overlays/slideouts-modals-overalys.md b/src/guides/v2.3/pattern-library/containers/slideouts-modals-overlays/slideouts-modals-overalys.md index fdb157fe4db..2fe6257e34b 100644 --- a/src/guides/v2.3/pattern-library/containers/slideouts-modals-overlays/slideouts-modals-overalys.md +++ b/src/guides/v2.3/pattern-library/containers/slideouts-modals-overlays/slideouts-modals-overalys.md @@ -122,7 +122,7 @@ This method of nesting a 12-column page-grid inside the slideout panel is repeat ### Behavior and Animation -When an action is taken that triggers a modal, the modal window should appear center-aligned in the user’s browser window. The modal should appear to fade in or grow from the center of the screen. The timing of this animation should be set to about 0.3s (see an [example of the animation here](http://tympanus.net/Development/ModalWindowEffects/) ), refer to "FADE IN & SCALE" option). When the modal is triggered, the parent page should become disabled and shaded while the modal is active. +When an action is taken that triggers a modal, the modal window should appear center-aligned in the user’s browser window. The modal should appear to fade in or grow from the center of the screen. The timing of this animation should be set to about 0.3s (see an [example of the animation here](https://tympanus.net/Development/ModalWindowEffects/) ), refer to "FADE IN & SCALE" option). When the modal is triggered, the parent page should become disabled and shaded while the modal is active. ![](img/modal1.png) diff --git a/src/guides/v2.3/pattern-library/containers/tabs/tabs.md b/src/guides/v2.3/pattern-library/containers/tabs/tabs.md index 76b768069cf..e53070368e3 100644 --- a/src/guides/v2.3/pattern-library/containers/tabs/tabs.md +++ b/src/guides/v2.3/pattern-library/containers/tabs/tabs.md @@ -50,7 +50,7 @@ User should be able to navigate through each tab with their keyboard. Follow the rule "Make all functionality available from a keyboard". -[http://www.w3.org/TR/WCAG20/#keyboard-operation](http://www.w3.org/TR/WCAG20/#keyboard-operation) +[http://www.w3.org/TR/WCAG20/#keyboard-operation](https://www.w3.org/TR/WCAG20/#keyboard-operation) ## Assets diff --git a/src/guides/v2.3/pattern-library/controls/buttons/buttons.md b/src/guides/v2.3/pattern-library/controls/buttons/buttons.md index b844fa12a2f..a844e992e66 100644 --- a/src/guides/v2.3/pattern-library/controls/buttons/buttons.md +++ b/src/guides/v2.3/pattern-library/controls/buttons/buttons.md @@ -320,7 +320,7 @@ Left/Right margin spacing should not be less than 10px ## Accessibility * [Keyboard shortcuts in Windows](https://support.microsoft.com/en-us/help/12445/windows-keyboard-shortcuts) -* [Mac keyboard shortcuts](http://support.apple.com/en-us/HT201236) +* [Mac keyboard shortcuts](https://support.apple.com/en-us/HT201236) (Keyboard shortcut same as checkbox) diff --git a/src/guides/v2.3/pattern-library/controls/viewcontroller/viewcontroller.md b/src/guides/v2.3/pattern-library/controls/viewcontroller/viewcontroller.md index 8d7103f975b..0d47c22e04a 100644 --- a/src/guides/v2.3/pattern-library/controls/viewcontroller/viewcontroller.md +++ b/src/guides/v2.3/pattern-library/controls/viewcontroller/viewcontroller.md @@ -43,7 +43,7 @@ The view control should always be placed as the most right item on the same row The controller should be accessible by keyboard and have a voice over for screen readers. Accessibility guideline follow buttons' guideline. * [Keyboard shortcuts in Windows](https://support.microsoft.com/en-us/help/12445/windows-keyboard-shortcuts) -* [Mac keyboard shortcuts](http://support.apple.com/en-us/HT201236) +* [Mac keyboard shortcuts](https://support.apple.com/en-us/HT201236) (Keyboard shortcut same as checkbox) diff --git a/src/guides/v2.3/pattern-library/general/accessibilityguideline/accessibilityGuideline.md b/src/guides/v2.3/pattern-library/general/accessibilityguideline/accessibilityGuideline.md index 052ba3f323e..b86217440cd 100644 --- a/src/guides/v2.3/pattern-library/general/accessibilityguideline/accessibilityGuideline.md +++ b/src/guides/v2.3/pattern-library/general/accessibilityguideline/accessibilityGuideline.md @@ -8,7 +8,7 @@ The Magento application should be accessible for all people, whatever their hard - **Be mindful of text length**—Don't make textual content too long or too short. -- **Provide adequate contrast**—Be extra careful with light shades of gray, orange, and yellow. Check your contrast levels here: [http://webaim.org/resources/contrastchecker/](http://webaim.org/resources/contrastchecker/) or here: [http://www.paciellogroup.com/resources/contrastAnalyser](http://www.paciellogroup.com/resources/contrastAnalyser) +- **Provide adequate contrast**—Be extra careful with light shades of gray, orange, and yellow. Check your contrast levels here: [https://webaim.org/resources/contrastchecker/](https://webaim.org/resources/contrastchecker/) or here: [https://www.tpgi.com/color-contrast-checker/](https://www.tpgi.com/color-contrast-checker/) **Acceptable** @@ -32,10 +32,10 @@ The Magento application should be accessible for all people, whatever their hard **Examples:** - - [http://www.nomensa.com/](http://www.nomensa.com/) + - [https://www.nomensa.com/](https://www.nomensa.com/) - [https://www.paypal.com/](https://www.paypal.com/) - - [http://www.standardchartered.com/en/](http://www.standardchartered.com/en/) - - [http://nemesisdesign.net/blog/accessibility/nice-css-skip-links-appearing-focus/](http://nemesisdesign.net/blog/accessibility/nice-css-skip-links-appearing-focus/) + - [https://www.sc.com/en/](https://www.sc.com/en/) + - [Skip-To Widget](https://github.com/paypal/skipto) - **Use animation, video and audio with caution**—If used, provide a play/pause button. Avoid flashing or strobing content, which can cause seizures. Provide captions and other alternatives for multimedia. @@ -90,6 +90,6 @@ The Magento application should be accessible for all people, whatever their hard ## Resources -- Overview: [http://www.w3.org/WAI/WCAG20/glance/](http://www.w3.org/WAI/WCAG20/glance/) -- Authoring Tool Accessibility Guidelines (ATAG) 1.0: [http://www.w3.org/TR/WCAG10-HTML-TECHS/](http://www.w3.org/TR/WCAG10-HTML-TECHS/) -- Authoring Tool Accessibility Guidelines (ATAG) 2.0: [http://www.w3.org/TR/WCAG20-HTML-TECHS/](http://www.w3.org/TR/WCAG20-HTML-TECHS/) +- Overview: [https://www.w3.org/WAI/standards-guidelines/wcag/glance/](https://www.w3.org/WAI/standards-guidelines/wcag/glance/) +- Authoring Tool Accessibility Guidelines (ATAG) 1.0: [https://www.w3.org/TR/WCAG10-HTML-TECHS/](https://www.w3.org/TR/WCAG10-HTML-TECHS/) +- Authoring Tool Accessibility Guidelines (ATAG) 2.0: [http://www.w3.org/TR/WCAG20-HTML-TECHS/](https://www.w3.org/TR/WCAG20-HTML-TECHS/) diff --git a/src/guides/v2.3/pattern-library/getting-user-input/date_time_selector/date_time_selector.md b/src/guides/v2.3/pattern-library/getting-user-input/date_time_selector/date_time_selector.md index 9eb087af501..a803c0b594c 100644 --- a/src/guides/v2.3/pattern-library/getting-user-input/date_time_selector/date_time_selector.md +++ b/src/guides/v2.3/pattern-library/getting-user-input/date_time_selector/date_time_selector.md @@ -148,7 +148,7 @@ The initial text field assumes the typical tab orders used in form field pattern ### Date Picker Widget -Reference: [Date Picker Widget](http://www.w3.org/TR/2009/WD-wai-aria-practices-20091215/#datepicker) +Reference: [Date Picker Widget](https://www.w3.org/TR/2009/WD-wai-aria-practices-20091215/#datepicker) As a general rule the actual calendar portion of the date picker should follow a table structure where days of the week and calendar day numbers are laid out in table cells. This provides context so an assistive technology can render the day of the week; its corresponding numeric calendar day, and week number if necessary. Consequently, it is best to start with an [HTML](https://glossary.magento.com/html) table and apply WAI-ARIA semantics for a grid. However, should the author wish to uses a div or span to represent the cells then the DOM structure for a table should be duplicated with rows marked with role="row." diff --git a/src/guides/v2.3/pattern-library/getting-user-input/form_elements/form_elements.md b/src/guides/v2.3/pattern-library/getting-user-input/form_elements/form_elements.md index 00678ee56a6..14ed147be57 100644 --- a/src/guides/v2.3/pattern-library/getting-user-input/form_elements/form_elements.md +++ b/src/guides/v2.3/pattern-library/getting-user-input/form_elements/form_elements.md @@ -189,7 +189,7 @@ For specific details concerning styling including fonts, colors and effects and ## Accessibility -Follow this guideline: [http://www.w3.org/TR/WCAG10-HTML-TECHS/#forms](http://www.w3.org/TR/WCAG10-HTML-TECHS/#forms). +Follow this guideline: [https://www.w3.org/TR/WCAG10-HTML-TECHS/#forms](https://www.w3.org/TR/WCAG10-HTML-TECHS/#forms). ## Assets diff --git a/src/guides/v2.3/pattern-library/getting-user-input/image_uploader/image_uploader.md b/src/guides/v2.3/pattern-library/getting-user-input/image_uploader/image_uploader.md index ec735d6cc87..99dec9873b5 100644 --- a/src/guides/v2.3/pattern-library/getting-user-input/image_uploader/image_uploader.md +++ b/src/guides/v2.3/pattern-library/getting-user-input/image_uploader/image_uploader.md @@ -73,7 +73,7 @@ Likewise, an image may be removed from the Admin application by tapping the "tra ## Accessibility -To initiate the uploader, the buttons should follow button accessibility guidelines: [http://www.w3.org/TR/WCAG10-HTML-TECHS/#forms-graphical-buttons](http://www.w3.org/TR/WCAG10-HTML-TECHS/#forms-graphical-buttons) +To initiate the uploader, the buttons should follow button accessibility guidelines: [https://www.w3.org/TR/WCAG10-HTML-TECHS/#forms-graphical-buttons](https://www.w3.org/TR/WCAG10-HTML-TECHS/#forms-graphical-buttons) In the browser upload window, standard behavior should be kept. diff --git a/src/guides/v2.3/pattern-library/getting-user-input/row_pattern/row_pattern.md b/src/guides/v2.3/pattern-library/getting-user-input/row_pattern/row_pattern.md index 298a1414f5d..7312e3623c8 100644 --- a/src/guides/v2.3/pattern-library/getting-user-input/row_pattern/row_pattern.md +++ b/src/guides/v2.3/pattern-library/getting-user-input/row_pattern/row_pattern.md @@ -65,7 +65,7 @@ Typically the Row Pattern will span either 8 or 12 columns for the page grid, de The form drop down, scroll area, and selections should be accessible via keyboard. -Follow this form control accessibility guideline: [http://www.w3.org/TR/WCAG10-HTML-TECHS/#forms](http://www.w3.org/TR/WCAG10-HTML-TECHS/#forms) +Follow this form control accessibility guideline: [https://www.w3.org/TR/WCAG10-HTML-TECHS/#forms](https://www.w3.org/TR/WCAG10-HTML-TECHS/#forms) ## Assets diff --git a/src/guides/v2.3/pattern-library/getting-user-input/select_from_list/select_from_list.md b/src/guides/v2.3/pattern-library/getting-user-input/select_from_list/select_from_list.md index 872ddec2590..58bbd5ac99e 100644 --- a/src/guides/v2.3/pattern-library/getting-user-input/select_from_list/select_from_list.md +++ b/src/guides/v2.3/pattern-library/getting-user-input/select_from_list/select_from_list.md @@ -38,7 +38,7 @@ The advantage of a list box is that it exposes more options to the user. The lis The form drop down, scroll area, and selections should be accessible via keyboard. -Follow this form control accessibility guideline: [http://www.w3.org/TR/WCAG10-HTML-TECHS/#forms](http://www.w3.org/TR/WCAG10-HTML-TECHS/#forms) +Follow this form control accessibility guideline: [https://www.w3.org/TR/WCAG10-HTML-TECHS/#forms](https://www.w3.org/TR/WCAG10-HTML-TECHS/#forms) ## Assets diff --git a/src/guides/v2.3/pattern-library/getting-user-input/use_default_config/use_default_config.md b/src/guides/v2.3/pattern-library/getting-user-input/use_default_config/use_default_config.md index a7c4ad9c9e3..0d6f8f906fc 100644 --- a/src/guides/v2.3/pattern-library/getting-user-input/use_default_config/use_default_config.md +++ b/src/guides/v2.3/pattern-library/getting-user-input/use_default_config/use_default_config.md @@ -38,7 +38,7 @@ Value is set in Stores > Store configuration and user has to go there to change ## Accessibility -User should be able to access this control via their keyboard and it should be legible if the user use voice navigation. Follow this accessibility guideline: [http://www.w3.org/TR/WCAG10-HTML-TECHS/#link](http://www.w3.org/TR/WCAG10-HTML-TECHS/#link) +User should be able to access this control via their keyboard and it should be legible if the user use voice navigation. Follow this accessibility guideline: [https://www.w3.org/TR/WCAG10-HTML-TECHS/#link](https://www.w3.org/TR/WCAG10-HTML-TECHS/#link) ## Assets diff --git a/src/guides/v2.3/pattern-library/graphics/iconography/iconography.md b/src/guides/v2.3/pattern-library/graphics/iconography/iconography.md index df2c8e4a83a..01a89fd1fcf 100644 --- a/src/guides/v2.3/pattern-library/graphics/iconography/iconography.md +++ b/src/guides/v2.3/pattern-library/graphics/iconography/iconography.md @@ -62,7 +62,7 @@ Efforts should be made to optimize icons and/or icon fonts for assistive technol Use "aria-hidden" attribute: Modern versions of assistive technologies will announce CSS generated content, as well as specific Unicode characters. To avoid unintended and confusing output in screen readers hide them with the aria-hidden="true" attribute. -From: [http://getbootstrap.com/components/](http://getbootstrap.com/components/) +From: [https://getbootstrap.com/docs/5.2/components/accordion/](https://getbootstrap.com/docs/5.2/components/accordion/) ### Example of "aria-hidden" attribute @@ -74,7 +74,7 @@ From: [http://getbootstrap.com/components/](http://getbootstrap.com/components/) Favorite ``` -From: [http://www.filamentgroup.com/lab/bulletproof_icon_fonts.html](http://www.filamentgroup.com/lab/bulletproof_icon_fonts.html) +From: [https://www.filamentgroup.com/lab/bulletproof_icon_fonts.html](https://www.filamentgroup.com/lab/bulletproof_icon_fonts.html) ### How to make your icon font accessible in three easy steps diff --git a/src/guides/v2.3/pattern-library/navigation/links/links.md b/src/guides/v2.3/pattern-library/navigation/links/links.md index 207557b574c..aed8172a8cb 100644 --- a/src/guides/v2.3/pattern-library/navigation/links/links.md +++ b/src/guides/v2.3/pattern-library/navigation/links/links.md @@ -20,7 +20,7 @@ When initiating an action or a process ## Accessibility -Full Guideline Reference: [http://www.w3.org/TR/WCAG10-HTML-TECHS/#links](http://www.w3.org/TR/WCAG10-HTML-TECHS/#links) +Full Guideline Reference: [https://www.w3.org/TR/WCAG10-HTML-TECHS/#links](https://www.w3.org/TR/WCAG10-HTML-TECHS/#links) ### Links Text diff --git a/src/guides/v2.3/payments-integrations/payment-gateway/command-pool.md b/src/guides/v2.3/payments-integrations/payment-gateway/command-pool.md index f64060e6fe4..086f051c09b 100644 --- a/src/guides/v2.3/payments-integrations/payment-gateway/command-pool.md +++ b/src/guides/v2.3/payments-integrations/payment-gateway/command-pool.md @@ -13,7 +13,7 @@ All [gateway commands]({{ page.baseurl }}/payments-integrations/payment-gateway/ ## Interface -The basic interface for a command pool is [`\Magento\Payment\Gateway\Command\CommandPoolInterface`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Payment/Gateway/Command/CommandPoolInterface.php). It implements the [Pool pattern](http://designpatternsphp.readthedocs.io/en/latest/Creational/Pool/README.html) +The basic interface for a command pool is [`\Magento\Payment\Gateway\Command\CommandPoolInterface`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Payment/Gateway/Command/CommandPoolInterface.php). It implements the [Pool pattern](https://designpatternsphp.readthedocs.io/en/latest/Creational/Pool/README.html) ## Default implementation diff --git a/src/guides/v2.3/payments-integrations/payment-gateway/gateway-command.md b/src/guides/v2.3/payments-integrations/payment-gateway/gateway-command.md index e4944bf4091..5f56f9826de 100644 --- a/src/guides/v2.3/payments-integrations/payment-gateway/gateway-command.md +++ b/src/guides/v2.3/payments-integrations/payment-gateway/gateway-command.md @@ -12,7 +12,7 @@ For each operation (authorization, capture and so on) of a certain payment provi ## Interface -Basic interface for a gateway command is [`\Magento\Payment\Gateway\CommandInterface`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Payment/Gateway/CommandInterface.php). It implements the [Command design pattern](http://designpatternsphp.readthedocs.io/en/latest/Behavioral/Command/README.html). +Basic interface for a gateway command is [`\Magento\Payment\Gateway\CommandInterface`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Payment/Gateway/CommandInterface.php). It implements the [Command design pattern](https://designpatternsphp.readthedocs.io/en/latest/Behavioral/Command/README.html). ## Basic implementation diff --git a/src/guides/v2.3/payments-integrations/payment-gateway/request-builder.md b/src/guides/v2.3/payments-integrations/payment-gateway/request-builder.md index c30aafee265..984fc71dc78 100644 --- a/src/guides/v2.3/payments-integrations/payment-gateway/request-builder.md +++ b/src/guides/v2.3/payments-integrations/payment-gateway/request-builder.md @@ -17,7 +17,7 @@ The basic interface for a request builder is [`\Magento\Payment\Gateway\Request\ `\Magento\Payment\Gateway\Request\BuilderComposite` is a container for a list of `\Magento\Payment\Gateway\Request\BuilderInterface` implementations. It gets a list of classes, or types, or virtual type names, and performs a lazy instantiation on an actual `BuilderComposite::build([])` call. So that you can have as many objects, as required, but only those, which are needed for a request are instantiated. -`BuilderComposite` implements the [composite design pattern](http://designpatternsphp.readthedocs.io/en/latest/Structural/Composite/README.html). +`BuilderComposite` implements the [composite design pattern](https://designpatternsphp.readthedocs.io/en/latest/Structural/Composite/README.html). The concatenation strategy is defined in the `BuilderComposite::merge()` method. So if you need to alter the strategy, you need to add your custom implementation of `BuilderComposite`. diff --git a/src/guides/v2.3/payments-integrations/signifyd/signifyd.md b/src/guides/v2.3/payments-integrations/signifyd/signifyd.md index 0d3ecdba0a2..e54213f6afb 100644 --- a/src/guides/v2.3/payments-integrations/signifyd/signifyd.md +++ b/src/guides/v2.3/payments-integrations/signifyd/signifyd.md @@ -24,7 +24,7 @@ To improve the accuracy of Signifyd's transaction estimation, external integrati ### Provide AVS/CVV response codes -A custom [payment method](https://glossary.magento.com/payment-method) can implement the `\Magento\Payment\Api\PaymentVerificationInterface` to provide AVS/CVV mapping from specific codes to [EMS standard](http://www.emsecommerce.net/avs_cvv2_response_codes.htm), then register these mappings in the `config.xml` file of a custom payment module. +A custom [payment method](https://glossary.magento.com/payment-method) can implement the `\Magento\Payment\Api\PaymentVerificationInterface` to provide AVS/CVV mapping from specific codes to EMS standard, then register these mappings in the `config.xml` file of a custom payment module. Below is an example of mapping registration: diff --git a/src/guides/v2.3/performance-best-practices/advanced-js-bundling.md b/src/guides/v2.3/performance-best-practices/advanced-js-bundling.md index b1cc5ef536a..ef9fc53e732 100644 --- a/src/guides/v2.3/performance-best-practices/advanced-js-bundling.md +++ b/src/guides/v2.3/performance-best-practices/advanced-js-bundling.md @@ -85,8 +85,8 @@ A clean Magento installation allows reaching enough good performance by splittin The following steps require you to install and have familiarity with the following tools: - [nodejs](https://nodejs.org/en/download/) -- [r.js](http://requirejs.org/docs/optimization.html#download) -- [PhantomJS](http://phantomjs.org/) (optional) +- [r.js](https://requirejs.org/docs/optimization.html#download) +- [PhantomJS](https://phantomjs.org/) (optional) ### Sample code diff --git a/src/guides/v2.3/performance-best-practices/configuration.md b/src/guides/v2.3/performance-best-practices/configuration.md index f2f4877cf0e..4d64c16caea 100644 --- a/src/guides/v2.3/performance-best-practices/configuration.md +++ b/src/guides/v2.3/performance-best-practices/configuration.md @@ -31,14 +31,14 @@ When you launch your store in production, activate all the caches from the **Sys ## Asynchronous email notifications -Enabling the “Asynchronous email notifications” setting moves processes that handle checkout and order processing email notifications to the background. To enable this feature, go to **Stores > Settings > Configuration > Sales > Sales Emails > General Settings > Asynchronous Sending**. See [Sales Emails]({{ site.user_guide_url }}/configuration/sales/sales-emails.html) in the _{{site.data.var.ce}} User Guide_ for more information. +Enabling the "Asynchronous email notifications" setting moves processes that handle checkout and order processing email notifications to the background. To enable this feature, go to **Stores > Settings > Configuration > Sales > Sales Emails > General Settings > Asynchronous Sending**. See [Sales Emails]({{ site.user_guide_url }}/configuration/sales/sales-emails.html) in the _{{site.data.var.ce}} User Guide_ for more information. ## Asynchronous order data processing There can be times when intensive sales on a storefront occur at the same time that Magento is performing intensive order processing. You can configure Magento to distinguish these two traffic patterns on the database level to avoid conflicts between read and write operations in the corresponding tables. You can store and index order data asynchronously. Orders are placed in temporary storage and moved in bulk to the Order Management grid without any collisions. You can activate this option from **Stores > Settings > Configuration > Advanced > Developer > Grid Settings > Asynchronous indexing**. See [Scheduled Grid Updates]({{ site.user_guide_url }}/sales/order-grid-updates-schedule.html) in the _{{site.data.var.ce}} User Guide_ for more information. {:.bs-callout-info} -The **Developer** tab and options are only available in [Developer mode]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-mode.html). [{{ site.data.var.ece }}]({{ site.baseurl }}/cloud/requirements/cloud-requirements.html#cloud-req-test) does not support `Developer` mode. +The **Developer** tab and options are only available in [Developer mode]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-mode.html). [{{ site.data.var.ece }}](https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/overview.html) does not support `Developer` mode. ## Deferred stock update @@ -62,13 +62,13 @@ To improve the storefront responsiveness of your Magento instance, go to the Adm | Template Settings | Minify HTML | Yes | {:.bs-callout-info} -The **Developer** tab and options are only available in [Developer mode]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-mode.html). [{{ site.data.var.ece }}]({{ site.baseurl }}/cloud/requirements/cloud-requirements.html#cloud-req-test) does not support `Developer` mode. +The **Developer** tab and options are only available in [Developer mode]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-mode.html). [{{ site.data.var.ece }}](https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/develop/overview.html) does not support `Developer` mode. When you activate the **Enable JavaScript Bundling** option, you allow Magento to merge all JS resources into one or a set of bundles that are loaded in storefront pages. Bundling JS results in fewer requests to the server, which improves page performance. It also helps the browser cache JS resources on the first call and reuse them for all further browsing. This option also brings lazy evaluation, as all JS is loaded as text. It initiates analysis and evaluation of code only after specific actions are triggered on the page. However, this setting is not recommended for stores where the first page load time is extremely critical, because all JS content will be loaded on the first call. ### Bundling tips -* We recommend that you use third-party tools for minification and bundling (like [r.js](http://requirejs.org/)). Magento built-in mechanisms are not optimal and are shipped as fallback alternatives. +* We recommend that you use third-party tools for minification and bundling (like [r.js](https://requirejs.org/)). Magento built-in mechanisms are not optimal and are shipped as fallback alternatives. * Activating the HTTP2 protocol can be a good alternative to using JS bundling. The protocol provides pretty much the same benefits. * We do not recommend using deprecated settings like merging JS and CSS files, as they were designed only for synchronously-loaded JS in the HEAD section of the page. Using this technique can cause bundling and requireJS logic to work incorrectly. diff --git a/src/guides/v2.3/performance-best-practices/software.md b/src/guides/v2.3/performance-best-practices/software.md index b9c4ff3d522..25fbfe415ae 100644 --- a/src/guides/v2.3/performance-best-practices/software.md +++ b/src/guides/v2.3/performance-best-practices/software.md @@ -108,7 +108,7 @@ You should also configure the number of threads for input request processing, as Web server | Attribute name | Location | Related information --- | --- | --- | --- Nginx | `worker_connections` | `/etc/nginx/nginx.conf` (Debian) | [Tuning NGINX for Performance](https://www.nginx.com/blog/tuning-nginx/) -Apache 2.2 | `MaxClients` | `/etc/httpd/conf/httpd.conf` (CentOS) | [Apache Performance Tuning](http://httpd.apache.org/docs/2.2/misc/perf-tuning.html) +Apache 2.2 | `MaxClients` | `/etc/httpd/conf/httpd.conf` (CentOS) | [Apache Performance Tuning](https://httpd.apache.org/docs/2.2/misc/perf-tuning.html) Apache 2.4 | `MaxRequestWorkers` | `/etc/httpd/conf/httpd.conf` (CentOS) | [Apache MPM Common Directives](https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestworkers ) ## MySQL diff --git a/src/guides/v2.3/pwa/index.md b/src/guides/v2.3/pwa/index.md index e8c393d1907..fab73068928 100644 --- a/src/guides/v2.3/pwa/index.md +++ b/src/guides/v2.3/pwa/index.md @@ -1,6 +1,7 @@ --- layout: full-width title: Magento Progressive Web Applications (PWA) +redirect_to: https://developer.adobe.com/commerce/pwa-studio/ --- ## What is a Progressive Web App diff --git a/src/guides/v2.3/release-notes/2-3-7-p1.md b/src/guides/v2.3/release-notes/2-3-7-p1.md index ec19312dea8..85014e636dc 100644 --- a/src/guides/v2.3/release-notes/2-3-7-p1.md +++ b/src/guides/v2.3/release-notes/2-3-7-p1.md @@ -9,6 +9,10 @@ title: Adobe Commerce 2.3.7-p1 Release Notes PHP 7.3 reached end of support in December 2021, and {{site.data.var.ee}} 2.3.x reaches end of support in April 2022. **We strongly recommend planning your upgrade now to {{site.data.var.ee}} 2.4.x or {{site.data.var.ce}} 2.4.x and PHP 7.4.x to help maintain PCI compliance**. +## Apply `AC-3022.patch` to continue offering DHL as a shipping carrier + +DHL has introduced schema version 6.2 and will deprecate schema version 6.0 in the near future. Adobe Commerce 2.4.4 and earlier versions that support the DHL integration support only version 6.0. Merchants deploying these releases should apply `AC-3022.patch` at their earliest convenience to continue offering DHL as a shipping carrier. See the [Apply a patch to continue offering DHL as shipping carrier](https://support.magento.com/hc/en-us/articles/7707818131597-Apply-a-patch-to-continue-offering-DHL-as-shipping-carrier) Knowledge Base article for information about downloading and installing the patch. + ## Apply MC-43048__set_rate_limits__2.3.7-p1.patch to address issue with API rate limiting This hotfix provides a solution for the issue where Web APIs cannot process requests that contain more than 20 items in an array. This issue affects deployments running {{ site.data.var.ce }} 2.4.3, {{ site.data.var.ee }} 2.4.3, or {{ site.data.var.ee }} 2.3.7-p1. Built-in rate limiting was added to these releases to prevent denial-of-service (DoS) attacks, and the default maximum was set to 20. This patch reverts the default limit to a higher value. If you suspect that your store is experiencing a DoS attack, Adobe recommends lowering the default input limits to a lower value to restrict the number of resources that can be requested. See the [Web API unable to process requests with more than 20 items in array](https://support.magento.com/hc/en-us/articles/4406893342093) Knowledge Base article. @@ -27,7 +31,7 @@ This error results from the use of the `str_contains` function, which is an PHP Seventeen security fixes and one security enhancement are included in this security patch. Fifteen of these fixes have been backported from Magento 2.4.3, and two fixes are specific to the 2.3.x product line. See [Adobe Security Bulletin](https://helpx.adobe.com/security/products/magento/apsb21-64.html). -Rate limiting is now built in to Magento APIs to prevent denial-of-service (DoS) attacks. Web APIs now impose restrictions on the size or number of resources (the default limit is set to 20 and can be configured to a different value based on business need) that can be requested by a client. See [Rate limiting]({{page.baseurl}}/get-started/api-security.html#rate-limiting) for information about configuring these restrictions. +Rate limiting is now built in to Magento APIs to prevent denial-of-service (DoS) attacks. Web APIs now impose restrictions on the size or number of resources (the default limit is set to 20 and can be configured to a different value based on business need) that can be requested by a client. See [Rate limiting]({{page.baseurl}}/get-started/api-security.html) for information about configuring these restrictions. Security patches typically include all hotfixes that have been released for the preceding complete release. However, no hot fixes have been released for {{ site.data.var.ee }} 2.3.7 and {{ site.data.var.ce }} 2.3.7. diff --git a/src/guides/v2.3/release-notes/2-3-7-p2.md b/src/guides/v2.3/release-notes/2-3-7-p2.md index 97035fe3959..352eeec1582 100644 --- a/src/guides/v2.3/release-notes/2-3-7-p2.md +++ b/src/guides/v2.3/release-notes/2-3-7-p2.md @@ -11,6 +11,10 @@ PHP 7.3 reached end of support in December 2021, and {{ site.data.var.ee }} 2.3. {:.bs-callout-info} Releases may contain backward-incompatible changes (BIC). To review minor backward-incompatible changes, see [BIC reference]({{page.baseurl}}/release-notes/backward-incompatible-changes/reference.html). (Major backward-incompatible issues are described in [BIC highlights]({{page.baseurl}}/release-notes/backward-incompatible-changes/index.html). Not all releases introduce major BICs.) +## Apply `AC-3022.patch` to continue offering DHL as a shipping carrier + +DHL has introduced schema version 6.2 and will deprecate schema version 6.0 in the near future. Adobe Commerce 2.4.4 and earlier versions that support the DHL integration support only version 6.0. Merchants deploying these releases should apply `AC-3022.patch` at their earliest convenience to continue offering DHL as a shipping carrier. See the [Apply a patch to continue offering DHL as shipping carrier](https://support.magento.com/hc/en-us/articles/7707818131597-Apply-a-patch-to-continue-offering-DHL-as-shipping-carrier) Knowledge Base article for information about downloading and installing the patch. + ## What's in this release? This security patch includes: diff --git a/src/guides/v2.3/release-notes/2-3-7-p3.md b/src/guides/v2.3/release-notes/2-3-7-p3.md index 57cc124ffd9..0f27821d9ba 100644 --- a/src/guides/v2.3/release-notes/2-3-7-p3.md +++ b/src/guides/v2.3/release-notes/2-3-7-p3.md @@ -11,6 +11,10 @@ PHP 7.3 reached end of support in December 2021, and {{ site.data.var.ee }} 2.3. {:.bs-callout-info} Releases may contain backward-incompatible changes (BIC). To review minor backward-incompatible changes, see [BIC reference]({{page.baseurl}}/release-notes/backward-incompatible-changes/reference.html). (Major backward-incompatible issues are described in [BIC highlights]({{page.baseurl}}/release-notes/backward-incompatible-changes/index.html). Not all releases introduce major BICs.) +## Apply `AC-3022.patch` to continue offering DHL as a shipping carrier + +DHL has introduced schema version 6.2 and will deprecate schema version 6.0 in the near future. Adobe Commerce 2.4.4 and earlier versions that support the DHL integration support only version 6.0. Merchants deploying these releases should apply `AC-3022.patch` at their earliest convenience to continue offering DHL as a shipping carrier. See the [Apply a patch to continue offering DHL as shipping carrier](https://support.magento.com/hc/en-us/articles/7707818131597-Apply-a-patch-to-continue-offering-DHL-as-shipping-carrier) Knowledge Base article for information about downloading and installing the patch. + ## What's in this release? This security patch includes: diff --git a/src/guides/v2.3/release-notes/2-3-7-p4.md b/src/guides/v2.3/release-notes/2-3-7-p4.md new file mode 100644 index 00000000000..650863d8629 --- /dev/null +++ b/src/guides/v2.3/release-notes/2-3-7-p4.md @@ -0,0 +1,42 @@ +--- +group: release-notes +title: Adobe Commerce 2.3.7-p4 Release Notes +--- + +{{ site.data.var.ee }} 2.3.7-p4 provides 15 security fixes that enhance your {{ site.data.var.ee }} 2.3.7 or {{ site.data.var.ce }} 2.3.7 deployment. It provides fixes for vulnerabilities that have been identified in the previous release ({{ site.data.var.ee }} 2.3.7-p3). + +{:.bs-callout-info} +PHP 7.3 reached end of support in December 2021, and {{ site.data.var.ee }} 2.3.x and {{ site.data.var.ce }} 2.3.x will reach end of support in September 2022. **We strongly recommend planning your upgrade now to {{ site.data.var.ee }} 2.4.x or {{ site.data.var.ce }} 2.4.x deployment to help maintain PCI compliance**. + +{:.bs-callout-info} +Releases may contain backward-incompatible changes (BIC). To review minor backward-incompatible changes, see [BIC reference]({{page.baseurl}}/release-notes/backward-incompatible-changes/reference.html). (Major backward-incompatible issues are described in [BIC highlights]({{page.baseurl}}/release-notes/backward-incompatible-changes/index.html). Not all releases introduce major BICs.) + +## Apply `AC-3022.patch` to continue offering DHL as a shipping carrier + +DHL has introduced schema version 6.2 and will deprecate schema version 6.0 in the near future. Adobe Commerce 2.4.4 and earlier versions that support the DHL integration support only version 6.0. Merchants deploying these releases should apply `AC-3022.patch` at their earliest convenience to continue offering DHL as a shipping carrier. See the [Apply a patch to continue offering DHL as shipping carrier](https://support.magento.com/hc/en-us/articles/7707818131597-Apply-a-patch-to-continue-offering-DHL-as-shipping-carrier) Knowledge Base article for information about downloading and installing the patch. + +## What's in this release? + +This security patch includes: + +* Security enhancements +* Security bug fixes. See [Adobe Security Bulletin](https://helpx.adobe.com/security/products/magento/apsb22-38.html) for the latest discussion of these fixed issues. + +### Security highlights + +Security improvements for this release improve compliance with the latest security best practices, including: + +* ACL resources have been added to Inventory. +* Inventory template security has been enhanced. + +## Known issue + +**Issue**: Merchants may notice package version downgrade notices during upgrade from {{ site.data.var.ee }} 2.3.7-p3 to {{ site.data.var.ee }} 2.3.7-p4. These messages can be ignored. The discrepancy in package versions result from anomalies during package generation. No product functionality has been affected. + +## Installation and upgrade instructions + +For instructions on downloading and applying security patches (including patch 2.3.7-p4), see [Quick start install]({{site.baseurl}}/guides/v2.4/install-gde/composer.html). + +## More information? + +For general information about security patches, see [Introducing the New Security Patch Release](https://community.magento.com/t5/Magento-DevBlog/Introducing-the-New-Security-Patch-Release/ba-p/141287). diff --git a/src/guides/v2.3/release-notes/ReleaseNotes2.3.0Commerce.md b/src/guides/v2.3/release-notes/ReleaseNotes2.3.0Commerce.md index 97cadadc6d2..e0c02714ca0 100644 --- a/src/guides/v2.3/release-notes/ReleaseNotes2.3.0Commerce.md +++ b/src/guides/v2.3/release-notes/ReleaseNotes2.3.0Commerce.md @@ -13,7 +13,7 @@ The patch addresses an issue with [CVE-2019-8118](https://cve.mitre.org/cgi-bin/ ## Apply patch PRODSECBUG-2233 to address critical remote code execution vulnerability (RCE) -An unauthenticated cross-site scripting vulnerability combined with an authenticated Phar deserialization vulnerability has left this version of {{site.data.var.ee}} open to serious exploit. An attacker can use these vulnerabilities to inject JavaScript into the Admin and subsequently launch malicious code in a store user’s browser. **We strongly recommend that all users of the affected versions of Magento download and apply the appropriate patch as soon as possible**. +An unauthenticated cross-site scripting vulnerability combined with an authenticated Phar deserialization vulnerability has left this version of {{site.data.var.ee}} open to serious exploit. An attacker can use these vulnerabilities to inject JavaScript into the Admin and subsequently launch malicious code in a store user's browser. **We strongly recommend that all users of the affected versions of Magento download and apply the appropriate patch as soon as possible**. This issue and the available patches are discussed in the [Extending the June 25 Security Update to Older Versions of Magento](https://community.magento.com/t5/Magento-DevBlog/Extending-the-June-25-Security-Update-to-Older-Versions-of/ba-p/138231) blog post. You can directly access patch code through your Magento account for {{site.data.var.ee}}. Locate the patch by the name. We provide both Git-based and Composer-based patches. @@ -296,7 +296,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve removed `Zend_Json` from `Setup/Migration.php`. [GitHub-10341](https://github.com/magento/magento2/issues/10341) +* We've removed `Zend_Json` from `Setup/Migration.php`. [GitHub-10341](https://github.com/magento/magento2/issues/10341) @@ -572,7 +572,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* Customers can now change an existing value in the checkout page’s **State/Province** field to an alphanumeric value. Previously, when a customer tried to edit this field in this way, Magento did not place the order, and displayed a descriptive error message. +* Customers can now change an existing value in the checkout page's **State/Province** field to an alphanumeric value. Previously, when a customer tried to edit this field in this way, Magento did not place the order, and displayed a descriptive error message. @@ -636,7 +636,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* Magento now successfully processes an order even when the customer quickly double-clicks on the minicart’s **Proceed to checkout** button. Previously, if a customer double-clicked this button while the page was loading, Magento emptied the shopping cart. +* Magento now successfully processes an order even when the customer quickly double-clicks on the minicart's **Proceed to checkout** button. Previously, if a customer double-clicked this button while the page was loading, Magento emptied the shopping cart. @@ -760,7 +760,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* Magento now maintains the default products sort order of “newest first” when you upgrade your Magento deployment. Previously, after upgrade, the default products order in categories changed from “newest first” to “oldest first”. [GitHub-15627](https://github.com/magento/magento2/issues/15627) +* Magento now maintains the default products sort order of "newest first" when you upgrade your Magento deployment. Previously, after upgrade, the default products order in categories changed from "newest first" to "oldest first". [GitHub-15627](https://github.com/magento/magento2/issues/15627) @@ -916,7 +916,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* Category smart rules now work as expected for partial values when conditions include using a dropdown attribute and "contains”. +* Category smart rules now work as expected for partial values when conditions include using a dropdown attribute and "contains". @@ -932,7 +932,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* A product’s **Use Default Value** check box for attributes is now unchecked by default when you add a new website to a product’s scope. +* A product's **Use Default Value** check box for attributes is now unchecked by default when you add a new website to a product's scope. @@ -1144,7 +1144,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve fixed the display of calculated tax for a logged-in customer when billing and shipping address differed. +* We've fixed the display of calculated tax for a logged-in customer when billing and shipping address differed. ### CMS content @@ -1316,11 +1316,11 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* Magento no longer displays the `Too many password reset requests` message when an administrator attempts to change a customer’s password from the Admin and the **max wait time between password resets** setting has been disabled in the store configuration settings. [GitHub-11409](https://github.com/magento/magento2/issues/11409) +* Magento no longer displays the `Too many password reset requests` message when an administrator attempts to change a customer's password from the Admin and the **max wait time between password resets** setting has been disabled in the store configuration settings. [GitHub-11409](https://github.com/magento/magento2/issues/11409) -* We’ve added methods to support setting text values for data pulled from the `customer_grid_flat` table during CSV export. [GitHub-10765](https://github.com/magento/magento2/issues/10765) +* We've added methods to support setting text values for data pulled from the `customer_grid_flat` table during CSV export. [GitHub-10765](https://github.com/magento/magento2/issues/10765) @@ -1332,7 +1332,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve improved the error message that Magento displays when an administrator is redirected to a forced password change from the Admin user account page. *Fix submitted by dimonovp in pull request [14199](https://github.com/magento/magento2/pull/14199)*. [GitHub-13768](https://github.com/magento/magento2/issues/13768) +* We've improved the error message that Magento displays when an administrator is redirected to a forced password change from the Admin user account page. *Fix submitted by dimonovp in pull request [14199](https://github.com/magento/magento2/pull/14199)*. [GitHub-13768](https://github.com/magento/magento2/issues/13768) @@ -1348,11 +1348,11 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve added cast to string for `GroupInterface::CUST_GROUP_ALL` in the customer group source model. [GitHub-10436](https://github.com/magento/magento2/issues/10436) +* We've added cast to string for `GroupInterface::CUST_GROUP_ALL` in the customer group source model. [GitHub-10436](https://github.com/magento/magento2/issues/10436) -* Magento now always returns the user data for the current logged user. Previously, you could get another customer’s session information from sections controller without a timestamp. *Fix submitted by rostyslav-hymon in pull request [14661](https://github.com/magento/magento2/pull/14661)*. [GitHub-14049](https://github.com/magento/magento2/issues/14049) +* Magento now always returns the user data for the current logged user. Previously, you could get another customer's session information from sections controller without a timestamp. *Fix submitted by rostyslav-hymon in pull request [14661](https://github.com/magento/magento2/pull/14661)*. [GitHub-14049](https://github.com/magento/magento2/issues/14049) @@ -1564,7 +1564,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve replaced the usage of `Zend_Json::encode` in the setup marketplace tests. [GitHub-9236](https://github.com/magento/magento2/issues/9236) +* We've replaced the usage of `Zend_Json::encode` in the setup marketplace tests. [GitHub-9236](https://github.com/magento/magento2/issues/9236) @@ -1644,7 +1644,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve fixed backward-incompatible changes to transport variable event parameters that had previously resulted in neither the email or the `$transport` variable being changed as expected. *Fix submitted by gwharton in pull request [16600](https://github.com/magento/magento2/pull/16600)*. [GitHub-10210](https://github.com/magento/magento2/issues/10210) +* We've fixed backward-incompatible changes to transport variable event parameters that had previously resulted in neither the email or the `$transport` variable being changed as expected. *Fix submitted by gwharton in pull request [16600](https://github.com/magento/magento2/pull/16600)*. [GitHub-10210](https://github.com/magento/magento2/issues/10210) @@ -1682,7 +1682,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve removed the usage of `Zend_Json` from the JSON controller. [GitHub-10342](https://github.com/magento/magento2/issues/10342) +* We've removed the usage of `Zend_Json` from the JSON controller. [GitHub-10342](https://github.com/magento/magento2/issues/10342) @@ -1694,7 +1694,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve added a declarative mechanism to limit the HTTP methods that a controller can process by implementing one or more `HttpActionInterface`. +* We've added a declarative mechanism to limit the HTTP methods that a controller can process by implementing one or more `HttpActionInterface`. @@ -1786,7 +1786,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve removed the 30-second timeout limit for the session locking mechanism when Redis is used for session storage. +* We've removed the 30-second timeout limit for the session locking mechanism when Redis is used for session storage. @@ -2052,7 +2052,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* The welcome message now displays the new customer’s first and last name after they have confirmed their account by clicking the **Confirm Your Account** button in the confirmation email. [GitHub-12719](https://github.com/magento/magento2/issues/12719) +* The welcome message now displays the new customer's first and last name after they have confirmed their account by clicking the **Confirm Your Account** button in the confirmation email. [GitHub-12719](https://github.com/magento/magento2/issues/12719) @@ -2172,7 +2172,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* Import now completes successfully when a product’s CSV entry is split over two import “bunches”. Previously, Magento threw this error: `Cannot add or update a child row: a foreign key constraint fails`, and import failed. +* Import now completes successfully when a product's CSV entry is split over two import "bunches". Previously, Magento threw this error: `Cannot add or update a child row: a foreign key constraint fails`, and import failed. @@ -2312,7 +2312,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve removed `Zend_Json` from the data object, test suite, and package information. [GitHub-10306](https://github.com/magento/magento2/issues/10306), [GitHub-10320](https://github.com/magento/magento2/issues/10320), [GitHub-10340](https://github.com/magento/magento2/issues/10340) +* We've removed `Zend_Json` from the data object, test suite, and package information. [GitHub-10306](https://github.com/magento/magento2/issues/10306), [GitHub-10320](https://github.com/magento/magento2/issues/10320), [GitHub-10340](https://github.com/magento/magento2/issues/10340) @@ -2408,7 +2408,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve fixed an issue with `addCrumb()`. [GitHub-11275](https://github.com/magento/magento2/issues/11275) +* We've fixed an issue with `addCrumb()`. [GitHub-11275](https://github.com/magento/magento2/issues/11275) @@ -2534,7 +2534,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* A customer subscription on one store no longer depends on the customer’s subscription on another store. +* A customer subscription on one store no longer depends on the customer's subscription on another store. @@ -2756,7 +2756,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* You can change store locale without the exporting and importing configuration data. While Magento is in production mode and the `SCD_ON_DEMAND` is enabled, the Magento store and admin locale options are available. See [Change locales]({{ site.baseurl }}/cloud/live/sens-data-over.html#change-locales). +* You can change store locale without the exporting and importing configuration data. While Magento is in production mode and the `SCD_ON_DEMAND` is enabled, the Magento store and admin locale options are available. See [Change locales](https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/store-settings.html#change-locales). @@ -2970,7 +2970,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* The invoice grid now shows the correct subtotal for a partial invoice. Previously, it showed the entire order’s subtotal. *Fix submitted by AlexWorking in pull request [14209](https://github.com/magento/magento2/pull/14209)*. [GitHub-13804](https://github.com/magento/magento2/issues/13804) +* The invoice grid now shows the correct subtotal for a partial invoice. Previously, it showed the entire order's subtotal. *Fix submitted by AlexWorking in pull request [14209](https://github.com/magento/magento2/pull/14209)*. [GitHub-13804](https://github.com/magento/magento2/issues/13804) @@ -2990,7 +2990,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* Magento now syncs an order’s shipping and billing addresses as expected when a customer edits the billing address. [GitHub-10856](https://github.com/magento/magento2/issues/10856) +* Magento now syncs an order's shipping and billing addresses as expected when a customer edits the billing address. [GitHub-10856](https://github.com/magento/magento2/issues/10856) @@ -3008,7 +3008,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve fixed an error in discount calculations that prevented merchants from creating a rule that set a tex rate and 100% discount. Previously, when a tax rule was applied, and a 100% discount was also applied during check out, the shopping cart displayed a negative grand total. *Fix submitted by Stanislav Ilnytskyi in pull request [14468](https://github.com/magento/magento2/pull/14468)*. [GitHub-10790](https://github.com/magento/magento2/issues/10790) +* We've fixed an error in discount calculations that prevented merchants from creating a rule that set a tex rate and 100% discount. Previously, when a tax rule was applied, and a 100% discount was also applied during check out, the shopping cart displayed a negative grand total. *Fix submitted by Stanislav Ilnytskyi in pull request [14468](https://github.com/magento/magento2/pull/14468)*. [GitHub-10790](https://github.com/magento/magento2/issues/10790) ### Sample data @@ -3578,7 +3578,7 @@ We've fixed hundreds of issues in the Magento 2.3.0 core code. -* We’ve improved the performance of editing or saving products in large categories (more than 18,000 products per category). +* We've improved the performance of editing or saving products in large categories (more than 18,000 products per category). ### Web API diff --git a/src/guides/v2.3/release-notes/ReleaseNotes2.3.0OpenSource.md b/src/guides/v2.3/release-notes/ReleaseNotes2.3.0OpenSource.md index 4a46b3d6c7e..49f02b8831a 100644 --- a/src/guides/v2.3/release-notes/ReleaseNotes2.3.0OpenSource.md +++ b/src/guides/v2.3/release-notes/ReleaseNotes2.3.0OpenSource.md @@ -13,7 +13,7 @@ The patch addresses an issue with [CVE-2019-8118](https://cve.mitre.org/cgi-bin/ ## Apply patch PRODSECBUG-2233 to address critical remote code execution vulnerability (RCE) -An unauthenticated cross-site scripting vulnerability combined with an authenticated Phar deserialization vulnerability has left this version of {{site.data.var.ce}} open to serious exploit. An attacker can use these vulnerabilities to inject JavaScript into the Admin and subsequently launch malicious code in a store user’s browser. **We strongly recommend that all users of the affected versions of Magento download and apply the appropriate patch as soon as possible**. This issue and the available patches are discussed in the [Extending the June 25 Security Update to Older Versions of Magento](https://community.magento.com/t5/Magento-DevBlog/Extending-the-June-25-Security-Update-to-Older-Versions-of/ba-p/138231) +An unauthenticated cross-site scripting vulnerability combined with an authenticated Phar deserialization vulnerability has left this version of {{site.data.var.ce}} open to serious exploit. An attacker can use these vulnerabilities to inject JavaScript into the Admin and subsequently launch malicious code in a store user's browser. **We strongly recommend that all users of the affected versions of Magento download and apply the appropriate patch as soon as possible**. This issue and the available patches are discussed in the [Extending the June 25 Security Update to Older Versions of Magento](https://community.magento.com/t5/Magento-DevBlog/Extending-the-June-25-Security-Update-to-Older-Versions-of/ba-p/138231) blog post. Locate the patch by the name. We provide Git-based and Composer-based patches. ## Apply patch PRODSECBUG-2198 to address critical SQL injection vulnerability @@ -285,7 +285,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve removed `Zend_Json` from `Setup/Migration.php`. [GitHub-10341](https://github.com/magento/magento2/issues/10341) +* We've removed `Zend_Json` from `Setup/Migration.php`. [GitHub-10341](https://github.com/magento/magento2/issues/10341) @@ -479,7 +479,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* Customers can now change an existing value in the checkout page’s **State/Province** field to an alphanumeric value. Previously, when a customer tried to edit this field in this way, Magento did not place the order, and displayed a descriptive error message. +* Customers can now change an existing value in the checkout page's **State/Province** field to an alphanumeric value. Previously, when a customer tried to edit this field in this way, Magento did not place the order, and displayed a descriptive error message. @@ -543,7 +543,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* Magento now successfully processes an order even when the customer quickly double-clicks on the minicart’s **Proceed to checkout** button. Previously, if a customer double-clicked this button while the page was loading, Magento emptied the shopping cart. +* Magento now successfully processes an order even when the customer quickly double-clicks on the minicart's **Proceed to checkout** button. Previously, if a customer double-clicked this button while the page was loading, Magento emptied the shopping cart. @@ -667,7 +667,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* Magento now maintains the default products sort order of “newest first” when you upgrade your Magento deployment. Previously, after upgrade, the default products order in categories changed from “newest first” to “oldest first”. [GitHub-15627](https://github.com/magento/magento2/issues/15627) +* Magento now maintains the default products sort order of "newest first" when you upgrade your Magento deployment. Previously, after upgrade, the default products order in categories changed from "newest first" to "oldest first". [GitHub-15627](https://github.com/magento/magento2/issues/15627) @@ -823,7 +823,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* Category smart rules now work as expected for partial values when conditions include using a dropdown attribute and "contains”. +* Category smart rules now work as expected for partial values when conditions include using a dropdown attribute and "contains". @@ -839,7 +839,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* A product’s **Use Default Value** check box for attributes is now unchecked by default when you add a new website to a product’s scope. +* A product's **Use Default Value** check box for attributes is now unchecked by default when you add a new website to a product's scope. @@ -867,7 +867,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve fixed the display of calculated tax for a logged-in customer when billing and shipping address differed. +* We've fixed the display of calculated tax for a logged-in customer when billing and shipping address differed. ### Catalog Rule @@ -1223,11 +1223,11 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* Magento no longer displays the `Too many password reset requests` message when an administrator attempts to change a customer’s password from the Admin and the **max wait time between password resets** setting has been disabled in the store configuration settings. [GitHub-11409](https://github.com/magento/magento2/issues/11409) +* Magento no longer displays the `Too many password reset requests` message when an administrator attempts to change a customer's password from the Admin and the **max wait time between password resets** setting has been disabled in the store configuration settings. [GitHub-11409](https://github.com/magento/magento2/issues/11409) -* We’ve added methods to support setting text values for data pulled from the `customer_grid_flat` table during CSV export. [GitHub-10765](https://github.com/magento/magento2/issues/10765) +* We've added methods to support setting text values for data pulled from the `customer_grid_flat` table during CSV export. [GitHub-10765](https://github.com/magento/magento2/issues/10765) @@ -1239,7 +1239,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve improved the error message that Magento displays when an administrator is redirected to a forced password change from the Admin user account page. *Fix submitted by dimonovp in pull request [14199](https://github.com/magento/magento2/pull/14199)*. [GitHub-13768](https://github.com/magento/magento2/issues/13768) +* We've improved the error message that Magento displays when an administrator is redirected to a forced password change from the Admin user account page. *Fix submitted by dimonovp in pull request [14199](https://github.com/magento/magento2/pull/14199)*. [GitHub-13768](https://github.com/magento/magento2/issues/13768) @@ -1255,11 +1255,11 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve added cast to string for `GroupInterface::CUST_GROUP_ALL` in the customer group source model. [GitHub-10436](https://github.com/magento/magento2/issues/10436) +* We've added cast to string for `GroupInterface::CUST_GROUP_ALL` in the customer group source model. [GitHub-10436](https://github.com/magento/magento2/issues/10436) -* Magento now always returns the user data for the current logged user. Previously, you could get another customer’s session information from sections controller without a timestamp. *Fix submitted by Rostyslav in pull request [14661](https://github.com/magento/magento2/pull/14661)*. [GitHub-14049](https://github.com/magento/magento2/issues/14049) +* Magento now always returns the user data for the current logged user. Previously, you could get another customer's session information from sections controller without a timestamp. *Fix submitted by Rostyslav in pull request [14661](https://github.com/magento/magento2/pull/14661)*. [GitHub-14049](https://github.com/magento/magento2/issues/14049) @@ -1471,7 +1471,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve replaced the usage of `Zend_Json::encode` in the setup marketplace tests. [GitHub-9236](https://github.com/magento/magento2/issues/9236) +* We've replaced the usage of `Zend_Json::encode` in the setup marketplace tests. [GitHub-9236](https://github.com/magento/magento2/issues/9236) @@ -1551,7 +1551,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve fixed backward-incompatible changes to transport variable event parameters that had previously resulted in neither the email or the `$transport` variable being changed as expected. *Fix submitted by gwharton in pull request [16600](https://github.com/magento/magento2/pull/16600)*. [GitHub-10210](https://github.com/magento/magento2/issues/10210) +* We've fixed backward-incompatible changes to transport variable event parameters that had previously resulted in neither the email or the `$transport` variable being changed as expected. *Fix submitted by gwharton in pull request [16600](https://github.com/magento/magento2/pull/16600)*. [GitHub-10210](https://github.com/magento/magento2/issues/10210) @@ -1589,7 +1589,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve removed the usage of `Zend_Json` from the JSON controller. [GitHub-10342](https://github.com/magento/magento2/issues/10342) +* We've removed the usage of `Zend_Json` from the JSON controller. [GitHub-10342](https://github.com/magento/magento2/issues/10342) @@ -1601,7 +1601,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve added a declarative mechanism to limit the HTTP methods that a controller can process by implementing one or more `HttpActionInterface`. +* We've added a declarative mechanism to limit the HTTP methods that a controller can process by implementing one or more `HttpActionInterface`. @@ -1693,7 +1693,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve removed the 30-second timeout limit for the session locking mechanism when Redis is used for session storage. +* We've removed the 30-second timeout limit for the session locking mechanism when Redis is used for session storage. @@ -1959,7 +1959,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* The welcome message now displays the new customer’s first and last name after they have confirmed their account by clicking the **Confirm Your Account** button in the confirmation email. [GitHub-12719](https://github.com/magento/magento2/issues/12719) +* The welcome message now displays the new customer's first and last name after they have confirmed their account by clicking the **Confirm Your Account** button in the confirmation email. [GitHub-12719](https://github.com/magento/magento2/issues/12719) @@ -2069,7 +2069,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* Import now completes successfully when a product’s CSV entry is split over two import “bunches”. Previously, Magento threw this error: `Cannot add or update a child row: a foreign key constraint fails`, and import failed. +* Import now completes successfully when a product's CSV entry is split over two import "bunches". Previously, Magento threw this error: `Cannot add or update a child row: a foreign key constraint fails`, and import failed. @@ -2205,7 +2205,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve removed `Zend_Json` from the data object, test suite, and package information. [GitHub-10306](https://github.com/magento/magento2/issues/10306), [GitHub-10320](https://github.com/magento/magento2/issues/10320), [GitHub-10340](https://github.com/magento/magento2/issues/10340) +* We've removed `Zend_Json` from the data object, test suite, and package information. [GitHub-10306](https://github.com/magento/magento2/issues/10306), [GitHub-10320](https://github.com/magento/magento2/issues/10320), [GitHub-10340](https://github.com/magento/magento2/issues/10340) @@ -2301,7 +2301,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve fixed an issue with `addCrumb()`. [GitHub-11275](https://github.com/magento/magento2/issues/11275) +* We've fixed an issue with `addCrumb()`. [GitHub-11275](https://github.com/magento/magento2/issues/11275) @@ -2421,7 +2421,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* A customer subscription on one store no longer depends on the customer’s subscription on another store. +* A customer subscription on one store no longer depends on the customer's subscription on another store. @@ -2643,7 +2643,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* You can change store locale without the exporting and importing configuration data. While Magento is in production mode and the `SCD_ON_DEMAND` is enabled, the Magento store and admin locale options are available. See [Change locales]({{ site.baseurl }}/cloud/live/sens-data-over.html#change-locales). +* You can change store locale without the exporting and importing configuration data. While Magento is in production mode and the `SCD_ON_DEMAND` is enabled, the Magento store and admin locale options are available. See [Change locales](https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure-store/store-settings.html#change-locales). @@ -2821,7 +2821,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* The invoice grid now shows the correct subtotal for a partial invoice. Previously, it showed the entire order’s subtotal. *Fix submitted by AlexWorking in pull request [14209](https://github.com/magento/magento2/pull/14209)*. [GitHub-13804](https://github.com/magento/magento2/issues/13804) +* The invoice grid now shows the correct subtotal for a partial invoice. Previously, it showed the entire order's subtotal. *Fix submitted by AlexWorking in pull request [14209](https://github.com/magento/magento2/pull/14209)*. [GitHub-13804](https://github.com/magento/magento2/issues/13804) @@ -2841,7 +2841,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* Magento now syncs an order’s shipping and billing addresses as expected when a customer edits the billing address. [GitHub-10856](https://github.com/magento/magento2/issues/10856) +* Magento now syncs an order's shipping and billing addresses as expected when a customer edits the billing address. [GitHub-10856](https://github.com/magento/magento2/issues/10856) @@ -2859,7 +2859,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve fixed an error in discount calculations that prevented merchants from creating a rule that set a tax rate and 100% discount. Previously, when a tax rule was applied, and a 100% discount was also applied during check out, the shopping cart displayed a negative grand total. *Fix submitted by Stanislav Ilnytskyi in pull request [14468](https://github.com/magento/magento2/pull/14468)*. [GitHub-10790](https://github.com/magento/magento2/issues/10790) +* We've fixed an error in discount calculations that prevented merchants from creating a rule that set a tax rate and 100% discount. Previously, when a tax rule was applied, and a 100% discount was also applied during check out, the shopping cart displayed a negative grand total. *Fix submitted by Stanislav Ilnytskyi in pull request [14468](https://github.com/magento/magento2/pull/14468)*. [GitHub-10790](https://github.com/magento/magento2/issues/10790) ### Sample data @@ -3429,7 +3429,7 @@ See [Magento Security Center](https://magento.com/security/patches/magento-2.2.7 -* We’ve improved the performance of editing or saving products in large categories (more than 18,000 products per category). +* We've improved the performance of editing or saving products in large categories (more than 18,000 products per category). ### Web API diff --git a/src/guides/v2.3/release-notes/bk-release-notes.md b/src/guides/v2.3/release-notes/bk-release-notes.md index 5eaea28ca5d..cd89915b6a7 100644 --- a/src/guides/v2.3/release-notes/bk-release-notes.md +++ b/src/guides/v2.3/release-notes/bk-release-notes.md @@ -5,6 +5,8 @@ title: 2.3 Release Information ## Magento 2.3.x Release Notes +* [{{site.data.var.ee}} 2.3.7-p4 Release Notes]({{page.baseurl}}/release-notes/2-3-7-p4.html) + * [{{site.data.var.ee}} 2.3.7-p3 Release Notes]({{page.baseurl}}/release-notes/2-3-7-p3.html) * [{{site.data.var.ee}} 2.3.7-p2 Release Notes]({{page.baseurl}}/release-notes/2-3-7-p2.html) diff --git a/src/guides/v2.3/release-notes/commerce-2-3-7.md b/src/guides/v2.3/release-notes/commerce-2-3-7.md index 83d1888c6a9..26137dbc632 100644 --- a/src/guides/v2.3/release-notes/commerce-2-3-7.md +++ b/src/guides/v2.3/release-notes/commerce-2-3-7.md @@ -9,6 +9,10 @@ title: Adobe Commerce 2.3.7 Release Notes PHP 7.3 reached end of support in December 2021, and {{site.data.var.ee}} 2.3.x reaches end of support in April 2022. **We strongly recommend planning your upgrade now to {{site.data.var.ee}} 2.4.x and PHP 7.4.x to help maintain PCI compliance**. +## Apply `AC-3022.patch` to continue offering DHL as a shipping carrier + +DHL has introduced schema version 6.2 and will deprecate schema version 6.0 in the near future. Adobe Commerce 2.4.4 and earlier versions that support the DHL integration support only version 6.0. Merchants deploying these releases should apply `AC-3022.patch` at their earliest convenience to continue offering DHL as a shipping carrier. See the [Apply a patch to continue offering DHL as shipping carrier](https://support.magento.com/hc/en-us/articles/7707818131597-Apply-a-patch-to-continue-offering-DHL-as-shipping-carrier) Knowledge Base article for information about downloading and installing the patch. + ## Backward-Incompatible Changes (BiCs) Quarterly releases may contain backward-incompatible changes (BIC). Magento 2.3.7 contains minor backward-incompatible changes. To review minor backward-incompatible changes, see [BIC reference]({{page.baseurl}}/release-notes/backward-incompatible-changes/reference.html). (Major backward-incompatible issues are described in [BIC highlights]({{page.baseurl}}/release-notes/backward-incompatible-changes/index.html). Not all releases introduce major BICs.) diff --git a/src/guides/v2.3/release-notes/open-source-2-3-7.md b/src/guides/v2.3/release-notes/open-source-2-3-7.md index 2cbfff1188e..43554f7a0a2 100644 --- a/src/guides/v2.3/release-notes/open-source-2-3-7.md +++ b/src/guides/v2.3/release-notes/open-source-2-3-7.md @@ -9,6 +9,10 @@ title: Magento Open Source 2.3.7 Release Notes PHP 7.3 reached end of support in December 2021, and {{site.data.var.ce}} 2.3.x reaches end of support in April 2022. **We strongly recommend planning your upgrade now to {{site.data.var.ce}} 2.4.x and PHP 7.4.x to help maintain PCI compliance**. +## Apply `AC-3022.patch` to continue offering DHL as a shipping carrier + +DHL has introduced schema version 6.2 and will deprecate schema version 6.0 in the near future. Adobe Commerce 2.4.4 and earlier versions that support the DHL integration support only version 6.0. Merchants deploying these releases should apply `AC-3022.patch` at their earliest convenience to continue offering DHL as a shipping carrier. See the [Apply a patch to continue offering DHL as shipping carrier](https://support.magento.com/hc/en-us/articles/7707818131597-Apply-a-patch-to-continue-offering-DHL-as-shipping-carrier) Knowledge Base article for information about downloading and installing the patch. + ## Backward-Incompatible Changes (BiCs) Quarterly releases may contain backward-incompatible changes (BIC). Magento 2.3.7 contains minor backward-incompatible changes. To review minor backward-incompatible changes, see [BIC reference]({{page.baseurl}}/release-notes/backward-incompatible-changes/reference.html). (Major backward-incompatible issues are described in [BIC highlights]({{page.baseurl}}/release-notes/backward-incompatible-changes/index.html). Not all releases introduce major BICs.) diff --git a/src/guides/v2.3/rest/asynchronous-web-endpoints.md b/src/guides/v2.3/rest/asynchronous-web-endpoints.md index bff4533f8fe..05e650206c1 100644 --- a/src/guides/v2.3/rest/asynchronous-web-endpoints.md +++ b/src/guides/v2.3/rest/asynchronous-web-endpoints.md @@ -2,7 +2,7 @@ group: rest-api title: Asynchronous web endpoints contributor_name: comwrap GmbH -contributor_link: http://comwrap.com/ +contributor_link: https://www.comwrap.com/en.html functional_areas: - Integration --- diff --git a/src/guides/v2.3/rest/bk-rest.md b/src/guides/v2.3/rest/bk-rest.md index dd823533aad..41798f92673 100644 --- a/src/guides/v2.3/rest/bk-rest.md +++ b/src/guides/v2.3/rest/bk-rest.md @@ -20,7 +20,7 @@ You can also create a dynamic REST API documentation set on your server with liv Magento uses [Swagger][] to display REST APIs for all installed products and allows you to try out the APIs. For more information, see [Generate local REST API reference](generate-local.html). -[REST API documentation]: {{site.baseurl}}/redoc/{{page.guide_version}}/index.html +[REST API documentation]: https://developer.adobe.com/commerce/webapi/rest/quick-reference/ [ReDoc]: https://github.com/Rebilly/ReDoc [Open-API specifications]: https://github.com/OAI/OpenAPI-Specification -[Swagger]: http://swagger.io/ +[Swagger]: https://swagger.io/ diff --git a/src/guides/v2.3/rest/bulk-endpoints.md b/src/guides/v2.3/rest/bulk-endpoints.md index bc0194ca324..9e5b33f11c9 100644 --- a/src/guides/v2.3/rest/bulk-endpoints.md +++ b/src/guides/v2.3/rest/bulk-endpoints.md @@ -2,7 +2,7 @@ group: rest-api title: Bulk endpoints contributor_name: comwrap GmbH -contributor_link: http://comwrap.com/ +contributor_link: https://www.comwrap.com/en.html functional_areas: - Integration --- diff --git a/src/guides/v2.3/rest/generate-local.md b/src/guides/v2.3/rest/generate-local.md index 50e880ecf14..16b6a09b9d4 100644 --- a/src/guides/v2.3/rest/generate-local.md +++ b/src/guides/v2.3/rest/generate-local.md @@ -5,7 +5,7 @@ functional_areas: - Integration --- -The REST documentation on the Magento devdocs [website](https://glossary.magento.com/website) is generated with [Swagger UI](http://swagger.io) using a schema derived from the latest build of Magento 2. However, the REST [API](https://glossary.magento.com/api) documentation on devdocs is static in that the Magento Developers website is not running an instance of Magento, and there is no live data. +The REST documentation on the Magento devdocs [website](https://glossary.magento.com/website) is generated with [Swagger UI](https://swagger.io) using a schema derived from the latest build of Magento 2. However, the REST [API](https://glossary.magento.com/api) documentation on devdocs is static in that the Magento Developers website is not running an instance of Magento, and there is no live data. Magento provides two ways to get detailed information about the structure of the REST endpoints, as described below. @@ -77,7 +77,7 @@ To ensure proper functionality, always test Magento instances after disabling mo You may also use web server rewrite rules to redirect users trying to access the endpoint: -- [nginx rewrite module](http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite) +- [nginx rewrite module](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite) - [apache mod_rewrite](https://httpd.apache.org/docs/2.4/rewrite/) {:.ref-header} diff --git a/src/guides/v2.3/rest/protected-endpoints.md b/src/guides/v2.3/rest/protected-endpoints.md index 5f7154d1f47..01949db2912 100644 --- a/src/guides/v2.3/rest/protected-endpoints.md +++ b/src/guides/v2.3/rest/protected-endpoints.md @@ -5,10 +5,19 @@ functional_areas: - Integration --- -If CAPTCHA is enabled on pages requiring shopper input, then in most cases, the corresponding REST endpoints that send requests to the Magento server must include the shopper's CAPTCHA response. Supply the shopper's response in the HTTP `X-Captcha` header. The exception to this policy is that you do not send the CAPTCHA response if you specify an integration authorization token in the header of the REST endpoint. +If CAPTCHA or reCAPTCHA is enabled on pages requiring shopper input, then in most cases, the corresponding endpoints that send requests to the Magento server must include an HTTP header that contains a value entered by the shopper (for CAPTCHA) or generated by the Google API (for reCAPTCHA). However, if you specify an integration authorization token in the header of the endpoint, then you do not supply a header specific to CAPTCHA or reCAPTCHA. + +The HTTP `X-Captcha` and `X-ReCaptcha` headers: + +* Cannot be received by an automated script or a non-UI API call. They are captured and returned by the UI Web form only. +* Are optional in protected mutation API calls that provide **_integration authorization_** tokens only. They cannot be skipped when you provide an Admin or Bearer token. + +## CAPTCHA The following table lists the forms that can be configured to require CAPTCHA. Go to **Stores** > **Configuration** > **Customers** > **Customer Configuration** > **CAPTCHA** > **Forms** to enable or disable CAPTCHA on these forms. +The endpoint that corresponds to a CAPTCHA-enabled form must include the HTTP `X-Captcha` header, along with the text the shopper entered in response to the CAPTCHA challenge. + Form name | REST endpoint --- | --- Add Gift Card Code | `POST /V1/carts/mine/giftCards`
        `POST /V1/carts/guest-carts/:cartId/giftCards` @@ -24,7 +33,26 @@ Payflow Pro | Not applicable Send to Friend Form | Not applicable Share Wishlist Form | Not applicable +## reCAPTCHA + +The following table lists the forms that can be configured to require reCAPTCHA. Go to **Stores** > **Configuration** > **Security** > **Google reCAPTCHA Storefront** > **Storefront** to enable or disable reCAPTCHA on these forms. If reCAPTCHA is enabled, unless an integration token is provided, always specify the HTTP `X-ReCaptcha` header and the value generated by the Google API. + +Field name | Mutation +--- | --- +Enable for Customer Login | `PUT /V1/integration/customer/token` +Enable for Forgot Password | `PUT /V1/customers/me/password` +Enable for Create New Customer Account | `POST /V1/customers` +Enable for Edit Customer Account | `PUT /V1/customers/me` +Enable for Contact Us | Not applicable +Enable for Product Review | Not applicable +Enable for Newsletter Subscription | Not applicable +Enable for Send To Friend | Not applicable +Enable for PayPal PayflowPro payment form | Not applicable +Enable for Braintree payment form | Not applicable +Enable for Checkout/Placing Order | `POST /V1/carts/mine/payment-information`
        `POST /V1/carts/mine/set-payment-information`
        `POST /V1/guest-carts/:cartId/payment-information`
        `POST /V1/guest-carts/:cartId/set-payment-information` +Enable for Coupon Codes | `PUT /V1/carts/:cartId/coupons/:couponCode`
        `PUT /V1/guest-carts/:cartId/coupons/:couponCode` + {:.ref-header} Related topics -[Construct a request]({{page.baseurl}}/get-started/gs-web-api-request.html +[Construct a request]({{page.baseurl}}/get-started/gs-web-api-request.html) \ No newline at end of file diff --git a/src/guides/v2.3/rest/tutorials/bulk-configurable-product/config-product-intro.md b/src/guides/v2.3/rest/tutorials/bulk-configurable-product/config-product-intro.md index 0895efec3ae..98909edabf2 100644 --- a/src/guides/v2.3/rest/tutorials/bulk-configurable-product/config-product-intro.md +++ b/src/guides/v2.3/rest/tutorials/bulk-configurable-product/config-product-intro.md @@ -11,7 +11,7 @@ return_to: functional_areas: - Integration contributor_name: comwrap GmbH -contributor_link: http://comwrap.com/ +contributor_link: https://www.comwrap.com/en.html --- A system integrator can use Magento REST bulk APIs to perform actions on a large scale; such as, creating multiple customers and products, changing prices across an inventory, and assigning large groups of products to a specific warehouse, all within a single call. diff --git a/src/guides/v2.3/rest/tutorials/bulk-configurable-product/create-configurable-simple-products.md b/src/guides/v2.3/rest/tutorials/bulk-configurable-product/create-configurable-simple-products.md index 5c8e627d5e7..3e1289fed6c 100644 --- a/src/guides/v2.3/rest/tutorials/bulk-configurable-product/create-configurable-simple-products.md +++ b/src/guides/v2.3/rest/tutorials/bulk-configurable-product/create-configurable-simple-products.md @@ -12,7 +12,7 @@ return_to: functional_areas: - Integration contributor_name: comwrap GmbH -contributor_link: http://comwrap.com/ +contributor_link: https://www.comwrap.com/en.html --- By providing configurable and simple product information, you can use the bulk API to create all necessary products with a single call. @@ -38,7 +38,7 @@ Some notes about the configurable product payload example: Although it's not required, the simple product payload also includes `stock_item` information. By default, the Luma store hides out-of-stock items, so adding stock will make the Champ Tee visible on the website. {:.bs-callout-info} -Before you use this code sample, verify that the attribute values are the same in your installation. See [Get the list of attributes defined in an attribute searchCriteria]({{ page.baseurl }}/rest/tutorials/configurable-product/plan-product.html#get-attributes) for more information. +Before you use this code sample, verify that the attribute values are the same in your installation. See [Get the list of attributes defined in an attribute searchCriteria]({{ page.baseurl }}/rest/tutorials/configurable-product/plan-product.html) for more information. {:.bs-callout-info} The payload contains both the configurable product and the simple products. diff --git a/src/guides/v2.3/rest/tutorials/bulk-configurable-product/create-personalization-option.md b/src/guides/v2.3/rest/tutorials/bulk-configurable-product/create-personalization-option.md index 5f0d4e6cae2..45855fdcf64 100644 --- a/src/guides/v2.3/rest/tutorials/bulk-configurable-product/create-personalization-option.md +++ b/src/guides/v2.3/rest/tutorials/bulk-configurable-product/create-personalization-option.md @@ -12,7 +12,7 @@ return_to: functional_areas: - Integration contributor_name: comwrap GmbH -contributor_link: http://comwrap.com/ +contributor_link: https://www.comwrap.com/en.html --- Let's add a text box to the product page that allows the customer to add his name (up to 15 characters) to the back of the shirt. diff --git a/src/guides/v2.3/rest/tutorials/bulk-configurable-product/define-config-product-options.md b/src/guides/v2.3/rest/tutorials/bulk-configurable-product/define-config-product-options.md index b0a16c57244..f79dd5633d0 100644 --- a/src/guides/v2.3/rest/tutorials/bulk-configurable-product/define-config-product-options.md +++ b/src/guides/v2.3/rest/tutorials/bulk-configurable-product/define-config-product-options.md @@ -12,7 +12,7 @@ return_to: functional_areas: - Integration contributor_name: comwrap GmbH -contributor_link: http://comwrap.com/ +contributor_link: https://www.comwrap.com/en.html --- Now that we've created all the Champ Tee products, we need to assign `size` as the configurable attribute and link the simple products to the configurable product. @@ -22,7 +22,7 @@ contributor_link: http://comwrap.com/ The `POST async/bulk/V1/configurable-products/bySku/options` call assigns the specified `attribute_id` to be the configurable attribute. {:.bs-callout-warning} - The `attribute_id` and its value may be different on your installation. Check the values carefully before using them in your calls. To get the correct `attribute_id`, see [Get the list of attributes defined in an attribute searchCriteria]({{ page.baseurl }}/rest/tutorials/configurable-product/plan-product.html#get-attributes) for more information. + The `attribute_id` and its value may be different on your installation. Check the values carefully before using them in your calls. To get the correct `attribute_id`, see [Get the list of attributes defined in an attribute searchCriteria]({{ page.baseurl }}/rest/tutorials/configurable-product/plan-product.html) for more information. The value assigned to the `value_index` must be unique within the system. diff --git a/src/guides/v2.3/rest/tutorials/bulk-configurable-product/plan-product.md b/src/guides/v2.3/rest/tutorials/bulk-configurable-product/plan-product.md index 5eef0a030fc..4cc85b78371 100644 --- a/src/guides/v2.3/rest/tutorials/bulk-configurable-product/plan-product.md +++ b/src/guides/v2.3/rest/tutorials/bulk-configurable-product/plan-product.md @@ -12,7 +12,7 @@ return_to: functional_areas: - Integration contributor_name: comwrap GmbH -contributor_link: http://comwrap.com/ +contributor_link: https://www.comwrap.com/en.html --- To create a configurable product programmatically, you'll need to know the following: diff --git a/src/guides/v2.3/rest/tutorials/bundle-product/create-simple-products.md b/src/guides/v2.3/rest/tutorials/bundle-product/create-simple-products.md index 1a7b9f570ed..0f10d23206f 100644 --- a/src/guides/v2.3/rest/tutorials/bundle-product/create-simple-products.md +++ b/src/guides/v2.3/rest/tutorials/bundle-product/create-simple-products.md @@ -7,7 +7,7 @@ contributor_link: https://www.goivvy.com/magento-optimization-service --- {:.bs-callout-info} -Before you run the code, please verify that the attribute values are the same in your installation. See [Get the list of attributes defined in an attribute set]({{ page.baseurl }}/rest/tutorials/bundle-product/plan-product.html#get-attributes) for more information. +Before you run the code, please verify that the attribute values are the same in your installation. See [Get the list of attributes defined in an attribute set]({{ page.baseurl }}/rest/tutorials/bundle-product/plan-product.html) for more information. We will create four simple products: `RAM 12GB`, `RAM 24GB`, `Monitor 15"` and `Monitor 17"`. diff --git a/src/guides/v2.3/rest/tutorials/configurable-product/create-configurable-product.md b/src/guides/v2.3/rest/tutorials/configurable-product/create-configurable-product.md index c4de68d6be5..5f8b3915e3e 100644 --- a/src/guides/v2.3/rest/tutorials/configurable-product/create-configurable-product.md +++ b/src/guides/v2.3/rest/tutorials/configurable-product/create-configurable-product.md @@ -29,7 +29,7 @@ Visibility | Code `Catalog, Search` | 4 {:.bs-callout-info} -Before you using this code sample, verify that the attribute values are the same in your installation. See [Get the list of attributes defined in an attribute searchCriteria]({{ page.baseurl }}/rest/tutorials/configurable-product/plan-product.html#get-attributes) for more information. +Before you using this code sample, verify that the attribute values are the same in your installation. See [Get the list of attributes defined in an attribute searchCriteria]({{ page.baseurl }}/rest/tutorials/configurable-product/plan-product.html) for more information. **Endpoint:** diff --git a/src/guides/v2.3/rest/tutorials/configurable-product/create-simple-products.md b/src/guides/v2.3/rest/tutorials/configurable-product/create-simple-products.md index 7438ac46489..1b306acca1b 100644 --- a/src/guides/v2.3/rest/tutorials/configurable-product/create-simple-products.md +++ b/src/guides/v2.3/rest/tutorials/configurable-product/create-simple-products.md @@ -26,7 +26,7 @@ Although it's not required, the simple product payload also includes `stock_item ## Create the first simple product {:.bs-callout-info} -Before you using this code sample, verify that the attribute values are the same in your installation. See [Get the list of attributes defined in an attribute searchCriteria]({{ page.baseurl }}/rest/tutorials/configurable-product/plan-product.html#get-attributes) for more information. +Before you using this code sample, verify that the attribute values are the same in your installation. See [Get the list of attributes defined in an attribute searchCriteria]({{ page.baseurl }}/rest/tutorials/configurable-product/plan-product.html) for more information. **Endpoint:** diff --git a/src/guides/v2.3/rest/tutorials/index.md b/src/guides/v2.3/rest/tutorials/index.md index cb1c1344519..d23aaac690b 100644 --- a/src/guides/v2.3/rest/tutorials/index.md +++ b/src/guides/v2.3/rest/tutorials/index.md @@ -31,7 +31,7 @@ Before you begin any tutorial, make sure you know the basics about {{site.data.v * Know how to construct a REST call in Magento. See [Construct a request]({{ page.baseurl }}/get-started/gs-web-api-request.html) for details. -* Find the Magento REST API documentation. You can view the [static REST API documentation on devdocs]({{site.baseurl}}/redoc/{{page.guide_version}}/) or [generate a local API reference]({{ page.baseurl }}/rest/generate-local.html). +* Find the Magento REST API documentation. You can view the [static REST API documentation on devdocs](https://developer.adobe.com/commerce/webapi/rest/quick-reference/) or [generate a local API reference]({{ page.baseurl }}/rest/generate-local.html). * Find the Magento Merchant documentation. Refer to [Getting Started with {{site.data.var.ce}}]({{ site.user_guide_url }}/getting-started.html) for information about the Luma store that is created when you install Magento with the sample data. diff --git a/src/guides/v2.3/rest/tutorials/inventory/index.md b/src/guides/v2.3/rest/tutorials/inventory/index.md index c15077fd962..632cea38742 100644 --- a/src/guides/v2.3/rest/tutorials/inventory/index.md +++ b/src/guides/v2.3/rest/tutorials/inventory/index.md @@ -32,4 +32,4 @@ This **13-step tutorial** generally takes **1 hour**. ### Other resources -* Magento uses [Swagger](https://swagger.io) to provide REST API documentation on local instances of Magento. See [Generate a local API reference]({{ page.baseurl }}/rest/generate-local.html) for more information. You can view the [static REST API documentation]({{site.baseurl}}/redoc/{{page.guide_version}}/), which displays reference information using ReDoc. +* Magento uses [Swagger](https://swagger.io) to provide REST API documentation on local instances of Magento. See [Generate a local API reference]({{ page.baseurl }}/rest/generate-local.html) for more information. You can view the [static REST API documentation](https://developer.adobe.com/commerce/webapi/rest/quick-reference/), which displays reference information using ReDoc. diff --git a/src/guides/v2.3/rest/tutorials/orders/order-intro.md b/src/guides/v2.3/rest/tutorials/orders/order-intro.md index 2c09eacab79..d534bf8e464 100644 --- a/src/guides/v2.3/rest/tutorials/orders/order-intro.md +++ b/src/guides/v2.3/rest/tutorials/orders/order-intro.md @@ -32,7 +32,7 @@ Complete the following prerequisites: * Know how to construct a REST call in Magento. See [Construct a request]({{ page.baseurl }}/get-started/gs-web-api-request.html) for details. -* Find the Magento REST API documentation. You can view the [static REST API documentation on devdocs]({{ site.baseurl }}/redoc/{{page.guide_version}}/) or [generate a local API reference]({{ page.baseurl }}/rest/generate-local.html). +* Find the Magento REST API documentation. You can view the [static REST API documentation on devdocs](https://developer.adobe.com/commerce/webapi/rest/quick-reference/) or [generate a local API reference]({{ page.baseurl }}/rest/generate-local.html). * Find the Magento Merchant documentation. Refer to [Getting Started with {{site.data.var.ce}} 2.1]({{ site.user_guide_url }}/getting-started.html) for information about the Luma store that is created when you install Magento with the sample data. diff --git a/src/guides/v2.3/rest/tutorials/orders/order-issue-refund.md b/src/guides/v2.3/rest/tutorials/orders/order-issue-refund.md index b27f9de14bd..6d5638de10b 100644 --- a/src/guides/v2.3/rest/tutorials/orders/order-issue-refund.md +++ b/src/guides/v2.3/rest/tutorials/orders/order-issue-refund.md @@ -84,4 +84,4 @@ Related topics * [Getting Started with Magento Web APIs]({{ page.baseurl }}/get-started/bk-get-started-api.html) * [Create a configurable product Tutorial]({{ page.baseurl }}/rest/tutorials/configurable-product/config-product-intro.html) * [REST API Reference Overview]({{ page.baseurl }}/rest/bk-rest.html) -* [REST API documentation]({{site.baseurl}}/redoc/{{page.guide_version}}/) +* [REST API documentation](https://developer.adobe.com/commerce/webapi/rest/quick-reference/) diff --git a/src/guides/v2.3/search.md b/src/guides/v2.3/search.md index 37371dafbd6..fb31706995e 100644 --- a/src/guides/v2.3/search.md +++ b/src/guides/v2.3/search.md @@ -1,4 +1,5 @@ --- layout: search title: Search Results +guide_version: "2.3" --- diff --git a/src/guides/v2.3/test/integration/integration_test_execution.md b/src/guides/v2.3/test/integration/integration_test_execution.md index 5b03c37d8cb..38ca0ec964d 100644 --- a/src/guides/v2.3/test/integration/integration_test_execution.md +++ b/src/guides/v2.3/test/integration/integration_test_execution.md @@ -2,7 +2,7 @@ group: testing title: Running Integration Tests contributor_name: Vinai Kopp -contributor_link: http://vinaikopp.com/ +contributor_link: https://vinaikopp.com/ functional_areas: - Testing - test diff --git a/src/guides/v2.3/test/js/jasmine.md b/src/guides/v2.3/test/js/jasmine.md index a280bffeab4..83396b54fc4 100644 --- a/src/guides/v2.3/test/js/jasmine.md +++ b/src/guides/v2.3/test/js/jasmine.md @@ -309,9 +309,9 @@ npm install [fontconfig library]: https://www.freedesktop.org/wiki/Software/fontconfig/ -[Grunt]: http://gruntjs.com/ +[Grunt]: https://gruntjs.com/ -[Install grunt-cli]: http://gruntjs.com/getting-started +[Install grunt-cli]: https://gruntjs.com/getting-started [Install Node.js]: https://nodejs.org/en/ diff --git a/src/guides/v2.3/test/static/static-analysis.md b/src/guides/v2.3/test/static/static-analysis.md index e6d722cff7b..492b7f1382a 100644 --- a/src/guides/v2.3/test/static/static-analysis.md +++ b/src/guides/v2.3/test/static/static-analysis.md @@ -25,7 +25,7 @@ For all of the static configuration installations below involving the PHPStorm P ### ESLint {:.bs-callout-info} -Javascript code analysis is done through [ESLint]({{site.baseurl}}/guides/v2.4/coding-standards/code-standard-javascript.html#eslint-code-analysis). +Javascript code analysis is done through [ESLint](https://developer.adobe.com/commerce/php/coding-standards/js/#eslint-code-analysis). The ESLint rules are set up in `magento-coding-standard`, which is installed on Magento2 via `composer` since it's a development dependency. 1. Go to PHPStorm preferences > Languages & Frameworks > JavaScript > Code Quality Tools > ESLint. diff --git a/src/guides/v2.3/test/unit/unit_test_execution.md b/src/guides/v2.3/test/unit/unit_test_execution.md index e1020ca7e57..aa9d99e67b5 100644 --- a/src/guides/v2.3/test/unit/unit_test_execution.md +++ b/src/guides/v2.3/test/unit/unit_test_execution.md @@ -2,7 +2,7 @@ group: testing title: Running Unit Tests contributor_name: Vinai Kopp -contributor_link: http://vinaikopp.com/ +contributor_link: https://vinaikopp.com/ functional_areas: - Testing - test diff --git a/src/guides/v2.3/test/unit/unit_test_execution_cli.md b/src/guides/v2.3/test/unit/unit_test_execution_cli.md index 03b9adacc7f..6333d6ed6d4 100644 --- a/src/guides/v2.3/test/unit/unit_test_execution_cli.md +++ b/src/guides/v2.3/test/unit/unit_test_execution_cli.md @@ -2,7 +2,7 @@ group: testing title: Running Unit Tests in the CLI contributor_name: Vinai Kopp -contributor_link: http://vinaikopp.com/ +contributor_link: https://vinaikopp.com/ functional_areas: - Testing - test diff --git a/src/guides/v2.3/test/unit/unit_test_execution_phpstorm.md b/src/guides/v2.3/test/unit/unit_test_execution_phpstorm.md index 9cc3f78cef8..7b9934adf0a 100644 --- a/src/guides/v2.3/test/unit/unit_test_execution_phpstorm.md +++ b/src/guides/v2.3/test/unit/unit_test_execution_phpstorm.md @@ -2,7 +2,7 @@ group: testing title: Running Unit Tests in PhpStorm contributor_name: Vinai Kopp -contributor_link: http://vinaikopp.com/ +contributor_link: https://vinaikopp.com/ functional_areas: - Testing - test diff --git a/src/guides/v2.3/test/unit/writing_testable_code.md b/src/guides/v2.3/test/unit/writing_testable_code.md index a29f341694c..242bb0c3421 100644 --- a/src/guides/v2.3/test/unit/writing_testable_code.md +++ b/src/guides/v2.3/test/unit/writing_testable_code.md @@ -2,7 +2,7 @@ group: testing title: Writing Testable Code contributor_name: Vinai Kopp -contributor_link: http://vinaikopp.com/ +contributor_link: https://vinaikopp.com/ functional_areas: - Testing - test @@ -294,12 +294,12 @@ Almost as a side effect, those classes are very easy to test. [PHP]: https://glossary.magento.com/php [constructor-injection]: {{ page.baseurl }}/extension-dev-guide/depend-inj.html#constructor-injection [IoInterface]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Filesystem/Io/IoInterface.php -[DateTimeInterface]: http://php.net/manual/en/refs.calendar.php +[DateTimeInterface]: https://www.php.net/manual/en/refs.calendar.php [RemoteAddress]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/HTTP/PhpEnvironment/RemoteAddress.php [Request]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/HTTP/PhpEnvironment/Request.php [Law-of-Demeter]: https://en.wikipedia.org/wiki/Law_of_Demeter [Kent-Beck]: https://en.wikipedia.org/wiki/Kent_Beck -[BeckDesignRules]: http://martinfowler.com/bliki/BeckDesignRules.html +[BeckDesignRules]: https://martinfowler.com/bliki/BeckDesignRules.html [clean-code]: https://books.google.com/books/about/Clean_Code.html?id=dwSfGQAACAAJ -[refactoring]: http://martinfowler.com/books/refactoring.html -[growing-object-oriented-software]: http://www.growing-object-oriented-software.com +[refactoring]: https://martinfowler.com/books/refactoring.html +[growing-object-oriented-software]: https://www.growing-object-oriented-software.com diff --git a/src/guides/v2.3/ui_comp_guide/components/ui-urlinput.md b/src/guides/v2.3/ui_comp_guide/components/ui-urlinput.md index c2f2e9d6169..a13574f8b7b 100644 --- a/src/guides/v2.3/ui_comp_guide/components/ui-urlinput.md +++ b/src/guides/v2.3/ui_comp_guide/components/ui-urlinput.md @@ -61,7 +61,7 @@ class MyLink implements ConfigInterface { /** - * {@inheritdoc} + * @inheritDoc */ public function getConfig() { diff --git a/src/guides/v2.3/ui_comp_guide/components/ui-wysiwyg.md b/src/guides/v2.3/ui_comp_guide/components/ui-wysiwyg.md index 0e1220f3f53..2c89f5a189b 100644 --- a/src/guides/v2.3/ui_comp_guide/components/ui-wysiwyg.md +++ b/src/guides/v2.3/ui_comp_guide/components/ui-wysiwyg.md @@ -207,7 +207,7 @@ class ModifierPoolDataProvider extends AbstractDataProvider } /** - * {@inheritdoc} + * @inheritDoc */ public function getData() { @@ -221,7 +221,7 @@ class ModifierPoolDataProvider extends AbstractDataProvider } /** - * {@inheritdoc} + * @inheritDoc */ public function getMeta() { diff --git a/src/guides/v2.3/ui_comp_guide/components/wysiwyg/add-custom-editor/code-samples/ckeditor4Adapter.md b/src/guides/v2.3/ui_comp_guide/components/wysiwyg/add-custom-editor/code-samples/ckeditor4Adapter.md deleted file mode 100644 index 2d87d6ad38c..00000000000 --- a/src/guides/v2.3/ui_comp_guide/components/wysiwyg/add-custom-editor/code-samples/ckeditor4Adapter.md +++ /dev/null @@ -1,254 +0,0 @@ -``` js -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -/* global varienGlobalEvents, tinyMceEditors, MediabrowserUtility, closeEditorPopup, Base64 */ -/* eslint-disable strict */ -define([ - 'jquery', - 'underscore', - 'CKEditor_CKEditor4/js/ckeditor4/ckeditor', - 'mage/translate', - 'prototype', - 'mage/adminhtml/events', - 'jquery/ui' -], function (jQuery, _, ckeditor4) { - - var ckeditorWysiwyg = Class.create(); - - ckeditorWysiwyg.prototype = { - mediaBrowserOpener: null, - mediaBrowserTargetElementId: null, - - /** - * @param {*} htmlId - * @param {Object} config - */ - initialize: function (htmlId, config) { - this.id = htmlId; - this.config = config; - - if (typeof ckeditorWysiwyg === 'undefined') { - window.ckeditorWysiwyg = $H({}); - } - - var settings = ''; - ckeditorWysiwyg.settings = this.config; - settings = $H({}); - if (this.config.plugins) { - this.config.plugins.each(function (plugin) { - settings.set(plugin.name, plugin.options); - }); - this.config.magentoPluginsOptions = settings; - } - this.config.elements = this.id; - ckeditor4.settings = this.config; - }, - - /** - * @param {*} mode - */ - setup: function (mode) { - ckeditor4.replaceAll(); - }, - - /** - * Insert content to active editor. - * - * @param {String} content - * @param {Boolean} ui - */ - insertContent: function (content, ui) { - this.activeEditor().insertText(content); - }, - - /** - * @param {Object} o - */ - openFileBrowser: function (o) { - }, - - /** - * Encodes the content so it can be inserted into the wysiwyg - * @param {String} content - The content to be encoded - * - * @returns {*} - The encoded content - */ - updateContent: function (content) { - }, - - /** - * On form validation. - */ - onFormValidation: function () { - if (tinyMCE4.get(this.id)) { - $(this.id).value = tinyMCE4.get(this.id).getContent(); - } - }, - /** - * @param {String} id - */ - get: function (id) { - return ckeditor4.instances[id]; - }, - - /** - * @return {Object} - */ - activeEditor: function () { - var activeInstance = false; - _.each(ckeditor4.instances, function (instance) { - if (instance.activeEnterMode === 1) { - activeInstance = instance; - instance.getBookmark = function () { - return null; - }; - instance.moveToBookmark = function () { - return instance; - }; - instance.getNode = function () { - return instance.getSelection(); - }; - instance.getNode = function () { - return instance.getSelection(); - }; - activeInstance.selection = instance; - - } - }); - return activeInstance; - }, - - /** - * @param {*} mode - * @return {tinyMceWysiwygSetup} - */ - turnOn: function (mode) { - }, - - /** - * @return {tinyMceWysiwygSetup} - */ - turnOff: function () { - - return this; - }, - - /** - * Retrieve directives URL with substituted directive value. - * - * @param {String} directive - */ - makeDirectiveUrl: function (directive) { - - }, - - /** - * @param {Object} content - * @return {*} - */ - encodeDirectives: function (content) { - - }, - - /** - * @param {Object} content - * @return {*} - */ - encodeWidgets: function (content) { - - }, - - /** - * @param {Object} content - * @return {*} - */ - decodeDirectives: function (content) { - - }, - - /** - * @param {Object} content - * @return {*} - */ - decodeWidgets: function (content) { - - }, - - /** - * @param {Object} attributes - * @return {Object} - */ - parseAttributesString: function (attributes) { - - }, - - /** - * Update text area. - */ - updateTextArea: function () { - - }, - setCaretOnElement: function (targetElement) { - this.activeEditor().selection.select(targetElement); - this.activeEditor().selection.collapse(); - }, - - /** - * @param {Object} content - * @return {*} - */ - decodeContent: function (content) { - - }, - - /** - * @return {Boolean} - */ - toggle: function () { - return this.wysiwygInstance.toggle(); - }, - - /** - * @param {Object} content - * @return {*} - */ - encodeContent: function (content) { - }, - - /** - * @param {Object} o - */ - beforeSetContent: function (o) { - - }, - - /** - * @param {Object} o - */ - saveContent: function (o) { - - }, - - /** - * @returns {Object} - */ - getAdapterPrototype: function () { - return ckeditorWysiwyg; - }, - - /** - * Return the content stored in the WYSIWYG field - * @param {String} id - * @return {String} - */ - getContent: function (id) { - - } - }; - - return ckeditorWysiwyg.prototype; -}); -``` diff --git a/src/guides/v2.3/ui_comp_guide/components/wysiwyg/add-custom-editor/index.md b/src/guides/v2.3/ui_comp_guide/components/wysiwyg/add-custom-editor/index.md index 73f50357982..c5eb88a754e 100644 --- a/src/guides/v2.3/ui_comp_guide/components/wysiwyg/add-custom-editor/index.md +++ b/src/guides/v2.3/ui_comp_guide/components/wysiwyg/add-custom-editor/index.md @@ -93,10 +93,6 @@ If you are integrating Magento entities such as variable and widget as plugins, **Example:** CKEditor/CKEditor4/view/base/web/ckeditor4Adapter.js -{% collapsible Show file content %} -{% include_relative code-samples/ckeditor4Adapter.md %} -{% endcollapsible %} - ## Step 4. Load editor library After loading, modifying, and merging all configurations, Magento serializes the result into a JSON object and passes it to the UI component. diff --git a/src/guides/v2.3/ui_comp_guide/components/wysiwyg/configure-tinymce-editor.md b/src/guides/v2.3/ui_comp_guide/components/wysiwyg/configure-tinymce-editor.md index bfa022ad514..56e0d129f93 100644 --- a/src/guides/v2.3/ui_comp_guide/components/wysiwyg/configure-tinymce-editor.md +++ b/src/guides/v2.3/ui_comp_guide/components/wysiwyg/configure-tinymce-editor.md @@ -101,7 +101,7 @@ class DefaultConfigProvider implements \Magento\Framework\Data\Wysiwyg\ConfigPro ... /** - * {@inheritdoc} + * @inheritDoc */ public function getConfig(\Magento\Framework\DataObject $config) : \Magento\Framework\DataObject { diff --git a/src/guides/v2.3/ui_comp_guide/concepts/knockout-bindings.md b/src/guides/v2.3/ui_comp_guide/concepts/knockout-bindings.md index 46545e08ea0..e868657d033 100644 --- a/src/guides/v2.3/ui_comp_guide/concepts/knockout-bindings.md +++ b/src/guides/v2.3/ui_comp_guide/concepts/knockout-bindings.md @@ -3,7 +3,7 @@ group: ui-components-guide title: Custom Knockout.js bindings --- -This topic lists the custom [Knockout.js](http://knockoutjs.com/) bindings used in the core Magento files. These bindings can also be used by third-party developers. +This topic lists the custom [Knockout.js](https://knockoutjs.com/) bindings used in the core Magento files. These bindings can also be used by third-party developers. ## General concepts @@ -60,7 +60,7 @@ Defines whether the binding is enabled (`true`) or disabled (`false`). ### `bindHtml` The `bindHtml` binding renders the provided string, as a collection of HTML elements, inside of the associated node. -It also instantiates all bindings defined for the rendered elements in the scope of the current [view model](http://knockoutjs.com/documentation/observables.html). +It also instantiates all bindings defined for the rendered elements in the scope of the current [view model](https://knockoutjs.com/documentation/observables.html). **Source**: `/view/base/web/js/lib/knockout/bindings/bind-html.js`. [See on GitHub]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Ui/view/base/web/js/lib/knockout/bindings/bind-html.js). @@ -375,7 +375,7 @@ Configuration that is passed to the Slider widget. ### `resizable` -The `resizable` binding is an adapter for the [jQuery UI Resizable](http://api.jqueryui.com/resizable/) widget. +The `resizable` binding is an adapter for the [jQuery UI Resizable](https://api.jqueryui.com/resizable/) widget. **Source:** `/view/base/web/js/lib/knockout/bindings/resizable.js`. [See on GitHub]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Ui/view/base/web/js/lib/knockout/bindings/resizable.js). @@ -421,7 +421,7 @@ Component's name by which to perform a lookup in the registry. ### `staticChecked` -The `staticChecked` binding implements the behavior similar to the standard [`checked`](http://knockoutjs.com/documentation/checked-binding.html) binding. The difference is that `staticChecked` doesn't change the array of the already selected elements if the value of the associated DOM element changes. +The `staticChecked` binding implements the behavior similar to the standard [`checked`](https://knockoutjs.com/documentation/checked-binding.html) binding. The difference is that `staticChecked` doesn't change the array of the already selected elements if the value of the associated DOM element changes. **Source**: `/view/base/web/js/lib/knockout/bindings/staticChecked.js`. [See on Github]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Ui/view/base/web/js/lib/knockout/bindings/staticChecked.js). @@ -435,7 +435,7 @@ The `staticChecked` binding implements the behavior similar to the standard [`ch ### `template` -Magento `template` binding is a customization of the existing Knockout [`template` binding](http://knockoutjs.com/documentation/template-binding.html). It is used to render a template inside of the associated element. The original Knockout's implementation was overridden to support asynchronous loading of templates by the provided path, instead of searching for them on the page. +Magento `template` binding is a customization of the existing Knockout [`template` binding](https://knockoutjs.com/documentation/template-binding.html). It is used to render a template inside of the associated element. The original Knockout's implementation was overridden to support asynchronous loading of templates by the provided path, instead of searching for them on the page. **Source:** `/view/base/web/js/lib/knockout/template/engine.js`. [See on Github]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Ui/view/base/web/js/lib/knockout/template/engine.js). diff --git a/src/guides/v2.3/ui_comp_guide/concepts/ui_comp_modifier_concept.md b/src/guides/v2.3/ui_comp_guide/concepts/ui_comp_modifier_concept.md index 2ac32a6ff7a..cd59cf57123 100644 --- a/src/guides/v2.3/ui_comp_guide/concepts/ui_comp_modifier_concept.md +++ b/src/guides/v2.3/ui_comp_guide/concepts/ui_comp_modifier_concept.md @@ -71,7 +71,7 @@ class Example implements ModifierInterface } /** - * {@inheritdoc} + * @inheritDoc */ public function modifyData(array $data) { diff --git a/src/guides/v2.3/ui_comp_guide/howto/update-url-type.md b/src/guides/v2.3/ui_comp_guide/howto/update-url-type.md index c78340c7e0d..43a3bb5060c 100644 --- a/src/guides/v2.3/ui_comp_guide/howto/update-url-type.md +++ b/src/guides/v2.3/ui_comp_guide/howto/update-url-type.md @@ -49,7 +49,7 @@ class Page implements \Magento\Ui\Model\UrlInput\ConfigInterface $this->urlBuilder = $urlBuilder; } /** - * {@inheritdoc} + * @inheritDoc */ public function getConfig(): array { diff --git a/src/guides/v2.4/advanced-reporting/data-collection.md b/src/guides/v2.4/advanced-reporting/data-collection.md deleted file mode 120000 index b9aad9aa69e..00000000000 --- a/src/guides/v2.4/advanced-reporting/data-collection.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/advanced-reporting/data-collection.md \ No newline at end of file diff --git a/src/guides/v2.4/advanced-reporting/data-collection.md b/src/guides/v2.4/advanced-reporting/data-collection.md new file mode 100644 index 00000000000..c36bb5b2b89 --- /dev/null +++ b/src/guides/v2.4/advanced-reporting/data-collection.md @@ -0,0 +1,208 @@ +--- +group: advanced-reporting +title: Data collection for advanced reporting +functional_areas: + - Reports +redirect_to: https://developer.adobe.com/commerce/php/development/advanced-reporting/data-collection/ +status: migrated +--- + +An {{site.data.var.ee}} or {{site.data.var.ce}} instance collects data that the Commerce Reporting service uses to build the advanced reports. All the data are stored in an encrypted archive file which is securely transferred to Commerce Reporting. Data collection is declared in a configuration file `etc/analytics.xml`. It declares: + +- Which report files must be included into the archive file. +- Which provider classes must collect data for each report file. +- Which report data configuration must be applied to collected data. + +You do not need to have a Commerce Reporting account to use Advanced Reporting. + +{:.bs-callout-warning} +This topic serves to provide better understanding of how data collection works. Any changes in configuration files will cause issues, because the Commerce Reporting service does not expect any changes of configuration in the current version. + +## Example + +An example of the `etc/analytics.xml` file: + +```xml + + + + + + + + modules + + + + + + + + + + + + + + stores + + + + + + +``` + +The example configuration file declares the following: + +- The `modules.csv`, `store_config.csv`, and `stores.csv` report files must be included in the archive file prepared for the Commerce Reporting service. +- `modules.csv` must contain data provided by the `\Magento\Analytics\ReportXml\ReportProvider` class. + Provided data must be configured according to the `modules` report declarations defined in the `etc/reports.xml` file. +- `store_config.csv` must contain data provided by the `Magento\Analytics\Model\StoreConfigurationProvider` class. +- `stores.csv` must contain data provided by the `\Magento\Analytics\ReportXml\ReportProvider` class. + Provided data is configured according to the `store_config` report declarations defined in the `etc/reports.xml` file. + Also, the report file must contain data provided by the `Magento\Analytics\Model\StoreConfigurationProvider` class. + +## Extensibility + +Configuration of data collection can be extended or changed in any module adding the corresponding `/etc/analytics.xml` file with nodes that must be changed or added. + +## Structure + +The `etc/analytics.xsd` schema declares the structure of the `etc/analytics.xml` file. + +{% include_relative img/analytics_xsd.svg %} + +### `` + +Configuration of an XML. + +| Attribute | Description | Constant value | Use | +| ------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------- | -------- | +| `xmlns:xsi` | Default namespace declaration | `"http://www.w3.org/2001/XMLSchema-instance"` | Required | +| `xsi:noNamespaceSchemaLocation` | An XML Schema document that does not have a target namespace | `"urn:magento:module:Magento_Analytics:etc/analytics.xsd"` | Required | + +### `` + +A report file (`.csv` by default) with collected data to be added to the archive file. +The `\Magento\Analytics\Model\ReportWriter` class is responsible for a decision about a data file extension (`.csv`, `.json`, etc.). + +| Attribute | Description | Example value | Use | +| --------- | ---------------------------- | ------------- | -------- | +| `name` | A filename with no extension | `"modules"` | Required | +| `prefix` | Reserved for future use. | -- | -- | + +```xml + + + + + ... + + + + + ... + + + +``` + +### `` + +The node must contain a `` node, or a `` node, or both. + +```xml +... + + + + + + + + + + + + + + + + + + + + + +... +``` + +### `` + +A class that provides data for a report file. +It can contain parameters. + +| Attribute | Description | Example value | Use | +| --------- | --------------------------------------- | ---------------------------------------------- | -------- | +| `name` | A provider name | `modules` | Required | +| `class` | Full name of a class that provides data | `"Magento\Analytics\ReportXml\ReportProvider"` | Required | + +Currently there is only one report provider available that is `Magento\Analytics\ReportXml\ReportProvider`. + +```xml +... + + + + ... + + +... +``` + +### `` + +Parameters used by ``. +Currently there is only one parameter is available. It is declared in ``. + +```xml +... + + + + store_report + + +... +``` + +If `reportProvider class="Magento\Analytics\ReportXml\ReportProvider"`, then `` references to the `` in `reports.xml`. + +### `` + +A class that provides data for a report file. +It cannot contain any parameters. + +| Attribute | Description | Example value | Use | +| --------- | --------------------------------------- | ------------------------------------------------------ | -------- | +| `name` | A provider name | "store_config" | Required | +| `class` | Full name of a class that provides data | `"Magento\Analytics\Model\StoreConfigurationProvider"` | Required | + +```xml +... + + + + +... +``` + +{:.ref-header} +Related topics + + [Modules providing advanced reporting][modules] + + + +[modules]: modules.html diff --git a/src/guides/v2.4/advanced-reporting/img/analytics_xsd.svg b/src/guides/v2.4/advanced-reporting/img/analytics_xsd.svg deleted file mode 120000 index ee0d484916d..00000000000 --- a/src/guides/v2.4/advanced-reporting/img/analytics_xsd.svg +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/advanced-reporting/img/analytics_xsd.svg \ No newline at end of file diff --git a/src/guides/v2.4/advanced-reporting/img/analytics_xsd.svg b/src/guides/v2.4/advanced-reporting/img/analytics_xsd.svg new file mode 100644 index 00000000000..bcd3a0f11ab --- /dev/null +++ b/src/guides/v2.4/advanced-reporting/img/analytics_xsd.svg @@ -0,0 +1 @@ +nameparametersreportProvidercustomProvidercustomProviderprovidersfile0..∞config \ No newline at end of file diff --git a/src/guides/v2.4/advanced-reporting/img/reports_xsd.svg b/src/guides/v2.4/advanced-reporting/img/reports_xsd.svg deleted file mode 120000 index eca65a361c2..00000000000 --- a/src/guides/v2.4/advanced-reporting/img/reports_xsd.svg +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/advanced-reporting/img/reports_xsd.svg \ No newline at end of file diff --git a/src/guides/v2.4/advanced-reporting/img/reports_xsd.svg b/src/guides/v2.4/advanced-reporting/img/reports_xsd.svg new file mode 100644 index 00000000000..15dc9b50837 --- /dev/null +++ b/src/guides/v2.4/advanced-reporting/img/reports_xsd.svg @@ -0,0 +1 @@ +attribute1..∞attribute0..∞0..∞filtercondition1..∞1..∞filter0..∞filter0..∞condition1..∞1..∞using1..∞1..∞link-source0..61filter0..∞1..∞sourcereport0..∞config \ No newline at end of file diff --git a/src/guides/v2.4/advanced-reporting/modules.md b/src/guides/v2.4/advanced-reporting/modules.md deleted file mode 120000 index 213b4791bc6..00000000000 --- a/src/guides/v2.4/advanced-reporting/modules.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/advanced-reporting/modules.md \ No newline at end of file diff --git a/src/guides/v2.4/advanced-reporting/modules.md b/src/guides/v2.4/advanced-reporting/modules.md new file mode 100644 index 00000000000..d30d12f550f --- /dev/null +++ b/src/guides/v2.4/advanced-reporting/modules.md @@ -0,0 +1,46 @@ +--- +group: advanced-reporting +title: Modules providing advanced reporting +functional_areas: + - Reports +redirect_to: https://developer.adobe.com/commerce/php/development/advanced-reporting/modules/ +status: migrated +--- + +Advanced reporting functionality is implemented in the following Commerce modules. + +[Analytics] implements the following: + +* Enabling subscription to Commerce Reporting and automatic re-subscription +* Changing the base URL without changing the Commerce Reporting account +* Declaring the configuration schemas for [report data collection] +* Collecting the Commerce instance data as reports for Commerce Reporting +* Introducing API that provides the collected data +* Extending the Commerce configuration with the module parameters: + * Subscription status (enabled/disabled) + * Industry (a business area in which the instance website works) + * Time of data collection (time of the day when the module collects data) + +[CatalogAnalytics] configures data definitions for data collection related to the Catalog module entities + +[CustomerAnalytics] configures data definitions for data collection related to the Customer module entities + +[QuoteAnalytics] configures data definitions for data collection related to the Quote module entities + +[ReviewAnalytics] configures data definitions for data collection related to the Review module entities + +[SalesAnalytics] configures data definitions for data collection related to the Sales module entities + +[WishlistAnalytics] configures data definitions for data collection related to the Wishlist module entities + + + +[Analytics]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Analytics/README.md +[CatalogAnalytics]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/CatalogAnalytics/README.md +[CustomerAnalytics]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/CustomerAnalytics/README.md +[QuoteAnalytics]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/QuoteAnalytics/README.md +[ReviewAnalytics]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/ReviewAnalytics/README.md +[SalesAnalytics]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/SalesAnalytics/README.md +[WishlistAnalytics]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/WishlistAnalytics/README.md + +[report data collection]: ./data-collection.html diff --git a/src/guides/v2.4/advanced-reporting/overview.md b/src/guides/v2.4/advanced-reporting/overview.md deleted file mode 120000 index 4e88e71be25..00000000000 --- a/src/guides/v2.4/advanced-reporting/overview.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/advanced-reporting/overview.md \ No newline at end of file diff --git a/src/guides/v2.4/advanced-reporting/overview.md b/src/guides/v2.4/advanced-reporting/overview.md new file mode 100644 index 00000000000..54d1cd32521 --- /dev/null +++ b/src/guides/v2.4/advanced-reporting/overview.md @@ -0,0 +1,49 @@ +--- +group: advanced-reporting +title: Advanced Reporting +functional_areas: + - Reports +redirect_to: https://developer.adobe.com/commerce/php/development/advanced-reporting/ +status: migrated +--- + +[Advanced reporting functionality] is free to {{site.data.var.ee}} and {{site.data.var.ce}} customers and is provided through an integration of a Magento instance with [{{site.data.var.ee}} Reporting]. Magento collects data and sends this information to Commerce Reporting for analytics. You do not need to have an Commerce Reporting account to use Advanced Reporting. + +## Prerequisites + +1. The website must run on a public web server. +1. The domain must have a valid security (SSL) certificate. +1. Magento must have been installed or upgraded successfully without error. +1. In the Magento configuration, the [Base URL (Secure) setting][base url] for the store view must point to the secure URL. For example https://yourdomain.com. +1. In the Magento configuration, **Use Secure URLs on Storefront**, **and Use Secure URLs in Admin** must be set to **Yes**. +1. Make sure that [Magento crontab] is created and cron jobs are running on the installed server. + +The merchant can now click on the **Go to Advanced Reporting** button on the Admin dashboard to launch the advanced reporting features. + +{:.bs-callout-info} +It can take up to a day for data to be available in Advanced Reporting. + +## Recommendations + +To avoid system overload during its prime time, you can set the preferable time of a day for a data collection. + +## Extensibility + +Though the Analytics module provides an API, it is used specifically to interchange data with Commerce Reporting. Magento does not recommend extending the advanced reporting functionality. + +{:.ref-header} +Related topics + +[Magento modules that implement the functionality][modules] + +[Data collection configuration and settings][collection] + + + +[modules]: modules.html +[collection]: data-collection.html + +[Advanced reporting functionality]: {{ site.user_guide_url }}/reports/advanced-reporting.html +[base url]: {{ site.user_guide_url }}/stores/store-urls.html +[{{site.data.var.ee}} Reporting]: https://magento.com/products/business-intelligence +[Magento crontab]: {{ page.baseurl }}/config-guide/cli/config-cli-subcommands-cron.html diff --git a/src/guides/v2.4/advanced-reporting/report-xml.md b/src/guides/v2.4/advanced-reporting/report-xml.md deleted file mode 120000 index 5c870521b8e..00000000000 --- a/src/guides/v2.4/advanced-reporting/report-xml.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/advanced-reporting/report-xml.md \ No newline at end of file diff --git a/src/guides/v2.4/advanced-reporting/report-xml.md b/src/guides/v2.4/advanced-reporting/report-xml.md new file mode 100644 index 00000000000..e08058c18af --- /dev/null +++ b/src/guides/v2.4/advanced-reporting/report-xml.md @@ -0,0 +1,155 @@ +--- +group: advanced-reporting +title: Report XML +functional_areas: + - Reports +redirect_to: https://developer.adobe.com/commerce/php/development/advanced-reporting/report-xml/ +status: migrated +--- + +**Report XML** is a markup language created to build advanced reports. +The language declares SQL queries using declarations in XML. + +You can retrieve data for integration with advanced reporting service using a report name. +A report name is the same as the `name` attribute in the `` node as described below. + +## Report columns + +Report XML does not support the asterisk statement. +All columns must be declared: + +* for the main table — inside the `` node +* for join tables — inside the `` node + +Columns are added using the `` node. + +## Syntax and structure + +All report files are located in the `etc` directory of a module: + +```text +/etc/reports.xml +``` + +The following is a visualized XML Schema for `reports.xml`: + +{% include_relative img/reports_xsd.svg %} + +Report files can be located in any module that depends on the `Analytics` module (e.g. the `SalesAnalytics` module created for the reports related to *Sales*). +Each report is declared in the `` node. + +A `report` node is rendered into an SQL query. + +### `` + +Configuration of an XML. + +|Attribute|Description|Constant value|Use| +|--- |--- |--- | +|`xmlns:xsi`|Default namespace declaration.|`http://www.w3.org/2001/XMLSchema-instance`|Required| +|`xsi:noNamespaceSchemaLocation`|An XML Schema document that does not have a target namespace.|`urn:magento:module:Magento_Analytics:etc/reports.xsd`|Required| + +### `` + +|Attribute|Description|Use| +|--- |--- |--- | +|`name`|Name of report configuration. You can use it for merging purposes or as a reference.|Required| +|`connection`|Name of connection to the database, when a Magento store has more than one database.|Optional| +|`iterator`|Full class name or an interface name of a statement iterator. To use a custom iterator, add an `iterator` attribute which contains an iterator class or an interface name. This iterator can get statement iterator in the constructor method and wrap or change the current values with the custom data.|Optional| + +All data of the `reports.xml` file from the `` node that has the same attribute `name` will be merged. + +### `` + +The data sources that correspond to table names in a database. + +|Attribute|Description|Use| +|--- |--- |--- | +|`name`|Table name|Required| +|`alias`|Table alias|Optional| + +The main table is specified with the `` tag. +After rendering, it is represented in an SQL query as the `FROM` statement. + +A report can be filtered using `` declared inside the `` node. + +### `` + +In the `source` node, you can also add a data source with the `` tag. +After rendering it is represented as the `JOIN` statement in an SQL query. + +The `` node contains the following attributes: + +|Attribute|Description|Use| +|--- |--- |--- | +|`name`|Table name|Required| +|`alias`|Table alias|Optional| +|`link-type`|Join type|Optional| + +The name must be the same as the table name in database. +The `alias` attribute can be used in the same way as an alias in the SQL. +The `link-type` attribute specifies the type of join in SQL query and can be either `INNER` or `LEFT`. + +Join conditions are described in the `` node using the `` tag. +After rendering it is represented as the `ON` statement in an SQL query. +`` works in the same way as the filter, described below in this document. + +### `` + +|Attribute|Description|Use +|--- |--- |--- +|`name`|Column name in database|Required +|`alias`|Column alias. It can be used in the same way as the column alias in SQL.|Optional +|`function`|Available values: `count`, `lower`, `date`, `sum`, `max`, `avg`, `min`, `sha1`|Optional +|`group`|boolean|Optional +|`distinct`|boolean|Optional + +### `` + +A report can be filtered using `` declared inside the parent node. +The node can have nested filters and ``. +Filters use an attribute `glue` that helps to filter records that are based on more than one condition. + +|Attribute|Description|Values|Use| +|--- |--- |--- | +|`glue`|Logical operator|`or`, `and`|Optional| + +#### Example + +Example of a nested condition in SQL: + +```sql +WHERE ((billing.entity_id IS NULL AND ((billing.entity_id < '200' AND billing.entity_id != '42') AND (billing.entity_id > '200' OR billing.entity_id != '201')))) +``` + +Example of a nested condition in Report XML: + +```xml + + + + 200 + 42 + + + 200 + 201 + + +``` + +### `` + +The `` node contains the following attributes: + +|Name|Description|Value|Required?| +|--- |--- |--- | +|`attribute`|Column name in the database.|string|Required| +|`type`|Type of comparison value.|`value` for a scalar value (default)
        `identifier` for a column|Optional| +|`operator`|Comparison operator|Required| + +Comparison operator is used to compare columns with the value or columns that can be specified inside the `` XML node. + +You can find all the supported comparison operators in `\Magento\Analytics\ReportXml\DB\ConditionResolver::$conditionMap`. + + \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/ABasics_intro.md b/src/guides/v2.4/architecture/archi_perspectives/ABasics_intro.md deleted file mode 120000 index 61e90476769..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/ABasics_intro.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/architecture/archi_perspectives/ABasics_intro.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/ABasics_intro.md b/src/guides/v2.4/architecture/archi_perspectives/ABasics_intro.md new file mode 100644 index 00000000000..ac6f438f993 --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/ABasics_intro.md @@ -0,0 +1,25 @@ +--- +group: architecture-guide +title: Architectural basics overview +menu_title: Architectural basics +redirect_to: https://developer.adobe.com/commerce/php/architecture/basics/ +status: migrated +--- + +Magento incorporates the core architectural principles of object-oriented, PHP-based applications. Comprehensive discussions of these general principles exist both on-line and in printed form. + +The following discussion focuses on how these topics apply directly to Magento: + +* [Magento technology stack]({{page.baseurl}}/install-gde/system-requirements.html) +* [Magento View Model]({{page.baseurl}}/extension-dev-guide/view-models.html) +* [Extensibility]({{page.baseurl}}/architecture/extensibility.html) +* [Modularity]({{page.baseurl}}/architecture/extensibility.html#modularity) +* [Event-driven architecture]({{page.baseurl}}/extension-dev-guide/events-and-observers.html) +* [Security]({{page.baseurl}}/architecture/security_intro.html) + +{:.ref-header} +Related topics + +[Architectural diagrams]({{page.baseurl}}/architecture/archi_perspectives/arch_diagrams.html) + +[Versioning]({{page.baseurl}}/extension-dev-guide/versioning/) diff --git a/src/guides/v2.4/architecture/archi_perspectives/ALayers_intro.md b/src/guides/v2.4/architecture/archi_perspectives/ALayers_intro.md deleted file mode 120000 index a049ac06cdf..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/ALayers_intro.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/architecture/archi_perspectives/ALayers_intro.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/ALayers_intro.md b/src/guides/v2.4/architecture/archi_perspectives/ALayers_intro.md new file mode 100644 index 00000000000..3960bd7b96d --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/ALayers_intro.md @@ -0,0 +1,38 @@ +--- +group: architecture-guide +title: Architectural layers overview +menu_title: Architectural layers +redirect_to: https://developer.adobe.com/commerce/php/architecture/layers/ +status: migrated +--- + +## Magento as layered software + +At its highest level, Magento's product architecture consists of the core product code plus optional *modules*. These optional modules enhance or replace the basic product code. + +If you are substantially customizing the basic Magento product, [module](https://glossary.magento.com/module) development will be your central focus. Modules organize code that supports a particular task or feature. A module can include code to change the look-and-feel of your [storefront](https://glossary.magento.com/storefront) as well as its fundamental behavior. + +Your modules function with the core Magento product code, which is organized into layers. Understanding layered software pattern is essential for understanding basic Magento product organization. + +Layered software is a popular, widely discussed principle in software development. Many resources exist for this topic, but consider consulting Pattern-Oriented Software Architecture for a general discussion. + +## Advantages of layered application design + +Layered application design offers many advantages, but users of Magento will appreciate: + +* Stringent separation of business logic from presentation logic simplifies the customization process. For example, you can alter your storefront appearance without affecting any of the [backend](https://glossary.magento.com/backend) business logic. + +* Clear organization of code predictably points [extension](https://glossary.magento.com/extension) developers to code location. + +{:.ref-header} +Related topics + +[Architectural diagrams]({{page.baseurl}}/architecture/archi_perspectives/arch_diagrams.html) + +[Presentation layer]({{page.baseurl}}/architecture/archi_perspectives/present_layer.html) + +[Service layer]({{page.baseurl}}/architecture/archi_perspectives/service_layer.html) + +[Domain layer]({{page.baseurl}}/architecture/archi_perspectives/domain_layer.html) + +[Persistence layer]({{page.baseurl}}/architecture/archi_perspectives/persist_layer.html) diff --git a/src/guides/v2.4/architecture/archi_perspectives/arch_diagrams.md b/src/guides/v2.4/architecture/archi_perspectives/arch_diagrams.md deleted file mode 120000 index ea447a28b0a..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/arch_diagrams.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/architecture/archi_perspectives/arch_diagrams.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/arch_diagrams.md b/src/guides/v2.4/architecture/archi_perspectives/arch_diagrams.md new file mode 100644 index 00000000000..6b910ed0e15 --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/arch_diagrams.md @@ -0,0 +1,23 @@ +--- +group: architecture-guide +title: Architectural diagrams +menu_title: Architectural diagrams +redirect_to: https://developer.adobe.com/commerce/php/architecture/basics/diagrams/ +status: migrated +--- + +## Magento architecture from different perspectives {#m2arch-whatis-overview} + +Depending upon your role and purpose for learning more about Magento, there are several different ways to view the Magento architecture. For example, a developer who wants to create new modules or perhaps customize an existing [module](https://glossary.magento.com/module) will want to understand the architecture of a module itself, and how it fits into the larger view, with the Magento framework and other components. However, a merchant who wants to quickly build an online storefront wants to view the collection of components from a higher level, and understand the components that impact the look, feel, and user interaction components. + +## Architecture layers diagram {#archi-layers} + +The following diagram illustrates the components and shows the "layers" or tiers in Magento. + +![Architectural Diagram]({{site.baseurl}}/common/images/archi_diagram_desired-state.png) + +{:.ref-header} +Related topics + +- [Architecture layers overview]({{page.baseurl}}/architecture/archi_perspectives/ALayers_intro.html) +- [Service Isolation](https://github.com/magento/architecture/blob/master/design-documents/service-isolation.md) diff --git a/src/guides/v2.4/architecture/archi_perspectives/components/AComponents.md b/src/guides/v2.4/architecture/archi_perspectives/components/AComponents.md deleted file mode 120000 index 5078c40bb8d..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/components/AComponents.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/architecture/archi_perspectives/components/AComponents.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/components/AComponents.md b/src/guides/v2.4/architecture/archi_perspectives/components/AComponents.md new file mode 100644 index 00000000000..3c56a3218f7 --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/components/AComponents.md @@ -0,0 +1,22 @@ +--- +group: architecture-guide +title: Magento Components +menu_title: Components +redirect_to: https://developer.adobe.com/commerce/php/architecture/modules/ +status: migrated +--- + +## Magento components + +Magento has several core components that are used to build custom websites, applications, and integrated systems. When you change the appearance or behavior of your Magento store, you are inevitably changing one or more of these **core Magento components**, which include **modules**, **themes**, and **language packages**. Together, these core components determine much of server-side and [storefront](https://glossary.magento.com/storefront) (frontend) appearance and behavior. + +{:.bs-callout-tip} +Throughout the Magento documentation set, we also use the term *component* in its generic sense to mean element or part. However, the term **Magento component** explicitly refers to either a module, theme, or [language package](https://glossary.magento.com/language-package). + +For more information about individual Magento components, see: + +* [Modules]({{page.baseurl}}/architecture/archi_perspectives/components/modules/mod_intro.html) + +* [Themes]({{page.baseurl}}/frontend-dev-guide/themes/theme-overview.html) + +* [Language packages]({{page.baseurl}}/frontend-dev-guide/translations/xlate.html#m2devgde-xlate-languagepack) diff --git a/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_and_areas.md b/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_and_areas.md index 98320d3185e..b9790028357 100644 --- a/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_and_areas.md +++ b/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_and_areas.md @@ -2,6 +2,8 @@ group: architecture-guide title: Modules and areas menu_title: Modules and areas +redirect_to: https://developer.adobe.com/commerce/php/architecture/modules/areas/ +status: migrated --- ## Overview {#m2arch-module-areas-overview} diff --git a/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_depend.md b/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_depend.md deleted file mode 120000 index cd6e0b10fa5..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_depend.md +++ /dev/null @@ -1 +0,0 @@ -../../../../../v2.3/architecture/archi_perspectives/components/modules/mod_depend.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_depend.md b/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_depend.md new file mode 100644 index 00000000000..5cbc62ec664 --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_depend.md @@ -0,0 +1,174 @@ +--- +group: architecture-guide +title: Module dependencies +menu_title: Module dependencies +redirect_to: https://developer.adobe.com/commerce/php/architecture/modules/dependencies/ +status: migrated +--- + +## Overview {#m2devgde-moddep-intro} + +A *software dependency* identifies one software component's reliance on another for proper functioning. A core principle of Magento architecture is the **minimization of software dependencies**. Instead of being closely interrelated with other modules, modules are optimally designed to be *loosely coupled*. Loosely coupled modules require little or no knowledge of other modules to perform their tasks. + +Each Magento [module](https://glossary.magento.com/module) is responsible for a unique feature. In practice, this means that: + +* Several modules cannot be responsible for one feature. + +* One module cannot be responsible for several features. + +* Module dependencies on other modules must be declared explicitly. You must also declare any dependency upon other components (for example, a theme, language package, or library). + +* Removing or disabling a module does not result in disabling other modules. + +## Two types of dependencies {#m2devgde-moddep-declare-dep} + +There are two types of Magento [module](https://glossary.magento.com/module) dependencies: hard and soft. + +### Hard dependencies + +A module with a *hard dependency* on another module cannot function without the module it depends on. These modules: + +* Contain code that directly uses logic from another module, such as class constants, static methods, public class properties, interfaces, and traits. +* Contain strings that include class names, method names, class constants, class properties, interfaces, and traits from another module. +* Deserializes an object declared in another module. +* Uses or modifies the database tables used by another module. + +The `require` section of `app/code///composer.json` file contains hard dependency definitions for the module. For example: + +```json + ... + "require": { + "magento/module-catalog": "103.0.*", + "magento/module-email": "101.0.*", + "magento/module-media-storage": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-theme": "101.0.*", + "magento/module-ui": "101.1.*", + "magento/module-variable": "100.3.*", + "magento/module-widget": "101.1.*", + "magento/module-authorization": "100.3.*" + } + ... +``` + +### Soft dependencies + +A module with a *soft dependency* on another module can function properly without the other module, even if it has a dependency on the other module. These modules: + +* Directly check another module's availability. +* Extend another module's configuration. +* Extend another module's [layout](https://glossary.magento.com/layout). + +The `suggest` section of `app/code///composer.json` file contains soft dependency definitions for the module. For example: + +```json + ... + "suggest": { + "magento/module-graph-ql": "*", + "magento/module-graph-ql-cache": "*", + "magento/module-store-graph-ql": "*" + } + ... +``` + +The `` node of `app/code///etc/module.xml` file also contains soft dependency definitions for the module. For example: + +```xml + + + + + + + +``` + +{:.bs-callout-tip} +If a module uses code from another module, it should declare the dependency explicitly. + +## Module install order + +Magento installs modules in the following order: + +1. The module serving as a dependency for another module +1. The module dependent on it + +## Appropriate dependencies + +Although Magento architecture favors loosely coupled software components, modules can contain dependencies upon these software components: + +* other modules + +* [PHP](https://glossary.magento.com/php) extensions + +* libraries (either Magento Framework [library](https://glossary.magento.com/library) or third party libraries) + +{:.bs-callout-tip} +Note: You can lose the historical information contained in a module if the module is removed or disabled. We recommend alternative storage of module information before you remove or disable a module. + +## Inappropriate dependencies {#m2devgde-moddep-inapp-dep} + +Avoid creating these dependencies: + +* Circular (both direct and indirect) +* Undeclared +* Incorrect + +## Dependencies between modules in different presentation layers {#m2devgde-moddep-diff-layer} + +You can build dependencies between the modules belonging to different layers. + +## Dependencies in the Framework layer {#m2devgde-moddep-frmwk-layer} + +A module belonging to the Magento Framework can be used in the application layer by an explicit dependency. + +{:.bs-callout-tip} +In this case, using interfaces is preferable to using classes. You can build dependencies between classes in the Magento Framework even if they belong to different modules. + +## Dependencies in the application layer {#m2devgde-moddep-app-layer} + +A module belonging to the application layer cannot be used in the Magento Framework. + +You can build dependencies between classes in the application layer, but these classes must belong to the same module. Dependencies between the modules of the application layer should be built only by the [service contract](https://glossary.magento.com/service-contract) or the service provider interface (SPI). + +## Managing module dependencies + +At a high level, there are three main steps for managing module dependencies: + +1. Name and declare the module in the `module.xml` file. + +1. Declare any dependencies that the module has (whether on other modules or on a different component) in the module's `composer.json` file. + +1. (*Optional*) Define the desired load order of config files and `.css` files in the `module.xml` file. + +Example: Module A declares a dependency upon Module B. Thus, in Module A's `module.xml` file, Module B is listed in the `` list, so that B's files are loaded before A's. Additionally, you must declare a dependency upon Module B in A's `composer.json` file. Furthermore, in the [deployment configuration]({{page.baseurl}}/config-guide/config/config-php.html), Modules A and B must both be defined as enabled. + +`etc/module.xml` + +```xml + + + + + + + +``` + +After installing the module and opening `app/etc/config.php`, you are able to see that the Module_B was loaded before Module_A: + +```php +return [ + 'modules' => [ + ... + 'Module_B' => 1, + 'Module_A' => 1, + ... + ] +]; +``` + +{:.ref-header} +Related topics + +[Module overview]({{page.baseurl}}/architecture/archi_perspectives/components/modules/mod_intro.html) diff --git a/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_intro.md b/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_intro.md index 0d75d62c1f5..484c01f64d7 100644 --- a/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_intro.md +++ b/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_intro.md @@ -3,6 +3,8 @@ group: architecture-guide title: Module overview menu_title: Module overview redirect_from: guides/v2.4/install-gde/basics/basics_module.html +redirect_to: https://developer.adobe.com/commerce/php/architecture/modules/overview/ +status: migrated --- ## What is a Magento module? {#arch-modules-overview} diff --git a/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_relationships.md b/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_relationships.md deleted file mode 120000 index fce4636fa1b..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_relationships.md +++ /dev/null @@ -1 +0,0 @@ -../../../../../v2.3/architecture/archi_perspectives/components/modules/mod_relationships.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_relationships.md b/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_relationships.md new file mode 100644 index 00000000000..1ad72c53270 --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/components/modules/mod_relationships.md @@ -0,0 +1,54 @@ +--- +group: architecture-guide +title: Module relationships +menu_title: Module relationships +redirect_to: https://developer.adobe.com/commerce/php/architecture/modules/relationships/ +status: migrated +--- + +## Overview {#m2arch-module-relationships-overview} + +Understanding how one [module](https://glossary.magento.com/module) relates to another helps determine how it reacts to changes in that module. + +A single module can have the following types of relationships with another module: + +* **uses**: module A uses module B if it invokes behavior of module B + +* **reacts to**: module A reacts to module B if its behavior is triggered by an [event](https://glossary.magento.com/event) in module B without module B knowing about module A + +* **customizes**: module A customizes module B if it modifies the behavior of module B + +* **implements**: module A implements module B if it implements some, not necessarily all, behavior that is defined in module B + +* **replaces**: module A replaces module B if it provides its own version of the [API](https://glossary.magento.com/api) exposed and implemented by module B + +## Relationship types and scenarios + +### A uses B, C customizes B + +In a scenario where module A uses module B and module C customizes module B, the customizations in module C must not break the API of module B so that module A still functions properly in the face of these customizations. + +![Module relationship scenarios: A uses B, C customizes B]({{site.baseurl}}/common/images/archi_first_relate.png) + +### A reacts to B, C customizes B + +Similarly, in a case where module A reacts to module B and module C customizes module B, the customizations in module C must not interfere with the events in module B that module A depends on. + +![Module relationship scenarios: A reacts to B, C customizes B]({{site.baseurl}}/common/images/archi_second_relate.png) + +### A and C customize B + +If both module A and C customize module B, be careful about how these customizations are implemented so that you avoid conflicts (see below). + +![Module relationship scenarios: A and C customize B]({{site.baseurl}}/common/images/archi_third_relate.png) + +### A replaces B + +If module A replaces module B, it needs to be able to do so in such a way that other modules are not affected. That will mean not having direct hard dependencies on module B, but rather dependencies on a third module, module C, that both module A and B implement. + +![Module relationship scenarios: A replaces B]({{site.baseurl}}/common/images/archi_fourth_relate.png) + +{:.ref-header} +Related topics + +[Module overview]({{page.baseurl}}/architecture/archi_perspectives/components/modules/mod_intro.html) \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/domain_layer.md b/src/guides/v2.4/architecture/archi_perspectives/domain_layer.md deleted file mode 120000 index f1079abe29f..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/domain_layer.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/architecture/archi_perspectives/domain_layer.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/domain_layer.md b/src/guides/v2.4/architecture/archi_perspectives/domain_layer.md new file mode 100644 index 00000000000..3681fe0f6d9 --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/domain_layer.md @@ -0,0 +1,47 @@ +--- +group: architecture-guide +title: Domain layer +menu_title: Domain layer +redirect_to: https://developer.adobe.com/commerce/php/architecture/layers/domain/ +status: migrated +--- + +## The Magento Domain layer + +The domain layer holds the business logic layer of a Magento [module](https://glossary.magento.com/module). It typically does not contain resource-specific or database-specific information. Its primary functions include: + +* Defining the generic Magento data objects, or models, that contain business logic. This logic defines which operations can be performed on particular types of data, such as a Customer object. These models contain generic information only. Applications can also use SOAP or RESTful endpoints to request data from models. + +* (Optionally) Including the implementation of service contracts, although not their definition. + +{:.bs-callout-tip} +**Best practice:** Use service contracts to communicate with the domain layer by passing data types through strongly typed objects. This helps you avoid the need to replace presentation layer code when replacing business layer logic. + +## Models + +Each domain-layer model contains a reference to a resource model, which it uses to retrieve data from the database with MySql calls. This resource model contains logic for connecting to the underlying database, typically MySQL. A model requires a resource model only if the model data must persist. + +## Accessing the domain layer + +There are three primary ways of accessing a module's domain-layer code: + +* Service contracts are the recommended way for one module to access another module's domain-level code. This loosely coupled solution is the optimal way for most modules to access another module. + +* A module can directly call into another module. This tightly coupled solution is not recommended for most situations, but is sometimes unavoidable. + +* Domain layer code in one module can also plug itself into another module by: + + * event hooks + + * plugins + + * `di.xml` files (with an SPI contract) + +Your strategy for calling another module's domain-layer code is highly dependent upon the unique configuration and needs of your system. + +{:.ref-header} +Related topics + +[Architectural diagrams]({{page.baseurl}}/architecture/archi_perspectives/arch_diagrams.html) + +[Architectural layers overview]({{page.baseurl}}/architecture/archi_perspectives/ALayers_intro.html) diff --git a/src/guides/v2.4/architecture/archi_perspectives/framework.md b/src/guides/v2.4/architecture/archi_perspectives/framework.md deleted file mode 120000 index baddb037c3d..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/framework.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/architecture/archi_perspectives/framework.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/framework.md b/src/guides/v2.4/architecture/archi_perspectives/framework.md new file mode 100644 index 00000000000..56cb0a874d1 --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/framework.md @@ -0,0 +1,86 @@ +--- +group: architecture-guide +title: Commerce and Magento Framework +redirect_to: https://developer.adobe.com/commerce/php/architecture/framework/ +status: migrated +--- + +## Overview + +The Magento Framework controls how application components interact, including request flow, routing, indexing, caching, and [exception](https://glossary.magento.com/exception) handling. It provides services that reduce the effort of creating modules that contain business logic, contributing to the goal of both making Magento code more modular as well as decreasing dependencies. + +This primarily [PHP](https://glossary.magento.com/php) software component is organized into logical groups called *libraries*, which all modules can call. Most of the framework code sits under the domain layer or encloses the presentation, service, and domain layers. The framework contains no business logic. +(Although the Magento Framework does not contain resource models, it does contain a [library](https://glossary.magento.com/library) of code to help implement a resource model.) + +{:.bs-callout-tip} +Don't confuse the Magento Framework with the Zend web application framework that ships with Magento. + +You should never modify Framework files, although if you are extending Magento, you must know how to call Framework libraries. Modules you create will typically inherit from classes and interfaces defined in the Framework directories. + +## Responsibilities + +The Magento Framework provides libraries that help reduce the effort of creating modules that contain business logic. + +The Framework is responsible for operations that are useful for potentially all modules, including: + +* handling HTTP protocols + +* interacting with the database and filesystem + +* rendering content + +## Organization + +Here is the Magento Framework folder structure: + +```tree +vendor/ + ../magento + ../framework +lib/ + ../internal + ../LinLibertineFont + ../web +``` + +* `/vendor/magento/framework` contains only PHP code. These are libraries of code plus the application entry point that routes requests to modules (that in turn call the Framework libraries). For example, libraries in the Framework help implement a resource model (base classes and interfaces to inherit from) but not the resource models themselves. Certain libraries also support [CSS](https://glossary.magento.com/css) rendering. + +* `/lib/internal` contains some non-PHP as well as PHP components. Non-PHP framework libraries includes [JavaScript](https://glossary.magento.com/javascript) and LESS/CSS. + +* `/lib/web` contains JavaScript and CSS/LESS files. These files reside under `web` and not `internal` because they are accessible from a web browser, while the PHP code under `internal` is not. (Any code that a web browser must access should be under `web`, while everything else under `internal`.) + +{:.bs-callout-tip} +The `vendor/magento/framework` directory maps to the `Magento\Framework` [namespace](https://glossary.magento.com/namespace). + +## Highlights of Magento Framework + +The Magento Framework (`lib/internal/Magento/Framework/`) provides a robust range of functionality. If you are an [extension](https://glossary.magento.com/extension) developer, you may be interested in this subset of Framework namespaces. + +|Namespace|Purpose| +|--- |--- | +|`Magento\Framework\DataObject`|Provides standard functionality for storing and retrieving data through magic methods. This is the base class for many Magento classes.| +|`Magento\Framework\Model`|Contains base Model classes that almost all Magento Model classes extend from.| +|`Magento\Framework\Model\AbstractModel`|| +|`Magento\Framework\Model\ResourceModel\AbstractResource`|| +|`Magento\Framework\Controller`|Contains classes to help return different types of results (for example, JSON and redirects).| +|`Magento\Framework\View`|Contains code to render pages and layouts.| +|`Magento\Framework\Data`|Contains additional classes that handle forms.| +|`Magento\Framework\Url`|Contains code to look up other pages in Magento.| +{:style="table-layout:auto"} + +Other namespaces under `Magento\Framework` that will interest extension developers: + +|Namespace|Purpose| +|--- |--- | +|`Magento\Framework\ObjectManager`|Used to provide dependency injection.| +|`Magento\Framework\App`|Contains framework code that has knowledge about the Magento application. This code bootstraps the application and reads in the initial configuration. It also contains the entry point to the command line tools, the web application, and the cron job. And finally, it routes requests while providing the deployment context (such as reading in the configuration for the database configuration, languages, and caching systems).| +|`Magento\Framework\Api`|Contains base classes for advanced functionality of extendable objects through the system (that is, objects that can be extended to add new data through Commerce Marketplace extensions).| +|`Magento\Framework\Config`|Contains the generic configuration reader. Each config file has its own specialized reader extending these classes.| +|`Magento\Framework\Filesystem`|Contains classes that handle reading from and writing to the file system.| +|`Magento\Framework\HTTP\PhpEnvironment`|| +|`Magento\Framework\Session`|| +|`Magento\Framework\Stdlib\Cookie`|Code to handle the HTTP request/responses as well as session/cookies is found here.| +|`Magento\Framework\Exception`|Contains the basic exceptions that are thrown throughout the Magento codebase.| +|`Magento\Framework\Event`|Contains the code that publishes synchronous events and that handles observers for any Magento event is handled here.| +|`Magento\Framework\Validator`|Contains the code that validates data (currencies, not empty) and that handles observers for any Magento event.| +{:style="table-layout:auto"} diff --git a/src/guides/v2.4/architecture/archi_perspectives/persist_layer.md b/src/guides/v2.4/architecture/archi_perspectives/persist_layer.md deleted file mode 120000 index 947d0da76b7..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/persist_layer.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/architecture/archi_perspectives/persist_layer.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/persist_layer.md b/src/guides/v2.4/architecture/archi_perspectives/persist_layer.md new file mode 100644 index 00000000000..eac1d17e6bf --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/persist_layer.md @@ -0,0 +1,40 @@ +--- +group: architecture-guide +title: Persistence layer +redirect_to: https://developer.adobe.com/commerce/php/architecture/layers/persistence/ +status: migrated +--- + +Magento uses an active record pattern strategy for persistence. In this system, the model object contains a *resource model* that maps an object to one or more database rows. A resource model is responsible for performing functions such as: + +* Executing all CRUD (create, read, update, delete) requests. The resource model contains the SQL code for completing these requests. + +* Performing additional business logic. For example, a resource model could perform data validation, start processes before or after data is saved, or perform other database operations. + +If you expect to return multiple items from a database query, then you would implement a special type of resource model known as a *collection*. A collection is a class that loads multiple models into an array-like structure based on a set of rules. This is similar to a SQL `WHERE` clause. + +A simple resource model defines and interacts with a single table. + +However, some objects have a vast number of attributes, or they could have a set related objects that have varying numbers of attributes. In these cases, the objects are constructed using **Entity-Attribute-Value (EAV)** models. + +Any model that uses an EAV resource has its attributes spread out over a number of MySQL tables. + +The `Customer`, `Catalog` and `Order` resource models use EAV attributes. + +## XML Declarative schema + +With Magento 2.3, we introduced Declarative XML Schemas. +These are XML files that are used to specify the final state of the database. +These files replace PHP update scripts that were required when upgrading a module. +These files allow you to skip the progressive upgrade scripts and jump right to the final state of the database. + +Read more about writing [declarative XML schemas][]. + +{:.ref-header} +Related topics + +[Architectural diagrams]({{page.baseurl}}/architecture/archi_perspectives/arch_diagrams.html) +[Architectural layers overview]({{page.baseurl}}/architecture/archi_perspectives/ALayers_intro.html) + + +[declarative XML schemas]: {{ page.baseurl }}/extension-dev-guide/declarative-schema/db-schema.html diff --git a/src/guides/v2.4/architecture/archi_perspectives/present_layer.md b/src/guides/v2.4/architecture/archi_perspectives/present_layer.md deleted file mode 120000 index cba0f2be7a3..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/present_layer.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/architecture/archi_perspectives/present_layer.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/present_layer.md b/src/guides/v2.4/architecture/archi_perspectives/present_layer.md new file mode 100644 index 00000000000..bdacac7a37f --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/present_layer.md @@ -0,0 +1,86 @@ +--- +group: architecture-guide +title: Presentation Layer +redirect_to: https://developer.adobe.com/commerce/php/architecture/layers/presentation/ +status: migrated +--- + +## What is the Magento Presentation layer? + +When you interact with the Magento web interface, you are interacting with *presentation layer* code. The presentation layer is the top layer of the four layers (presentation, service, domain, and persistence layers) described by the Magento architecture. + +The presentation layer contains both view elements **(layouts, blocks, templates)** and **controllers**, which process commands to and from the user interface. Presentation code controls web user interaction with the product and its appearance. You can extensively customize the user interface by using HTML, CSS, and [PHTML](https://glossary.magento.com/phtml) files to modify elements of the presentation layer. Basically, the presentation layer represents the customization of HTML, CSS, JavaScript, Magento UI, PHTML files, and block files. + +## Who uses the Presentation layer? + +Magento uses *areas* to efficiently make web service calls, loading only the dependent code that is required for the particular type of user. Three types of Magento users interact with presentation layer code: + +* **Web users** interact with the storefront, where they can see the View model of data displayed by Magento and interact with product UI elements to request data for view and manipulation. These users work within the `frontend` area. + +* **System administrators** customizing a [storefront](https://glossary.magento.com/storefront) can indirectly manipulate the presentation layer by, for example, adding themes or widgets to the frontend. + +* **Web [API](https://glossary.magento.com/api) calls** can be made through HTTP just like browser requests, and can be made via AJAX calls from the user interface. + +## Presentation layer components + +One helpful way of understanding the Magento presentation layer components is by examining Magento *themes*. +Magento themes organize both the visual aspect of your storefront and certain aspects of product behavior. + +Each [theme](https://glossary.magento.com/theme) resides in a unique directory and contains custom page layouts, templates, skins, and language files that work together to create a distinct user experience. + +For an extensive introduction to theme elements and an overview of how to extend and override the default Magento themes, see the [Frontend Developer Guide][]. + +## GraphQL + +GraphQL is a data query language developed internally by Facebook in 2012 before being publicly released in 2015. Magento implements GraphQL to provide an alternative to REST and SOAP web APIs for frontend development. + +GraphQL allows you to define the structure of the data that you need, and the server returns only the data you request. Each GraphQL-capable module contains a declarative schema that defines the syntax for queries that the module supports, as well as the attributes that can be returned. If you run a REST call such as GET /V1/products/:sku on a simple product, the system might fetch more than 100 lines of data. If all you need is the current price, the call has returned significantly more information than you need. With GraphQL, a query against the same SKU could return just the price. + +More information can be found in the [GraphQL Developer Guide][]. + +## Progressive Web Apps + +The Magento Progressive Web App (PWA) Studio project is a set of developer tools that allow you to develop, deploy, and maintain a PWA storefront on top of Magento 2. +PWA is a way to present a Magento storefront via a set of React JavaScript components. +Using Magento as a headless backend, you can use PWA components to create mobile friendly frontend. + +You can read more about how PWA works with Magento in the [PWA Studio docs][]. + +## View model + +Magento generates the [HTML](https://glossary.magento.com/html) for a page to display to a user from a tree of view elements. + +View elements fall into two main categories: blocks and containers. + +* **Blocks** can generate [dynamic content](https://glossary.magento.com/dynamic-content) and can contain named child view elements that are similar to arguments being passed in. (The `as` attribute holds the child view element names for the parent block to reference them) + +* **Containers** collect an ordered group of children view elements. + +The browser forms a product web page by asking the view element tree to render itself into HTML. +Containers and blocks emit HTML that encloses their children appropriately. +Blocks can generate their content using static HTML, Knockout JS scripts, and PHTML. + +## How Presentation code calls other layers + +Presentation code typically calls service contracts, particularly for a storefront. +However, presentation code is occasionally dependent on a specific implementation that requires the presentation code to directly call the domain layer. +For example, the [Admin](https://glossary.magento.com/admin) UI screens are often tightly linked to a specific implementation and are not generic across implementations. + +The View layer calls code from the Model to get information about the state of the application (for example, the price of a product). Typically, the way it accesses the Model is through service contracts. + +## Presentation layer flow + +Web users interact with components of the presentation layer to select actions that initiate calls to the underlying layers. +Presentation layer components make calls to the service layer, which in turn sends requests to the [domain](https://glossary.magento.com/domain) layer. + +{:.ref-header} +Related topics + +[Architectural diagrams]({{page.baseurl}}/architecture/archi_perspectives/arch_diagrams.html) + +[Architectural layers overview]({{page.baseurl}}/architecture/archi_perspectives/ALayers_intro.html) + + +[Frontend Developer Guide]: {{page.baseurl}}/frontend-dev-guide/bk-frontend-dev-guide.html +[GraphQL Developer Guide]: {{ page.baseurl }}/graphql/ +[PWA Studio docs]: https://developer.adobe.com/commerce/pwa-studio/ \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/service_layer.md b/src/guides/v2.4/architecture/archi_perspectives/service_layer.md deleted file mode 120000 index 74092f85a4e..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/service_layer.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/architecture/archi_perspectives/service_layer.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/service_layer.md b/src/guides/v2.4/architecture/archi_perspectives/service_layer.md new file mode 100644 index 00000000000..845691364e2 --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/service_layer.md @@ -0,0 +1,82 @@ +--- +group: architecture-guide +title: Service layer +menu_title: Service layer +redirect_to: https://developer.adobe.com/commerce/php/architecture/layers/service/ +status: migrated +--- + +## What is a Service layer? + +The service layer provides a bridge between the presentation layer and the domain layer and resource-specific data. +This is implemented using *service contracts*, which are defined using [PHP](https://glossary.magento.com/php) interfaces. + +In general, the service layer: + +* Resides below the presentation layer and above the domain layer. + +* Contains service contracts, which define how the implementation will behave. + +* Provides an easy way to access the REST/SOAP [API](https://glossary.magento.com/api) framework code (which also resides above the service contracts). You can bind service contracts to web service APIs in configuration files --- no coding required. + +* Provides a stable API for other modules to call into. + +## Who accesses the service layer? + +All calls from web service interfaces, or users working with your [storefront](https://glossary.magento.com/storefront) (that is, controller-initiated requests), are typically routed through the service layer. +We strongly encourage the use of service contracts to call business logic. + +External applications can make requests for business logic with simple SOAP and REST calls. +With some simple [XML](https://glossary.magento.com/xml) or JSON, you can expose the service layer's PHP API and make it accessible to REST or SOAP web services. +Once implemented, a web service can make a single API call and return an information-rich data structure. + +[Service contract](https://glossary.magento.com/service-contract) clients include: + +* Controllers (initiated by actions of users of the storefront) + +* Web services (SOAP and REST API calls) + +* Other Magento modules through service contracts + +## Service contract anatomy + +The service contract of a [module](https://glossary.magento.com/module) is defined by the set of interfaces in the module's `/Api` directory. + +This directory contains: + +* Service interfaces in the `/Api` [namespace](https://glossary.magento.com/namespace) of the module ([Catalog API][catalog-api]). + +* Data (or *entity*) interfaces in the `Api/Data` directory ([Catalog API/Data][catalog-api-data]). + Data entities* are data structures passed to and returned from service interfaces. + + Files in the data directory contain `get()` and `set()` methods for entries in the entity table and extension attributes. + +Typically, service contracts provide three distinct types of interfaces: + +* Repository interfaces + +* Management interfaces + +* [Metadata](https://glossary.magento.com/metadata) interfaces + +However, there is no requirement that service contracts conform to all three patterns. + +## Advantages of service contracts + +Service contracts allow you to add a new customer [extension](https://glossary.magento.com/extension) that adds or changes business logic-level resource models without breaking the system. + +This is done using the *<preference>* element in a custom module's [dependency injection](https://glossary.magento.com/dependency-injection) configuration file (`di.xml`) file. + +The `di.xml` file specifies which PHP class to use for the interface `Magento\Customer\Api\CustomerRepositoryInterface`. + +Another module can change this interface file by specifying a different class name. +However, if the client code uses the interface definition only, no class change is necessary. + +{:.ref-header} +Related topics + +* [Architectural diagrams]({{page.baseurl}}/architecture/archi_perspectives/arch_diagrams.html) +* [Architectural layers overview]({{page.baseurl}}/architecture/archi_perspectives/ALayers_intro.html) + +[catalog-api]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Catalog/Api +[catalog-api-data]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Catalog/Api/Data diff --git a/src/guides/v2.4/architecture/archi_perspectives/tech-vision.md b/src/guides/v2.4/architecture/archi_perspectives/tech-vision.md deleted file mode 120000 index fa8e268adb5..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/tech-vision.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/architecture/archi_perspectives/tech-vision.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/tech-vision.md b/src/guides/v2.4/architecture/archi_perspectives/tech-vision.md new file mode 100644 index 00000000000..00988bcad70 --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/tech-vision.md @@ -0,0 +1,17 @@ +--- +group: architecture-guide +title: Magento technical vision +redirect_to: https://developer.adobe.com/commerce/php/architecture/technical-vision/ +status: migrated +--- + +The Magento technical vision is a collection of documents that describe the desired state of the Magento platform. + +Each individual technical vision document relates to a set of modules that are logically grouped together. Individual documents typically describe a component's place in the system, its architecture, extension scenarios and a list of invariants that must be preserved at all times during component refactoring or extension to ensure consistency. + +Learn more about the [Magento web API][]. +See the [Magento Coding Standards][] for information about writing clean, readable code. + + +[Magento web API]: {{page.baseurl}}/get-started/bk-get-started-api.html +[Magento Coding Standards]: {{page.baseurl}}/coding-standards/bk-coding-standards.html diff --git a/src/guides/v2.4/architecture/archi_perspectives/third-party-libs.md b/src/guides/v2.4/architecture/archi_perspectives/third-party-libs.md deleted file mode 120000 index f854128a54f..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/third-party-libs.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/architecture/archi_perspectives/third-party-libs.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/third-party-libs.md b/src/guides/v2.4/architecture/archi_perspectives/third-party-libs.md new file mode 100644 index 00000000000..9e39fa35b56 --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/third-party-libs.md @@ -0,0 +1,13 @@ +--- +group: architecture-guide +title: Third-party libraries +menu_title: Third-party libraries +redirect_to: https://developer.adobe.com/commerce/php/architecture/modules/libraries/ +status: migrated +--- + +Magento depends on a set of external libraries. You can use [Composer](https://glossary.magento.com/composer) to manage these dependencies. Composer downloads all of the external libraries that are included in its main configuration file and installs them under its default installation directory (`vendor/`). Third-party libraries include the Zend framework files and the Symfony libraries. + +There are some required libraries that Composer does not load. These reside in `lib/` and include [JavaScript](https://glossary.magento.com/javascript) libraries (none of which are loaded by Composer) and a few [PHP](https://glossary.magento.com/php) libraries. (You can also use Composer to manage dependencies between various components within Magento.) + +If you are extending your Magento [storefront](https://glossary.magento.com/storefront) to interact with third-party applications, you might need to include additional external libraries. These external libraries can be as simple as a wrapper for an [API](https://glossary.magento.com/api) of a third-party product you are integrating with your Magento storefront, or an entire framework. diff --git a/src/guides/v2.4/architecture/archi_perspectives/webapi-vision.md b/src/guides/v2.4/architecture/archi_perspectives/webapi-vision.md deleted file mode 120000 index 46493f2a1c3..00000000000 --- a/src/guides/v2.4/architecture/archi_perspectives/webapi-vision.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/architecture/archi_perspectives/webapi-vision.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/archi_perspectives/webapi-vision.md b/src/guides/v2.4/architecture/archi_perspectives/webapi-vision.md new file mode 100644 index 00000000000..f4087aa83b3 --- /dev/null +++ b/src/guides/v2.4/architecture/archi_perspectives/webapi-vision.md @@ -0,0 +1,117 @@ +--- +group: architecture-guide +title: Technical vision - Web API +redirect_to: https://developer.adobe.com/commerce/php/architecture/technical-vision/web-api/ +status: migrated +--- + +Web API is crucial for Magento because of the need to integrate with order management, customer management, and other enterprise management software systems. + +There are many headless Magento installations in which a merchant partially uses Magento functionality, while the other pieces of an eCommerce website are provided by other systems. + +See [more details](https://en.wikipedia.org/wiki/Web_API) about the importance of web APIs in modern web applications. + +## Components Dependencies + +The following diagram shows Web API component dependencies. + +![Web API components dependencies]({{ site.baseurl }}/common/images/coding-standards/webapi-components-dependencies.png) + +## High-level Architecture + +The following image provides an overview of how Web API requests are processed. + +![Web API request processing overview]({{ site.baseurl }}/common/images/coding-standards/webapi-request-processing-high-level-overview.png) + +## Extension Scenarios + +### Declare a new REST and SOAP endpoint + +Any [service contract]({{ page.baseurl }}/extension-dev-guide/service-contracts/service-contracts.html) can be [exposed as REST and SOAP]({{ page.baseurl }}/extension-dev-guide/service-contracts/service-to-web-service.html) endpoints via configuration in a module's `webapi.xml` file. + +### Declare a new GraphQL query/mutation + +1. Create custom resolvers. +1. Declare a custom query/mutation and all necessary types in `schema.graphqls`. + +If the target module is called `MyModule`, then create the resolvers and configuration files in a new module called `MyModuleGraphQl`. + +See the [GraphQL documentation]({{ page.baseurl }}/graphql/index.html) for more information. + +### Add a custom authentication mechanism + +1. Provide a custom implementation of `\Magento\Authorization\Model\UserContextInterface` that verifies a user's identity using a custom authentication mechanism. +1. Declare custom user context in the composite user context for the target area(s) (`webapi_rest`, `webapi_soap`, `webapi_graphql`) : + +```xml + + + + + Vendor\Module\Model\Authentication\CustomUserContext + 100 + + + + +``` + +### Modify the schema of an existing SOAP and REST endpoint + +The recommended approach for modifying an interface is to define a new endpoint. If you simply modify the schema, you might break existing integrations or extensions. + +To extend an interface, use [extension attributes]({{ page.baseurl }}/extension-dev-guide/attributes.html). + +### Modify the schema of an existing GraphQL query + +1. Add a `schema.graphqls` file to the `GraphQl` module. Magento merges this file with configurations from other modules using the same merge rules as other types of configuration. + +1. Write any necessary plugins for existing resolvers related to the query, or create a custom resolver and enable it via override in `schema.graphqls` + +## Model Consistency Constraints + +Any new design related to Web API must satisfy the following constraints to keep the model consistency. + +### General + +1. REST and SOAP must be designed for Admin Panel integrations and be equal in terms of coverage. GraphQL should be designed for storefront scenarios. +1. Any identifier exposed in guest APIs (for example, cart ID) must be masked to prevent the possibility of unauthorized access to the data of other guest users. +1. Authentication must be done via `\Magento\Authorization\Model\UserContextInterface`. +1. Customer-specific identifiers (such as customer ID or cart ID) must be deducted from the record of the successfully authenticated customer. They must not be accepted via request parameters. +1. All new web API endpoints must be covered with web API functional tests. + * For REST and SOAP, by default, the same test will be executed in the scope of different continuous integration jobs. The base class for REST and SOAP tests is `\Magento\TestFramework\TestCase\WebapiAbstract` + * The base class for GraphQL tests is: `\Magento\TestFramework\TestCase\GraphQlAbstract` +1. Web API requests must be processed by custom front controllers with optimized routing to prevent the admin and storefront areas from executing routers. +1. Web API schema should be strictly typed. (All complex types should eventually be resolved to scalar types.) +1. Authentication parameters must be passed via headers. +1. Throttling must be configured by the system integrator. It is not supported by Magento +1. Internal server errors must be masked and never shown to the user in production mode. In developer mode, original exceptions must never be masked and should be displayed along with the related stacktrace. +1. Pagination must be supported by all list operations. + +### GraphQL + +1. Unlimited nesting should be supported during requests for related entities. (For example, get Order => Order Items => Products => Related Products) +1. Field filtration must be performed with SQL queries. Do not filter on the application layer after you've fetched all possible fields. +1. Third-party customizations must be done separately for Service Contracts and for GraphQL +1. For modularity purposes, GraphQL configuration must be declared in a separate module. For example, to expose GraphQL for the module `MyModule`, you must create the `schema.graphqls` file in the `MyModuleGraphQl` module. +1. GraphQL is primarily designed for store-front, one-page apps and mobile applications. It supports token and cookie authentication, as well as guest access to public queries +1. All queries must return the 200 HTTP status code. If an error occurs, return the error in the response body. A 500 status code is allowed when an exception occurs when generating a schema, but not during requests. +1. The Store code should be passed via headers. + +### REST + +1. The resource URL should be versioned (for example: V1). The version must be specified in the following format: `V\d.+` +1. Resource names in a URL should be in plural form (for example: products, carts) +1. ID parameters for operations on entities should be part of the resource URL (for example: /V1/products/**:sku** ) +1. POST should be used to create an entity. + PUT should be used to update an entity. + PATCH should be used to patch (update only selected fields) an update to an entity or entities. +1. REST is designed for system integrations, mobile app integrations, as well as for one-page apps. It supports tokens, cookies, and OAuth 1.0 with token exchange. It also supports guest access to public resources. +1. Responses must return responses with standard [HTTP status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes). +1. The store code must be passed with a URL. For example `GET /rest/frenchStoreView/V1/products`. Persistence operations that should be performed for all stores at once should have 'all' store code in the URL. + +### SOAP + +1. SOAP is designed for systems integration. It supports token authentication for customers and admins, as well as no authentication for anonymous service methods. Cookie authentication and OAuth 1.0 are not supported. +1. The schema is available in the form of a WSDL for all exposed services. +1. All requests must return the 200 HTTP status code. If an error occurs, return the error in the response. diff --git a/src/guides/v2.4/architecture/bk-architecture.md b/src/guides/v2.4/architecture/bk-architecture.md deleted file mode 120000 index 98958620ab6..00000000000 --- a/src/guides/v2.4/architecture/bk-architecture.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/architecture/bk-architecture.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/bk-architecture.md b/src/guides/v2.4/architecture/bk-architecture.md new file mode 100644 index 00000000000..c68932fb512 --- /dev/null +++ b/src/guides/v2.4/architecture/bk-architecture.md @@ -0,0 +1,15 @@ +--- +group: architecture-guide +title: Architecture Guide +landing-page: Architecture +menu_title: Get Started +menu_node: parent +redirect_to: https://developer.adobe.com/commerce/php/architecture/ +status: migrated +--- + +The Architecture Guide provides a high-level introduction and view of the Magento product. + +The Magento platform and components are explained from the perspective of several audiences: merchants, web store developers (frontend developers), [extension](https://glossary.magento.com/extension) developers, system admins, installers, and integrators. + +More detailed information about building online stores, using the Magento APIs, installing, configuring, and extending the platform is included in other books in our [Magento library]({{site.baseurl}}/index.html). \ No newline at end of file diff --git a/src/guides/v2.4/architecture/extensibility.md b/src/guides/v2.4/architecture/extensibility.md deleted file mode 120000 index bc859dbdb87..00000000000 --- a/src/guides/v2.4/architecture/extensibility.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/architecture/extensibility.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/extensibility.md b/src/guides/v2.4/architecture/extensibility.md new file mode 100644 index 00000000000..ae77f7f57c2 --- /dev/null +++ b/src/guides/v2.4/architecture/extensibility.md @@ -0,0 +1,118 @@ +--- +group: architecture-guide +title: Extensibility and modularity +menu_title: Extensibility and modularity +redirect_to: https://developer.adobe.com/commerce/php/architecture/modules/ +status: migrated +--- + +## Overview + +Product *extensibility* describes how easy it is to expand a product's feature set. An extensible product has been designed from its earliest stages for customization and enhancement. Extensible products are designed for ease in expanding your installation's feature set, enriching current features, and integrating with third-party software. + +Maximizing extensibility has been our goal through all aspects of Magento development. Core tasks such as shipping are packaged as discrete modules, and you expand your features by installing modules that you either buy from third-party vendors or create yourself. While logic specific to each [shipping carrier](https://glossary.magento.com/shipping-carrier) is packaged in a discrete module, you can easily add or delete shipping providers by simply adding or deleting modules. The Magento Framework provides common logic to control routing and other core application functions. + +## What makes a product extensible? + +*Magento extensibility* describes the product's built-in ability for developers and merchants to routinely extend their storefront's capabilities as their business grows. + +The following factors significantly affect extensibility. + +### Architectural principles that guide product structure + +Central to the Magento model of software development is the practice of replacing or extending core code rather than editing it. This strategy supports your efforts to maintain the integrity of the tested code we provide while still extensively customizing your [storefront](https://glossary.magento.com/storefront). + +### Reliance on popular design patterns + +Reliance on known architectural and programming structures helps [PHP](https://glossary.magento.com/php) developers orient themselves to the specific development issues that affect coding in a particular product ecosystem. This can reduce the learning curve for new Magento developers. + +Design patterns are time-tested, widely recognized software architecture constructs. Magento product architecture incorporates many well known patterns, but Model-View-Controller (MVC) holds particular interest for extension developers. + +### Modularity + +The concept of the *module* is the heart of Magento [extension](https://glossary.magento.com/extension) development, and modular design of software components (in particular, modules, themes, and language packages) is a core architectural principle of the product. Self-contained modules of discrete code are organized by feature, thereby reducing each module's external dependencies. + +If a [module](https://glossary.magento.com/module) is self-contained, then you can modify or replace it without affecting other areas of the code. This *loose coupling* of software components reduces the ripple effects throughout your code base of changing code. + + See the [PHP Developer Guide][] for detailed instructions on how to create modules. + +### Rich product ecosystem + +The wider Magento ecosystem provides an extensive community and rich third-party marketplace for extensions. Visit [Commerce Marketplace][] for an overview of the many modules and themes available for download and to buy modules and [theme](https://glossary.magento.com/theme) packages, which offer more possibilities for extending your [storefront](https://glossary.magento.com/storefront). + +### Open-source software to create and manage extensions + +Magento is built on open-source technologies, created for the development community. For example, it uses [Composer](https://glossary.magento.com/composer) to manage dependencies. See [Technology Stack]({{page.baseurl}}/install-gde/system-requirements.html) for a complete list of technologies used. + +### Coding standards + +Adherence to standard best practices for [PHP](https://glossary.magento.com/php) and [JavaScript](https://glossary.magento.com/javascript) code ensures that the code base is sound. Magento has adopted most of the PSR2 Coding Standards for PHP. See [Coding Standards]({{page.baseurl}}/coding-standards/bk-coding-standards.html) for more information. + +### Upgrade and versioning strategies + +Magento has well-defined upgrade and versioning strategies that can help you avoid any problems with software component dependencies. Add modules after confirming that the [module](https://glossary.magento.com/module) version is compatible with the Magento Framework version. + +### Web APIs + +Magento or third-party services can be configured as a web [API](https://glossary.magento.com/api) (REST or SOAP) with some simple [XML](https://glossary.magento.com/xml). You can use these services to integrate your Magento installation into third-party applications, such as CRM (Customer Relationship Management), ERP (Enterprise Resource Planning) back office systems, and [CMS](https://glossary.magento.com/cms) (Content Management Systems). + +See [Getting Started with Magento Web APIs][] for more information. + +### Flexible attribute types + +You can enhance your storefront by adding unique attributes to the default product attributes. For example, you might need to add a new attribute to describe a product, such as texture or an industry-specific rating. You can add these attributes from the Admin, and the storefront displays them. + +|Attribute type|Displayed by storefront?| +|--- |--- | +|EAV|no| +|Custom|yes| +|Extension|no| +{:style="table-layout:auto"} + +Attribute types fall into three general categories: + +* **EAV (Entity-Attribute-Value) attributes** are site-specific attributes that you can define for a local site using the [Admin](https://glossary.magento.com/magento-admin). + +* **Custom attributes** are a subset of EAV attributes. Objects that use EAV attributes typically store values in several MySQL tables. The Customer and [Catalog](https://glossary.magento.com/catalog) modules use EAV attributes. + +* **Extension attributes** often use more [complex data](https://glossary.magento.com/complex-data) types than custom attributes. These attributes do not appear in the storefront. Extension attributes are introduced by modules. + +See [PHP Developer Guide][] for information about using attributes. + +### Service contracts, dependency injection, and dependency inversion + +*Service contracts* provide a new way to access public API endpoints. These PHP interfaces offer robust, stable extension points to which clients can connect. Service contracts define the endpoints that function as a module's public API. Defining these endpoints is an essential part of adding a module. + +Service contracts are discussed throughout the Magento documentation set. See [Service layer][] for a high-level introduction. See [PHP Developer Guide][] for a more detailed discussion of service contracts and dependency injection. + +Magento implements *dependency injection* along with service contracts. Dependency injection provides a mechanism for changing a module's behavior without altering the client or understanding nitty-gritty details of implementation. Both dependency injection and its related concept *dependency inversion* support Magento's fundamental architectural principles of modularity and ease-of-extensibility. They strongly encourage basic coding practices that support the loose coupling of software modules. + +See [PHP Developer Guide][] for information on both dependency injection and service contracts. + +### Plug-ins + +Plug-ins, like modules, are a mechanism for adding features to the core Magento product. Plug-ins enable you to make changes to the behavior of any public method in a Magento class. You can consider it a form of extension that uses the `Plugin` class. + +Plug-ins are also called *interceptors*. Applications use the [plug-in](https://glossary.magento.com/plug-in) pattern to change method behavior without modifying the actual class. Plug-ins can typically intercept method processing before or after the method runs, or only when the method throws an [exception](https://glossary.magento.com/exception). + +See [Plug-ins][] in [PHP Developer Guide][] for information on declaring and prioritizing plug-ins. + +{:.ref-header} +Related topics + +[Architectural basics]({{page.baseurl}}/architecture/archi_perspectives/ABasics_intro.html) + +[Global features that support extensibility]({{page.baseurl}}/architecture/global_extensibility_features.html) + +[Ease of frontend customization]({{page.baseurl}}/architecture/frontend_custom_strategies.html) + +[Extensibility and modularity]({{page.baseurl}}/architecture/extensibility.html) + + +[PHP Developer Guide]: {{page.baseurl}}/extension-dev-guide/bk-extension-dev-guide.html +[Commerce Marketplace]: https://marketplace.magento.com/ +[Technology Stack]: {{page.baseurl}}/install-gde/system-requirements.html +[Plug-ins]: {{page.baseurl}}/extension-dev-guide/plugins.html +[Service layer]: {{page.baseurl}}/architecture/archi_perspectives/service_layer.html +[Getting Started with Magento Web APIs]: {{page.baseurl}}/get-started/bk-get-started-api.html +[Coding Standards]: {{page.baseurl}}/coding-standards/bk-coding-standards.html \ No newline at end of file diff --git a/src/guides/v2.4/architecture/frontend_custom_strategies.md b/src/guides/v2.4/architecture/frontend_custom_strategies.md deleted file mode 120000 index c3305b27732..00000000000 --- a/src/guides/v2.4/architecture/frontend_custom_strategies.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/architecture/frontend_custom_strategies.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/frontend_custom_strategies.md b/src/guides/v2.4/architecture/frontend_custom_strategies.md new file mode 100644 index 00000000000..afb27f41e53 --- /dev/null +++ b/src/guides/v2.4/architecture/frontend_custom_strategies.md @@ -0,0 +1,107 @@ +--- +group: architecture-guide +title: Ease of frontend customization +redirect_to: https://developer.adobe.com/commerce/php/architecture/basics/frontend-customization/ +status: migrated +--- + +## Overview {#m2arch-whatis-overview} + +The Magento [frontend](https://glossary.magento.com/frontend) is designed to optimize [storefront](https://glossary.magento.com/storefront) customization, with highly extensible *themes* being the central customization mechanism. + +Merchants are encouraged to use Magento components and themes to extend and transform the appearance of their storefronts. + +## Storefront customization tools + +Magento provides several tools to help you significantly jumpstart the storefront customization process: + +* Magento Blank [Theme](https://glossary.magento.com/theme) + +* [Overview of UI components][] + +* [Admin Pattern Library][] + +See the [Frontend Developer Guide][] for information on creating your themes. + +### Magento Blank theme + +The Magento blank theme template provides a launchpad for storefront customization. You can use this boilerplate as a robust starting point for your own theme development. + +### Magento UI components + +Using Magento standard coding and styling tools can help: + +* enforce for consistency in design across your storefronts +* simplify (and speed up) the design process + +This component [library](https://glossary.magento.com/library) contains standard reusable components for form features, such as fields and buttons, and navigation elements. The Magento UI library is a set of generic web components and Magento-specific patterns, which simplifies the process of Magento theme creation and customization. + +See [Overview of UI components][] for details about this library. + +### Admin pattern library + +A *pattern library* is a collection of user interface (UI) design patterns that can be re-used in locations throughout your product installation. The [Admin Pattern Library][] defines examples of components that administrators working with the storefront can use. + +Form elements included in the [Admin](https://glossary.magento.com/magento-admin) pattern library include: + +* address form +* button bar +* container +* tabs +* sign-in form + +Users of the default Magento storefront encounter examples of these form elements throughout the product. These patterns provide a valuable language of software components (and indirectly, user experiences) for [extension](https://glossary.magento.com/extension) developers and administrators. + +The Magento [Admin](https://glossary.magento.com/admin) Pattern library is built on the Less preprocessor and implemented as a [module](https://glossary.magento.com/module). You can download a free, current version of this module from [Commerce Marketplace](https://marketplace.magento.com/). + +See [Admin Pattern Library][] for more information on using this library. + +## Storefront customization levels + +These four levels of potential storefront customization are listed in order to increase complexity. + +### Extend Magento-Provided CSS + +Magento supplies a default [theme](https://glossary.magento.com/theme) and a Less-based CSS. You can substantially change a storefront using CSS only. This uncomplicated strategy might suit projects with a limited budget, or might interest developers who create different skins for a site. A small business enter this process of storefront customization by buying a third-party developed theme from Commerce Marketplace to extend the default values. + +### Replace PHTML template files + +In addition to extending the default CSS, you can generate different HTML [markup](https://glossary.magento.com/markup). For example, you might need to add a missing CSS class name, or add an extra `
        ` tag to achieve some visual effect. You might also need to tweak some [JavaScript](https://glossary.magento.com/javascript/) to cope with different HTML markup. This change is more demanding than simply extending Magento CSS, but is still within the grasp of smaller projects and leaner teams. + +### Replace Magento-Provided CSS + +Rather than edit the default CSS provided by Magento, you might decide to replace all the default storefront CSS code with your own. This strategy avoids tying a project to the Magento-provided CSS, but puts a greater burden on project development and integration. It also allows the use of different CSS tools or technologies not provided with Magento. Partners who build their own set of CSS libraries could reuse these libraries on different customer projects. (These unique CSS libraries may help differentiate a partner from others in the market.) + +In addition to replacing CSS files, you might need to replace small amounts of HTML and JavaScript. + +### Replace Magento-Provided CSS, HTML, and JavaScript + +Delivering a sharply different shopping experience than the default Magento installation provides is a more substantial task. However, the tradeoff might be a more complicated experience integrating additional extensions into your installation in the future. + +{:.bs-callout-tip} + Any customization of your storefront will work optimally, and provide the easiest path for later upgrades, if you follow the best practice of consistently compartmentalizing code by type. For example, keep all HTML in [PHTML](https://glossary.magento.com/phtml) files; keep all JavaScript in JavaScript files. + +{:.ref-header} +Related topics + +[Extensibility and modularity][] + +[Global extensibility features][] + +[Admin Pattern Library][] + +[Overview of UI components][] + +[Frontend Developer Guide][] + +[JavaScript Developer Guide][] + + + +[Extensibility and modularity]:{{page.baseurl}}/architecture/extensibility.html +[Global extensibility features]: {{page.baseurl}}/architecture/global_extensibility_features.html +[Admin Pattern Library]: {{page.baseurl}}/pattern-library/bk-pattern.html +[Overview of UI components]: {{page.baseurl}}/ui_comp_guide/bk-ui_comps.html +[Frontend Developer Guide]: {{page.baseurl}}/frontend-dev-guide/bk-frontend-dev-guide.html +[JavaScript Developer Guide]: {{page.baseurl}}/javascript-dev-guide/bk-javascript-dev-guide.html +[Commerce Marketplace]: https://marketplace.magento.com/ diff --git a/src/guides/v2.4/architecture/global_extensibility_features.md b/src/guides/v2.4/architecture/global_extensibility_features.md deleted file mode 120000 index 8eb835ce7b1..00000000000 --- a/src/guides/v2.4/architecture/global_extensibility_features.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/architecture/global_extensibility_features.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/global_extensibility_features.md b/src/guides/v2.4/architecture/global_extensibility_features.md new file mode 100644 index 00000000000..01535b08282 --- /dev/null +++ b/src/guides/v2.4/architecture/global_extensibility_features.md @@ -0,0 +1,96 @@ +--- +group: architecture-guide +title: Global features that support extensibility +redirect_to: https://developer.adobe.com/commerce/php/architecture/modules/ +status: migrated +--- + +## Overview + +Essential qualities foster extensibility throughout the entire set of Magento components. This discussion focuses on: + +* Modularity +* Reliance on popular design patterns +* Coding standards +* Flexible attribute types +* Web APIs +* Service contracts and [dependency injection](https://glossary.magento.com/dependency-injection) +* Plug-ins +* Declarative schema + +### Modularity + +The concept of the *module* is the heart of Magento [extension](https://glossary.magento.com/extension) development, and modular design of software components (in particular, modules, themes, and language packages) is a core architectural principle of the product. Self-contained modules of discrete code are organized by feature, thereby reducing each module's external dependencies. + +If a [module](https://glossary.magento.com/module) is self-contained, then you can modify or replace it without affecting other areas of the code. This *loose coupling* of software components reduces the ripple effects throughout your code base of changing code. + + See the [PHP Developer Guide]({{ page.baseurl }}/extension-dev-guide/bk-extension-dev-guide.html) for detailed instructions on how to create modules. + +### Reliance on popular design patterns + +Reliance on known architectural and programming structures helps [PHP](https://glossary.magento.com/php) developers orient themselves to the specific development issues that affect coding in a particular product ecosystem. This can reduce the learning curve for new Magento developers. + +Design patterns are time-tested, widely recognized software architecture constructs. Magento product architecture incorporates many well known patterns, but Model-View-Controller (MVC) holds particular interest for extension developers. + +### Coding standards + +Magento developers should familiarize themselves with our coding standards, best practices, and conventions, especially standards for PHP file formatting, coding style, and file naming conventions. Magento standards are based on PSR2 Coding Standards. + +See [Coding Standards]({{page.baseurl}}/coding-standards/bk-coding-standards.html) for guidelines and requirements. + +### Rich product ecosystem + +The wider Magento ecosystem provides an extensive community and rich third-party marketplace for extensions. Visit [Commerce Marketplace](https://marketplace.magento.com/) for an overview of the many modules and themes available for download and to buy modules and [theme](https://glossary.magento.com/theme) packages, which offer more possibilities for extending your [storefront](https://glossary.magento.com/storefront). + +### Flexible attribute types + +You can enhance your storefront by adding unique attributes to the default product attributes. For example, you might need to add a new attribute to describe a product, such as texture or an industry-specific rating. You can add these attributes from the Admin, and the storefront displays them. + +Attribute type | Displayed by storefront? +--- | --- +EAV | No +Custom | Yes +Extension | No + +Attribute types fall into three general categories: + +* **EAV (Entity-Attribute-Value) attributes** are site-specific attributes that you can define for a local site using the [Admin](https://glossary.magento.com/magento-admin). + +* **Custom attributes** are a subset of EAV attributes. Objects that use EAV attributes typically store values in several MySQL tables. The Customer and [Catalog](https://glossary.magento.com/catalog) modules use EAV attributes. + +* **Extension attributes** often use more [complex data](https://glossary.magento.com/complex-data) types than custom attributes. These attributes do not appear in the storefront. Extension attributes are introduced by modules. + +See [PHP Developer Guide]({{page.baseurl}}/extension-dev-guide/bk-extension-dev-guide.html) for information about using attributes. + +### Web APIs + +Magento or third-party services can be configured as a web [API](https://glossary.magento.com/api) (REST or SOAP) with some simple [XML](https://glossary.magento.com/xml). You can use these services to integrate your Magento installation into third-party applications, such as CRM (Customer Relationship Management), ERP (Enterprise Resource Planning) back office systems, and [CMS](https://glossary.magento.com/cms) (Content Management Systems). + +See [Getting Started with Magento Web APIs]({{page.baseurl}}/get-started/bk-get-started-api.html) for more information. + +### Service contracts, dependency injection, and dependency inversion + +*Service contracts* provide a new way to access public API endpoints. These PHP interfaces offer robust, stable extension points to which clients can connect. Service contracts define the endpoints that function as a module's public API. Defining these endpoints is an essential part of adding a module. + +Service contracts are discussed throughout the Magento documentation set. See [Service layer]({{page.baseurl}}/architecture/archi_perspectives/service_layer.html) for a high-level introduction. See [PHP Developer Guide]({{page.baseurl}}/extension-dev-guide/bk-extension-dev-guide.html) for a more detailed discussion of service contracts and dependency injection. + +Magento implements *dependency injection* along with service contracts. Dependency injection provides a mechanism for changing a module's behavior without altering the client or understanding nitty-gritty details of implementation. Both dependency injection and its related concept *dependency inversion* support Magento's fundamental architectural principles of modularity and ease-of-extensibility. They strongly encourage basic coding practices that support the loose coupling of software modules. + +See [PHP Developer Guide]({{page.baseurl}}/extension-dev-guide/bk-extension-dev-guide.html) for information on both dependency injection and service contracts. + +### Plug-ins + +Plug-ins, like modules, are a mechanism for adding features to the core Magento product. Plug-ins enable you to make changes to the behavior of any public method in a Magento class. You can consider it a form of extension that uses the `Plugin` class. + +Plug-ins are also called *interceptors*. Applications use the [plug-in](https://glossary.magento.com/plug-in) pattern to change method behavior without modifying the actual class. Plug-ins can typically intercept method processing before or after the method runs, or only when the method throws an [exception](https://glossary.magento.com/exception). + +See [Plug-ins]({{page.baseurl}}/extension-dev-guide/plugins.html) in [PHP Developer Guide]({{page.baseurl}}/extension-dev-guide/bk-extension-dev-guide.html) for information on declaring and prioritizing plug-ins. + +### Declarative schema + +[Declarative schema]({{page.baseurl}}/extension-dev-guide/declarative-schema/index.html) allows developers to declare the final desired state of the database as it pertains to their modules. The system adjusts to database changes automatically without performing redundant operations. Developers are no longer forced to write installation and upgrade scripts for each new version. In addition, declarative schema allows data be deleted when a module is uninstalled. + +{:.ref-header} +Related topic + +[Extensibility and modularity]({{page.baseurl}}/architecture/extensibility.html) diff --git a/src/guides/v2.4/architecture/security_intro.md b/src/guides/v2.4/architecture/security_intro.md deleted file mode 120000 index df56a02f61d..00000000000 --- a/src/guides/v2.4/architecture/security_intro.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/architecture/security_intro.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/security_intro.md b/src/guides/v2.4/architecture/security_intro.md new file mode 100644 index 00000000000..0320c59c27c --- /dev/null +++ b/src/guides/v2.4/architecture/security_intro.md @@ -0,0 +1,50 @@ +--- +group: architecture-guide +subgroup: Architectural Basics +title: Security overview +menu_title: Security +menu_order: +redirect_to: https://developer.adobe.com/commerce/php/architecture/basics/security/ +status: migrated +--- + +The security of your data and digital experiences is our priority. To better protect {{site.data.var.ee}} and {{site.data.var.ce}} installations from the physical layer up, we have implemented hundreds of processes and controls to help us comply with [industry-accepted standards][1], regulations, and certifications. To help protect installations from the software layer down, we build in security measures that are based on the [Adobe Secure Product Lifecyle][2]. + +Although there is no single way to eliminate all security risks, there are many steps you can take to harden your installations and make them a less attractive target for bad actors. The [Security Best Practices Guide][3] offers insight and practical guidelines to help protect all installations from security incidents. + +## Examples of built-in security measures + +### Enhanced password management + +Magento has strengthened the hashing algorithms (SHA-256) used in password management. Magento now supports Argon2ID13 through the PHP sodium extension, which requires the libsodium library version 1.0.13 or higher. + +### Improved prevention of cross-site scripting (XSS) attacks by making escaped data the default + +The Magento Framework has adopted conventions that regulate the escaping of data in output. These conventions include the ability to escape output for [HTML](https://glossary.magento.com/html) pages (HTML, JSON, and JavaScript) and email. Where possible, escaping is transparent to client code. See [Security measures against XSS attacks]({{page.baseurl}}/extension-dev-guide/xss-protection.html) in the [Frontend](https://glossary.magento.com/frontend) Developer Guide. + +### More flexible file system ownership and permissions + +Starting in version 2.0.6, Magento no longer explicitly sets file system permissions. Instead, we recommend that certain files and directories be writable in a development environment and read-only in a production environment. + +To provide you with a simple way to restrict access to the file system in production, we provide the flexibility for you to further restrict those permissions using a [umask](https://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html). + +For an overview, see [Overview of ownership and permissions]({{page.baseurl}}/install-gde/prereq/file-sys-perms-over.html). + +For details about ownership and permissions in development and production, see [Magento ownership and permissions in development and production]({{page.baseurl}}/config-guide/prod/prod_file-sys-perms.html). + +### Improved prevention of clickjacking exploits + +Magento safeguards your store from clickjacking attacks by using an X-Frame-Options HTTP request header. For more information, see [X-Frame-Options header]({{page.baseurl}}/config-guide/secy/secy-xframe.html). + +### Use of non-default Admin URL + +A simple [Admin](https://glossary.magento.com/magento-admin) [URL](https://glossary.magento.com/url) (like `admin` or `backend`) makes it easy to target attacks on specific locations using automated password guessing. To prevent against this type of attack, Magento by default creates a random Admin URI when you install the product. The CLI command `php bin/magento info:adminuri` is provided so that you can see the URI if you forget it. You can also use the CLI to change this URI. Although the use of a non-default admin URL will not secure the site, its use will help prevent large-scale automated attacks. See [Display or change the Admin URI]({{page.baseurl}}/install-gde/install/cli/install-cli-adminurl.html) in Configuration Guide for more information. + +{:.ref-header} +Related topics + +[Configuration Guide]({{page.baseurl}}/config-guide/bk-config-guide.html) + +[1]: https://docs.magento.com/m2/ee/user_guide/stores/compliance-industry.html +[2]: https://www.adobe.com/security/engineering.html +[3]: https://www.adobe.com/content/dam/acom/en/security/pdfs/Adobe-Magento-Commerce-Best-Practices-Guide.pdf diff --git a/src/guides/v2.4/architecture/storefront_customization.md b/src/guides/v2.4/architecture/storefront_customization.md deleted file mode 120000 index 5a3f5a5b56d..00000000000 --- a/src/guides/v2.4/architecture/storefront_customization.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/architecture/storefront_customization.md \ No newline at end of file diff --git a/src/guides/v2.4/architecture/storefront_customization.md b/src/guides/v2.4/architecture/storefront_customization.md new file mode 100644 index 00000000000..b2f18980236 --- /dev/null +++ b/src/guides/v2.4/architecture/storefront_customization.md @@ -0,0 +1,43 @@ +--- +group: architecture-guide +title: Storefront customization strategies +menu_title: Storefront customization strategies +redirect_to: https://developer.adobe.com/commerce/php/architecture/basics/frontend-customization/ +status: migrated +--- + +## Overview + +We can generalize about the range of [storefront](https://glossary.magento.com/storefront) customizations that the Magento supports. This range spans the simplest customizations, which involve only small additions to the default Magento storefront settings, to a complete replacement of Magento-provided [HTML](https://glossary.magento.com/html) and [CSS](https://glossary.magento.com/css). + +## Storefront customization levels + +These four levels of potential storefront customization are listed in order to increase complexity. + +### Extend Magento-Provided CSS + +Magento supplies a default [theme](https://glossary.magento.com/theme) and a Less-based CSS. You can substantially change a storefront using CSS only. This uncomplicated strategy might suit projects with a limited budget, or might interest developers who create different skins for a site. A small business enter this process of storefront customization by buying a third-party developed theme from Commerce Marketplace to extend the default values. + +### Replace PHTML template files + +In addition to extending the default CSS, you can generate different HTML [markup](https://glossary.magento.com/markup). For example, you might need to add a missing CSS class name, or add an extra `
        ` tag to achieve some visual effect. You might also need to tweak some [JavaScript](https://glossary.magento.com/javascript) to cope with different HTML markup. This change is more demanding than simply extending Magento CSS, but is still within the grasp of smaller projects and leaner teams. + +### Replace Magento-Provided CSS + +Rather than edit the default CSS provided by Magento, you might decide to replace all the default storefront CSS code with your own. This strategy avoids tying a project to the Magento-provided CSS, but puts a greater burden on project development and integration. It also allows the use of different CSS tools or technologies not provided with Magento. Partners who build their own set of CSS libraries could reuse these libraries on different customer projects. (These unique CSS libraries may help differentiate a partner from others in the market.) + +In addition to replacing CSS files, you might need to replace small amounts of HTML and JavaScript. + +### Replace Magento-Provided CSS, HTML, and JavaScript + +Delivering a sharply different shopping experience than the default Magento installation provides is a more substantial task. However, the tradeoff might be a more complicated experience integrating additional extensions into your installation in the future. + +{:.bs-callout-tip} + Any customization of your storefront will work optimally, and provide the easiest path for later upgrades, if you follow the best practice of consistently compartmentalizing code by type. For example, keep all HTML in [PHTML](https://glossary.magento.com/phtml) files; keep all JavaScript in JavaScript files. + +{:.ref-header} +Related topics + +[Frontend Developer Guide]({{page.baseurl}}/frontend-dev-guide/bk-frontend-dev-guide.html) + +[JavaScript Developer Guide]({{page.baseurl}}/javascript-dev-guide/bk-javascript-dev-guide.html) diff --git a/src/guides/v2.4/b2b/bk-b2b.md b/src/guides/v2.4/b2b/bk-b2b.md index 47a9ec673f9..8468afda646 100644 --- a/src/guides/v2.4/b2b/bk-b2b.md +++ b/src/guides/v2.4/b2b/bk-b2b.md @@ -10,6 +10,8 @@ ee_only: True functional_areas: - B2B - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/ +status: migrated --- Unlike the standard business-to-consumer model, {{site.data.var.b2b}} (Business to Business) is designed to meet the needs of sellers (Magento merchants) whose customers are primarily companies—possibly with complex organizational structures and multiple users with various roles and levels of permission. diff --git a/src/guides/v2.4/b2b/company-credit.md b/src/guides/v2.4/b2b/company-credit.md deleted file mode 120000 index 403a212241e..00000000000 --- a/src/guides/v2.4/b2b/company-credit.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/company-credit.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/company-credit.md b/src/guides/v2.4/b2b/company-credit.md new file mode 100644 index 00000000000..5396ed667c8 --- /dev/null +++ b/src/guides/v2.4/b2b/company-credit.md @@ -0,0 +1,25 @@ +--- +group: b2b-developer-guide +subgroup: 10_REST +title: Integrate with the CompanyCredit module +menu_title: Integrate with the CompanyCredit module +menu_order: 17 +ee_only: True +level3_menu_node: level3child +level3_subgroup: credit +functional_areas: + - B2B + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/company-credit +status: migrated +--- + +Company credit allows company members to purchase items on credit. This is a feature specific to {{site.data.var.b2b}} that is used only for transactions between companies. The seller allocates an amount (or the credit limit) to a company and then company members can purchase items using this amount with the Payment on Account method. The credit amount used by a company is sent to the seller offline. Then the seller creates a Reimburse transaction in the system to adjust the company balance. + +The following diagram illustrates the process flow of orders using the Payment on Account method. + +![Payment on credit]({{ site.baseurl }}/common/images/b2b/payment-on-credit.png) + +## Related information + +[Manage company credit]({{ page.baseurl }}/b2b/credit-manage.html) diff --git a/src/guides/v2.4/b2b/company-object.md b/src/guides/v2.4/b2b/company-object.md deleted file mode 120000 index f7fa3cb53c8..00000000000 --- a/src/guides/v2.4/b2b/company-object.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/company-object.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/company-object.md b/src/guides/v2.4/b2b/company-object.md new file mode 100644 index 00000000000..9e4f61bfd14 --- /dev/null +++ b/src/guides/v2.4/b2b/company-object.md @@ -0,0 +1,346 @@ +--- +group: b2b-developer-guide +subgroup: 10_REST +title: Manage company objects +menu_title: Manage company objects +menu_order: 12 +ee_only: True +level3_menu_node: level3child +level3_subgroup: company +functional_areas: + - B2B + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/company-object +status: migrated +--- + +## Manage company objects + +This section describes the REST endpoints used to manage `Company` objects. + +**Service Name:** + +`companyCompanyRepositoryV1` + +**REST Endpoints:** + +```json +POST /V1/company/ +PUT /V1/company/:companyId +GET /V1/company/:companyId +DELETE /V1/company/:companyId +GET /V1/company/ +``` + +**CompanyInterface Parameters:** + +The following table lists the parameters defined in `CompanyInterface`. + +Name | Description | Format | Requirements +--- | --- | --- | --- +`id` | System-generated company ID | integer | Required for updates and deletes. +`status` | 0 - Pending approval
        1 - Approved
        2 - Rejected
        3 - Blocked | integer | Optional +`company_name` | Company name | string | Required to create or update a company. +`legal_name` | Legal name | string | Optional +`company_email` | Official e-mail address of the company. It does not have to be unique. | string | Required to create or update a company. +`vat_tax_id` | The company's Value Added Tax ID | string | Optional +`reseller_id` | Unique ID of the company reseller | string | Optional +`comment` | Additional details about the company | string | Optional +`street` | Street address where the company is registered. The array can contain one or two lines. | Array[string] | Required to create or update a company. +`city` | The company's city | string | Required to create or update a company. +`country_id` | The country where the company is registered. | string | Required to create or update a company. +`region` | State or province | string | Required to create or update a company. +`region_id` | An ID assigned to a state or province | string | Optional +`postcode` | The company's ZIP or postal code | string | Required to create or update a company. +`telephone` | The company contact's phone number | string | Required to create or update a company. +`customer_group_id` | Defines the company's shared catalog. A value of `1` assigns the default shared catalog. | integer | Required to create or update a company. +`sales_representative_id` | User ID of the Sales Representative for the company | integer | Optional +`reject_reason` | Specifies why a company's request to be a B2B customer is rejected | string | Optional +`rejected_at` | A timestamp indicating when the company was rejected. | string | Optional +`super_user_id` | The `customer_id` of the company administrator. When creating a company, the `customer_id` must already exist. | integer | Required to create or update a company. + +### Create a company + +The following example creates a company and assigns the default shared catalog (`customer_group_id`). The company admin (`super_user_id`) must be a previously-defined `customer_id`. + +**Sample Usage:** + +`POST /rest//V1/company/` + +**Payload:** + +```json +{ + "company": { + "company_name": "Test company", + "company_email": "newemail@example.com", + "street":[ + "100 Big Tree Avenue" + ], + "city": "San Francisco", + "country_id": "US", + "region": "CA", + "region_id": "12", + "postcode": "99999", + "telephone": "4155551212", + "super_user_id": 5, + "customer_group_id": 1 + } +} +``` + +**Response:** + +```json +{ + "id": 2, + "company_name": "Test company", + "company_email": "newemail@example.com", + "street": [ + "100 Big Tree Avenue" + ], + "city": "San Francisco", + "country_id": "US", + "region": "California", + "region_id": "12", + "postcode": "99999", + "telephone": "4155551212", + "customer_group_id": 1, + "sales_representative_id": 1, + "reject_reason": null, + "rejected_at": null, + "super_user_id": 5, + "extension_attributes": { + "quote_config": { + "company_id": "2", + "is_quote_enabled": false + } + } +} +``` + +### Update the company + +The following call changes the company status to Rejected (`2`) and explains why. + +**Sample Usage:** + +`PUT /rest//V1/company/2` + +**Payload:** + +```json +{ + "company": { + "id": 2, + "company_name": "Test company", + "company_email": "newemail@example.com", + "customer_group_id": 1, + "street":[ + "100 Big Tree Avenue" + ], + "city": "San Francisco", + "country_id": "US", + "region": "CA", + "region_id": "12", + "postcode": "99999", + "telephone": "4155551212", + "super_user_id": 5, + "status": 2, + "reject_reason": "Failed background check." + } +} +``` + +**Response:** + +```json +{ + "id": 2, + "company_name": "Test company", + "company_email": "newemail@example.com", + "street": [ + "100 Big Tree Avenue" + ], + "city": "San Francisco", + "country_id": "US", + "region": "California", + "region_id": "12", + "postcode": "99999", + "telephone": "4155551212", + "customer_group_id": 1, + "sales_representative_id": 1, + "reject_reason": null, + "rejected_at": null, + "super_user_id": 5, + "extension_attributes": { + "quote_config": { + "company_id": "2", + "is_quote_enabled": true + } + } +} +``` + +### Return all information about a company + +This call returns detailed information about the specified company. +**Sample Usage:** + +`GET /rest//V1/company/2` + +**Payload:** + +None + +**Response:** + +```json +{ + "id": 2, + "status": 0, + "company_name": "Test company", + "company_email": "newemail@example.com", + "street": [ + "100 Big Tree Avenue" + ], + "city": "San Francisco", + "country_id": "US", + "region": "California", + "region_id": "12", + "postcode": "99999", + "telephone": "4155551212", + "customer_group_id": 1, + "sales_representative_id": 1, + "reject_reason": null, + "rejected_at": null, + "super_user_id": 5, + "extension_attributes": { + "quote_config": { + "company_id": "2", + "is_quote_enabled": true + } + } +} +``` + +### Delete a company + +When you delete a company, Magento assigns the "Inactive" status to all company members. The system also removes company ID from the customer profile of all company members. + +**Sample Usage:** + +`DELETE /rest//V1/company/2` + +**Payload:** + +None + +**Response:** + +`true`, indicating the request was successful + +### Search for companies + +The following call returns all companies that are located in California (`region_id` = `12`) + +See [Search using REST APIs](https://developer.adobe.com/commerce/webapi/rest/use-rest/performing-searches) for information about constructing a search query. + +**Sample Usage:** + +`GET /rest//V1/company?searchCriteria[filter_groups][0][filters][0][field]=region_id&searchCriteria[filter_groups][0][filters][0][value]=12&searchCriteria[filter_groups][0][filters][0][condition_type]=eq` + +**Payload:** + +None + +**Response:** + +{% collapsible Show code sample %} +```json +{ + "items": [ + { + "id": 2, + "status": 1, + "company_name": "Test Company", + "legal_name": "Test Company", + "company_email": "newemail@example.com", + "street": [ + "100 Big Tree Avenue" + ], + "city": "San Francisco", + "country_id": "US", + "region": "California", + "region_id": "12", + "postcode": "99999", + "telephone": "4155551212", + "customer_group_id": 1, + "sales_representative_id": 1, + "reject_reason": null, + "rejected_at": null, + "super_user_id": 3, + "extension_attributes": { + "applicable_payment_method": 0, + "available_payment_methods": "banktransfer,cashondelivery,checkmo,payflowpro,payflow_advanced,payflow_link,braintree,cybersource,eway,authorizenet_directpost,free,braintree_paypal,paypal_billing_agreement,payflow_express_bml,paypal_express_bml,paypal_express,payflow_express,hosted_pro,worldpay,companycredit,purchaseorder,braintree_paypal_vault,braintree_cc_vault,payflowpro_cc_vault", + "use_config_settings": 1, + "quote_config": { + "is_quote_enabled": true + } + } + }, + { + "id": 3, + "status": 1, + "company_name": "Widgets, Inc", + "legal_name": "Widgets, Inc", + "company_email": "widgetsinc@example.com", + "street": [ + "8383 Wilshire Blvd", + "Ste 1500" + ], + "city": "Beverly Hills", + "country_id": "US", + "region": "California", + "region_id": "12", + "postcode": "90211", + "telephone": "(310) 555-0000", + "customer_group_id": 1, + "sales_representative_id": 1, + "reject_reason": null, + "rejected_at": null, + "super_user_id": 10, + "extension_attributes": { + "applicable_payment_method": 0, + "available_payment_methods": "banktransfer,cashondelivery,checkmo,payflowpro,payflow_advanced,payflow_link,braintree,cybersource,eway,authorizenet_directpost,free,braintree_paypal,paypal_billing_agreement,payflow_express_bml,paypal_express_bml,paypal_express,payflow_express,hosted_pro,worldpay,companycredit,purchaseorder,braintree_paypal_vault,braintree_cc_vault,payflowpro_cc_vault", + "use_config_settings": 1, + "quote_config": { + "is_quote_enabled": true + } + } + } + ], + "search_criteria": { + "filter_groups": [ + { + "filters": [ + { + "field": "region_id", + "value": "12", + "condition_type": "eq" + } + ] + } + ] + }, + "total_count": 2 +} +``` +{% endcollapsible %} + +## Related information + +* [Integrate with the Company module]({{ page.baseurl }}/b2b/company.html) +* [Manage company users]({{ page.baseurl }}/b2b/company-users.html) +* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) +* [Manage company structures]({{ page.baseurl }}/b2b/company-structures.html) diff --git a/src/guides/v2.4/b2b/company-structures.md b/src/guides/v2.4/b2b/company-structures.md deleted file mode 120000 index 5e1eae9643f..00000000000 --- a/src/guides/v2.4/b2b/company-structures.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/company-structures.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/company-structures.md b/src/guides/v2.4/b2b/company-structures.md new file mode 100644 index 00000000000..68970b199ab --- /dev/null +++ b/src/guides/v2.4/b2b/company-structures.md @@ -0,0 +1,291 @@ +--- +group: b2b-developer-guide +title: Manage company structures +ee_only: true +functional_areas: + - B2B + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/company-structures +status: migrated +--- + +{{site.data.var.b2b}} allows company users to be assigned to company teams and hierarchies. + +## Manage company teams + +Company teams allow you to group company users by location, job responsibilities, or any criteria you choose. You can assign individual company users to a team with the company hierarchy endpoints. + +**Service name:** + +`companyTeamRepositoryV1` + +**REST Endpoints:** + +```terminal +POST /V1/team/:companyId +PUT /V1/team/:teamId +GET /V1/team/:teamId +DELETE /V1/team/:teamId +GET /V1/team/ +``` + +**Company team parameters:** + +Name | Description | Format | Requirements +--- | --- | --- | --- +id | System-generated team ID | integer | Not applicable for create operations. +name | The displayed name of the team | string | Required to create or update a team. +description | An optional description of the team. | string | Optional + +### Create a team + +A newly-created team is placed under Company Admin in the company hierarchy. + +**Sample Usage:** + +`POST /rest//V1/team/2` + +**Payload:** + +```json +{ + "team": { + "name": "Western District", + "description": "Buyers from the California office" + } +} +``` + +**Response:** + +The team ID, such as `4`. + +### Update a team + +You can only change the name or description of a team. + +**Sample Usage:** + +`PUT /rest//V1/team/4` + +**Payload:** + +```json +{ + "team": { + "id": 4, + "name": "Western Region" + } +} +``` + +**Response:** + +`true`, indicating the request was successful + +### Return all information about a team + +The `GET` call returns the team `id`, `name`, and `description`. + +**Sample Usage:** + +`GET /rest//V1/team/4` + +**Payload:** + +Not applicable + +**Response:** + +```json +{ + "id": 4, + "name": "Western Region", + "description": "Buyers from the California office" +} +``` + +### Delete a team + +You cannot delete a team if members are assigned to it. + +**Sample Usage:** + +`DELETE /rest//V1/team/4` + +**Payload:** + +Not applicable + +**Response:** + +An empty array + +### Search for a team + +The following query returns information about all teams (`team_id` ≥ `0`) + +See [Search using REST APIs](https://developer.adobe.com/commerce/webapi/rest/use-rest/performing-searches) for information about constructing a search query. + +**Sample Usage:** + +`GET /rest//V1/team?searchCriteria[filter_groups][0][filters][0][field]=team_id&searchCriteria[filter_groups][0][filters][0][value]=0&searchCriteria[filter_groups][0][filters][0][condition_type]=gteq` + +**Payload:** + +Not applicable + +**Response:** +{% collapsible Show code sample %} + +```json +{ + "items": [ + { + "id": 1, + "name": "West", + "description": "California office" + }, + { + "id": 2, + "name": "East", + "description": "New York office" + } + ], + "search_criteria": { + "filter_groups": [ + { + "filters": [ + { + "field": "team_id", + "value": "0", + "condition_type": "gteq" + } + ] + } + ] + }, + "total_count": 2 +} +``` + +{% endcollapsible %} + +## Company hierarchies + +In the B2B storefront, a buyer can view the company structure represented as a hierarchy tree. The tree can display multiple levels of company subdivisions (teams) as well as company users. The company hierarchy can have any number of items and levels. + +You can use REST endpoints to retrieve the current structure and move teams and buyers within the hierarchy. You cannot delete teams or buyers. + +**Service name:** + +`companyHierarchyV1` + +**REST Endpoints:** + +```terminal +GET /V1/hierarchy/:id +PUT /V1/hierarchy/move/:id +``` + +### Return all information about the company hierarchy + +In the following example, the following company hierarchy has already been established: + +```terminal +Admin (structure_id = 2) +|-- East (team, structure_id = 8) +| |-- Bryce Martin (customer, structure_id = 4) +| |-- Melanie Shaw (customer, structure_id = 3) +| +|-- West (team, structure_id = 7) +| |-- Marcus Thomas (customer, structure_id = 6) +| |-- Teresa Gomez (customer, structure_id = 5) +``` + +**Sample Usage:** + +`GET /rest//V1/hierarchy/2` + +**Payload:** + +Not applicable + +**Response:** + +{% collapsible Show code sample %} + +```json +[ + { + "structure_id": 6, + "entity_id": 7, + "entity_type": "customer", + "structure_parent_id": 7 + }, + { + "structure_id": 5, + "entity_id": 6, + "entity_type": "customer", + "structure_parent_id": 7 + }, + { + "structure_id": 7, + "entity_id": 1, + "entity_type": "team", + "structure_parent_id": 2 + }, + { + "structure_id": 3, + "entity_id": 4, + "entity_type": "customer", + "structure_parent_id": 8 + }, + { + "structure_id": 4, + "entity_id": 5, + "entity_type": "customer", + "structure_parent_id": 8 + }, + { + "structure_id": 8, + "entity_id": 2, + "entity_type": "team", + "structure_parent_id": 2 + }, + { + "structure_id": 2, + "entity_id": 3, + "entity_type": "customer", + "structure_parent_id": 0 + } +``` + +{% endcollapsible %} + +### Assign a new parent to teams and company users + +The following example moves Bryce Martin (`structure_id = 4`) to the West team (`structure_id = 7`) + +**Sample Usage:** + +`PUT /rest//V1/hierarchy/move/5` + +**Payload:** + +```json +{ + "newParentId": 7 +} +``` + +**Response:** + +`[]` (an empty array) + +## Related information + +* [Integrate with the Company module]({{ page.baseurl }}/b2b/company.html) +* [Manage company objects]({{ page.baseurl }}/b2b/company-object.html) +* [Manage company users]({{ page.baseurl }}/b2b/company-users.html) +* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) diff --git a/src/guides/v2.4/b2b/company-users.md b/src/guides/v2.4/b2b/company-users.md deleted file mode 120000 index aee69b383ec..00000000000 --- a/src/guides/v2.4/b2b/company-users.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/company-users.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/company-users.md b/src/guides/v2.4/b2b/company-users.md new file mode 100644 index 00000000000..2963f429877 --- /dev/null +++ b/src/guides/v2.4/b2b/company-users.md @@ -0,0 +1,177 @@ +--- +group: b2b-developer-guide +title: Manage company users +ee_only: true +functional_areas: + - B2B + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/company-users +status: migrated +--- + +A company user is a customer (buyer) that is assigned extended attributes that identify the company the user belongs to. Use the `POST /V1/customers` call, which is included with {{site.data.var.ce}} and {{site.data.var.ee}}, to create the user. After the user is created, you can use the `PUT /V1/customers/:customer_id` call to set their company data with the `company_attributes` extended attributes. + + {:.bs-callout-info} +This topic discusses only the features of the `customerCustomerRepositoryV1` service that are specific to B2B. See [Create a customer](https://developer.adobe.com/commerce/webapi/rest/tutorials/orders/order-create-customer) for an example of creating a standard customer. + +## Manage company users + +This section describes the REST endpoints used to manage company users. + +**Service Name:** + +`customerCustomerRepositoryV1` + +**REST Endpoints:** + +```terminal +POST /V1/customers/ +PUT /V1/customers/:customerId +``` + +**Company user parameters:** + +The following table lists the parameters that can be used to set company data for a user. + +Name | Description | Format | Requirements +--- | --- | --- | --- +`customer_id` | System-generated customer ID. | integer | Not applicable for create operations. +`company_id` | System-generated company ID. | integer | Required to create or update a company user. +`job_title` | A string that describes the company user's responsibilities. | string | Required to create or update a company. +`status` | Indicates whether the company user is active or inactive | integer | `0` - inactive; `1` - active +`telephone` | Telephone number | string | Required to create a company user. + +### Create a company user + +The `POST /V1/customers` call creates a Magento customer. B2B extends the `customerAccountManagementV1` service so that you can create a company user. + +**Sample Usage:** + +`POST /rest//V1/customers` + +**Payload:** + +First, create the standard customer. Their `company_id` will initially be set to `0`. + +```json +{ + "customer": { + "email": "mshaw@example.com", + "firstname": "Melanie", + "lastname": "Shaw" + } +} +``` + +**Response:** + +```json +{ + "id": 13, + "group_id": 1, + "created_at": "2017-05-18 16:47:44", + "updated_at": "2017-05-18 16:47:44", + "created_in": "Default Store View", + "email": "mshaw@example.com", + "firstname": "Melanie", + "lastname": "Shaw", + "store_id": 1, + "website_id": 1, + "addresses": [], + "disable_auto_group_change": 0, + "extension_attributes": { + "company_attributes": { + "customer_id": 13, + "company_id": 0 + } + } +} +``` + +If you create a user from the admin dashboard, you can also set their company data at the same time. + +### Modify a company user + +The following example assigns the user to a company, sets their status to inactive and also sets their `job_title` and `telephone`. + +If you change the `status` to inactive, the account is locked. If the company user has child users, the system re-assigns the child users to the parent of the deactivated user. + +**Sample Usage:** + +`PUT /rest//V1/customers/13` + +**Payload:** + +```json +{ + "customer": { + "id": 13, + "email": "mshaw@example.com", + "firstname": "Melanie", + "lastname": "Shaw", + "website_id": 1, + "extension_attributes": { + "company_attributes": { + "company_id": 2, + "status": 0, + "job_title": "Sales Rep", + "telephone": "512-555-3322" + } + } + } +} +``` + +**Response:** + +```json +{ + "id": 13, + "group_id": 1, + "created_at": "2017-05-18 16:47:44", + "updated_at": "2017-05-18 18:50:58", + "created_in": "Default Store View", + "email": "mshaw@example.com", + "firstname": "Melanie", + "lastname": "Shaw", + "store_id": 1, + "website_id": 1, + "addresses": [], + "disable_auto_group_change": 0, + "extension_attributes": { + "company_attributes": { + "customer_id": 13, + "company_id": 2, + "status": 0, + "job_title": "Sales Rep", + "telephone": "512-555-3322" + }, + "is_subscribed": false + } +} +``` + +### Delete a company user + +If the specified company user has child users, the system re-assigns the child users to the parent of the deleted user. The user account is deleted from Magento with all of its content, except quotes and orders. The user's orders and quotes remain visible to the seller. + +Magento locks the deleted user's quotes and changes their status to Closed. The system does not allow to make changes on such quotes. + +**Sample Usage:** + +`DELETE /rest//V1/customers/13` + +**Payload:** + +Not applicable + +**Response:** + +`true`, indicating the request was successful + +## Related information + +* [Integrate with the Company module]({{ page.baseurl }}/b2b/company.html) +* [Manage company objects]({{ page.baseurl }}/b2b/company-object.html) +* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) +* [Manage company structures]({{ page.baseurl }}/b2b/company-structures.html) diff --git a/src/guides/v2.4/b2b/company.md b/src/guides/v2.4/b2b/company.md deleted file mode 120000 index c9d58e355bb..00000000000 --- a/src/guides/v2.4/b2b/company.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/company.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/company.md b/src/guides/v2.4/b2b/company.md new file mode 100644 index 00000000000..a2dba22821a --- /dev/null +++ b/src/guides/v2.4/b2b/company.md @@ -0,0 +1,24 @@ +--- +group: b2b-developer-guide +subgroup: 10_REST +title: Integrate with the Company module +menu_title: Integrate with the Company module +menu_order: 11 +ee_only: True +level3_menu_node: level3child +level3_subgroup: company +functional_areas: + - B2B + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/company +status: migrated +--- + +The `Company` module allows multiple buyers that belong to the same company to view product prices and make purchases based on the shared catalog assigned to this company. A company can contain a hierarchy of users and teams, with roles and permissions assigned at any level. + +## Related information + +* [Manage company objects]({{ page.baseurl }}/b2b/company-object.html) +* [Manage company users]({{ page.baseurl }}/b2b/company-users.html) +* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) +* [Manage company structures]({{ page.baseurl }}/b2b/company-structures.html) diff --git a/src/guides/v2.4/b2b/credit-manage.md b/src/guides/v2.4/b2b/credit-manage.md deleted file mode 120000 index 95d6e8f2700..00000000000 --- a/src/guides/v2.4/b2b/credit-manage.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/credit-manage.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/credit-manage.md b/src/guides/v2.4/b2b/credit-manage.md new file mode 100644 index 00000000000..4cf43264bfd --- /dev/null +++ b/src/guides/v2.4/b2b/credit-manage.md @@ -0,0 +1,401 @@ +--- +group: b2b-developer-guide +title: Manage company credit +ee_only: true +functional_areas: + - B2B + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/credit-manage +status: migrated +--- + +The company credit entity operates with the following attributes: + +* Credit limit +* Available credit +* Outstanding balance + +The credit limit is allocated by seller, while available credit and outstanding balance are automatically calculated by the system based on the buyer transactions (place an order, return) and seller's transactions (refund, reimburse, update credit limit, cancel order). + +## Manage company credit limits + +When you create a company, the credit limit is set to 0. Use the `PUT /V1/companyCredits/:id` call to change this value and perform other updates to the company's credit settings. + +**REST Endpoints:** + +```terminal +PUT /V1/companyCredits/:id +GET /V1/companyCredits/:creditId +GET /V1/companyCredits/company/:companyId +GET /V1/companyCredits/ +``` + +**Company credit parameters:** + +Name | Description | Format | Requirements +--- | --- | --- | --- +`id` | The credit ID generated by the system | Integer | Required +`company_id` | Company ID | Integer | Required +`credit_limit` | The amount of credit granted to the company | Float | Required +`balance` | The amount the company currently owes the seller | Float | Optional +`currency_code` | The currency code for the company's credit, such as USD | String | Required +`exceed_limit` | Indicates whether the company can exceed their credit limit | Boolean | Optional +`available_limit` | The amount of credit currently available to the company | Float | Optional +`credit_comment` | Describes the change being made | String | Optional + +### Update a company credit limit + +This call changes the company's credit limit to $1000. The `available_limit` parameter is calculated, so you cannot specify the value. + +**Service Name:** + +`companyCreditCreditLimitRepositoryV1` + +**Sample Usage:** + +`PUT /rest//V1/companyCredits/2` + +**Payload:** + +```json +{ + "creditLimit": { + "id": 2, + "company_id": 2, + "credit_limit": 1000, + "currency_code": "USD" + } +} +``` + +**Response:** + +```json +{ + "id": 2, + "company_id": 2, + "credit_limit": 1000, + "balance": 0, + "currency_code": "USD", + "exceed_limit": false, + "available_limit": 1000 +} +``` + +### Get details about a company's credit limit using credit ID + +This call returns data on the credit limit for the specified credit ID. + +**Service Name:** + +`companyCreditCreditLimitRepositoryV1` + +**Sample Usage:** + +`GET /rest//V1/companyCredits/2` + +**Payload:** + +Not applicable + +**Response:** + +```json +{ + "id": 2, + "company_id": 2, + "credit_limit": 500, + "balance": 0, + "currency_code": "USD", + "exceed_limit": false, + "available_limit": 500 +} +``` + +### Get details about a company's credit limit using company ID + +This call returns information about the credit limit for a specified company. + +**Service Name:** + +`companyCreditCreditLimitManagementV1` + +**Sample Usage:** + +`GET /rest//V1/companyCredits/company/2` + +**Payload:** + +Not applicable + +**Response:** + +```json +{ + "id": 2, + "company_id": 2, + "credit_limit": 500, + "balance": 0, + "currency_code": "USD", + "exceed_limit": false, + "available_limit": 500 +} +``` + +### Search credit IDs + +The following call returns information for all companies whose credit balance is 0. + +See [Search using REST APIs](https://developer.adobe.com/commerce/webapi/rest/use-rest/performing-searches) for information about constructing a search query. + +**Sample Usage:** + +`GET /rest//V1/companyCredits?searchCriteria[filter_groups][0][filters][0][field]=balance&searchCriteria[filter_groups][0][filters][0][value]=0&searchCriteria[filter_groups][0][filters][0][condition_type]=eq` + +**Payload:** + +Not applicable + +**Response:** + +{% collapsible Show code sample %} + +```json +{ + "items": [ + { + "id": 2, + "company_id": 2, + "credit_limit": 1000, + "balance": 0, + "currency_code": "USD", + "exceed_limit": false, + "available_limit": 1000 + }, + { + "id": 3, + "company_id": 3, + "balance": 0, + "currency_code": "USD", + "exceed_limit": false, + "available_limit": 0 + }, + { + "id": 4, + "company_id": 4, + "credit_limit": 2000, + "balance": 0, + "currency_code": "USD", + "exceed_limit": false, + "available_limit": 2000 + } + ], + "search_criteria": { + "filter_groups": [ + { + "filters": [ + { + "field": "balance", + "value": "0", + "condition_type": "eq" + } + ] + } + ] + }, + "total_count": 3 +} +``` + +{% endcollapsible %} + +## Balance operations + +The company's outstanding balance can be updated as the buyer makes payments, purchases, and other transactions. + +**Service Name:** + +`companyCreditCreditBalanceManagementV1` + +**REST Endpoints:** + +```terminal +POST /V1/companyCredits/:creditId/decreaseBalance +POST /V1/companyCredits/:creditId/increaseBalance +``` + +**Balance Parameters:** + +Name | Description | Format | Requirements +--- | --- | --- | --- +`value` | Indicates how much money is involved in this company credit balance operation. | Number | Required +`currency` | The currency of the transaction, such as USD | String | Required +`operationType` | Must be one of the following: 1 - Allocated; 2 - Updated; 3 - Purchased; 4 - Reimbursed; 5 - Refunded; 6 - Reverted | Integer | Required +`comment` | Describers the operation | String | Optional +`options` | An object that provides additional information for increasing or decreasing the credit balance | Object | Optional + +**`options` parameters:** + +Name | Description | Format | Requirements +--- | --- | --- | --- +`purchase_order` | The company's purchase order number | String | Optional +`order_increment` | Order increment | String | Optional +`currency_display` | Currency code for displaying the operation | String | Optional +`currency_base` | The base currency | String | Optional + +### Increase the company credit balance + +This call increases the company credit with an Allocate, Update, Refund, Revert, or Reimburse transaction. (You cannot specify the Purchased (3) operation type.) This call also decreases the company's outstanding balance. + +**Sample Usage:** + +`POST /rest//V1/companyCredits/2/increaseBalance` + +**Payload:** + +```json +{ + "value": 250, + "currency": "USD", + "operationType": 2, + "comment": "update limit" +} +``` + +**Response:** + +`true`, indicating the increase to the company credit balance succeeded + +### Decrease the balance + +This call decreases the company credit with an Update (operation type = 2), Purchased (3), or Reimbursed (4) transaction. (You cannot specify the other operation types.) This call also increases company's outstanding balance. + +**Sample Usage:** + +`POST /rest//V1/companyCredits/2/decreaseBalance` + +**Payload:** + +```json +{ + "value": 250, + "currency": "USD", + "operationType": 4, + "comment": "issue refund" +} +``` + +**Response:** + +`true`, indicating the decrease to the company credit balance succeeded + +## Credit history + +A Reimburse transaction can be updated to include a purchase order and comment. + +**Service Name:** +`companyCreditCreditHistoryManagementV1` + +**REST Endpoints:** + +```text +GET /V1/companyCredits/history +PUT /V1/companyCredits/history/:historyId +``` + +### Save the credit history + +This call updates the credit history to specify a purchase order number. + +**Sample Usage:** + +`PUT /rest//V1/companyCredits/history/6` + +**Payload:** + +```json +{ + "purchaseOrder": "A12345", + "comment": "Adding PO info" +} +``` + +**Response:** + +`true`, indicating the call was successful + +### Search credit history IDs + +The following call returns a list instances in which the credit limit was set to a value higher than $500. + +See [Search using REST APIs](https://developer.adobe.com/commerce/webapi/rest/use-rest/performing-searches) for information about constructing a search query. + +**Sample Usage:** + +`GET /rest//V1/companyCredits/history?searchCriteria[filter_groups][0][filters][0][field]=credit_limit&searchCriteria[filter_groups][0][filters][0][value]=500&searchCriteria[filter_groups][0][filters][0][condition_type]=gt` + +**Payload:** + +Not applicable + +**Response:** + +```json +{ + "items": [ + { + "id": 6, + "company_credit_id": 2, + "user_id": 1, + "user_type": 2, + "currency_credit": "USD", + "currency_operation": "USD", + "rate": 1, + "rate_credit": 0, + "amount": -250, + "balance": 0, + "credit_limit": 1000, + "available_limit": 1000, + "type": 4, + "datetime": "2017-06-12 02:26:28", + "purchase_order": "A12345", + "comment": "{\"custom\":\"Adding PO info\"}" + }, + { + "id": 7, + "company_credit_id": 4, + "user_id": 1, + "user_type": 2, + "currency_credit": "USD", + "currency_operation": "USD", + "rate": 1, + "rate_credit": 0, + "amount": 0, + "balance": 0, + "credit_limit": 2000, + "available_limit": 2000, + "type": 1, + "datetime": "2017-07-20 21:28:35", + "comment": "" + } + ], + "search_criteria": { + "filter_groups": [ + { + "filters": [ + { + "field": "credit_limit", + "value": "500", + "condition_type": "gt" + } + ] + } + ] + }, + "total_count": 2 +} +``` + +## Related information + +[Integrate with the CompanyCredit module]({{ page.baseurl }}/b2b/company-credit.html) diff --git a/src/guides/v2.4/b2b/extensions.md b/src/guides/v2.4/b2b/extensions.md deleted file mode 120000 index 9d19b84f952..00000000000 --- a/src/guides/v2.4/b2b/extensions.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/extensions.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/extensions.md b/src/guides/v2.4/b2b/extensions.md new file mode 100644 index 00000000000..25f663f90bf --- /dev/null +++ b/src/guides/v2.4/b2b/extensions.md @@ -0,0 +1,15 @@ +--- +group: b2b-developer-guide +subgroup: 20_PHP +title: Develop B2B extensions +menu_title: Develop B2B extensions +menu_order: 1 +menu_node: parent +ee_only: True +functional_areas: + - B2B +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/extensions +status: migrated +--- + +See [Module Reference Guide]({{ page.baseurl }}/mrg/intro.html) for information about each {{site.data.var.b2b}} module. diff --git a/src/guides/v2.4/b2b/integrations.md b/src/guides/v2.4/b2b/integrations.md index 3cc19e0efb7..5b9527b380d 100644 --- a/src/guides/v2.4/b2b/integrations.md +++ b/src/guides/v2.4/b2b/integrations.md @@ -9,6 +9,8 @@ ee_only: True functional_areas: - B2B - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/integrations +status: migrated --- This topic lists the REST endpoints and services that are provided with {{site.data.var.b2b}}. diff --git a/src/guides/v2.4/b2b/negotiable-checkout.md b/src/guides/v2.4/b2b/negotiable-checkout.md deleted file mode 120000 index dbcc8a6f17b..00000000000 --- a/src/guides/v2.4/b2b/negotiable-checkout.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/negotiable-checkout.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/negotiable-checkout.md b/src/guides/v2.4/b2b/negotiable-checkout.md new file mode 100644 index 00000000000..2c0cd5484d6 --- /dev/null +++ b/src/guides/v2.4/b2b/negotiable-checkout.md @@ -0,0 +1,971 @@ +--- +group: b2b-developer-guide +title: Negotiable quote checkout +ee_only: true +functional_areas: + - B2B + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/negotiable-checkout +status: migrated +--- + +When the seller and buyer user agree on the quoted products and their prices, the negotiated quote is ready to be converted to an order. + +During the standard checkout process, Magento refreshes and recalculates all product and shipping prices as well as taxes. This process is different for the quote that has a negotiated price (discounted offer from the seller). The system keeps the quoted price, but checks the tax amounts. If the tax amounts are outdated, Magento recalculates them and updates the quote totals. These tax adjustments can change the order grand total. The order and invoice are created with the recalculated taxes and new grand total. All other prices in the quote remain unchanged. + +The same rule is applied when the quote has the proposed shipping price and the shipping taxes change on the checkout. The buyer pays the updated price, but this does not affect the other quote amounts. + +The following diagram illustrates the workflow for {{site.data.var.b2b}} negotiable quote checkouts: + +![Checkout process]({{ site.baseurl }}/common/images/b2b/quote-checkout-process.png) + +## Manage shipping addresses + +A negotiated quote can be initiated without a shipping address. However, before the order can be placed, the shipping address must be provided. + +**REST Endpoints:** + +```json +POST /V1/negotiable-carts/:cartId/estimate-shipping-methods +POST /V1/negotiable-carts/:cartId/estimate-shipping-methods-by-address-id +POST /V1/negotiable-carts/:cartId/shipping-information +``` + +### Estimate shipping costs specifying an address + +This call takes a full shipping address as input and estimates shipping fees. It returns a list of available shipping methods. + +**Service Name:** + +`negotiableQuoteShipmentEstimationV1` + +**Sample Usage:** + +`POST /rest//V1/negotiable-carts/86/estimate-shipping-methods` + +**Payload:** + +```json +{ + "address": { + "street": [ + "100 Big Tree Avenue" + ], + "city": "San Francisco", + "country_id": "US", + "region": "California", + "region_id": "12", + "postcode": "99999", + "telephone": "4155551212", + "firstname": "John", + "lastname": "Doe" + } +} +``` + +**Response:** + +```json +[ + { + "carrier_code": "flatrate", + "method_code": "flatrate", + "carrier_title": "Flat Rate", + "method_title": "Fixed", + "amount": 5, + "base_amount": 5, + "available": true, + "error_message": "", + "price_excl_tax": 5, + "price_incl_tax": 5 + } +] +``` + +### Estimate shipping costs specifying an address ID + +This call takes an address ID as input and estimates shipping fees. It returns a list of available shipping methods. + +**Service Name:** + +`negotiableQuoteShippingMethodManagementV1` + +**Sample Usage:** + +`POST /rest//V1/negotiable-carts/86/estimate-shipping-methods-by-address-id` + +**Payload:** + +```json +{ + "addressId": 2 +} +``` + +**Response:** + +```json +[ + { + "carrier_code": "flatrate", + "method_code": "flatrate", + "carrier_title": "Flat Rate", + "method_title": "Fixed", + "amount": 5, + "base_amount": 5, + "available": true, + "error_message": "", + "price_excl_tax": 5, + "price_incl_tax": 5 + } +] +``` + +### Set the shipping and billing information + +In this call, you specify the shipping and billing addresses, as well as the selected `shipping_carrier_code` and `shipping_method_code`. Magento returns a list of payment options and calculates the order totals. + +**Service Name:** + +`negotiableQuoteShippingMethodManagementV1` + +**Sample Usage:** + +`POST /rest//V1/negotiable-carts/86/shipping-information` + +**Payload:** + +```json +{ + "addressInformation": { + "shipping_address": { + "region": "California", + "region_id": 12, + "country_id": "US", + "street": [ + "100 Big Tree Avenue" + ], + "postcode": "99999", + "city": "San Francisco", + "telephone": "512-555-1111", + "firstname": "Jane", + "lastname": "Doe" + }, + "billing_address": { + "region": "New York", + "region_id": 43, + "region_code": "NY", + "country_id": "US", + "street": [ + "123 Oak Ave" + ], + "postcode": "10577", + "city": "Purchase", + "firstname": "Jane", + "lastname": "Doe", + "email": "jdoe@example.com", + "telephone": "512-555-1111" + }, + "shipping_carrier_code": "flatrate", + "shipping_method_code": "flatrate" + } +} +``` + +**Response:** + +{% collapsible Show code sample %} + +```json +{ + "payment_methods": [ + { + "code": "checkmo", + "title": "Check / Money order" + } + ], + "totals": { + "grand_total": 5.95, + "base_grand_total": 5.95, + "subtotal": 0.95, + "base_subtotal": 0.95, + "discount_amount": 0, + "base_discount_amount": 0, + "subtotal_with_discount": 0.95, + "base_subtotal_with_discount": 0.95, + "shipping_amount": 5, + "base_shipping_amount": 5, + "shipping_discount_amount": 0, + "base_shipping_discount_amount": 0, + "tax_amount": 0, + "base_tax_amount": 0, + "weee_tax_applied_amount": null, + "shipping_tax_amount": 0, + "base_shipping_tax_amount": 0, + "subtotal_incl_tax": 0.95, + "shipping_incl_tax": 5, + "base_shipping_incl_tax": 5, + "base_currency_code": "USD", + "quote_currency_code": "USD", + "items_qty": 1, + "items": [ + { + "item_id": 13, + "price": 0.95, + "base_price": 0.95, + "qty": 1, + "row_total": 0.95, + "base_row_total": 0.95, + "row_total_with_discount": 0, + "tax_amount": 0, + "base_tax_amount": 0, + "tax_percent": 0, + "discount_amount": 0, + "base_discount_amount": 0, + "discount_percent": 0, + "price_incl_tax": 0.95, + "base_price_incl_tax": 0.95, + "row_total_incl_tax": 0.95, + "base_row_total_incl_tax": 0.95, + "options": "[]", + "weee_tax_applied_amount": null, + "weee_tax_applied": null, + "extension_attributes": { + "negotiable_quote_item_totals": { + "cost": 0, + "catalog_price": 0.95, + "base_catalog_price": 0.95, + "catalog_price_incl_tax": 0.95, + "base_catalog_price_incl_tax": 0.95, + "cart_price": 0.95, + "base_cart_price": 0.95, + "cart_tax": 0, + "base_cart_tax": 0, + "cart_price_incl_tax": 0.95, + "base_cart_price_incl_tax": 0.95 + } + }, + "name": "Simple Product 2" + } + ], + "total_segments": [ + { + "code": "subtotal", + "title": "Subtotal", + "value": 0.95 + }, + { + "code": "giftwrapping", + "title": "Gift Wrapping", + "value": null, + "extension_attributes": { + "gw_item_ids": [], + "gw_price": "0.00", + "gw_base_price": "0.00", + "gw_items_price": "0.00", + "gw_items_base_price": "0.00", + "gw_card_price": "0.00", + "gw_card_base_price": "0.00", + "gw_base_tax_amount": "0.00", + "gw_tax_amount": "0.00", + "gw_items_base_tax_amount": "0.00", + "gw_items_tax_amount": "0.00", + "gw_card_base_tax_amount": "0.00", + "gw_card_tax_amount": "0.00", + "gw_price_incl_tax": "0.00", + "gw_base_price_incl_tax": "0.00", + "gw_card_price_incl_tax": "0.00", + "gw_card_base_price_incl_tax": "0.00", + "gw_items_price_incl_tax": "0.00", + "gw_items_base_price_incl_tax": "0.00" + } + }, + { + "code": "shipping", + "title": "Shipping & Handling (Flat Rate - Fixed)", + "value": 5 + }, + { + "code": "tax", + "title": "Tax", + "value": 0, + "extension_attributes": { + "tax_grandtotal_details": [] + } + }, + { + "code": "grand_total", + "title": "Grand Total", + "value": 5.95, + "area": "footer" + }, + { + "code": "customerbalance", + "title": "Store Credit", + "value": 0 + }, + { + "code": "reward", + "title": "0 Reward points", + "value": 0 + } + ], + "extension_attributes": { + "negotiable_quote_totals": { + "items_count": 1, + "quote_status": "submitted_by_admin", + "created_at": "2017-05-30 20:41:00", + "updated_at": "2017-05-30 20:41:00", + "customer_group": 10, + "base_to_quote_rate": 1, + "cost_total": 0, + "base_cost_total": 0, + "original_total": 0.95, + "base_original_total": 0.95, + "original_tax": 0, + "base_original_tax": 0, + "original_price_incl_tax": 0.95, + "base_original_price_incl_tax": 0.95, + "negotiated_price_type": null, + "negotiated_price_value": null + }, + "reward_points_balance": 0, + "reward_currency_amount": 0, + "base_reward_currency_amount": 0 + } + } +} +``` + +{% endcollapsible %} + +## Manage billing addresses + +If the billing address isn't provided through another call, use the `POST /V1/negotiable-carts/:cartId/billing-address` to specify it. + +**Service Name:** + +`negotiableQuoteBillingAddressManagementV1` + +**REST Endpoints:** + +```json +POST /V1/negotiable-carts/:cartId/billing-address +GET /V1/negotiable-carts/:cartId/billing-address +``` + +### Set the billing address + +This call assigns a billing address to the specified negotiable quote. + +**Sample Usage:** + +`POST /rest//V1/negotiable-carts/86/billing-address` + +**Payload:** + +```json +{ "address": { + "region": "New York", + "region_id": 43, + "region_code": "NY", + "country_id": "US", + "street": [ + "123 Oak Ave" + ], + "postcode": "10577", + "city": "Purchase", + "firstname": "Jane", + "lastname": "Doe", + "customer_id": 4, + "email": "jdoe@example.com", + "telephone": "(512) 555-1111", + "same_as_billing": 1 + } +} +``` + +**Response:** + +[] + +### Return the billing address + +This call returns the billing address for the specified negotiable quote. + +**Sample Usage:** + +`GET /rest//V1/negotiable-carts/86/billing-address` + +**Payload:** + +Not applicable + +**Response:** + +```json +{ + "id": 192, + "region": "New York", + "region_id": 43, + "region_code": "NY", + "country_id": "US", + "street": [ + "123 Oak Ave" + ], + "telephone": "(512) 555-1111", + "postcode": "10577", + "city": "Purchase", + "firstname": "Jane", + "lastname": "Doe", + "customer_id": 1, + "email": "jdoe@example.com", + "same_as_billing": 0, + "save_in_address_book": 0 +} +``` + +## Manage cart coupons + +B2B allows coupons to be used toward payment. + +**Service Name:** + +`negotiableQuoteCouponManagementV1` + +**REST Endpoints:** + +```json +PUT /V1/negotiable-carts/:cartId/coupons/:couponCode +DELETE /V1/negotiable-carts/:cartId/coupons +``` + +### Apply a coupon to a negotiable quote + +If the initial quote applies a coupon to the totals, Magento ignores the coupon when it converts the quote to a negotiable quote. However, you can apply a coupon at checkout. + +**Sample Usage:** + +`PUT /rest//V1/negotiable-carts/6/coupons/SAVE5` + +**Payload:** + +Not applicable + +**Response:** + +`true`, indicting the request was successful + +## Manage gift cards + +B2B allows gift cards to be used as payment. + +**Service Name:** + +`negotiableQuoteGiftCardAccountManagementV1` + +**REST Endpoints:** + +```json +POST /V1/negotiable-carts/:cartId/giftCards +DELETE /V1/negotiable-carts/:cartId/giftCards/:giftCardCode +``` + +### Apply a gift card to a negotiable quote + +If the initial quote applies a gift card to the totals, Magento ignores the gift card when it converts the quote to a negotiable quote. However, you can apply a gift card at checkout. + +**Sample Usage:** + +`POST /rest//V1/negotiable-carts/6/giftCards` + +**Payload:** + +```json +{ + "giftCardAccountData": { + "gift_cards": [ + "00HELHQED6RV" + ] + } +} +``` + +**Response:** + +`true` + +### Delete a gift card from at checkout + +This call removes a gift card that has been applied to a negotiable quote. + +**Sample Usage:** + +`DELETE /rest//V1/negotiable-carts/6/giftCards/00HELHQED6RV` + +**Payload:** + +Not applicable + +**Response:** + +`true`, indicating the request was successful + +## Manage payment information + +When you submit payment information, Magento creates an order and sends an order confirmation to the buyer. + +**Service Name:** + +`negotiableQuotePaymentInformationManagementV1` + +**REST Endpoints:** + +```json +POST /V1/negotiable-carts/:cartId/payment-information +GET /V1/negotiable-carts/:cartId/payment-information +POST /V1/negotiable-carts/:cartId/set-payment-information +``` + +### Set payment information without placing the order + +This call sets payment information and the billing address for the negotiable quote. However, Magento does not create an order afterward. + +**Sample Usage:** + +`POST /rest//V1/negotiable-carts/86/set-payment-information` + +**Payload:** + +```json +{ "paymentMethod": { + "po_number": "A123456", + "method": "checkmo" + }, + "billing_address": { + "region": "New York", + "region_id": 43, + "region_code": "NY", + "country_id": "US", + "street": [ + "123 Oak Ave" + ], + "postcode": "10577", + "city": "Purchase", + "firstname": "Jane", + "lastname": "Doe", + "email": "jdoe@example.com", + "telephone": "512-555-1111" + } +} +``` + +**Response:** + +`true`, indicating the payment information was set + +### Set payment information and place the order + +This call sets payment information and the billing address for the negotiable quote, then creates an order. + +**Sample Usage:** + +`POST /rest//V1/negotiable-carts/86/payment-information` + +**Payload:** + +```json +{ "paymentMethod": { + "po_number": "A123456", + "method": "checkmo" + }, + "billing_address": { + "region": "New York", + "region_id": 43, + "region_code": "NY", + "country_id": "US", + "street": [ + "123 Oak Ave" + ], + "postcode": "10577", + "city": "Purchase", + "firstname": "Jane", + "lastname": "Doe", + "email": "jdoe@example.com", + "telephone": "512-555-1111" + } +} +``` + +**Response:** + +An order ID, such as `83` + +### Return payment information + +This call payment information and all information from the `totals` object. + +**Sample Usage:** + +`GET /rest//V1/negotiable-carts/86/payment-information` + +**Payload:** + +Not applicable + +**Response:** + +{% collapsible Show code sample %} + +```json +{ + "payment_methods": [ + { + "code": "checkmo", + "title": "Check / Money order" + } + ], + "totals": { + "grand_total": 5.95, + "base_grand_total": 5.95, + "subtotal": 0.95, + "base_subtotal": 0.95, + "discount_amount": 0, + "base_discount_amount": 0, + "subtotal_with_discount": 0.95, + "base_subtotal_with_discount": 0.95, + "shipping_amount": 5, + "base_shipping_amount": 5, + "shipping_discount_amount": 0, + "base_shipping_discount_amount": 0, + "tax_amount": 0, + "base_tax_amount": 0, + "weee_tax_applied_amount": null, + "shipping_tax_amount": 0, + "base_shipping_tax_amount": 0, + "subtotal_incl_tax": 0.95, + "shipping_incl_tax": 5, + "base_shipping_incl_tax": 5, + "base_currency_code": "USD", + "quote_currency_code": "USD", + "items_qty": 1, + "items": [ + { + "item_id": 13, + "price": 0.95, + "base_price": 0.95, + "qty": 1, + "row_total": 0.95, + "base_row_total": 0.95, + "row_total_with_discount": 0, + "tax_amount": 0, + "base_tax_amount": 0, + "tax_percent": 0, + "discount_amount": 0, + "base_discount_amount": 0, + "discount_percent": 0, + "price_incl_tax": 0.95, + "base_price_incl_tax": 0.95, + "row_total_incl_tax": 0.95, + "base_row_total_incl_tax": 0.95, + "options": "[]", + "weee_tax_applied_amount": null, + "weee_tax_applied": null, + "extension_attributes": { + "negotiable_quote_item_totals": { + "cost": 0, + "catalog_price": 0.95, + "base_catalog_price": 0.95, + "catalog_price_incl_tax": 0.95, + "base_catalog_price_incl_tax": 0.95, + "cart_price": 0.95, + "base_cart_price": 0.95, + "cart_tax": 0, + "base_cart_tax": 0, + "cart_price_incl_tax": 0.95, + "base_cart_price_incl_tax": 0.95 + } + }, + "name": "Simple Product 2" + } + ], + "total_segments": [ + { + "code": "subtotal", + "title": "Subtotal", + "value": 0.95 + }, + { + "code": "giftwrapping", + "title": "Gift Wrapping", + "value": null, + "extension_attributes": { + "gw_item_ids": [], + "gw_price": "0.00", + "gw_base_price": "0.00", + "gw_items_price": "0.00", + "gw_items_base_price": "0.00", + "gw_card_price": "0.00", + "gw_card_base_price": "0.00", + "gw_base_tax_amount": "0.00", + "gw_tax_amount": "0.00", + "gw_items_base_tax_amount": "0.00", + "gw_items_tax_amount": "0.00", + "gw_card_base_tax_amount": "0.00", + "gw_card_tax_amount": "0.00", + "gw_price_incl_tax": "0.00", + "gw_base_price_incl_tax": "0.00", + "gw_card_price_incl_tax": "0.00", + "gw_card_base_price_incl_tax": "0.00", + "gw_items_price_incl_tax": "0.00", + "gw_items_base_price_incl_tax": "0.00" + } + }, + { + "code": "shipping", + "title": "Shipping & Handling (Flat Rate - Fixed)", + "value": 5 + }, + { + "code": "tax", + "title": "Tax", + "value": 0, + "extension_attributes": { + "tax_grandtotal_details": [] + } + }, + { + "code": "grand_total", + "title": "Grand Total", + "value": 5.95, + "area": "footer" + }, + { + "code": "customerbalance", + "title": "Store Credit", + "value": 0 + }, + { + "code": "reward", + "title": "0 Reward points", + "value": 0 + } + ], + "extension_attributes": { + "negotiable_quote_totals": { + "items_count": 1, + "quote_status": "submitted_by_admin", + "created_at": "2017-05-30 20:41:00", + "updated_at": "2017-06-09 20:26:49", + "customer_group": 10, + "base_to_quote_rate": 1, + "cost_total": 0, + "base_cost_total": 0, + "original_total": 0.95, + "base_original_total": 0.95, + "original_tax": 0, + "base_original_tax": 0, + "original_price_incl_tax": 0.95, + "base_original_price_incl_tax": 0.95, + "negotiated_price_type": null, + "negotiated_price_value": null + }, + "reward_points_balance": 0, + "reward_currency_amount": 0, + "base_reward_currency_amount": 0 + } + } +} +``` + +{% endcollapsible %} + +## Review cart totals + +This call is similar to `GET /V1/negotiable-carts/:cartId/payment-information`, except it does not return payment information. + +**Service Name:** + +`negotiableQuoteCartTotalRepositoryV1` + +**REST Endpoints:** + +```json +GET /V1/negotiable-carts/:cartId/totals +``` + +**Sample Usage:** + +`GET /rest//V1/negotiable-carts/86/totals` + +**Payload:** + +Not applicable + +**Response:** + +{% collapsible Show code sample %} + +```json +{ + "totals": { + "grand_total": 5.95, + "base_grand_total": 5.95, + "subtotal": 0.95, + "base_subtotal": 0.95, + "discount_amount": 0, + "base_discount_amount": 0, + "subtotal_with_discount": 0.95, + "base_subtotal_with_discount": 0.95, + "shipping_amount": 5, + "base_shipping_amount": 5, + "shipping_discount_amount": 0, + "base_shipping_discount_amount": 0, + "tax_amount": 0, + "base_tax_amount": 0, + "weee_tax_applied_amount": null, + "shipping_tax_amount": 0, + "base_shipping_tax_amount": 0, + "subtotal_incl_tax": 0.95, + "shipping_incl_tax": 5, + "base_shipping_incl_tax": 5, + "base_currency_code": "USD", + "quote_currency_code": "USD", + "items_qty": 1, + "items": [ + { + "item_id": 13, + "price": 0.95, + "base_price": 0.95, + "qty": 1, + "row_total": 0.95, + "base_row_total": 0.95, + "row_total_with_discount": 0, + "tax_amount": 0, + "base_tax_amount": 0, + "tax_percent": 0, + "discount_amount": 0, + "base_discount_amount": 0, + "discount_percent": 0, + "price_incl_tax": 0.95, + "base_price_incl_tax": 0.95, + "row_total_incl_tax": 0.95, + "base_row_total_incl_tax": 0.95, + "options": "[]", + "weee_tax_applied_amount": null, + "weee_tax_applied": null, + "extension_attributes": { + "negotiable_quote_item_totals": { + "cost": 0, + "catalog_price": 0.95, + "base_catalog_price": 0.95, + "catalog_price_incl_tax": 0.95, + "base_catalog_price_incl_tax": 0.95, + "cart_price": 0.95, + "base_cart_price": 0.95, + "cart_tax": 0, + "base_cart_tax": 0, + "cart_price_incl_tax": 0.95, + "base_cart_price_incl_tax": 0.95 + } + }, + "name": "Simple Product 2" + } + ], + "total_segments": [ + { + "code": "subtotal", + "title": "Subtotal", + "value": 0.95 + }, + { + "code": "giftwrapping", + "title": "Gift Wrapping", + "value": null, + "extension_attributes": { + "gw_item_ids": [], + "gw_price": "0.00", + "gw_base_price": "0.00", + "gw_items_price": "0.00", + "gw_items_base_price": "0.00", + "gw_card_price": "0.00", + "gw_card_base_price": "0.00", + "gw_base_tax_amount": "0.00", + "gw_tax_amount": "0.00", + "gw_items_base_tax_amount": "0.00", + "gw_items_tax_amount": "0.00", + "gw_card_base_tax_amount": "0.00", + "gw_card_tax_amount": "0.00", + "gw_price_incl_tax": "0.00", + "gw_base_price_incl_tax": "0.00", + "gw_card_price_incl_tax": "0.00", + "gw_card_base_price_incl_tax": "0.00", + "gw_items_price_incl_tax": "0.00", + "gw_items_base_price_incl_tax": "0.00" + } + }, + { + "code": "shipping", + "title": "Shipping & Handling (Flat Rate - Fixed)", + "value": 5 + }, + { + "code": "tax", + "title": "Tax", + "value": 0, + "extension_attributes": { + "tax_grandtotal_details": [] + } + }, + { + "code": "grand_total", + "title": "Grand Total", + "value": 5.95, + "area": "footer" + }, + { + "code": "customerbalance", + "title": "Store Credit", + "value": 0 + }, + { + "code": "reward", + "title": "0 Reward points", + "value": 0 + } + ], + "extension_attributes": { + "negotiable_quote_totals": { + "items_count": 1, + "quote_status": "submitted_by_admin", + "created_at": "2017-05-30 20:41:00", + "updated_at": "2017-06-09 20:26:49", + "customer_group": 10, + "base_to_quote_rate": 1, + "cost_total": 0, + "base_cost_total": 0, + "original_total": 0.95, + "base_original_total": 0.95, + "original_tax": 0, + "base_original_tax": 0, + "original_price_incl_tax": 0.95, + "base_original_price_incl_tax": 0.95, + "negotiated_price_type": null, + "negotiated_price_value": null + }, + "reward_points_balance": 0, + "reward_currency_amount": 0, + "base_reward_currency_amount": 0 + } + } +} +``` + +{% endcollapsible %} + +## Related information + +* [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) +* [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) +* [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) +* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) diff --git a/src/guides/v2.4/b2b/negotiable-manage.md b/src/guides/v2.4/b2b/negotiable-manage.md deleted file mode 120000 index 0d4550977c8..00000000000 --- a/src/guides/v2.4/b2b/negotiable-manage.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/negotiable-manage.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/negotiable-manage.md b/src/guides/v2.4/b2b/negotiable-manage.md new file mode 100644 index 00000000000..0049b569124 --- /dev/null +++ b/src/guides/v2.4/b2b/negotiable-manage.md @@ -0,0 +1,340 @@ +--- +group: b2b-developer-guide +subgroup: 10_REST +title: Manage negotiable quotes +menu_title: Manage negotiable quotes +menu_order: 32 +ee_only: True +level3_menu_node: level3child +level3_subgroup: nq +functional_areas: + - B2B + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/negotiable-manage +status: migrated +--- + +This topic describes the calls required to initiate a negotiable quote and to prepare it to be converted to an order. + + {:.bs-callout-info} +All negotiable quote calls require an admin authorization token. + +**REST Endpoints:** + +```json +POST /V1/negotiableQuote/request +POST /V1/negotiableQuote/submitToCustomer +POST /V1/negotiableQuote/decline +POST /V1/negotiableQuote/pricesUpdated +GET /V1/negotiableQuote/:quoteId/comments +GET /V1/negotiableQuote/attachmentContent +PUT /V1/negotiableQuote/:quoteId/shippingMethod +``` + +**NegotiableQuoteManagementInterface Parameters:** + +The following table lists the parameters defined in `CompanyInterface`. + +Name | Description | Format | Requirements +--- | --- | --- |--- +`quoteId` | Identifies the target quote for the operation. | integer | Required +`quoteName` | The name of the quote to be created. | string | Required +`comment` | The comment to add to the quote. | string | Optional +`files` | An array of files to add to the quote | array | Optional + +The buyer or the seller can optionally attach up to 10 files to provide details about the quote. Each file must be converted into base64. + +The `files` array contains the following parameters + +Name | Description | Format | Requirements +--- | --- | --- |--- +`base64_encoded_data` | A string in base 64 that defines the contents of the added file | string | Required +`type` | Defines the type of file, such as `text/plain` or `application/pdf`| string | Optional +`name` | The name of the file to be uploaded, such as `quote.txt` or `quote.pdf`. | string | Required + +### Request a negotiable quote + +Before negotiable quote can begin, the following conditions must be met: + +* A regular Magento quote has been created (`POST /V1/customers/:customerId/carts` or `POST /V1/customers/carts/mine`) +* The quote contains items (`POST /V1/carts/:quoteId/items`) + +If the negotiable quote requires a shipping address (for negotiation or tax calculations), you can add it to the standard quote before initiating the negotiable quote (`POST /V1/carts/:cartId/shipping-information`) + +{:.bs-callout-info} +Requesting a negotiable quote requires an admin authorization token. + +**Service Name:** + +`negotiableQuoteNegotiableQuoteManagementV1` + +**Sample Usage:** + +`POST /rest//V1/negotiableQuote/request` + +**Payload:** + +```json +{ + "quoteId": 3, + "quoteName": "First quote", + "comment": "Requesting a 5% discount", + "files": [ + { + "base64_encoded_data": "VGhhbmsgeW91IGZvciByZWFkaW5nIHRoZSBNYWdlbnRvIEIyQiBkb2N1bWVudGF0aW9uLg==", + "name": "quote.txt" + } + ] +} +``` + +**Response:** + +`true`, indicating the request was successful + +Magento creates a negotiable quote in the `Created` state. + +### Submit a negotiable quote to a buyer + +When you submit a negotiable quote to the buyer, the status for the buyer changes to "Updated". The buyer can subsequently edit or update the quote. + +The seller can send a request to submit the quote to the buyer. The request can be submitted only for quotes in the following system states: + +* Created +* Processing by admin +* Submitted by customer + +When the quote is submitted to the buyer: + +* Magento checks catalog prices (price per item), cart rules, and discounts then recalculates the prices and taxes. The shipping price and the negotiated price are not affected (if they are entered into the quote). +* Items that are no longer active or available for this buyer are removed from quote and prices are recalculated. +* The quote state is changed to Submitted by admin. + +**Service Name:** + +`negotiableQuoteNegotiableQuoteManagementV1` + +**Sample Usage:** + +`POST /rest//V1/negotiableQuote/submitToCustomer` + +**Payload:** + +```json +{ + "quoteId": 3, + "comment": "It'd be our pleasure. Please proceed with your order." +} +``` + +**Response:** + +`true`, indicating the request was successful + +### Update a quote + +Use the `PUT /V1/negotiableQuote/:quoteId` call to update a quote. See [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) for use cases. + +### Recalculate prices + +The process of completing a negotiable quote can take days, or even longer. During that time, the prices for the items in the quote may have changed directly or indirectly. For example, someone could have changed prices in the shared catalogs or adjusted price rules, and the prices in the negotiable quote are stale. This call refreshes item prices, taxes, discounts, cart rules in the negotiable quote. Quotes that are locked for the seller will not be updated. + +The request can be applied to one or more quotes at the same time. + +**Sample Usage:** + +`POST /rest//V1/negotiableQuote/pricesUpdated` + +**Payload:** + +```json +{ + "quoteIds": [3] +} +``` + +**Response:** + +`true`, indicating the request was successful + +### Set the shipping method + +To set the shipping method, the quote must be in the `created`, `processing_by_admin` or `submitted_by_customer`. In addition, the quote must have a shipping address but no shipping method or shipping price. + +**Sample Usage:** + +`PUT /rest//V1/negotiableQuote/3/shippingMethod` + +**Payload:** + +```json +{ + "shippingMethod": "fixedrate" +} +``` + +**Response:** + +### Decline a quote + +The seller can send a request to decline the quote. The request can be submitted only for quotes in the following system states: + +* Created +* Processing by admin +* Submitted by customer + +When you decline a quote, all custom pricing will be removed from the quote. The buyer will be able to place an order using their standard catalog prices and discounts. + +**Service Name:** + +`negotiableQuoteNegotiableQuoteManagementV1` + +**Sample Usage:** + +`POST /rest//V1/negotiableQuote/decline` + +**Payload:** + +```json +{ + "quoteId": 80, + "reason": "Your order is too large. " +} +``` + +**Response:** + +`true`, indicating the request was successful + +## Miscellaneous operations + +These tasks are not essential for completing a negotiable quote, but might be useful + +### List all comments for a quote + +Magento returns all the comments associated with the specified quote ID. The comments are listed in chronological order, with the oldest comment listed first. A `creator_type` value of `3` indicates the buyer made the comment. If the value is `2`, the seller commented. + +**Sample Usage:** + +`GET /rest//V1/negotiableQuote/87/comments` + +**Payload:** + +Not applicable + +**Response:** + +```json +[ + { + "entity_id": 6, + "parent_id": 87, + "creator_type": 3, + "is_decline": 0, + "is_draft": 0, + "creator_id": 1, + "comment": "Requesting a 5% discount", + "created_at": "2017-06-01 21:14:51", + "attachments": [ + { + "attachment_id": 1, + "comment_id": 12, + "file_name": "hello.txt", + "file_path": "/h/e/hello.txt", + "file_type": null + } + ] + }, + { + "entity_id": 7, + "parent_id": 87, + "creator_type": 2, + "is_decline": 0, + "is_draft": 0, + "creator_id": 1, + "comment": "We cannot discount Configurable Product 1, because the price is already discounted. We can adjust the overall price so the remaining items are discounted 5%. Please let us know whether this is acceptable. ", + "created_at": "2017-06-01 21:29:15", + "attachments": [] + }, + { + "entity_id": 8, + "parent_id": 87, + "creator_type": 3, + "is_decline": 0, + "is_draft": 0, + "creator_id": 1, + "comment": "That is fine. Please apply the discounts to our order.", + "created_at": "2017-06-01 21:30:30", + "attachments": [] + }, + { + "entity_id": 9, + "parent_id": 87, + "creator_type": 2, + "is_decline": 0, + "is_draft": 0, + "creator_id": 1, + "comment": "We're taking $27.50 off your quote total. That's 5% of the cost of the other items in your cart.", + "created_at": "2017-06-01 21:40:19", + "attachments": [] + }, + { + "entity_id": 10, + "parent_id": 87, + "creator_type": 3, + "is_decline": 0, + "is_draft": 0, + "creator_id": 1, + "comment": "Added a shipping address", + "created_at": "2017-06-01 21:43:03", + "attachments": [] + }, + { + "entity_id": 11, + "parent_id": 87, + "creator_type": 2, + "is_decline": 0, + "is_draft": 0, + "creator_id": 1, + "comment": "OK", + "created_at": "2017-06-01 21:44:16", + "attachments": [] + } +] +``` + +### Retrieve a negotiable quote attachment + +Use the `attachmentContent` call to retrieve the files (in base64 format) attached to a negotiable quote. + +`negotiableQuoteAttachmentContentManagementV1` + +**Sample Usage:** + +`GET /rest//V1/negotiableQuote/attachmentContent` + +**Payload:** + +Not applicable + +**Response:** + +```json +{ + "quoteId": 2, + "quoteName": "First quote", + "files": [ + { + "base64_encoded_data": "VGhhbmsgeW91IGZvciByZWFkaW5nIHRoZSBNYWdlbnRvIEIyQiBkb2N1bWVudGF0aW9uLg==", + "name": "quote.txt" + } + ] +} +``` + +## Related information + +* [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) +* [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) +* [Negotiable quote checkout]({{ page.baseurl }}/b2b/negotiable-checkout.html) +* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) diff --git a/src/guides/v2.4/b2b/negotiable-order-workflow.md b/src/guides/v2.4/b2b/negotiable-order-workflow.md index 8f0e490b93c..d6e6ffb0e57 100644 --- a/src/guides/v2.4/b2b/negotiable-order-workflow.md +++ b/src/guides/v2.4/b2b/negotiable-order-workflow.md @@ -2,6 +2,8 @@ group: b2b-developer-guide title: Place a negotiable quote order ee_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/negotiable-order-workflow +status: migrated --- This topic describes how REST calls can be used to place items in a shopping cart, initiate and complete the process of negotiating a quote, and reimbursing the buyer's credit upon receipt of payment. @@ -10,11 +12,11 @@ This topic describes how REST calls can be used to place items in a shopping car * You have [installed and enabled]({{ site.baseurl }}/extensions/b2b/) {{site.data.var.b2b}}. * You have [created a company]({{ page.baseurl }}/b2b/company-object.html) and a [company user]({{ page.baseurl }}/b2b/company-object.html). -* You have an integration or [admin authorization token]({{ page.baseurl }}/rest/tutorials/orders/order-admin-token.html) to make calls on behalf of seller, and a [customer token]({{ page.baseurl }}/rest/tutorials/orders/order-create-customer.html#get-token) to make calls on behalf of the company user. +* You have an integration or [admin authorization token](https://developer.adobe.com/commerce/webapi/rest/tutorials/orders/order-admin-token) to make calls on behalf of seller, and a [customer token](https://developer.adobe.com/commerce/webapi/rest/tutorials/orders/order-create-customer#get-token) to make calls on behalf of the company user. ## Prepare the order -The steps in this section are similar to those in the [Order processing tutorial]({{ page.baseurl }}/rest/tutorials/orders/order-intro.html), except that different products are added to the cart. +The steps in this section are similar to those in the [Order processing tutorial](https://developer.adobe.com/commerce/webapi/rest/tutorials/orders/), except that different products are added to the cart. ### Create a shopping cart @@ -1000,7 +1002,7 @@ Authorization Bearer ## Related information -* [Order processing tutorial]({{ page.baseurl }}/rest/tutorials/orders/order-intro.html) +* [Order processing tutorial](https://developer.adobe.com/commerce/webapi/rest/tutorials/orders/) * [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) * [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) * [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) diff --git a/src/guides/v2.4/b2b/negotiable-quote.md b/src/guides/v2.4/b2b/negotiable-quote.md deleted file mode 120000 index 7665d7502cf..00000000000 --- a/src/guides/v2.4/b2b/negotiable-quote.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/negotiable-quote.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/negotiable-quote.md b/src/guides/v2.4/b2b/negotiable-quote.md new file mode 100644 index 00000000000..40775cd9709 --- /dev/null +++ b/src/guides/v2.4/b2b/negotiable-quote.md @@ -0,0 +1,74 @@ +--- +group: b2b-developer-guide +subgroup: 10_REST +title: Integrate with the NegotiableQuote module +menu_title: Integrate with the NegotiableQuote module +menu_order: 31 +ee_only: True +level3_menu_node: level3child +level3_subgroup: nq +functional_areas: + - B2B + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/negotiable-quote +status: migrated +--- + +Negotiable quotes are a mechanism that allows a company user (buyer) and a seller (admin user) to negotiate product and/or shipping prices before the company user places an order. Its functionality is available for companies only. + +The negotiable quote lifecycle includes a number of stages, as shown on the diagram below. + +![Negotiable quote workflow]({{ site.baseurl }}/common/images/b2b/quote-workflow.jpg) + +The quoting process itself can be a continuous process, with a number of repeating cycles until the agreement is reached. + +* The buyer creates and submits a negotiable quote +* The seller reviews and modifies or declines the quote +* The buyer reviews the seller's counteroffer +* Upon agreement, the buyer begins the checkout process and the system converts the negotiable quote into an order + +{:.bs-callout-info} +You cannot negotiate prices on individual items. + +## Quote statuses + +The quote life cycle is managed via quote statuses. The quoting interface allows both a seller and a buyer to manage items in the quote (add, delete, change quantity) as well as make an offer (or request a quote) for items and/or for shipping. + +The negotiated price set in the negotiable quote is exactly the price that will be applied on a quote during checkout, order generation, and invoice generation. + +Status | Description | Available actions to seller +--- | --- | --- +New | The buyer submitted the quote, but the seller has not opened it yet. The buyer can edit the quote.

        The system creates a new quote record with its own ID. | View +Open | The seller has opened the submitted quote and is reviewing/modifying it. The seller can edit the quote, but the buyer cannot. | View, submit, decline, save as draft.

        Edit the expiration date, item quantity, add/remove product items, enter a proposed price, add shipping method and shipping price, add comments. +Submitted | The seller has reviewed the quote and has sent it back to buyer. The seller cannot edit the quote. | View +Client reviewed | The buyer has opened the quote submitted by seller and is modifying it, by changing items or adding a shipping address. The seller cannot edit the quote. | View +Updated | The buyer has re-submitted the quote to seller. The seller can edit the quote, but the buyer cannot. | View, submit, decline, save as draft.

        Edit the expiration date, item quantity, add/remove product items, enter a proposed price, add shipping method and shipping price, add comments. +Ordered | The buyer has purchased the quote, and Magento converts the quote to an order. Neither the seller nor the buyer can edit the quote. | View +Closed | The buyer has cancelled the quote and thus stopped the negotiation process. Neither the seller nor the buyer can edit the quote.

        The buyer clicks the **Close** button from the Quote details page. (Not available using Web API) | View +Declined | The seller has declined the quote. All custom pricing (if any) is removed from the quote. In admin panel, the quote is locked for editing. | View +Expired | The quote is on the buyer's side, and the quote's expiration date has passed. | View + +The following table maps the internal Magento system state to the statuses displayed on the Storefront and Admin. + +System state | Buyer status | Seller status +--- | --- | --- +Created | Submitted | New +Processing by customer | Open | Client Reviewed +Processing by admin | Pending | Open +Submitted by customer | Submitted | Updated +Submitted by admin | Updated | Submitted +Ordered | Ordered | Ordered +Expired | Expired | Expired +Declined | Declined | Declined +Closed | Closed | Closed + +The following diagram shows the negotiable quote lifecycle from the perspective of statuses. + +![Negotiable quote status]({{ site.baseurl }}/common/images/b2b/quote-statuses.png) + +## Related information + +* [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) +* [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) +* [Negotiable quote checkout]({{ page.baseurl }}/b2b/negotiable-checkout.html) +* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) diff --git a/src/guides/v2.4/b2b/negotiable-update.md b/src/guides/v2.4/b2b/negotiable-update.md deleted file mode 120000 index c78926a4640..00000000000 --- a/src/guides/v2.4/b2b/negotiable-update.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/negotiable-update.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/negotiable-update.md b/src/guides/v2.4/b2b/negotiable-update.md new file mode 100644 index 00000000000..c459a297da0 --- /dev/null +++ b/src/guides/v2.4/b2b/negotiable-update.md @@ -0,0 +1,161 @@ +--- +group: b2b-developer-guide +title: Update a negotiable quote +ee_only: true +functional_areas: + - B2B + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/negotiable-update +status: migrated +--- + +Sellers and buyers can edit a negotiable quote at various times during the quote's lifecycle. Both use the `PUT /V1/negotiableQuote/:quoteId` call to update the quote. This call is defined in the +`quoteCartRepositoryV1` service and is functionally similar to the +`PUT /V1/carts/mine` call. + +The `quote` object now contains a set of `negotiable_quote` extension attributes that can be used to update a quote. + +Name | Description | Format | Requirements +--- | --- | --- | --- +`quote_id` | Negotiable quote ID | integer | Required to create or update a negotiable quote +`is_regular_quote` | Flag for the negotiable quote | boolean | Optional +`status` | One of `created`, `submitted_by_customer`, `submitted_by_admin`, `processing_by_customer`, `processing_by_admin`, `ordered`, `expired`, `declined`, `closed` | string | Optional +`negotiated_price_type` | 1 - Percentage discount; 2 - Fixed price; 3 - proposed total | integer | Required to set a negotiated price +`negotiated_price_value` | Discount amount defined by the seller | number | Required to set a negotiated price +`shipping_price` | Custom price for shipping defined by the seller | number | Optional +`quote_name` | Name assigned to the negotiable quote | string | Optional +`expiration_period` | Expiration date for the quote. The format must be `YYYY-MM-DD`. | string | Optional +`email_notification_status` | Recent notifications that have been sent | integer | Optional +`has_unconfirmed_changes` | Indicates there are some changes that the Admin has not seen yet | boolean | Optional +`is_shipping_tax_changed` | Indicates whether shipping taxes have changed | boolean | Optional +`is_customer_price_changed` | Indicates whether the price for the product has changed | boolean | Optional +`notifications` | Binary mask where the current notifications are stored | integer | Optional +`applied_rule_ids` | Applied shopping cart rules | string | Optional +`is_address_draft` | Drop the address if the checkout is not completed. | boolean | Optional +`deleted_sku` | The SKUs of any deleted products | string | Optional +`creator_id` | Quote creator ID | integer | Optional +`creator_type` | 1 - Integration; 2 - Admin; 3 - Customer; 4 - Guest | integer | Optional +`original_total_price` | Original total price | number | Optional +`base_original_total_price` | Base original total price | number | Optional +`negotiated_total_price` | Negotiated total price | number | Optional +`base_negotiated_total_price` | Base negotiated total price | number | Optional + +### Set a negotiated price + +In every successful negotiate quote, the seller must set the negotiated price. + +The `negotiated_price_type` can have one of the following values: + +`1` - Apply a percentage discount to the quote. The `negotiated_price_value` parameter indicates the percentage. + +`2` - Apply a fixed amount as a discount for the quote. The `negotiated_price_value` parameter specifies the amount of the discount. + +`3` - Set a proposed price for the entire quote. The `negotiated_price_value` parameter specifies the proposed price. + +**Service Name:** + +`quoteCartRepositoryV1` + +**Sample Usage:** + +`PUT /rest//V1/negotiableQuote/6` + +**Payload:** + +```json +{ + "quote": { + "id": 6, + "extension_attributes": { + "negotiable_quote": { + "negotiated_price_type": 1, + "negotiated_price_value": 5 + } + } + } +} +``` + +### Add a new quote item to the negotiable quote + +The buyer can add, update, or delete items from the quote under the following conditions: + +* The quote is in one of the following system states: `created`, `processing_by_admin`, or `submitted_by_customer`. +* The quote doesn't have a negotiated price. + +**Sample Usage:** + +`POST /rest//V1/carts/mine/items` + +**Headers:** + +```terminal +Content-Type application/json +Authorization Bearer +``` + +**Payload:** + +```json +{ + "cartItem": { + "sku": "24-MB01", + "qty": 1, + "quote_id": "7" + } +} +``` + +**Response:** + +```json +{ + "item_id": 18, + "sku": "24-MB01", + "qty": 1, + "name": "Joust Duffle Bag", + "price": 34, + "product_type": "simple", + "quote_id": "7", + "extension_attributes": { + "negotiable_quote_item": { + "item_id": 18, + "original_price": 34, + "original_tax_amount": 0, + "original_discount_amount": 0 + } + } +} +``` + +### Change the quote expiration date + +**Sample Usage:** + +`PUT /rest//V1/negotiableQuote/6` + +**Payload:** + +```json +{ + "quote": { + "id": 6, + "extension_attributes": { + "negotiable_quote": { + "expiration_period": "2017-09-30" + } + } + } +} +``` + +**Response:** + +`[]` + +## Related information + +* [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) +* [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) +* [Negotiable quote checkout]({{ page.baseurl }}/b2b/negotiable-checkout.html) +* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) diff --git a/src/guides/v2.4/b2b/roles.md b/src/guides/v2.4/b2b/roles.md index 8fe5a1ae846..3d6ba1d0c2f 100644 --- a/src/guides/v2.4/b2b/roles.md +++ b/src/guides/v2.4/b2b/roles.md @@ -5,6 +5,8 @@ menu_title: Manage company roles ee_only: True functional_areas: - B2B +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/roles +status: migrated --- Within a company, customers may have different job roles, levels of responsibility, and access to information about their company. {{site.data.var.b2b}} defines several types of system resources, and the Company Admin (or an integration that operates on the behalf of the Company Admin) grants or denies access to these resources using company roles. The Company Admin has access to all resources. @@ -650,7 +652,7 @@ None The following call returns all roles that have been created for a company (`company_id` = `2`). -See [Search using REST APIs]({{ page.baseurl }}/rest/performing-searches.html) for information about constructing a search query. +See [Search using REST APIs](https://developer.adobe.com/commerce/webapi/rest/use-rest/performing-searches) for information about constructing a search query. **Sample Usage:** diff --git a/src/guides/v2.4/b2b/shared-cat-company.md b/src/guides/v2.4/b2b/shared-cat-company.md deleted file mode 120000 index 20aabe16af8..00000000000 --- a/src/guides/v2.4/b2b/shared-cat-company.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/shared-cat-company.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/shared-cat-company.md b/src/guides/v2.4/b2b/shared-cat-company.md new file mode 100644 index 00000000000..db45fd872c2 --- /dev/null +++ b/src/guides/v2.4/b2b/shared-cat-company.md @@ -0,0 +1,109 @@ +--- +group: b2b-developer-guide +title: Assign companies to a shared catalog +ee_only: true +functional_areas: + - B2B + - Catalog + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/shared-cat-company +status: migrated +--- + +A shared catalog must be assigned to one or more companies before it can be accessed by the company users. + +**Service name:** + +`sharedCatalogCompanyManagementV1` + +**REST endpoints:** + +```terminal +POST /V1/sharedCatalog/:sharedCatalogId/assignCompanies +POST /V1/sharedCatalog/:sharedCatalogId/unassignCompanies +GET /V1/sharedCatalog/:sharedCatalogId/companies +``` + +**Company parameters:** + + {:.bs-callout-info} +Although you can specify other parameters defined within a `categories` object, the `id` is the only one used to assign or unassign a category to a shared catalog. + +Name | Description | Format | Requirements +--- | --- | --- | --- +`id` | The company ID number | integer | Required to assign or unassign a company to a shared catalog + +## Assign companies to shared catalog + +This action works as an update. It does not replace companies that have already been assigned. + +If a specified company is already assigned to a different shared catalog, this request unassigns the company from the previous catalog and assigns to the new one. + +**Sample usage:** + +`POST /rest//V1/sharedCatalog/2/assignCompanies` + +**Payload:** + +```json +{ + "companies": [ + { + "id": 1 + }, + { + "id": 2 + } + ] +} +``` + +**Response:** + +`true`, indicating the operation was successful + +## Unassign companies from a shared catalog + +When you unassign a company from a custom catalog, the system automatically assigns this company to the public shared catalog. You cannot unassign a company from the public catalog. + +**Sample usage:** + +`POST /rest//V1/sharedCatalog/2/unassignCompanies` + +**Payload:** + +```json +{ + "companies": [ + { + "id": 2 + } + ] +} +``` + +**Response:** + +`true`, indicating the operation was successful + +## List the shared catalog companies + +The `GET` call returns an array of company IDs. + +**Sample Usage:** + +`GET /rest//V1/sharedCatalog/2/companies` + +**Payload:** + +Not applicable + +**Response:** + +`"[\"1\",\"2\"]"` + +## Related information + +* [Integrate with the SharedCatalog module]({{ page.baseurl }}/b2b/shared-catalog.html) +* [Manage shared catalogs]({{ page.baseurl }}/b2b/shared-cat-manage.html) +* [Assign categories and products]({{ page.baseurl }}/b2b/shared-cat-product-assign.html) diff --git a/src/guides/v2.4/b2b/shared-cat-manage.md b/src/guides/v2.4/b2b/shared-cat-manage.md deleted file mode 120000 index f9e57d72353..00000000000 --- a/src/guides/v2.4/b2b/shared-cat-manage.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/shared-cat-manage.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/shared-cat-manage.md b/src/guides/v2.4/b2b/shared-cat-manage.md new file mode 100644 index 00000000000..a5b1db84c80 --- /dev/null +++ b/src/guides/v2.4/b2b/shared-cat-manage.md @@ -0,0 +1,190 @@ +--- +group: b2b-developer-guide +title: Manage shared catalogs +ee_only: true +functional_areas: + - B2B + - Catalog + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/shared-cat-manage +status: migrated +--- + +## Manage custom shared catalogs + +{{site.data.var.b2b}} provides two types of shared catalog: public and custom. A public catalog is the default shared catalog. It is automatically displayed to all guest customers and to logged-in customers that are not company users. The seller assigns a custom shared catalog to specific companies as configured by admin. There can only be one public catalog, and it cannot be deleted. + +**Service name:** + +`sharedCatalogSharedCatalogRepositoryV1` + +**REST Endpoints:** + +```terminal +POST /V1/sharedCatalog +PUT /V1/sharedCatalog/:id +GET /V1/sharedCatalog/:sharedCatalogId +DELETE /V1/sharedCatalog/:sharedCatalogId +GET /V1/sharedCatalog/ +``` + +**Shared catalog parameters:** + +Name | Description | Format | Requirements +--- | --- | --- | --- +`id` | The system-generated shared catalog ID number | integer | Required to update a shared catalog. Not applicable for create operations. +`name` | The display name of the shared catalog. Must be unique | string | Required to create or update a shared catalog. +`description` | Describes the shared catalog | string | Optional +`customer_group_id` | A system-generated ID. It cannot be changed. | integer | 0 - Not logged in; 1 - General; 2 - Wholesale; 3 - Retailer +`type` | Indicates whether this is a custom or public shared catalog. | integer | Required to create or update a shared catalog. 0 - Custom; 1 - Public +`created_by` | The user ID of the admin who created the shared catalog | integer | Optional +`store_id` | The store ID the shared catalog is assigned to | integer | Required to create or update a shared catalog. +`tax_class_id` | | integer | Required to create a shared catalog. 2 - Taxable goods; 3 - Retail Customer + +### Create a custom shared catalog + +When B2B is enabled, the system creates a public shared catalog named `Default (General)`. Magento allows only one public shared catalog at a time. You can create an unlimited number of custom shared catalogs. + +**Sample Usage:** + +`POST /rest//V1/sharedCatalog` + +**Payload:** + +```json +{ + "sharedCatalog": { + "name": "Test", + "type": 0, + "store_id": 0, + "tax_class_id": 3 + } +} +``` + +**Response:** + +The shared catalog `id`, such as `2`. + +### Update a characteristics of a shared catalog + +You cannot change the `type` from public (`1`) to custom (`0`). If you need to replace the public shared catalog, create a custom catalog and change its type to public. + +**Sample Usage:** + +`PUT /rest//V1/sharedCatalog/2` + +```json +{ + "sharedCatalog": { + "id": 2, + "name": "Custom shared catalog", + "description": "Just a sample custom shared catalog.", + "type": 0, + "store_id": 0, + "tax_class_id": 3 + } +} +``` + +**Response:** + +The shared catalog `id`, such as `2`. + +### Retrieve general information about a shared catalog + +This call returns information about the specified shared catalog. + +**Sample Usage:** + +`GET /rest//V1/sharedCatalog/2` + +**Payload:** + +Not applicable + +**Response:** + +```json +{ + "id": 2, + "name": "Custom shared catalog", + "description": "Just a sample custom shared catalog.", + "customer_group_id": 4, + "type": 0, + "created_at": "2017-07-21 15:39:40", + "created_by": 1, + "store_id": 0, + "tax_class_id": 3 +} +``` + +### Delete a shared catalog + +Only custom shared catalogs can be deleted. When a custom catalog is deleted, the assigned companies are re-assigned to the default public catalog. + +**Sample Usage:** + +`DELETE /rest//V1/sharedCatalog/2` + +**Payload:** + +Not applicable + +**Response:** + +`true`, indicating the request was successful + +### Search for a shared catalog + +The following search returns all the custom shared catalogs (`type = 0`) in the system. + +See [Search using REST APIs](https://developer.adobe.com/commerce/webapi/rest/use-rest/performing-searches) for information about constructing a search query. + +**Sample Usage:** + +`GET /rest//V1/sharedCatalog?searchCriteria[filter_groups][0][filters][0][field]=type&searchCriteria[filter_groups][0][filters][0][value]=0&searchCriteria[filter_groups][0][filters][0][condition_type]=eq` + +**Payload:** + +Not applicable + +**Response:** + +```json +{ + "items": [ + { + "id": 2, + "name": "Custom shared catalog", + "description": "Just a sample custom shared catalog.", + "customer_group_id": 4, + "type": 0, + "created_at": "2017-07-21 15:39:40", + "created_by": 1, + "store_id": 0, + "tax_class_id": 3 + } + ], + "search_criteria": { + "filter_groups": [ + { + "filters": [ + { + "field": "type", + "value": "0", + "condition_type": "eq" + } + ] + } + ] + }, + "total_count": 1 +} +``` + +## Related information + +* [Integrate with the SharedCatalog module]({{ page.baseurl }}/b2b/shared-catalog.html) +* [Assign categories and products]({{ page.baseurl }}/b2b/shared-cat-product-assign.html) +* [Assign companies]({{ page.baseurl }}/b2b/shared-cat-company.html) diff --git a/src/guides/v2.4/b2b/shared-cat-product-assign.md b/src/guides/v2.4/b2b/shared-cat-product-assign.md deleted file mode 120000 index 54a04edd102..00000000000 --- a/src/guides/v2.4/b2b/shared-cat-product-assign.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/shared-cat-product-assign.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/shared-cat-product-assign.md b/src/guides/v2.4/b2b/shared-cat-product-assign.md new file mode 100644 index 00000000000..502398b0506 --- /dev/null +++ b/src/guides/v2.4/b2b/shared-cat-product-assign.md @@ -0,0 +1,249 @@ +--- +group: b2b-developer-guide +title: Assign categories and products to a shared catalog +ee_only: true +functional_areas: + - B2B + - Catalog + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/shared-cat-product-assign +status: migrated +--- + +The shared catalog configuration process includes assigning categories and products to the shared catalog. To assign these items to a shared catalog, the following conditions must be met: + +* The category structure must already be defined. You cannot create a new category to be included in a shared catalog. Use endpoints like `POST /V1/categories` to create a new category. + +* Each category must already be populated with products. You cannot add a new product to a category to be included in a shared catalog. Use endpoints like `POST /V1/products` to create a new product. + +## Assign categories + +The `sharedCatalogCategoryManagementV1` service is based on `catalogCategoryManagementV1`. To view a store's category structure, call `GET /V1/categories`. + + {:.bs-callout-info} +Products that are defined within a category are not included when you assign a category to a shared catalog. You must add products separately. + +**Service name:** + +`sharedCatalogCategoryManagementV1` + +**REST Endpoints:** + +```terminal +POST /V1/sharedCatalog/:id/assignCategories +POST /V1/sharedCatalog/:id/unassignCategories +GET /V1/sharedCatalog/:id/categories +``` + +**Category parameters:** + + {:.bs-callout-info} +Although you can specify other parameters defined within a `categories` object, the `id` is the only one used to assign or unassign a category to a shared catalog. + +Name | Description | Format | Requirements +--- | --- | --- | --- +`id` | The category ID number | integer | Required to assign or unassign a category + +### Assign categories to shared catalog + +The following example adds the Luma Gear category (`id=3`) as well as its subcategories (`id=4,5,6`) to a custom shared catalog. + +**Sample usage:** + +`POST /rest//V1/sharedCatalog/2/assignCategories` + +**Payload:** + +```json +{ + "categories": [ + { + "id": 3 + }, + { + "id": 4 + }, + { + "id": 5 + }, + { + "id": 6 + } + ] +} +``` + +**Response:** + +`true`, indicating the operation was successful + +### Unassign categories from a shared catalog + +When you unassign a category from a shared catalog, Magento also removes its products from the shared catalog. If a product is assigned to multiple categories, then Magento removes the product from the unassigned category only. + +The following example removes two categories from the shared catalog. + +**Sample usage:** + +`POST /rest//V1/sharedCatalog/2/unassignCategories` + +**Payload:** + +```json +{ + "categories": [ + { + "id": 7 + }, + + { + "id": 8 + } + ] +} +``` + +**Response:** + +`true`, indicating the operation was successful + +### List the shared catalog categories + +The `GET` call returns an array of catalog IDs. + +**Sample Usage:** + +`GET /rest//V1/sharedCatalog/2/categories` + +**Payload:** + +Not applicable + +**Response:** + +```json +[ + 3, + 4, + 5, + 6 +] +``` + +## Assign products + +The `sharedCatalogProductManagementV1` service is based on `catalogProductManagementV1`. To return a list of products defined within a category, call `GET /V1/categories/:categoryId/products`. + +**Service name:** + +`sharedCatalogProductManagementV1` + +**REST endpoints:** + +```terminal +POST /V1/sharedCatalog/:id/assignProducts +POST /V1/sharedCatalog/:id/unassignProducts +GET /V1/sharedCatalog/:id/products +``` + +**Category parameters:** + + {:.bs-callout-info} +Although you can specify other parameters defined within a `products` object, the `sku` is the only one used to assign or unassign a product to a shared catalog. + +Name | Description | Format | Requirements +--- | --- | --- | --- +`sku` | The product's SKU identifier | string | Required to assign or unassign a product to a shared catalog + +### Assign products to shared catalog + +The following example adds two products each in the Bags, Fitness Equipment, and Watches categories to a custom shared catalog. The specified products do not have to be in the same category. + +**Sample usage:** + +`POST /rest//V1/sharedCatalog/2/assignProducts` + +**Payload:** + +```json +{ + "products": [ + { + "sku": "24-MB01" + }, + { + "sku": "24-MB04" + }, + { + "sku": "24-UG06" + }, + { + "sku": "24-UG07" + }, + { + "sku": "24-MG04" + }, + { + "sku": "24-MG01" + } + ] +} +``` + +**Response:** + +`true`, indicating the operation was successful + +### Unassign products from the shared catalog + +Unassigning a product does not remove it from its category or categories. + +**Sample usage:** + +`POST /rest//V1/sharedCatalog/2/unassignProducts` + +**Payload:** + +```json +{ + "products": [ + { + "sku": "24-MG01" + } + ] +} +``` + +**Response:** + +`true`, indicating the operation was successful + +### List the shared catalog products + +The `GET` call returns an array of SKUs. + +**Sample Usage:** + +`GET /rest//V1/sharedCatalog/2/products` + +**Payload:** + +Not applicable + +**Response:** + +```json +[ + "24-MB01", + "24-MB04", + "24-UG06", + "24-UG07", + "24-MG04" +] +``` + +## Related information + +* [Integrate with the SharedCatalog module]({{ page.baseurl }}/b2b/shared-catalog.html) +* [Manage shared catalogs]({{ page.baseurl }}/b2b/shared-cat-manage.html) +* [Assign companies]({{ page.baseurl }}/b2b/shared-cat-company.html) diff --git a/src/guides/v2.4/b2b/shared-catalog.md b/src/guides/v2.4/b2b/shared-catalog.md deleted file mode 120000 index 05a3a2ac762..00000000000 --- a/src/guides/v2.4/b2b/shared-catalog.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/b2b/shared-catalog.md \ No newline at end of file diff --git a/src/guides/v2.4/b2b/shared-catalog.md b/src/guides/v2.4/b2b/shared-catalog.md new file mode 100644 index 00000000000..d276271ab17 --- /dev/null +++ b/src/guides/v2.4/b2b/shared-catalog.md @@ -0,0 +1,31 @@ +--- +group: b2b-developer-guide +subgroup: 10_REST +title: Integrate with the SharedCatalog module +menu_title: Integrate with the SharedCatalog module +menu_order: 21 +ee_only: True +level3_menu_node: level3child +level3_subgroup: shared +functional_areas: + - B2B + - Catalog + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/rest/b2b/shared-catalog +status: migrated +--- + +A shared catalog is an entity that allows a seller to set special rules for the products that company users (buyers) can purchase. By using shared catalogs, a seller can apply different pricing levels for different companies. Also, shared catalogs allow a seller to configure the visibility of categories and products specifically for different companies. + +Products and categories are not created or stored within a shared catalog. The products are defined in the master catalog. (The master catalog is the Magento standard product catalog and is visible to the seller only.) The categories are created within the Categories page, and the seller determines whether a category should be displayed in each shared catalog. + +Custom shared catalogs can be assigned to companies only. They cannot be set for individual users. A company can be assigned only one shared catalog. + +{{site.data.var.b2b}} provides two types of shared catalog: public and custom. A public catalog is the default shared catalog. It is automatically displayed to all guest customers and to logged-in customers that are not company users, though a company can be assigned the public catalog. The seller assigns a custom shared catalog to specific companies. There can only be one public catalog, and it cannot be deleted. + +## Related information + +* [Manage shared catalogs]({{ page.baseurl }}/b2b/shared-cat-manage.html) +* [Assign categories and products]({{ page.baseurl }}/b2b/shared-cat-product-assign.html) +* [Assign companies]({{ page.baseurl }}/b2b/shared-cat-company.html) +* [Manage prices for multiple products](https://developer.adobe.com/commerce/webapi/rest/modules/catalog/catalog-pricing) diff --git a/src/guides/v2.4/bk-get-started-magento.md b/src/guides/v2.4/bk-get-started-magento.md deleted file mode 120000 index fc226b2f75e..00000000000 --- a/src/guides/v2.4/bk-get-started-magento.md +++ /dev/null @@ -1 +0,0 @@ -../v2.3/bk-get-started-magento.md \ No newline at end of file diff --git a/src/guides/v2.4/bk-get-started-magento.md b/src/guides/v2.4/bk-get-started-magento.md new file mode 100644 index 00000000000..61c818e3d3e --- /dev/null +++ b/src/guides/v2.4/bk-get-started-magento.md @@ -0,0 +1,38 @@ +--- +group: web-api +title: Getting started with Magento +menu_title: Getting started with Magento +menu_order: 1 +menu_node: +functional_areas: + - Integration +redirect_to: https://developer.adobe.com/commerce/docs +status: migrated +--- + +## Getting started with Magento {#highlights} + +Welcome to Magento 2.0 documentation! And welcome to Magento 2.0! + +Here we explain the Magento platform and components from the perspective of several audiences: merchants, web store developers (frontend developers), [extension](https://glossary.magento.com/extension) developers, system administrators, installers, and integrators. + +Magento is a highly-customizable eCommerce platform and content management system that is primarily used to build online storefronts or websites for selling merchandise. + +Magento is written using the [PHP](https://glossary.magento.com/php) programming language, and leverages elements of the Zend framework and the model-view-controller architecture. Magento runs on the MySQL relational database, and Magento schema and tables are included in the Magento installation package. + +## Help improve this documentation {#help} + +Magento 2.0 product documentation is hosted on GitHub, and we welcome your +feedback there. + +Click the **Edit this page on GitHub** link at the top of a documentation page to +open the file in our GitHub repository, where you are invited to suggest changes +by creating pull requests, or open a discussion by creating an issue. + +For more information, see our [Contributors Guide](https://github.com/magento/devdocs/blob/master/.github/CONTRIBUTING.md). + +{:.ref-header} +Related topics + +* [Release Notes]({{ page.baseurl }}/release-notes/bk-release-notes.html) +* [Architecture Guide]({{ page.baseurl }}/architecture/bk-architecture.html) diff --git a/src/guides/v2.4/coding-standards/bk-coding-standards.md b/src/guides/v2.4/coding-standards/bk-coding-standards.md deleted file mode 120000 index cbb75078c18..00000000000 --- a/src/guides/v2.4/coding-standards/bk-coding-standards.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/coding-standards/bk-coding-standards.md \ No newline at end of file diff --git a/src/guides/v2.4/coding-standards/bk-coding-standards.md b/src/guides/v2.4/coding-standards/bk-coding-standards.md new file mode 100644 index 00000000000..73370ce17a6 --- /dev/null +++ b/src/guides/v2.4/coding-standards/bk-coding-standards.md @@ -0,0 +1,28 @@ +--- +group: coding-standards +subgroup: 01_Coding standards +title: Coding Standards +landing-page: Coding Standards +menu_title: Coding Standards +menu_order: 1 +menu_node: parent +functional_areas: + - Standards +redirect_to: https://developer.adobe.com/commerce/php/coding-standards/ +status: migrated +--- + + + +Like many large projects, Magento has coding standards. + +Use Magento's coding standards when you contribute to Magento's codebase or create extensions. + +- [Code demarcation standard]({{ page.baseurl }}/coding-standards/code-standard-demarcation.html) +- [PHP coding standard]({{ page.baseurl }}/coding-standards/code-standard-php.html) +- [JavaScript coding standard]({{ page.baseurl }}/coding-standards/code-standard-javascript.html) +- [jQuery widget coding standard]({{ page.baseurl }}/coding-standards/code-standard-jquery-widgets.html) +- [DocBlock standard]({{ page.baseurl }}/coding-standards/docblock-standard-general.html) +- [JavaScript DocBlock standard]({{ page.baseurl }}/coding-standards/docblock-standard-javascript.html) +- [LESS coding standard]({{ page.baseurl }}/coding-standards/code-standard-less.html) +- [HTML style guide]({{ page.baseurl }}/coding-standards/code-standard-html.html) diff --git a/src/guides/v2.4/coding-standards/code-standard-demarcation.md b/src/guides/v2.4/coding-standards/code-standard-demarcation.md deleted file mode 120000 index 98266ffa0ab..00000000000 --- a/src/guides/v2.4/coding-standards/code-standard-demarcation.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/coding-standards/code-standard-demarcation.md \ No newline at end of file diff --git a/src/guides/v2.4/coding-standards/code-standard-demarcation.md b/src/guides/v2.4/coding-standards/code-standard-demarcation.md new file mode 100644 index 00000000000..55377085871 --- /dev/null +++ b/src/guides/v2.4/coding-standards/code-standard-demarcation.md @@ -0,0 +1,485 @@ +--- +group: coding-standards +subgroup: 01_Coding standards +landing-page: Coding standards +title: Code demarcation standard +menu_title: Code demarcation standard +menu_order: 1 +functional_areas: + - Standards +redirect_to: https://developer.adobe.com/commerce/php/coding-standards/code-demarcation/ +status: migrated +--- + +Magento core developers must follow the Magento code demarcation standard. + +This standard is recommended for third-party [extension](https://glossary.magento.com/extension) developers. + +Some parts of Magento code might not comply with the standard, but we are working to gradually improve this. + +The standard was developed in the scope of our efforts to ensure the following: + +- Decouple visual (CSS) layer from the functional (JavaScript) layer. +- Decouple functional (JavaScript) layer from the [markup](https://glossary.magento.com/markup) (HTML). +- Reinstate emphasis on using of [jQuery](https://glossary.magento.com/jquery) templates. +- Reinstate emphasis on decoupling HTML, [CSS](https://glossary.magento.com/css) and JS from [PHP](https://glossary.magento.com/php) classes. + +Use [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt) to interpret the "MUST," "MUST NOT," "REQUIRED," "SHALL," "SHALL NOT," "SHOULD," "SHOULD NOT," "RECOMMENDED," "MAY," and "OPTIONAL" keywords. + +## Semantics + +### For attribute names and values you must use meaningful unabbreviated lowercase words comprised of Latin characters concatenated with a hyphen (`-`) + +- Helps simplify and unify naming conventions that are used to apply visual styles to page elements. + +**Acceptable:** + +```html +
        +

        ...

        +

        ...

        +
        +Scroll to text +``` + +**Unacceptable:** + +```html +
        +

        ...

        +

        ...

        +
        +
        +

        ...

        +

        ...

        +
        +Scroll to text +``` + +### Semantic representation may rely on ID attribute + +- Forces engineers to think about reusable page components instead of unique singleton components. +- Reduces long-term maintenance efforts. + +**Acceptable [PHTML](https://glossary.magento.com/phtml) template:** + +The following acceptable example is terse and uses an Accessible Rich Internet Applications (ARIA) approach. + +```html +
          +
        • button 1
        • +
        • button 2
        • +
        • button 3
        • +
        +
        + + +
        +Scroll to text +``` + +**Unacceptable combination of PHTML, JavaScript, and CSS files:** + +The following unacceptable example replaces a single PHTML file with a combination of a PHTML, JavaScript, and CSS files. + +**PHTML file:** + +```php +
          +
        • button 1
        • +
        • button 2
        • +
        • button 3
        • +
        +``` + +**JavaScript file:** + +```js +$('#my-special-menu').on('click','li[id^="button"]', function() { ... }) +``` + +**CSS file:** + +```css +#my-special-menu { ... } +#my-special-menu > li { ... } +``` + +### You must follow the separation of presentation and content methodology + +The following list will help you make a distinction between the actual meaning of a document, and how this meaning is presented to its readers: + +**Content (Semantics)** includes: + +- logic +- information +- data +- model +- outline +- message + +**Presentation** includes: + +- aesthetic +- graphics +- design +- style +- visualization +- view + +### You must use semantic HTML markup only, and must not use presentation markup + +**Acceptable:** + +```html +

        HTML has been created to semantically represent documents.

        +

        Warning: Following the procedure described below may irreparably damage your equipment.

        +``` + +**Unacceptable:** + +```html +

        HTML has been created to semantically represent documents.

        +

        Warning: Following the procedure described below may irreparably damage your equipment.

        +``` + +## Code demarcation + +### Visual representation must rely only on HTML `class` attributes, CSS pseudo-classes and pseudo-elements, HTML tags, and form element's type attribute and form elements state attributes (example: `disabled`, `checked`). + +As the first option, you are required to use [HTML](https://glossary.magento.com/html) class attributes. In case this option is not applicable then it is recommended to use HTML tags and form element's type attribute. + +- Enforces clean, strict separation between visual and business logic layers. +- Allows [frontend](https://glossary.magento.com/frontend) and [backend](https://glossary.magento.com/backend) teams to work independently. +- Allows changing look and feel without affecting business functionality, and vice versa. +- Enables frontend teams to clean up old styles quickly and easily when refactoring. + +**Acceptable CSS selectors:** + +```css +.notices-wrapper { ... } +.page-header:after { ... } +.payment-list:first-child { ... } +.caution { ... } +.caution.link { ... } +form input[type="password"] { ... } +.control-text:focus { ... } +a:hover { ... } +nav li._active { ... } +``` + +**Unacceptable CSS selectors:** + +```css +#header { ... } +[data-action="delete"] { ... } +form input[name="password"] { ... } +section[role="main"] { ... } +[role="menu] [role="menuitem"] { ... } +[role="menu] [role="menuitem"].active { ... } +``` + +### You must not hard-code CSS styles in JavaScript files + +{% +include note.html +type='info' +content='Exception: CSS attributes where values must be calculated beyond the css-topics/LESS code. + +- Simplifies change of the default look and feel by adding CSS classes to and removing them from elements. +- Improves style extensibility. +- Reduces long-term maintenance efforts by containing CSS styles in a single place.' + +%} + +**Acceptable [JavaScript](https://glossary.magento.com/javascript) [widget](https://glossary.magento.com/widget) file:** + +```js +... + options: { + hOffset: 0, + myCustomElement: '[data-container="my-custom-element"]', + hiddenClass: '_hidden' + } +... + this.element.toggleClass(this.options.hiddenClass); +... + this.options.hOffset = /* calculation based on dimensions of some DOM elements within a widget */ + this.element.find(this.options.myCustomElement).css({'margin-top', this.options.hOffset + 'px'}); +... +``` + +**Unacceptable JavaScript file:** + +```js +this.element.on('click', function() { + if ($(this).is(':visible')) { + $(this).css({ visibility: 'hidden' }); + } else { + $(this).css({ visibility: 'visible' }); + } +}); +``` + +### You must not use inline CSS styles inside HTML tags + +- Improves style extensibility allowing engineers to overload styles easier by toggling classes. +- Enforces clean, strict separation between visual presentation and markup. +- Enables frontend teams quickly and easily clean up old styles. + +**Acceptable PHTML template:** + +```php +
        ...
        +``` + +**Unacceptable PHTML template:** + +```php +
        ...
        +``` + +## Business logic and JavaScript + +### Business logic must rely on only the form, form element name attributes, or data attributes + +- Enforces clean, strict separation between visual and business logic layers. +- Allows frontend and backend teams to work independently. +- Allows changing business logic without affecting styling and vice versa. + +**Acceptable PHTML template:** + +```php +
        +
        More details
        +``` + +**Acceptable JavaScript file:** + +```js +options { + deleteAction: '[data-action="delete"]', + tooltip: '[data-role="tooltip"]' +} +... +this.element.find(this.options.deleteAction).on( ... ); +this.element.on('click', this.options.deleteAction , function() { ... }); +... +// Globally initialized widgets +$( this.options.tooltip).tooltip(); // Globally for ALL tooltip elements +... +``` + +**Unacceptable PHTML file:** + +```html +
        +``` + +**Unacceptable JavaScript file:** + +```js +$('#my-widget').doSomething(); +$('.parent').on('click', '.button', function() { ... }); +$('form').validate(); +$('[role="menu"]').navigation(); +``` + +### You must assign HTML helper classes in JavaScript to modify presentation layer + +HTML helper class names added in JavaScript REQUIRE underscore symbol ("_") at the beginning and must be written in lowercase. + +**Acceptable:** + +```html +
        Content
        +
        Content
        +
        Content
        +
        Content
        +``` + +**Unacceptable:** + +```html +
        Content
        +
        Content
        +
        Content
        + +``` + +### You must not select DOM elements based on HTML structure + +- Allows frontend teams to modify markup and themes without affecting business logic. + +**Acceptable JavaScript file:** + +```js +this.element.find('[data-action="edit"]'); +this.elements.closest('[data-container]'); +``` + +**Unacceptable JavaScript file:** + +```js +this.element.children().children().html('hello world'); +this.element.parent().find('[data-action="edit"]').data('entity_id'); +``` + +### You must use jQuery templates to insert recurring markup into DOM structure + +- Reinstates emphasis on jQuery templates. For more information, see JavaScript Coding Best Practices. +- Reduces long-term maintenance efforts by having markup code stored in one place. +- Simplifies frontend debugging efforts. + +## PHTML templates and PHP files + +### You must not hard-code inline CSS styles in PHP classes + +- Reduces long-term maintenance efforts by having styles stored in one place. +- Simplifies debugging and reduces number of files to be modified. +- Makes styles more extensible and easier to override when needed. + +**Acceptable PHP file:** + +```php +... +$fieldset->addField('new_category_parent', 'text', [ + 'label' => __('Parent Category'), + 'title' => __('Parent Category'), + 'required' => true, + 'class' => 'parent category', +]); +... +``` + +**Unacceptable PHP file:** + +```php +... +$fieldset->addField('new_category_parent', 'text', [ + 'label' => __('Parent Category'), + 'title' => __('Parent Category'), + 'required' => true, + 'style' => 'border: 1px solid #ccc;', +]); +... +``` + +### You must not hard-code inline JavaScript in PHP classes + +- Reduces long term maintenance by having frontend business logic stored in one place. +- Reduces the number of files to be modified. + +**Acceptable PHP file:** + +```php +... +public function getSelectorOptions() +{ + return $selectorOptions; +} +... +``` + +**Acceptable PHTML template:** + +```php +... +
        +... +``` + +or + +**Acceptable PHTML template:** + +```php +... +
        + +... +``` + +**Unacceptable PHP file:** + +```php +... +public function getAfterElementHtml() +{ + return << +jQuery('#{$htmlId}-suggest').treeSuggest({$selectorOptions}); + +... +``` + +**Unacceptable PHTML template:** + +```php +getAfterElementHtml(); ?> +``` + +### You must not hard-code HTML markup (used in the `` tag) in PHP classes + +- Reduces long-term maintenance efforts by having markup stored in one place. +- Reduces the number of files to be modified. + +**Acceptable PHP file:** + +```php +... +public function getAttributeName($element) +{ + return ($element->getExtType() === 'multiple') ? $element->getId() . '_checkbox' : NULL; +} + +public function getAttributeId($element) +{ + return $element->getId(); +} +... +``` + +**Acceptable PHTML template:** + +```php + + + + +``` + +**Unacceptable PHP file:** + +```php +... +public function getCheckbox($elementName){ + $elementNameTag = $this->getAttributeName($elementName) ? 'name="' . $this->getAttributeName($elementName) . '"' : NULL; + $tpl = ""; + return $tpl; +} +... +``` + +**Unacceptable PHTML template:** + +```php + + + + +``` diff --git a/src/guides/v2.4/coding-standards/code-standard-html.md b/src/guides/v2.4/coding-standards/code-standard-html.md deleted file mode 120000 index 6aeae57681b..00000000000 --- a/src/guides/v2.4/coding-standards/code-standard-html.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/coding-standards/code-standard-html.md \ No newline at end of file diff --git a/src/guides/v2.4/coding-standards/code-standard-html.md b/src/guides/v2.4/coding-standards/code-standard-html.md new file mode 100644 index 00000000000..f31f5516aba --- /dev/null +++ b/src/guides/v2.4/coding-standards/code-standard-html.md @@ -0,0 +1,145 @@ +--- +group: coding-standards +subgroup: 01_Coding standards +title: HTML style guide +landing-page: Coding standards +menu_title: HTML style guide +menu_order: 9 +functional_areas: + - Standards +redirect_to: https://developer.adobe.com/commerce/php/coding-standards/html-style-guide/ +status: migrated +--- + +This style guide defines Magento internal requirements for [HTML](https://glossary.magento.com/html) code style for teams that develop Less and [CSS](https://glossary.magento.com/css) code. We recommend that developers who create extensions and customizations also use these standards. + +The guide is based on the [Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.xml) with certain modifications that are described further. + +## Indentations + +Use only spaces for indentation: + +* Tab size: 4 spaces +* Indent size: 4 spaces +* Continuation indent: 4 spaces + +**Recommended:** + +```html +
          +
        • One
        • +
        • Two
        • +
        +``` + +## End of file + +Add a blank line at the end of file. + +## Self-closing tags + +Always close self-closing tags. + +**Inappropriate:** + +```html +
        +image + +``` + +**Recommended:** + +```html +
        +image + +``` + +## Line length + +Avoid code lines longer than 120 characters. When using an editor, it is inconvenient to scroll right and left to read the HTML code. Align tag attributes one under another to increase code readability. + +**Inappropriate:** + +```html + +``` + +**Recommended:** + +```html + +``` + +## Spaces around equals sign ("=") + +Spaces around equals sign ("=") are acceptable, but not recommended. The code without spaces is easier to read. + +**Not recommended:** + +```html + +``` + +**Recommended:** + +```html + +``` + +## Spaces and colon in attributes + +Use no space before the colon and one space after the colon for the sake of readability. + +**Not recommended:** + +```html + + +``` + +**Recommended:** + +```html + +``` + +## Block-level elements + +Use appropriate HTML5 elements for blocks. The following diagram shows how to define which HTML5 element to use for a block: + +![]({{ site.baseurl }}/common/images/h5d-sectioning-flowchart.png) + +## Class names + +Use semantic class names and IDs. Avoid presentational class names. + +**Inappropriate:** + +```html + +``` + +**Recommended:** + +```html + + +``` + +## Accessibility + +All pages should comply with the [Web Content Accessibility Guidelines (WCAG) 2.0](https://www.w3.org/TR/WCAG20/). + +## Microdata + +All crucial pages (like product page) should contain [microdata](https://www.w3.org/TR/microdata/). Please pay attention to this recommendation when adding new functionality. diff --git a/src/guides/v2.4/coding-standards/code-standard-javascript.md b/src/guides/v2.4/coding-standards/code-standard-javascript.md index 7fcad041123..db846e56ab8 100644 --- a/src/guides/v2.4/coding-standards/code-standard-javascript.md +++ b/src/guides/v2.4/coding-standards/code-standard-javascript.md @@ -4,12 +4,14 @@ title: JavaScript coding standard landing-page: Coding standards functional_areas: - Standards +redirect_to: https://developer.adobe.com/commerce/php/coding-standards/js/ +status: migrated --- Use Magento's [ESLint Rules][eslint-rules] to make sure your code adheres to Magento's coding standards. Developers writing [JavaScript](https://glossary.magento.com/javascript) and [jQuery](https://glossary.magento.com/jquery) code for Magento must adhere to these guidelines and follow the standards listed in this document. -Use [RFC 2119](http://www.ietf.org/rfc/rfc2119.txt) to interpret the "must," "must not," "required," "shall," "shall not," "should," "should not," "recommended," "may," and "optional" keywords. +Use [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt) to interpret the "must," "must not," "required," "shall," "shall not," "should," "should not," "recommended," "may," and "optional" keywords. Magento uses the [jQuery library][jquery] including standard and custom [jQuery widgets][jquery-widgets]. For the jQuery widget coding standard, see [jQuery widget coding standard][jquery-widget-coding-standard]. @@ -363,9 +365,9 @@ These custom rules are included using the `rulePaths` setting in the [Eslint Gru The source code of the rules can be found in the [Eslint custom rules folder][eslint-custom-rules-folder]. [jquery]: https://jquery.com/ -[jquery-widgets]: http://api.jqueryui.com/category/widgets +[jquery-widgets]: https://api.jqueryui.com/category/widgets [jquery-widget-coding-standard]: {{ page.baseurl }}/coding-standards/code-standard-jquery-widgets.html -[eslint]: http://eslint.org/ +[eslint]: https://eslint.org/ [eslint-rules]: https://github.com/magento/magento-coding-standard/blob/develop/eslint/.eslintrc-magento [grunt-eslint-configuration]: {{ site.mage2bloburl }}/{{ page.guide_version }}/dev/tools/grunt/configs/eslint.json [eslint-custom-rules-folder]: {{ site.mage2bloburl }}/{{ page.guide_version }}/dev/tests/static/testsuite/Magento/Test/Js/_files/eslint/rules/ diff --git a/src/guides/v2.4/coding-standards/code-standard-jquery-widgets.md b/src/guides/v2.4/coding-standards/code-standard-jquery-widgets.md deleted file mode 120000 index 9ce02c39eab..00000000000 --- a/src/guides/v2.4/coding-standards/code-standard-jquery-widgets.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/coding-standards/code-standard-jquery-widgets.md \ No newline at end of file diff --git a/src/guides/v2.4/coding-standards/code-standard-jquery-widgets.md b/src/guides/v2.4/coding-standards/code-standard-jquery-widgets.md new file mode 100644 index 00000000000..6251a40ecdb --- /dev/null +++ b/src/guides/v2.4/coding-standards/code-standard-jquery-widgets.md @@ -0,0 +1,357 @@ +--- +group: coding-standards +subgroup: 01_Coding standards +title: jQuery widget coding standard +landing-page: Coding standards +menu_title: jQuery widget coding standard +menu_order: 7 +functional_areas: + - Standards +redirect_to: https://developer.adobe.com/commerce/php/coding-standards/jquery-widgets/ +status: migrated +--- + +In the Magento system, all jQuery UI widgets and interactions are built on a simple, reusable base---the [jQuery UI Widget Factory][jquery-ui-widget-factory]. + +The factory provides a flexible base for building complex, stateful plug-ins with a consistent [API](https://glossary.magento.com/api). +It is designed not only for plug-ins that are part of [jQuery](https://glossary.magento.com/jquery) UI, but for general usage by developers who want to create object-oriented components without reinventing common infrastructure. + +For more information, see the [jQuery Widget API documentation][jquery-ui-api-doc]. + +This standard is mandatory for Magento core developers and recommended for third-party [extension](https://glossary.magento.com/extension) developers. +Some parts of Magento code might not comply with the standard, but we are working to gradually improve this. + +Use [RFC 2119][rfc2119] to interpret the "must," "must not," "required," "shall," "shall not," "should," "should not," "recommended," "may," and "optional" keywords. + +## Naming conventions + +* [Widget](https://glossary.magento.com/widget) names must consist of one or more non-abbreviated English word and in camelcase format. + + ```javascript + (function($) { + $.widget('mage.accordion', $.ui.accordion, { + // ... My custom code ... + }); + ``` + +* Widget names should be verbose enough to fully describe their purpose and behavior. + + ```javascript + // Declaration of the frontend.advancedEventTrigger widget + (function($) { + "use strict"; + + $.widget('mage.advancedEventTrigger', $.ui.button, { + // ... My custom code ... + }); + }) (jQuery); + ``` + +## Instantiation and resources + +* Additional [JavaScript](https://glossary.magento.com/javascript) files used as a resources must be dynamically loaded using the `$.mage.components()` method and must not be included in the `` block. +* Use the `$.mage.components()` method to load additional JavaScript resource files not included in the `` block. +* You must use `$.mage.extend()` to extend an existing set of widget resources. +* You must instantiate widgets using the `data-mage-init` attribute. + You can use the `.mage()` [plug-in](https://glossary.magento.com/plug-in) to instantiate widgets that use callback methods. + + Benefits: + + * You leverage the benefits of `$.mage.extend()` and `$.mage.components()`. + * Using `data-mage-init` minimizes the inline JavaScript code footprint. + * You can modify widget initialization parameters. + + ```javascript + // Widget initialization using the data-mage-init attribute +
        + + // Widget initialization using the mage plug-in + (function($) { + $('selector').mage('dialog', { + close: function(e) { + $(this).dialog('destroy'); + } + }); + })(jQuery); + ``` + +* You can declare callback methods inline JavaScript but not methods and widgets. + + ```javascript + // Widget initialization and configuration + $('selector').mage('dialog', { + close: function(e) { + $(this).dialog('destroy'); + } + }); + + // Widget initialization and binding event handlers + $('selector').mage('dialog').on('dialogclose', { + $(this).dialog('destroy'); + }); + + // Extension for widget in a JavaScript file + $.widget('mage.dialog', $.ui.dialog, { + close: function() { + this.destroy(); + } + }); + + // Extension of widget resources + (function($) { + $.mage + .extend('dialog', 'dialog', + 'getViewFileUrl('Enterprise_\*Module\*::page/js/dialog.js') ?>') + })(jQuery); + ``` + +### Initializing a component on a selector + +There are two ways to initialize a component on a selector: + +* Initialize the component in the `data-mage-init` attribute: + + ```html +
        + ``` + +* Use a script type `text/x-magento-init` attribute: + + ```html + + ``` + +In these cases the path to the file is: + + `Vendor/Module/view/frontend/web/js/jsfilename.js` + + which contains your code: + + ```javascript + define(['uiComponent'], + function (Component) { + 'use strict'; + return Component.extend({ + initialize: function (config, node) { + // some code + } + }); + }); + ``` + +### Initializing a component on a selector with parameters + +When a component is initialized, it is also important to send parameters to it, which are normally determined dynamically in PHP. + +* `data-mage-init` + + ```html +
        + ``` + +* Using a script type `text/x-magento-init` attribute. For example: + + ```html + + ``` + +## Development standards + +* Widgets should comply with the [single responsibility principle][single-responsibility-principle]. + + Widgets should not have responsibilities not related to the [entity](https://glossary.magento.com/entity) described by the widget. + + ```javascript + // Widget "dialog" that is responsible + // only for opening content in an interactive overlay. + $.widget('mage.dialog', { + // Code logic + }); + + // Widget "validation" that is responsible + // only for validating the form fields. + $.widget('mage.validation', $.ui.sortable, { + // Code logic + }); + + $('selector') + .mage('dialog') + .find('form') + .mage('validation'); + ``` + +* Widget properties that modify the widget's behavior must be located in the widget's options to make them configurable and reusable. + + ```javascript + //Declaration of the backend.dialog widget + $.widget('mage.dialog', { + options: { + modal: false, + autoOpen: true, + // Additional widget options + }, + // Additional widget properties + }); + + // Initializing + $('selector').mage('dialog', { + modal: true, + autoOpen: false + }); + ``` + +* Widget communications must be handled by jQuery events + + ```html + + ... + + + + + +
+ .... + +``` + +### Step 1: Define the layout blocks + +ExampleCorp [applies the Luma theme]({{ page.baseurl }}/frontend-dev-guide/themes/theme-apply.html). Using the approach described in [Locate templates, layouts, and styles]({{ page.baseurl }}/frontend-dev-guide/themes/debug-theme.html) they find out that the original block responsible for displaying the header links is defined in + +`/view/frontend/layout/default.xml`: + +```xml + + ... + + + header links + + + +``` + +(See [app/code/Magento/Theme/view/frontend/layout/default.xml]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Theme/view/frontend/layout/default.xml#L43-L47) on GitHub). + +Other modules use this block to add their specific links to the header using the [referenceBlock]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_ref) instruction. For example, see how links are added in the Customer module: [app/code/Magento/Customer/view/frontend/layout/default.xml#L10-L23]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Customer/view/frontend/layout/default.xml#L10-L23) + +The Luma theme [moves]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_mv) the `top.links` block to the new `customer` block in the extending layout file. + +`/Magento_Customer/layout/default.xml` + +```xml + + + ... + +... + +... +``` + +The links that should be in header, but outside the drop-down menu are added in the new `header.links` block (`/Magento_Theme/layout/default.xml`): + +```xml + + + + header links + + + +``` + +### Step 2: Define the templates + +Similar to the way they defined the layout on the previous step, ExampleCorp +defines the template which is used as the drop-down container : `/view/frontend/templates/account/customer.phtml`. + +```php +customerLoggedIn()): ?> +
  • + + + + + + getChildHtml()):?> +
    + getChildHtml();?> +
    + +
  • + +``` + +See [app/code/Magento/Customer/view/frontend/templates/account/customer.phtml]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Customer/view/frontend/templates/account/customer.phtml). + +### Step 3: Extend the base layout to add a block + +ExampleCorp needs to create a new block, say, `header.links`, in the `header.panel` container, to move the links there. As the links can be added to this list by different modules, it is better to add this block to the `default.xml` page configuration of the `Magento_Theme` module. + +So the following [extending]({{ page.baseurl }}/frontend-dev-guide/layouts/layout-extend.html) layout is added in the Orange theme: + +`app/design/frontend/ExampleCorp/orange/Magento_Theme/layout/default.xml` + +```xml + + + + + + + header links + + + + + +``` + +### Step 4: Move links + +To move the links to the `header.links` block, ExampleCorp adds an extending layout: + +`app/design/frontend/ExampleCorp/orange/Magento_Customer/layout/default.xml` + +```xml + + + + + + + + + + + + +``` + +Now the customer links look like following: + +![layout screen1] + +Clicking the **Change** button toggles the `active` CSS class: + +To add quick basic styling and visual behavior to the "dropdown" menu, ExampleCorp added [_extend.less]({{ page.baseurl }}/frontend-dev-guide/css-guide/css_quick_guide_approach.html#simple_extend) to their theme with the following customizations: + +* Redundant elements are hidden with CSS. +* The `.lib-dropdown()` mixin from [Magento UI library]({{ page.baseurl }}/frontend-dev-guide/css-topics/theme-ui-lib.html) was applied to the corresponding element. + +`app/design/frontend/ExampleCorp/orange/web/css/source/_extend.less` + +```css +// +// Common +// _____________________________________________ + +& when (@media-common = true) { + .header.panel .header.links { + .customer-welcome + .authorization-link { + display: none; + } + } +} + +// +// Mobile +// _____________________________________________ + +.media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__m) { + .customer-name, + .customer-welcome + .authorization-link { + display: none; + } +} + +// +// Desktop +// _____________________________________________ + +.media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) { + .customer-welcome { + .lib-dropdown( + @_toggle-selector: ~'.action.switch', + @_options-selector: ~'.customer-menu .header.links', + @_dropdown-actions-padding: 0, + @_icon-font-text-hide: true, + @_icon-font-size: 22px, + @_icon-font-line-height: 22px, + @_dropdown-list-min-width: 160px, + @_dropdown-list-item-hover: transparent, + @_dropdown-list-pointer-position: right, + @_dropdown-list-position-right: 0 + ); + + li { + a { + .lib-link( + @_link-color: #333, + @_link-text-decoration: none, + @_link-color-visited: #333, + @_link-text-decoration-visited: none, + @_link-color-hover: #333, + @_link-text-decoration-hover: none, + @_link-color-active: #333, + @_link-text-decoration-active: none + ); + display: block; + line-height: 1.4; + padding: 8px; + } + } + } +} +``` + +As a result, the customer links look like following: + +![layout screen2] + +[layout transform]: {{site.baseurl}}/common/images/layout_transform21.png +[layout screen1]: {{site.baseurl}}/common/images/layout_screen221.png +[layout screen2]: {{site.baseurl}}/common/images/layout_screen321.png \ No newline at end of file diff --git a/src/guides/v2.4/frontend-dev-guide/layouts/layout-types.md b/src/guides/v2.4/frontend-dev-guide/layouts/layout-types.md deleted file mode 120000 index 96b43bf1b62..00000000000 --- a/src/guides/v2.4/frontend-dev-guide/layouts/layout-types.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/frontend-dev-guide/layouts/layout-types.md \ No newline at end of file diff --git a/src/guides/v2.4/frontend-dev-guide/layouts/layout-types.md b/src/guides/v2.4/frontend-dev-guide/layouts/layout-types.md new file mode 100644 index 00000000000..e4f4dfa43ec --- /dev/null +++ b/src/guides/v2.4/frontend-dev-guide/layouts/layout-types.md @@ -0,0 +1,494 @@ +--- +group: frontend-developer-guide +title: Layout file types +functional_areas: + - Frontend +redirect_to: https://developer.adobe.com/commerce/frontend-core/guide/layouts/types/ +status: migrated +--- + +## What's in this topic + +For a particular page, its layout is defined by two major layout components: *page layout* file and *page configuration* file. + +A page layout file defines the page wireframe, for example, one-column layout. Technically page layout is an .xml file defining the structure inside the `` section of the HTML page markup. Page layouts feature only [containers]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_cont). +All page layouts used for page rendering should be declared in the page layout declaration file. + +Page configuration is also an .xml file. It defines the detailed structure (page header, footer, etc.), contents and page meta information, including the page layout used. Page configuration features both main elements, [blocks]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_block) and [containers]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_cont). + +We also distinguish the third type of layout files, *generic layouts*. They are .xml files which define the contents and detailed structure inside the `` section of the HTML page markup. These files are used for pages returned by AJAX requests, emails, HTML snippets and so on. + +This article gives a comprehensive description of each layout file type. + +## Page layout {#layout-types-page} + +Page layout declares the wireframe of a page inside the `` section. For example, one-column layout or two-column layout. + +Allowed layout instructions: + +* `` +* `` +* [``]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_cont) +* [``]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_ref) +* [``]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_mv) +* [``]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-instructions.html#fedg_layout_xml-instruc_ex_upd) + +Sample page layout: + +`/view/frontend/page_layout/2columns-left.xml` + +```xml + + + + + + + + + + + +``` + +### Page layout files conventional location {#layout-types-page-conv} + +Conventionally page layouts must be located as follows: + +* Module page layouts: `/view/frontend/page_layout` +* Theme page layouts: `/_/page_layout` + +### Page layouts declaration {#layout-types-page-dec} + +To be able to use a layout for actual page rendering, you need to declare it in `layouts.xml`. + +Conventionally layout declaration file can be located in one of the following locations: + +* Module layout declarations: `/view/frontend/layouts.xml` +* Theme layout declaration: `/_/layouts.xml` + +Declare a layout file using the `` instruction, for which specify the following: + +* ``. For example, the `2columns-left.xml` page layout is declared like following: `` +* `` + +Sample page layout declaration file: `/view/frontend/layouts.xml` + +```xml + + + + + + + + + + + + + + +``` + +Use the `layout` attribute in the `page` node of a page configuration file to define a layout type for the page. The following example shows how to use the `3 columns` page layout type for the [Wish List Sharing]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_share.xml#L8) page: + +Override the default `wishlist_index_share.xml` in any one of the following paths and add the `layout="3columns"` in the `page` node. + +* Override the layout in a custom `theme` (_in the case where a custom-built theme is applied on the storefront_): `/Magento_Wishlist/layout/wishlist_index_share.xml` +* Override the layout in custom `module` (_in case the when building third-party extensions and you need to make changes to the existing layout_): `/view/frontend/layout/wishlist_index_share.xml` + +```xml + + + + + + + + + + +``` + +![Wish List Sharing. 3 columns layout page type]({{ page.baseurl }}/frontend-dev-guide/images/wish-list-sharing.png) + +{:.bs-callout-info} +By default, Magento provides 5 page layout types for the frontend (`empty`, `1column`, `2columns-left`, `2columns-right`, and `3columns`) and 3 page layout types for the backend (`admin-empty`, `admin-1column`, and `admin-2columns-left`). + +## Page configuration {#layout-types-conf} + +The page configuration adds content to the wireframe defined in a page layout file. A page configuration also contains page meta-information, and contents of the `` section. + +### Page configuration file conventional location {#layout-type-conf-loc} + +Conventionally page configuration files must be located as follows: + +* Module page configurations: `/view/frontend/layout` +* Theme page configurations: `/_/layout` + +### Page configuration structure and allowed layout instructions + +The following table describes the instructions specific for page configuration files. For the descriptions of common layout instructions see the [Layout instructions]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-instructions.html) article. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ElementAttributesParent ofDescription
    + <page></page> + +
      +
    • + layout = {layout} +
    • +
    • + xsi:noNamespaceSchemaLocation ="{path_to_schema}" +
    • +
    +
    +
      +
    • <html>
    • +
    • <head>
    • +
    • <body>
    • +
    • <update>
    • +
    +
    Mandatory root element.
    <html></html> +

    none

    +
    +
      +
    • <attribute>
    • +
    +
    <head></head>none +
      +
    • <title>
    • +
    • <meta>
    • +
    • <link>
    • +
    • <css>
    • +
    • <font>
    • +
    • <script>
    • +
    • <remove>
    • +
    • <attribute>
    • +
    +
    <body></body>none +
      +
    • <block>
    • +
    • <container>
    • +
    • <move>
    • +
    • <attribute>
    • +
    • <referenceBlock>
    • +
    • <referenceContainer>
    • +
    • <action>
    • +
    +
    <attribute> +
      +
    • name = {arbitrary_name} +
    • +
    • value = {arbitrary_value} +
    • +
    +
    +

    Specified for <html>, rendered like following:

    +

    <html name="value'>

    +
    +

    <title>

    +
    nonenonePage title
    +

    <meta>

    +
    +
      +
    • + content +
    • +
    • + charset +
    • +
    • + http-equiv +
    • +
    • + name +
    • +
    • + scheme +
    • +
    +
    + none +
    +

    <link>

    +
    +
      +
    • + defer +
    • +
    • + ie_condition +
    • +
    • + charset +
    • +
    • + hreflang +
    • +
    • + media +
    • +
    • + rel +
    • +
    • + rev +
    • +
    • + sizes +
    • +
    • + src +
    • +
    • + src_type +
    • +
    • + target +
    • +
    • + type +
    • +
    +
    + none +  
    + <css> + +
      +
    • + defer +
    • +
    • + ie_condition +
    • +
    • + charset +
    • +
    • + hreflang +
    • +
    • + media +
    • +
    • + rel +
    • +
    • + rev +
    • +
    • + sizes +
    • +
    • + src +
    • +
    • + src_type +
    • +
    • + target +
    • +
    • + type +
    • +
    +
    + none +
    +

    <script>

    +
    +
      +
    • + defer +
    • +
    • + ie_condition +
    • +
    • + async +
    • +
    • + charset +
    • +
    • + src +
    • +
    • + src_type +
    • +
    • + type +
    • +
    +
    + none +
    + +## Generic layout {#layout-types-gen} + +Generic layouts define the contents and detailed structure inside the `` section of the HTML page markup. + +### Generic layout file conventional location {#layout-type-gen-loc} + +Conventionally generic layout files must be located as follows: + +* Module generic layouts: `/view/frontend/layout` +* Theme generic layouts: `/_/layout` + +### Generic layout structure and allowed layout instructions + +The following table describes the instructions specific for generic layout files. For the descriptions of common layout instructions see the [Layout instructions]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-instructions.html) article. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ElementAttributesParent ofDescription
    + <layout></layout> + +
      +
    • + + xsi:noNamespaceSchemaLocation="{path_to_schema}" + +
    • +
    +
    +
      +
    • <container>
    • +
    • <update>
    • +
    +
    Mandatory root element.
    + <update> + +
      +
    • + handle="{name_of_handle_to_include}" +
    • +
    +
    +none +
    <container> + + +
      +
    • <block>
    • +
    • <container>
    • +
    • <referenceBlock>
    • +
    • <referenceContainer>
    • +
    +
    Mandatory element
    + +Sample generic layout: + +```xml + + + + + + + +``` diff --git a/src/guides/v2.4/frontend-dev-guide/layouts/product-layouts.md b/src/guides/v2.4/frontend-dev-guide/layouts/product-layouts.md deleted file mode 120000 index 1d9453aca06..00000000000 --- a/src/guides/v2.4/frontend-dev-guide/layouts/product-layouts.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/frontend-dev-guide/layouts/product-layouts.md \ No newline at end of file diff --git a/src/guides/v2.4/frontend-dev-guide/layouts/product-layouts.md b/src/guides/v2.4/frontend-dev-guide/layouts/product-layouts.md new file mode 100644 index 00000000000..f70d7bceba4 --- /dev/null +++ b/src/guides/v2.4/frontend-dev-guide/layouts/product-layouts.md @@ -0,0 +1,74 @@ +--- +group: frontend-developer-guide +title: Product layouts +functional_areas: + - Frontend +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/frontend-core/guide/layouts/product-layouts/ +status: migrated +--- + +This topic provides information about product layouts files. Magento allows you to customize view pages for all product types in the common layout files. It is also possible to perform the customization for a particular product type or even for a concrete product page by Product Entity ID or SKU. + +## Product view page + +Layout file | Description +--- | --- +`catalog_product_view.xml` | Common layout. Affects all product types +`catalog_product_view_type_bundle.xml` | Layout from this file is applied to `bundle` product only +`catalog_product_view_type_configurable.xml` | Layout from this file is applied to `configurable` product only +`catalog_product_view_type_downloadable.xml` | Layout from this file is applied to `downloadable` product only +`catalog_product_view_type_grouped.xml` | Layout from this file is applied to `grouped` product only +`catalog_product_view_type_simple.xml` | Layout from this file is applied to `simple` product only +`catalog_product_view_type_virtual.xml` | Layout from this file is applied to `virtual` product only +`catalog_product_view_id_{id}.xml` | Layout from this file is applied to the specific product by `Entity ID` value. E.g. `catalog_product_view_id_45.xml` +`catalog_product_view_sku_{sku}.xml` | Layout from this file is applied to the specific product by `SKU` value. E.g. `catalog_product_view_sku_24-WG080.xml` + +## Customize product view pages + +Use containers on the product page to structure content in the layout. You can reference the container and add blocks to it. + +Containers assign content structure to a page using container tags within a layout XML file. A container has no additional content except the content of included elements. Examples of containers include: + +* `product.info.main` +* `product.info.price` +* `product.info.stock.sku` +* `product.info.form.content` +* `product.info.extrahint` +* `product.info.social` +* `product.info.media` + +### Example + +```xml + +``` + +## Checkout cart configure page + +Layout file | Description +--- | --- +`checkout_cart_configure.xml` | Common layout. Affects all product types +`checkout_cart_configure_type_bundle.xml` | Layout from this file is applied to `bundle` product only +`checkout_cart_configure_type_configurable.xml` | Layout from this file is applied to `configurable` product only +`checkout_cart_configure_type_downloadable.xml` | Layout from this file is applied to `downloadable` product only +`checkout_cart_configure_type_simple.xml` | Layout from this file is applied to `simple` product only +`checkout_cart_configure_id_{id}.xml` | Layout from this file is applied to the specific product by `Entity ID` value. E.g. `checkout_cart_configure_id_45.xml` +`checkout_cart_configure_sku_{sku}.xml` | Layout from this file is applied to the specific product by `SKU` value. E.g. `checkout_cart_configure_sku_24-WG080.xml` +`checkout_cart_item_renderers.xml` | Layout from this file is applied to renderer's cart page items + +## Wishlist item configure page + +Layout file | Description +--- | --- +`wishlist_index_configure.xml` | Common layout. Affects all product types +`wishlist_index_configure_type_bundle.xml` | Layout from this file is applied to `bundle` product only +`wishlist_index_configure_type_configurable.xml` | Layout from this file is applied to `configurable` product only +`wishlist_index_configure_type_downloadable.xml` | Layout from this file is applied to `downloadable` product only +`wishlist_index_configure_type_grouped.xml` | Layout from this file is applied to `grouped` product only +`wishlist_index_configure_type_simple.xml` | Layout from this file is applied to `simple` product only +`wishlist_index_configure_id_{id}.xml` | Layout from this file is applied to the specific product by `Entity ID` value. E.g. `wishlist_index_configure_id_45.xml` +`wishlist_index_configure_sku_{sku}.xml` | Layout from this file is applied to the specific product by `SKU` value. E.g. `wishlist_index_configure_sku_24-WG080.xml` + +For setting a custom layout on specific category, product, and CMS pages, see [Common layout customization tasks]({{ page.baseurl }}/frontend-dev-guide/layouts/xml-manage.html#create-cms-pageproductcategory-specific-selectable-layouts). diff --git a/src/guides/v2.4/frontend-dev-guide/layouts/xml-instructions.md b/src/guides/v2.4/frontend-dev-guide/layouts/xml-instructions.md deleted file mode 120000 index f93aa8a4806..00000000000 --- a/src/guides/v2.4/frontend-dev-guide/layouts/xml-instructions.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/frontend-dev-guide/layouts/xml-instructions.md \ No newline at end of file diff --git a/src/guides/v2.4/frontend-dev-guide/layouts/xml-instructions.md b/src/guides/v2.4/frontend-dev-guide/layouts/xml-instructions.md new file mode 100644 index 00000000000..d1c54fb7598 --- /dev/null +++ b/src/guides/v2.4/frontend-dev-guide/layouts/xml-instructions.md @@ -0,0 +1,459 @@ +--- +group: frontend-developer-guide +title: Layout instructions +functional_areas: + - Frontend +redirect_to: https://developer.adobe.com/commerce/frontend-core/guide/layouts/xml-instructions/ +status: migrated +--- + +## What's in this topic {#fedg_layout_xml-instruc_overview} + +There are two possible ways to customize page layout in Magento: + +- Changing [layout](https://glossary.magento.com/layout) files. +- Altering templates. + +To change the page wireframe, modify the [page layout] files; all other customizations are performed in the [page configuration] or [generic layout] files. + +## Manage layouts + +To make layout changes available on every page, modify the `default.xml` file. +For example, layout changes added to `app/code/Vendor/Module/view/frontend/layout/default.xml` are loaded on all pages. +To add layout changes to a specific page, use a layout file that corresponds to the page's path. +For example, changes to the `app/code/Vendor/Module/view/frontend/layout/catalog_product_view.xml` page are loaded on the product details page. + +Use these [layout instructions](https://glossary.magento.com/layout-instructions) to: + +- Move a page element to another parent element. +- Add content. +- Remove a page element. +- Arrange the element position. + +The basic set of instructions is the same for all types of layout files. This topic describes these basic instructions. For details about how they are used in a particular layout file type, please refer to the [Layout file types] topic. + +## Common layout instructions {#fedg_layout_xml-instruc_ex} + +Use the following layout instructions to customize your layout: + +- [``](#fedg_layout_xml-instruc_ex_block) +- [``](#fedg_layout_xml-instruc_ex_cont) +- [`before` and `after` attributes](#fedg_xml-instrux_before-after) +- [``](#fedg_layout_xml-instruc_ex_act) +- [`` and ``](#fedg_layout_xml-instruc_ex_ref) +- [``](#fedg_layout_xml-instruc_ex_mv) +- [``](#fedg_layout_xml-instruc_ex_rmv) +- [``](#fedg_layout_xml-instruc_ex_upd) +- [``](#argument) +- [` vs `](#block_vs_container) + +### block {#fedg_layout_xml-instruc_ex_block} + +Defines a block. + +**Details:** A block is a unit of page output that renders some distinctive content (anything visually tangible for the end-user), such as a piece of information or a user interface element. + +Blocks are a foundational building unit for layouts in Magento. They are the link between a PHP block class (which contains logic) and a template (which renders content). Blocks can have children and grandchildren (and so on). Information can be passed from layout XML files to blocks using the `` child node. + +Blocks employ templates to generate HTML. Examples of blocks include a [category](https://glossary.magento.com/category) list, a mini cart, product tags, and product listing. + +{:.bs-callout-info} +We recommend always adding a `name` to blocks. Otherwise, it is given a random name. + +| Attribute | Description | Values | Required? | +|:------- |:------ |:------ |:------ | +| `class` | Name of a class that implements rendering of a particular block. An object of this class is responsible for actual rendering of block output. | A fully-qualified class name, such as `Vendor\Module\Block\Class`. Defaults to `Magento\Framework\View\Element\Template`. | no | +| `display` | Prevents a block from displaying (the associated PHP classes are still loaded). | `true` or `false`. Defaults to `true`. | no | +| `name` | Name that can be used to address the block to which this attribute is assigned. The name must be unique per generated page. If not specified, an automatic name will be assigned in the format ANONYMOUS_n | 0-9, A-Z, a-z, underscore (_), period (.), dash (-). Should start with a letter. Case-sensitive. | no | +| `before` | Used to position the block before an element under the same parent. The element name or alias name is specified in the value. Use dash (-) to position the block before all other elements of its level of nesting. See [before and after attributes](#fedg_xml-instrux_before-after) for details. | Element name or dash (-) | no | +| `after` | Used to position the block after an element under the same parent. The element name or alias name is specified in the value. Use dash (-) to position the block after all other elements of its level of nesting. See [before and after attributes](#fedg_xml-instrux_before-after) for details. | Element name or dash (-) | no | +| `template` | A template that represents the functionality of the block to which this attribute is assigned. If the attribute is omitted, the block will not render any output unless the block class (or a parent class) has the `$_template` property defined correctly. | `Vendor_Module::path/to/template.phtml` (Scope is already in the `templates` directory of the module) | no | +| `as` | An alias name that serves as identifier in the scope of the parent element. | 0-9, A-Z, a-z, underscore (_), period (.), dash (-). Case-sensitive. | no | +| `cacheable` | Defines whether a block element is cacheable. This can be used for development purposes and to make needed elements of the page dynamic. | `true` or `false`. Defaults to `true`. | no | +| `ifconfig` | Makes the block's visibility dependent on a system configuration field. | XPath to the system configuration field. E.g. `contact/contact/enabled` | no | + +To pass parameters use the [``](#argument) instruction. + +Sample of usage in the product listing page layout: + +```xml + +``` + +### container {#fedg_layout_xml-instruc_ex_cont} + +A structure without content that holds other layout elements such as blocks and containers. + +**Details:** +A container renders child elements during view output generation. It can be empty or it can contain an arbitrary set of `` and `` elements. If the `` is empty, and there is no child `` available, it will not be displayed in the frontend source code. + +{:.bs-callout-info} +We recommend always adding a `name` to containers. Otherwise, it is given a random name. + +| Attribute | Description | Values | Required? | +|:------- |:------ |:------ |:------ | +| `name` | A name that can be used to address the container in which this attribute is assigned. The name must be unique per generated page. If not specified, it will be auto-generated. | A-Z, a-z, 0-9, underscore (_), period (.), dash (-). Should start with a letter. Case-sensitive. | No | +| `label` | Describes the purpose of the container. | Any | No | +| `before` | Used to position the container before an element under the same parent. The element name or alias name is specified in the value. Use dash (-) to position the block before all other elements of its level of nesting. See [before and after attributes](#fedg_xml-instrux_before-after) for details. | Element name or dash (`-`) | No | +| `after` | Used to position the container after an element under the same parent. The element name or alias name is specified in the value. Use dash (-) to position the block after all other elements of its level of nesting. See [before and after attributes](#fedg_xml-instrux_before-after) for details. | Element name or dash (-). | No | +| `as` | An alias name that serves as identifier in the scope of the parent element. | 0-9, A-Z, a-z, underscore (_), period (.), dash (-). Case-sensitive. | No | +| `output` | Defines whether to output the root element. If specified, the element will be added to output list. (If not specified, the parent element is responsible for rendering its children.) | Any value except the obsolete `toHtml`. Recommended value is `1`. | No | +| `htmlTag` | Output parameter. If specified, the output is wrapped into specified HTML tag. | Any of the following: `aside`, `dd`, `div`, `dl`, `fieldset`, `main`, `nav`, `header`, `footer`, `ol`, `p`, `section`, `table`, `tfoot`, `ul` | No, Yes - if `htmlClass` or `htmlId` is specified | +| `htmlId` | Output parameter. If specified, the value is added to the wrapper element. If there is no wrapper element, this attribute has no effect. | Any valid HTML 5 `id` value. | No | +| `htmlClass` | Output parameter. If specified, the value is added to the wrapper element. If there is no wrapper element, this attribute has no effect. | Any valid HTML 5 `class` value. | No | + +Sample of usage in layout: + +```xml + + + +``` + +This would add a new column to the page layout. + +#### Controlling children visibility + +The `output` attribute controls the visibility of the container's children elements. +Set this value to `1` to render children content or `0` to disable the output of the entire container. + +Use this feature to make temporary changes to a store, such as disabling a section of the page for a sales event and re-enabling it after the event ends. + +### block vs. container {#block_vs_container} + +- Blocks represents the end of the chain in rendering HTML for Magento. +- Containers contain blocks and can wrap them in an HTML tag. +- Containers do not render any output if there are no children assigned to them. + +### before and after attributes {#fedg_xml-instrux_before-after} + +To help you to position elements in a specific order suitable for design, SEO, usability, or other requirements, Magento software provides the `before` and `after` layout attributes. +These optional attributes can be used in layout XML files to control the order of elements in their common parent. + +The following tables give a detailed description of the results you can get using the `before` and `after` attributes. The first table uses a block a as positioned element. + +| Attribute | Value | Description | +|:------- |:------ |:------ | +| `before` | Dash (-) | The block displays before all other elements in its parent node. | +| `before` | [element name] | The block displays before the named element. | +| `before` | Empty value or [element name] is absent | Use the value of `after`. If that value is empty or absent as well, the element is considered as non-positioned. | +| `after` | Dash (-) | The block displays after all other elements in its parent node. | +| `after` | [element name] | The block displays after the named element. | +| `after` | Empty value or [element name] is absent | Use the value of `before`. If that value is empty or absent as well, the block is considered as non-positioned. | + +#### Examples {#examples} + +| Situation | Result | +|:------- |:------ | +| Both `before` and `after` attributes are present | `after` takes precedence. | +| Both `before` and `after` attributes are absent or empty | The element is considered as non-positioned. All other elements are positioned at their specified locations. The non-positioned element displays at a random position that doesn't violate requirements for the positioned elements. | +| Several elements have `before` or `after` set to dash (-) | All elements display at the top (or bottom, in case of the after attribute), but the ordering of group of these elements is undefined. | +| The `before` or `after` attribute's value refers to an element that is not located in the parent node of the element being defined. | The element displays at a random location that doesn't violate requirements for the correctly positioned elements. | + +Sample usage in a layout: + +```xml + + + + + +``` + +### action {#fedg_layout_xml-instruc_ex_act} + +{:.bs-callout-warning} +The `` instruction is deprecated. If the method implementation allows, use the [``](#argument) for [``](#fedg_layout_xml-instruc_ex_block) or [``](#fedg_layout_xml-instruc_ex_ref) to access the block public API. + +Calls public methods on the block API. + +**Details:** Used to set up the execution of a certain method of the block during block generation; the `` node must be located in the scope of the `` node. + +```xml + + + Text + + + true + + +``` + +`` child nodes are translated into block method arguments. Child nodes names are arbitrary. If there are two or more nodes with the same name under ``, they are passed as one array. + +| Attribute | Description | Values | Required? | +|:------- |:------ |:------ |:------ | +| `method` | The public method that is called during block generation. | The method name in the block | yes | + +To pass parameters, use the [``](#argument) instruction. + +### referenceBlock and referenceContainer {#fedg_layout_xml-instruc_ex_ref} + +Updates in `` and `` are applied to the corresponding `` or ``. + +For example, if you make a reference by ``, you are targeting the block ``. + +To pass parameters to a block use the [``](#argument) instruction. + +| Attribute | Description | Values | Required? | +|:------- |:------ |:------ |:------ | +| `remove` | Allows to remove or cancel the removal of the element. When a container is removed, its child elements are removed as well. | `true` or `false` | no | +| `display` | Allows you to disable rendering of specific block or container with all its children (both set directly and by reference). The PHP objects of the block or container and its children are still generated and available for manipulation. | `true` or `false` | no | + +- The `remove` attribute is optional and its default value is `false`. + + This implementation allows you to remove a block or container in your layout by setting the remove attribute value to `true`, or to cancel the removal of a block or container by setting the value to `false`. + + ```xml + + ``` + +- The `display` attribute is optional and its default value is true. + + You are always able to overwrite this value in your layout. + In situation when remove value is true, the display attribute is ignored. + + ```xml + + ``` + +### move {#fedg_layout_xml-instruc_ex_mv} + +Sets the declared block or container element as a child of another element in the specified order. + +```xml + +``` + +- `` is skipped if the element to be moved is not defined. +- If the `as` attribute is not defined, the current value of the element alias is used. If that is not possible, the value of the `name` attribute is used instead. +- During layout generation, the `` instruction is processed before the removal (set using the `remove` attribute). This means if any elements are moved to the element scheduled for removal, they will be removed as well. + +| Attribute | Description | Values | Required? | +|:------- |:------ |:------ |:------ | +| `element` | Name of the element to move. | Element name | yes | +| `destination` | Name of the target parent element. | Element name | yes | +| `as` | Alias name for the element in the new location. | 0-9, A-Z, a-z, underscore (_), period (.), dash (-). Case-sensitive. | no | +| `after` or `before` | Specifies the element's position relative to siblings. Use dash (-) to position the block before or after all other siblings of its level of nesting. If the attribute is omitted, the element is placed after all siblings. | Element name | no | + +Sample of usage in the page layout: + +```xml + +``` + +### remove {#fedg_layout_xml-instruc_ex_rmv} + +`` is used only to remove the static resources linked in a page `` section. +For removing blocks or containers, use the `remove` attribute for [`` and ``](#fedg_layout_xml-instruc_ex_ref). + +```xml + + + + + + + + + + + + + +``` + +### update {#fedg_layout_xml-instruc_ex_upd} + +Includes a certain layout file. + +```xml + +``` + +The specified [handle] is "included" and executed recursively. + +Sample of usage in the page layout: + +```xml + +``` + +### argument {#argument} + + {:.bs-callout-info} +Magento 2.3.2 added the `shared` attribute. Now, instances of the view models are shared by default. If a view model is required to be a new instance each time, you must add the attribute `shared="false"` on the argument node in the layout xml file. + +Used to pass an argument. Must be always enclosed in [``](#arguments). + +| Attribute | Description | Values | Required? | +|:------- |:------ |:------ |:------ | +| `name` | Argument name. | unique | yes | +| `shared` | If false, creates a new instance of the block. | `false` | no | +| `translate` | Specify whether the string is translatable or not | `true` or `false` | no | +| `xsi:type` | Argument type. | `string`, `boolean`, `object`, `number`, `null`, `array`, `options`, `url`, `helper` | yes | + +To pass multiple arguments use the following construction: + +```xml + + Custom string + true + ... + +``` + +Arguments values set in a layout file can be accessed in [templates] using the `getData('{ArgumentName}')` and `hasData('{ArgumentName}')` methods. The latter returns a boolean defining whether there's any value set. +`{ArgumentName}` is obtained from the `name` attribute the following way: for getting the value of `` the method name is `getData('some_string')`. + +**Example:** + +Setting a value of `css_class` in the `[app/code/Magento/Theme/view/frontend/layout/default.xml]` layout file: + +```xml + + header links + +``` + +Using the value of `css_class` in `[app/code/Magento/Theme/view/frontend/templates/html/title.phtml]`: + +```php +$cssClass = $this->hasCssClass() ? ' ' . $this->getCssClass() : ''; +``` + +#### Argument types examples + +As was described above the argument attribute can be added with different types. +There are examples of all argument types. + +- The *string* type: + +```xml +Some String +``` + +- The *boolean* type: + +```xml +true +``` + +- The *object* type: + +```xml +Vendor\CustomModule\ViewModel\Class +``` + +The `Vendor\CustomModule\ViewModel\Class` class should implement the `\Magento\Framework\View\Element\Block\ArgumentInterface` interface. + +- The *number* type: + +```xml +100 +``` + +- The *null* type: + +```xml + +``` + +- The *array* type: + +```xml + + First Item + Second Item + ... + +``` + +- The *options* type: + +```xml +Vendor\CustomModule\Source\Options\Class +``` + +The `Vendor\CustomModule\Source\Options\Class` class should implement the `\Magento\Framework\Data\OptionSourceInterface` interface. + +- The *url* type: + +```xml + + param1value + param2value + ... + +``` + +The *url* may have parameters, but they are optional. + +- The *helper* type: + +```xml + + firstValue + secondValue + ... + +``` + +The *helper* can use only public methods. In this example the `someMethod()` method should be public. +The argument with *helper* type can contain `param` items which can be passed as a helper method parameters. + +#### Obtain arguments examples in template + +These argument examples can be taken in the template by *getData* method. Another way to take these arguments is using the magic method *get* followed by the name of argument in CamelCase format. Here is an example to retrieve the arguments from above example: + +```php +getData('some_string'); //or $block->getSomeString() + +/** @var bool $isActive */ +$isActive = $block->getData('is_active'); //or $block->getIsActive() + +/** @var Vendor\CustomModule\ViewModel\Class|\Magento\Framework\View\Element\Block\ArgumentInterface $viewModel */ +$viewModel = $block->getData('view_model'); //or $block->getViewModel() + +/** @var string|int|float $someNumber */ +$someNumber = $block->getData('some_number'); //or $block->getSomeNumber() + +/** @var null $nullValue */ +$nullValue = $block->getData('null_value'); //or $block->getNullValue() + +/** @var array $customArray */ +$customArray = $block->getData('custom_array'); //or $block->getCustomArray() + +/** @var array $options */ +$options = $block->getData('options'); //or $block->getoptions() + +/** @var string $shoppingCartUrl */ +$shoppingCartUrl = $block->getData('shopping_cart_url'); //or $block->getShoppingCartUrl() + +/** @var mixed $helperMethodResult */ +$helperMethodResult = $block->getData('helper_method_result'); // or $block->getHelperMethodResult() +``` + +### arguments {#arguments} + +`` is a required container for ``. It does not have its own attributes. + +```xml + + header links + +``` + +[page layout]: {{page.baseurl}}/frontend-dev-guide/layouts/layout-types.html#layout-types-page +[page configuration]: {{page.baseurl}}/frontend-dev-guide/layouts/layout-types.html#layout-types-conf +[generic layout]: {{page.baseurl}}/frontend-dev-guide/layouts/layout-types.html#layout-types-gen +[handle]: {{page.baseurl}}/frontend-dev-guide/layouts/layout-overview.html#layout-over-terms +[templates]: {{page.baseurl}}/frontend-dev-guide/templates/template-overview.html +[app/code/Magento/Theme/view/frontend/layout/default.xml]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Theme/view/frontend/layout/default.xml +[app/code/Magento/Theme/view/frontend/templates/html/title.phtml]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Theme/view/frontend/templates/html/title.phtml +[Layout file types]: {{page.baseurl}}/frontend-dev-guide/layouts/layout-types.html diff --git a/src/guides/v2.4/frontend-dev-guide/layouts/xml-manage.md b/src/guides/v2.4/frontend-dev-guide/layouts/xml-manage.md deleted file mode 120000 index 4f3300a933a..00000000000 --- a/src/guides/v2.4/frontend-dev-guide/layouts/xml-manage.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/frontend-dev-guide/layouts/xml-manage.md \ No newline at end of file diff --git a/src/guides/v2.4/frontend-dev-guide/layouts/xml-manage.md b/src/guides/v2.4/frontend-dev-guide/layouts/xml-manage.md new file mode 100644 index 00000000000..283b2177e6e --- /dev/null +++ b/src/guides/v2.4/frontend-dev-guide/layouts/xml-manage.md @@ -0,0 +1,767 @@ +--- +group: frontend-developer-guide +title: Common layout customization tasks +functional_areas: + - Frontend +redirect_to: https://developer.adobe.com/commerce/frontend-core/guide/layouts/xml-manage/ +status: migrated +--- + +## In this topic + +This article describes the following typical [layout](https://glossary.magento.com/layout) customization tasks: + +- [Set the page layout](#layout_markup_columns) +- [Include static resources (JavaScript, CSS, fonts) in \](#layout_markup_css) +- [Remove static resources (JavaScript, CSS, fonts) in \](#layout_markup_css_remove) +- [Add meta tags to the head block](#layout_markup_meta) +- [Create a container](#create_cont) +- [Reference a container](#ref_container) +- [Reference a CMS block](#ref_cms_block) +- [Making the block visibility dynamic](#ref_config_block) +- [Create a block](#xml-manage-block) +- [Set body attributes](#layout_body_attributes) +- [Set the template used by a block](#set_template) +- [Modify block arguments](#layout_markup_modify-block) +- [Reference a block](#xml-manage-ref-block) +- [Use block object methods to set block properties](#layout_markup_block-properties) +- [Rearrange elements](#layout_markup_rearrange) +- [Add functionality to existing elements](#layout_markup_add_to_elements) +- [Modify functionality with plugins (interceptors)](#layout_markup_modify_with_plugins) + +{:.bs-callout-info} +To ensure stability and secure your customizations from being deleted during upgrade, do not change out-of-the-box Magento [module](https://glossary.magento.com/module) and [theme](https://glossary.magento.com/theme) layouts. To customize your layout, create extending and overriding layout files in your custom theme. + +## Set the page layout {#layout_markup_columns} + +The type of page layout to be used for a certain page is defined in the page configuration file, in the `layout` attribute of the root `` node. + +Example: +Change the layout of Advanced Search page from default "1-column" to "2-column with left bar". To do this, extend `catalogsearch_advanced_index.xml` in your theme by adding the following layout: + +```xml + +... + +``` + +## Include static resources (JavaScript, CSS, fonts) {#layout_markup_css} + +JavaScript, CSS, and other static assets are added in the `` section of a [page configuration] file. The default look of a Magento store page `` is defined by `app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml`. The recommended way to add CSS and JavaScript is to extend this file in your custom theme, and add the assets there. +The following file is a sample of a file you must add: + +```xml + + + + + + + + +``` + +## Form validation rules + +All available Magento validation rules may be found in [validation/rules.js]({{ site.mage2bloburl }}/{{page.guide_version}}/app/code/Magento/Ui/view/base/web/js/lib/validation/rules.js). + +Additionally, you may also use any available [jQuery validation rules](https://jqueryvalidation.org/documentation/#link-list-of-built-in-validation-methods). + +## Defining validation rules + +There are couple of ways to define validation rules for a form field. + +### As a `data-validate` attribute + +```html + +``` + +### As a `data-validate` attribute with arguments + +```html + +``` + +### As an attribute + +```html + +``` + +### As an attribute with arguments + +```html + +``` + +### As a class name + +```html + +``` + +### As a class name with arguments + +```html + +``` + +### Using `data-mage-init` + +```html +
    + ... +
    +``` +### Using `data-mage-init` with arguments + +```html +
    + ... +
    +``` + +## Examples + +### Adding the validation for a form + +Here are examples of all available ways of validating the form fields. + +```html +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +``` + +### Result + +As a result, the form gets validated before sending data to the server for processing. + +![Validated Form Example]({{ site.baseurl }}/common/images/form-validation-result.png) diff --git a/src/guides/v2.4/frontend-dev-guide/validations/custom-validation.md b/src/guides/v2.4/frontend-dev-guide/validations/custom-validation.md deleted file mode 120000 index 6b835106688..00000000000 --- a/src/guides/v2.4/frontend-dev-guide/validations/custom-validation.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/frontend-dev-guide/validations/custom-validation.md \ No newline at end of file diff --git a/src/guides/v2.4/frontend-dev-guide/validations/custom-validation.md b/src/guides/v2.4/frontend-dev-guide/validations/custom-validation.md new file mode 100644 index 00000000000..ce78aae80da --- /dev/null +++ b/src/guides/v2.4/frontend-dev-guide/validations/custom-validation.md @@ -0,0 +1,100 @@ +--- +group: frontend-developer-guide +title: Custom validation rules +contributor_name: Adarsh Manickam +contributor_link: https://github.com/drpayyne +redirect_to: https://developer.adobe.com/commerce/frontend-core/guide/validations/custom-rules/ +status: migrated +--- + +Custom validation rules can be added by creating a Javascript mixin for the `mage/validation` module and calling the `$.validator.addMethod` function with the custom validation rule parameters as described below: + +```javascript +$.validator.addMethod( + 'rule-name', + function(value, element) { + // Return true or false after validation rule check + }, + $.mage.__('Error message to display if validation fails') +) +``` + +This code snippet adds a simple new validation rule to the mixin to validate if an input field has only five words. + +`Vendor/Module/view/frontend/requirejs-config.js` + +```javascript +var config = { + config: { + mixins: { + 'mage/validation': { + 'Vendor_Module/js/validation-mixin': true + } + } + } +} +``` + +`Vendor/Module/view/frontend/web/js/validation-mixin.js` + +```javascript +define(['jquery'], function($) { + 'use strict'; + + return function() { + $.validator.addMethod( + 'validate-five-words', + function(value, element) { + return value.split(' ').length == 5; + }, + $.mage.__('Please enter exactly five words') + ) + } +}); +``` + +## Modify an existing validation message + +It is possible to adjust the existing error message for form fields. +This is implemented in the core codebase in scope of the [`Magento_CatalogSearch` module]({{ site.mage2bloburl }}/{{page.guide_version}}/app/code/Magento/CatalogSearch/view/frontend/templates/advanced/form.phtml). + +```html + +``` + +The `messages` object is the one that does the job - they key is the input name and the value is a list of validation rules that should be modified for the specified input field. +Here the rule name is the key and the validation message is the value. + +```js +$('#form-to-validate').mage('validation', { + messages: { + 'input-name': { + 'validation-rule-1': 'Validation message 1', + 'validation-rule-2': 'Validation message 2', + }, + } +}); +``` + +This comes in handy when the error message needs to be specific but the rule does not change. diff --git a/src/guides/v2.4/frontend-dev-guide/validations/form-validation.md b/src/guides/v2.4/frontend-dev-guide/validations/form-validation.md deleted file mode 120000 index 4db9dcc8999..00000000000 --- a/src/guides/v2.4/frontend-dev-guide/validations/form-validation.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/frontend-dev-guide/validations/form-validation.md \ No newline at end of file diff --git a/src/guides/v2.4/frontend-dev-guide/validations/form-validation.md b/src/guides/v2.4/frontend-dev-guide/validations/form-validation.md new file mode 100644 index 00000000000..f0558eac9ff --- /dev/null +++ b/src/guides/v2.4/frontend-dev-guide/validations/form-validation.md @@ -0,0 +1,32 @@ +--- +group: frontend-developer-guide +title: Form validation +contributor_name: Adarsh Manickam +contributor_link: https://github.com/drpayyne +functional_areas: + - Frontend +redirect_to: https://developer.adobe.com/commerce/frontend-core/guide/validations/ +status: migrated +--- + +The Magento application provides various ways to validate your form inputs. This implementation is based, and extends, [jQuery Validation](https://jqueryvalidation.org/documentation). + +## Validation Module Structure + +There are three main validation modules present in Magento: `jquery/validate`, `mage/validation`, and `mage/validation/validation`. + +### `jquery/validate` + +This is an alias for [`lib/web/jquery/jquery.validate`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/jquery/jquery.validate.js). This is the base validation JavaScript file provided by jQuery that Magento extends. + +### `mage/validation` + +This module is present at [`lib/web/mage/validation.js`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/mage/validation.js). This module includes `jquery/validate` and adds various functions, such as `$.validator.addMethod`, which can be used by mixins to add custom validation rules, a base set of rules to validate, the `mage.validation` widget, and more. + +### `mage/validation/validation` + +This module is present at [`lib/web/mage/validation/validation.js`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/mage/validation/validation.js). This is considered the entry point for the form validator in Magento and is aliased as `validation` at [`Magento_Theme/view/frontend/requirejs-config.js`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Theme/view/frontend/requirejs-config.js#L29). This includes `mage/validation` (which in turn includes `jquery/validate`), and adds a few more rules to the validator. + +## See also + +* [Validate a custom form]({{ page.baseurl }}/frontend-dev-guide/validations/custom-form-validation.html) diff --git a/src/guides/v2.4/frontend-dev-guide/validations/rule-list.md b/src/guides/v2.4/frontend-dev-guide/validations/rule-list.md deleted file mode 120000 index 5cd38661eed..00000000000 --- a/src/guides/v2.4/frontend-dev-guide/validations/rule-list.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/frontend-dev-guide/validations/rule-list.md \ No newline at end of file diff --git a/src/guides/v2.4/frontend-dev-guide/validations/rule-list.md b/src/guides/v2.4/frontend-dev-guide/validations/rule-list.md new file mode 100644 index 00000000000..b9622eaffa3 --- /dev/null +++ b/src/guides/v2.4/frontend-dev-guide/validations/rule-list.md @@ -0,0 +1,1678 @@ +--- +group: frontend-developer-guide +title: Validation Rule List +contributor_name: Goivvy LLC +contributor_link: https://www.goivvy.com/magento-optimization-service +redirect_to: https://developer.adobe.com/commerce/frontend-core/guide/validations/rule-list/ +status: migrated +--- + +This is a list of available form validation rules, ordered alphabetically. +Each rule contains a short description and a usage example. + +### alphanumeric + +Check if the value contains only letters, numbers, spaces or underscores. + +#### Example + +```html +
    +... + +... +
    +``` + +### credit-card-types + +A valid credit card number of a certain type(s), that can be specified as parameters. + +#### Example + +```html +
    +... + +... +
    +``` + +Possible values are: amex, mastercard, visa, dinersclub, enroute, discover, jcb, unknown, all. + +### dateITA + +Date in Italy, **\d{1,2}\/\d{1,2}\/\d{4}** format, i.e. **4/4/24** or **24/12/21**. + +#### Example + +```html +
    +... + +... +
    +``` + +* `44/44/40` - false +* `12-12-2021` - false +* `1/1/2022` - true +* `12/10/2022` - true + +There is a sanity check, so dates such as `99/12/2021` will be false. + +### dateNL + +Date in Netherlands, **\d\d?[\.\/-]\d\d?[\.\/-]\d\d\d?\d?** format. + +### Example + +```html +
    +... + +... +
    +``` + +There is no sanity check so dates such as `33-12-12` will be true. + +### datetime-validation + +Checks that the field is not empty. + +### Example + +```html +
    +... + +... +
    +``` + +### email2 + +Checks for a valid email address. + +#### Example + +```html +
    +... + +... +
    +``` + +### greater-than-equals-to + +Checks for a value of one field being greater than or equal to a value of another field + +#### Example + +```html +
    +... + + +... +
    +``` + +It does not check for both values to be numeric, so if `field-3` = 5 and `field-5` = 'a', it will silently accept it + +### integer + +Checks for a field value to be an integer, positive or negative. + +#### Example + +```html +
    +... + +... +
    +``` + +### ipv4 + +Checks for a valid IPv4 address. + +#### Example + +```html +
    +... + +... +
    +``` + +### ipv6 + +Checks for a valid IPv6 address. + +#### Example + +```html +
    +... + +... +
    +``` + +### less-than-equals-to + +Checks for a value of one field being less than or equal to a value of another field. + +#### Example + +```html +
    +... + + +... +
    +``` + +It does not check for both values to be numeric, so if `field-3` = 10 and `field-5` = '3a', it will silently accept it. + +### letters-only + +Checks for Latin A-Z,a-z letters only. + +#### Example + +```html +
    +... + +... +
    +``` + +### letters-with-basic-punc + +Checks for Latin letters and punctuation only, the regex being `a-z\-.,()'\"\s`. + +```html +
    +... + +... +
    +``` + +### max-words + +Checks that there are no more than a predefined number of words. Maximum number of words should be set as a parameter. + +#### Example + +```html +
    +... + +... +
    +``` + +Here, it accepts no more than 4 words. + +### min-words + +Checks that there are not less than a predefined number of words. Minimum number of words should be set as a parameter. + +#### Example + +```html +
    +... + +... +
    +``` + +Here, it accepts at least 4 words. + +### mobileUK + +Checks for a valid UK mobile number. + +#### Example + +```html +
    +... + +... +
    +``` + +* `+447911123456` - true +* `44791112` - false + +### no-marginal-whitespace + +Does not allow whitespaces at the start, or at the end, of an input text. + +#### Example + +```html +
    +... + +... +
    +``` + +### no-whitespace + +Does not allow whitespaces anywhere in an input text. + +#### Example + +```html +
    +... + +... +
    +``` + +### not-negative-amount + +Checks for a non-negative number. + +#### Example + +```html +
    +... + +... +
    +``` + +There is a sanity check, so **0a** will result in a warning. + +* `0` - pass +* `2.4` - pass +* `0a` - fail +* `+2` - fail + +### password-not-equal-to-user-name + +Checks that a password is not the same as a predefined string. + +#### Example + +```html +
    +... + +... +
    +``` + +In the example above, if you enter `username@domain.com` you will get a warning. + +### pattern + +Checks an input against a predefined regex pattern. + +#### Example + +```html +
    +... + +... +
    +``` + +In the example above anything except lowercase letters will trigger a warning. + +### phoneUK + +Checks for a valid UK phone number. + +#### Example + +```html +
    +... + +... +
    +``` + +### phoneUS + +Checks for a valid US phone number. + +#### Example + +```html +
    +... + +... +
    +``` + +### range-words + +Checks for a predefined number of words. + +#### Example + +```html +
    +... + +... +
    +``` + +In the example above, only a 2, 3 or 4 word input string will not trigger a warning: + +* `not used` - pass +* `not` - fail +* `not used before` - pass + +### required-dropdown-attribute-entry + +Checks that all disabled input fields (with a `required-option` class) within a table tag are empty. + +#### Example + +```html +
    + + + + + + +
    +
    +
    + +
    +
    +
    +``` + +In the example above it will trigger a warning as `field-1` is not empty. + +### required-entry + +Checks that a field is not empty. + +#### Example + +```html +
    +... + +... +
    +``` + +### required-file + +Checks for a file field to be populated. + +#### Example + +```html +
    +... + +... +
    +``` + +### required-if-all-sku-empty-and-file-not-loaded + +Makes the field required if specified fields and a specified file input are empty. + +#### Example + +```html +
    +... + + + +... +
    +``` + +In the example above, a warning is only displayed if all fields are empty. + +### required-if-not-specified + +Makes a field required if the dependent field is filled. + +#### Example + +```html +
    +... + + +... +
    +``` + +If `field-5` is not empty, then `field-3` is not required. + +### required-if-specified + +Makes a field required if the dependent field is filled. + +#### Example + +```html +
    +... + + +... +
    +``` + +If `field-5` is not empty, then `field-3` is required. + +### required-number + +Requires a number to be entered. + +```html +
    +... + +... +
    +``` + +Warning : This tag has bugs and will accept any non-empty input. + +### required-number-if-specified + +Makes a field number required if the dependent field is filled. + +#### Example + +```html +
    +... + + +... +
    +``` + +If `field-5` is not empty, then `field-3` is required, although any input will work, not just numbers. + +### required-text-swatch-entry + +Checks that all disabled input fields (with a `required-option` class) within a table tag to be empty. + +#### Example + +```html +
    + + + + + + +
    +
    +
    + +
    +
    +
    +``` + +In the example above, it will trigger a warning as `field-1` is not empty. + +### required-visual-swatch-entry + +Checks that all disabled input fields (with a `required-option` class) within a table tag are empty. + +#### Example + +```html +
    + + + + + + +
    +
    +
    + +
    +
    +
    +``` + +In the example above it will trigger a warning as `field-1` is not empty. + +### stripped-min-length + +Checks that there are at least a predefined number of characters in the input. + +#### Example + +```html +
    +... + +... +
    +``` + +In the example above, any input less than 4 characters will trigger a warning. + +### time + +Checks for a valid time between 00:00 and 23:59:59. + +#### Example + +```html +
    +... + +... +
    +``` + +### time12h + +Checks for a valid time between 00:00 am and 12:00 pm. `12:01 pm` and `11:59 pm` values are also valid. + +#### Example + +```html +
    +... + +... +
    +``` + +Warning : The implementation has bugs, for example a valid time `00:31 am` triggers a warning. + +### url2 + +Checks for a valid URL link. + +#### Example + +```html +
    +... + +... +
    +``` + +* `http://www.m2.com` - true +* `magento.com` - false + +### validate-admin-password + +Checks for a valid admin password. It must be 7 or more characters long and it has to have letters and numbers only. + +#### Example + +```html +
    +... + +... +
    +``` + +* `admindsdsdsd` - false +* `minsdsdss8` - true + +### validate-ajax-error + +Checks for an AJAX error. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-alpha + +Checks for letters (a-z or A-Z) only. + +#### Example + +```html +
    +... + +... +
    +``` + +* `jkjkjk` - true +* `dfdfdf1` - false + +### validate-alphanum + +Checks for letters (a-z or A-Z) or numbers (0-9) only. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-alphanum-with-spaces + +Checks for letters (a-z or A-Z) or numbers (0-9) or spaces only. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-cc-cvn + +Checks for a valid credit card identification number. + +#### Example + +```html +
    +... + + +... +
    +``` + +### validate-cc-exp + +Checks for a valid credit card expiration month. + +#### Example + +```html +
    +... + + +... +
    +``` + +It interprets input as a month number with year set in a predefined field. Sanity check is limited. + +* `40` - true +* `G` - false + +### validate-cc-number + +Checks for a valid credit card number based on mod 10. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-cc-type + +Checks for a credit card number to match a predefined credit card type. + +#### Example + +```html +
    +... + + +... +
    +``` + +Field `field-5` holds a credit card type, possible values are: + +* `SO` - Solo +* `SM` - Switch/Maestro +* `VI` - Visa +* `MC` - MasterCard +* `AE` - American Express +* `DI` - Discover +* `JCB` - JCB (Japan Credit Bureau) +* `DN` - Diners +* `UN` - UN +* `MI` - Maestro International +* `MD` - Maestro Domestic + +### validate-cc-type-select + +Checks for a credit card type to match a predefined credit card number. + +#### Example + +```html +
    +... + + +... +
    +``` + +### validate-cc-ukss + +Checks that the Switch/Solo/Maestro issue number and start date are filled. + +#### Example + +```html +
    +... + +... +
    +``` + +It does not do any sanity check except that a field is not empty. + +### validate-clean-url + +Checks for a valid URL. Protocol type is not necessary. + +#### Example + +```html +
    +... + +... +
    +``` + +* `fsdsd` - false +* `https://www.domain.com` - true +* `http://domain.com` - false +* `www.domain.com` - true +* `domain.com` - false + +### validate-code + +Checks for an input that has only letters (a-z or A-Z), numbers (0-9) or underscore (\_), and the first character should be a letter. + +#### Example + +```html +
    +... + +... +
    +``` + +* `1ddf` - false +* `Ad` - true + +### validate-cpassword + +Checks for a confirmation password to be the same as the password. + +#### Example + +```html +
    +... + + +... +
    +``` + +It is important to have `password` and `confirmation` IDs for the fields above. + +### validate-css-length + +Checks for a valid CSS length (Ex: 100px, 77pt, 20em, .5ex or 50%). + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-currency-dollar + +Checks for a valid US dollar amount, for example $100. + +#### Example + +```html +
    +... + +... +
    +``` + +* `$100` - true +* `200` - true +* `$ 100` - false + +### validate-customer-password + +Checks for a password to be greater or equal to a predefined number of characters and predefined number of character classes. Classes of characters: Lowercase, Uppercase, Digits, Special Characters. + +#### Example + +```html +
    +... + +... +
    +``` + +In the example above the password must be 10 or more characters long and have two or more different character classes: + +* `dfdfdfdfdfdfdfdfdfdfdfdf` - false +* `dfdfdfdfdfdfdfdfdfdfdfdf1` - true +* `d1$` - false + +### validate-data + +Checks for an input to have only letters (a-z or A-Z), numbers (0-9) or underscore (\_), and the first character should be a letter. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-date + +Checks for a valid date against a predefined format. + +#### Example + +```html +
    +... + +... +
    +``` + +In the example above: + +* `09 09` - true +* `dfdf` - false +* `98-98` - false + +### validate-date-au + +Checks for a valid date in the format: dd/mm/yyyy. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-date-range + +Checks for `From`-`To` date range. + +#### Example + +```html +
    +... + + +... +
    +``` + +### validate-digits + +Checks for a digits only input. + +#### Example + +```html +
    +... + +... +
    +``` + +* `sdsd` - false +* `34` - true + +### validate-digits-range + +Checks for a digits only input within a specified range. There are two ways to specify a range. You can specify a negative number as a range limit. + +#### Example + +```html +
    +... + + +... +
    +``` + +In the example above, the first range is from `-10` to `-9` and the second range is from `10` to `34`. + +### validate-email + +Checks for a valid email address. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-emails + +Checks for a valid email(s) separated (if several) by a comma, newline or a space. + +#### Example + +```html +
    +... + +... +
    +``` + +* `test@test.com` - true +* `test@test.com,test@test2.com` - true +* `test@test.com - test@test2.com` - false + +### validate-emailSender + +Checks for a valid email address although no sanity check is performed, i.e. any input is valid. Regex is `^[\S ]+$`. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-fax + +Checks for a valid fax number. + +#### Example + +```html +
    +... + +... +
    +``` + +* `044-434-3434` - true +* `111 222-2323` - true +* `111-12-2323` - false + +### validate-forbidden-extensions + +Checks that an input (comma separated file extensions) does not have an extension from a predefined list. + +### Example + +```html +
    +... + +... +
    +``` + +* `ddff` - true +* `jpg,png` - false +* `ddf` - false + +### validate-greater-than-zero + +Checks for a number greater than zero. There is a sanity check so `dfdf` input will trigger a warning. + +#### Example + +```html +
    +... + +... +
    +``` + +* `r4` - false +* `3.4` - true +* `+1.3` - true +* `0` - false + +### validate-identifier + +Checks for a valid URL key. + +#### Example + +```html +
    +... + +... +
    +``` + +* `dfdfdf` - true +* `hepee.html` - true +* `fdf$%.html` - false + +### validate-item-quantity + +Checks for a quantity number to be within `minAllowed` and `maxAllowed` and to be in `qtyIncremenets`. + +#### Example + +```html +
    +... + +... +
    +``` + +* `9` - false +* `28` - true +* `29` - false +* `300` - false + +### validate-length + +Checks for input length to be within specified limits. + +#### Example + +```html +
    +... + +... +
    +``` + +In the example above: + +* `f` - false +* `fa` - true +* `dfdfdf` - false + +### validate-new-password + +Checks for input to be 6 or more characters. Leading and trailing spaces are ignored. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-no-empty + +Checks that an input is not empty. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-no-html-tags + +Checks that an input does not have HTML tags. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-no-utf8mb4-characters + +Checks that an input does not have characters that would require more than 3 bytes. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-not-negative-number + +Checks for non-negative number input. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-not-number-first + +Checks that an input does not start with a number. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-number + +Checks for a valid number. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-number-range + +Checks for a number to be within a specified range. + +#### Example + +```html +
    +... + +... +
    +``` + +### validate-one-required + +It is supposed to check for radio buttons selection but it always returns true. There is possibly a bug in JS files. + +#### Example + +```html +
    +... +
    + + + +
    +... +
    +``` + +### validate-one-required-by-name + +Checks for a radio button selection. + +#### Example + +```html +
    +... +
    + + + +
    +... +
    +``` + +### validate-optional-datetime + +Validates an optional datetime field. + +#### Example + +```html +
    +... +
    + + + + +
    +... +
    +``` + +### validate-password + +Checks for an input to be 6 or more characters long. Leading and trailing spaces are ignored. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### validate-per-page-value + +Checks for an input to be a specified value from a comma separated field. + +#### Example + +```html +
    +... +
    + + +
    +... +
    +``` + +* `44` - false +* `8` - true + +### validate-per-page-value-list + +Checks for comma separated numbers. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +* `kjkjdf,dfdf` - false +* `1` - true +* `1,3,4,5` - true + +### validate-phoneLax + +Checks for a valid phone number. Formatting may be lax. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### validate-phoneStrict + +Checks for a valid phone number with strict formatting. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### validate-range + +Checks for an input to be within a specified range. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +* `100` - false +* `9` - true + +### validate-required-datetime + +Validates a required datetime field. + +#### Example + +```html +
    +... +
    + + + + +
    +... +
    +``` + +### validate-select + +Checks for a select field to be selected. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### validate-ssn + +Checks for a valid Social Security number. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### validate-state + +Checks for a valid State/Province. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### validate-street + +Checks for a valid street address. It allows only letters (a-z or A-Z), numbers (0-9), spaces and `#`. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### validate-url + +Checks for a valid URL. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### validate-xml-identifier + +Checks for a valid XML-identifier (Ex: something\_1, block5, id-4). + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### validate-zero-or-greater + +Checks that a number is zero or greater in this field. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### validate-zip-international + +Checks for a valid international zip code. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### validate-zip-us + +Checks for a valid US zip code (Ex: 90602 or 90602-1234). + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### vinUS + +Checks for a valid vehicle identification number (VIN). + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` + +### zip-range + +Checks for a zip code to be in the range 902xx-xxxx to 905-xx-xxxx. + +#### Example + +```html +
    +... +
    + +
    +... +
    +``` diff --git a/src/guides/v2.4/get-started/api-security.md b/src/guides/v2.4/get-started/api-security.md deleted file mode 120000 index e9157c4e3a7..00000000000 --- a/src/guides/v2.4/get-started/api-security.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/get-started/api-security.md \ No newline at end of file diff --git a/src/guides/v2.4/get-started/api-security.md b/src/guides/v2.4/get-started/api-security.md new file mode 100644 index 00000000000..6b4e105d603 --- /dev/null +++ b/src/guides/v2.4/get-started/api-security.md @@ -0,0 +1,170 @@ +--- +group: web-api +title: API security +functional_areas: + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/api-security/ +status: migrated +--- + +This topic describes best practices for [API security](https://owasp.org/www-project-api-security/). + +## Input limiting + +Imposing restrictions on the size and number of resources that a user can request through an API can help mitigate denial-of-service (DoS) vulnerabilities. By default, the following built-in API rate limiting is available: + +- REST requests containing inputs that represent a list of entities. When enabled, the default maximum is 20 for synchronous requests and 5,000 for asynchronous requests. +- REST and GraphQL queries that allow paginated results can be limited to a maximum number of items per page. When enabled, the default maximum is 300. +- REST queries that allow paginated results can have a default number of items per page imposed. When enabled, the default maximum is 20. + +By default, these input limits are disabled, but you can use the following methods to enable them: + +- Set the values in the [Admin](https://docs.magento.com/user-guide/configuration/services/magento-web-api.html). +- Run the [`bin/magento config:set` command]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-config-mgmt-set.html#config-cli-config-set). +- Add entries to the [`env.php` file]({{ page.baseurl }}/config-guide/prod/config-reference-configphp.html#system). +- Set [environment variables]({{ page.baseurl }}/config-guide/deployment/pipeline/example/environment-variables.html). + +When input limiting has been enabled, the system uses the default value for each limitation listed above. You can also configure custom values. + +Although some simple examples for configuring these values from the CLI are provided below, all of the values can be [configured per website and per store view]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-config-mgmt-set.html#config-cli-config-set) in addition to being configurable globally. In addition, these values can also be configured [via `env.php`]({{ page.baseurl }}/config-guide/prod/config-reference-configphp.html#system) +as well as via [environment variables]({{ page.baseurl }}/config-guide/deployment/pipeline/example/environment-variables.html). + +{:.bs-callout-tip} + +In addition, the Admin provides a configuration setting for limiting session sizes for Admin users and storefront visitors. + +### Enable the input limiting system + +To enable these input limiting features from the Admin, go to **Stores** > Settings > **Configuration** > **Services** > **Web Api Limits** or **GraphQL Input Limits** and set **Enable Input Limits** to **Yes**. + +To enable with the CLI, run one or both of the following commands: + +```bash +bin/magento config:set webapi/validation/input_limit_enabled 1 +``` + +```bash +bin/magento config:set graphql/validation/input_limit_enabled 1 +``` + +### Maximum parameter inputs + +The `EntityArrayValidator` class constructor limits the number of objects that can be given to inputs that represent arrays of objects. For example, the `PUT /V1/guest-carts/{cartId}/collect-totals` endpoint contains the input parameter `additionalData->extension_attributes->gift_messages`, which represents a list of gift message information objects. + +There are four possible input arrays: + +- `additional_data` +- `agreement_ids` +- `gift_messages` +- `custom_attributes` + +```json +{ + "paymentMethod": { + "po_number": "string", + "method": "string", + "additional_data": [ + "string" + ], + "extension_attributes": { + "agreement_ids": [ + "string" + ] + } + }, + "shippingCarrierCode": "string", + "shippingMethodCode": "string", + "additionalData": { + "extension_attributes": { + "gift_messages": [ + { + "gift_message_id": 0, + "customer_id": 0, + "sender": "string", + "recipient": "string", + "message": "string", + "extension_attributes": { + "entity_id": "string", + "entity_type": "string", + "wrapping_id": 0, + "wrapping_allow_gift_receipt": true, + "wrapping_add_printed_card": true + } + } + ] + }, + "custom_attributes": [ + { + "attribute_code": "string", + "value": "string" + } + ] + } +} +``` + +By default, any one of these arrays can include up to 20 items, but you can change this value in the configuration UI via **Stores** > Settings > **Configuration** > **Services** > **Web API Input Limits** > **Input List Limit** or via CLI using the `webapi/validation/complex_array_limit` configuration path. + +### Input limit for REST endpoints + +Some REST endpoints can contain a high number of elements, and developers need a way to set the limit for each endpoint. The limit for a specific REST endpoint can be set in the `webapi.xml` configuration file for synchronous requests and `webapi_async.xml` for asynchronous requests. +To do this, assign a value for the `` attribute within a `` definition. The value for `input-array-size-limit` must be a non-negative integer. + +The following example sets the input limit for the `/V1/some-custom-route` route. +If the route works synchronously, open the `/etc/webapi.xml` configuration file. Otherwise, open `/etc/webapi_async.xml`. +Add the `data` tag with the `input-array-size-limit` attribute to the route configuration. + +```xml + + + + + + + + + + + +``` + +Clear the configuration cache for the changes to take effect. + +```bash +bin/magento cache:clear config +``` + +### Values by default for REST endpoints + +If you need to change the default limits for REST endpoints, then edit the `webapi` section of the `/app/etc/env.php` file as follows: +```conf +[ +//... + 'webapi' => [ + 'sync' => [ + 'default_input_array_size_limit' => , //overrides values for synchronous REST endpoints + ], + 'async' => [ + 'default_input_array_size_limit' => , //overrides values for asynchronous REST endpoints + ], + ] +//... +]; +``` + +### Maximum page size + +The maximum page size setting controls the pagination of various web API responses. By default, the maximum value is `300`. You can change the default in the Admin by selecting **Stores** > Settings > **Configuration** > **Services** > **Web API Input Limits** or **GraphQl Input Limits** > **Maximum Page Size** field. + +[GraphQL security configuration]({{page.baseurl}}/graphql/security-configuration.html) describes how to set the maximum page size in GraphQL. + +### Default page size + +The Default Page Size setting controls the pagination of various web API responses. You can change the default value of `20` in the Admin by selecting **Stores** > Settings > **Configuration** > **Services** > **Web API Input Limits** > **Default Page Size**. To change the value from the CLI, run the following command: + +```shell +bin/magento config:set webapi/validation/default_page_size 30 +``` diff --git a/src/guides/v2.4/get-started/authentication/gs-authentication-oauth.md b/src/guides/v2.4/get-started/authentication/gs-authentication-oauth.md deleted file mode 120000 index eec336fbe5c..00000000000 --- a/src/guides/v2.4/get-started/authentication/gs-authentication-oauth.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/get-started/authentication/gs-authentication-oauth.md \ No newline at end of file diff --git a/src/guides/v2.4/get-started/authentication/gs-authentication-oauth.md b/src/guides/v2.4/get-started/authentication/gs-authentication-oauth.md new file mode 100644 index 00000000000..34b693f4091 --- /dev/null +++ b/src/guides/v2.4/get-started/authentication/gs-authentication-oauth.md @@ -0,0 +1,469 @@ +--- +group: web-api +title: OAuth-based authentication +functional_areas: + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/authentication/gs-authentication-oauth/ +status: migrated +--- + +Magento OAuth authentication is based on [OAuth 1.0a](https://tools.ietf.org/html/rfc5849), an open standard for secure [API](https://glossary.magento.com/api) authentication. OAuth is a token-passing mechanism that allows a system to control which third-party applications have access to internal data without revealing or storing any user IDs or passwords. + +In Magento, a third-party application that uses OAuth for authentication is called an [_integration_]( {{ page.baseurl }}/get-started/create-integration.html ). An integration defines which resources the application can access. The application can be granted access to all resources or a customized subset of resources. + +As the process of registering the integration proceeds, Magento creates the tokens that the application needs for authentication. It first creates a request token. This token is short-lived and must be exchanged for an access token. Access tokens are long-lived and will not expire unless the merchant revokes access from the application. + +## OAuth overview {#overview} + +The following diagram shows the OAuth authentication process. Each step is described further. +![OAuth flow]({{ page.baseurl }}/get-started/authentication/images/oauthflow.png) + +1. **Create an integration**. The merchant creates an integration from [Admin](https://glossary.magento.com/admin). Magento generates a consumer key and a consumer secret. + +1. **Activate the integration**. The OAuth process begins when the merchant activates the integration. Magento sends the OAuth consumer key and secret, an OAuth verifier, and the store [URL](https://glossary.magento.com/url) to the external application via HTTPS post to the page defined in the **Callback Link** field in Admin. See [Activate an integration](#activate) for more information. + +1. **Process activation information**. The integrator must store the activation information received in step 2. These parameters will be used to ask for tokens. + +1. **Call the application's login page**. Magento calls the page defined in the **Identity Link** field in Admin. + +1. **Merchant logs in to the external application.** If the login is successful, the application returns to the location specified in the call. The login page is dismissed. + +1. **Ask for a request token**. The application uses the `POST /oauth/token/request` REST API to ask for a request token. The `Authorization` header includes the consumer key and other information. See [Get a request token](#pre-auth-token) for details about this token request. + +1. **Send the request token**. Magento returns a request token and request token secret. + +1. **Ask for an access token**. The application uses the `POST /oauth/token/access` REST API to ask for an access token. The `Authorization` header includes the request token and other information. See [Get an access token](#get-access-token) for details about this token request. + +1. **Magento sends the access token**. If this request is successful, Magento returns an access token and access token secret. + +1. **The application can access Magento resources.** All requests sent to Magento must use the full set of request parameters in `Authorization` header. See [Access the web APIs](#web-api-access) for more information. + +## Activate an integration {#activate} + +The integration must be configured from the [Admin](https://glossary.magento.com/magento-admin) (**System > Extensions > Integrations**). The configuration includes a callback URL and an identity link URL. The callback URL specifies where OAuth credentials can be sent when using OAuth for token exchange. The identity link points to the login page of the third-party application that is integrating with Magento. + +A merchant can choose to select **Save and Activate** when the integration is created. Alternatively, the merchant can click on **Activate** against a previously saved integration from the Integration grid. + +When the integration is created, Magento generates a consumer key and a consumer secret. + +Activating the integration submits the credentials to the endpoint specified when creating the Integration. An HTTP POST from Magento to the Integration endpoint will contain these attributes: + +* `store_base_url` For example, `http://my-magento-store.com/`. +* `oauth_verifier` +* `oauth_consumer_key` +* `oauth_consumer_secret` + +Integrations use the `oauth_consumer_key` key to get a request token and the `oauth_verifier` to get an access token. + +## OAuth handshake details {#oauth-handshake} + +The process of completing the OAuth handshake requires that you + +* [Get a request token](#pre-auth-token) +* [Get an access token](#get-access-token) + +This process is known as a 2-legged OAuth handshake. + +### Get a request token {#pre-auth-token} + +A request token is a temporary token that the user exchanges for an access token. Use the following API to get a request token from Magento: + +`POST /oauth/token/request` + +You must include these request parameters in the `Authorization` header in the call: + +Parameter | Description +--- | --- +`oauth_consumer_key` | The consumer key is generated when you create the integration. +`oauth_signature_method` | The name of the signature method used to sign the request. Must be the value `HMAC-SHA1`. +`oauth_signature` | A generated value (signature) +`oauth_nonce` | A random value that is uniquely generated by the application. +`oauth_timestamp` | A positive integer, expressed in the number of seconds since January 1, 1970 00:00:00 GMT. +`oauth_version` | The OAuth version. + +The response contains these fields: + +* `oauth_token`. The token to be used when requesting an access token. +* `oauth_token_secret`. A secret value that establishes ownership of the token. + +A valid response looks like this: + +`oauth_token=4cqw0r7vo0s5goyyqnjb72sqj3vxwr0h&oauth_token_secret=rig3x3j5a9z5j6d4ubjwyf9f1l21itrr` #gitleaks:allow + +### Get an access token {#get-access-token} + +The request token must be exchanged for an access token. Use the following API to get an access token from Magento: + +`POST /oauth/token/access` + +You must include these request parameters in the `Authorization` header in the call: + +Parameter | Description +--- | --- +`oauth_consumer_key` | The consumer key value that you retrieve after you register the integration. +`oauth_nonce` | A random value that is uniquely generated by the application. +`oauth_signature` | A generated value (signature) +`oauth_signature_method` | The name of the signature method used to sign the request. Must be the value `HMAC-SHA1`. +`oauth_timestamp` | A positive integer, expressed in the number of seconds since January 1, 1970 00:00:00 GMT. +`oauth_version` | The OAuth version. +`oauth_token` | The `oauth_token` value, or request token, obtained in [Get a request token](#pre-auth-token). +`oauth_verifier` | The verification code that is tied to the consumer and request token. It is sent as part of the initial POST operation when the integration is activated. + +A valid response looks like this: +`oauth_token=0lnuajnuzeei2o8xcddii5us77xnb6v0&oauth_token_secret=1c6d2hycnir5ygf39fycs6zhtaagx8pd` #gitleaks:allow + +The response contains these fields: + +* `oauth_token`. The access token that provides access to protected resources. +* `oauth_token_secret`. The secret that is associated with the access token. + +## Access the web APIs {#web-api-access} + +After the integration is authorized to make API calls, third-party applications (registered as integrations in Magento) can invoke Magento web APIs by using the access token. + +To use the access token to make [web API](https://glossary.magento.com/web-api) calls: + +`GET /rest/V1/products/1234` + +You must include these request parameters in the `Authorization` request header in the call: + +* `oauth_consumer_key`. The customer key value provided after the registration of the application. +* `oauth_nonce`. A random value, uniquely generated by the application. +* `oauth_signature_method`. The name of the signature method used to sign the request. Valid values are: `HMAC-SHA1`, `RSA-SHA1`, and `PLAINTEXT`. +* `oauth_signature`. A generated value (signature). +* `oauth_timestamp`. A positive integer, expressed in the number of seconds since January 1, 1970 00:00:00 GMT. +* `oauth_token`. The `oauth_token`, or access token, value obtained in [Get an access token](#get-access-token). + +## The OAuth signature {#oauth-signature} + +All OAuth handshake requests and Web Api requests include the signature as part of [Authorization](https://glossary.magento.com/authorization) header. Its generated as follows: + +You concatenate a set of URL-encoded attributes and parameters to construct the signature base string. + +Use the ampersand (`&`) character to concatenate these attributes and parameters: + +1. HTTP method +1. URL +1. `oauth_nonce` +1. `oauth_signature_method` +1. `oauth_timestamp` +1. `oauth_version` +1. `oauth_consumer_key` +1. `oauth_token` + +To generate the signature, you must use the HMAC-SHA1 signature method. The signing key is the concatenated values of the consumer secret and token secret separated by the ampersand (`&`) character (ASCII code 38), even if empty. You must use parameter encoding to encode each value. + +## OAuth token exchange example {#oauth-example} + +The scripts provided in this document simulate the Magento 2 [OAuth 1.0a](https://tools.ietf.org/html/rfc5849) token exchange flow. You can drop these scripts under the document root directory of your Magento application so that they can be exposed as endpoints that your Magento application can interact with to mimic the token exchange. + +The OAuth client is extended from and attributed to [PHPoAuthLib](https://github.com/Lusitanian/PHPoAuthLib), which is the same lib used in the [Magento OAuth client]({{ site.mage2bloburl }}/{{ page.guide_version }}/dev/tests/api-functional/framework/Magento/TestFramework/Authentication/Rest/OauthClient.php). + +To simulate the OAuth 1.0a token exchange flow: + +1. Login to your Admin and navigate to **System > Extensions > Integrations** +1. Click on **Add New Integration**. +1. Complete all details in the Integration Info tab: + * **Name** : SomeUniqueIntegrationName + * **Callback URL** : http://your_app_host/endpoint.php + * **Identity link URL** : http://your_app_host/login.php + * Add permissions as desired on the **API** tab +1. Select the **Save and Activate** option from the drop down menu. +1. A pop-up window displays, confirming API permissions. Click **Allow**. (Make sure your browser allows pop-up windows.) The credentials are posted to `endpoint.php`. You should also see another pop-up for the identity linking step that opens the script from `login.php`. +1. Click **Login**. (There is no actual login check since this is a simulation.). The `checklogin.php` script is called. It uses the posted credentials to complete the token exchange. +1. When the token exchange completes successfully, the user is redirected back to the Integrations grid. The newly-created integration should be in the Active state. +1. Click on the edit icon of the integration and check the Integration Details on the Integration Info tab. It should show all the credentials that can be used to make an authenticated API request using OAuth 1.0. + +### checklogin.php + +{% collapsible Click to expand %} +```php +requestRequestToken(); +$accessToken = $oAuthClient->requestAccessToken( + $requestToken->getRequestToken(), + $oauthVerifier, + $requestToken->getRequestTokenSecret() +); + +header("location: $callback"); +``` +{% endcollapsible %} + +### endpoint.php +{% collapsible Click to expand %} +```php + + +
    + + + + + + + + + + + + + + + + + + + + +
    Integrations Login
    Username:
    Password:
      
    + +
    + + +HTML; +``` +{% endcollapsible %} + +### OauthClient.php + +Change the instances of `http://magento.host` in this example to a valid base URL. + +{% collapsible Click to expand %} + +```php +_parseToken($responseBody); + } + + /** + * Parses the request token response and returns a TokenInterface. + * + * @param string $responseBody + * @return TokenInterface + * @throws TokenResponseException + */ + protected function parseRequestTokenResponse($responseBody) + { + $data = $this->_parseResponseBody($responseBody); + if (isset($data['oauth_verifier'])) { + $this->_oauthVerifier = $data['oauth_verifier']; + } + return $this->_parseToken($responseBody); + } + + /** + * Parse response body and create oAuth token object based on parameters provided. + * + * @param string $responseBody + * @return StdOAuth1Token + * @throws TokenResponseException + */ + protected function _parseToken($responseBody) + { + $data = $this->_parseResponseBody($responseBody); + $token = new StdOAuth1Token(); + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + return $token; + } + + /** + * Parse response body and return data in array. + * + * @param string $responseBody + * @return array + * @throws \OAuth\Common\Http\Exception\TokenResponseException + */ + protected function _parseResponseBody($responseBody) + { + if (!is_string($responseBody)) { + throw new TokenResponseException("Response body is expected to be a string."); + } + parse_str($responseBody, $data); + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException("Error occurred: '{$data['error']}'"); + } + return $data; + } + + /** + * @override to fix since parent implementation from lib not sending the oauth_verifier when requesting access token + * Builds the authorization header for an authenticated API request + * + * @param string $method + * @param UriInterface $uri the uri the request is headed + * @param \OAuth\OAuth1\Token\TokenInterface $token + * @param $bodyParams array + * @return string + */ + protected function buildAuthorizationHeaderForAPIRequest( + $method, + UriInterface $uri, + TokenInterface $token, + $bodyParams = null + ) { + $this->signature->setTokenSecret($token->getAccessTokenSecret()); + $parameters = $this->getBasicAuthorizationHeaderInfo(); + if (isset($parameters['oauth_callback'])) { + unset($parameters['oauth_callback']); + } + + $parameters = array_merge($parameters, ['oauth_token' => $token->getAccessToken()]); + $parameters = array_merge($parameters, $bodyParams); + $parameters['oauth_signature'] = $this->signature->getSignature($uri, $parameters, $method); + + $authorizationHeader = 'OAuth '; + $delimiter = ''; + + foreach ($parameters as $key => $value) { + $authorizationHeader .= $delimiter . rawurlencode($key) . '="' . rawurlencode($value) . '"'; + $delimiter = ', '; + } + + return $authorizationHeader; + } +} +``` + +{% endcollapsible %} + +{:.ref-header} +Related topics + +[Create an integration]( {{ page.baseurl }}/get-started/create-integration.html ) + +[OAuth error codes]( {{ page.baseurl }}/get-started/authentication/oauth-errors.html ) + +[Construct a request]( {{ page.baseurl }}/get-started/gs-web-api-request.html ) + +[Configure services as web APIs]( {{ page.baseurl }}/extension-dev-guide/service-contracts/service-to-web-service.html ) diff --git a/src/guides/v2.4/get-started/authentication/gs-authentication-session.md b/src/guides/v2.4/get-started/authentication/gs-authentication-session.md deleted file mode 120000 index 94fd5110c8d..00000000000 --- a/src/guides/v2.4/get-started/authentication/gs-authentication-session.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/get-started/authentication/gs-authentication-session.md \ No newline at end of file diff --git a/src/guides/v2.4/get-started/authentication/gs-authentication-session.md b/src/guides/v2.4/get-started/authentication/gs-authentication-session.md new file mode 100644 index 00000000000..2d04e0a5de7 --- /dev/null +++ b/src/guides/v2.4/get-started/authentication/gs-authentication-session.md @@ -0,0 +1,36 @@ +--- +group: web-api +subgroup: 40_Authentication +title: Session-based authentication +menu_title: Session-based authentication +menu_order: 4 +functional_areas: + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/authentication/gs-authentication-session/ +status: migrated +--- + +As a customer, you log in to the Magento [storefront](https://glossary.magento.com/storefront) with your customer credentials. As an admin, you log in to the [Admin](https://glossary.magento.com/magento-admin) with your [admin](https://glossary.magento.com/admin) credentials. + +The Magento web [API](https://glossary.magento.com/api) framework uses your logged-in session information to verify your identity and authorize access to the requested resource. + +Customers can access resources that are configured with `anonymous` or `self` permission in the `webapi.xml` configuration file. + +Admins can access resources that are assigned to their Admin profile. + + {:.bs-callout-info} +The Magento [web API](https://glossary.magento.com/web-api) framework enables guest users to access resources that are configured with `anonymous` permission. Any user that the framework cannot authenticate through existing authentication mechanisms is considered a guest user. + +For example, if a customer is logged in to the Magento storefront and the [JavaScript](https://glossary.magento.com/javascript) [widget](https://glossary.magento.com/widget) invokes the `self` API, details for the logged-in customer are fetched: + +`GET /rest/V1/customers/me` + +Similarly, if an admin is logged in to the Admin and the JavaScript widget invokes the `Magento_Customer::group` API, details for the logged-in admin are fetched. The web API framework establishes the identity of the admin user based on logged-in session information and authorizes access to the `Magento_Customer::group` resource. + +{:.bs-callout-warning} +Admin session-based authentication is not currently possible for API endpoints. +The session based authentication functionality is restricted to AJAX calls. Direct browser requests cannot be made due to security vulnerabilities. A developer can create a custom storefront widget that can issue requests without additional authentication steps. + +## Related topic + +[Configure services as web APIs]({{ page.baseurl }}/extension-dev-guide/service-contracts/service-to-web-service.html) diff --git a/src/guides/v2.4/get-started/authentication/gs-authentication-token.md b/src/guides/v2.4/get-started/authentication/gs-authentication-token.md index afa3694fd39..7a378bf64fc 100644 --- a/src/guides/v2.4/get-started/authentication/gs-authentication-token.md +++ b/src/guides/v2.4/get-started/authentication/gs-authentication-token.md @@ -3,6 +3,8 @@ group: web-api title: Token-based authentication functional_areas: - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/authentication/gs-authentication-token/ +status: migrated --- To make a web [API](https://glossary.magento.com/api) call from a client such as a mobile application, you must supply an *access token* on the call. The token acts like an electronic key that lets you access the API. @@ -157,7 +159,7 @@ echo send($request); Magento provides a separate token service for administrators and customers. When you request a token from one of these services, the service returns a unique access token in exchange for the username and password for a Magento account. -The Magento web API framework allows *guest users* to access resources that are configured with the permission level of anonymous. Guest users are users who the framework cannot authenticate through existing authentication mechanisms. As a guest user, you do not need to, but you can, specify a token in a web API call for a resource with anonymous permission. [Restricting access to anonymous web APIs]({{ page.baseurl }}/rest/anonymous-api-security.html) contains a list of APIs that do not require a token. +The Magento web API framework allows *guest users* to access resources that are configured with the permission level of anonymous. Guest users are users who the framework cannot authenticate through existing authentication mechanisms. As a guest user, you do not need to, but you can, specify a token in a web API call for a resource with anonymous permission. [Restricting access to anonymous web APIs](https://developer.adobe.com/commerce/webapi/rest/use-rest/anonymous-api-security) contains a list of APIs that do not require a token. The following table lists endpoints and services that can be used to get an authentication token. Admin accounts must be authenticated with a [two factor authentication]({{page.baseurl}}/security/two-factor-authentication.html) provider. Some providers may require multiple calls. @@ -241,4 +243,4 @@ Related topics [Configure services as web APIs]({{ page.baseurl }}/extension-dev-guide/service-contracts/service-to-web-service.html) -[Restricting access to anonymous web APIs]({{ page.baseurl }}/rest/anonymous-api-security.html) +[Restricting access to anonymous web APIs](https://developer.adobe.com/commerce/webapi/rest/use-rest/anonymous-api-security) diff --git a/src/guides/v2.4/get-started/authentication/gs-authentication.md b/src/guides/v2.4/get-started/authentication/gs-authentication.md index 6c8f21ea539..e8d23129c73 100644 --- a/src/guides/v2.4/get-started/authentication/gs-authentication.md +++ b/src/guides/v2.4/get-started/authentication/gs-authentication.md @@ -3,6 +3,8 @@ group: web-api title: Authentication functional_areas: - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/authentication/ +status: migrated --- Magento allows developers to define web [API](https://glossary.magento.com/api) resources and their permissions in the `webapi.xml` configuration file. See [Services as Web APIs]({{ page.baseurl }}/extension-dev-guide/service-contracts/service-to-web-service.html). diff --git a/src/guides/v2.4/get-started/authentication/images/gs_auth_token1.png b/src/guides/v2.4/get-started/authentication/images/gs_auth_token1.png deleted file mode 120000 index 5cecf8f56a5..00000000000 --- a/src/guides/v2.4/get-started/authentication/images/gs_auth_token1.png +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/get-started/authentication/images/gs_auth_token1.png \ No newline at end of file diff --git a/src/guides/v2.4/get-started/authentication/images/gs_auth_token1.png b/src/guides/v2.4/get-started/authentication/images/gs_auth_token1.png new file mode 100644 index 00000000000..4f338d76d37 Binary files /dev/null and b/src/guides/v2.4/get-started/authentication/images/gs_auth_token1.png differ diff --git a/src/guides/v2.4/get-started/authentication/images/integration-tokens.png b/src/guides/v2.4/get-started/authentication/images/integration-tokens.png deleted file mode 120000 index de373c6c94a..00000000000 --- a/src/guides/v2.4/get-started/authentication/images/integration-tokens.png +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/get-started/authentication/images/integration-tokens.png \ No newline at end of file diff --git a/src/guides/v2.4/get-started/authentication/images/integration-tokens.png b/src/guides/v2.4/get-started/authentication/images/integration-tokens.png new file mode 100644 index 00000000000..c1baa219949 Binary files /dev/null and b/src/guides/v2.4/get-started/authentication/images/integration-tokens.png differ diff --git a/src/guides/v2.4/get-started/authentication/images/oauthflow.png b/src/guides/v2.4/get-started/authentication/images/oauthflow.png deleted file mode 120000 index 321497b0291..00000000000 --- a/src/guides/v2.4/get-started/authentication/images/oauthflow.png +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/get-started/authentication/images/oauthflow.png \ No newline at end of file diff --git a/src/guides/v2.4/get-started/authentication/images/oauthflow.png b/src/guides/v2.4/get-started/authentication/images/oauthflow.png new file mode 100644 index 00000000000..600b1646a3d Binary files /dev/null and b/src/guides/v2.4/get-started/authentication/images/oauthflow.png differ diff --git a/src/guides/v2.4/get-started/authentication/oauth-errors.md b/src/guides/v2.4/get-started/authentication/oauth-errors.md deleted file mode 120000 index 045a2369cbf..00000000000 --- a/src/guides/v2.4/get-started/authentication/oauth-errors.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/get-started/authentication/oauth-errors.md \ No newline at end of file diff --git a/src/guides/v2.4/get-started/authentication/oauth-errors.md b/src/guides/v2.4/get-started/authentication/oauth-errors.md new file mode 100644 index 00000000000..4e529d6af97 --- /dev/null +++ b/src/guides/v2.4/get-started/authentication/oauth-errors.md @@ -0,0 +1,34 @@ +--- +group: web-api +title: OAuth error codes +functional_areas: + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/authentication/oauth-errors/ +status: migrated +--- + +When the third-party application makes an invalid request to Magento, the following OAuth-related errors can occur: + +HTTP code | Error code | Text representation | Description +--- | --- | --- | --- +400 | 1 | `version_rejected` | The `oauth_version` parameter does not correspond to the "1.0" value. +400 | 2 | `parameter_absent` | A required parameter is missing in the request. The name of the missing parameter is specified additionally in the response. +400 | 3 | `parameter_rejected` | The type of the parameter or its value do not meet the protocol requirements (for example, array is passed instead of the string). +400 | 4 | `timestamp_refused` | The timestamp value in the oauth_timestamp parameter is incorrect. +401 | 5 | `nonce_used` | The nonce-timestamp combination has already been used. +400 | 6 | `signature_method_rejected`| The signature method is not supported. The following methods are supported: HMAC-SHA1. +401 | 7 | `signature_invalid` | The signature is invalid. +401 | 8 | `consumer_key_rejected` | The Consumer Key has incorrect length or does not exist. +401 | 9 | `token_used` | An attempt of authorization of an already authorized token or an attempt to exchange a not temporary token for a permanent one. +401 | 10 | `token_expired` | The temporary token has expired. At the moment, the mechanism of expiration of temporary tokens is not implemented and the current error is not used. +401 | 11 | `token_revoke` | The token is revoked by the user who authorized it. +401 | 12 | `token_rejected` | The token is not valid, or does not exist, or is not valid for using in the current type of request. +401 | 13 | `verifier_invalid` |The confirmation string does not correspond to the token. +403 | 14 | `permission_unknown` |The consumer permission is unknown. +403 | 15 | `permission_denied` |The consumer does not authorized to access the resource. +405 | 16 | `method_not_allowed` |The method is not supported or not allowed. +403 | 17 | `consumer_key_invalid` |The Consumer Key is invalid. + +## Related topic + +[OAuth-based authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication-oauth.html) diff --git a/src/guides/v2.4/get-started/bk-get-started-api.md b/src/guides/v2.4/get-started/bk-get-started-api.md deleted file mode 120000 index 8a981c490b2..00000000000 --- a/src/guides/v2.4/get-started/bk-get-started-api.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/get-started/bk-get-started-api.md \ No newline at end of file diff --git a/src/guides/v2.4/get-started/bk-get-started-api.md b/src/guides/v2.4/get-started/bk-get-started-api.md new file mode 100644 index 00000000000..abf330bfb40 --- /dev/null +++ b/src/guides/v2.4/get-started/bk-get-started-api.md @@ -0,0 +1,56 @@ +--- +group: web-api +subgroup: 01_Introduction +title: Getting Started with our Web APIs +landing-page: Getting Started with our APIs +menu_title: Introduction +menu_order: 1 +menu_node: parent +functional_areas: + - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/ +status: migrated +--- + +## What are the Magento web APIs? {#whatare} + +The Magento web [API](https://glossary.magento.com/api) framework provides integrators and developers the means to use web services that communicate with the Magento system. Key features include: + +* Support for [GraphQL]({{page.baseurl}}/graphql/index.html), [REST](https://developer.adobe.com/commerce/webapi/rest/) (Representational State Transfer) and [SOAP]({{ page.baseurl }}/soap/bk-soap.html) (Simple Object Access Protocol). In Magento 2, the [web API](https://glossary.magento.com/web-api) coverage is the same for both REST and SOAP. + +* Three types of [authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication.html): + * Third-party applications authenticate with [OAuth 1.0a]({{ page.baseurl }}/get-started/authentication/gs-authentication-oauth.html). + * Mobile applications authenticate using [tokens]({{ page.baseurl }}/get-started/authentication/gs-authentication-token.html). + * Administrators and customers are authenticated with [login credentials]({{ page.baseurl }}/get-started/authentication/gs-authentication-token.html). + +* All accounts and integrations are assigned resources that they have access to. The API framework checks that any call has the [authorization](https://glossary.magento.com/authorization) to perform the request. + +* Any Magento or third-party service can be [configured as a web API]({{ page.baseurl }}/extension-dev-guide/service-contracts/service-to-web-service.html) with a few lines of [xml](https://glossary.magento.com/xml). To configure a web API, you define XML elements and attributes in a `webapi.xml` configuration file. If a service is not defined in a configuration file, it will not be exposed at all. + +* The framework is based on the CRUD (create, read, update, delete) & search model. The system does not currently support webhooks. + +* The framework supports field filtering of web API responses to conserve mobile bandwidth. + +* Integration style web APIs enable a single web API call to run multiple services at once for a more efficient integration. An example of this behavior can be seen in the [Catalog](https://glossary.magento.com/catalog) where one web API call can create a product. If your payload includes the `stock_item` and `media_gallery_entries` objects, then the framework will also create the product’s inventory & media in that one API call. + +## What can I do with the Magento web APIs? {#uses} + +The APIs can be used to perform a wide array of tasks. For example: + +* Create a shopping app. This can be a traditional app that a user downloads on a mobile device. You could also create an app that an employee uses on a showroom floor to help customers make purchases. + +* Integrate with CRM (Customer Relationship Management) or ERP (Enterprise Resource Planning) backend systems, such as Salesforce or Xero. + +* Integrate with a [CMS](https://glossary.magento.com/cms) (Content Management System). Currently, content tagging is not supported. + +* Create [JavaScript](https://glossary.magento.com/javascript) widgets in the Magento [storefront](https://glossary.magento.com/storefront) or on the [Admin](https://glossary.magento.com/admin) panel. The [widget](https://glossary.magento.com/widget) makes AJAX calls to access services. + +## How do I get started? {#procedure} + +You must register a web service on [Admin](https://glossary.magento.com/magento-admin). Use the following general steps to set up Magento to enable web services. + +1. If you are using token-based authentication, create a web services user on Admin by selecting **System** > Permission > **All Users** > Add New User. (If you are using session-based or OAuth authentication, you do not need to create the new user in the Admin.) +1. Create a new integration on Admin. To create an integration, click **System** > Extensions > **Integration** > Add New Integration**. Be sure to restrict which resources the integration can access. +1. Use a REST or SOAP client to configure authentication. + +See the User Guide for more information. diff --git a/src/guides/v2.4/get-started/create-integration.md b/src/guides/v2.4/get-started/create-integration.md deleted file mode 120000 index 16a3c14970d..00000000000 --- a/src/guides/v2.4/get-started/create-integration.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/get-started/create-integration.md \ No newline at end of file diff --git a/src/guides/v2.4/get-started/create-integration.md b/src/guides/v2.4/get-started/create-integration.md new file mode 100644 index 00000000000..f26ee2e7854 --- /dev/null +++ b/src/guides/v2.4/get-started/create-integration.md @@ -0,0 +1,343 @@ +--- +group: web-api +subgroup: Web APIs +title: Create an integration +menu_title: Create an integration +menu_order: 1 +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/create-integration/ +status: migrated +--- + +An **integration** enables third-party services to call the Magento web APIs. The Magento APIs currently supports Accounting, Enterprise Resource Planning (ERP), Customer Relationship Management (CRM), Product Information Management (PIM), and marketing automation systems out of the box. + +Implementing a simple integration requires little knowledge of [PHP](https://glossary.magento.com/php) or Magento internal processes. However, you will need a working knowledge of + +* [Magento REST or SOAP Web APIs]({{ page.baseurl }}/get-started/bk-get-started-api.html) +* [Web API authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication.html) +* [OAuth-based authentication]( {{ page.baseurl }}/get-started/authentication/gs-authentication-oauth.html ) + +Before you begin creating a module, make sure that you have a working installation of Magento 2.0, and the [Magento System Requirements]({{ page.baseurl }}/install-gde/system-requirements.html). + +To create an integration, follow these general steps: + +1. [Create a module with the minimal structure and configuration.](#skeletal) +1. [Add files specific to the integration.](#files) +1. [Install the module.](#install) +1. [Check the integration.](#check) +1. [Integrate with your application.](#integrate) + +## Create a skeletal module {#skeletal} + +To develop a module, you must: + +1. **Create the module file structure.** The module for an integration, like any other of your custom modules, should be placed under `/app/code/app/code//`. E.g. `/app/code/Vendor1/Module1` + + Also create `etc`, `etc/integration`, and `Setup` subdirectories under `/app/code//`, as shown in the following example: + + ```bash + cd + ``` + + ```bash + mkdir -p app/code///etc/integration + ``` + + ```bash + mkdir -p app/code///Setup + ``` + + For more detailed information, see [Create your component file structure]({{ page.baseurl }}/extension-dev-guide/build/module-file-structure.html). + +1. **Define your module configuration file.** The `etc/module.xml` file provides basic information about the module. Change directories to the `etc` directory and create the `module.xml` file. You must specify values for the following attributes: + + + + + + + + + + + + + +
    AttributeDescription
    nameA string that uniquely identifies the [module](https://glossary.magento.com/module).
    setup_versionThe version of Magento the component uses
    + The following example shows an example `etc/module.xml` file. + + ```xml + + + + + + + + + ``` + + Module `Magento_Integration` is added to "sequence" to be loaded first. It helps to avoid the issue, when a module with integration config loaded, that leads to a malfunction. + +1. **Add your module's `composer.json` file.** Composer is a dependency manager for PHP. You must create a `composer.json` file for your module so that Composer can install and update the libraries your module relies on. Place the `composer.json` file in the `module-` directory. + + The following example demonstrates a minimal `composer.json` file. + + ```json + { + "name": "Vendor1_Module1", + "description": "create integration from config", + "require": { + "php": "~7.2.0|~7.3.0", + "magento/framework": "2.0.0", + "magento/module-integration": "2.0.0" + }, + "type": "magento2-module", + "version": "1.0", + "autoload": { + "files": [ "registration.php" ], + "psr-4": { + "Vendor1\\Module1\\": "" + } + } + } + ``` + +For more information, see [Create a component]({{ page.baseurl }}/extension-dev-guide/build/create_component.html). + +1. **Create a `registration.php` file** The `registration.php` registers the module with the Magento system. It must be placed in the module's root directory. + + ```php + integrationManager = $integrationManager; + } + + /** + * @inheritDoc + */ + + public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) + { + $this->integrationManager->processIntegrationConfig(['TestIntegration']); + } + } + ``` + + In the following line + + `$this->integrationManager->processIntegrationConfig(['testIntegration']);` + + `testIntegration` must refer to your `etc/integration/config.xml` file, and the integration name value must be the same. + + The following example demonstrates a minimal `config.xml` file. + + ```xml + + + someone@example.com + https://example.com + https://example.com/identity_link_url + + + ``` + + Also, be sure to change the path after `namespace` for your vendor and module names. + +## Create integration files {#files} + +Magento provides the Integration module, which simplifies the process of defining your integration. This module automatically performs functions such as: + +* Managing the third-party account that connects to Magento. +* Maintaining OAuth authorizations and user data. +* Managing security tokens and requests. + +To customize your module, you must create multiple [XML](https://glossary.magento.com/xml) files and read through others files to determine what resources existing Magento modules have access to. + +The process for customizing your module includes + +* [Define the required resources](#resources) +* [Pre-configure the integration](#preconfig) + +### Define the required resources {#resources} + +The `etc/integration/api.xml` file defines which [API](https://glossary.magento.com/api) resources the integration has access to. + +To determine which resources an integration needs access to, review the permissions defined in each module's `etc/acl.xml` file. + +In the following example, the test integration requires access to the following resources in the Sales module: + +```xml + + + + + + + + + + + + + + + +``` + +### Pre-configure the integration {#preconfig} + +Your module can optionally provide values in configuration file `config.xml`, so that the integration can be automatically pre-configured with default values. To enable this feature, update the `config.xml` file in the `etc/integration` directory. + + {:.bs-callout-info} +If you pre-configure the integration, the values cannot be edited from the [admin](https://glossary.magento.com/admin) panel. + +The file defines which API resources the integration has access to. + +```xml + + + + + + + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ElementDescription
    integrationsContains one or more integration definitions.
    integration name=""Defines an integration. The name must be specified.
    emailAn email to associate with this integration.
    endpoint_url

    Optional. The [URL](https://glossary.magento.com/url) where OAuth credentials can be sent when using OAuth for token exchange. We strongly recommend using https://.

    +

    See OAuth-based authentication for details.

    identity_link_urlOptional. The URL that redirects the user to link their 3rd party account with the Magento integration.
    + +## Install your module {#install} + +Use the following steps to install your module: + +1. Run the following command to update the Magento [database schema](https://glossary.magento.com/database-schema) and data. + + ```bash + bin/magento setup:upgrade + ``` + +1. Run the following command to generate the new code. + + {:.bs-callout-info} + In Production mode, you may receive a message to 'Please rerun Magento compile command'. Enter the command below. Magento does not prompt you to run the compile command in Developer mode. + + ```bash + bin/magento setup:di:compile + ``` + +1. Run the following command to clean the cache. + + ```bash + bin/magento cache:clean + ``` + +## Check your integration {#check} + +Log in to Magento and navigate to **System > Extensions > Integrations**. The integration should be displayed in the grid. + +## Integrate with your application {#integrate} + +Before you can activate your integration in Magento, you must create two pages on your application to handle OAuth communications. + +* The location specified in the `identity_link_url` parameter must point to a page that can handle login requests. + +* The location specified in the `endpoint_url` parameter (**Callback URL** in Admin) must be able to process OAuth token exchanges. + +### Login page {#login} + +When a merchant clicks the **Activate** button in Admin, a pop-up login page for the third-party application displays. Magento sends values for `oauth_consumer_key` and `success_call_back` parameters. The application must store the value for `oauth_consumer_key` to tie it to the login ID. Use the `success_call_back` parameter to return control back to Magento. + +### Callback page {#callback} + +The callback page must be able to perform the following tasks: + +* Receive an initial HTTPS POST that Magento sends when the merchant activates integration. This post contains the Magento store URL, an `oauth_verifier`, the OAuth consumer key, and the OAuth consumer secret. The consumer key and secret are generated when the integration is created. + +* Ask for a request token. A request token is a temporary token that the user exchanges for an access token. Use the following API to get a request token from Magento: + + `POST /oauth/token/request` + + See [Get a request token]( {{ page.baseurl }}/get-started/authentication/gs-authentication-oauth.html#pre-auth-token ) for more details about this call. + +* Parse the request token response. The response contains an `oauth_token` and `oauth_token_secret`. + +* Ask for an access token. The request token must be exchanged for an access token. Use the following API to get a request token from Magento: + + `POST /oauth/token/access` + + See [Get an access token]( {{ page.baseurl }}/get-started/authentication/gs-authentication-oauth.html#get-access-token ) for more details about this call. + +* Parse the access token response. The response contains an `oauth_token` and `oauth_token_secret`. These values will be different than those provided in the request token response. + +* Save the access token and other OAuth parameters. The access token and OAuth parameters must be specified in the `Authorization` header in each call to Magento. + +## Related Topics + +* [Web API authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication.html) +* [OAuth-based authentication]( {{ page.baseurl }}/get-started/authentication/gs-authentication-oauth.html ) +* [Magento System Requirements]({{ page.baseurl }}/install-gde/system-requirements.html) +* [Create the module file structure]({{ page.baseurl }}/extension-dev-guide/build/module-file-structure.html) +* [Create a component]({{ page.baseurl }}/extension-dev-guide/build/create_component.html) diff --git a/src/guides/v2.4/get-started/gs-curl.md b/src/guides/v2.4/get-started/gs-curl.md index c3641e08d07..3a1b4359ade 100644 --- a/src/guides/v2.4/get-started/gs-curl.md +++ b/src/guides/v2.4/get-started/gs-curl.md @@ -3,6 +3,8 @@ group: web-api title: Use cURL to run the request functional_areas: - Integration +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/gs-curl/ +status: migrated --- ['cURL'](https://curl.haxx.se/) is a command-line tool that lets you transmit HTTP requests and receive responses from the command line or a shell script. It is available for Linux distributions, Mac OS X, and Windows. @@ -15,7 +17,7 @@ To create the endpoint in the call, append the REST URI that you constructed in To pass the customer data object in the POST call payload, specify a JSON or [XML](https://glossary.magento.com/xml) request body on the call. -For a complete list of cURL command options, see [curl.1 the man page](http://curl.haxx.se/docs/manpage.html). +For a complete list of cURL command options, see [curl.1 the man page](https://curl.se/docs/manpage.html). The cURL examples in this guide use the following command-line options: diff --git a/src/guides/v2.4/get-started/gs-web-api-request.md b/src/guides/v2.4/get-started/gs-web-api-request.md index 05f30ad911f..fde63641f2c 100644 --- a/src/guides/v2.4/get-started/gs-web-api-request.md +++ b/src/guides/v2.4/get-started/gs-web-api-request.md @@ -1,6 +1,8 @@ --- group: web-api title: Construct a request +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/gs-web-api-request/ +status: migrated --- To configure a web API, developers define some of the elements of each API call in the `/vendor///etc/webapi.xml` file, where `` is your vendor name (for example, `magento`) and `` is your module name (which exactly matches its definition in `composer.json`). For example, the web API for the Customer service is defined in the `/vendor/magento/module-customer/etc/webapi.xml` configuration file. Service data interfaces and builders define the required and optional parameters and the return values for the [API](https://glossary.magento.com/api) calls. @@ -123,7 +125,7 @@ This example shows you how to construct a REST web API call to create an account The `createAccount` call requires a `customer` data object. The `password` and `redirectUrl` values are optional. The default `password` value is `null` and the default `redirectUrl` value is blank. -1. To pass the customer data object in the POST call payload, specify [JSON](http://www.json.com/) or [XML](https://glossary.magento.com/xml) request body on the call. +1. To pass the customer data object in the POST call payload, specify JSON or [XML](https://glossary.magento.com/xml) request body on the call. ### Customers Search API request example {#customers-search-api-request-example} @@ -143,7 +145,7 @@ The following example builds a Customers Search request based on search criteria 1. Open the [Magento/Customer/etc/webapi.xml]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Customer/etc/webapi.xml) configuration file and find the [CustomerRepositoryInterface]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Customer/Api/CustomerRepositoryInterface.php) interface with the `getList` method. -1. Set the headers, URI and method to a request object. Use URI `/V1/customers/search` and method `GET` values. Use the `searchCriteria` parameter to complete the Customer Search query. See [searchCriteria usage]({{ page.baseurl }}/rest/performing-searches.html). +1. Set the headers, URI and method to a request object. Use URI `/V1/customers/search` and method `GET` values. Use the `searchCriteria` parameter to complete the Customer Search query. See [searchCriteria usage](https://developer.adobe.com/commerce/webapi/rest/use-rest/performing-searches). The following example finds customers whose first name contains "ver" or whose last name contains "Costello". diff --git a/src/guides/v2.4/get-started/gs-web-api-response.md b/src/guides/v2.4/get-started/gs-web-api-response.md deleted file mode 120000 index 6352bb65a64..00000000000 --- a/src/guides/v2.4/get-started/gs-web-api-response.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/get-started/gs-web-api-response.md \ No newline at end of file diff --git a/src/guides/v2.4/get-started/gs-web-api-response.md b/src/guides/v2.4/get-started/gs-web-api-response.md new file mode 100644 index 00000000000..7db58f5029a --- /dev/null +++ b/src/guides/v2.4/get-started/gs-web-api-response.md @@ -0,0 +1,90 @@ +--- +group: web-api +subgroup: 20_REST +title: Status codes and responses +menu_title: Status codes and responses +menu_order: 3 +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/gs-web-api-response/ +status: migrated +--- + +## REST responses {#rest-responses} + +Each web [API](https://glossary.magento.com/api) call returns a HTTP status code and a response payload. When an error occurs, the response body also returns an error message. + +### HTTP status codes {#http-status-codes} + +Each [web API](https://glossary.magento.com/web-api) call returns an HTTP status code that reflects the result of a request: + +HTTP code | Meaning | Description +--- | --- | --- +200 | Success | The framework returns HTTP 200 to the caller upon success. +400 | Bad Request | If service implementation throws either `Magento_Service_Exception` or its derivative, the framework returns a HTTP 400 with a error response including the service-specific error code and message. This error code could indicate a problem such as a missing required parameter or the supplied data didn't pass validation. +401 | Unauthorized | The caller was not authorized to perform the request. For example, the request included an invalid token or a user with customer permissions attempted to access an object that requires administrator permissions. +403 | Forbidden | Access is not allowed for reasons that are not covered by error code 401. +404 | Not found | The specified REST endpoint does not exist. The caller can try again. +405 | Not allowed | A request was made of a resource using a method that is not supported by that resource. For example, using GET on a form which requires data to be presented via POST, or using PUT on a read-only resource. +406 | Not acceptable | The requested resource is only capable of generating content that is not acceptable according to the Accept headers sent in the request. +500 | System Errors | If service implementation throws any other exception like network errors, database communication, framework returns HTTP 500. + +### Response payload {#response-payload} + +POST, PUT, and GET web API calls return a response payload. This payload is a JSON- or XML-formatted response body. The `Accept: application/` header in the request determines the format of the response body, where `FORMAT` is either `json` or `xml`. + +A successful DELETE call returns `true`. An unsuccessful DELETE call returns a payload similar to the other calls. + +The response payload depends on the call. +For example, a `GET /V1/customers/:customerId` call returns the following payload: + +```json +{ + "customers": { + "customer": { + "email": "user@example.com", + "firstname": "John", + "lastname": "Doe" + }, + "addresses": [ + { + "defaultShipping": true, + "defaultBilling": true, + "firstname": "John", + "lastname": "Doe", + "region": { + "regionCode": "CA", + "region": "California", + "regionId": 12 + }, + "postcode": "90001", + "street": ["Zoe Ave"], + "city": "Los Angeles", + "telephone": "555-000-00-00", + "countryId": "US" + } + ] + } +} +``` + +This JSON-formatted response body includes a `customer` object with the customer email, first name, and last name, and customer address information. The information in this response body shows account information for the specified customer. + +### Error format {#error-format} + +When an error occurs, the response body contains an error code, error message, and optional parameters. + +Part | Description +--- | --- | --- +`code` | The status code representing the error. +`message` | The message explaining the error. +`parameters` | Optional. An array of attributes used to generate a different and/or localized error message for the client. + +As an example, Magento returns a `code` of `400` and the following `message` when an invalid `sku` value is specified in the call `PUT V1/products/:sku`. + +```json +{ + "message": "Invalid product data: %1", + "parameters": [ + "Invalid attribute set entity type" + ] +} +``` diff --git a/src/guides/v2.4/get-started/rest_front.md b/src/guides/v2.4/get-started/rest_front.md deleted file mode 120000 index 54a71fc4b2f..00000000000 --- a/src/guides/v2.4/get-started/rest_front.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/get-started/rest_front.md \ No newline at end of file diff --git a/src/guides/v2.4/get-started/rest_front.md b/src/guides/v2.4/get-started/rest_front.md new file mode 100644 index 00000000000..2b8e314c29a --- /dev/null +++ b/src/guides/v2.4/get-started/rest_front.md @@ -0,0 +1,56 @@ +--- +group: web-api +subgroup: 20_REST +title: Use REST APIs +menu_order: 1 +menu_node: parent +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/rest_front/ +status: migrated +--- + +The Magento REST [API](https://glossary.magento.com/api) defines a set of functions that a developer can use to perform requests and receive responses. These interactions are performed using the HTTP protocol. + +The caller issues an HTTP request, which contains the following elements: + +* An HTTP header that provides authentication and other instructions +* A verb, which can be one of GET, POST, PUT, or DELETE. +* An endpoint, which is a Uniform Resource Indicator (URI) that identifies the server, the web service, and the resource being acted on. +* The call payload, which is set of input parameters and attributes that you supply with the request. + +Magento returns a response payload as well as an HTTP status code. + +This guide introduces web API, REST, and cURL command concepts. It shows you how to authenticate and construct and run REST [web API](https://glossary.magento.com/web-api) calls. You run REST web API calls through cURL commands or a REST client. + +Read the following sections to get up and running with the Magento web APIs: + + + + diff --git a/src/guides/v2.4/get-started/soap/soap-web-api-calls.md b/src/guides/v2.4/get-started/soap/soap-web-api-calls.md deleted file mode 120000 index 20be4d735ba..00000000000 --- a/src/guides/v2.4/get-started/soap/soap-web-api-calls.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/get-started/soap/soap-web-api-calls.md \ No newline at end of file diff --git a/src/guides/v2.4/get-started/soap/soap-web-api-calls.md b/src/guides/v2.4/get-started/soap/soap-web-api-calls.md new file mode 100644 index 00000000000..8e05d07f9c9 --- /dev/null +++ b/src/guides/v2.4/get-started/soap/soap-web-api-calls.md @@ -0,0 +1,98 @@ +--- +group: web-api +subgroup: 30_SOAP +title: Use SOAP Services +menu_title: Use SOAP Services +menu_order: 1 +menu_node: parent +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/soap-web-api-calls/ +status: migrated +--- + +## WSDL File {#wsdl} + +A WSDL file is generated only for services that you request. This means that different clients may use different services and therefore use different WSDLs. + +The Magento web [API](https://glossary.magento.com/api) uses WSDL 1.2, which complies with WS-I 2.0 Basic Profile. + +Each Magento service interface that is part of a [service contract](https://glossary.magento.com/service-contract) is represented as a separate service in the WSDL. + +To consume several services, you must specify them in the WSDL endpoint [URL](https://glossary.magento.com/url). + +| Service | WSDL endpoint URL | Available services | +| --------- | ---------- | ------------------------------------------ | +| customer | http://magentohost/soap?wsdl&services=customerCustomerRepositoryV1 | \Magento\Customer\Api\Data\CustomerInterface | +| customer, catalogProduct | http://magentohost/soap/custom_store?wsdl&services=customerCustomerRepositoryV1,catalogProductRepositoryV1 | \Magento\Customer\Api\Data\CustomerInterface, \Magento\Catalog\Api\Data\ProductInterface | + +The WSDL URL follows the following pattern: + +`http:///soap/?wsdl&services=,` + +You must specify each service version in the endpoint URL. + +This way, you can have a strict contract between your application and the service provider. + +If you want an overview to all the available Web Services, use the following URL format to get a list of all SOAP Services: + +`http:///soap/all?wsdl_list=1` + +```xml + + ... + + http:///soap/all?wsdl&services=storeStoreRepositoryV1 + + + http:///soap/all?wsdl&services=storeGroupRepositoryV1 + + + http:///soap/all?wsdl&services=storeWebsiteRepositoryV1 + + ... + +``` + +### Service class-to-service name conversion rules + +Service names use the following conventions: + +* CamelCase is used for service naming. +* The string `Service` is omitted. +* The `Magento` prefix is omitted. +* The `Interface` suffix is omitted. +* If the service name is the same as the [module](https://glossary.magento.com/module) name, the module name is omitted. For example, if there is a customer service interface in the customer module, the word `customer` will be used in the service name only once. + +| Original Service Interface Name | Service Name | +|---------- +| \Magento\Customer\Api\Data\CustomerInterface | customerCustomerRepositoryV1 | +| \Magento\Customer\Api\AccountManagementInterface | customerAccountManagementV1 | +| \Enterprise\Customer\Service\V3\Customer\AddressInterface | enterpriseCustomerAddressV3 | + +## Authentication {#auth} + +Protected SOAP resources can be accessed using bearer tokens (OAuth access tokens) over HTTP. Access tokens are strings representing an access [authorization](https://glossary.magento.com/authorization) issued to the client. For more information, see [OAuth-based authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication-oauth.html) + +The following [PHP](https://glossary.magento.com/php) script illustrates how to get an access token: + +```php + [ + 'header' => 'Authorization: Bearer 36849300bca4fbff758d93a3379f1b8e' + ] + ]; +$wsdlUrl = 'http://magento.ll/soap/default?wsdl=1&services=testModule1AllSoapAndRestV1'; +$serviceArgs = ["id" => 1]; + +$context = stream_context_create($opts); +$soapClient = new SoapClient($wsdlUrl, ['version' => SOAP_1_2, 'stream_context' => $context]); + +$soapResponse = $soapClient->testModule1AllSoapAndRestV1Item($serviceArgs); ?> +``` + +{:.ref-header} +Related topics + +* [OAuth-based authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication-oauth.html) +* [Service contracts]({{ page.baseurl }}/extension-dev-guide/service-contracts/service-contracts.html) +* [SOAP Reference]({{ page.baseurl }}/soap/bk-soap.html) diff --git a/src/guides/v2.4/get-started/web-api-functional-testing.md b/src/guides/v2.4/get-started/web-api-functional-testing.md deleted file mode 120000 index 463ef1b8ec7..00000000000 --- a/src/guides/v2.4/get-started/web-api-functional-testing.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/get-started/web-api-functional-testing.md \ No newline at end of file diff --git a/src/guides/v2.4/get-started/web-api-functional-testing.md b/src/guides/v2.4/get-started/web-api-functional-testing.md new file mode 100644 index 00000000000..9b4e14abe27 --- /dev/null +++ b/src/guides/v2.4/get-started/web-api-functional-testing.md @@ -0,0 +1,122 @@ +--- +group: web-api +title: Web API functional testing +redirect_to: https://developer.adobe.com/commerce/webapi/get-started/web-api-functional-testing/ +status: migrated +--- + +The Web [API](https://glossary.magento.com/api) testing framework allows you to test Magento [Web API](https://glossary.magento.com/web-api) from the client application point of view. The tests can be used with either REST or SOAP. The REST or SOAP [adapter](https://glossary.magento.com/adapter) that runs the tests is specified in PHPUnit configuration. See [How to Run the Tests](#howto) for more information. + +To run Web API tests for GraphQl, see [GraphQL functional testing]({{ page.baseurl }}/graphql/functional-testing.html). + +## Implementation Details {#details} + +The Web API functional testing framework depends on the integration testing framework and reuses most of classes implemented there. + +### Custom Annotations for Data Fixtures {#custom} + +In the Web API functional tests only, the custom annotation `@magentoApiDataFixture` is available for declaring fixtures. The difference of this annotation from `@magentoDataFixture` is that the fixture will be committed and accessible during HTTP requests made within the test body. The usage rules of `@magentoApiDataFixture` are the same as `@magentoDataFixture` usage rules. + +{:.bs-callout-tip} +If data was added to the DB using `@magentoApiDataFixture`, it will not be automatically cleared after test execution. The data is cleared when `@magentoDataFixture` is used. + +Do not define fixtures in `dev/tests/api-functional`. Instead, they must be taken from `dev/tests/integration`. The integration framework defines most necessary fixtures, and they should be reused during Web API functional testing. If the existing set of fixtures is insufficient, add new fixtures under `dev/tests/integration`. The fixtures will then be available for both testing frameworks. + +To keep your test environment clean, clear all entities created in fixture files or within tests itself from the DB after test execution. This can be done either directly in tearDown or by a corresponding rollback for the fixture file. This file should be named the same as a fixture, but with `_rollback` suffix. + +## How to Create a New Test {#create} + +All Web API functional tests should inherit from the generic test case `Magento\TestFramework\TestCase\WebapiAbstract`. It defines the `_webApiCall()` method, which should be used to perform Web API calls from tests. Clients of `_webApiCall()` are unaware of which adapter will be used to perform the remote call. + +```php +namespace Magento\Webapi\Routing; + +class CoreRoutingTest extends \Magento\TestFramework\TestCase\WebapiAbstract +{ + public function testBasicRoutingExplicitPath() + { + $itemId = 1; + $serviceInfo = [ + 'rest' => [ + 'resourcePath' => '/V1/testmodule1/' . $itemId, + 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET, + ], + 'soap' => [ + 'service' => 'testModule1AllSoapAndRestV1', + 'operation' => 'testModule1AllSoapAndRestV1Item', + ], + ]; + $requestData = ['itemId' => $itemId]; + $item = $this->_webApiCall($serviceInfo, $requestData); + $this->assertEquals('testProduct1', $item['name'], "Item was retrieved unsuccessfully"); + } +} +``` + +The test above should be able to test SOAP and REST, depending on what adapter is currently used by the testing framework. The format of `$serviceInfo` is defined by the Web API client adapter interface: + +```php +namespace Magento\TestFramework\TestCase\Webapi; + +interface AdapterInterface +{ + /** + * Perform call to the specified service method. + * + * @param array $serviceInfo
    +     * array(
    +     *     'rest' => array(
    +     *         'resourcePath' => $resourcePath, // e.g. /products/:id
    +     *         'httpMethod' => $httpMethod,     // e.g. GET
    +     *         'token' => '21hasbtlaqy8t3mj73kjh71cxxkqj4aq'  #gitleaks:allow   // optional : for token based Authentication. Will
    +     *                                                             override default OAuth based authentication provided
    +     *                                                             by test framework
    +     *     ),
    +     *     'soap' => array(
    +     *         'service' => $soapService,    // soap service name with Version suffix e.g. catalogProductV1, customerV2
    +     *         'operation' => $operation     // soap operation name e.g. catalogProductCreate
    +     *     )
    +     * );
    +     * 
    + * @param array $arguments + * @param string|null $storeCode if store code not provided, default store code will be used + * @param \Magento\Integration\Model\Integration|null $integration + * @return array|string|int|float|bool + */ + public function call($serviceInfo, $arguments = [], $storeCode = null, $integration = null); +} +``` + +## How to Run the Tests {#howto} + +### Prerequisites {#prereq} + +1. Install the [PHP](https://glossary.magento.com/php) Soap [extension](https://glossary.magento.com/extension). + + Copy `php_soap.dll` or `php_soap.so` to your PHP extensions directory. Edit your `php.ini` file and enable the PHP Soap extension. Usually this means deleting the leading semi-colon in front of the extension. Then restart Apache. + + `extension=php_soap.dll` + +1. Before running the functional tests you need to clear your [cache](https://glossary.magento.com/cache). Now you are ready to run the tests. + +### Running the Tests {#running} + +1. Copy `dev/tests/api-functional/phpunit_rest.xml.dist` and `phpunit_soap.xml.dist` to `dev/tests/api-functional/phpunit_rest.xml` and `phpunit_soap.xml`. + +1. Define the Magento instance URL as a value of `TESTS_BASE_URL`, Test Webservice User as value of `TESTS_WEBSERVICE_USER` and Test Webservice API key as value of `TESTS_WEBSERVICE_APIKEY` in copied file i.e. `phpunit_rest.xml` or `phpunit_soap.xml`. + +1. Copy `dev/tests/api-functional/config/install-config-mysql.php.dist` to `dev/tests/api-functional/config/install-config-mysql.php`. + +1. Configure your DB connection and install settings in `dev/tests/api-functional/config/install-config-mysql.php`. Specify the Magento database. The base URL to access this Magento instance must be the same specified in the `phpunit_rest.xml` or `phpunit_soap.xml` file. + +1. Run `phpunit` using the `dev/tests/api-functional/phpunit_rest.xml` or `dev/tests/api-functional/phpunit_soap.xml` configuration file:: + + ```bash + vendor/bin/phpunit --configuration + ``` + + or + + ```bash + vendor/bin/phpunit -c + ``` diff --git a/src/guides/v2.4/graphql/authorization-tokens.md b/src/guides/v2.4/graphql/authorization-tokens.md index 3ce58c4f040..504e04caa38 100644 --- a/src/guides/v2.4/graphql/authorization-tokens.md +++ b/src/guides/v2.4/graphql/authorization-tokens.md @@ -1,17 +1,29 @@ --- group: graphql -title: Authorization tokens +title: GraphQL Authorization contributor_name: Atwix contributor_link: https://www.atwix.com/ redirect_from: - /guides/v2.4/graphql/get-customer-authorization-token.html +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/usage/authorization-tokens/ +status: migrated --- -Magento provides separate token services for customers and administrators. When you request a token from one of these services, the service returns a unique access token in exchange for the username and password for a Magento account. +Adobe Commerce and Magento Open Source provide two mechanisms for authorizing GraphQL calls: -Magento GraphQL provides a mutation that returns a token on behalf of a logged-in customer. You must use a REST call to fetch an admin token. Use this token in the Authorization request header field for any queries and mutations. See [Request headers]({{page.baseurl}}/graphql/send-request.html#headers) +* **Authorization tokens**. Commerce generates a JSON Web Token (JWT), a set of cryptographically signed credentials. All calls that perform an action on behalf of a logged-in customer or admin provide an authorization token. Authorization tokens are stateless. Commerce does not need to know the state of a client to execute a request--the token contains all of the information needed for authorization and authentication. -## Customer tokens +* **Session cookies**. A session cookie is information generated by Commerce that is stored in the client's browser. It contains details about the session, including the time period the user can access resources. Cookies are stateful, thereby increasing complexity and possibly latency. + +Adobe recommends that you use authorization tokens instead of session cookies for GraphQL requests. By default, session cookies are enabled. As of Commerce 2.4.5, you can disable session cookies, eliminating the chances of encountering problems caused by the differences between the two authorization methods. However, merchants with existing implementations that rely on cookies can continue using this method. [Session cookies](#session-cookies) describes how to enable or disable cookies for GraphQL. + +## Authorization tokens + +Adobe Commerce provides separate token services for customers and administrators. When you request a token from one of these services, the service returns a unique access token in exchange for the account's username and password. + +GraphQL provides a mutation that returns a token on behalf of a logged-in customer, but you must use a REST call to fetch an admin token. Any time you make a GraphQL or REST call that requires a token, specify the HTTP `Authorization` request header and assign the value as `Bearer `. [Request headers]({{page.baseurl}}/graphql/send-request.html#headers) provides an example. + +### Customer tokens The [`generateCustomerToken` mutation]({{page.baseurl}}/graphql/mutations/generate-customer-token.html) requires the customer email address and password in the payload, as shown in the following example. @@ -33,7 +45,7 @@ mutation { { "data": { "generateCustomerToken": { - "token": "hoyz7k697ubv5hcpq92yrtx39i7x10um" + "token": "hoyz7k697ubv5hcpq92yrtx39i7x10um" #gitleaks:allow } } } @@ -43,7 +55,7 @@ You can now use this token in the Authorization request header field for any que ![GraphQL Authorization Bearer]({{site.baseurl}}/common/images/graphql/graphql-authorization.png) -If necessary, you also can [revoke the customer's token]({{ page.baseurl }}/graphql/mutations/revoke-customer-token.html +You can also [revoke the customer's token]({{ page.baseurl }}/graphql/mutations/revoke-customer-token.html) when the customer logs out or changes their password. The [`generateCustomerTokenAsAdmin`]({{page.baseurl}}/graphql/mutations/generate-customer-token-as-admin.html) mutation generates a new customer token as an admin so that an administrator can perform remote shopping assistance. The customer must have enabled the `allow_remote_shopping_assistance` feature while creating the customer profile. The mutation requires the customer email address in the payload, as shown in the following example. @@ -66,16 +78,32 @@ mutation{ { "data": { "generateCustomerTokenAsAdmin": { - "customer_token": "cr0717abzoagxty1xjn4lj13kim36r6x" + "customer_token": "cr0717abzoagxty1xjn4lj13kim36r6x" #gitleaks:allow } } } ``` -## Admin tokens +### Admin tokens In Magento GraphQL, you specify an admin token only if you need to query products, categories, price rules, or other entities that are scheduled to be in a campaign (staged content). Staging is supported in {{site.data.var.ee}} only. See [Staging queries]({{page.baseurl}}/graphql/queries/index.html#staging) for more information. -Magento does not provide a GraphQL mutation that generates an admin token. You must use a REST endpoint such as `POST /V1/tfa/provider/google/authenticate` instead. [Generate the admin token]({{page.baseurl}}/rest/tutorials/prerequisite-tasks/create-admin-token.html) shows how to use this endpoint. +Magento does not provide a GraphQL mutation that generates an admin token. You must use a REST endpoint such as `POST /V1/tfa/provider/google/authenticate` instead. [Generate the admin token](https://developer.adobe.com/commerce/webapi/rest/tutorials/prerequisite-tasks/) shows how to use this endpoint. By default, an admin token is valid for 4 hours. You can change these values from Admin by selecting **Stores** > **Settings** > **Configuration** > **Services** > **OAuth** > **Access Token Expiration** > **Admin Token Lifetime**. + +## Session cookies + +The client's browser will use a session cookie if the server provides one. Prior to version 2.4.5, Commerce automatically generated session cookies even if an authorization token was specified. + +Browser-based applications that make GraphQL calls can continue implementing these cookies without changing the default setting. If you use cookies, avoid specifying Authorization headers to prevent problems caused by using two different authorization methods. + +Adobe recommends that you do not use session cookies when developing a Commerce-based application. If you adhere to this best practice, you should configure GraphQL so that the server doesn't generate them. Disabling cookies also prevents system file locks and race conditions on server resources. These problems cause slower HTTP GET request throughputs under peak traffic conditions. + +Run the following command to disable session cookies for GraphQL: + +`bin/magento config:set graphql/session/disable 1` + +To re-enable these cookies, run: + +`bin/magento config:set graphql/session/disable 0` diff --git a/src/guides/v2.4/graphql/caching.md b/src/guides/v2.4/graphql/caching.md index 500e18ab411..323c465a94c 100644 --- a/src/guides/v2.4/graphql/caching.md +++ b/src/guides/v2.4/graphql/caching.md @@ -1,6 +1,8 @@ --- group: graphql title: GraphQL caching +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/usage/caching/ +status: migrated --- Magento can cache pages rendered from the results of certain GraphQL queries with [full-page caching]({{page.baseurl}}/extension-dev-guide/cache/page-caching.html). Full-page caching improves response time and reduces the load on the server. Without caching, each page might need to run blocks of code and retrieve large amounts of information from the database. Only queries submitted with an HTTP GET operation can be cached. POST queries cannot be cached. @@ -43,7 +45,7 @@ Magento explicitly disallows caching the following queries. ## Caching for logged-in customers {#customers} -In general, guest shoppers see the same products, categories, and prices. Guest queries are easy to cache, because content can cached based on the URL and query alone. However, once the guest logs in as a customer, factors such their customer group or status as a B2B merchant can significantly affect what they see on the storefront. +In general, guest shoppers see the same products, categories, and prices. Guest queries are easy to cache because content can be cached based on the URL and query alone. However, once the guest logs in as a customer, factors such their customer group or status as a B2B merchant can significantly affect what they see on the storefront. To enable caching for logged-in customers, {{site.data.var.ce}} 2.4.4 introduces the `X-Magento-Cache-Id` response header. This header is returned with every GraphQL GET and POST request. Its value is an SHA hash comprised of several factors that are specific to the customer's context. The following values are concatenated prior to being hashed: diff --git a/src/guides/v2.4/graphql/custom-filters.md b/src/guides/v2.4/graphql/custom-filters.md deleted file mode 120000 index 39fde19c810..00000000000 --- a/src/guides/v2.4/graphql/custom-filters.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/graphql/custom-filters.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/custom-filters.md b/src/guides/v2.4/graphql/custom-filters.md new file mode 100644 index 00000000000..0eff817d3cb --- /dev/null +++ b/src/guides/v2.4/graphql/custom-filters.md @@ -0,0 +1,146 @@ +--- +group: graphql +title: Filtering with custom attributes +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/usage/custom-filters/ +status: migrated +--- + +As of Magento 2.3.4, the `filter` attribute of the [`products`]({{page.baseurl}}/graphql/queries/products.html) query accepts the `ProductAttributeFilterInput` object. (In previous versions, the `filter` attribute required a `ProductFilterInput` object. This object contained a hard-coded list of filterable attributes, and you could not filter on a custom attribute or any other attribute that was not on the list.) + +## Prerequisites + +You have several options when enabling a custom attribute (or any attribute that is not listed by default in the `ProductAttributeFilterInput` object) for filtering. Navigate to the attribute's **Storefront Properties** page (**Stores** > Attributes > **Product** > <attribute name> > **Storefront Properties**) in the Admin, then perform one or both of the following actions: + +- Set the **Use in Layered Navigation** field to **Filterable (with results)** or **Filterable (no results)**. This field allows the attribute to be used as a filter and returns layered navigation and aggregation data. If this field is set to **No**, then the attribute will not return layered navigation and aggregation data. + +- Set the **Use in Search** and **Visible in Advanced Search** fields to **Yes**. These fields primarily allow Magento to index the attribute's contents, making the data available for quick and advanced searches. Setting both these fields also allows the attribute to be used as a filter. These fields do not configure the presence or absence of layered navigation and aggregation data. If you set only one of these fields to **Yes**, the attribute cannot be used as a filter (unless you set the **Use in Layered Navigation** field to a value other than **No**). + +## Define the filter for your query + +The [`filter`]({{page.baseurl}}/graphql/queries/products.html#ProductFilterInput) definition for your custom attribute requires one of the following input data types: + +- `FilterEqualTypeInput` - Specify this data type when the **Catalog Input Type for Store Owner** field for your custom attribute is set to Yes/No, Select, or Multiple select. Your filter can contain the `eq` or `in` attribute. Use the `eq` attribute to exactly match the specified string. Use the `in` attribute to filter on a comma-separated list of values. +- `FilterMatchTypeInput` - Specify this data type when the **Catalog Input Type for Store Owner** field for your custom attribute is set to Text Field or Text Area. Your filter must contain the `match` attribute, which will return all items that partially fuzzy match the specified string. +- `FilterRangeTypeInput` - Specify this data type when the **Catalog Input Type for Store Owner** field for your custom attribute is set to Price or Date. Your filter can contain one or both of the `to` and `from` attributes, which serve to provide a range of values to filter on. + +## Example + +In this example, the custom attribute `volume` was assigned to the `bags` attribute group. Running the [`customAttributeMetadata` query]({{page.baseurl}}/graphql/queries/custom-attribute-metadata.html) on this custom attribute reveals that the `label` and `value` values for the attribute's options are as follows: + +**Request:** + +```graphql +{ + customAttributeMetadata( + attributes: [ + { + attribute_code: "volume" + entity_type: "catalog_product" + } + ] + ) { + items { + attribute_code + attribute_type + entity_type + input_type + attribute_options { + value + label + } + } + } +} +``` + +**Response:** + +```graphql +{ + "data": { + "customAttributeMetadata": { + "items": [ + { + "attribute_code": "volume", + "attribute_type": "Int", + "entity_type": "catalog_product", + "input_type": "select", + "attribute_options": [ + { + "value": "216", + "label": "Large" + }, + { + "value": "217", + "label": "Medium" + }, + { + "value": "218", + "label": "Small" + } + ] + } + ] + } + } +} +``` + +`label` | `value` +--- | --- +`Large` | `216` +`Medium` | `217` +`Small` | `218` + +In this scenario, a [`products`]({{page.baseurl}}/graphql/queries/products.html) search filtered to return items where the `volume` attribute is set to `Large` would be similar to the following: + +**Request:** + +```graphql +{ + products(filter: { volume: { eq: "216" } }) { + total_count + items { + name + sku + } + } +} +``` + +**Response:** + +The response might be similar to the following: + +```json +{ + "data": { + "products": { + "total_count": 1, + "items": [ + { + "name": "Wayfarer Messenger Bag", + "sku": "24-MB05" + } + ] + } + } +} +``` + +## Output attributes + +When a product requires a filter attribute that is not a field on its output schema, inject the attribute name into the class in a module's `di.xml` file. + +```xml + + + + field + other_field + + + +``` + +This example adds `field_to_sort` and `other_field_to_sort` attributes to the `additionalAttributes` array defined in the `ProductEntityAttributesForAst` class. The array already contains the `min_price`, `max_price`, and `category_ids` attributes. diff --git a/src/guides/v2.4/graphql/develop/create-custom-url-resolver.md b/src/guides/v2.4/graphql/develop/create-custom-url-resolver.md deleted file mode 120000 index b5f726181ea..00000000000 --- a/src/guides/v2.4/graphql/develop/create-custom-url-resolver.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/develop/create-custom-url-resolver.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/develop/create-custom-url-resolver.md b/src/guides/v2.4/graphql/develop/create-custom-url-resolver.md new file mode 100644 index 00000000000..2f445f47baf --- /dev/null +++ b/src/guides/v2.4/graphql/develop/create-custom-url-resolver.md @@ -0,0 +1,66 @@ +--- +group: graphql +title: Create a custom GraphQL urlResolver service +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/develop/resolvers/ +status: migrated +--- + +The `Magento\UrlRewrite` module converts URL rewrite requests to canonical URLs. As a result, your custom `urlResolver` module does not require its own class for performing these actions, but it must be able to save and delete entries in the `url_rewrite` table. + +## Create observers + +You can use the `Magento\CmsUrlRewrite\Observer\ProcessUrlRewriteSavingObserver` class as the basis for saving URL rewrites. For deleting entries, create a `ProcessUrlRewriteDeleteObserver` class similar to the following: + +```php +/** + * Generate urls for UrlRewrite and save it in storage + * + * @param \Magento\Framework\Event\Observer $observer + * @return void + */ +public function execute(EventObserver $observer) +{ + /** @var \Magento\MyModule\Model\Page $myEntityPage */ + $page = $observer->getEvent()->getObject(); + + if ($page->isDeleted()) { + $this->urlPersist->deleteByData( + [ + UrlRewrite::ENTITY_ID => $page->getId(), + UrlRewrite::ENTITY_TYPE => MyEntityPageUrlRewriteGenerator::ENTITY_TYPE, + ] + ); + } +} +``` +See [Events and observers]({{ page.baseurl }}/extension-dev-guide/events-and-observers.html) for more information about creating an observer. + +## Configure the custom module + +Update the `graphql.xml` and `events.xml` file in your module's `etc` directory to configure your custom GraphQL `urlResolver` service: + +* Add lines similar to the following in your module's `graphql.xml` file to define the enumeration. The `UrlRewriteGraphQl` module defines `UrlRewriteEntityTypeEnum`. + + ```xml + + + MY_ENTITY + + + ``` + +* Define two events similar to the following in your module's `events.xml` file. + + ```xml + + + + + + + ``` + +## Related Topics + +* [Events and observers]({{ page.baseurl }}/extension-dev-guide/events-and-observers.html) +* [urlResolver endpoint]({{ page.baseurl }}/graphql/queries/url-resolver.html) diff --git a/src/guides/v2.4/graphql/develop/create-graphqls-file.md b/src/guides/v2.4/graphql/develop/create-graphqls-file.md index 4e6f0705f36..63a9ada9510 100644 --- a/src/guides/v2.4/graphql/develop/create-graphqls-file.md +++ b/src/guides/v2.4/graphql/develop/create-graphqls-file.md @@ -2,6 +2,8 @@ group: graphql title: Define the GraphQL schema for a module redirect_from: /guides/v2.4/graphql/develop/configure-graphql-xml.html +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/develop/ +status: migrated --- Each module that adds to or extends from a GraphQL schema can do so by placing a `schema.graphqls` file in its `etc` directory. Magento Core adds [`GraphQl`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/GraphQl) modules based on the purpose of the schema being extended/added and the core modules they depend on. For example, the `CustomerGraphQl` module adds a query and multiple mutations to the `graphql` endpoint to view and modify customer data. The `CustomerGraphQl` module relies on the `Customer` core module. diff --git a/src/guides/v2.4/graphql/develop/debugging.md b/src/guides/v2.4/graphql/develop/debugging.md deleted file mode 120000 index 7bae166666e..00000000000 --- a/src/guides/v2.4/graphql/develop/debugging.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/develop/debugging.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/develop/debugging.md b/src/guides/v2.4/graphql/develop/debugging.md new file mode 100644 index 00000000000..416e6d9952c --- /dev/null +++ b/src/guides/v2.4/graphql/develop/debugging.md @@ -0,0 +1,34 @@ +--- +group: graphql +title: Debugging GraphQL queries +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/develop/debugging/ +status: migrated +--- + +This topic provides recommendations on how to debug GraphQL requests. + +## Debugging with PHPStorm and Xdebug + +When [using GraphiQL]({{ page.baseurl }}/graphql/index.html#how-to-access-graphql) or any other client for testing GraphQL queries, you might need to debug the request processing. +You can use Xdebug for debugging the PHP execution of a GraphQL query just as you would for other HTTP requests. +To start debugging, add the `?XDEBUG_SESSION_START=PHPSTORM` parameter to the endpoint URL. +The following example shows how to establish a connection between Xdebug and PHPStorm IDE. + +```http +http:///graphql?XDEBUG_SESSION_START=PHPSTORM +``` + +You can also enable an Xdebug connection for a particular request by setting the corresponding header parameter. + +```text +Cookie: XDEBUG_SESSION=PHPSTORM +``` + +As a result, Xdebug within the PHP execution attempts to make a connection to an IDE. If the IDE is listening, it will give the instructions to Xdebug about breakpoints and other relevant information. + +## Related Topics + +* [GraphQL request headers]({{ page.baseurl }}/graphql/send-request.html) +* [Exception handling]({{ page.baseurl }}/graphql/develop/exceptions.html) diff --git a/src/guides/v2.4/graphql/develop/exceptions.md b/src/guides/v2.4/graphql/develop/exceptions.md deleted file mode 120000 index a807898ace5..00000000000 --- a/src/guides/v2.4/graphql/develop/exceptions.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/develop/exceptions.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/develop/exceptions.md b/src/guides/v2.4/graphql/develop/exceptions.md new file mode 100644 index 00000000000..9f24130310c --- /dev/null +++ b/src/guides/v2.4/graphql/develop/exceptions.md @@ -0,0 +1,20 @@ +--- +group: graphql +title: Exception handling +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/develop/exceptions/ +status: migrated +--- + +The WebApi module has an implementation to "mask" `LocalizedExceptions` so they aren't exposed to the client. GraphQL accomplishes this by restricting verbose output to only those exceptions implementing `\GraphQL\Error\ClientAware`, and only if the system is in developer mode. In these circumstances, Magento returns a full stack trace. Otherwise, Magento writes these exceptions to the system `exception.log` file while returning an "internal server error" to the client. + +You should implement the `\GraphQL\Error\ClientAware` interface to handle errors in your module that are directly related to a GraphQL field having an anticipated exception. If you don't, the client will not receive useful messages. However, you should ensure that you don't implement the `ClientAware` interface for too many exceptions. Doing this risks exposing sensitive data to the client. + +Magento provides the following exception classes in `Magento\Framework\GraphQl\Exception`. + +Class | Exception category | Description +--- | --- | --- +`GraphQlAlreadyExistsException` | `graphql-already-exists` | Thrown when data already exists +`GraphQlAuthenticationException` | `graphql-authentication` | Thrown when an authentication fails +`GraphQlAuthorizationException` | `graphql-authorization` | Thrown when an authorization error occurs +`GraphQlInputException` | `graphql-input` | Thrown when a query contains invalid input +`GraphQlNoSuchEntityException` | `graphql-no-such-entity` | Thrown when an expected resource doesn't exist diff --git a/src/guides/v2.4/graphql/develop/extend-existing-schema.md b/src/guides/v2.4/graphql/develop/extend-existing-schema.md deleted file mode 120000 index b6bf08ea1f6..00000000000 --- a/src/guides/v2.4/graphql/develop/extend-existing-schema.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/develop/extend-existing-schema.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/develop/extend-existing-schema.md b/src/guides/v2.4/graphql/develop/extend-existing-schema.md new file mode 100644 index 00000000000..cb3c506216a --- /dev/null +++ b/src/guides/v2.4/graphql/develop/extend-existing-schema.md @@ -0,0 +1,137 @@ +--- +group: graphql +title: Extend an existing GraphQL schema +contributor_name: Adarsh Manickam +contributor_link: https://github.com/drpayyne +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/develop/extend-existing-schema/ +status: migrated +--- + +You can extend the default Magento GraphQL schema to add attributes and data types, modify existing resolver behavior, and add features using other extension points. GraphQL uses _stitching_ to assemble a single unified schema out of the many schemas defined in individual modules. All `schema.graphqls` files are stitched together to a single schema. In this process, all nodes with the same type (such as type, interface, and enum) and name are stitched together and recursively extended/overridden. This process is similar to how XML merging works. + +## Extend the schema + +The first step to retrieve a custom field in an existing query is to extend the appropriate schema object. + +In the following example, we will change the description of an existing field (`attribute_set_id`) and add a new field (`attribute_set_name`) to the GraphQL schema for the `products` query. Common use cases require adding fields to the database. [Declarative Schema]({{ page.baseurl }}/extension-dev-guide/declarative-schema/) describes how to add a custom field to the database. + +The simplified structure of the query schema to get products is: + +```graphql +schema { + query: Query + ... +} + +type Query { + products (...): Products + ... +} + +type Products { + items: [ProductInterface] + ... +} + +interface ProductInterface { + id: Int + name: String + sku: String + ... +} +``` + +We need to extend the `ProductInterface`, since that is the schema object for a product. We can do this by creating a `schema.graphqls` file in our custom module's (`ExampleCorp/CustomGQL`) `etc` directory. + +`ExampleCorp_CustomGQL/etc/schema.graphqls` + +```graphql +interface ProductInterface { + attribute_set_id: Int + @doc(description: "ID of the attribute set assigned to the product") + attribute_set_name: String + @doc(description: "Name of attribute set assigned to the product") + @resolver(class: "\\ExampleCorp\\CustomGQL\\Model\\Resolver\\ProductAttributeSetNameResolver") +} +``` + +The above schema file is merged with the schema present at `Magento_CatalogGraphQl/etc/schema.graphqls` which contains the original `ProductInterface` object. Our schema file contains the following fields: + +- The `attribute_set_id` field is already present in the original schema, so the field described in our new schema will override the field present in the `ProductInterface` object. This example only changes the `@doc` annotation content to demonstrate how the process works. + +- The `attribute_set_name` field is not present in the orignal schema, so the field is added to the `ProductInterface` object by extending it. For our new field, we set a description and a resolver class to resolve the data to be returned. + +## Resolve the field value + +In the resolver, we get the relevant data based on the `$value` and `$args` passed to the `resolve` method. This can be done using a repository interface or a resource model of the custom field. + +In our example scenario, we use `Magento\Catalog\Api\AttributeSetRepositoryInterface` to get the attribute set name for a given attribute set ID obtained from the `$value` argument and return that as the resolution for the field. + +`ExampleCorp_CustomGQL/Model/Resolver/ProductAttributeSetNameResolver.php` + +```php +setRepository = $setRepository; + } + + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) + { + return $this->setRepository->get($value['attribute_set_id'])->getAttributeSetName(); + } +} +``` + +## Extend configuration data + +You can add your own configuration to the `storeConfig` query within your own module. + +To do this, configure the constructor argument `extendedConfigData` in the `argument` node in your area-specific `etc/graphql/di.xml` file. + +The following example adds an array-item to the `extendedConfigData` array within the construct of the `StoreConfigDataProvider`. + +```xml + + + + + + section/group/field + + + + +``` + +You must also extend the type `storeConfig` within in the `etc/schema.graphqls` file, as shown below: + +```graphql +type StoreConfig { + section_group_field : String @doc(description: "Extended Config Data - section/group/field") +} +``` + +## Related topics + +- [Define the GraphQL schema for a module]({{ page.baseurl }}/graphql/develop/create-graphqls-file.html) +- [Resolvers]({{ page.baseurl }}/graphql/develop/resolvers.html) +- [Declarative schema]({{ page.baseurl }}/extension-dev-guide/declarative-schema/) diff --git a/src/guides/v2.4/graphql/develop/identity-class.md b/src/guides/v2.4/graphql/develop/identity-class.md deleted file mode 120000 index 1c6a6a1b182..00000000000 --- a/src/guides/v2.4/graphql/develop/identity-class.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/develop/identity-class.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/develop/identity-class.md b/src/guides/v2.4/graphql/develop/identity-class.md new file mode 100644 index 00000000000..ccf06fa99a0 --- /dev/null +++ b/src/guides/v2.4/graphql/develop/identity-class.md @@ -0,0 +1,61 @@ +--- +group: graphql +title: Identity class +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/develop/identity-class/ +status: migrated +--- + +If you create a cacheable query (similar to those for product, category, and CMS data), then you must create an `Identity` class for the module. The class must return unique identifiers for cache tags that can be invalidated when an entity changes. Place this class in your module's `Model/Resolver` directory. + +An Identity class implements `Magento\Framework\GraphQl\Query\Resolver\IdentityInterface`. Your Identity class must contain the following elements: + +* Choose a cache tag prefix for the entity. + +* Your implementation of the `getIdentities(array $resolvedData)` method. The method maps the array of entities data to an array of cache tags, one for each entity. Generally, this method takes an array of query results and creates a cache tag for each entity based on the original string and the unique identifier for each item to be cached. For example, the `getIdentities` method for the `CatalogGraphQl` component appends the product ID to the `cat_p` cache tag prefix, such as `cat_p_1`, `cat_p_2`, and so on. Usually the method also adds the cache tag without an appended ID to the result array, so all cache records can be removed at once, and not only cache records for specific entities. + +Use following example as the basis for your custom `Identity` class: + +```php +cacheTag, $item['entity_id']); + } + if (!empty($ids)) { + $ids[] = $this->cacheTag; + } + return $ids; + } +} +``` + +Use the `@cache` directive in your module's [`graphqls` file]({{page.baseurl}}/graphql/develop/create-graphqls-file.html) to specify the location to your `Identity` class. Your module's `graphqls` file must point to your `Identity` class, as shown below: + +```text + categoryList( + filters: CategoryFilterInput @doc(description: "Identifies which Category filter inputs to search for and return.") + ): [CategoryTree] @doc(description: "Returns an array of categories based on the specified filters.") @resolver(class: "Magento\\CatalogGraphQl\\Model\\Resolver\\CategoryList") @cache(cacheIdentity: "Magento\\CatalogGraphQl\\Model\\Resolver\\Category\\CategoriesIdentity") +} +``` diff --git a/src/guides/v2.4/graphql/develop/resolvers.md b/src/guides/v2.4/graphql/develop/resolvers.md deleted file mode 120000 index 3f635b8d8f1..00000000000 --- a/src/guides/v2.4/graphql/develop/resolvers.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/develop/resolvers.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/develop/resolvers.md b/src/guides/v2.4/graphql/develop/resolvers.md new file mode 100644 index 00000000000..be1470b5220 --- /dev/null +++ b/src/guides/v2.4/graphql/develop/resolvers.md @@ -0,0 +1,369 @@ +--- +group: graphql +title: Resolvers +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/develop/resolvers/ +status: migrated +--- + +A resolver performs GraphQL request processing. In general, it is responsible for constructing a query, fetching data and performing any calculations, then transforming the fetched and calculated data into a GraphQL array format. Finally, it returns the results wrapped by a callable function. + +A GraphQL request is represented by the following arguments, which will be processed by a resolver: + +Field | Type | Description +--- | --- | --- +$field | [`Magento\Framework\GraphQl\Config\Element\Field`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/GraphQl/Config/Element/Field.php) | Fields are used to describe possible values for a type/interface +$context | [`Magento\Framework\GraphQl\Query\Resolver\ContextInterface`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ContextInterface.php) | Resolver context is used as a shared data extensible object in all resolvers that implement [`ResolverInterface`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/GraphQl/Query/ResolverInterface.php). +$info | [`Magento\Framework\GraphQl\Schema\Type\ResolveInfo`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/GraphQl/Schema/Type/ResolveInfo.php) | Structure containing information useful for field resolution process. +$value | array | Contains additional query parameters. `Null` in most cases. +$args | array | Contains input arguments of query. + +A GraphQL resolver must implement one of the following interfaces: + +- [`\Magento\Framework\GraphQl\Query\Resolver\BatchResolverInterface`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/GraphQl/Query/Resolver/BatchResolverInterface.php) + +- [`\Magento\Framework\GraphQl\Query\Resolver\BatchServiceContractResolverInterface`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/GraphQl/Query/Resolver/BatchServiceContractResolverInterface.php) + +- [`\Magento\Framework\GraphQl\Query\ResolverInterface`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/GraphQl/Query/ResolverInterface.php) + +The first two interfaces provide a way to resolve multiple branches/leaves at once (known as batching), while the last one resolves one request at a time. We recommend using batch resolvers for queries because they improve performance by fetching information required to resolve multiple GraphQL requests with a single operation. + +## Query resolvers + +### BatchResolverInterface + +Batch resolvers gather GraphQL requests for the same field until there is no way to process the tree further without resolving previous requests. + +Consider the following example: + +```graphql +query ($filter: ProductAttributeFilterInput!) { + products (filter: $filter) { + items { + id + sku + related_products { + sku + related_products { + sku + } + } + } + total_count + } +} +``` + +The query loads a list of products, the SKUs of their related products, and then any secondary related product SKUs. + +Loading a list of related products individually for each product would be expensive performance-wise. With batch resolvers, you can load linked products for all products that were initially found, then group them by root products. After the `items` branch is resolved, a batch resolver for `related_products` will be called for the first product found. Instead of resolving the list right away, it will just add the first product to the list of products that require loading additional related products. After all the products from the `items` branch have been loaded, the lists of related products must be loaded. Then, `BatchResolverInterface::resolve()` executes with a gathered list of previous requests to `related_products` branches. At this point, the resolver is able to extract product DTOs from each GraphQL request, load all the product links, sort them by root products, and generate GraphQL values for each branch. After this is done, the same batching will take place when resolving child `related_products` branches. + +The following pseudo-code shows a `related_products` branch resolver: + +```php +class RelatedProducts implements BatchResolverInterface +{ + ... + + public function resolve(ContextInterface $context, Field $field, array $requests): BatchResponse + { + //Get the list of products we need to load related products for + $rootProductIds = array_map(function ($request) { return $request->getValue()['model']->getId(); }, $requests); + + //Load the links + $productLinks = $this->service->getRelatedProductLinks($rootProductIds); + + //Sort the links + $response = new BatchResponse(); + foreach ($requests as $request) { + $response->addResponse($request, $productLinks[$request->getValue()['model']->getId()]); + } + + return $response; + } +} +``` + +Each GraphQL request object must be assigned a [`\Magento\Framework\GraphQl\Query\Resolver\Value`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/GraphQl/Query/Resolver/Value.php) result type or any type of data (mixed). This value takes in a callable function to its constructor that will be invoked at the latest possible time for the resolver to acquire its data. As a result, a list of items being resolved can be retrieved all at once by establishing a buffer that contains all relevant parent data to filter and fetch for the children list data. + +[`\Magento\RelatedProductGraphQl\Model\Resolver\Batch\AbstractLinkedProducts`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/RelatedProductGraphQl/Model/Resolver/Batch/AbstractLikedProducts.php) contains an example of batch resolver implementation. + +### BatchServiceContractResolverInterface + +Requests for this interface to resolve are gathered into batches in the same way as for `BatchResolverInterface`, except that the actual resolving is delegated to a batch service contract. The job of the `BatchServiceContractResolverInterface` resolver is to convert GraphQL requests into DTOs acceptable by the service contract, and then convert results returned by the contract into a GraphQL response. + +Consider the same example query: + +```graphql +query ($filter: ProductAttributeFilterInput!) { + products (filter: $filter) { + items { + id + sku + related_products { + sku + related_products { + sku + } + } + } + total_count + } +} +``` + +Here, we will delegate loading all related products to a service that accepts a list of root product IDs, and then returns individual lists for each. + +Pseudo-code for a GraphQL resolver delegating the work to a service contract may look like this: + +```php +class RelatedProductsResolver implements BatchServiceContractResolverInterface +{ + ... + + public function getServiceContract(): array + { + return [ProductLinksRetriever::class, 'getRelatedProducts']; + } + + public function convertToServiceArgument(ResolveRequestInterface $request) + { + return new RootProductCriteria($request->getValue()['model']->getId()); + } + + public function convertFromServiceResult($result, ResolveRequestInterface $request) + { + return $result->getLinkedProducts(); + } +} +``` + +The `getServiceContract()` method points to the service contract to be used. + +The `convertToServiceArgument()` method converts GraphQL requests to a criteria item to be passed in a list as the argument to the contract. Remember that batch service contract methods must accept a single argument: a list (array) of criteria objects. + +The `convertFromServiceResult()` method converts one of the result items into a GraphQL response (a [`\Magento\Framework\GraphQl\Query\Resolver\Value`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/GraphQl/Query/Resolver/Value.php) instance or an array). Remember that batch service contracts must return result items in the same order as were the criteria items passed as the method's list argument. + +The batch service contract used in the example would look something like this: + +```php +class ProductLinksRetriever +{ + ... + + /** + * @param RootProductCriteria[] $criteriaList + * @return RelatedProductsFound[] + */ + public function getRelatedProducts(array $criteriaList): array + { + .... + } +} + +class RootProductCriteria +{ + .... + + public function __construct(int $rootProductId) + { + $this->productId = $rootProductId; + } + + public function getRootProductId(): int + { + return $this->productId; + } +} + +class RelatedProductsFound +{ + .... + + public function getLinkedProducts(): array + { + .... + } + + public function getRootProductId(): int + { + .... + } +} +``` + +A real example can be found at [\Magento\CatalogGraphQl\Model\Resolver\Product\BatchProductLinks]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/BatchProductLinks.php) + +### ResolverInterface + +This interface resolves one branch or leaf at a time. It returns [`\Magento\Framework\GraphQl\Query\Resolver\Value`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/GraphQl/Query/Resolver/Value.php) or any type of data (mixed). This value takes in a callable function to its constructor that will be invoked at the latest possible time for the resolver to acquire its data. As a result, a list of items being resolved can be retrieved all at once by establishing a buffer that contains all relevant parent data to filter and fetch for the children list data. + +You can view an example inside the [`\Magento\BundleGraphQl\Model\Resolver\BundleItemLinks`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php) resolver. This resolver takes each bundle option ID and its corresponding parent product ID and stores them in a collection's filter buffer (in this case, using the [`\Magento\BundleGraphQl\Model\Resolver\Links\Collection::addIdFilters()`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/BundleGraphQl/Model/Resolver/Links/Collection.php#L62-L70) function). Each resolver then returns a callable that invokes this collection. The collection caches the result of all link entities it fetched for all the option_id/parent_id combinations. This fetch only needs to occur once for the whole `BundleItemLink` list, and each resulting callable that is invoked for every link in the list returns an item from the collections cached result. + +A `Value` object wraps a callable object, and you can use [`\Magento\Framework\GraphQl\Query\Resolver\ValueFactory`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/GraphQl/Query/Resolver/ValueFactory.php) to create a value. + +## Mutation requirements + +Like queries, mutations are also defined within the `/etc/schema.graphqls` file. + +### Mutation syntax + +```text +type Mutation { + mutationQueryName(inputParamName: MutationQueryInputType, inputParamName2: MutationQueryInputType2, ...): MutationQueryOutput @resolver(class: "Magento\\\\Model\\Resolver\\MutationResolverModel") @doc(description:"Mutation query description") +} +``` + +Syntax option | Description +--- | --- +`mutationQueryName` | The name of mutation +`inputParamName` | Input parameters for the mutation (optional) +`MutationQueryInputType` | The type of input parameter, such as `String`, `Int`, or a custom type, like `MyCustomInput` +`MutationQueryOutput` | The mutation's result type, such as `String`, `Int`, or a custom type, like `MyCustomOutput` +`@resolver(class)` | The class of the resolver +`@doc(description)` | Describes the purpose of the mutation +`@deprecated(reason: "description")` | Use `@deprecated` to mark a query, mutation, or attribute as deprecated + +### Resolver class + +Use the following sample code as a template for the GraphQL resolver mutation class: + +```php +\Model\Resolver; + +use Magento\Framework\GraphQl\Config\Element\Field; +use Magento\Framework\GraphQl\Query\ResolverInterface; +use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; + +/** + * @inheritdoc + */ +class MutationResolverModel implements ResolverInterface +{ + /** + * @inheritdoc + */ + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) + { + // resolver functionality ... + } +} +``` + +### Example usage + +The mutation query below creates an empty cart and returns a cart unique identifier + +```text +type Mutation { + createEmptyCart: String @resolver(class: "\\Magento\\QuoteGraphQl\\Model\\Resolver\\CreateEmptyCart") @doc(description:"Creates an empty shopping cart for a guest or logged in user") +} +``` + +Notice that a `MutationQueryInput` parameter is not specified here and `MutationQueryOutput` is defined as `String` type. + +The mutation to create a customer's account is more complex: + +```text +type Mutation { + createCustomer (input: CustomerInput!): CustomerOutput @resolver(class: "\\Magento\\CustomerGraphQl\\Model\\Resolver\\CreateCustomer") @doc(description:"Create customer account") +} +``` + +The `!` character indicates `CustomerInput` is a required input parameter. `CustomerInput` is defined as follows: + +```text +input CustomerInput { + prefix: String @doc(description: "An honorific, such as Dr., Mr., or Mrs.") + firstname: String @doc(description: "The customer's first name") + middlename: String @doc(description: "The customer's middle name") + lastname: String @doc(description: "The customer's family name") + suffix: String @doc(description: "A value such as Sr., Jr., or III") + email: String @doc(description: "The customer's email address. Required") + date_of_birth: String @doc(description: "The customer's date of birth.") + taxvat: String @doc(description: "The customer's Tax/VAT number (for corporate customers)") + gender: Int @doc(description: "The customer's gender(Male - 1, Female - 2)") + password: String @doc(description: "The customer's password") + is_subscribed: Boolean @doc(description: "Indicates whether the customer is subscribed to the company's newsletter") +} +``` + +{:.bs-callout-info} +In keeping with current security and privacy best practices, be sure you are aware of any potential legal and security risks associated with the storage of customers' full date of birth (month, day, year) along with other personal identifiers, such as full name, before collecting or processing such data. + +The `createCustomer` mutation returns `CustomerOutput` object + +```text +type CustomerOutput { + customer: Customer! +} +``` + +The `customer` parameter of the `CustomerOutput` object is a type of `Customer` object: + +```text +type Customer @doc(description: "Customer defines the customer name and address and other details") { + created_at: String @doc(description: "Timestamp indicating when the account was created") + prefix: String @doc(description: "An honorific, such as Dr., Mr., or Mrs.") + firstname: String @doc(description: "The customer's first name") + middlename: String @doc(description: "The customer's middle name") + lastname: String @doc(description: "The customer's family name") + suffix: String @doc(description: "A value such as Sr., Jr., or III") + email: String @doc(description: "The customer's email address. Required") + default_billing: String @doc(description: "The ID assigned to the billing address") + default_shipping: String @doc(description: "The ID assigned to the shipping address") + date_of_birth: String @doc(description: "The customer's date of birth") + taxvat: String @doc(description: "The customer's Tax/VAT number (for corporate customers)") + is_subscribed: Boolean @doc(description: "Indicates whether the customer is subscribed to the company's newsletter") @resolver(class: "\\Magento\\CustomerGraphQl\\Model\\Resolver\\IsSubscribed") + addresses: [CustomerAddress] @doc(description: "An array containing the customer's shipping and billing addresses") + gender: Int @doc(description: "The customer's gender (Male - 1, Female - 2)") +} + +{:.bs-callout-info} +In keeping with current security and privacy best practices, be sure you are aware of any potential legal and security risks associated with the storage of customers' full date of birth (month, day, year) along with other personal identifiers, such as full name, before collecting or processing such data. + +The following example shows the `createCustomer` mutation in action: + +```text +mutation { + createCustomer( + input: { + firstname: "John" + lastname: "Doe" + email: "j.doe@example.com" + password: "1w2E3R456" + is_subscribed: true + } + ) { + customer { + firstname + lastname + email + is_subscribed + } + } +} +``` + +A sample response: + +```json +{ + "data": { + "createCustomer": { + "customer": { + "firstname": "John", + "lastname": "Doe", + "email": "j.doe@example.com", + "is_subscribed": true + } + } + } +} +``` diff --git a/src/guides/v2.4/graphql/functional-testing.md b/src/guides/v2.4/graphql/functional-testing.md deleted file mode 120000 index 6451bedcd3e..00000000000 --- a/src/guides/v2.4/graphql/functional-testing.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/graphql/functional-testing.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/functional-testing.md b/src/guides/v2.4/graphql/functional-testing.md new file mode 100644 index 00000000000..896125409f8 --- /dev/null +++ b/src/guides/v2.4/graphql/functional-testing.md @@ -0,0 +1,501 @@ +--- +group: graphql +title: GraphQL functional testing +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/develop/functional-testing/ +status: migrated +--- + +Magento provides API functional tests that can verify extension points in GraphQL. These tests serve as an example for exposing new queries via GraphQL. + +## Creating a new GraphQL functional test + +All GraphQL functional tests should be located in the `dev/tests/api-functional/testsuite/Magento/GraphQl/` directory and inherit from the generic test case `Magento\TestFramework\TestCase\GraphQlAbstract`. It defines the `graphQlQuery()` and `graphQlMutation()` methods, which should be used to perform Web API calls from tests. + +The following test verifies that the schema returns the correct attribute type, given the `attribute_code` and corresponding `entity_type`. + +```php +namespace Magento\GraphQl\Catalog; + +use Magento\TestFramework\TestCase\GraphQlAbstract; + +class ProductAttributeTypeTest extends GraphQlAbstract +{ + public function testAttributeTypeResolver() + { + $query + = <<graphQlQuery($query); + $expectedAttributeCodes = [ + 'description', + 'status', + 'special_price', + 'disable_auto_group_change', + 'special_price' + ]; + $entityType = [ + 'catalog_product', + 'catalog_product', + 'catalog_product', + 'customer', + \Magento\Catalog\Api\Data\ProductInterface::class + ]; + $attributeTypes = ['String', 'Int', 'Float','Boolean', 'Float']; + $inputTypes = ['textarea', 'select', 'price', 'boolean', 'price']; + $this->assertAttributeType($attributeTypes, $expectedAttributeCodes, $entityType, $inputTypes, $response); + } +``` + +## Using the default GraphQlQueryTest + +The `\Magento\GraphQl\TestModule\GraphQlQueryTest.php` test case uses two test modules to determine whether the mechanisms for GraphQL extensibility work as expected. It illustrates best practices for extending an existing GraphQL endpoint. + +* `TestModuleGraphQlQuery` - This bare-bones module defines a `testItem` endpoint with the queryable attributes `item_id` and `name`. It's located at `/dev/tests/api-functional/_files/TestModuleGraphQlQuery`. +* `TestModuleGraphQlQueryExtension` - This module extends `TestModuleGraphQlQuery`, adding the `integer_list` extension attribute. It's located at `/dev/tests/api-functional/_files/TestModuleGraphQlQueryExtension`. + +## Creating fixtures + +Fixtures, which are part of the testing framework, prepare preconditions in the system for further testing. For example, when you test the ability to add a product to the shopping cart, the precondition is that a product must be available for testing. + +A fixture consists of two files: + +* The fixture file, which defines the test +* A rollback file, which reverts the system to the state before the test was run + + {:.bs-callout-info} +Each fixture should have a corresponding rollback file. + +Magento provides fixtures in the `dev/tests/integration/testsuite/Magento//_files` directory. Use these fixtures whenever possible. When you create your own fixture, also create a proper rollback. + +### Fixture files + +The following fixture creates a simple product with predefined attributes. + +```php +get(ProductFactory::class); +$product = $productFactory->create(); +$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_VIRTUAL) + ->setId(21) + ->setAttributeSetId(4) + ->setWebsiteIds([1]) + ->setName('Virtual Product') + ->setSku('virtual-product') + ->setPrice(10) + ->setTaxClassId(0) + ->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH) + ->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED) + ->setStockData( + [ + 'qty' => 100, + 'is_in_stock' => 1, + 'manage_stock' => 1, + ] + ); +/** @var ProductResource $productResource */ +$productResource = Bootstrap::getObjectManager()->create(ProductResource::class); +$productResource->save($product); +``` + +To use this fixture in a test, add it to the test's annotation in the following manner: + +```php + /** + * @magentoApiDataFixture Magento/Catalog/_files/product_virtual.php + */ + public function testAddVirtualProductToShoppingCart() + { + // Test body + } +``` + +You can also invoke multiple fixtures: + +```php + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_simple_product_saved.php + * @magentoApiDataFixture Magento/Customer/_files/customer.php + */ + public function testSetNewBillingAddressByRegisteredCustomer() + { + // Test body + } +``` + +The specified fixtures will now execute on every test run. + +### Rollback files + +Every fixture should have a rollback file. A rollback is a set of operations that remove changes introduced by the fixture from the system once the test is completed. + +The rollback filename should correspond to the original fixture filename postfixed by `_rollback` keyword. For example, if the fixture file name is `virtual_product.php`, name the rollback file `virtual_product_rollback.php`. + +The following fixture rollback removes the newly-created product from the database. + +```php +get(\Magento\Framework\Registry::class); + +$registry->unregister('isSecureArea'); +$registry->register('isSecureArea', true); + +$productRepository = Bootstrap::getObjectManager() + ->create(ProductRepositoryInterface::class); + +try { + $product = $productRepository->get('virtual-product', false, null, true); + $productRepository->delete($product); +} catch (NoSuchEntityException $exception) { + //Product already removed +} catch (StateException $exception) { +} + +$registry->unregister('isSecureArea'); +$registry->register('isSecureArea', false); +``` + +### Fixture configs + +Use the `@magentoConfigFixture` annotation to set a custom config value. It supports a `store` scope only. + +#### Syntax + +```php +/** + * @magentoConfigFixture _store + */ +``` + +where + +* `` - Store code. See the `store`.`code` database field value. +* `` - Config key. See `core_config_data`.`path` +* `` - Config value. See `core_config_data`.`value` + + {:.bs-callout-info} +`@magentoConfigFixture` does not require a roll-back. + +#### Example usage + +The following example sets a store-scoped value `1` for the config key `checkout/options/enable_agreements` for the `default` store in the `GetActiveAgreement()` test: + +```php + /** + * @magentoConfigFixture default_store checkout/options/enable_agreements 1 + */ + public function testGetActiveAgreement() + { + ... + } +``` + +`@magentoConfigFixture` performs the following action as a background process before test execution: + +```sql +INSERT INTO `core_config_data` (scope`, `scope_id`, `path`, `value`) +VALUES + ('stores', 1, 'checkout/options/enable_agreements', '1'); +``` + +The fixture automatically removes the `checkout/options/enable_agreements` config key from the database after the test has been completed. + +## Defining expected exceptions + +Your functional tests should include events that cause exceptions. Since your tests expect an exception to occur, set up your tests so that they elicit the proper responses. You can define expected exception messages either in: + +* The body of the test +* The test function annotation + +{:.bs-callout-tip} +We recommend that you declare expected exceptions in the test method body, as declaring expected exceptions with annotations has been deprecated in PHPUnit 8. Existing tests that use annotations will have to be updated when Magento requires that version of PHPUnit or higher. + +### Exception messages in the body of a test + +The following examples show two ways you can use the `expectExceptionMessage` function to define an expected exception message. + +```php +public function testMyExceptionTest() +{ + ... + + self::expectExceptionMessage("Expected exception message goes here..."); + + ... +} + +``` + +or + +```php +public function testMyExceptionTest() +{ + ... + + $this->expectExceptionMessage("Expected exception message goes here..."); + + ... +} +``` + +{:.bs-callout-info} +Define the exception message before invoking logic that generates the exception. + +As an example, consider the case where Customer A tries to retrieve information about Customer B's cart. In this situation, Customer A gets this error: + +```terminal +The current user cannot perform operations on cart "XXXXX" +``` + +`XXXXX` is the unique ID of Customer B's cart. + +The following sample shows how to cover this scenario using an `expectExceptionMessage` function: + +```php + /** + * @magentoApiDataFixture Magento/Checkout/_files/quote_with_items_saved.php + */ + public function testGetCartFromAnotherCustomer() + { + $reservedOrderId = 'test_order_item_with_items'; + $this->quoteResource->load( + $this->quote, + $reservedOrderId, + 'reserved_order_id' + ); + $maskedQuoteId = $this->quoteIdToMaskedId->execute((int)$this->quote->getId()); + $query = $this->prepareGetCartQuery($maskedQuoteId); + self::expectExceptionMessage("The current user cannot perform operations on cart \"$maskedQuoteId\""); + $this->graphQlQuery($query); + } +``` + +### Exception messages in the annotation of a test function + +You can also use a predefined directive such as `@expectedExceptionMessage` as an alternative way to call the `expectExceptionMessage` method: + +```php + /** + * @expectedException \Exception + * @expectedExceptionMessage Expected exception message goes here... + */ +``` + +In the following query, a customer provides an incorrect cart ID while trying to retrieve information about his own cart. + +**Query:** + +```text +{ + cart(cart_id: "YYYYY") { + items { + __typename + id + qty + } + } +} +``` + +**Result:** + +```json +{ + "errors": [ + { + "message": "Could not find a cart with ID \"YYYYY\"", + "category": "graphql-no-such-entity", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "cart" + ] + } + ], + "data": { + "cart": null + } +} +``` + +The `@expectExceptionMessage` annotation provides the text for the exception in this test. + +```php + /** + * @expectedException \Exception + * @expectedExceptionMessage Could not find a cart with ID "non_existent_masked_id" + */ + public function testGetNonExistentCart() + { + $maskedQuoteId = 'non_existent_masked_id'; + $query = $this->prepareGetCartQuery($maskedQuoteId); + + $this->graphQlQuery($query); + } +``` + +Use the following functions to cover expected exceptions: + +* `expectException` +* `expectExceptionCode` +* `expectExceptionMessage` +* `expectExceptionMessageRegExp` +* `expectExceptionObject` + +## Run functional tests + +### Configure your instance + +1. Change directories to `dev/tests/api-functional/` and copy the `phpunit_graphql.xml.dist` file to `phpunit_graphql.xml`. + + ```bash + cp phpunit_graphql.xml.dist phpunit_graphql.xml + ``` + +1. Edit `phpunit_graphql.xml` to set values for the TESTS_BASE_URL, TESTS_WEBSERVICE_USER, TESTS_WEBSERVICE_APIKEY options: + + ```xml + ... + + + + + + + ... + ``` + +### Run all tests in a API functional test suite + +**Syntax:** + +```bash +vendor/bin/phpunit -c dev/tests/api-functional/phpunit_graphql.xml dev/tests/api-functional/testsuite///.php +``` + +**Example:** + +To run all tests from [dev/tests/api-functional/testsuite/Magento/GraphQl/Customer/GenerateCustomerTokenTest.php]({{ site.mage2bloburl }}/2.3.1/dev/tests/api-functional/testsuite/Magento/GraphQl/Customer/GenerateCustomerTokenTest.php), run the following command: + +```bash +vendor/bin/phpunit -c dev/tests/api-functional/phpunit_graphql.xml dev/tests/api-functional/testsuite/Magento/GraphQl/Customer/GenerateCustomerTokenTest.php +``` + +### Run a single test in a API functional test suite + +**Syntax:** + +```bash +vendor/bin/phpunit -c dev/tests/api-functional/phpunit_graphql.xml --filter dev/tests/api-functional/testsuite///.php +``` + +**Example:** + +To run `testGenerateCustomerValidToken` test from [dev/tests/api-functional/testsuite/Magento/GraphQl/Customer/GenerateCustomerTokenTest.php]({{ site.mage2bloburl }}/2.3.1/dev/tests/api-functional/testsuite/Magento/GraphQl/Customer/GenerateCustomerTokenTest.php), run the following command: + +```bash +vendor/bin/phpunit -c dev/tests/api-functional/phpunit_graphql.xml --filter testGenerateCustomerValidToken dev/tests/api-functional/testsuite/Magento/GraphQl/Customer/GenerateCustomerTokenTest.php +``` + +### Run a selected group of tests in an API functional test suite + +Use the `@group` directive in the test annotation to add the ability to run a group tests. + +**Syntax:** + +```bash +vendor/bin/phpunit -c dev/tests/api-functional/phpunit_graphql.xml --group dev/tests/api-functional/testsuite///.php +``` + +**Example:** + +The `testGetCartTotalsWithNoAddressSet` test is marked with `@group recent`: + +```php + Settings > **Sales** > **Sales** > **Reorder** > **Allow Reorder** field must be set to **Yes** to enable reorders. You must provide a customer authorization token with the call. diff --git a/src/guides/v2.4/graphql/mutations/request-negotiable-quote.md b/src/guides/v2.4/graphql/mutations/request-negotiable-quote.md index 6552f445b1e..690ea0ed942 100644 --- a/src/guides/v2.4/graphql/mutations/request-negotiable-quote.md +++ b/src/guides/v2.4/graphql/mutations/request-negotiable-quote.md @@ -2,6 +2,8 @@ group: graphql title: requestNegotiableQuote mutation b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/negotiable-quote/mutations/request/ +status: migrated --- The `requestNegotiableQuote` mutation initiates a negotiable quote on behalf of a company user. The company user must add all products to the cart before requesting a negotiable quote. Once the request is submitted, company users cannot add new products to the quote. diff --git a/src/guides/v2.4/graphql/mutations/request-password-reset-email.md b/src/guides/v2.4/graphql/mutations/request-password-reset-email.md index 67af3eb88d4..02f47d968de 100644 --- a/src/guides/v2.4/graphql/mutations/request-password-reset-email.md +++ b/src/guides/v2.4/graphql/mutations/request-password-reset-email.md @@ -3,6 +3,8 @@ group: graphql title: requestPasswordResetEmail mutation contributor_name: Atwix contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/mutations/request-password-reset-email/ +status: migrated --- The `requestPasswordResetEmail` mutation triggers the password reset email by the provided email address. Use it to initiate the process to reset the registered customer's password before calling the [resetPassword]({{page.baseurl}}/graphql/mutations/reset-password.html) mutation. @@ -14,7 +16,7 @@ When the customer clicks the `Set a New Password` button, Magento sends an email The URL has the following format: ```text -https:///customer/account/createPassword/?token=gh80pkjGdsPyiXc0sUUXswX1uGN7crUr +https:///customer/account/createPassword/?token=gh80pkjGdsPyiXc0sUUXswX1uGN7crUr #gitleaks:allow ``` Use the value of the token in the `resetPassword` mutation. diff --git a/src/guides/v2.4/graphql/mutations/request-return.md b/src/guides/v2.4/graphql/mutations/request-return.md index 8a45fa251b5..46d9700a7d8 100644 --- a/src/guides/v2.4/graphql/mutations/request-return.md +++ b/src/guides/v2.4/graphql/mutations/request-return.md @@ -2,6 +2,8 @@ group: graphql title: requestReturn mutation ee_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/orders/mutations/request-return/ +status: migrated --- The `requestReturn` mutation initiates a buyer's request to return an item for replacement or refund. The merchant subsequently decides whether to accept or reject the request. diff --git a/src/guides/v2.4/graphql/mutations/reset-password.md b/src/guides/v2.4/graphql/mutations/reset-password.md index b3d6c693407..3f2116c0ca7 100644 --- a/src/guides/v2.4/graphql/mutations/reset-password.md +++ b/src/guides/v2.4/graphql/mutations/reset-password.md @@ -3,6 +3,8 @@ group: graphql title: resetPassword mutation contributor_name: Atwix contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/mutations/reset-password/ +status: migrated --- The `resetPassword` mutation resets customer password using a reset password token and the customer's email address. Use it to set a new password for the registered customer after calling the [requestPasswordResetEmail]({{page.baseurl}}/graphql/mutations/request-password-reset-email.html) mutation. @@ -21,7 +23,7 @@ The following call sets a new customer password. mutation { resetPassword( email: "roni_cost@example.com", - resetPasswordToken: "gh80pkjGdsPyiXc0sUUXswX1uGN7crUr", + resetPasswordToken: "gh80pkjGdsPyiXc0sUUXswX1uGN7crUr", #gitleaks:allow newPassword: "new_password" ) } diff --git a/src/guides/v2.4/graphql/mutations/revoke-customer-token.md b/src/guides/v2.4/graphql/mutations/revoke-customer-token.md deleted file mode 120000 index b033a1df12f..00000000000 --- a/src/guides/v2.4/graphql/mutations/revoke-customer-token.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/mutations/revoke-customer-token.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/mutations/revoke-customer-token.md b/src/guides/v2.4/graphql/mutations/revoke-customer-token.md new file mode 100644 index 00000000000..13a47b605d1 --- /dev/null +++ b/src/guides/v2.4/graphql/mutations/revoke-customer-token.md @@ -0,0 +1,63 @@ +--- +group: graphql +title: revokeCustomerToken mutation +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/mutations/revoke-token/ +status: migrated +--- + +Use the `revokeCustomerToken` mutation to revokes the customer's token. + +To return or modify information about a customer, we recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication](https://developer.adobe.com/commerce/webapi/get-started/authentication/gs-authentication-session). + +## Syntax + +```graphql +mutation { + revokeCustomerToken { + RevokeCustomerTokenOutput + } +} +``` + +## Example usage + +The following call revokes the customer's token. + +**Request:** + +```graphql +mutation { + revokeCustomerToken { + result + } +} +``` + +**Response:** + +```json +{ + "data": { + "revokeCustomerToken": { + "result": true + } + } +} +``` + +## Output attributes + +Attribute | Data Type | Description +--- | --- | --- +`result` | Boolean! | Returns `true` if the token was successfully revoked + +## Errors + +Error | Description +--- | --- +`The current customer isn't authorized.` | The current customer is not currently logged in, or the customer's token does not exist in the `oauth_token` table. + +## Related topics + +* [customer query]({{page.baseurl}}/graphql/queries/customer.html) +* [generateCustomerToken mutation]({{page.baseurl}}/graphql/mutations/generate-customer-token.html) diff --git a/src/guides/v2.4/graphql/mutations/send-email-to-friend.md b/src/guides/v2.4/graphql/mutations/send-email-to-friend.md deleted file mode 120000 index 9994c9aafac..00000000000 --- a/src/guides/v2.4/graphql/mutations/send-email-to-friend.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/mutations/send-email-to-friend.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/mutations/send-email-to-friend.md b/src/guides/v2.4/graphql/mutations/send-email-to-friend.md new file mode 100644 index 00000000000..f2796c80729 --- /dev/null +++ b/src/guides/v2.4/graphql/mutations/send-email-to-friend.md @@ -0,0 +1,155 @@ +--- +group: graphql +title: sendEmailToFriend mutation +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/mutations/send-email-to-friend/ +status: migrated +--- + +Use the `sendEmailToFriend` mutation to allow Magento to send a message on behalf of a customer to the specified email addresses. + +{:.bs-callout-info} +The **Stores** > **Configuration** > **Catalog** > **Email to a friend** > **Enabled** field must be set to **Yes** to implement this mutation. + +## Syntax + +```graphql +mutation { + sendEmailToFriend( + input: SendEmailToFriendInput + ) { + SendEmailToFriendOutput + } +} +``` + +## Example usage + +The following example sends a message to two friends. + +**Request:** + +```graphql +mutation { + sendEmailToFriend( + input: { + product_id: 10 + sender: { + name: "Veronica Cost" + email: "roni_cost@example.com" + message: "Sarah needs this! http://luma.example.com/savvy-shoulder-tote.html" + } + recipients: [ + { name: "Amie Franklin", email: "afranklin@example.com" } + { name: "Tomoko", email: "tomoko@example.com" } + ] + } + ) { + sender { + name + email + } + recipients { + name + email + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "sendEmailToFriend": { + "sender": { + "name": "Veronica Cost", + "email": "roni_cost@example.com", + }, + "recipients": [ + { + "name": "Amie Franklin", + "email": "afranklin@example.com" + }, + { + "name": "Tomoko", + "email": "tomoko@example.com" + } + ] + } + } +} +``` + +## Input attributes + +The `SendEmailToFriendInput` object contains the following attributes: + +Attribute | Data Type | Description +--- | --- | --- +`product_id` | Int! | The ID of the product that the customer is referencing +`recipients` | [SendEmailToFriendRecipientInput]! | An array containing information about each recipient +`sender` | SendEmailToFriendSenderInput! | Information about the customer and the content of the message + +### SendEmailToFriendRecipientInput object {#SendEmailToFriendRecipientInput} + +The `SendEmailToFriendRecipientInput` object must contain the following attributes: + +Attribute | Data Type | Description +--- | --- | --- +`email` | String! | The email address of the recipient +`name` | String! | The name of the recipient + +### SendEmailToFriendSenderInput object {#SendEmailToFriendSenderInput} + +The `SendEmailToFriendSenderInput` object must contain the following attributes: + +Attribute | Data Type | Description +--- | --- | --- +`email` | String! | The email address of the sender +`message` | String! | The text of the message to be sent +`name` | String! | The name of the sender + +## Output attributes + +The `SendEmailToFriendOutput` object contains the following attributes: + +Attribute | Data Type | Description +--- | --- | --- +`recipients` | [SendEmailToFriendRecipient] | An array containing information about each recipient +`sender` | SendEmailToFriendSender | Information about the customer and the content of the message + +### SendEmailToFriendRecipient object + +The `SendEmailToFriendRecipientInput` object can contain the following attributes: + +Attribute | Data Type | Description +--- | --- | --- +`email` | String | The email address of the recipient +`name` | String | The name of the recipient + +### SendEmailToFriendSender object + +The `SendEmailToFriendSender` object can contain the following attributes: + +Attribute | Data Type | Description +--- | --- | --- +`email` | String | The email address of the sender +`message` | String | The text of the message +`name` | String | The name of the sender + +## Errors + +Some errors occur because the **Email a friend** feature is not properly configured. Go to **Stores** > **Configuration** > **Catalog** > **Email to a friend** in the Admin to adjust the settings. + +Error | Description +--- | --- +`"Email to a Friend" is not enabled.` | "Email to a Friend" is disabled. To activate it, use the Admin to set the **Enabled** field to **Yes**. +`Please provide Name of sender.` | The value specified in the `input`.`sender`.`name` argument is empty. +`Please provide Email of sender.` | The value specified in the `input`.`sender`.`email` argument is empty. +`Please provide Message.` | The value specified in the `input`.`sender`.`message` argument is empty. +`Please provide Name for all of recipients.` | The value specified in the `input`.`recipients`[].`name` argument is empty. +`Please provide Email for all of recipients.` | The value specified in the `input`.`recipients`[].`email` argument is empty. +`The current customer isn't authorized.` | "Email to a Friend" is available for registered users only. To make it available for guests, use the Admin to set the **Allow for Guests** option to **Yes**. +`The product that was requested doesn't exist. Verify the product and try again.` | The product specified in the `product_id` argument is not visible in the current website. +`You can't send messages more than XXX times an hour.` | The user cannot send more messages in an hour than specified in the **Max Products Sent in 1 Hour** option in the Admin. diff --git a/src/guides/v2.4/graphql/mutations/send-negotiable-quote-for-review.md b/src/guides/v2.4/graphql/mutations/send-negotiable-quote-for-review.md index eaac73b8934..1a5f336c2e9 100644 --- a/src/guides/v2.4/graphql/mutations/send-negotiable-quote-for-review.md +++ b/src/guides/v2.4/graphql/mutations/send-negotiable-quote-for-review.md @@ -2,6 +2,8 @@ group: graphql title: sendNegotiableQuoteForReview mutation b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/negotiable-quote/mutations/send-for-review/ +status: migrated --- The `sendNegotiableQuoteForReview` mutation sends the negotiable quote to the seller for review. If the mutation is successful, the buyer cannot modify the quote until the merchant accepts the request. diff --git a/src/guides/v2.4/graphql/mutations/set-billing-address.md b/src/guides/v2.4/graphql/mutations/set-billing-address.md index 03ef0bb87ce..9b992c1a535 100644 --- a/src/guides/v2.4/graphql/mutations/set-billing-address.md +++ b/src/guides/v2.4/graphql/mutations/set-billing-address.md @@ -1,6 +1,8 @@ --- group: graphql title: setBillingAddressOnCart mutation +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/cart/mutations/set-billing-address/ +status: migrated --- The `setBillingAddressOnCart` mutation sets the billing address for a specific cart. If you set the `same_as_shipping` attribute to `true`, Magento assigns the billing address to be the same as the shipping address. diff --git a/src/guides/v2.4/graphql/mutations/set-gift-options.md b/src/guides/v2.4/graphql/mutations/set-gift-options.md index 75028af855c..26cbc93fa0b 100644 --- a/src/guides/v2.4/graphql/mutations/set-gift-options.md +++ b/src/guides/v2.4/graphql/mutations/set-gift-options.md @@ -2,6 +2,8 @@ group: graphql title: setGiftOptionsOnCart mutation ee_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/cart/mutations/set-gift-options/ +status: migrated --- The `setGiftOptionsOnCart` mutation allows the buyer to set the following gift options on the cart level: diff --git a/src/guides/v2.4/graphql/mutations/set-guest-email.md b/src/guides/v2.4/graphql/mutations/set-guest-email.md index d2b17dac1e8..d4855b3d74b 100644 --- a/src/guides/v2.4/graphql/mutations/set-guest-email.md +++ b/src/guides/v2.4/graphql/mutations/set-guest-email.md @@ -3,6 +3,8 @@ group: graphql title: setGuestEmailOnCart mutation redirect from: - /guides/v2.3/graphql/reference/quote-set-guest-email.html +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/cart/mutations/set-guest-email/ +status: migrated --- For guest customers, you must assign an email to the cart before you place the order. @@ -52,7 +54,7 @@ The `SetGuestEmailOnCartInput` object must contain the following attributes. Attribute | Data Type | Description --- | --- | --- -`cart_id` | String! | The unique ID that identifies the customer’s cart +`cart_id` | String! | The unique ID that identifies the customer's cart `email` | String! | The guest user's email ## Output attributes diff --git a/src/guides/v2.4/graphql/mutations/set-negotiable-quote-billing-address.md b/src/guides/v2.4/graphql/mutations/set-negotiable-quote-billing-address.md index 845b4f3a6b1..569a4a8c9d3 100644 --- a/src/guides/v2.4/graphql/mutations/set-negotiable-quote-billing-address.md +++ b/src/guides/v2.4/graphql/mutations/set-negotiable-quote-billing-address.md @@ -2,6 +2,8 @@ group: graphql title: setNegotiableQuoteBillingAddress mutation b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/negotiable-quote/mutations/set-billing-address/ +status: migrated --- The `setNegotiableQuoteBillingAddress` mutation assigns the billing address for the specified negotiable quote. You can assign an address from the company user's address book, or define a new one. The negotiable quote must be in the UPDATED state to successfully set the billing address. diff --git a/src/guides/v2.4/graphql/mutations/set-negotiable-quote-payment-method.md b/src/guides/v2.4/graphql/mutations/set-negotiable-quote-payment-method.md index 972a887337e..cf0a59ba07f 100644 --- a/src/guides/v2.4/graphql/mutations/set-negotiable-quote-payment-method.md +++ b/src/guides/v2.4/graphql/mutations/set-negotiable-quote-payment-method.md @@ -2,6 +2,8 @@ group: graphql title: setNegotiableQuotePaymentMethod mutation b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/negotiable-quote/mutations/set-payment-method/ +status: migrated --- The `setNegotiableQuotePaymentMethod` mutation defines which payment method to apply to the cart. The negotiable quote must be in the UPDATED state to successfully apply the payment method. diff --git a/src/guides/v2.4/graphql/mutations/set-negotiable-quote-shipping-address.md b/src/guides/v2.4/graphql/mutations/set-negotiable-quote-shipping-address.md index 90e9abac931..60619190376 100644 --- a/src/guides/v2.4/graphql/mutations/set-negotiable-quote-shipping-address.md +++ b/src/guides/v2.4/graphql/mutations/set-negotiable-quote-shipping-address.md @@ -2,6 +2,8 @@ group: graphql title: setNegotiableQuoteShippingAddress mutation b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/negotiable-quote/mutations/set-shipping-address/ +status: migrated --- The `setNegotiableQuoteShippingAddress` mutation assigns the shipping address for the specified negotiable quote. You can assign an address from the company user's address book, or define a new one. The negotiable quote must be in the UPDATED state to successfully set a shipping address. diff --git a/src/guides/v2.4/graphql/mutations/set-negotiable-quote-shipping-methods.md b/src/guides/v2.4/graphql/mutations/set-negotiable-quote-shipping-methods.md index 1cd7fe257c1..903bc025e4e 100644 --- a/src/guides/v2.4/graphql/mutations/set-negotiable-quote-shipping-methods.md +++ b/src/guides/v2.4/graphql/mutations/set-negotiable-quote-shipping-methods.md @@ -2,6 +2,8 @@ group: graphql title: setNegotiableQuoteShippingMethods mutation b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/negotiable-quote/mutations/set-shipping-methods/ +status: migrated --- The `setNegotiableQuoteShippingMethods` mutation sets one or more delivery methods on a negotiable quote. By default, the following delivery methods are supported: diff --git a/src/guides/v2.4/graphql/mutations/set-payment-method.md b/src/guides/v2.4/graphql/mutations/set-payment-method.md index b9864052420..b8f8db8cc38 100644 --- a/src/guides/v2.4/graphql/mutations/set-payment-method.md +++ b/src/guides/v2.4/graphql/mutations/set-payment-method.md @@ -1,6 +1,8 @@ --- group: graphql title: setPaymentMethodOnCart mutation +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/cart/mutations/set-payment-method/ +status: migrated --- The `setPaymentMethodOnCart` mutation defines which payment method to apply to the cart. Magento GraphQL supports the following offline payment methods: @@ -82,7 +84,7 @@ The `SetPaymentMethodOnCartInput` object must contain the following attributes: Attribute | Data Type | Description --- | --- | --- -`cart_id` | String! | The unique ID that identifies the customer’s cart +`cart_id` | String! | The unique ID that identifies the customer's cart `payment_method` | [PaymentMethodInput!](#PaymentMethodInput) | An object containing the payment method code ### PaymentMethodInput attributes {#PaymentMethodInput} diff --git a/src/guides/v2.4/graphql/mutations/set-payment-place-order.md b/src/guides/v2.4/graphql/mutations/set-payment-place-order.md index 44092928d2b..98ba62de374 100644 --- a/src/guides/v2.4/graphql/mutations/set-payment-place-order.md +++ b/src/guides/v2.4/graphql/mutations/set-payment-place-order.md @@ -3,6 +3,8 @@ group: graphql title: setPaymentMethodAndPlaceOrder mutation contributor_name: Something Digital contributor_link: https://www.somethingdigital.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/cart/mutations/set-payment-place-order/ +status: migrated --- {:.bs-callout-warning} @@ -77,7 +79,7 @@ The `placeOrderInput` object must contain the following attribute: Attribute | Data Type | Description --- | --- | --- -`cart_id` | String! | The unique ID that identifies the customer’s cart +`cart_id` | String! | The unique ID that identifies the customer's cart `payment_method` | [PaymentMethodInput!](#PaymentMethodInput) | The payment method data for the cart ### PaymentMethodInput attributes {#PaymentMethodInput} diff --git a/src/guides/v2.4/graphql/mutations/set-shipping-address.md b/src/guides/v2.4/graphql/mutations/set-shipping-address.md index 32798fd5525..0f45bbb07e0 100644 --- a/src/guides/v2.4/graphql/mutations/set-shipping-address.md +++ b/src/guides/v2.4/graphql/mutations/set-shipping-address.md @@ -1,6 +1,8 @@ --- group: graphql title: setShippingAddressesOnCart mutation +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/cart/mutations/set-shipping-address/ +status: migrated --- The `setShippingAddressesOnCart` mutation sets one or more shipping addresses on a specific cart. The shipping address does not need to be specified in the following circumstances: diff --git a/src/guides/v2.4/graphql/mutations/set-shipping-method.md b/src/guides/v2.4/graphql/mutations/set-shipping-method.md index 6e29429c8aa..82c2fdbd3aa 100644 --- a/src/guides/v2.4/graphql/mutations/set-shipping-method.md +++ b/src/guides/v2.4/graphql/mutations/set-shipping-method.md @@ -1,6 +1,8 @@ --- group: graphql title: setShippingMethodsOnCart mutation +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/cart/mutations/set-shipping-method/ +status: migrated --- The `setShippingMethodsOnCart` mutation sets one or more delivery methods on a cart. By default, Magento GraphQL supports the following delivery methods: diff --git a/src/guides/v2.4/graphql/mutations/share-gift-registry.md b/src/guides/v2.4/graphql/mutations/share-gift-registry.md index d6f45d92aa2..0d261cd6899 100644 --- a/src/guides/v2.4/graphql/mutations/share-gift-registry.md +++ b/src/guides/v2.4/graphql/mutations/share-gift-registry.md @@ -3,6 +3,8 @@ group: graphql title: shareGiftRegistry mutation ee_only: true contributor_name: EY +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/gift-registry/mutations/share/ +status: migrated --- The `shareGiftRegistry` mutation sends an invitation to a list email addresses to shop from the customer's gift registry. diff --git a/src/guides/v2.4/graphql/mutations/subscribe-email-to-newsletter.md b/src/guides/v2.4/graphql/mutations/subscribe-email-to-newsletter.md index d92fc5d8e24..2862255c1d1 100644 --- a/src/guides/v2.4/graphql/mutations/subscribe-email-to-newsletter.md +++ b/src/guides/v2.4/graphql/mutations/subscribe-email-to-newsletter.md @@ -3,6 +3,8 @@ group: graphql title: subscribeEmailToNewsletter mutation contributor_name: Atwix contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/mutations/subscribe-email-to-newsletter/ +status: migrated --- The `subscribeEmailToNewsletter` mutation allows guests and registered customers to sign up to receive newsletters. diff --git a/src/guides/v2.4/graphql/mutations/update-cart-items.md b/src/guides/v2.4/graphql/mutations/update-cart-items.md index 5226d045bea..896d54a73ed 100644 --- a/src/guides/v2.4/graphql/mutations/update-cart-items.md +++ b/src/guides/v2.4/graphql/mutations/update-cart-items.md @@ -1,6 +1,8 @@ --- group: graphql title: updateCartItems mutation +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/cart/mutations/update-items/ +status: migrated --- The `updateCartItems` mutation allows you to modify items in the specified cart. You can also replace the current quantity of one or more cart items with the specified quantities. The mutation does not perform calculations to determine the quantity of cart items. diff --git a/src/guides/v2.4/graphql/mutations/update-company-role.md b/src/guides/v2.4/graphql/mutations/update-company-role.md index 7a53a57a5fe..0ff8ac13a74 100644 --- a/src/guides/v2.4/graphql/mutations/update-company-role.md +++ b/src/guides/v2.4/graphql/mutations/update-company-role.md @@ -4,6 +4,8 @@ title: updateCompanyRole mutation contributor_name: Atwix contributor_link: https://www.atwix.com/ b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/company/mutations/update-role/ +status: migrated --- Use the `updateCompanyRole` mutation to update the company role and permissions. diff --git a/src/guides/v2.4/graphql/mutations/update-company-structure.md b/src/guides/v2.4/graphql/mutations/update-company-structure.md index 2224b530eeb..4fc787d1bbb 100644 --- a/src/guides/v2.4/graphql/mutations/update-company-structure.md +++ b/src/guides/v2.4/graphql/mutations/update-company-structure.md @@ -4,6 +4,8 @@ title: updateCompanyStructure mutation contributor_name: Atwix contributor_link: https://www.atwix.com/ b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/company/mutations/update-structure/ +status: migrated --- Use the `updateCompanyStructure` mutation to change the parent node of a company team. diff --git a/src/guides/v2.4/graphql/mutations/update-company-team.md b/src/guides/v2.4/graphql/mutations/update-company-team.md index e8a6edc4052..74106a9ef16 100644 --- a/src/guides/v2.4/graphql/mutations/update-company-team.md +++ b/src/guides/v2.4/graphql/mutations/update-company-team.md @@ -4,6 +4,8 @@ title: updateCompanyTeam mutation contributor_name: Atwix contributor_link: https://www.atwix.com/ b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/company/mutations/update-team/ +status: migrated --- Use the `updateCompanyTeam` mutation to update the company team data. diff --git a/src/guides/v2.4/graphql/mutations/update-company-user.md b/src/guides/v2.4/graphql/mutations/update-company-user.md index 6b13ee43053..eda27705e28 100644 --- a/src/guides/v2.4/graphql/mutations/update-company-user.md +++ b/src/guides/v2.4/graphql/mutations/update-company-user.md @@ -4,6 +4,8 @@ title: updateCompanyUser mutation contributor_name: Atwix contributor_link: https://www.atwix.com/ b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/company/mutations/update-user/ +status: migrated --- Use the `updateCompanyUser` mutation to update an existing company user. diff --git a/src/guides/v2.4/graphql/mutations/update-company.md b/src/guides/v2.4/graphql/mutations/update-company.md index 16a44a47228..ea583f430ea 100644 --- a/src/guides/v2.4/graphql/mutations/update-company.md +++ b/src/guides/v2.4/graphql/mutations/update-company.md @@ -2,6 +2,8 @@ group: graphql title: updateCompany mutation b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/company/mutations/update/ +status: migrated --- The `updateCompany` mutation allows you to update a company's address as well as top-level string attributes such as the name, legal name, and email. You cannot update the administrator or other objects such as teams, roles, or resources with this mutation. diff --git a/src/guides/v2.4/graphql/mutations/update-customer-address.md b/src/guides/v2.4/graphql/mutations/update-customer-address.md index 01b4bc699c7..133df6b7131 100644 --- a/src/guides/v2.4/graphql/mutations/update-customer-address.md +++ b/src/guides/v2.4/graphql/mutations/update-customer-address.md @@ -1,11 +1,13 @@ --- group: graphql title: updateCustomerAddress mutation +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/mutations/update-address/ +status: migrated --- Use the `updateCustomerAddress` mutation to update the customer's address. -To return or modify information about a customer, we recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication-session.html). +To return or modify information about a customer, we recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication](https://developer.adobe.com/commerce/webapi/get-started/authentication/gs-authentication-session). ## Syntax @@ -51,7 +53,7 @@ The `updateCustomerAddress` object contains the following inputs: Attribute | Data Type | Description --- | --- | --- `id` | Int! | The ID assigned to the address object -`CustomerAddressInput` | [CustomerAddress](#customerAddressInput)| An array containing the customer’s shipping and billing addresses +`CustomerAddressInput` | [CustomerAddress](#customerAddressInput)| An array containing the customer's shipping and billing addresses {% include graphql/customer-address-input-24.md %} diff --git a/src/guides/v2.4/graphql/mutations/update-customer-email.md b/src/guides/v2.4/graphql/mutations/update-customer-email.md index 09de6eb8971..eb7a6f91973 100644 --- a/src/guides/v2.4/graphql/mutations/update-customer-email.md +++ b/src/guides/v2.4/graphql/mutations/update-customer-email.md @@ -1,11 +1,13 @@ --- group: graphql title: updateCustomerEmail mutation +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/mutations/update-email/ +status: migrated --- Use the `updateCustomerEmail` mutation to change the email address for the logged-in customer. -To return or modify information about a customer, we recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication-session.html). +To return or modify information about a customer, we recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication](https://developer.adobe.com/commerce/webapi/get-started/authentication/gs-authentication-session). ## Syntax diff --git a/src/guides/v2.4/graphql/mutations/update-customer-v2.md b/src/guides/v2.4/graphql/mutations/update-customer-v2.md index 4a2f2c64b40..6f1d959c13a 100644 --- a/src/guides/v2.4/graphql/mutations/update-customer-v2.md +++ b/src/guides/v2.4/graphql/mutations/update-customer-v2.md @@ -1,13 +1,15 @@ --- group: graphql title: updateCustomerV2 mutation +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/mutations/update-v2/ +status: migrated --- The `updateCustomerV2` mutation updates the personal information in an existing customer account. Use the [`updateCustomerEmail` mutation]({{page.baseurl}}/graphql/mutations/update-customer-email.html) to update the customer's email address. The `updateCustomerV2` mutation supersedes the `updateCustomer` mutation as the means to update a customer account. The input objects differ between these two mutations. The `updateCustomer` mutation required the `CustomerInput` object, as did the `createCustomer` mutation. Updating a customer does not require any specific attribute, while several attributes are required when you create a customer. You could not determine this by looking at the schema for those mutations. The `updateCustomerV2` mutation requires the `CustomerUpdateInput` object, which it does not share with the [`createCustomerV2` mutation]({{page.baseurl}}/graphql/mutations/create-customer-v2.html). -To return or modify information about a customer, we recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication-session.html). +To return or modify information about a customer, we recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication](https://developer.adobe.com/commerce/webapi/get-started/authentication/gs-authentication-session). ## Syntax @@ -57,17 +59,17 @@ The following table lists the attributes you can use as input for the `updateCus Attribute | Data Type | Description --- | --- | --- `allow_remote_shopping_assistance` | Boolean | Indicates whether the customer has enabled remote shopping assistance -`date_of_birth` | String | The customer’s date of birth. In keeping with current security and privacy best practices, be sure you are aware of any potential legal and security risks associated with the storage of customers’ full date of birth (month, day, year) along with other personal identifiers, such as full name, before collecting or processing such data. -`dob` | String | Deprecated. Use `date_of_birth` instead. The customer’s date of birth -`firstname` | String | The customer’s first name +`date_of_birth` | String | The customer's date of birth. In keeping with current security and privacy best practices, be sure you are aware of any potential legal and security risks associated with the storage of customers' full date of birth (month, day, year) along with other personal identifiers, such as full name, before collecting or processing such data. +`dob` | String | Deprecated. Use `date_of_birth` instead. The customer's date of birth +`firstname` | String | The customer's first name `gender` | Int | The customer's gender (Male - 1, Female - 2) `is_subscribed` | Boolean | Indicates whether the customer subscribes to the store's newsletter -`lastname` | String | The customer’s last name -`middlename` | String | The customer’s middle name +`lastname` | String | The customer's last name +`middlename` | String | The customer's middle name `password` | String | The customer's password `prefix` | String | An honorific, such as Dr., Mr., or Mrs. `suffix` | String | A value such as Sr., Jr., or III -`taxvat` | String | The customer’s Tax/VAT number (for corporate customers) +`taxvat` | String | The customer's Tax/VAT number (for corporate customers) ## Output attributes diff --git a/src/guides/v2.4/graphql/mutations/update-customer.md b/src/guides/v2.4/graphql/mutations/update-customer.md index b088d69cbf7..ad31efeb9e7 100644 --- a/src/guides/v2.4/graphql/mutations/update-customer.md +++ b/src/guides/v2.4/graphql/mutations/update-customer.md @@ -1,6 +1,8 @@ --- group: graphql title: updateCustomer mutation +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/mutations/update/ +status: migrated --- {:.bs-callout-warning} @@ -8,7 +10,7 @@ We recommend using the [updateCustomerV2 mutation]({{page.baseurl}}/graphql/muta The `updateCustomer` mutation updates the customer's personal information. -To return or modify information about a customer, we recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication-session.html). +To return or modify information about a customer, we recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication](https://developer.adobe.com/commerce/webapi/get-started/authentication/gs-authentication-session). ## Syntax diff --git a/src/guides/v2.4/graphql/mutations/update-gift-registry-items.md b/src/guides/v2.4/graphql/mutations/update-gift-registry-items.md index 29ebe2757a0..2f7443fdb97 100644 --- a/src/guides/v2.4/graphql/mutations/update-gift-registry-items.md +++ b/src/guides/v2.4/graphql/mutations/update-gift-registry-items.md @@ -2,6 +2,8 @@ group: graphql title: updateGiftRegistryItems mutation ee_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/gift-registry/mutations/update-items/ +status: migrated --- The `updateGiftRegistryItems` mutation modifies the requested quantity of an item in the specified gift registry. It can also change the description of the item. diff --git a/src/guides/v2.4/graphql/mutations/update-gift-registry-registrants.md b/src/guides/v2.4/graphql/mutations/update-gift-registry-registrants.md index c13e2033ce9..cfaf8cce379 100644 --- a/src/guides/v2.4/graphql/mutations/update-gift-registry-registrants.md +++ b/src/guides/v2.4/graphql/mutations/update-gift-registry-registrants.md @@ -2,6 +2,8 @@ group: graphql title: updateGiftRegistryRegistrants mutation ee_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/gift-registry/mutations/update-registrants/ +status: migrated --- The `updateGiftRegistryRegistrants` mutation updates properties of one or more registrants of the specified gify registry. diff --git a/src/guides/v2.4/graphql/mutations/update-gift-registry.md b/src/guides/v2.4/graphql/mutations/update-gift-registry.md index 70bd2788cef..831c3dd3559 100644 --- a/src/guides/v2.4/graphql/mutations/update-gift-registry.md +++ b/src/guides/v2.4/graphql/mutations/update-gift-registry.md @@ -2,6 +2,8 @@ group: graphql title: updateGiftRegistry mutation ee_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/gift-registry/mutations/update/ +status: migrated --- The `updateGiftRegistry` mutation modifies properties of specified gift registry. It does not update the items in a gift registry or registrants. Use the `updateGiftRegistryItems` or `updateGiftRegistryRegistrants` mutation to modify gift registry items or registrants. diff --git a/src/guides/v2.4/graphql/mutations/update-negotiable-quote-quantities.md b/src/guides/v2.4/graphql/mutations/update-negotiable-quote-quantities.md index 37be9537537..0d02d09a060 100644 --- a/src/guides/v2.4/graphql/mutations/update-negotiable-quote-quantities.md +++ b/src/guides/v2.4/graphql/mutations/update-negotiable-quote-quantities.md @@ -2,6 +2,8 @@ group: graphql title: updateNegotiableQuoteQuantities mutation b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/negotiable-quote/mutations/update-quantities/ +status: migrated --- The `updateNegotiableQuoteQuantities` mutation changes the quantity of one or more products in an active negotiable quote. diff --git a/src/guides/v2.4/graphql/mutations/update-products-in-wishlist.md b/src/guides/v2.4/graphql/mutations/update-products-in-wishlist.md index 44eb8701b39..4acd3884842 100644 --- a/src/guides/v2.4/graphql/mutations/update-products-in-wishlist.md +++ b/src/guides/v2.4/graphql/mutations/update-products-in-wishlist.md @@ -1,7 +1,8 @@ --- group: graphql title: updateProductsInWishlist mutation - +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/wishlist/mutations/update-products/ +status: migrated --- The `updateProductsInWishlist` mutation changes the quantity, description and option information for the specified items in the customer's wish list. diff --git a/src/guides/v2.4/graphql/mutations/update-requisition-list-items.md b/src/guides/v2.4/graphql/mutations/update-requisition-list-items.md index 5c2efc01367..dfe10ba82e4 100644 --- a/src/guides/v2.4/graphql/mutations/update-requisition-list-items.md +++ b/src/guides/v2.4/graphql/mutations/update-requisition-list-items.md @@ -3,6 +3,8 @@ group: graphql title: updateRequisitionListItems mutation b2b_only: true contributor_name: EY +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/requisition-list/mutations/update-items/ +status: migrated --- The `updateRequisitionListItems` mutation updates products in a requisition list. diff --git a/src/guides/v2.4/graphql/mutations/update-requisition-list.md b/src/guides/v2.4/graphql/mutations/update-requisition-list.md index eb3d9b59bb1..7d44c6a04ad 100644 --- a/src/guides/v2.4/graphql/mutations/update-requisition-list.md +++ b/src/guides/v2.4/graphql/mutations/update-requisition-list.md @@ -4,6 +4,8 @@ title: updateRequisitionList mutation b2b_only: true contributor_name: Zilker Technology contributor_link: https://www.ztech.io/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/requisition-list/mutations/update/ +status: migrated --- The `updateRequisitionList` mutation updates the name and, optionally, the description of a requisition list. diff --git a/src/guides/v2.4/graphql/mutations/update-wishlist.md b/src/guides/v2.4/graphql/mutations/update-wishlist.md index 5438f4c8af2..61c25aedbde 100644 --- a/src/guides/v2.4/graphql/mutations/update-wishlist.md +++ b/src/guides/v2.4/graphql/mutations/update-wishlist.md @@ -2,6 +2,8 @@ group: graphql title: updateWishlist mutation ee_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/wishlist/mutations/update/ +status: migrated --- The `updateWishlist` mutation updates the properties of a wish list. {{site.data.var.ee}} allows customers to change the name and visibility of wish lists. diff --git a/src/guides/v2.4/graphql/payment-methods/braintree-vault.md b/src/guides/v2.4/graphql/payment-methods/braintree-vault.md deleted file mode 120000 index 0a54640157b..00000000000 --- a/src/guides/v2.4/graphql/payment-methods/braintree-vault.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/payment-methods/braintree-vault.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/payment-methods/braintree-vault.md b/src/guides/v2.4/graphql/payment-methods/braintree-vault.md new file mode 100644 index 00000000000..53a9b022b50 --- /dev/null +++ b/src/guides/v2.4/graphql/payment-methods/braintree-vault.md @@ -0,0 +1,93 @@ +--- +group: graphql +title: Braintree Vault payment method +contributor_name: Something Digital +contributor_link: https://www.somethingdigital.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/payment-methods/braintree-vault/ +status: migrated +--- + +Braintree Vault is a payment gateway that processes debit and credit card payments from the Magento_Vault. + +## Braintree Vault workflow + +The following diagram shows the workflow for placing an order when Braintree Vault is the selected payment method. + +![Braintree sequence diagram]({{site.baseurl}}/common/images/graphql/braintree-vault.svg) + +1. Use the [`customerPaymentTokens`]({{page.baseurl}}/graphql/queries/customer-payment-tokens.html) query to retrieve + the payment tokens the customer has stored in the vault. + +1. Magento returns an array of payment tokens. + +1. The client renders the token information, and the customer selects a payment method. + + When the customer selects a stored payment method, the PWA uses the [`setPaymentMethodOnCart`]({{page.baseurl}}/graphql/mutations/set-payment-method.html) mutation to set the payment method to [`braintree_cc_vault`](#braintree_cc_vault-object). The vaulted public hash is passed with other optional properties in the `braintree_cc_vault`. + +1. Magento returns a `Cart` object. + +1. The client runs the [`placeOrder`]({{page.baseurl}}/graphql/mutations/place-order.html) mutation. + +1. Magento sends an authorization request to the gateway. + +1. The gateway sends the response to Magento. + +1. Magento creates an order and sends an order ID in response to the `placeOrder` mutation. + +## `setPaymentMethodOnCart` mutation + +When you set the payment method to Braintree in the [`setPaymentMethodOnCart`]({{page.baseurl}}/graphql/mutations/set-payment-method.html) +mutation, the `payment_method` object must contain a [`braintree_cc_vault`](#braintree_cc_vault-object) object. + +### braintree_cc_vault object + +The `braintree_cc_vault` object must contain the following attributes: + +Attribute | Data Type | Description +--- | --- | --- +`public_hash` | String! | Required input for Magento_Vault public hash for the selected stored payment method +`device_data` | String | Optional. JSON-encoded device data for Kount integration + +### Example Usage + +The following example shows the `setPaymentMethodOnCart` mutation constructed for the Braintree Vault payment method. + +**Request:** + +```graphql +mutation { + setPaymentMethodOnCart( + input: { + cart_id: "IeTUiU0oCXjm0uRqGCOuhQ2AuQatogjG" + payment_method: { + code: "braintree_cc_vault" + braintree_cc_vault: { public_hash: "fake-public-hash" } + } + } + ) { + cart { + selected_payment_method { + code + title + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "setPaymentMethodOnCart": { + "cart": { + "selected_payment_method": { + "code": "braintree_cc_vault" + "title": "Stored Cards" + } + } + } + } +} +``` diff --git a/src/guides/v2.4/graphql/payment-methods/braintree.md b/src/guides/v2.4/graphql/payment-methods/braintree.md deleted file mode 120000 index 8298a8957ee..00000000000 --- a/src/guides/v2.4/graphql/payment-methods/braintree.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/payment-methods/braintree.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/payment-methods/braintree.md b/src/guides/v2.4/graphql/payment-methods/braintree.md new file mode 100644 index 00000000000..a20d42a213f --- /dev/null +++ b/src/guides/v2.4/graphql/payment-methods/braintree.md @@ -0,0 +1,102 @@ +--- +group: graphql +title: Braintree payment method +contributor_name: Something Digital +contributor_link: https://www.somethingdigital.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/payment-methods/braintree/ +status: migrated +--- + +Braintree is a payment gateway that processes debit and credit card payments. + +## Braintree workflow + +The following diagram shows the workflow for placing an order when Braintree is the selected payment method. + +![Braintree sequence diagram]({{site.baseurl}}/common/images/graphql/braintree.svg) + +1. The PWA client calls the [`createBraintreeClientToken`]({{page.baseurl}}/graphql/mutations/create-braintree-client-token.html) mutation to generate the client token. + +1. Magento forwards the request to Braintree. + +1. Braintree returns the token to Magento. + +1. Magento forwards the token to the client. + +1. The PWA client uses the token to initialize the [Braintree hosted fields](https://developers.braintreepayments.com/guides/hosted-fields/overview/javascript/v3). These fields collect and tokenize payment information via a secure iframe. This process occurs over several steps. + + - On the checkout page, the customer selects **Credit Card** as the payment method and enters payment information using the Braintree hosted fields. Then the customer clicks **Place Order**. + + - The client requests the Braintree SDK tokenize the user-input payment information. + +1. The Braintree SDK submits the payment information to Braintree client-side and returns a [payment token](https://braintree.github.io/braintree-web/3.46.0/HostedFields.html#tokenize) (nonce) to the client. + +1. The client extracts the payment nonce from the [Tokenized Payload](https://braintree.github.io/braintree-web/3.46.0/HostedFields.html#~tokenizePayload). + + The client uses the [`setPaymentMethodOnCart`]({{page.baseurl}}/graphql/mutations/set-payment-method.html) mutation to set the payment method to `braintree`. The payment method nonce is passed with other required and optional properties in the [`braintree`](#braintree-object) object. + +1. Magento returns a `Cart` object. + +1. The client uses the [`placeOrder`]({{page.baseurl}}/graphql/mutations/place-order.html) mutation. + +1. Magento sends an authorization request to Braintree. + +1. Braintree sends the response to Magento. + +1. Magento creates an order and sends an order ID in response to the `placeOrder` mutation. + +## `setPaymentMethodOnCart` mutation + +When you set the payment method to Braintree in the [`setPaymentMethodOnCart`]({{page.baseurl}}/graphql/mutations/set-payment-method.html) mutation, the `payment_method` object must contain a `braintree` object. + +### braintree object + +The `braintree` object must contain the following attributes: + +Attribute | Data Type | Description +--- | --- | --- +`payment_method_nonce` | String! | The one-time payment token generated by Braintree payment gateway based on card details. Required field for sale transactions +`is_active_payment_token_enabler` | Boolean! | States whether a customer-entered credit/debit card should be tokenized for later usage. Required only if Vault is enabled for Braintree payment integration +`device_data` | String | Optional. Contains a fingerprint provided by the Braintree JS SDK. It should be sent with sale transaction details to the Braintree payment gateway. Specify a value only if Kount (advanced fraud protection) is enabled for Braintree payment integration + +## Example Usage + +The following example shows the `setPaymentMethodOnCart` mutation constructed for the Braintree payment method. + +**Request:** + +```text +mutation { + setPaymentMethodOnCart(input: { + cart_id: "IeTUiU0oCXjm0uRqGCOuhQ2AuQatogjG" + payment_method: { + code: "braintree" + braintree: { + payment_method_nonce: "fake-nonce" + is_active_payment_token_enabler: false + } + } + }) { + cart { + selected_payment_method { + code + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "setPaymentMethodOnCart": { + "cart": { + "selected_payment_method": { + "code": "braintree" + } + } + } + } +} +``` diff --git a/src/guides/v2.4/graphql/payment-methods/hosted-pro.md b/src/guides/v2.4/graphql/payment-methods/hosted-pro.md deleted file mode 120000 index 0eab792a21b..00000000000 --- a/src/guides/v2.4/graphql/payment-methods/hosted-pro.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/payment-methods/hosted-pro.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/payment-methods/hosted-pro.md b/src/guides/v2.4/graphql/payment-methods/hosted-pro.md new file mode 100644 index 00000000000..3322bfb5253 --- /dev/null +++ b/src/guides/v2.4/graphql/payment-methods/hosted-pro.md @@ -0,0 +1,71 @@ +--- +group: graphql +title: PayPal Website Payments Pro Hosted Solution payment method +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/payment-methods/hosted-pro/ +status: migrated +--- + +PayPal's [Website Payments Pro Hosted Solution](https://developer.paypal.com/docs/classic/paypal-payments-pro/integration-guide/) allows merchants to accept credit cards, debit cards, and PayPal payments directly on their websites. The merchant must be based in the United Kingdom to create a new integration with this payment method. PayPal continues to support merchants with existing integrations outside the UK. + +This payment method is applicable to Direct Payment and Express Checkout implementations of the Website Payments Pro Hosted Solution. + +PayPal's product name for this payment method varies from country to country. [PayPal Website Payments +Pro Hosted Solution Integration Guide](https://www.paypalobjects.com/webstatic/en_GB/developer/docs/pdf/hostedsolution_uk.pdf) provides more information. + +## Website Payments Pro Hosted Solution workflow + +The following diagram shows the workflow for placing an order when Website Payments Pro Hosted Solution is the selected payment method. + +![PayPal Website Payments Pro Hosted Solution sequence diagram]({{site.baseurl}}/common/images/graphql/paypal-hosted-pro.svg) + +{% include graphql/payment-methods/hosted-pro-workflow.md %} + +## `setPaymentMethodOnCart` mutation + +When you set the payment method for a Website Payments Pro Hosted Solution, you must set the `code` attribute to `hosted_pro`. In addition, the payload must contain a `hosted_pro` object, which defines the following attributes: + +{% include graphql/payment-methods/hosted-pro-attributes.md %} + +### Example usage + +The following example shows the `setPaymentMethodOnCart` mutation constructed for the Website Payments Pro Hosted Solution payment method. + +**Request:** + +```graphql +mutation { + setPaymentMethodOnCart(input: { + cart_id: "H87OmEkvusP7ZPkd2634pQFxY4dKI3a4" + payment_method: { + code: "hosted_pro" + hosted_pro: { + cancel_url: "paypal/hostedpro/cancel" + return_url: "paypal/hostedpro/return" + } + } + }) + { + cart { + selected_payment_method { + code + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "setPaymentMethodOnCart": { + "cart": { + "selected_payment_method": { + "code": "hosted_pro", + } + } + } + } +} +``` diff --git a/src/guides/v2.4/graphql/payment-methods/klarna.md b/src/guides/v2.4/graphql/payment-methods/klarna.md index 35640708522..b76b883e64d 100644 --- a/src/guides/v2.4/graphql/payment-methods/klarna.md +++ b/src/guides/v2.4/graphql/payment-methods/klarna.md @@ -3,6 +3,8 @@ group: graphql title: Klarna payment method contributor_name: Klarna contributor_link: https://www.klarna.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/payment-methods/klarna/ +status: migrated --- Klarna Payments enables your consumers to try before they buy, finance purchases on your store with Klarna, or let them pay directly. Klarna offers these payment methods through a widget that you can add inline on your checkout page. @@ -106,7 +108,7 @@ mutation { payment_method: { code: "klarna_pay_later" klarna: { - authorization_token: "e9abc610-6748-256f-a506-355626551326" + authorization_token: "e9abc610-6748-256f-a506-355626551326" #gitleaks:allow } } }) { diff --git a/src/guides/v2.4/graphql/payment-methods/payflow-express.md b/src/guides/v2.4/graphql/payment-methods/payflow-express.md deleted file mode 120000 index f735667dbbe..00000000000 --- a/src/guides/v2.4/graphql/payment-methods/payflow-express.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/payment-methods/payflow-express.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/payment-methods/payflow-express.md b/src/guides/v2.4/graphql/payment-methods/payflow-express.md new file mode 100644 index 00000000000..c9f84dc7801 --- /dev/null +++ b/src/guides/v2.4/graphql/payment-methods/payflow-express.md @@ -0,0 +1,82 @@ +--- +group: graphql +title: Express Checkout for other PayPal solutions +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/payment-methods/payflow-express/ +status: migrated +--- + +Set the payment method code to `payflow_express` to process Express Checkout transactions when the payment method is set to any of the following: + +- Payflow Link +- Payflow Pro +- Payments Advanced +- Payments Pro + +PayPal Express Checkout enables customers to pay by credit card or from the security of their personal PayPal accounts. During checkout, the customer is redirected to the secure PayPal site to complete the payment information. The customer is then returned to the store to complete the remainder of the checkout process. + +From a GraphQL integration standpoint, this payment method is identical to the [PayPal Express Checkout]({{page.baseurl}}/graphql/payment-methods/payflow-link.html) payment method, with the exception that in the `setPaymentMethodOnCart` mutation, the payment method `code` is set to `payflow_express`. + +## PayPal Express Checkout workflow + +The following diagram shows the workflow for placing an order when `payflow_express` is the specified payment method. + +![PayPal Express Checkout sequence diagram]({{site.baseurl}}/common/images/graphql/paypal-express-checkout.svg) + +The following steps describe the flow of calls required to complete a typical PayPal Express Checkout authorization. A successful purchase requires that you send three mutations to PayPal, and the buyer must approve the purchase by logging in to PayPal. + +{% include graphql/payment-methods/paypal-express-checkout-workflow.md %} + +## `setPaymentMethodOnCart` mutation + +When you set the payment method to one of the Express Checkout payment solutions discussed in this topic, you must set the `code` attribute to `payflow_express`. In addition, the payload must contain a `payflow_express` object, which defines the following attributes: + +{% include graphql/payment-methods/paypal-express-checkout-attributes.md %} + +### Example usage + +The following example shows the `setPaymentMethodOnCart` mutation with the `code` set to `payflow_express`. + +**Request:** + +```graphql +mutation { + setPaymentMethodOnCart(input: { + cart_id: "rMQdWEecBZr4SVWZwj2AF6y0dNCKQ8uH" + payment_method: { + code: "payflow_express" + payflow_express: { + payer_id: "" + token: "" + } + } + }) { + cart { + selected_payment_method { + code + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "setPaymentMethodOnCart": { + "cart": { + "selected_payment_method": { + "code": "payflow_express", + } + } + } + } +} +``` + +## Related topics + +- [`createPaypalExpressToken` mutation]({{page.baseurl}}/graphql/mutations/create-paypal-express-token.html) +- [`placeOrder` mutation]({{page.baseurl}}/graphql/mutations/place-order.html) +- [`setPaymentMethodOnCart` mutation]({{page.baseurl}}/graphql/mutations/set-payment-method.html) diff --git a/src/guides/v2.4/graphql/payment-methods/payflow-link.md b/src/guides/v2.4/graphql/payment-methods/payflow-link.md deleted file mode 120000 index 4409a28e216..00000000000 --- a/src/guides/v2.4/graphql/payment-methods/payflow-link.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/payment-methods/payflow-link.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/payment-methods/payflow-link.md b/src/guides/v2.4/graphql/payment-methods/payflow-link.md new file mode 100644 index 00000000000..881a06242db --- /dev/null +++ b/src/guides/v2.4/graphql/payment-methods/payflow-link.md @@ -0,0 +1,70 @@ +--- +group: graphql +title: PayPal Payflow Link payment method +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/payment-methods/payflow-link/ +status: migrated +--- + +PayPal [PayFlow Link](https://developer.paypal.com/docs/classic/payflow/integration-guide/) is available for merchants in the United States and Canada only. Customers are not required to have a personal PayPal account. Instead, customers enter their credit card information in a form that is hosted by PayPal. + +The Payflow gateway uses a secure token to send non-credit card transaction data to the Payflow server for storage in a way that cannot be intercepted and manipulated maliciously. This token secures the data for a one-time transaction and is valid for 30 minutes. When the PWA client runs the `placeOrder` mutation, Magento requests a secure token. The Payflow server returns the token as a string of up to 32 alphanumeric characters. + +## Payflow Link workflow + +The following diagram shows the workflow for placing an order when Payflow Link is the selected payment method. + +![PayPal Payflow Link sequence diagram]({{site.baseurl}}/common/images/graphql/paypal-payflow-link.svg) + +{% include graphql/payment-methods/payflow-link-workflow.md %} + +## Additional Payment information + +When you set the payment method to Payflow Link in the [`setPaymentMethodOnCart`]({{page.baseurl}}/graphql/mutations/set-payment-method.html) mutation, the `payment_method` object must contain a `payflow_link` object, which defines the following objects: + +{% include graphql/payment-methods/payflow-link-attributes.md %} + +### Example usage + +The following example shows the `setPaymentMethodOnCart` mutation constructed for the Payflow Link payment method. + +**Request:** + +```graphql +mutation { + setPaymentMethodOnCart(input: { + payment_method: { + code: "payflow_link" + payflow_link: { + return_url: "paypal/action/return.html" + error_url: "paypal/action/error.html" + cancel_url: "paypal/action/cancel.html" + } + } + cart_id: "IeTUiU0oCXjm0uRqGCOuhQ2AuQatogjG" + }) { + cart { + selected_payment_method { + code + title + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "setPaymentMethodOnCart": { + "cart": { + "selected_payment_method": { + "code": "payflow_link", + "title": "PayPal Payflow Link" + } + } + } + } +} +``` diff --git a/src/guides/v2.4/graphql/payment-methods/payflow-pro-vault.md b/src/guides/v2.4/graphql/payment-methods/payflow-pro-vault.md index 0bb3b3d8ae5..15daaedd12b 100644 --- a/src/guides/v2.4/graphql/payment-methods/payflow-pro-vault.md +++ b/src/guides/v2.4/graphql/payment-methods/payflow-pro-vault.md @@ -1,6 +1,8 @@ --- group: graphql title: PayPal Payflow Pro Vault payment method +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/payment-methods/payflow-pro-vault/ +status: migrated --- PayPal Payflow Pro Vault payment method processes credit and debit card payments using information stored in the Magento vault. This payment method is available for customers of the United States, Canada, Australia, and New Zealand. diff --git a/src/guides/v2.4/graphql/payment-methods/payflow-pro.md b/src/guides/v2.4/graphql/payment-methods/payflow-pro.md index 8f507033fd0..918e16fafcc 100644 --- a/src/guides/v2.4/graphql/payment-methods/payflow-pro.md +++ b/src/guides/v2.4/graphql/payment-methods/payflow-pro.md @@ -1,6 +1,8 @@ --- group: graphql title: PayPal Payflow Pro payment method +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/payment-methods/payflow-pro/ +status: migrated --- Payflow Pro is a payment gateway that processes debit and credit card payments. It is available for customers of the United States, Canada, Australia, and New Zealand. diff --git a/src/guides/v2.4/graphql/payment-methods/payments-advanced.md b/src/guides/v2.4/graphql/payment-methods/payments-advanced.md deleted file mode 120000 index f60772b003e..00000000000 --- a/src/guides/v2.4/graphql/payment-methods/payments-advanced.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/payment-methods/payments-advanced.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/payment-methods/payments-advanced.md b/src/guides/v2.4/graphql/payment-methods/payments-advanced.md new file mode 100644 index 00000000000..3c9a2d86674 --- /dev/null +++ b/src/guides/v2.4/graphql/payment-methods/payments-advanced.md @@ -0,0 +1,74 @@ +--- +group: graphql +title: PayPal Payments Advanced payment method +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/payment-methods/payments-advanced/ +status: migrated +--- + +The PayPal Payments Advanced payment solution allows merchants to enable their online stores to collect payments directly via credit card or from the PayPal Credit service. If Payments Advanced has been configured to implement Express Checkout, use the [PayPal Express Checkout for Payflow payment method]({{page.baseurl}}/graphql/payment-methods/payflow-express.html) instead. + +From a GraphQL integration standpoint, PayPal Payments Advanced payment method is identical to the PayPal [Payflow Link]({{page.baseurl}}/graphql/payment-methods/payflow-link.html) payment method, with the exception of the payment method `code`. The PayPal [Payments Advanced documentation](https://developer.paypal.com/docs/classic/products/paypal-payments-advanced/) describes other ways in which the payment methods differ. + +PayPal Payments Advanced is available in the US and Canada only. + +## PayPal Payments Advanced workflow + +The following diagram shows the workflow for placing an order when Payments Advanced is the selected payment method. + +![PayPal Payments Advanced sequence diagram]({{site.baseurl}}/common/images/graphql/paypal-payflow-link.svg) + +{% include graphql/payment-methods/payflow-link-workflow.md %} + +## Additional Payment information + +## `setPaymentMethodOnCart` mutation + +When you set the payment method to PayPal Payments Advanced, you must set the `code` attribute to `payflow_advanced`. In addition, the payload must contain a `payflow_link` object, which defines the following attributes: + +{% include graphql/payment-methods/payflow-link-attributes.md %} + +### Example usage + +The following example shows the `setPaymentMethodOnCart` mutation constructed for the Payments Advanced payment method. + +**Request:** + +```graphql +mutation { + setPaymentMethodOnCart(input: { + payment_method: { + code: "payflow_advanced" + payflow_link: { + return_url: "paypal/action/return.html" + error_url: "paypal/action/error.html" + cancel_url: "paypal/action/cancel.html" + } + } + cart_id: "IeTUiU0oCXjm0uRqGCOuhQ2AuQatogjG" + }) { + cart { + selected_payment_method { + code + title + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "setPaymentMethodOnCart": { + "cart": { + "selected_payment_method": { + "code": "payflow_advanced", + "title": "Credit Card" + } + } + } + } +} +``` diff --git a/src/guides/v2.4/graphql/payment-methods/paypal-express-checkout.md b/src/guides/v2.4/graphql/payment-methods/paypal-express-checkout.md deleted file mode 120000 index 769b290df2b..00000000000 --- a/src/guides/v2.4/graphql/payment-methods/paypal-express-checkout.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/payment-methods/paypal-express-checkout.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/payment-methods/paypal-express-checkout.md b/src/guides/v2.4/graphql/payment-methods/paypal-express-checkout.md new file mode 100644 index 00000000000..b8c3714403b --- /dev/null +++ b/src/guides/v2.4/graphql/payment-methods/paypal-express-checkout.md @@ -0,0 +1,80 @@ +--- +group: graphql +title: PayPal Express Checkout payment method +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/payment-methods/paypal-express-checkout/ +status: migrated +--- + +The PayPal Express Checkout payment method enables customers to pay by credit card or from the security of their personal PayPal accounts. During checkout, the customer is redirected to the secure PayPal site to complete the payment information. The customer is then returned to the store to complete the remainder of the checkout process. + +Some alternate PayPal solutions have the same GraphQL workflow when Express Checkout is enabled. The information in this topic also applies to the following PayPal solutions: + +- Payments Standard +- Website Payments Standard + +## PayPal Express Checkout workflow + +The following diagram shows the workflow for placing an order when PayPal Express Checkout is the selected payment method. + +![PayPal Express Checkout sequence diagram]({{site.baseurl}}/common/images/graphql/paypal-express-checkout.svg) + +The following steps describe the flow of calls required to complete a typical PayPal Express Checkout authorization. A successful purchase requires that you send three mutations to PayPal, and the buyer must approve the purchase by logging in to PayPal. + +{% include graphql/payment-methods/paypal-express-checkout-workflow.md %} + +## `setPaymentMethodOnCart` mutation + +When you set the payment method to Express Checkout, you must set the `code` attribute to `paypal_express`. In addition, the payload must contain a `paypal_express` object, which defines the following attributes: + +{% include graphql/payment-methods/paypal-express-checkout-attributes.md %} + +### Example usage + +The following example shows the `setPaymentMethodOnCart` mutation constructed for the PayPal Express payment method. + +**Request:** + +```graphql +mutation { + setPaymentMethodOnCart(input: { + cart_id: "rMQdWEecBZr4SVWZwj2AF6y0dNCKQ8uH" + payment_method: { + code: "paypal_express" + paypal_express: { + payer_id: "" + token: "" + } + } + }) { + cart { + selected_payment_method { + code + title + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "setPaymentMethodOnCart": { + "cart": { + "selected_payment_method": { + "code": "paypal_express", + "title": "PayPal Express Checkout" + } + } + } + } +} +``` + +## Related topics + +- [`createPaypalExpressToken` mutation]({{page.baseurl}}/graphql/mutations/create-paypal-express-token.html) +- [`placeOrder` mutation]({{page.baseurl}}/graphql/mutations/place-order.html) +- [`setPaymentMethodOnCart` mutation]({{page.baseurl}}/graphql/mutations/set-payment-method.html) diff --git a/src/guides/v2.4/graphql/protected-mutations.md b/src/guides/v2.4/graphql/protected-mutations.md index ccad4fae168..77994f6908a 100644 --- a/src/guides/v2.4/graphql/protected-mutations.md +++ b/src/guides/v2.4/graphql/protected-mutations.md @@ -1,10 +1,17 @@ --- group: graphql title: Protected mutations +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/usage/protected-mutations/ +status: migrated --- If CAPTCHA or reCAPTCHA is enabled on pages requiring shopper input, then in most cases, the corresponding mutations that send requests to the Magento server must include an HTTP header that contains a value entered by the shopper (for CAPTCHA) or generated by the Google API (for reCAPTCHA). However, if you specify an integration authorization token in the header of the mutation, then you do not supply a header specific to CAPTCHA or reCAPTCHA. +The HTTP `X-Captcha` and `X-ReCaptcha` headers: + +* Cannot be received by an automated script or a non-UI API call. They are captured and returned by the UI Web form only. +* Are optional in protected mutation API calls that provide **_integration authorization_** tokens only. They cannot be skipped when you provide an Admin or Bearer token. + ## CAPTCHA The following table lists the forms that can be configured to require CAPTCHA. Go to **Stores** > **Configuration** > **Customers** > **Customer Configuration** > **CAPTCHA** > **Forms** to enable or disable CAPTCHA on these forms. diff --git a/src/guides/v2.4/graphql/queries/attributes-metadata.md b/src/guides/v2.4/graphql/queries/attributes-metadata.md index 64ee467ac9d..25255523a1c 100644 --- a/src/guides/v2.4/graphql/queries/attributes-metadata.md +++ b/src/guides/v2.4/graphql/queries/attributes-metadata.md @@ -2,6 +2,8 @@ group: graphql title: attributesMetadata query pwa_only: True +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/attributes-metadata/ +status: migrated --- The `attributesMetadata` query returns everything available in [`customAttributeMetadata`]({{page.baseurl}}/graphql/queries/custom-attribute-metadata.html) but also inclues additional information such as `data_type`, `sort_order`, and `ui_input` data, that can be used for filtering, searching and layered navigation. The information returned in `customAttributeMetadata` is in a different format when returned in `attributesMetadata`. diff --git a/src/guides/v2.4/graphql/queries/available-stores.md b/src/guides/v2.4/graphql/queries/available-stores.md index 6c99298a215..8cb17d469f8 100644 --- a/src/guides/v2.4/graphql/queries/available-stores.md +++ b/src/guides/v2.4/graphql/queries/available-stores.md @@ -1,6 +1,8 @@ --- group: graphql title: availableStores query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/available-stores/ +status: migrated --- The `availableStores` query returns configuration information about multiple store views. Use this query to implement a store switcher. diff --git a/src/guides/v2.4/graphql/queries/cart.md b/src/guides/v2.4/graphql/queries/cart.md index e574c96b197..35e8e706036 100644 --- a/src/guides/v2.4/graphql/queries/cart.md +++ b/src/guides/v2.4/graphql/queries/cart.md @@ -1,6 +1,8 @@ --- group: graphql title: cart query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/cart/queries/cart/ +status: migrated --- Use the `cart` query to retrieve information about a particular cart. @@ -95,6 +97,10 @@ The following query shows the status of a cart that is ready to be converted int sku } quantity + errors { + code + message + } } available_payment_methods { code @@ -267,6 +273,8 @@ In this query, the **Buy 3 tee shirts and get the 4th free** cart price rule fro The `3T1free` rule is applied first, and Magento returns the price of a single shirt, $29, as the discount. Magento then applies a 10% discount to the remaining total of the products in the cart. +If other promotions or price adjustments are applied to the cart through either store credit or gift cards, these are reflected under the `discounts` object with the appropriate label. + **Request:** ```graphql @@ -332,15 +340,21 @@ The `3T1free` rule is applied first, and Magento returns the price of a single s }, "discounts": [ { - "label": "3T1free", + "label": "Discount (3T1free, 10% Off for New Customers)", + "amount": { + "value": 37.7 + } + }, + { + "label": "Gift Card", "amount": { - "value": 29 + "value": 0.1 } }, { - "label": "10% Off for New Customers", + "label": "Store Credit", "amount": { - "value": 8.7 + "value": 0.1 } } ] diff --git a/src/guides/v2.4/graphql/queries/categories.md b/src/guides/v2.4/graphql/queries/categories.md index 504387b16dc..130b0fcee3f 100644 --- a/src/guides/v2.4/graphql/queries/categories.md +++ b/src/guides/v2.4/graphql/queries/categories.md @@ -1,6 +1,8 @@ --- group: graphql title: categories query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/products/queries/categories/ +status: migrated --- The `categories` query returns a list of categories that match the specified filter. This query differs from the `categoryList` query in that it supports pagination. diff --git a/src/guides/v2.4/graphql/queries/category-list.md b/src/guides/v2.4/graphql/queries/category-list.md index 4f42e6495d3..67492f8e454 100644 --- a/src/guides/v2.4/graphql/queries/category-list.md +++ b/src/guides/v2.4/graphql/queries/category-list.md @@ -1,6 +1,8 @@ --- group: graphql title: categoryList query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/products/queries/category-list/ +status: migrated --- The `categoryList` query searches for categories that match the criteria specified in filters. It replaces the deprecated `category` query, which allowed you to search by category ID only. diff --git a/src/guides/v2.4/graphql/queries/category.md b/src/guides/v2.4/graphql/queries/category.md index 84b646e9166..365a22ad1bc 100644 --- a/src/guides/v2.4/graphql/queries/category.md +++ b/src/guides/v2.4/graphql/queries/category.md @@ -1,6 +1,8 @@ --- group: graphql title: category query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/products/queries/category/ +status: migrated --- {:.bs-callout-warning} diff --git a/src/guides/v2.4/graphql/queries/checkout-agreements.md b/src/guides/v2.4/graphql/queries/checkout-agreements.md deleted file mode 120000 index f4529978c3e..00000000000 --- a/src/guides/v2.4/graphql/queries/checkout-agreements.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/queries/checkout-agreements.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/checkout-agreements.md b/src/guides/v2.4/graphql/queries/checkout-agreements.md new file mode 100644 index 00000000000..f402313d8e4 --- /dev/null +++ b/src/guides/v2.4/graphql/queries/checkout-agreements.md @@ -0,0 +1,73 @@ +--- +group: graphql +title: checkoutAgreements query +contributor_name: Something Digital +contributor_link: https://www.somethingdigital.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/checkout/queries/agreements/ +status: migrated +--- + +The `checkoutAgreements` query retrieves checkout agreements. The query will always return an empty array when the +**Enable Terms and Conditions** option is set to **No**. (The config path is `checkout/options/enable_agreements`.) + +## Syntax + +`{checkoutAgreements {CheckoutAgreement}}` + +## Example usage + +The following query returns enabled checkout agreements. + +**Request:** + +```graphql +{ + checkoutAgreements { + agreement_id + checkbox_text + content + content_height + is_html + mode + name + } +} +``` + +**Response:** + +```json +{ + "data": { + "checkoutAgreements": [ + { + "agreement_id": 1, + "checkbox_text": "I agree to the terms of sale", + "content": "

    Agreement Contents

    \r\n

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

    ", + "content_height": "22px", + "is_html": true, + "mode": "AUTO", + "name": "My Agreement" + } + ] + } +} +``` + +## Output attributes + +The `CheckoutAgreements` object contains an array of [`CheckoutAgreement`](#checkoutAgreementAttributes) objects. + +### CheckoutAgreement attributes {#checkoutAgreementAttributes} + +The `CheckoutAgreement` object provides the following attributes: + +Attribute | Data type | Description +--- | --- | --- +`agreement_id` | Integer! | Checkout Agreement identifier +`checkbox_text` | String! | Label of the Checkout Agreement checkbox +`content` | String! | The content of the Checkout Agreement. The value can be in plain text or in HTML +`content_height` | String | CSS height of Checkout Agreement +`is_html` | Boolean! | Is Checkout Agreement content in HTML format +`mode` | String! | Indicates whether terms and conditions are applied manually (`MANUAL`) or automatically (`AUTO`) +`name` | String! | Checkout Agreement name diff --git a/src/guides/v2.4/graphql/queries/cms-blocks.md b/src/guides/v2.4/graphql/queries/cms-blocks.md deleted file mode 120000 index ebffd2829cf..00000000000 --- a/src/guides/v2.4/graphql/queries/cms-blocks.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/queries/cms-blocks.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/cms-blocks.md b/src/guides/v2.4/graphql/queries/cms-blocks.md new file mode 100644 index 00000000000..06b1619da50 --- /dev/null +++ b/src/guides/v2.4/graphql/queries/cms-blocks.md @@ -0,0 +1,72 @@ +--- +group: graphql +title: cmsBlocks query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/cms-blocks/ +status: migrated +--- + +The `cmsBlocks` query returns information about blocks that were developed with the Magento Content Management System (CMS). + +## Syntax + +Return the contents of one or more CMS blocks: + +`cmsBlocks(identifiers: [String]): CmsBlocks` + +## Example usage + +The following query returns information about the `login-data` block: + +**Request:** + +```graphql +{ + cmsBlocks(identifiers: "login-data") { + items { + identifier + title + content + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "cmsBlocks": { + "items": [ + { + "identifier": "login-data", + "title": "Login Info Block", + "content": "
    \n

    Try Demo Customer Access

    \n

    Email:roni_cost@example.com

    \n

    Password:roni_cost3@example.com

    \n
    " + } + ] + } + } +} +``` + +## Input attributes + +Attribute | Data type | Description +--- | --- | --- +`id` | Int | Deprecated. Use `identifier` instead. +`identifiers` | [String] | An array containing a comma-separated list of block identifiers + +## Output attributes + +The `CmsBlocks` object contains an array of `items`, each of which can contain a `CmsBlock` object. + +### CmsBlock attributes + +{% include graphql/cms-block-object.md %} + +## Errors + +Error | Description +--- | --- +`The CMS block with the "XXXX" ID doesn't exist` | The specified CMS block ID is invalid. +`"identifiers" of CMS blocks should be specified"` | The `identifiers` array parameter is required for identifying the CMS blocks. diff --git a/src/guides/v2.4/graphql/queries/cms-page.md b/src/guides/v2.4/graphql/queries/cms-page.md deleted file mode 120000 index c428050eab2..00000000000 --- a/src/guides/v2.4/graphql/queries/cms-page.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/queries/cms-page.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/cms-page.md b/src/guides/v2.4/graphql/queries/cms-page.md new file mode 100644 index 00000000000..f6e85402e36 --- /dev/null +++ b/src/guides/v2.4/graphql/queries/cms-page.md @@ -0,0 +1,92 @@ +--- +group: graphql +title: cmsPage query +redirect_from: + - /guides/v2.3/graphql/reference/cms.html +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/cms-page/ +status: migrated +--- + +The `cmsPage` query returns information about content pages that were developed with the Magento Content Management System (CMS). + +## Syntax + +Return the contents of a CMS page: + +`cmsPage(identifier: String): CmsPage` + +## Example usage + +You must include the CMS page identifier value to retrieve the content of a specific CMS page. The following query returns information about the "404 Not Found" CMS page: + +**Request:** + +```graphql +{ + cmsPage(identifier: "no-route") { + identifier + url_key + title + content + content_heading + page_layout + meta_title + meta_description + meta_keywords + } +} +``` + +**Response:** + +```json +{ + "data": { + "cmsPage": { + "identifier": "no-route" + "url_key": "no-route", + "title": "404 Not Found", + "content": "
    \r\n
    The page you requested was not found, and we have a fine guess why.
    \r\n
    \r\n
      \r\n
    • If you typed the URL directly, please make sure the spelling is correct.
    • \r\n
    • If you clicked on a link to get here, the link is outdated.
    • \r\n
    \r\n
    \r\n
    \r\n
    What can you do?
    \r\n
    Have no fear, help is near! There are many ways you can get back on track with Magento Store.
    \r\n
    \r\n
      \r\n
    • Go back to the previous page.
    • \r\n
    • Use the search bar at the top of the page to search for your products.
    • \r\n
    • Follow these links to get you back on track!
      Store Home | My Account
    \r\n", + "content_heading": "Whoops, our bad...", + "page_layout": "2columns-right", + "meta_title": null, + "meta_description": "Page description", + "meta_keywords": "Page keywords" + } + } +} +``` + +## Input attributes + +Attribute | Data type | Description +--- | --- | --- +`id` | Int | Deprecated. Use `identifier` instead. +`identifier` | String | The identifier of a CMS page + +## Output attributes + +The `CmsPage` object can contain the following attributes: + +Attribute | Data type | Description +--- | --- | --- +`content` | String | The content of the CMS page in raw HTML +`content_heading` | String | The heading that displays at the top of the CMS page +`identifier` | String | The identifier of the CMS page +`meta_description` | String | A brief description of the page for search results listings +`meta_keywords` | String | A set of keywords that search engines can use to index the page +`meta_title` | String | A page title that is indexed by search engines and appears in search results listings +`page_layout` | String | The design layout of the page, indicating the number of columns and navigation features used on the page +`title` | String | The name that appears in the breadcrumb trail navigation and in the browser title bar and tab +`url_key` |String | The URL key of the CMS page, which is often based on the `content_heading` + +## Related topics + +[cmsBlocks query]({{page.baseurl}}/graphql/queries/cms-blocks.html) + +## Errors + +Error | Description +--- | --- +`The CMS page with the "XXXX" ID doesn't exist` | The specified CMS page ID is invalid. +`Page id/identifier should be specified"` | The `identifier` parameter is required for identifying the CMS page. \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/company.md b/src/guides/v2.4/graphql/queries/company.md index 11e6dd0a324..522a5b1905e 100644 --- a/src/guides/v2.4/graphql/queries/company.md +++ b/src/guides/v2.4/graphql/queries/company.md @@ -2,6 +2,8 @@ group: graphql title: company query b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/company/queries/company/ +status: migrated --- The `company` query returns details about the user's company. The request must include the customer token of a company user. diff --git a/src/guides/v2.4/graphql/queries/compare-list.md b/src/guides/v2.4/graphql/queries/compare-list.md index abb8badea66..f714026cf92 100644 --- a/src/guides/v2.4/graphql/queries/compare-list.md +++ b/src/guides/v2.4/graphql/queries/compare-list.md @@ -3,6 +3,8 @@ group: graphql title: compareList query contributor_name: Atwix contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/products/queries/compare-list/ +status: migrated --- The `compareList` query retrieves information about a list of products so that the shopper can compare those products. diff --git a/src/guides/v2.4/graphql/queries/custom-attribute-metadata.md b/src/guides/v2.4/graphql/queries/custom-attribute-metadata.md index 63fa33fb703..7dd81d081bc 100644 --- a/src/guides/v2.4/graphql/queries/custom-attribute-metadata.md +++ b/src/guides/v2.4/graphql/queries/custom-attribute-metadata.md @@ -3,6 +3,8 @@ group: graphql title: customAttributeMetadata query redirect_from: - /guides/v2.3/graphql/reference/custom-attribute-metadata.html +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/custom-attribute-metadata/ +status: migrated --- The `customAttributeMetadata` query returns the attribute type, given an attribute code and entity type. All entity attributes can be added to an equivalent GraphQL type, including custom, extension, and EAV (which have precedence set in that order for collisions). The GraphQL query consumer does not have the ability to know a field's attribute type. diff --git a/src/guides/v2.4/graphql/queries/customer-cart.md b/src/guides/v2.4/graphql/queries/customer-cart.md index 89f38ce82f3..b101f321855 100644 --- a/src/guides/v2.4/graphql/queries/customer-cart.md +++ b/src/guides/v2.4/graphql/queries/customer-cart.md @@ -1,6 +1,8 @@ --- group: graphql title: customerCart query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/queries/cart/ +status: migrated --- The `customerCart` query returns the active cart for the logged-in customer. If the cart does not exist, the query creates one. The customer's authorization token must be specified in the headers. diff --git a/src/guides/v2.4/graphql/queries/customer-downloadable-products.md b/src/guides/v2.4/graphql/queries/customer-downloadable-products.md deleted file mode 120000 index 45e175e75c9..00000000000 --- a/src/guides/v2.4/graphql/queries/customer-downloadable-products.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/queries/customer-downloadable-products.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/customer-downloadable-products.md b/src/guides/v2.4/graphql/queries/customer-downloadable-products.md new file mode 100644 index 00000000000..2356cbc362a --- /dev/null +++ b/src/guides/v2.4/graphql/queries/customer-downloadable-products.md @@ -0,0 +1,85 @@ +--- +group: graphql +title: customerDownloadableProducts query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/queries/downloadable-products/ +status: migrated +--- + +Use the `customerDownloadableProducts` query to retrieve the list of purchased downloadable products for the logged-in customer. + +## Syntax + +`{customerDownloadableProducts: {CustomerDownloadableProducts}}` + +## Example usage + +The following example returns the list of purchased downloadable products for the logged-in customer. + +**Request:** + +```graphql +{ + customerDownloadableProducts { + items { + date + download_url + order_increment_id + remaining_downloads + status + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "customerDownloadableProducts": { + "items": [ + { + "date": "2019-03-04 20:48:32", + "download_url": "https:///downloadable/download/link/id/MC44NTcwMTEwMCAxNTUxNzMyNTEyMTExNTE%2C/", + "order_increment_id": "000000004", + "remaining_downloads": "Unlimited", + "status": "pending" + }, + { + "date": "2019-03-04 20:48:32", + "download_url": "https:///downloadable/download/link/id/MC44NzM0OTkwMCAxNTUxNzMyNTEyMjEyNTA%2C/", + "order_increment_id": "000000004", + "remaining_downloads": "Unlimited", + "status": "pending" + } + ] + } + } +} +``` + +## Output attributes + +The `CustomerDownloadableProducts` object contains the following attribute. + +Attribute | Type | Description +--- | --- | --- +`items` | [[CustomerDownloadableProduct]](#custDownloadProduct) | List of purchased downloadable items + +### CustomerDownloadableProduct object {#custDownloadProduct} + +The `CustomerDownloadableProduct` object contains the following attributes: + +Attribute | Type | Description +--- | --- | --- +`date` | String | The date and time the purchase was made +`download_url` | String | The fully qualified URL to the download file +`order_increment_id` | String | The purchase order ID +`remaining_downloads` | String | Determines the number of times the customer can download the product +`status` | String | Determines the stage in the order workflow when the download becomes available. Options are `Pending` and `Invoiced` + +## Errors + +Error | Description +--- | --- +`The current customer isn't authorized.` | The current customer is not currently logged in, or the customer's token does not exist in the `oauth_token` table. diff --git a/src/guides/v2.4/graphql/queries/customer-orders.md b/src/guides/v2.4/graphql/queries/customer-orders.md index 79cf639b07b..7c8beec8c5a 100644 --- a/src/guides/v2.4/graphql/queries/customer-orders.md +++ b/src/guides/v2.4/graphql/queries/customer-orders.md @@ -1,13 +1,15 @@ --- group: graphql title: customerOrders query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/queries/orders/ +status: migrated --- {:.bs-callout-warning} The `customerOrders` query has been deprecated. Specify the `orders` object in the [`customer`]({{page.baseurl}}/graphql/queries/customer.html) query instead. The Sales module performs a wide variety of functions, including order, invoice, and shipment management. However, most of these functions are performed on the backend, and the customer does not have access to this information. By returning a list of customer orders, the `customerOrders` query allows a customer to retrieve their order histories. -We recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication-session.html). +We recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication](https://developer.adobe.com/commerce/webapi/get-started/authentication/gs-authentication-session). ## Syntax diff --git a/src/guides/v2.4/graphql/queries/customer-payment-tokens.md b/src/guides/v2.4/graphql/queries/customer-payment-tokens.md deleted file mode 120000 index 2bad27bf423..00000000000 --- a/src/guides/v2.4/graphql/queries/customer-payment-tokens.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/queries/customer-payment-tokens.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/customer-payment-tokens.md b/src/guides/v2.4/graphql/queries/customer-payment-tokens.md new file mode 100644 index 00000000000..223c0a88da5 --- /dev/null +++ b/src/guides/v2.4/graphql/queries/customer-payment-tokens.md @@ -0,0 +1,77 @@ +--- +group: graphql +title: customerPaymentTokens query +redirect_from: + - /guides/v2.3/graphql/reference/vault.html +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/checkout/queries/customer-payment-tokens/ +status: migrated +--- + +When the [vault]({{page.baseurl}}/payments-integrations/vault/vault-intro.html) feature is supported by a payment integration and enabled, customers have the option during checkout to save their credit card information. (Braintree supports the vault feature. Third-party payment integrations may support this feature as well.) During subsequent checkouts, the customer is presented with a list of saved payment options. If Instant Purchase is enabled, customers can even by-pass the two-step checkout process and place the order from the product page. + +The `customerPaymentTokens` query returns an array of stored payment methods. Use the [deletePaymentToken mutation]({{page.baseurl}}/graphql/mutations/delete-payment-token.html) to delete a payment token from the system. + +{:.bs-callout-info} +You must specify the customer's authorization token in the header of the call. + +## Syntax + +`{customerPaymentTokens{CustomerPaymentTokens}}` + +## Example usage + +The following example returns all the current customer's payment tokens. The `public_hash` output values will be unique to your application. + +**Request:** + +```graphql +query { + customerPaymentTokens { + items { + details + public_hash + payment_method_code + type + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "customerPaymentTokens": { + "items": [ + { + "details": "{\"type\":\"VI\",\"maskedCC\":\"1111\",\"expirationDate\":\"09\\/2022\"}", + "public_hash": "377c1514e0...", + "payment_method_code": "braintree", + "type": "card" + }, + { + "details": "{\"type\":\"DI\",\"maskedCC\":\"1117\",\"expirationDate\":\"11\\/2023\"}", + "public_hash": "f5816fe2ab...", + "payment_method_code": "braintree", + "type": "card" + } + ] + } + } +} +``` + +## Output attributes + +{% include graphql/customer-payment-tokens.md %} + +## Errors + +Error | Description +--- | --- +`The current customer isn't authorized.` | The current customer is not currently logged in, or the customer's token does not exist in the `oauth_token` table. + +## Related topics + +[deletePaymentToken mutation]({{page.baseurl}}/graphql/mutations/delete-payment-token.html) diff --git a/src/guides/v2.4/graphql/queries/customer.md b/src/guides/v2.4/graphql/queries/customer.md index 1eb3559822e..146752f6a08 100644 --- a/src/guides/v2.4/graphql/queries/customer.md +++ b/src/guides/v2.4/graphql/queries/customer.md @@ -1,11 +1,13 @@ --- group: graphql title: customer query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/queries/customer/ +status: migrated --- The `customer` query returns information about the logged-in customer, store credit history and customer's wishlist. -To return or modify information about a customer, we recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication-session.html). +To return or modify information about a customer, we recommend you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication](https://developer.adobe.com/commerce/webapi/get-started/authentication/gs-authentication-session). ## Syntax diff --git a/src/guides/v2.4/graphql/queries/directory-countries.md b/src/guides/v2.4/graphql/queries/directory-countries.md deleted file mode 120000 index 240782c64cc..00000000000 --- a/src/guides/v2.4/graphql/queries/directory-countries.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/queries/directory-countries.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/directory-countries.md b/src/guides/v2.4/graphql/queries/directory-countries.md new file mode 100644 index 00000000000..5fec3b6aefc --- /dev/null +++ b/src/guides/v2.4/graphql/queries/directory-countries.md @@ -0,0 +1,147 @@ +--- +group: graphql +title: countries query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/countries/ +status: migrated +--- + +The `countries` query returns all countries in which the entity can do business. + +Use the [country]({{page.baseurl}}/graphql/queries/directory-country.html) query if you want to retrieve information about a specific country. + +## Syntax + +`{countries {Countries}}` + +## Example usage + +The following query returns all countries listed for the current instance of Magento: + +**Request:** + +```graphql +query { + countries { + id + two_letter_abbreviation + three_letter_abbreviation + full_name_locale + full_name_english + available_regions { + id + code + name + } + } +} +``` + +**Response:** + +In this example, the response is intentionally truncated. The `available_regions` attribute value will be null if the country does not have any regions available. Otherwise, it contains an array of the country's regions. + +```json +{ + "data": { + "countries": [ + { + "id": "AD", + "two_letter_abbreviation": "AD", + "three_letter_abbreviation": "AND", + "full_name_locale": "Andorra", + "full_name_english": "Andorra", + "available_regions": null + }, + { + "id": "AE", + "two_letter_abbreviation": "AE", + "three_letter_abbreviation": "ARE", + "full_name_locale": "United Arab Emirates", + "full_name_english": "United Arab Emirates", + "available_regions": null + }, + { + "id": "AF", + "two_letter_abbreviation": "AF", + "three_letter_abbreviation": "AFG", + "full_name_locale": "Afghanistan", + "full_name_english": "Afghanistan", + "available_regions": null + }, + { + "id": "AG", + "two_letter_abbreviation": "AG", + "three_letter_abbreviation": "ATG", + "full_name_locale": "Antigua and Barbuda", + "full_name_english": "Antigua and Barbuda", + "available_regions": null + }, + { + "id": "AT", + "two_letter_abbreviation": "AT", + "three_letter_abbreviation": "AUT", + "full_name_locale": "Austria", + "full_name_english": "Austria", + "available_regions": [ + { + "id": 102, + "code": "BL", + "name": "Burgenland" + }, + { + "id": 99, + "code": "KN", + "name": "Kärnten" + }, + { + "id": 96, + "code": "NO", + "name": "Niederösterreich" + }, + { + "id": 97, + "code": "OO", + "name": "Oberösterreich" + }, + { + "id": 98, + "code": "SB", + "name": "Salzburg" + }, + { + "id": 100, + "code": "ST", + "name": "Steiermark" + }, + { + "id": 101, + "code": "TI", + "name": "Tirol" + }, + { + "id": 103, + "code": "VB", + "name": "Vorarlberg" + }, + { + "id": 95, + "code": "WI", + "name": "Wien" + } + ] + } + ] + } +} +``` + +## Output attributes + +The query returns an array of `Country` objects. + +{% include graphql/country-output.md %} + +## Related topics + +* [country query]({{page.baseurl}}/graphql/queries/directory-country.html) +* [currency query]({{page.baseurl}}/graphql/queries/directory-currency.html) diff --git a/src/guides/v2.4/graphql/queries/directory-country.md b/src/guides/v2.4/graphql/queries/directory-country.md deleted file mode 120000 index da126200098..00000000000 --- a/src/guides/v2.4/graphql/queries/directory-country.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/queries/directory-country.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/directory-country.md b/src/guides/v2.4/graphql/queries/directory-country.md new file mode 100644 index 00000000000..76d6da0eea1 --- /dev/null +++ b/src/guides/v2.4/graphql/queries/directory-country.md @@ -0,0 +1,123 @@ +--- +group: graphql +title: country query +redirect_from: + - /guides/v2.3/graphql/reference/directory.html +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/country/ +status: migrated +--- + +Use the `country` query to retrieve information about a specific country. + +Use the [countries]({{page.baseurl}}/graphql/queries/directory-countries.html) query to retrieve a list of countries available in the system. + +## Syntax + +`{country(id: String) {Country}}` + +## Example usage + +The following query uses a two-letter abbreviation for the country ID (id: "AU"), which returns information about Australia. + +**Request:** + +```graphql +query { + country(id: "AU") { + id + two_letter_abbreviation + three_letter_abbreviation + full_name_locale + full_name_english + available_regions { + id + code + name + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "country": { + "id": "AU", + "two_letter_abbreviation": "AU", + "three_letter_abbreviation": "AUS", + "full_name_locale": "Australia", + "full_name_english": "Australia", + "available_regions": [ + { + "id": 569, + "code": "ACT", + "name": "Australian Capital Territory" + }, + { + "id": 570, + "code": "NSW", + "name": "New South Wales" + }, + { + "id": 576, + "code": "NT", + "name": "Northern Territory" + }, + { + "id": 572, + "code": "QLD", + "name": "Queensland" + }, + { + "id": 573, + "code": "SA", + "name": "South Australia" + }, + { + "id": 574, + "code": "TAS", + "name": "Tasmania" + }, + { + "id": 571, + "code": "VIC", + "name": "Victoria" + }, + { + "id": 575, + "code": "WA", + "name": "Western Australia" + } + ] + } + } +} +``` + +## Input attributes + +The `country` query requires the following input: + +Attribute | Data type | Description +--- | --- | --- +`id` | String | A unique ID for the country + +## Output attributes + +The query returns a single `Country` object. + +{% include graphql/country-output.md %} + +## Related topics + +* [countries query]({{page.baseurl}}/graphql/queries/directory-countries.html) +* [currency query]({{page.baseurl}}/graphql/queries/directory-currency.html) + +## Errors + +Error | Description +--- | --- +`Country \"id\" value should be specified"` | The Country ID value must be specified to find the mapped country. +`The country isn't available` | There is no country mapped to the given country ID. diff --git a/src/guides/v2.4/graphql/queries/directory-currency.md b/src/guides/v2.4/graphql/queries/directory-currency.md deleted file mode 120000 index 1dc930ee2c5..00000000000 --- a/src/guides/v2.4/graphql/queries/directory-currency.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/queries/directory-currency.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/directory-currency.md b/src/guides/v2.4/graphql/queries/directory-currency.md new file mode 100644 index 00000000000..b19eda85995 --- /dev/null +++ b/src/guides/v2.4/graphql/queries/directory-currency.md @@ -0,0 +1,90 @@ +--- +group: graphql +title: currency query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/currency/ +status: migrated +--- + +Use the `currency` query to return information about the store's currency configuration. + +## Syntax + +`{currency {Currency}}` + +## Example usage + +The following query returns currency information for an instance of Magento that is configured for multiple currencies, USD and EUR. The default (base) currency for the store is US Dollar (USD). The response includes a list of currencies in the `available_currency_codes` attribute as well as a set of exchange rates. + +**Request:** + +```graphql +query { + currency { + base_currency_code + base_currency_symbol + default_display_currency_code + default_display_currency_symbol + available_currency_codes + exchange_rates { + currency_to + rate + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "currency": { + "base_currency_code": "USD", + "base_currency_symbol": "$", + "default_display_currency_code": "USD", + "default_display_currency_symbol": "$", + "available_currency_codes": [ + "EUR", + "USD" + ], + "exchange_rates": [ + { + "currency_to": "EUR", + "rate": 0.7067 + }, + { + "currency_to": "USD", + "rate": 1 + } + ] + } + } +} +``` + +## Output attributes + +The `currency` object provides the following attributes: + +Attribute | Data type | Description +--- | --- | --- +`available_currency_codes` | [String] | An array of three-letter currency codes accepted by the store, such as `USD` and `EUR` +`base_currency_code` | String | The base currency set for the store, such as USD +`base_currency_symbol` | String | The symbol for the specified base currency, such as $ +`default_display_currency_code` | String | Specifies if the currency code is set as the store's default +`default_display_currency_symbol` | String | Specifies if the currency symbol is set as the store's default +`exchange_rates` | [[ExchangeRate]](#exchangeRateAttributes) | An array of exchange rates specified in the store + +## Exchange rate attributes {#exchangeRateAttributes} + +The `ExchangeRate` object provides the following attributes: + +Attribute | Data type | Description +--- | --- | --- +`currency_to` | String | Specifies the store's default currency to exchange to +`rate` | Float | The exchange rate for the store's default currency + +## Related topics + +* [countries query]({{page.baseurl}}/graphql/queries/directory-countries.html) +* [country query]({{page.baseurl}}/graphql/queries/directory-country.html) diff --git a/src/guides/v2.4/graphql/queries/dynamic-blocks.md b/src/guides/v2.4/graphql/queries/dynamic-blocks.md index 64ae600a89b..bf0c219d1c4 100644 --- a/src/guides/v2.4/graphql/queries/dynamic-blocks.md +++ b/src/guides/v2.4/graphql/queries/dynamic-blocks.md @@ -1,6 +1,8 @@ --- group: graphql title: dynamicBlocks query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/dynamic-blocks/ +status: migrated --- The `dynamicBlocks` query returns a list of dynamic blocks that have been placed in a Dynamic Blocks Rotator inline widget and meet the specified criteria. diff --git a/src/guides/v2.4/graphql/queries/get-hosted-pro-url.md b/src/guides/v2.4/graphql/queries/get-hosted-pro-url.md index f04f8d07374..4dd25f1eeab 100644 --- a/src/guides/v2.4/graphql/queries/get-hosted-pro-url.md +++ b/src/guides/v2.4/graphql/queries/get-hosted-pro-url.md @@ -1,6 +1,8 @@ --- group: graphql title: getHostedProUrl query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/checkout/queries/get-hosted-pro-url/ +status: migrated --- The `getHostedProUrl` query is required to complete a transaction when the [PayPal Website Payments Pro Hosted Solution payment method]({{page.baseurl}}/graphql/payment-methods/hosted-pro.html) is selected. The query retrieves a PayPal-generated URL that the PWA client connects to, enabling the customer to enter their PayPal credentials and complete the transaction. Run this query after you [set the payment method]({{ page.baseurl}}/graphql/mutations/set-payment-method.html) and [place the order]({{ page.baseurl}}/graphql/mutations/place-order.html). @@ -41,7 +43,7 @@ The `getHostedProUrl` query must contain the following attribute: Attribute | Data type | Description --- | --- | --- -`cart_id` | String! | The unique ID that identifies the customer’s cart +`cart_id` | String! | The unique ID that identifies the customer's cart ## Output attributes diff --git a/src/guides/v2.4/graphql/queries/get-payflow-link-token.md b/src/guides/v2.4/graphql/queries/get-payflow-link-token.md index 5c27a09300e..9dc4034b9d3 100644 --- a/src/guides/v2.4/graphql/queries/get-payflow-link-token.md +++ b/src/guides/v2.4/graphql/queries/get-payflow-link-token.md @@ -1,6 +1,8 @@ --- group: graphql title: getPayflowLinkToken query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/checkout/queries/get-payflow-link-token/ +status: migrated --- The `getPayflowLinkToken` query retrieves PayPal payment credentials for a PayPal Payflow transaction. You must run this query after you [set the payment method]({{ page.baseurl}}/graphql/mutations/set-payment-method.html) and [place the order]({{ page.baseurl}}/graphql/mutations/place-order.html). diff --git a/src/guides/v2.4/graphql/queries/gift-registry-email-search.md b/src/guides/v2.4/graphql/queries/gift-registry-email-search.md index cb6a1a5b716..925dc51d36f 100644 --- a/src/guides/v2.4/graphql/queries/gift-registry-email-search.md +++ b/src/guides/v2.4/graphql/queries/gift-registry-email-search.md @@ -1,7 +1,9 @@ --- group: graphql title: giftRegistryEmailSearch query -ee_only: true +ee_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/gift-registry/queries/email-search/ +status: migrated --- The `giftRegistryEmailSearch` query returns a list of gift registries that match the specified registrant email address. The query does not return registries based on owner email address. diff --git a/src/guides/v2.4/graphql/queries/gift-registry-id-search.md b/src/guides/v2.4/graphql/queries/gift-registry-id-search.md index 7c3732c8bb4..de10dabc7c4 100644 --- a/src/guides/v2.4/graphql/queries/gift-registry-id-search.md +++ b/src/guides/v2.4/graphql/queries/gift-registry-id-search.md @@ -1,7 +1,9 @@ --- group: graphql title: giftRegistryIdSearch query -ee_only: true +ee_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/gift-registry/queries/id-search/ +status: migrated --- The `giftRegistryIdSearch` query returns a list of gift registries that match the specified registry ID. The ID is included in the email Magento sends to invitees on behalf of the registrant. diff --git a/src/guides/v2.4/graphql/queries/gift-registry-type-search.md b/src/guides/v2.4/graphql/queries/gift-registry-type-search.md index bde323f9b55..e020b4d515b 100644 --- a/src/guides/v2.4/graphql/queries/gift-registry-type-search.md +++ b/src/guides/v2.4/graphql/queries/gift-registry-type-search.md @@ -1,7 +1,9 @@ --- group: graphql title: giftRegistryTypeSearch query -ee_only: true +ee_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/gift-registry/queries/type-search/ +status: migrated --- The `giftRegistryTypeSearch` query returns a list of gift registries that match the specified registrant name and, optionally, registry type ID. Use the [`giftRegistryTypes` query]({{page.baseurl}}/graphql/queries/gift-registry-types.html) to return list of registry type IDs. diff --git a/src/guides/v2.4/graphql/queries/gift-registry-types.md b/src/guides/v2.4/graphql/queries/gift-registry-types.md index 2ed0d882836..4a9ab32efff 100644 --- a/src/guides/v2.4/graphql/queries/gift-registry-types.md +++ b/src/guides/v2.4/graphql/queries/gift-registry-types.md @@ -4,6 +4,8 @@ title: giftRegistryTypes query ee_only: true contributor_name: Zilker Technology contributor_link: https://www.ztech.io/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/gift-registry/queries/types/ +status: migrated --- The `giftRegistryTypes` query returns a list of available gift registry types. diff --git a/src/guides/v2.4/graphql/queries/gift-registry.md b/src/guides/v2.4/graphql/queries/gift-registry.md index 96109278b78..a072340655c 100644 --- a/src/guides/v2.4/graphql/queries/gift-registry.md +++ b/src/guides/v2.4/graphql/queries/gift-registry.md @@ -3,6 +3,8 @@ group: graphql title: giftRegistry query ee_only: true contributor_name: EY +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/gift-registry/queries/gift-registry/ +status: migrated --- The `giftRegistry` query retrieves details about the specified gift registry. Use the [`customer` query]({{page.baseurl}}/graphql/queries/customer.html) to return a list of valid `uid` values. diff --git a/src/guides/v2.4/graphql/queries/giftcard-account.md b/src/guides/v2.4/graphql/queries/giftcard-account.md deleted file mode 120000 index 0e2db624430..00000000000 --- a/src/guides/v2.4/graphql/queries/giftcard-account.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/queries/giftcard-account.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/giftcard-account.md b/src/guides/v2.4/graphql/queries/giftcard-account.md new file mode 100644 index 00000000000..7ade4057e8a --- /dev/null +++ b/src/guides/v2.4/graphql/queries/giftcard-account.md @@ -0,0 +1,80 @@ +--- +group: graphql +title: giftCardAccount query +ee_only: True +redirect from: + - /guides/v2.3/graphql/reference/quote-giftcard-account.html +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/customer/queries/giftcard-account/ +status: migrated +--- + +The `giftCardAccount` query returns information for a specific gift card. + +## Syntax + + `giftCardAccount(code: String!): GiftCardAccount` + +## Example usage + +The following example returns information about the `01PNC9L76H4H` gift card code. + +**Request:** + +```graphql +query { + giftCardAccount(input: {gift_card_code: "01PNC9L76H4H"}){ + code + balance { + currency + value + } + expiration_date + } +} +``` + +**Response:** + +```json +{ + "data": { + "giftCardAccount": { + "code": "01PNC9L76H4H", + "balance": { + "currency": "USD", + "value": 25 + }, + "expiration_date": null + } + } +} +``` + +## Input attributes + +The `giftCardAccount` query requires the `gift_card_code`. + +### GiftCardAccount object {#GiftCardAccount} + +The `GiftCardAccount` object must contain the following attribute: + +Attribute | Data Type | Description +--- | --- | --- +`gift_card_code` | String! | The gift card code + +## Output attributes + +The `GiftCardAccount` object returns the following attributes: + +Attribute | Data Type | Description +--- | --- | --- +`balance` | Money | Returns the currency and remaining balance of the gift card +`code` | String | Returns the gift card code +`expiration_date` | String | Returns the date when the gift card expires, if any + +## Errors + +Error | Description +--- | --- +`Gift card not found` | The specified `gift_card_code` value does not exist in the `giftcardaccount` table, or the full amount has already been redeemed. +`Field GiftCardAccountInput.gift_card_code of required type String! was not provided` | The value specified in the `GiftCardAccountInput.gift_card_code` argument is empty. diff --git a/src/guides/v2.4/graphql/queries/index.md b/src/guides/v2.4/graphql/queries/index.md index 3091dbd39f2..d23ea8f6e1d 100644 --- a/src/guides/v2.4/graphql/queries/index.md +++ b/src/guides/v2.4/graphql/queries/index.md @@ -4,6 +4,8 @@ title: Using queries redirect_from: - /guides/v2.3/graphql/search-pagination.html - /guides/v2.3/graphql/queries.html +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/usage/ +status: migrated --- A GraphQL query retrieves data from the Magento server in a similar manner as a REST GET call. The current set of Magento GraphQL queries allow a mobile app or browser to render a wide variety of information, including the following: diff --git a/src/guides/v2.4/graphql/queries/is-company-admin-email-available.md b/src/guides/v2.4/graphql/queries/is-company-admin-email-available.md index 040ff3fdc17..76e91c40633 100644 --- a/src/guides/v2.4/graphql/queries/is-company-admin-email-available.md +++ b/src/guides/v2.4/graphql/queries/is-company-admin-email-available.md @@ -2,6 +2,8 @@ group: graphql title: isCompanyAdminEmailAvailable query b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/company/queries/is-company-admin-email-available/ +status: migrated --- The `isCompanyAdminEmailAvailable` query checks whether the specified email can be used to create a company administrator account. If the email matches an existing customer or another company administrator account, the query returns a `false` value. A value of `true` indicates the email address can be used to create a company administrator account. diff --git a/src/guides/v2.4/graphql/queries/is-company-email-available.md b/src/guides/v2.4/graphql/queries/is-company-email-available.md index c687083e8ee..35a70cb5761 100644 --- a/src/guides/v2.4/graphql/queries/is-company-email-available.md +++ b/src/guides/v2.4/graphql/queries/is-company-email-available.md @@ -2,6 +2,8 @@ group: graphql title: isCompanyEmailAvailable query b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/company/queries/is-company-email-available/ +status: migrated --- The `isCompanyEmailAvailable` query checks whether the specified email is valid for company registration. The specified email can be the same as an existing customer or company administrator. If the email matches an existing company email, the query returns a `false` value. diff --git a/src/guides/v2.4/graphql/queries/is-company-role-name-available.md b/src/guides/v2.4/graphql/queries/is-company-role-name-available.md index 3b531fb283e..596fe95e7a4 100644 --- a/src/guides/v2.4/graphql/queries/is-company-role-name-available.md +++ b/src/guides/v2.4/graphql/queries/is-company-role-name-available.md @@ -4,6 +4,8 @@ title: isCompanyRoleNameAvailable query contributor_name: Atwix contributor_link: https://www.atwix.com/ b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/company/queries/is-company-role-name-available/ +status: migrated --- The `isCompanyRoleNameAvailable` query checks whether a company role name is valid for creating into a company. diff --git a/src/guides/v2.4/graphql/queries/is-company-user-email-available.md b/src/guides/v2.4/graphql/queries/is-company-user-email-available.md index 2366bdfd987..2324973379f 100644 --- a/src/guides/v2.4/graphql/queries/is-company-user-email-available.md +++ b/src/guides/v2.4/graphql/queries/is-company-user-email-available.md @@ -2,6 +2,8 @@ group: graphql title: isCompanyUserEmailAvailable query b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/company/queries/is-company-user-email-available/ +status: migrated --- The `isCompanyUserEmailAvailable` query checks whether an email is valid for registering a company user. The query returns a `false` value if the specified email matches the email of an existing customer or a company administrator. diff --git a/src/guides/v2.4/graphql/queries/is-email-available.md b/src/guides/v2.4/graphql/queries/is-email-available.md deleted file mode 120000 index c223077f5b6..00000000000 --- a/src/guides/v2.4/graphql/queries/is-email-available.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/queries/is-email-available.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/is-email-available.md b/src/guides/v2.4/graphql/queries/is-email-available.md new file mode 100644 index 00000000000..efcf8c09f2d --- /dev/null +++ b/src/guides/v2.4/graphql/queries/is-email-available.md @@ -0,0 +1,61 @@ +--- +group: graphql +title: isEmailAvailable query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/company/queries/is-company-email-available/ +status: migrated +--- + +The `isEmailAvailable` query checks whether the specified email has already been used to create a customer account. A value of `true` indicates the email address is available, and the customer can use the email address to create an account. + +## Syntax + +`{isEmailAvailable (email): {IsEmailAvailableOutput}}` + +## Example usage + +The following example checks whether the email address `customer@example.com` is available to create a customer account. + +**Request:** + +```graphql +{ + isEmailAvailable(email: "customer@example.com") { + is_email_available + } +} +``` + +**Response:** + +```json +{ + "data": { + "isEmailAvailable": { + "is_email_available": true + } + } +} +``` + +## Input attribute + +Attribute | Data Type | Description +--- | --- | --- +`email` | String! | The email address to check + +## Output attribute + +Attribute | Data Type | Description +--- | --- | --- +`is_email_available` | Boolean | A value of `true` indicates the email address is available, and the customer can use the email address to create an account + +## Related topics + +[customer query]({{page.baseurl}}/graphql/queries/customer.html) + +## Errors + +Error | Description +--- | --- +`Email is invalid` | The given email-id is not in a proper format. +`Field isEmailAvailable.email of required type String! was not provided` | The value specified in the `isEmailAvailable.email` argument is empty. diff --git a/src/guides/v2.4/graphql/queries/negotiable-quote.md b/src/guides/v2.4/graphql/queries/negotiable-quote.md index 0844d146ea5..a8735f3c98b 100644 --- a/src/guides/v2.4/graphql/queries/negotiable-quote.md +++ b/src/guides/v2.4/graphql/queries/negotiable-quote.md @@ -1,7 +1,9 @@ --- group: graphql title: negotiableQuote query -b2b_only: true +b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/negotiable-quote/queries/quote/ +status: migrated --- The `negotiableQuote` query retrieves details about the specified negotiable quote. Use the [`negotiableQuotes` query]({{page.baseurl}}/graphql/queries/negotiable-quotes.html) to return a list of valid `uid` values. diff --git a/src/guides/v2.4/graphql/queries/negotiable-quotes.md b/src/guides/v2.4/graphql/queries/negotiable-quotes.md index 835dd961c57..495e01b46a1 100644 --- a/src/guides/v2.4/graphql/queries/negotiable-quotes.md +++ b/src/guides/v2.4/graphql/queries/negotiable-quotes.md @@ -1,7 +1,9 @@ --- group: graphql title: negotiableQuotes query -b2b_only: true +b2b_only: true +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/negotiable-quote/queries/quotes/ +status: migrated --- The `negotiableQuotes` query returns a list of negotiable quotes that can be viewed by the logged-in customer, including quotes created by the customer or by subordinates in the company hierarchy. diff --git a/src/guides/v2.4/graphql/queries/pickup-locations.md b/src/guides/v2.4/graphql/queries/pickup-locations.md index b6c211a800e..8c693fb5711 100644 --- a/src/guides/v2.4/graphql/queries/pickup-locations.md +++ b/src/guides/v2.4/graphql/queries/pickup-locations.md @@ -3,6 +3,8 @@ group: graphql title: pickupLocations query contributor_name: Oleksandr Kravchuk contributor_link: https://github.com/swnsma +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/cart/queries/pickup-locations/ +status: migrated --- Use the `pickupLocations` query to retrieve a list of available pickup locations. diff --git a/src/guides/v2.4/graphql/queries/product-review-ratings-metadata.md b/src/guides/v2.4/graphql/queries/product-review-ratings-metadata.md index b96031381af..f73cc568c0d 100644 --- a/src/guides/v2.4/graphql/queries/product-review-ratings-metadata.md +++ b/src/guides/v2.4/graphql/queries/product-review-ratings-metadata.md @@ -1,6 +1,8 @@ --- group: graphql title: productReviewRatingsMetadata query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/products/queries/product-review-ratings-metadata/ +status: migrated --- The `productReviewRatingsMetadata` query returns the active ratings attributes and the values each rating can have. In Luma, these values are one star through five stars. diff --git a/src/guides/v2.4/graphql/queries/products.md b/src/guides/v2.4/graphql/queries/products.md index e8c7a80bb96..069f4e147de 100644 --- a/src/guides/v2.4/graphql/queries/products.md +++ b/src/guides/v2.4/graphql/queries/products.md @@ -1,6 +1,8 @@ --- group: graphql title: products query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/products/queries/products/ +status: migrated --- The `products` query allows you to search for catalog items. @@ -80,11 +82,11 @@ Attribute | Data type | Description #### FilterMatchTypeInput attributes -Use the `FilterMatchTypeInput` object to construct a filter that returns products that exactly match a string or contain the specified pattern. +Use the `FilterMatchTypeInput` object to construct a filter that returns products that partially fuzzy match a string or contain the specified pattern. Attribute | Data type | Description --- | --- | --- -`match` | String | Use this attribute to exactly match the specified string. For example, to filter on a specific SKU, specify a value such as `24-MB01` +`match` | String | Use this attribute to partially fuzzy match the specified string. For example, to filter on a specific SKU, specify a value such as `24-MB01` You must specify a `FilterMatchTypeInput` object to filter on a custom product attribute of the following types: diff --git a/src/guides/v2.4/graphql/queries/recaptcha-v3-config.md b/src/guides/v2.4/graphql/queries/recaptcha-v3-config.md index d197b3fa770..46931a704df 100644 --- a/src/guides/v2.4/graphql/queries/recaptcha-v3-config.md +++ b/src/guides/v2.4/graphql/queries/recaptcha-v3-config.md @@ -2,6 +2,8 @@ group: graphql title: recaptchaV3Config query pwa_only: True +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/recaptcha-v3-config/ +status: migrated --- The `recaptchaV3Config` query returns information about the reCaptcha V3 configuration. diff --git a/src/guides/v2.4/graphql/queries/route.md b/src/guides/v2.4/graphql/queries/route.md index de46f0cf9e5..25d98bc69bf 100644 --- a/src/guides/v2.4/graphql/queries/route.md +++ b/src/guides/v2.4/graphql/queries/route.md @@ -1,6 +1,8 @@ --- group: graphql title: routes query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/products/queries/route/ +status: migrated --- A merchant can reconfigure (rewrite) the URL to any product, category, or CMS page. When the rewrite goes into effect, any links that point to the previous URL are redirected to the new address. diff --git a/src/guides/v2.4/graphql/queries/store-config.md b/src/guides/v2.4/graphql/queries/store-config.md index 740e0166b62..29919a19cda 100644 --- a/src/guides/v2.4/graphql/queries/store-config.md +++ b/src/guides/v2.4/graphql/queries/store-config.md @@ -1,6 +1,8 @@ --- group: graphql title: storeConfig query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/store/queries/store-config/ +status: migrated --- The `storeConfig` query defines information about a store's configuration. You can query a non-default store by [changing the header]({{ page.baseurl }}/graphql/send-request.html) in your GraphQL request. diff --git a/src/guides/v2.4/graphql/queries/url-resolver.md b/src/guides/v2.4/graphql/queries/url-resolver.md index 3022f670900..c0b97764102 100644 --- a/src/guides/v2.4/graphql/queries/url-resolver.md +++ b/src/guides/v2.4/graphql/queries/url-resolver.md @@ -1,6 +1,8 @@ --- group: graphql title: urlResolver query +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/products/queries/url-resolver/ +status: migrated --- {:.bs-callout-warning} diff --git a/src/guides/v2.4/graphql/queries/wishlist.md b/src/guides/v2.4/graphql/queries/wishlist.md deleted file mode 120000 index 43f9b091f29..00000000000 --- a/src/guides/v2.4/graphql/queries/wishlist.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/graphql/queries/wishlist.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/queries/wishlist.md b/src/guides/v2.4/graphql/queries/wishlist.md new file mode 100644 index 00000000000..84b69c472c6 --- /dev/null +++ b/src/guides/v2.4/graphql/queries/wishlist.md @@ -0,0 +1,101 @@ +--- +group: graphql +title: wishlist query +redirect_from: + - /guides/v2.3/graphql/reference/wishlist.html +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/wishlist/queries/wishlist/ +status: migrated +--- + +{:.bs-callout-warning} +The `wishlist` query has been deprecated. Wish list information is now provided by the [customer]({{page.baseurl}}/graphql/queries/customer.html) query. + +Use the `wishlist` query to retrieve information about a customer's wish list. [Authorization tokens]({{page.baseurl}}/graphql/authorization-tokens.html) describes how to supply an authorization token for a specific customer. + +## Syntax + +`wishlist: WishlistOutput` + +## Example usage + +The following query returns the customer's wish list: + +**Request:** + +```graphql +{ + wishlist { + items_count + name + sharing_code + updated_at + items { + id + qty + description + added_at + product { + sku + name + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "wishlist": { + "items_count": 2, + "name": "Wish List", + "sharing_code": "KAXDj0HlM7Y2s58mllsVhSJvRj4fWIZj", + "updated_at": "2019-02-13 22:47:45", + "items": [ + { + "id": 1, + "qty": 1, + "description": "My first priority", + "added_at": "2019-02-20 14:38:02", + "product": { + "sku": "MJ09", + "name": "Taurus Elements Shell" + } + }, + { + "id": 2, + "qty": 1, + "description": null, + "added_at": "2019-02-20 14:38:28", + "product": { + "sku": "MSH11", + "name": "Arcadio Gym Short" + } + } + ] + } + } +} +``` + +## Output attributes + +Attribute | Data type | Description +--- | --- | --- +`items` | [WishlistItem](#wishlistitem) | An array of items in the customer's wish list +`items_count` | Int | The number of items in the wish list +`name` | String | When multiple wish lists are enabled, the name the customer assigns to the wish list +`sharing_code` | String | An encrypted code that Magento uses to link to the wish list +`updated_at` | String | The time of the last modification to the wish list + +### Wish list item attributes {#wishlistitem} + +Attribute | Data type | Description +--- | --- | --- +`added_at` | String | The time when the customer added the item to the wish list +`description` | String | The customer's comment about this item +`id` | Int | The wish list item ID +`product` | [ProductInterface]({{ page.baseurl }}/graphql/interfaces/product-interface.html) | The ProductInterface contains attributes that are common to all types of products. Note that descriptions may not be available for custom and EAV attributes +`qty` | Float | The quantity of this wish list item diff --git a/src/guides/v2.4/graphql/release-notes.md b/src/guides/v2.4/graphql/release-notes.md index cc4bd99a796..9b1bfe1c7bb 100644 --- a/src/guides/v2.4/graphql/release-notes.md +++ b/src/guides/v2.4/graphql/release-notes.md @@ -1,6 +1,8 @@ --- group: graphql title: Release Notes +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/release-notes/ +status: migrated --- {:.bs-callout-info} diff --git a/src/guides/v2.4/graphql/security-configuration.md b/src/guides/v2.4/graphql/security-configuration.md index 32546df3ba5..6987f7162a4 100644 --- a/src/guides/v2.4/graphql/security-configuration.md +++ b/src/guides/v2.4/graphql/security-configuration.md @@ -1,6 +1,8 @@ --- group: graphql title: GraphQL security configuration +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/usage/security-configuration/ +status: migrated --- The Framework and `GraphQl` module `di.xml` files define several security-related configuration values that you should review to ensure they align with types of mutations and queries that you run. diff --git a/src/guides/v2.4/graphql/send-request.md b/src/guides/v2.4/graphql/send-request.md index 828f2525ad6..26027992f5c 100644 --- a/src/guides/v2.4/graphql/send-request.md +++ b/src/guides/v2.4/graphql/send-request.md @@ -1,6 +1,8 @@ --- group: graphql title: GraphQL requests +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/usage/headers/ +status: migrated --- Magento GraphQL supports the HTTP GET and POST methods. You can send a query as a GET or POST request. Mutations must be POST requests. You can optionally send a GET query request in a URL. In these requests, you must specify `query` as the query string. You might need to encode the query, as shown below: diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-add-product-to-cart.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-add-product-to-cart.md deleted file mode 120000 index ddfa6d87854..00000000000 --- a/src/guides/v2.4/graphql/tutorials/checkout/checkout-add-product-to-cart.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/graphql/tutorials/checkout/checkout-add-product-to-cart.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-add-product-to-cart.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-add-product-to-cart.md new file mode 100644 index 00000000000..35088b77ec4 --- /dev/null +++ b/src/guides/v2.4/graphql/tutorials/checkout/checkout-add-product-to-cart.md @@ -0,0 +1,169 @@ +--- +layout: tutorial +group: graphql +title: Step 3. Add products to the cart +subtitle: GraphQL checkout tutorial +level3_subgroup: graphql-checkout +return_to: + title: GraphQL Overview + url: graphql/index.html +menu_order: 30 +functional_areas: + - Integration +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/tutorials/checkout/add-product-to-cart/ +status: migrated +--- + +GraphQL supports all product types, but this tutorial only demonstrates how to add a simple product and a virtual product to the shopping cart. You can find more details and examples in the following topics: + +- [Bundle products]({{ page.baseurl }}/graphql/mutations/add-bundle-products.html) +- [Configurable products]({{ page.baseurl }}/graphql/mutations/add-configurable-products.html) +- [Downloadable products]({{ page.baseurl }}/graphql/mutations/add-downloadable-products.html) +- [Simple and grouped products]({{ page.baseurl }}/graphql/mutations/add-simple-products.html) +- [Virtual products]({{ page.baseurl }}/graphql/mutations/add-virtual-products.html) + +[Product interface implementations]({{ page.baseurl }}/graphql/interfaces/product-interface-implementations.html) also describes how to create queries that access product interfaces. + +Use the `updateCartItems` mutation to update shopping cart items and `removeItemFromCart` to remove a product from the shopping cart. + +{:.bs-callout-info} +If you add a product to the shopping cart as a registered customer, be sure to send the customer's authorization token in the `Authorization` parameter of the header. See [Authorization tokens]({{page.baseurl}}/graphql/authorization-tokens.html) for more details. + +## Add a simple product into the shopping cart + +The following mutation adds a simple product into the shopping cart. + +Replace `{ CART_ID }` with the unique shopping cart ID from [Step 2. Create empty cart]({{ page.baseurl }}/graphql/tutorials/checkout/checkout-add-product-to-cart.html). + +In this example, we will add the Aim Analog Watch (SKU 24-MG04) from the default Luma catalog to the cart. The SKU identifies the product to be added. + +**Request:** + +```graphql +mutation { + addSimpleProductsToCart( + input: { + cart_id: "{ CART_ID }" + cart_items: [ + { + data: { + quantity: 1 + sku: "24-MG04" + } + } + ] + } + ) { + cart { + items { + id + product { + sku + stock_status + } + quantity + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "addSimpleProductsToCart": { + "cart": { + "items": [ + { + "id": "5", + "product": { + "sku": "24-MG04", + "stock_status": "IN_STOCK" + }, + "quantity": 1 + } + ] + } + } + } +} +``` + +## Add a virtual product into the shopping cart + +The following mutation adds a virtual product into the shopping cart. +In this example, we add the Beginner's Yoga video downloadable product (SKU 240-LV04). + +**Request:** + +```graphql +mutation { + addVirtualProductsToCart( + input: { + cart_id: "{ CART_ID }" + cart_items: [ + { + data: { + quantity: 1 + sku: "240-LV04" + } + } + ] + } + ) { + cart { + items { + id + product { + sku + stock_status + } + quantity + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "addVirtualProductsToCart": { + "cart": { + "items": [ + { + "id": "5", + "product": { + "sku": "24-MG04", + "stock_status": "IN_STOCK" + }, + "quantity": 1 + }, + { + "id": "6", + "product": { + "sku": "240-LV04", + "stock_status": "IN_STOCK" + }, + "quantity": 1 + } + ] + } + } + } +} +``` + +The response lists all items currently in the cart, including the just-added video download. + +## Verify this step {#verify-step} + +1. Sign in as a customer to the website using the email `john.doe@example.com` and password `b1b2b3l@w+`. + +1. Go to the shopping cart. All the items you added are displayed. diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-billing-address.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-billing-address.md deleted file mode 120000 index 56078d8be81..00000000000 --- a/src/guides/v2.4/graphql/tutorials/checkout/checkout-billing-address.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/graphql/tutorials/checkout/checkout-billing-address.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-billing-address.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-billing-address.md new file mode 100644 index 00000000000..cc1d140504f --- /dev/null +++ b/src/guides/v2.4/graphql/tutorials/checkout/checkout-billing-address.md @@ -0,0 +1,116 @@ +--- +layout: tutorial +group: graphql +title: Step 5. Set billing address +subtitle: GraphQL checkout tutorial +level3_subgroup: graphql-checkout +return_to: + title: GraphQL Overview + url: graphql/index.html +menu_order: 50 +functional_areas: + - Integration +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/tutorials/checkout/set-billing-address/ +status: migrated +--- + +{:.bs-callout-tip} +You must always set the billing address to place an order. + +Use the [setBillingAddressOnCart]({{ page.baseurl }}/graphql/mutations/set-billing-address.html) mutation to set a billing address. + +## Add a billing address to the cart + +Similar to the shipping address, add a billing address to the cart. `{ CART_ID }` is the unique shopping cart ID from [Step 2. Create empty cart]({{ page.baseurl }}/graphql/tutorials/checkout/checkout-add-product-to-cart.html). The street address is also different, so we can see that different addresses are being created. + +Send the customer's authorization token in the `Authorization` parameter of the header. See [Authorization tokens]({{page.baseurl}}/graphql/authorization-tokens.html) for more information. + +**Request:** + +```graphql +mutation { + setBillingAddressOnCart( + input: { + cart_id: "{ CART_ID }" + billing_address: { + address: { + firstname: "John" + lastname: "Doe" + company: "Company Name" + street: ["64 Strawberry Dr", "Beverly Hills"] + city: "Los Angeles" + region: "CA" + region_id: 12 + postcode: "90210" + country_code: "US" + telephone: "123-456-0000" + save_in_address_book: true + } + } + } + ) { + cart { + billing_address { + firstname + lastname + company + street + city + region{ + code + label + } + postcode + telephone + country { + code + label + } + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "setBillingAddressOnCart": { + "cart": { + "billing_address": { + "firstname": "John", + "lastname": "Doe", + "company": "Company Name", + "street": [ + "64 Strawberry Dr", + "Beverly Hills" + ], + "city": "Los Angeles", + "region": { + "code": "CA", + "label": "California" + }, + "postcode": "90210", + "telephone": "123-456-0000", + "country": { + "code": "US", + "label": "US" + } + } + } + } + } +} +``` + +## Verify this step {#verify-step} + +1. Sign in as a customer to the website using the email `john.doe@example.com` and password `b1b2b3l@w+`. + +1. Go to Checkout. + +1. Go to the Review & Payments step. The Billing Address form is populated with the address details you entered. diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-coupon.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-coupon.md deleted file mode 120000 index 7a8fd221659..00000000000 --- a/src/guides/v2.4/graphql/tutorials/checkout/checkout-coupon.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/graphql/tutorials/checkout/checkout-coupon.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-coupon.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-coupon.md new file mode 100644 index 00000000000..f8de3b09f40 --- /dev/null +++ b/src/guides/v2.4/graphql/tutorials/checkout/checkout-coupon.md @@ -0,0 +1,135 @@ +--- +layout: tutorial +group: graphql +title: Step 7. Apply a coupon +subtitle: GraphQL checkout tutorial +level3_subgroup: graphql-checkout +return_to: + title: GraphQL Overview + url: graphql/index.html +menu_order: 70 +functional_areas: + - Integration +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/tutorials/checkout/apply-coupon/ +status: migrated +--- + +Use [applyCouponToCart]({{ page.baseurl }}/graphql/mutations/apply-coupon.html) to apply a discount coupon to the specified `cart_id`. + +`{ CART_ID }` is the unique shopping cart ID from [Step 2. Create empty cart]({{ page.baseurl }}/graphql/tutorials/checkout/checkout-add-product-to-cart.html). + +`{ COUPON_CODE }` is an existing Magento coupon code. It cannot be generated with GraphQL. + +## Create a coupon + +Coupons must be generated from the Admin. + +Creating a coupon is described in [Coupon Codes]({{ site.user_guide_url }}/marketing/price-rules-cart-coupon.html). +For the purpose of this tutorial, create a Cart Price Rule with: + +For **Rule Information**: + +- **Rule Name**: Watch Coupon +- **Active**: Yes +- **Websites**: Main Website +- **Customer Groups**: Select all of them +- **Coupon**: Specific Coupon +- **Coupon Code**: Watch20 +- **Uses per Coupon**: 5 +- **Uses per Customer**: 5 + +For **Actions** + +- **Apply**: Percent of product price discount +- **Discount Amount**: 20 + +Save this rule. +The **Coupon Code** value is the name of the coupon the end user enters. +To verify the coupon works, create an order with a product using guest checkout. +When checking out, enter `Watch20` in the Apply Discount Code field and press the Apply Discount button. +The discount should be applied in the cart. + +When the coupon is set up, we can apply it via GraphQL. Replace the `{ CART_ID }` with your generated ID and replace the `{ COUPON_CODE }` with `Watch20` below. + +For logged-in customers, send the customer's authorization token in the `Authorization` parameter of the header. See [Authorization tokens]({{page.baseurl}}/graphql/authorization-tokens.html) for more information. + +**Request:** + +```graphql +mutation { + applyCouponToCart( + input: { + cart_id: "{ CART_ID }" + coupon_code: "{ COUPON_CODE }" + } + ) { + cart { + applied_coupons { + code + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "applyCouponToCart": { + "cart": { + "applied_coupons": [ + { + "code": "Watch20" + } + ] + } + } + } +} +``` + +## Verify this step {#verify-step} + +1. Sign in as a customer to the website using the email `john.doe@example.com` and password `b1b2b3l@w+`. + +1. Go to Checkout. + +1. The discount is displayed in the Order Summary block. + +## Remove a coupon + +Use [removeCouponFromCart]({{ page.baseurl }}/graphql/mutations/remove-coupon.html) to remove a discount coupon from the shopping cart. + +**Request:** + +```graphql +mutation { + removeCouponFromCart(input: { cart_id: "{ CART_ID }" }) { + cart { + applied_coupons { + code + } + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "removeCouponFromCart": { + "cart": { + "applied_coupons": { + "applied_coupon": null + } + } + } + } +} +``` diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-customer.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-customer.md deleted file mode 120000 index 511b23e4bd1..00000000000 --- a/src/guides/v2.4/graphql/tutorials/checkout/checkout-customer.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/graphql/tutorials/checkout/checkout-customer.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-customer.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-customer.md new file mode 100644 index 00000000000..7c9d8cdba0e --- /dev/null +++ b/src/guides/v2.4/graphql/tutorials/checkout/checkout-customer.md @@ -0,0 +1,102 @@ +--- +layout: tutorial +group: graphql +title: Step 1. Create a customer +subtitle: GraphQL checkout tutorial +level3_subgroup: graphql-checkout +return_to: + title: GraphQL Overview + url: graphql/index.html +menu_order: 10 +functional_areas: + - Integration +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/tutorials/checkout/create-customer/ +status: migrated +--- + +This step creates a customer account and generates an authentication token for that customer. You can skip this step if you want to perform this tutorial as a guest user. + +## Create a customer + +Use the `createCustomer` mutation to register the new customer account in the store. + +**Request:** + +```graphql +mutation { + createCustomer( + input: { + firstname: "John" + lastname: "Doe" + email: "john.doe@example.com" + password: "b1b2b3l@w+" + is_subscribed: true + } + ) { + customer { + firstname + lastname + email + is_subscribed + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "createCustomer": { + "customer": { + "firstname": "John", + "lastname": "Doe", + "email": "john.doe@example.com", + "is_subscribed": true + } + } + } +} +``` + +The [`createCustomer`]({{ page.baseurl }}/graphql/mutations/create-customer.html) mutation describes additional parameters. + +## Generate an authentication token for the customer + +To place an order as a customer, you must obtain an authorization token by calling the `generateCustomerToken` mutation. You must include the customer's email and password as input. + +**Request:** + +```graphql +mutation { + generateCustomerToken(email: "john.doe@example.com", password: "b1b2b3l@w+") { + token + } +} +``` + +**Response:** + +```json +{ + "data": { + "generateCustomerToken": { + "token": "zuo7zor5jfldft2nmu2gtylnm8ui7e8t" #gitleaks:allow + } + } +} +``` + +## Specify an Authorization header + +To send requests on behalf of the customer, you must supply the generated token as a header in your GraphQL browser. +The name of the header is `Authorization` and the value is `Bearer `. + +[Authorization tokens]({{page.baseurl}}/graphql/authorization-tokens.html) describes the mutation further. + +## Verify this step {#verify-step} + +Sign in as a customer to the website using the email `john.doe@example.com` and password `b1b2b3l@w+`. You should be successfully logged in. diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-payment-method.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-payment-method.md deleted file mode 120000 index b5dd0f3b50e..00000000000 --- a/src/guides/v2.4/graphql/tutorials/checkout/checkout-payment-method.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/graphql/tutorials/checkout/checkout-payment-method.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-payment-method.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-payment-method.md new file mode 100644 index 00000000000..31c4ae3fab6 --- /dev/null +++ b/src/guides/v2.4/graphql/tutorials/checkout/checkout-payment-method.md @@ -0,0 +1,107 @@ +--- +layout: tutorial +group: graphql +title: Step 9. Set the payment method +subtitle: GraphQL checkout tutorial +level3_subgroup: graphql-checkout +return_to: + title: GraphQL Overview + url: graphql/index.html +menu_order: 90 +functional_areas: + - Integration +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/tutorials/checkout/set-payment-method/ +status: migrated +--- + +{:.bs-callout-tip} +You must always set a payment method for an order. + +Use the following `cart` query to determine which payment methods which are available for your order. + +`{ CART_ID }` is the unique shopping cart ID from [Step 2. Create empty cart]({{ page.baseurl }}/graphql/tutorials/checkout/checkout-add-product-to-cart.html). + +For logged-in customers, send the customer's authorization token in the `Authorization` parameter of the header. See [Authorization tokens]({{page.baseurl}}/graphql/authorization-tokens.html) for more information. + +**Request:** + +```graphql +query { + cart(cart_id: "{ CART_ID }") { + available_payment_methods { + code + title + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "cart": { + "available_payment_methods": [ + { + "code": "checkmo", + "title": "Check / Money order" + } + ] + } + } +} +``` + +### Set payment method on cart {#setPaymentMethodOnCart} + +Use the `setPaymentMethodOnCart` mutation to set the payment method for your order. The value `checkmo` ("Check / Money order" payment method code) was returned in the query. + +Send the customer's authorization token in the `Authorization` parameter of the header. See [Authorization tokens]({{page.baseurl}}/graphql/authorization-tokens.html) for more information. + +**Request:** + +```graphql +mutation { + setPaymentMethodOnCart(input: { + cart_id: "{ CART_ID }" + payment_method: { + code: "checkmo" + } + }) { + cart { + selected_payment_method { + code + } + } + } +} +``` + +**Response:** + +If the operation is successful, the response contains the code of the selected payment method. + +```json +{ + "data": { + "setPaymentMethodOnCart": { + "cart": { + "selected_payment_method": { + "code": "checkmo" + } + } + } + } +} +``` + +## Verify this step {#verify-step} + +1. Sign in as a customer to the website using the email `john.doe@example.com` and password `b1b2b3l@w+`. + +1. Go to Checkout. + +1. The selected payment method is displayed in the Payment Method section on the Review & Payments step. diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-place-order.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-place-order.md deleted file mode 120000 index 9eaf3d88d5b..00000000000 --- a/src/guides/v2.4/graphql/tutorials/checkout/checkout-place-order.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/graphql/tutorials/checkout/checkout-place-order.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-place-order.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-place-order.md new file mode 100644 index 00000000000..5117a71c6f1 --- /dev/null +++ b/src/guides/v2.4/graphql/tutorials/checkout/checkout-place-order.md @@ -0,0 +1,55 @@ +--- +layout: tutorial +group: graphql +title: Step 10. Place the order +subtitle: GraphQL checkout tutorial +level3_subgroup: graphql-checkout +return_to: + title: GraphQL Overview + url: graphql/index.html +menu_order: 100 +functional_areas: + - Integration +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/tutorials/checkout/place-order/ +status: migrated +--- + +The `placeOrder` mutation places an order. + +`{ CART_ID }` is the unique shopping cart ID from [Step 2. Create empty cart]({{ page.baseurl }}/graphql/tutorials/checkout/checkout-add-product-to-cart.html). + +Send the customer's authorization token in the `Authorization` parameter of the header. See [Authorization tokens]({{page.baseurl}}/graphql/authorization-tokens.html) for more information. + +**Request:** + +```graphql +mutation { + placeOrder(input: {cart_id: "{ CART_ID }"}) { + order { + order_number + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "placeOrder": { + "order": { + "order_number": "000000001" + } + } + } +} +``` + +## Verify this step {#verify-step} + +1. Sign in as a customer to the website using the email `john.doe@example.com` and password `b1b2b3l@w+`. + +1. Go to **My Account** > **My Orders**. The order you created is displayed. The order is also displayed on the Orders grid (**Sales** > **Orders**) in the Admin. diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-quote-email.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-quote-email.md deleted file mode 120000 index 31a16a35c28..00000000000 --- a/src/guides/v2.4/graphql/tutorials/checkout/checkout-quote-email.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/graphql/tutorials/checkout/checkout-quote-email.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-quote-email.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-quote-email.md new file mode 100644 index 00000000000..3aa2acba4b9 --- /dev/null +++ b/src/guides/v2.4/graphql/tutorials/checkout/checkout-quote-email.md @@ -0,0 +1,57 @@ +--- +layout: tutorial +group: graphql +title: Step 8. Set email on the cart (guest customers only) +subtitle: GraphQL checkout tutorial +level3_subgroup: graphql-checkout +return_to: + title: GraphQL Overview + url: graphql/index.html +menu_order: 80 +functional_areas: + - Integration +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/tutorials/checkout/set-email-address/ +status: migrated +--- + +{:.bs-callout-tip} +Skip this step if you placed the order as a registered customer. + +If you place an order as a guest user, you must set a quote email address. Use the `setGuestEmailOnCart` mutation query for that. + +`{ CART_ID }` is the unique shopping cart ID from [Step 2. Create empty cart]({{ page.baseurl }}/graphql/tutorials/checkout/checkout-add-product-to-cart.html). + +**Request:** + +```graphql +mutation { + setGuestEmailOnCart(input: { + cart_id: "{ CART_ID }" + email: "guest@example.com" + }) { + cart { + email + } + } +} +``` + +**Response:** + +```json +{ + "data": { + "setGuestEmailOnCart": { + "cart": { + "email": "guest@example.com" + } + } + } +} +``` + +## Verify this step {#verify-step} + +There are no additional verification steps. `quote`.`customer_email` is displayed for administrator on back-end side. diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-shipping-address.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-shipping-address.md deleted file mode 120000 index 82715c4f308..00000000000 --- a/src/guides/v2.4/graphql/tutorials/checkout/checkout-shipping-address.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/graphql/tutorials/checkout/checkout-shipping-address.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-shipping-address.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-shipping-address.md new file mode 100644 index 00000000000..4dbfe2f8b9d --- /dev/null +++ b/src/guides/v2.4/graphql/tutorials/checkout/checkout-shipping-address.md @@ -0,0 +1,145 @@ +--- +layout: tutorial +group: graphql +title: Step 4. Set the shipping address +subtitle: GraphQL checkout tutorial +level3_subgroup: graphql-checkout +return_to: + title: GraphQL Overview + url: graphql/index.html +menu_order: 40 +functional_areas: + - Integration +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/tutorials/checkout/set-shipping-address/ +status: migrated +--- + +Use the [setShippingAddressesOnCart]({{ page.baseurl }}/graphql/mutations/set-shipping-address.html) mutation to set a shipping address. + +## Add shipping address to the cart + +In this step, we use the `setShippingAddressesOnCart` mutation to add a shipping address to the cart. + +If using guest checkout, run the following example. + +If using a logged in customer, send the customer's authorization token in the `Authorization` parameter of the header. See [Authorization tokens]({{page.baseurl}}/graphql/authorization-tokens.html) for more information. + +**Request:** + +```graphql +mutation { + setShippingAddressesOnCart( + input: { + cart_id: "{ CART_ID }" + shipping_addresses: [ + { + address: { + firstname: "John" + lastname: "Doe" + company: "Company Name" + street: ["3320 N Crescent Dr", "Beverly Hills"] + city: "Los Angeles" + region: "CA" + region_id: 12 + postcode: "90210" + country_code: "US" + telephone: "123-456-0000" + save_in_address_book: false + } + } + ] + } + ) { + cart { + shipping_addresses { + firstname + lastname + company + street + city + region { + code + label + } + postcode + telephone + country { + code + label + } + available_shipping_methods{ + carrier_code + carrier_title + method_code + method_title + } + } + } + } +} +``` + +**Response:** + +`setShippingAddressesOnCart` returns the new address details. + +```json +{ + "data": { + "setShippingAddressesOnCart": { + "cart": { + "shipping_addresses": [ + { + "firstname": "John", + "lastname": "Doe", + "company": "Company Name", + "street": [ + "3320 N Crescent Dr", + "Beverly Hills" + ], + "city": "Los Angeles", + "region": { + "code": "CA", + "label": "California" + }, + "postcode": "90210", + "telephone": "123-456-0000", + "country": { + "code": "US", + "label": "US" + }, + "available_shipping_methods": [ + { + "carrier_code": "flatrate", + "carrier_title": "Flat Rate", + "method_code": "flatrate", + "method_title": "Fixed" + }, + { + "carrier_code": "tablerate", + "carrier_title": "Best Way", + "method_code": "bestway", + "method_title": "Table Rate" + } + ] + } + ] + } + } + } +} +``` + +`{ CART_ID }` is the unique shopping cart ID from [Step 2. Create empty cart]({{ page.baseurl }}/graphql/tutorials/checkout/checkout-add-product-to-cart.html). + +Note the `available_shipping_methods` in the response. We will use this information in a later step. + +## Verify this step {#verify-step} + +1. Sign in as a customer to the website using the email `john.doe@example.com` and password `b1b2b3l@w+`. + +1. Go to Checkout. + +1. On the Shipping step, the Shipping Address form contains the address details you entered. diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-shipping-method.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-shipping-method.md index 41a29eff096..aff6c334c1a 100644 --- a/src/guides/v2.4/graphql/tutorials/checkout/checkout-shipping-method.md +++ b/src/guides/v2.4/graphql/tutorials/checkout/checkout-shipping-method.md @@ -12,6 +12,8 @@ functional_areas: - Integration contributor_name: Atwix contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/tutorials/checkout/set-delivery-method/ +status: migrated --- The `setShippingMethodsOnCart` mutation defines the delivery methods for your order. It requires these input parameters: diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-shopping-cart.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-shopping-cart.md deleted file mode 120000 index 9842eb8c462..00000000000 --- a/src/guides/v2.4/graphql/tutorials/checkout/checkout-shopping-cart.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/graphql/tutorials/checkout/checkout-shopping-cart.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/tutorials/checkout/checkout-shopping-cart.md b/src/guides/v2.4/graphql/tutorials/checkout/checkout-shopping-cart.md new file mode 100644 index 00000000000..29dce682589 --- /dev/null +++ b/src/guides/v2.4/graphql/tutorials/checkout/checkout-shopping-cart.md @@ -0,0 +1,80 @@ +--- +layout: tutorial +group: graphql +title: Step 2. Create an empty cart +subtitle: GraphQL checkout tutorial +level3_subgroup: graphql-checkout +return_to: + title: GraphQL Overview + url: graphql/index.html +menu_order: 20 +functional_areas: + - Integration +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/tutorials/checkout/create-cart/ +status: migrated +--- +The procedure for creating a cart varies for logged-in customers and guests. + +The `customerCart` query returns the active cart for the logged-in customer. If the cart does not exist, the query creates one. You must specify the customer's authorization token in the headers. Otherwise, the query fails. ["Get customer authorization token"]({{ page.baseurl }}/graphql/authorization-tokens.html) describes these tokens. + +For guests, use the [`createEmptyCart`]({{page.baseurl}}/graphql/mutations/create-empty-cart.html) mutation to create an empty shopping cart and generate a cart ID for a guest user. If the guest later logs in as a customer, use the [`mergeCarts`]({{page.baseurl}}/graphql/mutations/merge-carts.html) mutation to transfer the contents of the guest cart into the customer's cart. + +## Create a customer cart + +The customer created in the previous step does not have an active cart. The following query creates an empty cart and returns the cart ID. You must specify the customer's authorization token in the headers of the call. + +**Request:** + +```graphql +{ + customerCart{ + id + } +} +``` + +**Response:** + +```json +{ + "data": { + "customerCart": { + "id": "pXVxnNg4PFcK1lD60O5evqF7f4SkiRR1" + } + } +} +``` + +In the subsequent tutorial steps, the unique shopping cart identifier `pXVxnNg4PFcK1lD60O5evqF7f4SkiRR1` will be listed as `{ CART_ID }`. +Copy the value of the id attribute. Use this value in subsequent steps wherever the { CART_ID } variable is specified. + +## Create a guest cart + +The following example creates an empty cart for a guest. Do not include an authorization token on any call made on behalf of a guest. + +**Request:** + +```graphql +mutation { + createEmptyCart +} +``` + +**Response:** + +```json +{ + "data": { + "createEmptyCart": "A7jCcOmUjjCh7MxDIzu1SeqdqETqEa5h" + } +} +``` + +In the subsequent tutorial steps, the unique shopping cart identifier `A7jCcOmUjjCh7MxDIzu1SeqdqETqEa5h` will be listed as `{ CART_ID }`. +Copy the value of the id attribute. Use this value in subsequent steps wherever the { CART_ID } variable is specified. + +## Verify this step {#verify-step} + +There are no additional verification steps. The value of `id` is not displayed on the website or in the Admin. diff --git a/src/guides/v2.4/graphql/tutorials/checkout/index.md b/src/guides/v2.4/graphql/tutorials/checkout/index.md deleted file mode 120000 index 46380a2f0ac..00000000000 --- a/src/guides/v2.4/graphql/tutorials/checkout/index.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/graphql/tutorials/checkout/index.md \ No newline at end of file diff --git a/src/guides/v2.4/graphql/tutorials/checkout/index.md b/src/guides/v2.4/graphql/tutorials/checkout/index.md new file mode 100644 index 00000000000..eb16072af32 --- /dev/null +++ b/src/guides/v2.4/graphql/tutorials/checkout/index.md @@ -0,0 +1,47 @@ +--- +layout: tutorial +group: graphql +title: GraphQL checkout tutorial +menu_title: Initial tasks +menu_order: 0 +level3_subgroup: graphql-checkout +return_to: + title: GraphQL Overview + url: graphql/index.html +functional_areas: + - Integration +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/tutorials/checkout/ +status: migrated +--- + +This tutorial describes how to place an order through GraphQl. Customers can make purchases in two ways: + +- As a logged-in user +- As a guest user who does not create an account + +The **10-step tutorial** generally takes **30 minutes**. + +Magento GraphQL is designed to run queries and perform actions on behalf of a customer. Magento GraphQL does not perform backend tasks, such as manage invoices or shipments. + +### Before you begin + +Complete the following prerequisites: + +- Install a Magento 2 instance with sample data. + The sample data defines a functional store, called Luma, that sells fitness clothing and accessories. The store does not provide any sandbox accounts for testing credit card payments, so transactions will be simulated using an offline [payment method](https://glossary.magento.com/payment-method). + +- Install a GraphQl client. You can use any GraphQl client to send calls to Magento. [Altair](https://altair.sirmuel.design/) is a good example. + +- Learn about GraphQL, how it works, and how to use it. See [Introduction to GraphQL](https://graphql.org/learn/) for details. + +- Know how to generate a customer token. See [Authorization tokens]({{page.baseurl}}/graphql/authorization-tokens.html) for details. + +- In the Magento admin, create a [coupon]({{ site.user_guide_url }}/marketing/price-rules-cart-coupon-code-configure.html) that will be used in [Step 7. Apply a coupon]({{page.baseurl}}/graphql/tutorials/checkout/checkout-coupon.html). + +### Other resources + +- [Order processing tutorial](https://developer.adobe.com/commerce/webapi/rest/tutorials/orders/) shows a system integrator how REST APIs are used in the lifecycle of an order, including configuring a store and creating a customer; creating quotes, orders, invoices, and shipments; preparing for checkout; and more order-related tasks. + +- [REST Tutorials](https://developer.adobe.com/commerce/webapi/rest/tutorials/) provides additional information about completing any Magento REST tutorial. diff --git a/src/guides/v2.4/graphql/unions.md b/src/guides/v2.4/graphql/unions.md index 4ae16a4c161..3a5d710d188 100644 --- a/src/guides/v2.4/graphql/unions.md +++ b/src/guides/v2.4/graphql/unions.md @@ -1,6 +1,8 @@ --- group: graphql title: Unions +redirect_to: https://developer.adobe.com/commerce/webapi/graphql/schema/b2b/negotiable-quote/unions/ +status: migrated --- A GraphQL union represents an object that could be one of several data types, but there is no guarantee that the data types contain fields in common. Use an inline fragment to return details about each possible data type. diff --git a/src/guides/v2.4/howdoi/admin/customize_admin.md b/src/guides/v2.4/howdoi/admin/customize_admin.md deleted file mode 120000 index 2ad13c03af6..00000000000 --- a/src/guides/v2.4/howdoi/admin/customize_admin.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/admin/customize_admin.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/admin/customize_admin.md b/src/guides/v2.4/howdoi/admin/customize_admin.md new file mode 100644 index 00000000000..e066cb09036 --- /dev/null +++ b/src/guides/v2.4/howdoi/admin/customize_admin.md @@ -0,0 +1,235 @@ +--- +group: how-do-i +title: Customize the design +redirect_to: https://developer.adobe.com/commerce/php/tutorials/admin/custom-admin-design/ +status: migrated +--- + +Learn how to customize (add, delete, change) the configuration options available in the Admin. These options define the various aspects of storefront design. + +The location of your customizations appears here: + +- {{site.data.var.ee}} and {{site.data.var.ce}} 2.1.0 and later: Options set under **CONTENT > Design > Configuration** + +## Environment and technologies + +- {{ site.data.var.ee }} +- {{ site.data.var.ece }} +- {{ site.data.var.ce }} + +## Prerequisites + +- Magento installed +- Credentials or access to Admin + +## Steps + + {:.bs-callout-info} +The following walk-through uses version 2.1.0 and later. + +On a default Magento installation, when you navigate to **CONTENT > Design > Configuration** in Admin, the first page that opens displays a grid with the available configuration scopes and assigned themes. It looks like following: + +![Design Configuration]({{ site.baseurl }}/common/images/design_conf1.png) + +When you click **Edit** in any of the scope records, the page with available design options is displayed. For example, the default set of design options for the store view level is the following: + +![Default Store View]({{ site.baseurl }}/common/images/design_conf2.png) + +Both the grid and the configuration form are implemented using UI components. + +To change the grid view, you must [customize the grid](#customize-the-grid) configuration by adding a custom `design_config_listing.xml` file to your module. + +To change the available design settings, you must [customize the grid](#customize-the-grid) configuration by adding your custom `design_config_form.xml` file in your module. If you add a new field, you must also declare it in the `di.xml` file. + +## Customize the grid + +The grid containing the configuration scopes is implemented using the [grid UI component]({{page.baseurl}}/ui_comp_guide/components/ui-listing-grid.html). + +To customize the grid view, take the following steps: + +1. In the `/view/adminhtml/ui_component` directory, add the empty `design_config_listing.xml` file. + +1. In the `design_config_listing.xml` file, create an element to which to add your customizations. For example, if you want to rename the column displaying the selected theme, your grid configuration must contain the following: + +```xml + + + + + + + + %New theme column name% + + + + + +``` + +Your `design_config_listing.xml` file is merged with the same files from the other modules, so there is no need to copy their contents. You only need to define changes. Even if you want to customize the existing entities, you only need to mention those options for which the values are customized. + +For reference, view the grid configuration files of the Magento modules: + +- `/view/adminhtml/ui_component/design_config_listing.xml` +- `/view/adminhtml/ui_component/design_config_listing.xml` + +If you add a certain field as an additional grid column, you must also set the field’s `use_in_grid` property in the [field’s meta data](#add-fields-metadata) in the `di.xml` file. + +## Customize the design options + +These sections detail how to customize form configuration and field metadata. + +### Customize the form configuration + +The design configuration form is implemented using the form UI component. + +To customize the form view, take the following steps: + +1. Create an empty `design_config_form.xml` file in the `/view/adminhtml/ui_component/` directory. + +1. Add content similar to the following: + +```xml +
    + + +
    + + + %Fieldset Label as displayed in UI% + %order for displaying% + + + +
    + + + %Nested fieldset Label as displayed in UI% + true + + %level of nesting% + + + + + + %value% + %value% + .... + + + +
    +
    +
    +``` + +Your custom fields and field sets will be available for all configuration scopes (website, store, and store view). + +Your `design_config_form.xml` file is merged with the same files from the other modules, so there is no need to copy their contents You only need to add your customizations. + +To customize an existing entity, declare only those options; the values of which are customized. Do not copy its entire configuration. + +For example, if you only want to rename the **Other Settings** field set, your form configuration must contain the following: + +```xml + + +
    + +
    + + + Other Settings + + + +
    +
    +``` + +To delete an existing field, or field set, in your `design_config_form.xml` file, use the following syntax: + +```xml +... +
    + + true + +
    +... +``` + +For reference, view the form configuration files of these Magento modules: + +- `/view/adminhtml/ui_component/design_config_form.xml` +- `/view/adminhtml/ui_component/design_config_form.xml` +- `/view/adminhtml/ui_component/design_config_form.xml` +- `/view/adminhtml/ui_component/design_config_form.xml` +- `/view/adminhtml/ui_component/design_config_form.xml` + +### Add fields’ metadata + +If in the design configuration form you add new fields, `/etc/di.xml`, you must specify their parent field sets and the path in the database. You can also declare the backend model used for processing the field values. If you do not specify any model, the default `Magento\Framework\App\Config\Value` model is used. + +The field declaration in a `di.xml` file looks like the following: + +```xml +... + + + + + + + %path in system config% + + %parent_fieldset% + + %Backend\Model\For\\Field\Processing% + + true|false + + + + + + + + + +... +``` + +Example of a field declaration: + +```xml + + + + + design/head/shortcut_icon + head + Magento\Config\Model\Config\Backend\Image\Favicon + + media + 1 + favicon + + + + + +``` +For more examples and reference, view the `di.xml` files of these Magento modules: + +- `/etc/di.xml` +- `/etc/di.xml` +- `/etc/di.xml` +- `/etc/di.xml` +- `/etc/di.xml` + +### Accessing the options values in backend models + +The design configuration option values are stored in the `core_config_data` table in the database, similar to the values of System Configuration options, and can be accessed using the `\Magento\Framework\App\ConfigInterface` mechanism. diff --git a/src/guides/v2.4/howdoi/checkout/checkout-add-custom-carrier.md b/src/guides/v2.4/howdoi/checkout/checkout-add-custom-carrier.md deleted file mode 120000 index 84508e59fc3..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout-add-custom-carrier.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout-add-custom-carrier.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout-add-custom-carrier.md b/src/guides/v2.4/howdoi/checkout/checkout-add-custom-carrier.md new file mode 100644 index 00000000000..d586a0e09a3 --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout-add-custom-carrier.md @@ -0,0 +1,310 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add custom shipping carrier +subtitle: Customize Checkout +contributor_name: Atwix +contributor_link: https://www.atwix.com/ +menu_order: 5 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-shipping-carrier/ +status: migrated +--- + +This topic describes how to add a custom shipping carrier. + +To add a new shipping carrier to the Magento checkout: + +1. [Create a new module](#create-module) +1. [Add the carrier configuration](#create-configuration) +1. [Create the carrier model](#carrier-model) +1. [Enable the module](#enable-module) + +## Step 1: Create a new module {#create-module} + +The example module for use here is `Vendor_CustomShipping`. + +### Source code of `app/code/Vendor/CustomShipping/registration.php` + +```php + + + + + + + + + + + +``` + +## Step 2: Add the module configuration {#create-configuration} + +To add a module configuration use the following source code snippets. + +### Source code of `app/code/Vendor/CustomShipping/etc/adminhtml/system.xml` + +The `system.xml` source code declares custom shipping module options: + +- Enabled +- Title +- Method Name +- Shipping Cost +- Ship to Applicable Countries +- Ship to Specific Countries +- Show Method if Not Applicable +- Sort Order + +```xml + + + +
    + + + + + Magento\Config\Model\Config\Source\Yesno + + + + + + + + + + validate-number validate-zero-or-greater + + + + shipping-applicable-country + Magento\Shipping\Model\Config\Source\Allspecificcountries + + + + Magento\Directory\Model\Config\Source\Country + 1 + + + + Magento\Config\Model\Config\Source\Yesno + shipping-skip-hide + + + + + +
    +
    +
    +``` + +### Source code of `app/code/Vendor/CustomShipping/etc/config.xml` + +The `config.xml` file specifies default values for custom shipping module options and the shipping module model, `Vendor\CustomShipping\Model\Carrier\Customshipping`: + +```xml + + + + + + 0 + Custom Shipping Title + Custom Shipping Method Name + 10 + 0 + 15 + Vendor\CustomShipping\Model\Carrier\Customshipping + + + + +``` + +## Step 3: Create the carrier model {#carrier-model} + +In this example, the `Vendor\CustomShipping\Model\Carrier\Customshipping` class is a skeleton of a carrier model. You can extend it to fit your needs. + +The carrier class implements the `CarrierInterface` interface and retrieves all available shipping methods in the `getAllowedMethods` function. The `collectRates` function returns the `\Magento\Shipping\Model\Rate\Result` object if the carrier method is available on checkout. Otherwise, it returns `false`---the carrier method is not applicable to the shopping cart. + +### Source code of `app/code/Vendor/CustomShipping/Model/Carrier/Customshipping.php` + +```php +rateResultFactory = $rateResultFactory; + $this->rateMethodFactory = $rateMethodFactory; + } + + /** + * Custom Shipping Rates Collector + * + * @param RateRequest $request + * @return \Magento\Shipping\Model\Rate\Result|bool + */ + public function collectRates(RateRequest $request) + { + if (!$this->getConfigFlag('active')) { + return false; + } + + /** @var \Magento\Shipping\Model\Rate\Result $result */ + $result = $this->rateResultFactory->create(); + + /** @var \Magento\Quote\Model\Quote\Address\RateResult\Method $method */ + $method = $this->rateMethodFactory->create(); + + $method->setCarrier($this->_code); + $method->setCarrierTitle($this->getConfigData('title')); + + $method->setMethod($this->_code); + $method->setMethodTitle($this->getConfigData('name')); + + $shippingCost = (float)$this->getConfigData('shipping_cost'); + + $method->setPrice($shippingCost); + $method->setCost($shippingCost); + + $result->append($method); + + return $result; + } + + /** + * @return array + */ + public function getAllowedMethods() + { + return [$this->_code => $this->getConfigData('name')]; + } +} +``` + +## Step 4: Enable the module {#enable-module} + +Run the commands below to register `Vendor_CustomShipping` module: + +```bash +bin/magento module:enable Vendor_CustomShipping +``` + +```bash +bin/magento setup:upgrade +``` + +## Screenshots + +The backend settings for the custom shipping carrier appear as shown below. + +![Custom shipping carrier backend settings]({{ page.baseurl }}/howdoi/checkout/images/checkout-add-custom-carrier-01.png) + +The custom shipping carrier will appear on checkout as shown below. + +![Custom shipping carrier on checkout]({{ page.baseurl }}/howdoi/checkout/images/checkout-add-custom-carrier-02.png) diff --git a/src/guides/v2.4/howdoi/checkout/checkout_address.md b/src/guides/v2.4/howdoi/checkout/checkout_address.md deleted file mode 120000 index 6e9849bb485..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_address.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_address.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_address.md b/src/guides/v2.4/howdoi/checkout/checkout_address.md new file mode 100644 index 00000000000..fce4c5a2830 --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_address.md @@ -0,0 +1,349 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add a custom shipping address renderer +subtitle: Customize Checkout +menu_order: 11 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-address-renderer/ +status: migrated +--- + +This topic describes how to implement a custom shipping address renderer. + +Out of the box, Magento [checkout](https://glossary.magento.com/checkout) consists of two steps: + +- Shipping Information +- Review and Payment Information + +On the Shipping Information checkout step Magento renders all addresses previously saved by a shopper. The shopper can then select the one to be used for shipping by clicking it. The default address renderers cover the majority of use cases, but Magento provides way to register custom address renderer for a new address type. + +To implement shipping address rendering in checkout, you need to take the following steps: + +1. [Create the JS renderer component (shipping address renderer)](#create). +1. [Create a template for the shipping address renderer.](#template) +1. [Create the JS model for the shipping rate processor](#rate_processor). +1. [Create the JS model for the shipping address saving processor](#save). +1. [Create the JS component registering the processors](#register). +1. [Declare the new components in the checkout page layout.](#layout). +1. [Add the shipping address renderer to the "Ship-To" block (optional)](#ship_to). + +## Step 1: Create the JS renderer component (shipping address renderer) {#create} + +Your shipping address renderer must be implemented as a [JavaScript](https://glossary.magento.com/javascript) [UI component](https://glossary.magento.com/ui-component). That is, it must be a RequireJS module, and must return a factory function, that takes a configurable object. + +For the sake of compatibility, upgradability and easy maintenance, do not edit the default Magento code. Instead add your customizations in a separate module. For your checkout customization to be applied correctly, your custom module must depend on the `Magento_Checkout` module. Module dependencies are specified in the [module's `composer.json`]({{ page.baseurl }}/extension-dev-guide/build/composer-integration.html). Do not use `Ui` for your custom module name, because `%Vendor%_Ui` notation, required when specifying paths, might cause issues. + +In your custom module directory, create the component's `.js` file (shipping address renderer). It must be located under the `/view/frontend/web/js/view/` directory. + +The following is a general view of the shipping address renderer: + +```js +define([ + 'ko', + 'uiComponent', + 'Magento_Checkout/js/action/select-shipping-address', + 'Magento_Checkout/js/model/quote' +], function(ko, Component, selectShippingAddressAction, quote) { + 'use strict'; + return Component.extend({ + defaults: { + template: '%path to your template%' + }, + + initProperties: function () { + this._super(); + this.isSelected = ko.computed(function() { + var isSelected = false; + var shippingAddress = quote.shippingAddress(); + if (shippingAddress) { + isSelected = shippingAddress.getKey() == this.address().getKey(); + } + return isSelected; + }, this); + + return this; + }, + + /** Set selected customer shipping address */ + selectAddress: function() { + selectShippingAddressAction(this.address()); + }, + + /** additional logic required for this renderer **/ + + }); +}); +``` + +## Step 2: Create a template for the shipping address renderer {#template} + +In your custom module directory, create a new `/view/frontend/web/template/.html` file. The template can use [Knockout JS](https://knockoutjs.com/) syntax. + +The template should contain a button for setting the address to be used for shipping. + +You can use the code from the default template: [app/code/Magento/Checkout/view/frontend/web/template/shipping-address/address-renderer/default.html]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Checkout/view/frontend/web/template/shipping-address/address-renderer/default.html). + +## Step 3: Create the JS model for the shipping rate processor {#rate_processor} + +A shipping rate processor is responsible for retrieving the shipping rates available for the given shipping address. + +In your custom module directory, create the component's `.js` file for the processor. It must be located under the `/view/frontend/web/js/model/` directory. + +Here you need to specify the [URL](https://glossary.magento.com/url) used for calculating the shipping rates for your custom address type. + +The following is a sample of the shipping rate processor code: + +```js +define( + [ + 'Magento_Checkout/js/model/quote', + 'Magento_Checkout/js/model/shipping-service', + 'Magento_Checkout/js/model/shipping-rate-registry', + 'magento/storage', + 'Magento_Checkout/js/model/error-processor', + // additional dependencies + ], + function (quote, shippingService, rateRegistry, storage, errorProcessor, ...) { + 'use strict'; + return { + getRates: function(address) { + var cache = rateRegistry.get(address.getKey()); + if (cache) { + shippingService.setShippingRates(cache); + } else { + shippingService.isLoading(true); + storage.post( + %URL for shipping rate estimation%, + JSON.stringify({ + %address parameters% + }), + false + ).done( + function (result) { + rateRegistry.set(address.getKey(), result); + shippingService.setShippingRates(result); + } + ).fail( + function (response) { + shippingService.setShippingRates([]); + errorProcessor.process(response); + } + ).always( + function () { + shippingService.isLoading(false); + } + ); + } + } + }; + } +); +``` + +## Step 4: Create the JS model for the shipping address saving processor {#save} + +This processor is responsible for sending the shipping address and the selected rate to the server. + +In your custom module directory, create the component's `.js` file for the processor. It must be located under the `/view/frontend/web/js/model/` directory. + +The following is a sample of the shipping rate processor code: + +```js +define( + [ + 'Magento_Checkout/js/model/quote', + 'Magento_Checkout/js/model/resource-url-manager', + 'mage/storage', + 'Magento_Checkout/js/model/payment-service', + 'Magento_Checkout/js/model/error-processor', + 'Magento_Checkout/js/model/payment/method-converter' + ], + function (quote, resourceUrlManager, storage, paymentService, errorProcessor, methodConverter) { + 'use strict'; + return { + saveShippingInformation: function() { + var shippingAddress = {}, + payload; + + shippingAddress.extension_attributes = { + %address extension attributes% + }; + + payload = { + addressInformation: { + shipping_address: shippingAddress, + shipping_method_code: quote.shippingMethod().method_code, + shipping_carrier_code: quote.shippingMethod().carrier_code + } + }; + + return storage.post( + resourceUrlManager.getUrlForSetShippingInformation(quote), + JSON.stringify(payload) + ).done( + function (response) { + paymentService.setPaymentMethods(methodConverter(response.payment_methods)); + quote.setTotals(response.totals) + } + ).fail( + function (response) { + errorProcessor.process(response); + } + ); + } + } + } +); +``` + +## Step 5: Create the JS component registering the processors {#register} + +In your custom module directory, create the `.js` UI component that registers the rate processor and the saving processor. It must be located under the `/view/frontend/web/js/view/` directory. + +The file content must be similar to the following: + +```js +define( + [ + 'uiComponent', + 'Magento_Checkout/js/model/shipping-rate-service', + %custom shipping rate processor%, + 'Magento_Checkout/js/model/shipping-save-processor', + %custom shipping save processor% + ], + function ( + Component, + shippingRateService, + customShippingRateProcessor, + shippingSaveProcessor, + customShippingSaveProcessor + ) { + 'use strict'; + + /** Register rate processor */ + shippingRateService.registerProcessor(%address type%, customShippingRateProcessor); + + /** Register save shipping address processor */ + shippingSaveProcessor.registerProcessor(%address type%, custormShippingSaveProcessor); + + /** Add view logic here if needed */ + return Component.extend({}); + } +); +``` + +## Step 6: Declare the new components in the checkout page layout {#layout} + +In your custom module directory, create a new `/view/frontend/layout/checkout_index_index.xml` file. In this file, add the following: + +```xml + + + + + + + + + + + + + + + %component that registers address/rate processors% + + + + + + + %address renderer JS component% + + + + + + + + + + + + + + + + +``` + +The `address_type` you need to specify in the layout, is the value you set in the JS model of your custom address type. + +## Step 7: Add the shipping address renderer to the "Ship-To" block (optional) {#ship_to} + +On the Review and Payment Information step of checkout, the shipping address is displayed in the **Ship-To** section for customer to make sure everything is set correctly. + +If you want your custom address type to be displayed here as well, you need to create an `.html` template for rendering it, and declare in the corresponding location in [layout](https://glossary.magento.com/layout). + +### Add template for displaying the address in the Ship-To section + +In your custom module directory create a new `/view/frontend/web/template/.html` file. The template can use [Knockout JS](https://knockoutjs.com/) syntax. + +You can use the code from the default template: [app/code/Magento/Checkout/view/frontend/web/template/shipping-information/address-renderer/default.html]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Checkout/view/frontend/web/template/shipping-information/address-renderer/default.html). + +### Declare the address to be used in the Ship-To section in layout + +In your `/view/frontend/layout/checkout_index_index.xml` file, add the following: + +```xml + + + + + + + + + + + + + + + uiComponent + + %custom template% + + + + + + + + + + + + + + + +``` + +## Step 8: Deploy the static content and clean the cache + +1. Deploy static content: + + ```bash + bin/magento setup:static-content:deploy + ``` + +1. Then clean the cache: + + ```bash + bin/magento cache:clean + ``` diff --git a/src/guides/v2.4/howdoi/checkout/checkout_carrier.md b/src/guides/v2.4/howdoi/checkout/checkout_carrier.md deleted file mode 120000 index f8f14464feb..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_carrier.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_carrier.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_carrier.md b/src/guides/v2.4/howdoi/checkout/checkout_carrier.md new file mode 100644 index 00000000000..68a9ee08183 --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_carrier.md @@ -0,0 +1,196 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add custom shipping carrier validations +subtitle: Customize Checkout +menu_order: 6 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-carrier-validation/ +status: migrated +--- + +This topic describes how to add shipping address validations for a custom [shipping carrier](https://glossary.magento.com/shipping-carrier) to the Magento [checkout](https://glossary.magento.com/checkout). This is an essential part of the bigger task of adding a custom shipping method to your Magento store. + +To add new shipping carrier validations to the Magento checkout, do the following: + +1. [Create validation rules](#rules). +1. [Create validator](#validator). +1. [Register validator and rules in the validators pool](#register). +1. [Add the validators and rules to the checkout layout](#layout). + + {:.bs-callout-info} +During checkout, when a customer fills the shipping address form, shipping carrier validations trigger the shipping rates request. That is why adding shipping carrier validations for your custom shipping method is mandatory. + +## Step 1: Create validation rules {#rules} + +Shipping carrier validation rules declare which fields of the shipping address are required for the corresponding shipping method to be available. The validation itself is performed by the [validator](#validator). + +During checkout, if the shipping address fields declared in the rules are filled, the further validation of fields' values is carried on the [server side](https://glossary.magento.com/server-side). For example, whether a carrier is available for the specified country. + +For the sake of compatibility, upgradability, and easy maintenance, do not edit the default Magento code, add your customization in a separate module. For your checkout customization to be applied correctly, your custom module should [depend]({{ page.baseurl }}/extension-dev-guide/build/composer-integration.html) on the `Magento_Checkout` module. + +Do not use `Ui` for your custom module name, because `%Vendor%_Ui` notation, required when specifying paths, might cause issues. + +In your `/view/frontend/web/js/model` directory, create a `.js` file implementing the validation rules. + +The script must implement the `getRules()` method. + +For example, the FedEx shipping method requires only two fields of the shipping address to be filled: **Country**, **Zip Code** and **City**. This is how the validation rules for FedEx look: + +> _/view/frontend/web/js/model/shipping-rates-validation-rules.js_ + +```js +define( + [], + function () { + 'use strict'; + return { + getRules: function() { + return { + 'postcode': { + 'required': true + }, + 'country_id': { + 'required': true + }, + 'city': { + 'required': true + } + }; + } + }; + } +) +``` + +Triggering the shipping rates request correlates directly with the fields you specify in the validation rules: the request is triggered once all these fields are populated and pass the validation. + +## Step 2: Create validator {#validator} + +Create the validator `.js` script that checks if the fields defined by the validation rules are filled. The script must be located in the `/view/frontend/web/js/model` directory. + +A sample validator script follows: + +```js +define( + [ + 'jquery', + 'mageUtils', + + './shipping-rates-validation-rules', + 'mage/translate' + ], + function ($, utils, validationRules, $t) { + 'use strict'; + return { + validationErrors: [], + validate: function(address) { + var self = this; + this.validationErrors = []; + $.each(validationRules.getRules(), function(field, rule) { + if (rule.required && utils.isEmpty(address[field])) { + var message = $t('Field ') + field + $t(' is required.'); + self.validationErrors.push(message); + } + }); + return !Boolean(this.validationErrors.length); + } + }; + } +); +``` + +You can use this sample for your validator, but you need to specify your validation rules script instead of `./shipping-rates-validation-rules` in the list of used modules. + +## Step 3: Register validator and rules in the validators pool {#register} + +Your custom validator must be added to the pool of validators. To do this, in the `/view/frontend/web/js/view` directory create a new `.js` file with the following content (having replaced the `` and `` with your values): + +```js +define( + [ + 'uiComponent', + 'Magento_Checkout/js/model/shipping-rates-validator', + 'Magento_Checkout/js/model/shipping-rates-validation-rules', + '../model/', + '../model/' + ], + function ( + Component, + defaultShippingRatesValidator, + defaultShippingRatesValidationRules, + shippingRatesValidator, + shippingRatesValidationRules + ) { + 'use strict'; + defaultShippingRatesValidator.registerValidator('carrierName', shippingRatesValidator); + defaultShippingRatesValidationRules.registerRules('carrierName', shippingRatesValidationRules); + return Component; + } +); +``` + +## Step 4: Add the validation to the checkout layout {#layout} + +The last step is specifying the script you created on the previous step in the checkout page [layout](https://glossary.magento.com/layout). + +In your custom module directory, create a new `/view/frontend/layout/checkout_index_index.xml` file. + +In this file, add the following: + +You must add `` like `%carrier%-rates-validation` - where carrier has to match the actual carrier code. + +```xml + + + + + + + + + + + + + + + + + + %your_module%/js/view/%your-validation% + + + + + + + + + + + + + + + + + +``` + +## Step 5: Deploy static content and clear the cache {#deploy-and-clean} + +1. Deploy static content: + +```bash +bin/magento setup:static-content:deploy +``` + +1. Clean the cache: + +```bash +bin/magento cache:clean +``` diff --git a/src/guides/v2.4/howdoi/checkout/checkout_custom_checkbox.md b/src/guides/v2.4/howdoi/checkout/checkout_custom_checkbox.md deleted file mode 120000 index 5e52550ebae..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_custom_checkbox.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_custom_checkbox.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_custom_checkbox.md b/src/guides/v2.4/howdoi/checkout/checkout_custom_checkbox.md new file mode 100644 index 00000000000..f6dfc87aa0f --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_custom_checkbox.md @@ -0,0 +1,223 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add custom fields that influence other Checkout fields +subtitle: Customize Checkout +menu_order: 90 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-checkbox/ +status: migrated +--- + +This topic describes how to add a custom field that influences other fields on the checkout page. + +Let's consider a case where you need to add a checkbox whose state (selected or cleared) changes the state of other fields: when the checkbox is selected, the Shipping Address fields get prepopulated with a certain address. + +To implement such a checkbox, take the following steps: + +1. [Create a plugin for the process method](#create-plugin) of the `/Block/Checkout/LayoutProcessor.php` class. +1. [Declare the plugin in your module's `di.xml`](#declare-plugin). +1. [Create a JS component for the checkbox with custom logic](#create-jscomponent). + +## Step 1: Create a plugin for the `LayoutProcessor`'s process method {#create-plugin} + +In your custom module directory, create the following new file: `/Block/Checkout/SomeProcessor.php`. In this file, add the following code sample. This is a plugin that adds a checkbox, makes the street labels trackable, and assigns dependencies to the checkbox. + +```php?start_inline=1 +namespace Magento\Checkout\Block\Checkout; + +class SomeProcessor +{ + /** + * Checkout LayoutProcessor after process plugin. + * + * @param \Magento\Checkout\Block\Checkout\LayoutProcessor $processor + * @param array $jsLayout + * @return array + */ + public function afterProcess(\Magento\Checkout\Block\Checkout\LayoutProcessor $processor, $jsLayout) + { + $shippingConfiguration = &$jsLayout['components']['checkout']['children']['steps']['children']['shipping-step'] + ['children']['shippingAddress']['children']['shipping-address-fieldset']['children']; + $billingConfiguration = &$jsLayout['components']['checkout']['children']['steps']['children']['billing-step'] + ['children']['payment']['children']['payments-list']['children']; + + //Checks if shipping step available. + if (isset($shippingConfiguration)) { + $shippingConfiguration = $this->processAddress( + $shippingConfiguration, + 'shippingAddress', + [ + 'checkoutProvider', + 'checkout.steps.shipping-step.shippingAddress.shipping-address-fieldset.street', + 'checkout.steps.shipping-step.shippingAddress.shipping-address-fieldset.city', + 'checkout.steps.shipping-step.shippingAddress.shipping-address-fieldset.country_id' + ] + ); + } + + //Checks if billing step available. + if (isset($billingConfiguration)) { + //Iterate over billing forms. + foreach($billingConfiguration as $key => &$billingForm) { + //Exclude not billing forms + if (!strpos($key, '-form')) { + continue; + } + + $billingForm['children']['form-fields']['children'] = $this->processAddress( + $billingForm['children']['form-fields']['children'], + $billingForm['dataScopePrefix'], + [ + 'checkoutProvider', + 'checkout.steps.billing-step.payment.payments-list.' . $key . '.form-fields.street', + 'checkout.steps.billing-step.payment.payments-list.' . $key . '.form-fields.city', + 'checkout.steps.billing-step.payment.payments-list.' . $key . '.form-fields.country_id' + ] + ); + } + } + + return $jsLayout; + } + + /** + * Process provided address to contains checkbox and have trackable address fields. + * + * @param $addressFieldset - Address fieldset config. + * @param $dataScope - data scope + * @param $deps - list of dependencies + * @return array + */ + private function processAddress($addressFieldset, $dataScope, $deps) + { + //Creates checkbox. + $addressFieldset['custom_checkbox'] = [ + 'component' => 'Magento_Checkout/js/single-checkbox', + 'config' => [ + 'customScope' => $dataScope, + 'template' => 'ui/form/field', + 'prefer' => 'checkbox' + ], + 'dataScope' => $dataScope . '.custom_checkbox', + 'deps' => $deps, + 'label' => __('Army Address'), + 'provider' => 'checkoutProvider', + 'visible' => true, + 'initialValue' => false, + 'sortOrder' => 10, + 'valueMap' => [ + 'true' => true, + 'false' => false + ] + ]; + + //Makes each address field label trackable. + if (isset($addressFieldset['street']['children'])) { + foreach($addressFieldset['street']['children'] as $key => $street) { + $street['tracks']['label'] = true; + //Remove .additional class. Can be removed, but style fix provided instead. + $street['additionalClasses'] = ''; + $addressFieldset['street']['children'][$key] = $street; + } + } + + return $addressFieldset; + } +} +``` + +For more information on creating plugins, see [Plugins (Interceptors)]({{ page.baseurl }}/extension-dev-guide/plugins.html). + +## Step 2: Declare plugin in di.xml {#declare-plugin} + +In `/etc/frontend/di.xml`, declare the plugin you created on the previous step. The plugin name is arbitrary, in our example it's `ProcessAddressConfiguration`: + +```xml + + + + + +``` + +## Step 3: Create a JS component for the checkbox {#create-jscomponent} + +In your custom module directory, create the following new file: `/view/frontend/web/js/single-checkbox.js`. In this file, add the following code. This is a JS component that extends `Magento_Ui/js/form/element/single-checkbox.js`. The `onCheckedChanged` method calls the methods that update street labels, change the city and country values, and disable these fields: + +```js +define([ + 'Magento_Ui/js/form/element/single-checkbox', + 'mage/translate' +], function (AbstractField, $t) { + 'use strict'; + + return AbstractField.extend({ + defaults: { + streetLabels: [$t('Company / Section / Unit'), $t('Post Sector Type'), $t('Post Sector')], + modules: { + street: '${ $.parentName }.street', + city: '${ $.parentName }.city', + country: '${ $.parentName }.country_id' + } + }, + + updateStreetLabels: function () { + if (this.value()) { + this.street().elems.each(function (street, key) { + this.street().elems()[key].set('label', this.streetLabels[key]); + }.bind(this)); + } else { + this.street().elems.each(function (street, key) { + this.street().elems()[key].set('label', ''); + }.bind(this)); + } + }, + + updateCity: function () { + if (this.value()) { + this.city().value('Kyiv'); + this.city().disabled(true); + } else { + this.city().value(''); + this.city().disabled(false); + } + }, + + updateCountry: function () { + if (this.value()) { + this.country().value('UA'); + this.country().disabled(true); + } else { + this.country().value(''); + this.country().disabled(false); + } + }, + + onCheckedChanged: function () { + this._super(); + this.updateStreetLabels(); + this.updateCity(); + this.updateCountry(); + } + }); +}); +``` + +## Step 4: Compile and deploy the static content + +1. Compile the code: + + ```bash + bin/magento setup:di:compile + ``` + +1. Deploy static content: + + ```bash + bin/magento setup:static-content:deploy + ``` diff --git a/src/guides/v2.4/howdoi/checkout/checkout_customize.md b/src/guides/v2.4/howdoi/checkout/checkout_customize.md deleted file mode 120000 index 125815d0388..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_customize.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_customize.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_customize.md b/src/guides/v2.4/howdoi/checkout/checkout_customize.md new file mode 100755 index 00000000000..a123ab85da6 --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_customize.md @@ -0,0 +1,202 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Customize the view of a checkout step +subtitle: Customize Checkout +menu_order: 2 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/customize-view/ +status: migrated +--- + +This topic contains the basic information about how to customize the view of an existing [checkout](https://glossary.magento.com/checkout) step. In the Magento application, checkout is implemented using UI components. You can customize each step by [changing the JavaScript implementation or template](#change-component) for a component, [adding](#add), [disabling](#disable), or [removing](#remove) a component. + +## Change the component's .js implementation and template {#change-component} + +To change the `.js` implementation and template used for components rendering, you need to declare the new files in the checkout page [layout](https://glossary.magento.com/layout). To do this, take the following steps: + +1. In your custom module directory, create the following new file: `/view/frontend/layout/checkout_index_index.xml`. (For your checkout customization to be applied correctly, your custom [module](https://glossary.magento.com/module) should depend on the Magento_Checkout module.) +1. In this file, add the following: + + ```xml + + + + + + + ... + + + + + + ``` + +1. In the `/view/frontend/layout/checkout_index_index.xml` file, find the component that you need to customize. Copy the corresponding node and all parent nodes up to ``. There is no need to leave all the attributes and values of parent nodes, as you are not going to change them. + +1. Change the path to the component's `.js` file, template or any other property. + +Example: + +The Magento_Shipping module adds a component rendered as a link to the Shipping Policy info to the Shipping step: + +`/view/frontend/layout/checkout_index_index.xml` looks like following: + +```xml + + + + + + + + + + + + + + + + + + Magento_Shipping/js/view/checkout/shipping/shipping-policy + + + + + + + + + + + + + + + + + + +``` + +## Add the new component to the checkout page layout {#add} + +Any [UI component](https://glossary.magento.com/ui-component) is added in the `checkout_index_index.xml` similar to the way a [checkout step component is added]({{ page.baseurl }}/howdoi/checkout/checkout_new_step.html#checkout). + +Make sure that you declare a component so that it is rendered correctly by the parent component. If a parent component is a general UI component (referenced by the `uiComponent` alias), its child components are rendered without any conditions. But if a parent component is an extension of a general UI components, then children rendering might be restricted in certain way. For example a component can render only children from a certain `displayArea`. + +## Move a component + +To move any component on your checkout page, find the component (parent) where it needs to be placed, and paste your component as a child of the parent. + +The following example shows how to move the discount component to the order summary block, which will display on both shipping and billing steps. + +```xml + + + + + + + + + + + + + + Magento_SalesRule/js/view/payment/discount + + + 0 + Magento_SalesRule/js/view/payment/discount-messages + messages + + + + + + + + + + + + + + + +``` + +{:.bs-callout-info} +Remember to [disable](#disable) or [remove](#remove) the component from its original location, or they will conflict with each other. + +### Order Summary Result + +![Discount Component]({{ site.baseurl }}/common/images/ui_comps/discount_component.png) + +## Disable a component {#disable} + +To disable the component in your `checkout_index_index.xml` use the following instructions: + +```xml + + + true + + +``` + +## Remove a component {#remove} + +To keep a component from being rendered, create a layout processor. A layout processor consists of a class, implementing +the `\Magento\Checkout\Block\Checkout\LayoutProcessorInterface` interface, and thus a `LayoutProcessorInterface::process($jsLayout)` method. + +```php +\\Block\Checkout; + +use Magento\Checkout\Block\Checkout\LayoutProcessorInterface; + +class OurLayoutProcessor implements LayoutProcessorInterface +{ + /** + * @param array $jsLayout + * @return array + */ + public function process($jsLayout) + { + //%path_to_target_node% is the path to the component's node in checkout_index_index. + unset($jsLayout['components']['checkout']['children']['steps'][%path_to_target_node%]); + return $jsLayout; + } +} +``` + +Once created, add the layout processor through Dependency Injection (DI). + +```xml + + + + + + \\Block\Checkout\OurLayoutProcessor + + + + +``` + +To use this sample in your code, replace the `%path_to_target_node%` placeholder with real value. + +{:.bs-callout-info} +Disable vs remove a component: A disabled component is loaded but not rendered. If you remove a component, it is removed and not loaded. diff --git a/src/guides/v2.4/howdoi/checkout/checkout_edit_form.md b/src/guides/v2.4/howdoi/checkout/checkout_edit_form.md deleted file mode 120000 index 43ce8d31ec2..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_edit_form.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_edit_form.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_edit_form.md b/src/guides/v2.4/howdoi/checkout/checkout_edit_form.md new file mode 100644 index 00000000000..2996499173c --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_edit_form.md @@ -0,0 +1,113 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add a custom template for a form field on Checkout page +subtitle: Customize Checkout +menu_order: 8 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-template/ +status: migrated +--- + +This topic describes how to replace the [HTML](https://glossary.magento.com/html) template for a form field on the [Checkout](https://glossary.magento.com/checkout) page. You might need to replace the template in order to add elements displayed with the field, change the [CSS](https://glossary.magento.com/css) class assigned to it, add attributes and so on. + +The forms used on the Checkout page are implemented using Knockout JS. + +To change the template of the form field, do the following: + +1. [Create a custom HTML template for knockout JS script that will render the form field](#template). +1. [Specify the new template in the Checkout page layout](#layout). +1. [Clear files after modification](#modify). + +## Prerequisites + +[Set Magento to the developer mode]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-mode.html) when performing all customizations and debugging. + +For the sake of compatibility, upgradability, and easy maintenance, do not edit the default Magento code. Instead, add your customizations in a separate [module](https://glossary.magento.com/module). For your checkout customization to be applied correctly, your custom module should [depend]({{ page.baseurl }}/extension-dev-guide/build/composer-integration.html) on the Magento_Checkout module. + +Do not use `Ui` for your custom module name, because `%Vendor%_Ui` notation, required when specifying paths, might cause issues. + +## Step 1: Implement the HTML template for the field {#template} + +Create a new `.html` template in the following directory: `/view/frontend/web/template/form/element` + +Example of a field template: + +```html + + + +image_de +``` + + {:.bs-callout-info} +The original templates of all form field types are located in the `app/code/Magento/Ui/view/base/web/templates/form/element` directory. + +## Step 2: Specify the new template in layout {#layout} + +In your custom module directory, create a new `/view/frontend/layout/checkout_index_index.xml` file. +In this file, add content similar to the following: + +```xml + + + + + + + + + + + + + + + + + + + + + + + %Vendor_Module%/form/element/%your_template% + + + + + + + + + + + + + + + + + + +``` + +## Step 3: Clear files after modification {#modify} + +If you modify your custom `.html` template after it was applied on the store pages, the changes will not apply until you do the following: + +1. Delete all files in the `pub/static/frontend` and `var/view_preprocessed` directories. +1. Reload the pages. diff --git a/src/guides/v2.4/howdoi/checkout/checkout_form.md b/src/guides/v2.4/howdoi/checkout/checkout_form.md deleted file mode 120000 index f8398000a12..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_form.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_form.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_form.md b/src/guides/v2.4/howdoi/checkout/checkout_form.md new file mode 100644 index 00000000000..31dd0e8d071 --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_form.md @@ -0,0 +1,291 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add a new input form to checkout +subtitle: Customize Checkout +menu_order: 9 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-form/ +status: migrated +--- + +This topic describes how to add a custom input form (implemented as a UI component) to the [Checkout](https://glossary.magento.com/checkout) page. + +![The input form with four fields]({{ site.baseurl }}/common/images/how_checkout_form.png) + +Most of the elements, including the default forms on the Checkout page are implemented as UI components. And we recommend your custom form to be a UI component, extending the default [Magento_Ui/js/form/form]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Ui/view/base/web/js/form/form.js) component. + +Magento provides the ability to add a custom form to any of the checkout steps: Shipping Information, Review and Payment Information, or custom. In order to add a custom form that is a UI component, take the following steps: + +1. [Create the JS implementation of the form UI component](#component). +1. [Create the knockout.js HTML template for rendering the form](#template). +1. [Declare the form in the checkout page layout](#layout). + +## Prerequisites + +[Set Magento to developer mode]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-mode.html) while you perform all customizations and debugging. + +For the sake of compatibility, upgradability, and easy maintenance, do not edit the default Magento code. Instead, add your customizations in a separate module. For your checkout customization to be applied correctly, your custom module should [depend]({{ page.baseurl }}/extension-dev-guide/build/composer-integration.html) on the `Magento_Checkout` module. + +Do not use `Ui` for your custom module name, because `%Vendor%_Ui` notation, required when specifying paths, might cause issues. + +## Step 1: Create the JS implementation of the form UI component {#component} + +In your `/view/frontend/web/js/view/` directory, create a `custom-checkout-form.js` file implementing the form. + +Example of extending the default form component: + +```js +/*global define*/ +define([ + 'Magento_Ui/js/form/form' +], function(Component) { + 'use strict'; + return Component.extend({ + initialize: function () { + this._super(); + // component initialization logic + return this; + }, + + /** + * Form submit handler + * + * This method can have any name. + */ + onSubmit: function() { + // trigger form validation + this.source.set('params.invalid', false); + this.source.trigger('customCheckoutForm.data.validate'); + + // verify that form data is valid + if (!this.source.get('params.invalid')) { + // data is retrieved from data provider by value of the customScope property + var formData = this.source.get('customCheckoutForm'); + // do something with form data + console.dir(formData); + } + } + }); +}); +``` + +## Step 2: Create the HTML template {#template} + +Add the `knockout.js` HTML template for the form component under the `/view/frontend/web/template` directory called `custom-checkout-form.html`. + +Example: + +```html +
    +
    +
    + + + + +
    + + +
    +
    +``` + +## Step 3: Declare the form in the checkout page layout {#layout} + +Certain default checkout templates declare regions where additional content can be inserted. You can add your custom form in any of these regions. These regions are provided with corresponding comments in the default Checkout page layout file `/view/frontend/layout/checkout_index_index.xml`. + +Also you locate the regions in the `.html` templates of the blocks used in this [layout](https://glossary.magento.com/layout) file. +For example, the shipping JS component (see `/view/frontend/web/template/shipping.html`) provides the `before-form` region and corresponding UI container. + +Any content added here is rendered before the Shipping Address form on the Shipping Information step. To add content to this region, create a `checkout_index_index.xml` layout update in the `/view/frontend/layout/`. + +It should be similar to the following: + +```xml + + + + + + + + + + + + + + + + + + + + VendorName_ModuleName/js/view/custom-checkout-form + checkoutProvider + + + VendorName_ModuleName/custom-checkout-form + + + + + + + + + + + + + + + + + + + + + +``` + +### Clear files after modification {#modify} + +If you modify your custom `.html` template after it was applied on the store pages, the changes will not apply until you do the following: + +1. Delete all files in the `pub/static/frontend` and `var/view_preprocessed` directories. +1. Reload the pages. + +### Static forms {#static_form} + +The term static refers to the forms where all the fields are already known/predefined and do not depend on any settings in the [Admin](https://glossary.magento.com/admin). Compare to [dynamic forms](#dynamic_form). + +The fields of static forms are not generated dynamically, so they can be defined in a layout. + +The following code sample shows the configuration of the `custom-checkout-form-container` form, defined in the previous step. It contains four fields: a text input, a select, a checkbox, and a date field. This form uses the checkout data provider (`checkoutProvider`) that was introduced in the `Magento_Checkout` module: + +```xml +... + + ... + + + + uiComponent + + custom-checkout-form-fields + + + Magento_Ui/js/form/element/abstract + + + customCheckoutForm + ui/form/field + ui/form/element/input + + checkoutProvider + customCheckoutForm.text_field + Text Field + 1 + + true + + + + Magento_Ui/js/form/element/boolean + + + customCheckoutForm + ui/form/field + ui/form/element/checkbox + + checkoutProvider + customCheckoutForm.checkbox_field + Checkbox Field + 3 + + + Magento_Ui/js/form/element/select + + + customCheckoutForm + ui/form/field + ui/form/element/select + + + + Please select value + + + + Value 1 + value_1 + + + Value 2 + value_2 + + + + value_2 + checkoutProvider + customCheckoutForm.select_field + Select Field + 2 + + + Magento_Ui/js/form/element/date + + + customCheckoutForm + ui/form/field + ui/form/element/date + + checkoutProvider + customCheckoutForm.date_field + Date Field + + true + + + + + + +... +``` + +### Dynamically defined forms {#dynamic_form} + +Dynamically defined, or dynamic, forms are the forms where the set or type of fields can change. For example, the fields displayed on the checkout form depend on the Admin settings: depending on the **Admin > Stores > Settings > Configuration > Customers > Customer Configuration > Name and Address Options**. + +For such forms, you must implement a [plugin]({{ page.baseurl }}/extension-dev-guide/plugins.html) for the `\Magento\Checkout\Block\Checkout\LayoutProcessor::process` method. +A plugin can add custom fields definitions to layout at runtime. The format of the field definition is the same as for fields defined in layout. + +For example: + +```php?start_inline=1 +$textField = [ + 'component' => 'Magento_Ui/js/form/element/abstract', + 'config' => [ + 'customScope' => 'customCheckoutForm', + 'template' => 'ui/form/field', + 'elementTmpl' => 'ui/form/element/input', + ], + 'provider' => 'checkoutProvider', + 'dataScope' => 'customCheckoutForm.text_field', + 'label' => 'Text Field', + 'sortOrder' => 1, + 'validation' => [ + 'required-entry' => true, + ], +]; +``` diff --git a/src/guides/v2.4/howdoi/checkout/checkout_new_field.md b/src/guides/v2.4/howdoi/checkout/checkout_new_field.md deleted file mode 120000 index 7e88b96fc69..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_new_field.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_new_field.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_new_field.md b/src/guides/v2.4/howdoi/checkout/checkout_new_field.md new file mode 100644 index 00000000000..da41f126abd --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_new_field.md @@ -0,0 +1,232 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add a new field in address form +subtitle: Customize Checkout +menu_order: 9 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-address-field/ +status: migrated +--- + +You can add new fields to default [checkout](https://glossary.magento.com/checkout) forms, such as shipping address or billing address forms. To illustrate this ability, this topic describes adding a field to the shipping address form. + +To add your custom field to the checkout address form and access its value on the client side: + +1. [Add the field to layout](#add). +1. [Add a JS mixin to modify data submission](#mixin). +1. [Load your mixin](#load_mixin). +1. [Add the field to address model](#field). +1. [Access the value of the custom field on server side](#access). + +## Step 1: Add the field to layout {#add} + +Both shipping address and billing address forms are [generated dynamically]({{ page.baseurl }}/howdoi/checkout/checkout_form.html#dynamic_form). To modify their layouts, create a [plugin]({{ page.baseurl }}/extension-dev-guide/plugins.html) for the `\Magento\Checkout\Block\Checkout\LayoutProcessor::process` method and declare it in the `di.xml` file in your module. + +The following code snippet enumerates sample logic for adding a field named `Custom Attribute` to the shipping address form: + +```php?start_inline=1 +$customAttributeCode = 'custom_field'; +$customField = [ + 'component' => 'Magento_Ui/js/form/element/abstract', + 'config' => [ + // customScope is used to group elements within a single form (e.g. they can be validated separately) + 'customScope' => 'shippingAddress.custom_attributes', + 'customEntry' => null, + 'template' => 'ui/form/field', + 'elementTmpl' => 'ui/form/element/input', + 'tooltip' => [ + 'description' => 'this is what the field is for', + ], + ], + 'dataScope' => 'shippingAddress.custom_attributes' . '.' . $customAttributeCode, + 'label' => 'Custom Attribute', + 'provider' => 'checkoutProvider', + 'sortOrder' => 0, + 'validation' => [ + 'required-entry' => true + ], + 'options' => [], + 'filterBy' => null, + 'customEntry' => null, + 'visible' => true, + 'value' => '' // value field is used to set a default value of the attribute +]; + +$jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']['shippingAddress']['children']['shipping-address-fieldset']['children'][$customAttributeCode] = $customField; +``` + +Via the previous example, the field is added to the `customAttributes` property of `'Magento_Checkout/js/model/new-customer-address.js`, a JavaScript object that lists all predefined address attributes and matches the corresponding server-side interface `\Magento\Quote\Api\Data\AddressInterface`. + +The `customAttributes` property was designed to contain custom EAV address attributes and is related to the `\Magento\Quote\Model\Quote\Address\CustomAttributeListInterface::getAttributes` method. The sample code above will automatically handle local storage persistence on the [frontend](https://glossary.magento.com/frontend). + +Optionally, instead of adding a plugin, you can use a [dependency injection (DI)]({{ page.baseurl }}/extension-dev-guide/depend-inj.html). To use a DI, add the `LayoutProcessor`, which adds the custom field to the address form class, to the `/Block/Checkout/` directory. The class must implement the `\Magento\Checkout\Block\Checkout\LayoutProcessorInterface` interface. Use the code sample above as an example of the `\Magento\Checkout\Block\Checkout\LayoutProcessorInterface::process()` method implementation. + +To add your `LayoutProcessor` class the corresponding pool of processors, specify the following (where `%unique_name%` and `%path\to\your\LayoutProcessor%` must be replaced by your real values) in the `/etc/frontend/di.xml` file: + +```xml + + + + %path\to\your\LayoutProcessor% + + + +``` + +## Step 2: Add a JS mixin to modify data submission {#mixin} + +Add a JS [mixin](https://glossary.magento.com/mixin), to the [server side](https://glossary.magento.com/server-side), to change the behavior of the component responsible for the data submission. + +In your custom module, define a mixin as a separate AMD module that returns a callback function. Add the mixin file anywhere in the `/view/frontend/web` directory. There are no strict requirements for the mixin file naming. + +The following code sample is a sample mixin modifying the behavior of `Magento_Checkout/js/action/set-shipping-information`, the component responsible for data submission between shipping and billing checkout steps: + +```js +/*jshint browser:true jquery:true*/ +/*global alert*/ +define([ + 'jquery', + 'mage/utils/wrapper', + 'Magento_Checkout/js/model/quote' +], function ($, wrapper, quote) { + 'use strict'; + + return function (setShippingInformationAction) { + + return wrapper.wrap(setShippingInformationAction, function (originalAction) { + var shippingAddress = quote.shippingAddress(); + if (shippingAddress['extension_attributes'] === undefined) { + shippingAddress['extension_attributes'] = {}; + } + + var attribute = shippingAddress.customAttributes.find( + function (element) { + return element.attribute_code === 'custom_field'; + } + ); + + shippingAddress['extension_attributes']['custom_field'] = attribute.value; + // pass execution to original action ('Magento_Checkout/js/action/set-shipping-information') + return originalAction(); + }); + }; +}); +``` + +When adding a field to the billing address form, you must modify the behavior of the `Magento_Checkout/js/action/place-order` or `Magento_Checkout/js/action/set-payment-information` component, depending on when do you need the custom field valued to be passed to the server side. + +To see an example of a mixing that modifies one of these components, see the [place-order-mixin.js]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/CheckoutAgreements/view/frontend/web/js/model/place-order-mixin.js) in the Magento_CheckoutAgreements [module](https://glossary.magento.com/module). + +## Step 3: Load your mixin {#load_mixin} + +Tell Magento to load your mixin for the corresponding JS component by adding the `requirejs-config.js` to the `/view/frontend/` directory. + +The following code sample shows an example utilizing the sample mixin added earlier: + +```js +var config = { + config: { + mixins: { + 'Magento_Checkout/js/action/set-shipping-information': { + '/js/action/set-shipping-information-mixin': true + } + } + } +}; +``` + +## Step 4: Add field to address model {#field} + +To add the field to the address model on the server side, add the `extension_attributes.xml` file in the `/etc/` directory. + +The following code is an example of an `extension_attributes.xml` file: + +```xml + + + + + + + +``` + +Clear the `generated/code` directory when you run the `setup:di:compile` command. New getter and setter methods will be added in `generated/code/Magento/Quote/Api/Data/AddressExtension.php` file. + +## Step 5: Access the value of the custom field on server side {#access} + +If you completed all the steps described in the previous sections, Magento will generate the interface that includes your custom attribute and you can access your field value. + +You can set/get these attributes values by creating an instance of the `Magento/Quote/Api/Data/AddressInterface.php` interface. + +```php +_addressInformation = $addressInformation; + parent::__construct($context, $data); + } + + /** + * Get custom Shipping Charge + * + * @return String + */ + public function getShippingCharge() + { + $extAttributes = $this->_addressInformation->getExtensionAttributes(); + return $extAttributes->getCustomField(); //get custom attribute data. + } +} +``` + +## Step 6: Run CLI commands + +1. Compile the code with: + + ```bash + bin/magento setup:di:compile + ``` + +1. Next, deploy static content: + + ```bash + bin/magento setup:static-content:deploy + ``` + +1. Then clean the cache: + + ```bash + bin/magento cache:clean + ``` + +{:.ref-header} +Related topic + +[EAV and extension attributes]({{ page.baseurl }}/extension-dev-guide/attributes.html) diff --git a/src/guides/v2.4/howdoi/checkout/checkout_new_step.md b/src/guides/v2.4/howdoi/checkout/checkout_new_step.md deleted file mode 120000 index 5b621357f1d..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_new_step.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_new_step.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_new_step.md b/src/guides/v2.4/howdoi/checkout/checkout_new_step.md new file mode 100644 index 00000000000..3383bb0477c --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_new_step.md @@ -0,0 +1,237 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add a new checkout step +subtitle: Customize Checkout +menu_order: 1 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-new-step/ +status: migrated +--- + +This topic describes how to create the [frontend](https://glossary.magento.com/frontend) part of the component, implementing a checkout step, and how to add it to the checkout flow. + +The default Magento [Checkout](https://glossary.magento.com/checkout) consists of two steps: + +- Shipping Information +- Review and Payments Information + +You can add a custom checkout step, it should be implemented as a [UI component](https://glossary.magento.com/ui-component). For the sake of compatibility, upgradability and easy maintenance, do not edit the default Magento code, add your customizations in a separate [module](https://glossary.magento.com/module). + +1. [Create the view part of the checkout step component](#create-view). +1. [Add your step to the Checkout page layout](#checkout). +1. [Create mixins for payment and shipping steps (optional)](#create-mixin). + +## Step 1: Create the view part of the checkout step component {#create-view} + +To create the view part of the new checkout step: + +1. Add a module directory (not covered in this topic). See [Build your module]({{ page.baseurl }}/extension-dev-guide/build/build.html) for details). All custom files must be stored there. For your checkout customization to be applied correctly, your custom module should depend on the `Magento_Checkout` module. Do not use `Ui` for your custom module name, because `%Vendor%_Ui` notation, required when specifying paths, might cause issues. +1. [Create the `.js` file implementing the view model](#component). +1. [Create a `.html` template for the component](#html-template). + +### Add the JavaScript file implementing the new step {#component} + +A new checkout step must be implemented as UI component. That is, its [JavaScript](https://glossary.magento.com/javascript) implementation must be a JavaScript module. + +The file must be stored under the `/view/frontend/web/js/view` directory. + +{:.bs-callout-info} +`` notation stands for the path to your module directory from the root directory. Usually it will be one of the following: `app/code//` or `vendor//module--`. For more details see [Conventional notations for paths to modules and themes]({{ page.baseurl }}/frontend-dev-guide/conventions.html) + +A sample `my-step-view.js` with comments follows: + +```js +define([ + 'ko', + 'uiComponent', + 'underscore', + 'Magento_Checkout/js/model/step-navigator' +], function (ko, Component, _, stepNavigator) { + 'use strict'; + + /** + * mystep - is the name of the component's .html template, + * _ - is the name of your module directory. + */ + return Component.extend({ + defaults: { + template: '_/mystep' + }, + + // add here your logic to display step, + isVisible: ko.observable(true), + + /** + * @returns {*} + */ + initialize: function () { + this._super(); + + // register your step + stepNavigator.registerStep( + // step code will be used as step content id in the component template + 'step_code', + // step alias + null, + // step title value + 'Step Title', + // observable property with logic when display step or hide step + this.isVisible, + + _.bind(this.navigate, this), + + /** + * sort order value + * 'sort order value' < 10: step displays before shipping step; + * 10 < 'sort order value' < 20 : step displays between shipping and payment step + * 'sort order value' > 20 : step displays after payment step + */ + 15 + ); + + return this; + }, + + /** + * The navigate() method is responsible for navigation between checkout steps + * during checkout. You can add custom logic, for example some conditions + * for switching to your custom step + * When the user navigates to the custom step via url anchor or back button we_must show step manually here + */ + navigate: function () { + this.isVisible(true); + }, + + /** + * @returns void + */ + navigateToNextStep: function () { + stepNavigator.next(); + } + }); +}); +``` + +### Add the .html template {#html-template} + +In the module directory, add the `.html` template for the component. It must be located under the `/view/frontend/web/template` directory. + +A sample `mystep.html` follows: + +```html + +
  • +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
  • +``` + +## Step 2: Add your step to the Checkout page layout {#checkout} + +For the new step to be displayed on the page, you need to declare it in the Checkout page layout, which is defined in `checkout_index_index.xml`. + +So you need to add an [extending]({{ page.baseurl }}/frontend-dev-guide/layouts/layout-extend.html) `checkout_index_index.xml` layout file in the following location: `/view/frontend/layout/checkout_index_index.xml` + +A sample `checkout_index_index.xml` follows: + +```xml + + + + + + + + + + + + + %Vendor%_%Module%/js/view/my-step-view + + + + 2 + + + + + + + + + + + + + + +``` + +## Step 3: Create mixins for payment and shipping steps (optional) {#create-mixin} + +If your new step is the first step, you have to create mixins for the payment and shipping steps. Otherwise, two steps will be activated on the loading of the checkout. + +Create a mixin as follows: + +1. Create a `Vendor/Module/view/base/requirejs-config.js` file with these contents; + + ```js + var config = { + 'config': { + 'mixins': { + 'Magento_Checkout/js/view/shipping': { + 'Vendor_Module/js/view/shipping-payment-mixin': true + }, + 'Magento_Checkout/js/view/payment': { + 'Vendor_Module/js/view/shipping-payment-mixin': true + } + } + } + } + ``` + +1. Create the mixin. We'll use the same mixin for both payment and shipping: + + ```js + define([ + 'ko' + ], function (ko) { + 'use strict'; + + var mixin = { + + initialize: function () { + // set visible to be initially false to have your step show first + this.visible = ko.observable(false); + this._super(); + + return this; + } + }; + + return function (target) { + return target.extend(mixin); + }; + }); + ``` + +{:.bs-callout-info} +For your changes to be applied, you might need to [clean layout cache]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-cache.html ) and [static view file cache]({{ page.baseurl }}/frontend-dev-guide/cache_for_frontdevs.html#clean_static_cache). For more info on mixins, see [JS Mixins]({{ page.baseurl }}/javascript-dev-guide/javascript/js_mixins.html). diff --git a/src/guides/v2.4/howdoi/checkout/checkout_order.md b/src/guides/v2.4/howdoi/checkout/checkout_order.md deleted file mode 120000 index f631734e496..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_order.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_order.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_order.md b/src/guides/v2.4/howdoi/checkout/checkout_order.md new file mode 100644 index 00000000000..0bd68cf11f3 --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_order.md @@ -0,0 +1,131 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add custom validations before order placement +subtitle: Customize Checkout +menu_order: 4 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-order-validation/ +status: migrated +--- + +This topic describes how to add custom validations to be performed before the order is placed during [checkout](https://glossary.magento.com/checkout). Namely, the validations which are performed after a shopper clicks the **Place Order** button. Writing the validation logic itself is not covered in this topic. + +To add custom validations before the order placement action, you must do the following: + +1. [Create the validator](#validator). +1. [Add validator to the validators pool](#pool). +1. [Declare the validation in the checkout layout](#layout). + +## Step 1: Create the validator {#validator} + +For the sake of compatibility, upgradability and easy maintenance, do not edit the default Magento code, add your customizations in a separate module. For your checkout customization to be applied correctly, your custom module should [depend]({{ page.baseurl }}/extension-dev-guide/build/composer-integration.html) on the `Magento_Checkout` module. Do not use `Ui` for your custom module name, because `%Vendor%_Ui` notation, required when specifying paths, might cause issues. + +In your custom module directory, create a `.js` file implementing the validator. It should be located under `/view/frontend/web/js/model` directory. + +Following is a sample of the validator `.js` file. It must necessarily implement the `validate()` method: + +```js +define( + ['mage/translate', 'Magento_Ui/js/model/messageList'], + function ($t, messageList) { + 'use strict'; + return { + validate: function () { + const isValid = false; //Put your validation logic here + + if (!isValid) { + messageList.addErrorMessage({ message: $t('a possible failure message ... ') }); + } + + return isValid; + } + } + } +); +``` + +## Step 2: Add validator to the validators pool {#pool} + +Your custom validator must be added to the pool of "additional validators". To do this, in the `/view/frontend/web/js/view` directory create a new `.js` file with the following content: + +```js +define( + [ + 'uiComponent', + 'Magento_Checkout/js/model/payment/additional-validators', + '/js/model/your-validator' + ], + function (Component, additionalValidators, yourValidator) { + 'use strict'; + additionalValidators.registerValidator(yourValidator); + return Component.extend({}); + } +); +``` + +## Step 3: Declare the validation in the checkout layout {#layout} + +In your custom module directory, create a new `/view/frontend/layout/checkout_index_index.xml` file. + +In this file, add the following: + +```xml + + + + + + + + + + + + + + + + + + + %your_module_dir%/js/view/%your-validation% + + + + + + + + + + + + + + + + + + +``` + +## Step 4: Deploy static content and clean cache + +{:.bs-callout-info} +These commands are for production mode. They are not necessary when in developer mode. + +1. Deploy static content: + + ```bash + bin/magento setup:static-content:deploy + ``` + +1. Clean cache: + + ```bash + bin/magento cache:clean + ``` diff --git a/src/guides/v2.4/howdoi/checkout/checkout_overview.md b/src/guides/v2.4/howdoi/checkout/checkout_overview.md deleted file mode 120000 index 6f1ba76c550..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_overview.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_overview.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_overview.md b/src/guides/v2.4/howdoi/checkout/checkout_overview.md new file mode 100644 index 00000000000..fbd2dc47c64 --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_overview.md @@ -0,0 +1,44 @@ +--- +layout: tutorial +group: how-do-i +subgroup: checkout +title: Customize Checkout +menu_title: Initial Tasks +menu_node: +level3_subgroup: checkout-tutorial +menu_order: 0 +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/ +status: migrated +--- + +Magento [checkout](https://glossary.magento.com/checkout) is implemented using the [UI components]({{ page.baseurl }}/ui_comp_guide/bk-ui_comps.html). +Out of the box, the checkout consists of two steps: + +- Shipping Information +- Review and Payment Information + +The checkout totals and the corresponding side-bar are only displayed after the first step is completed. + +The only [exception](https://glossary.magento.com/exception) is checkout of virtual and/or downloadable products: if there are only these types of products in the shopping cart, checkout is automatically transformed to one-step procedure, because shipping information is not required. + + {:.bs-callout-info} +For the sake of compatibility, upgradability, and easy maintenance, do not edit the default Magento code. Add your customizations in a custom [module](https://glossary.magento.com/module). + +## List of available customizations + +You can customize the default checkout in multiple ways. This tutorial includes the following customizations: + +- [Add a new checkout step]({{ page.baseurl }}/howdoi/checkout/checkout_new_step.html) +- [Customize the view of an existing step]({{ page.baseurl }}/howdoi/checkout/checkout_customize.html) +- [Add a custom payment method to checkout]({{ page.baseurl }}/howdoi/checkout/checkout_payment.html) +- [Add custom validations before order placement]({{ page.baseurl }}/howdoi/checkout/checkout_order.html) +- [Add custom shipping carrier]({{ page.baseurl }}/howdoi/checkout/checkout-add-custom-carrier.html) +- [Add custom shipping carrier validations]({{ page.baseurl }}/howdoi/checkout/checkout_carrier.html) +- [Add custom input mask for ZIP code]({{ page.baseurl }}/howdoi/checkout/checkout_zip.html) +- [Add a custom template for a form field on Checkout page]({{ page.baseurl }}/howdoi/checkout/checkout_edit_form.html) +- [Add a new input form to checkout]({{ page.baseurl }}/howdoi/checkout/checkout_form.html) +- [Add a new field in address form]({{ page.baseurl }}/howdoi/checkout/checkout_new_field.html) +- [Add custom shipping address renderer]({{ page.baseurl }}/howdoi/checkout/checkout_address.html) +- [Add a custom field for an offline payment method]({{ page.baseurl }}/howdoi/checkout/checkout_payment_new_field.html) diff --git a/src/guides/v2.4/howdoi/checkout/checkout_payment.md b/src/guides/v2.4/howdoi/checkout/checkout_payment.md index 955d12e39c5..323d648fb2a 100644 --- a/src/guides/v2.4/howdoi/checkout/checkout_payment.md +++ b/src/guides/v2.4/howdoi/checkout/checkout_payment.md @@ -8,6 +8,8 @@ menu_order: 3 level3_subgroup: checkout-tutorial functional_areas: - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-payment-method/ +status: migrated --- Out of the box, Magento [checkout](https://glossary.magento.com/checkout) consists of two steps: @@ -228,7 +230,7 @@ If your [module](https://glossary.magento.com/module) adds several payment metho ## Step 3: Create the template for the payment method component {#template} -In your custom module directory create a new `/view/frontend/web/template/.html` file. The template can use [Knockout JS](http://knockoutjs.com/) syntax. You can find a sample `.html` template in any module implementing payment methods, for example the Paypal module. +In your custom module directory create a new `/view/frontend/web/template/.html` file. The template can use [Knockout JS](https://knockoutjs.com/) syntax. You can find a sample `.html` template in any module implementing payment methods, for example the Paypal module. The template for rendering the Paypal Express payment method in checkout is [`/frontend/web/template/payment/paypal-express.html`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Paypal/view/frontend/web/template/payment/paypal-express.html). diff --git a/src/guides/v2.4/howdoi/checkout/checkout_payment_new_field.md b/src/guides/v2.4/howdoi/checkout/checkout_payment_new_field.md deleted file mode 120000 index ffb492f20f6..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_payment_new_field.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_payment_new_field.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_payment_new_field.md b/src/guides/v2.4/howdoi/checkout/checkout_payment_new_field.md new file mode 100644 index 00000000000..3d69fe8dced --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_payment_new_field.md @@ -0,0 +1,364 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add a custom field for an offline payment method +contributor_name: Ziffity +contributor_link: https://www.ziffity.com/ +subtitle: Customize Checkout +menu_order: 101 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-payment-field/ +status: migrated +--- + +This topic describes how to add a custom field to an offline payment method in the payment step of the checkout. The custom field allows the buyer to enter a comment about a purchase order. + +## Prerequisites + +{:.bs-callout-info} +The `Purchase Order` payment method must be enabled in the storefront for this task. Ensure this payment method is enabled by navigating to **Stores** > **Settings** > **Configuration** > **Sales** > **Payment Methods** > **Other Payment Methods** > **Purchase Order** in the Admin. + +You must perform following steps to add a custom field to an offline payment method: + +1. [Create a new module](#create-module). +1. [Add a `db_schema.xml` file](#add-db-schema). +1. [Add a `requirejs` file to the module](#add-require-js). +1. [Override the vendor files](#override-vendor-files). +1. [Add an Observer](#add-observer). +1. [Compile and deploy the module](#compile-deploy). +1. [Verify that the module works](#verify-implementation). + +Let’s go through each step. + +## Step 1: Create a new module {#create-module} + +[Create a new module]({{ site.baseurl }}/videos/fundamentals/create-a-new-module/) named `Learning/CustomField` and register it. + +## Step 2 Add a `db_schema.xml` file {#add-db-schema} + +Add the `paymentpocomment` column in the `quote_payment` and `sales_order_payment` tables using the [declarative schema]({{page.baseurl}}/extension-dev-guide/declarative-schema/db-schema.html) method. + +Create the `app/code/Learning/CustomField/etc/db_schema.xml` and define the declarative schema as follows: + +```xml + + + +
    + + +
    +
    +``` + +## Step 3: Add a requirejs file to the module {#add-require-js} + +Create the `app/code/Learning/CustomField/view/frontend/requirejs-config.js` file and add the following code: + +```js + var config = { + map: { + '*': { + 'Magento_OfflinePayments/js/view/payment/offline-payments':'Learning_CustomField/js/view/payment/offline-payments', + } + } +} +``` + +## Step 4: Override the vendor files {#override-vendor-files} + +We must override the behavior of the following files to display the custom field: + +- [Magento_OfflinePayments/view/frontend/web/js/view/payment/offline-payments.js](#offline-payment) +- [Magento_OfflinePayments/view/frontend/web/js/view/payment/method-renderer/purchaseorder-method.js](#purchaseorder-method) +- [Magento_OfflinePayments/view/frontend/web/template/payment/purchaseorder-form.html](#purchaseorder-form) + +### Override the `offline-payments.js` {#offline-payment} + +Override the `Magento_OfflinePayments/view/frontend/web/js/view/payment/offline-payments.js` file to change the renderer of the Purchase Order payment method. + +Create the `app/code/Learning/CustomField/view/frontend/web/js/view/payment/offline-payments.js` file and add the following code: + +```js +define( + [ + 'uiComponent', + 'Magento_Checkout/js/model/payment/renderer-list' + ], + function ( + Component, + rendererList + ) { + 'use strict'; + rendererList.push( + { + type: 'checkmo', + component: 'Magento_OfflinePayments/js/view/payment/method-renderer/checkmo-method' + }, + { + type: 'banktransfer', + component: 'Magento_OfflinePayments/js/view/payment/method-renderer/banktransfer-method' + }, + { + type: 'cashondelivery', + component: 'Magento_OfflinePayments/js/view/payment/method-renderer/cashondelivery-method' + }, + { + type: 'purchaseorder', + component: 'Learning_CustomField/js/view/payment/method-renderer/purchaseorder-method' + } + ); + /** Add view logic here if needed */ + return Component.extend({}); + } +); +``` + +### Override the `purchaseorder-method.js` {#purchaseorder-method} + +It is also necessary to override the `Magento_OfflinePayments/view/frontend/web/js/view/payment/method-renderer/purchaseorder-method.js` file. + +The `template` path value used in this file must be altered to use the custom template. Also, the logic to get the `additional_data` is implemented in this file. + +Create the `app/code/Learning/CustomField/view/frontend/web/js/view/payment/method-renderer/purchaseorder-method.js` file and add the following code: + +```js +define([ + 'Magento_Checkout/js/view/payment/default', + 'jquery', + 'mage/validation' +], function (Component, $) { + 'use strict'; + + return Component.extend({ + defaults: { + template: 'Learning_CustomField/payment/purchaseorder-form', + purchaseOrderNumber: '' + }, + + /** @inheritdoc */ + initObservable: function () { + this._super() + .observe('purchaseOrderNumber'); + + return this; + }, + + /** + * @return {Object} + */ + getData: function () { + return { + method: this.item.method, + 'po_number': this.purchaseOrderNumber(), + 'additional_data': { + 'po_number': $('#po_number').val(), + 'paymentpocomment': $('#purchaseorder_paymentpocomment').val(), + } + }; + }, + + /** + * @return {jQuery} + */ + validate: function () { + var form = 'form[data-role=purchaseorder-form]'; + + return $(form).validation() && $(form).validation('isValid'); + } + }); +}); +``` + +### Override the `purchaseorder-form.html` {#purchaseorder-form} + +We must override the `Magento_OfflinePayments/view/frontend/web/template/payment/purchaseorder-form.html` template file to add the custom input field (**Purchase Order Comment**). + +Create the `app/code/Learning/CustomField/view/frontend/web/template/payment/purchaseorder-form.html` file and add the following code: + +{% collapsible Show code %} + +```html +
    +
    + + +
    + +
    + + + +
    + + + +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    + +
    +
    +
    +
    +``` +{% endcollapsible %} + +## Step 5: Add an Observer {#add-observer} + +Create an Observer file to save the custom field data to the order. For the Observer file an `events.xml` file is required to call the observer for a particular event. For this example, the `checkout_onepage_controller_success_action` event is used. + +Create the `app/code/Learning/CustomField/etc/frontend/events.xml` file and add the following code: + +```xml + + + + + + + +``` + +Then create the `app/code/Learning/CustomField/Observer/Frontend/Sales/OrderPaymentSaveBefore.php` file. + +{% collapsible Show code %} + +```php +order = $order; + $this->quoteRepository = $quoteRepository; + $this->logger = $logger; + $this->_serialize = $serialize; + } + /** + * Execute observer + * + * @param \Magento\Framework\Event\Observer $observer + * @return void + */ + public function execute(\Magento\Framework\Event\Observer $observer) + { + $orderids = $observer->getEvent()->getOrderIds(); + if(!$orderids){ + foreach ($orderids as $orderid) { + $order = $this->_order->load($orderid); + $method = $order->getPayment()->getMethod(); + if($method == 'purchaseorder') { + $quote_id = $order->getQuoteId(); + $quote = $this->quoteRepository->get($quote_id); + $paymentQuote = $quote->getPayment(); + $paymentOrder = $order->getPayment(); + $paymentOrder->setData('paymentpocomment',$paymentQuote->getPaymentpocomment()); + $paymentOrder->save(); + } + } + } + } +} +``` +{% endcollapsible %} + +## Step 6: Compile and deploy the module {#compile-deploy} + +Run the following sequence of commands to compile and deploy your custom module. + +1. Enable the new module. + + ```bash + bin/magento module:enable Learning_CustomField + ``` + +1. Install the new module. + + ```bash + bin/magento setup:upgrade + ``` + +1. Compile the code. + + ```bash + bin/magento setup:di:compile + ``` + +1. Deploy the static files. + + ```bash + bin/magento setup:static-content:deploy + ``` + +## Step 7: Verify that the module works {#verify-implementation} + +Use the following steps to verify your changes work as expected. + +1. Go to the storefront as a guest user and add a product to the cart. + +1. Go to the checkout page and select the **Purchase Order** payment. + +1. Verify that the **Purchase Order Comment** field is visible. + + ![Custom field in checkout page]({{ site.baseurl }}/common/images/custom_field_payment.png) + +1. Fill the purchase order comment field in the checkout and place an order. + +1. Verify that the entered value is stored in the `paymentpocomment` column of the `sales_order_payment` table. diff --git a/src/guides/v2.4/howdoi/checkout/checkout_shipping_methods.md b/src/guides/v2.4/howdoi/checkout/checkout_shipping_methods.md deleted file mode 120000 index c2b20658e19..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_shipping_methods.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_shipping_methods.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_shipping_methods.md b/src/guides/v2.4/howdoi/checkout/checkout_shipping_methods.md new file mode 100644 index 00000000000..0a4f9f2024a --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_shipping_methods.md @@ -0,0 +1,139 @@ +--- +layout: tutorial +group: how-do-i +subgroup: checkout +title: Customize the list of shipping methods +subtitle: Customize Checkout +menu_order: 100 +level3_subgroup: checkout-tutorial +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-shipping-methods/ +status: migrated +--- + +This topic describes how to customize list of shipping methods displayed on the checkout page. + +Let's consider a case where you need to add a collapsible text field with description for each shipping method in this list. To achieve this, you need to take the following steps: + +1. [Create a new template for the shipping method item](#method-item). +1. [Create a new template for the shipping method list](#method-list). +1. [Override the shipping step configuration](#shipping). + +## Step 1: Create new template for shipping method item {#method-item} + +In your custom module directory, create a new file: `/view/frontend/web/template/custom-method-item-template.html`. In this file, add the following code. + +It is copied from the `/view/frontend/web/template/shipping-address/shipping-method-item.html` template, with the following modifications: + +* A `` element added to contain the shipping method description +* A column with trigger elements that provide the collapse/expand functionality added +* The entire sample wrapped in `` to provide the general collapsible context for rows + +```html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## Step 2: Create new template for shipping methods list {#method-list} + +In your custom module directory, create a new file: `/view/frontend/web/template/custom-method-list-template.html`. In this file, add the following code. It uses the code from the `app/code/Magento/Checkout/view/frontend/web/template/shipping-address/shipping-method-list.html` template, with the following modifications: + +* A column for triggers added in `` +* `tbody` moved to the item template for collapsible context + +```html +
    + + + +
    + + + + + +
    +
    +``` + +## Step 3: Override shipping step configuration {#shipping} + +In your custom module directory, create a new file: `/view/frontend/layout/checkout_index_index.xml`. In this file, add the following code. + +It overrides the `shippingMethodListTemplate` and `shippingMethodItemTemplate` properties of `/view/frontend/web/js/view/shipping.js`: + +```html + + + + + + + + + + + + + + + Vendor_Checkout/custom-method-item-template + Vendor_Checkout/custom-method-list-template + + + + + + + + + + + + + + +``` diff --git a/src/guides/v2.4/howdoi/checkout/checkout_zip.md b/src/guides/v2.4/howdoi/checkout/checkout_zip.md deleted file mode 120000 index 5b278d7b919..00000000000 --- a/src/guides/v2.4/howdoi/checkout/checkout_zip.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/checkout/checkout_zip.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/checkout/checkout_zip.md b/src/guides/v2.4/howdoi/checkout/checkout_zip.md new file mode 100644 index 00000000000..1352eee3320 --- /dev/null +++ b/src/guides/v2.4/howdoi/checkout/checkout_zip.md @@ -0,0 +1,119 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add custom input mask for ZIP code +subtitle: Customize Checkout +menu_order: 7 +level3_subgroup: checkout-tutorial +functional_areas: + - Checkout +redirect_to: https://developer.adobe.com/commerce/php/tutorials/frontend/custom-checkout/add-input-mask/ +status: migrated +--- + +This topic describes how a developer can add custom input masks. + +When a shopper specifies the country and ZIP code in the shipping address during [checkout](https://glossary.magento.com/checkout) or in the shopping cart, Magento checks if the format of the entered code is valid for the specified country. This validation is implemented using the input masks for the ZIP code field. In Magento, these input masks are regular expressions which define which format is allowed. + +In Magento the input masks for the **ZIP code** field are specified in the `/etc/zip_codes.xml`. Input masks are specified per country, and are entered in the form of regular expressions. +The syntax of defined by the [zip_code.xsd]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Directory/etc/zip_codes.xsd) scheme. + +The following table defines the `zip` node attributes: + + Attribute name | Required | Description +--- | --- | --- +`countryCode` | Yes | The country code (Alpha-2 format) for which the zip is defined + +```xml + + + +``` + +The following table defines the `code` node attributes: + + Attribute name | Required | Description +--- | --- | --- +`id` | Yes | A random unique name within the same list. +`example` | Yes | An example of the allowed pattern. +`active` | No | Defines if this zip pattern is active or not. + +You can define several zip `code` patterns for the same country, by passing a list of `codes`. +```xml + + ^[0-9]{5}$ + ^[a-zA-z]{2}[0-9]{4}$ + +``` + +For the sake of compatibility, upgradability, and easy maintenance, do not edit the default Magento code. Add your customizations in a separate, custom module. For your ZIP code input mask customization to be applied correctly, your custom module should depend on the `Magento_Directory` module. Do not use `Ui` for your custom module name, because `%Vendor%_Ui` notation, required when specifying paths, might cause issues. + +## Add custom ZIP code input masks {#add} + +To add custom ZIP code input masks or change the default ones, create a new `zip_codes.xml` in the `/etc` directory. + +The content of the file should be similar to the following sample: + +```xml + + + + + + + + + ^[0-9]{5}\-[0-9]{4}$ + ^[0-9]{5}$ + + + +``` + +## Modify default values in existing mask {#modify} + +To change (override the default value) the existing mask: + +1. Open `zip_codes.xml`. +1. Copy in the related nodes. +1. Change the regular expression defining the mask and the value of `example` correspondingly. + +Example of changing the default input mask: + +In the default `/etc/zip_codes.xml` the following mask is set for France: + +```xml + + + +... + + + ^[0-9]{5}$ + + +... + +``` + +To change this mask, add the following code in your `zip_codes.xml`: + +```xml + + + +... + + + + ^[a-zA-Z]{1}[0-9]{3}$ + + +... + +``` + +## Remove a mask {#remove} + +To remove a mask, in your `zip_codes.xml` add the corresponding node and set `active` attribute of `` to `false`. diff --git a/src/guides/v2.4/howdoi/custom-attributes/introduction.md b/src/guides/v2.4/howdoi/custom-attributes/introduction.md deleted file mode 120000 index 3b33f824c20..00000000000 --- a/src/guides/v2.4/howdoi/custom-attributes/introduction.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/custom-attributes/introduction.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/custom-attributes/introduction.md b/src/guides/v2.4/howdoi/custom-attributes/introduction.md new file mode 100644 index 00000000000..83a1471902c --- /dev/null +++ b/src/guides/v2.4/howdoi/custom-attributes/introduction.md @@ -0,0 +1,15 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Custom attributes +menu_node: +level3_subgroup: custom-attributes +menu_order: 1 +contributor_name: Adarsh Manickam +contributor_link: https://github.com/drpayyne +redirect_to: https://developer.adobe.com/commerce/php/tutorials/admin/custom-text-field-attribute/ +status: migrated +--- + +The tutorials under this section guide Magento developers on setting up and configuring custom attributes. diff --git a/src/guides/v2.4/howdoi/custom-attributes/text-field.md b/src/guides/v2.4/howdoi/custom-attributes/text-field.md deleted file mode 120000 index d46108f3610..00000000000 --- a/src/guides/v2.4/howdoi/custom-attributes/text-field.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/custom-attributes/text-field.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/custom-attributes/text-field.md b/src/guides/v2.4/howdoi/custom-attributes/text-field.md new file mode 100644 index 00000000000..1cde0383bcb --- /dev/null +++ b/src/guides/v2.4/howdoi/custom-attributes/text-field.md @@ -0,0 +1,350 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Add a custom text field attribute +menu_node: +level3_subgroup: custom-attributes +menu_order: 2 +contributor_name: Adarsh Manickam +contributor_link: https://github.com/drpayyne +redirect_to: https://developer.adobe.com/commerce/php/tutorials/admin/custom-text-field-attribute/ +status: migrated +--- + +## Overview + +This tutorial describes how a developer can create a custom text field attribute for the Customer entity using code. This will reflect in both the [Customer Grid]({{ site.user_guide_url }}/customers/customer-account-manage.html) and the [Customer Form]({{ site.user_guide_url }}/customers/customer-account-update.html) in the Admin. + +This Customer attribute will be used to save and view the customer's ID in an external system, as an example. It will be created as an EAV attribute in a data patch. The EAV model allows a developer to add custom functionality to the Magento entities without modifying the core databases and schemas. Data patches are run just once, so this code will create the custom attribute and will never run again, which could cause issues. + +## Code + +### Create the data patch class + +Create a data patch class called `ExternalId` under the `\ExampleCorp\Customer\Setup\Patch\Data` namespace. This makes Magento execute the data patch automatically when `bin/magento setup:upgrade` is run. All data patches must implement the `\Magento\Framework\Setup\Patch\DataPatchInterface` interface. + +```php +moduleDataSetup = $moduleDataSetup; + $this->customerSetup = $customerSetupFactory->create(['setup' => $moduleDataSetup]); + $this->attributeResource = $attributeResource; + $this->logger = $logger; + } + ``` + +### Implement the apply method + +There are five steps in developing a data patch. All the steps below are written inside the `apply` method. + +1. Starting and ending the setup execution. This turns off foreign key checks and sets the SQL mode. + + ```php + $this->moduleDataSetup->getConnection()->startSetup(); + + /* + Attribute creation code must be run between these two lines + to ensure that the attribute is created smoothly. + */ + + $this->moduleDataSetup->getConnection()->endSetup(); + ``` + +1. Add the text field customer attribute with the required settings. + + The third parameter for `addAttribute` is an array of settings required to configure the attribute. Passing an empty array uses all the default values for each possible setting. To keep the code to a minimum, just declare the settings needing to be overridden and the rest of the settings will be used from the Magento defaults. The settings overrides can be done as described below. + + {:.bs-callout-info} + For creating a simple text field, it is not necessary to override the settings for `backend` (database field type) and `input` (frontend HTML input type), as they default to `varchar` and `text` respectively. + + {:.bs-callout-info} + The `\Magento\Customer\Api\CustomerMetadataInterface` interface contains constants like the customer entity's code and the default attribute set code, which can be referenced. + + ```php + $this->customerSetup->addAttribute( + CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, // entity type code + 'externalcorp_external_id', // unique attribute code + [ + 'label' => 'External ID', + 'required' => 0, + 'position' => 200, + 'system' => 0, + 'user_defined' => 1, + 'is_used_in_grid' => 1, + 'is_visible_in_grid' => 1, + 'is_filterable_in_grid' => 1, + 'is_searchable_in_grid' => 1, + ] + ); + ``` + + | Setting Key | Description | + | --- | --- | + | `label` | `External ID` - Label for displaying the attribute value | + | `required` | `0` - Attribute will be an optional field in the customer form | + | `position` | `200` - Sort order in the customer form | + | `system` | `0` - Not a system-defined attribute | + | `user_defined` | `1` - A user-defined attribute | + | `is_used_in_grid` | `1` - Ready for use in the customer grid | + | `is_visible_in_grid` | `1` - Visible in the customer grid | + | `is_filterable_in_grid` | `1` - Filterable in the customer grid | + | `is_searchable_in_grid` | `1` - Searchable in the customer grid | + +1. Add attribute to an attribute set and group. + + {:.bs-callout-info} + There is only one attribute set and group for the customer entity. The default attribute set ID is a constant defined the `CustomerMetadataInterface` interface and setting the attribute group ID to null makes Magento use the default attribute group ID for the customer entity. + + ```php + $this->customerSetup->addAttributeToSet( + CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, // entity type code + CustomerMetadataInterface::ATTRIBUTE_SET_ID_CUSTOMER, // attribute set ID + null, // attribute group ID + 'externalcorp_external_id' // unique attribute code + ); + ``` + +1. Make the attribute visible in the customer form. + + ```php + // Get the newly created attribute's model + $attribute = $this->customerSetup->getEavConfig() + ->getAttribute(CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, 'externalcorp_external_id'); + + // Make attribute visible in Admin customer form + $attribute->setData('used_in_forms', [ + 'adminhtml_customer' + ]); + + // Save modified attribute model using its resource model + $this->attributeResource->save($attribute); + ``` + +1. Gracefully handle exceptions. + + ```php + try { + // All the code inside the apply method goes into the try block. + } catch (Exception $exception) { + $this->logger->err($exception->getMessage()); + } + ``` + +### Implement rest of the interface + +This data patch does not have any other patch as a dependency, and this data patch was not renamed earlier, so both `getDependencies` and `getAliases` can return an empty array. + +```php +public static function getDependencies(): array +{ + return []; +} + +public function getAliases(): array +{ + return []; +} +``` + +### Execute the data patch + +Run `bin/magento setup:upgrade` from the Magento root to execute the newly added data patch. + +- The attribute is created in the customer form under the _Account Information_ section. + +![Custom attribute in the customer form]({{ site.baseurl }}/common/images/custom-attributes/customer-text-form.png){:width="600px"} + +- The attribute is displayed in the customer grid. + +![Custom attribute in the customer grid]({{ site.baseurl }}/common/images/custom-attributes/customer-text-grid.png){:width="600px"} + +### Code reference + +```php +moduleDataSetup = $moduleDataSetup; + $this->customerSetup = $customerSetupFactory->create(['setup' => $moduleDataSetup]); + $this->attributeResource = $attributeResource; + $this->logger = $logger; + } + + /** + * Get array of patches that have to be executed prior to this. + * + * Example of implementation: + * + * [ + * \Vendor_Name\Module_Name\Setup\Patch\Patch1::class, + * \Vendor_Name\Module_Name\Setup\Patch\Patch2::class + * ] + * + * @return string[] + */ + public static function getDependencies(): array + { + return []; + } + + /** + * Get aliases (previous names) for the patch. + * + * @return string[] + */ + public function getAliases(): array + { + return []; + } + + /** + * Run code inside patch + */ + public function apply() + { + // Start setup + $this->moduleDataSetup->getConnection()->startSetup(); + + try { + // Add customer attribute with settings + $this->customerSetup->addAttribute( + CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, + 'externalcorp_external_id', + [ + 'label' => 'External ID', + 'required' => 0, + 'position' => 100, + 'system' => 0, + 'user_defined' => 1, + 'is_used_in_grid' => 1, + 'is_visible_in_grid' => 1, + 'is_filterable_in_grid' => 1, + 'is_searchable_in_grid' => 1, + ] + ); + + // Add attribute to default attribute set and group + $this->customerSetup->addAttributeToSet( + CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, + CustomerMetadataInterface::ATTRIBUTE_SET_ID_CUSTOMER, + null, + 'externalcorp_external_id' + ); + + // Get the newly created attribute's model + $attribute = $this->customerSetup->getEavConfig() + ->getAttribute(CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, 'externalcorp_external_id'); + + // Make attribute visible in Admin customer form + $attribute->setData('used_in_forms', [ + 'adminhtml_customer' + ]); + + // Save attribute using its resource model + $this->attributeResource->save($attribute); + } catch (Exception $e) { + $this->logger->err($e->getMessage()); + } + + // End setup + $this->moduleDataSetup->getConnection()->endSetup(); + } +} +``` diff --git a/src/guides/v2.4/howdoi/customize-form-configuration.md b/src/guides/v2.4/howdoi/customize-form-configuration.md deleted file mode 120000 index c66115620b1..00000000000 --- a/src/guides/v2.4/howdoi/customize-form-configuration.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/howdoi/customize-form-configuration.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/customize-form-configuration.md b/src/guides/v2.4/howdoi/customize-form-configuration.md new file mode 100644 index 00000000000..6fa1ce919e7 --- /dev/null +++ b/src/guides/v2.4/howdoi/customize-form-configuration.md @@ -0,0 +1,85 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Customize the form configuration +subtitle: Customize Product Creation Form +menu_node: +level3_subgroup: product-creation-form +menu_order: 2 +redirect_to: https://developer.adobe.com/commerce/php/tutorials/admin/custom-product-creation-form/configuration/ +status: migrated +--- + +Customizing the form config file (that is, declarative customization) is preferable for changes like introducing new fields, field sets and modals. + +To customize the product creation form, take the following steps: + +1. In your custom module, add an empty `product_form.xml` in the `/view/adminhtml/ui_component/` directory. + +1. In this file, add content similar to the following: + +```xml +
    + +... + +
    + + + %field set label as displayed in UI% + %order for displaying% + + + +
    + + + %Nested fieldset Label as displayed in UI% + true + + + + + + %value% + %value% +.... + + + +
    +
    +... +
    +``` + +## Add new elements {#add-elements} + +By default, the new elements (fields, field sets, modals, grids) which you add in the form configuration file, are displayed on the form whatever product is created; that is, for all [product types](https://glossary.magento.com/product-types). + +In the [modifier class described further]({{page.baseurl}}/howdoi/customize-modifier-class.html), you can set the conditions for displaying certain elements for certain product types. + +## Customize existing fields and field sets {#customize} + +Your `product_form.xml` is merged with the same files from the other modules. So there is no need to copy their content, you only need to define changes. Even if you want to customize the existing entities, you only have to mention those options, the values of which are customized. + +To customize an existing entity, declare only those options, the values of which are customized, do not copy its entire configuration. + +To delete an existing field, or field set, in your `product_form.xml` use the following construction: + +```xml +... +
    + + true + +
    +... +``` + +For reference, view the product form configuration files of the Magento modules: + +* `/view/adminhtml/ui_component/product_form.xml` +* `/view/adminhtml/ui_component/product_form.xml` +* `/view/adminhtml/ui_component/product_form.xml` diff --git a/src/guides/v2.4/howdoi/customize-modifier-class.md b/src/guides/v2.4/howdoi/customize-modifier-class.md deleted file mode 120000 index 61a61bc6417..00000000000 --- a/src/guides/v2.4/howdoi/customize-modifier-class.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/howdoi/customize-modifier-class.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/customize-modifier-class.md b/src/guides/v2.4/howdoi/customize-modifier-class.md new file mode 100644 index 00000000000..a068047af85 --- /dev/null +++ b/src/guides/v2.4/howdoi/customize-modifier-class.md @@ -0,0 +1,129 @@ +--- +layout: tutorial +group: how-do-i +subgroup: +title: Customize using a modifier class +subtitle: Customize Product Creation Form +menu_node: +level3_subgroup: product-creation-form +menu_order: 3 +redirect_to: https://developer.adobe.com/commerce/php/tutorials/admin/custom-product-creation-form/modifier-class/ +status: migrated +--- + +[Modifier classes]({{ page.baseurl }}/ui_comp_guide/concepts/ui_comp_modifier_concept.html) should be used when static declaration is not applicable. For example, in cases when additional data should be loaded from database. Also, modifier is a place where you add validations to display only certain fields for certain product types. + +In the run time, the form structure set in the modifier is merged with the configuration that comes from the `product_form.xml` configuration. + +The `Magento\Catalog\Ui\DataProvider\Product\Form\ProductDataProvider` data provider class is responsible for data and metadata preparation for the product form. The pool of modifiers `Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Pool` (virtual type) is injected to this data provider using the `__construct()` method. The pool's preference is defined in `di.xml`. + +To add your custom modifier, you need to do the following: + +1. [Add the modifier code.](#modifier) +1. [Add it to the modifiers' pool in `di.xml`](#pool) + +## Add your modifier {#modifier} + +In your custom module directory, add the modifier class that implements the `Magento\UI\DataProvider\Modifier\ModifierInterface` interface or extends the `Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\AbstractModifier`class. In your modifier, the `modifyData()` and the `modifyMeta()` methods must be implemented. + +In the modifier class, you can add UI elements using the same structure as in the [XML](https://glossary.magento.com/xml) configuration. + +For example: + +```php + [ + 'data' => [ + 'config' => [ + 'label' => __('Label For Fieldset'), + 'sortOrder' => 50, + 'collapsible' => true, + 'componentType' => Fieldset::NAME + ] + ] + ], + 'children' => [ + 'test_field_name' => [ + 'arguments' => [ + 'data' => [ + 'config' => [ + 'formElement' => 'select', + 'componentType' => Field::NAME, + 'options' => [ + ['value' => 'test_value_1', 'label' => 'Test Value 1'], + ['value' => 'test_value_2', 'label' => 'Test Value 2'], + ['value' => 'test_value_3', 'label' => 'Test Value 3'], + ], + 'visible' => 1, + 'required' => 1, + 'label' => __('Label For Element') + ] + ] + ] + ] + ] + ]; + + return $meta; + } + + /** + * @inheritDoc + */ + public function modifyData(array $data) + { + return $data; + } +} +``` + +You can create nested structures of elements by adding them to the `children` key of any element. + +## Add modifier to the pool {#pool} + +In `/etc/adminhtml/di.xml` define your modifier as a dependency for `Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Pool`. + +The following is an example of such a definition: + +`app/code/Magento/CatalogInventory/etc/adminhtml/di.xml`: + +```xml + + + + + Magento\CatalogInventory\Ui\DataProvider\Product\Form\Modifier\AdvancedInventory + 20 + + + + +``` + +The `sortOrder` parameter defines the order of invocation for your `modifyData()` and `modifyMeta()` methods among other these methods of other modifiers in the pool. If a modifier is first in a pool, its `modifyData()` and `modifyMeta()` are invoked with empty arguments. + +To access product model within your modifier, it's recommended to use an instance of `Magento\Catalog\Model\Locator\LocatorInterface`. + +For reference, view the modifier classes in the Magento modules, for example: + +- [`Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/AdvancedPricing`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/AdvancedPricing.php) +- [`Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/AttributeSet`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/AttributeSet.php) +- [`Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Eav`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Eav.php) +- [`Magento/ConfigurableProduct/Ui/DataProvider/Product/Form/Modifier/Data/AssociatedProducts`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/ConfigurableProduct/Ui/DataProvider/Product/Form/Modifier/Data/AssociatedProducts.php) + +For reference about setting conditions for displaying certain elements for certain product types, view `/Ui/DataProvider/Product/Form/Modifier/Eav.php#L476`. diff --git a/src/guides/v2.4/howdoi/customize_product.md b/src/guides/v2.4/howdoi/customize_product.md deleted file mode 120000 index fd8625ac5ad..00000000000 --- a/src/guides/v2.4/howdoi/customize_product.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/howdoi/customize_product.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/customize_product.md b/src/guides/v2.4/howdoi/customize_product.md new file mode 100644 index 00000000000..9b9f30231b0 --- /dev/null +++ b/src/guides/v2.4/howdoi/customize_product.md @@ -0,0 +1,40 @@ +--- +layout: tutorial +group: how-do-i +subgroup: product-create-page +title: Customize product creation form +menu_title: Initial Tasks +menu_node: +level3_subgroup: product-creation-form +menu_order: 1 +redirect_to: https://developer.adobe.com/commerce/php/tutorials/admin/custom-product-creation-form/ +status: migrated +--- + +This tutorial describes how developers can customize the product creation form used on the product creation and product edit pages in [Admin](https://glossary.magento.com/admin). The product creation form is implemented using the [form UI component]({{ page.baseurl }}/ui_comp_guide/components/ui-form.html). + +Product attributes and attribute sets available in the form, can be customized and added under **STORES** > **Attributes** in the Admin. But you can also customize the form view and behavior in code. The following sections describe what files define the form and how they can be customized in your [module](https://glossary.magento.com/module). + +## Prerequisites {#prereqs} + +[Set Magento to developer mode]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-mode.html) while you perform all customizations and debugging. + +For the sake of compatibility, upgradability, and easy maintenance, do not edit the default Magento code. Instead, add your customizations in a separate module. + +## List of customization methods + +This tutorial includes the following customizations: + +* [Customize the form configuration]({{ page.baseurl }}/howdoi/customize-form-configuration.html) +* [Customize using a modifier class]({{ page.baseurl }}/howdoi/customize-modifier-class.html) + +{:.ref-header} +Related topics + +* [Form UI component]({{ page.baseurl }}/ui_comp_guide/components/ui-form.html) +* [About PHP modifiers in UI components]({{ page.baseurl }}/ui_comp_guide/concepts/ui_comp_modifier_concept.html) +* [Dependency injection]({{ page.baseurl }}/extension-dev-guide/depend-inj.html) + +The following image is an illustration of the default view of the form on the **New Product** page: + +![The product creation page in Admin]({{ site.baseurl }}/common/images/product_pmg.png) diff --git a/src/guides/v2.4/howdoi/php/php_clear-dirs.md b/src/guides/v2.4/howdoi/php/php_clear-dirs.md deleted file mode 120000 index 21df408d8e8..00000000000 --- a/src/guides/v2.4/howdoi/php/php_clear-dirs.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/howdoi/php/php_clear-dirs.md \ No newline at end of file diff --git a/src/guides/v2.4/howdoi/php/php_clear-dirs.md b/src/guides/v2.4/howdoi/php/php_clear-dirs.md new file mode 100644 index 00000000000..66e9de7fb41 --- /dev/null +++ b/src/guides/v2.4/howdoi/php/php_clear-dirs.md @@ -0,0 +1,73 @@ +--- +group: php-developer-guide +subgroup: 99_Module Development +title: Clear directories during development +menu_title: Clear directories during development +menu_node: +menu_order: 200 +redirect_to: https://developer.adobe.com/commerce/php/development/components/clear-directories/ +status: migrated +--- + +#### Contents + +* [Overview of directory clearing](#howdoi-clear-over) +* [What directories to clear](#howdoi-clear-what) +* [How to clear the directories](#howdoi-clear-how) + +## Overview of directory clearing {#howdoi-clear-over} + +While you're developing Magento components (modules, themes, and language packages), your rapidly changing environment requires you to periodically clear certain directories and caches. Otherwise, your code runs with exceptions and won't function properly. + +This topic provides guidelines on what directories to clear and when to clear them. +All directories discussed in this topic are default locations. It's possible to customize these locations but doing so is beyond the scope of this topic. + +When you're developing Magento components (modules, themes, and language packages), the following directories contain temporary or generated files you can clear periodically: + +Directory | Description +--- | --- +`generated/code` | Contains [generated code][] +`generated/metadata`| Contains the compiled dependency injection configuration for all modules. +`pub/static`| Contains `js` and `html` files for each store view. +`var/cache` | All cacheable objects _except the page cache_. This directory is empty if you use a third-party cache storage such as Redis. +`var/composer_home` | Home directory for Setup Wizard artifacts. Do not touch this directory unless you are an experienced developer familiar with the Magento plug-in system. +`var/page_cache` | Cached pages from the full page cache mechanism. This directory is empty if you use a third-party HTTP accelerator such as Varnish. +`var/view_preprocessed` | Contains minified templates and compiled LESS (meaning LESS, CSS, and HTML). + +## What directories to clear {#howdoi-clear-what} + +The following table provides guidelines on what you should clear and when. + +Action | Directories to clear +--- | --- +Change a class if there is a plugin related to it | `generated/metadata`, `generated/code` +A change that results in generated factories or proxies | `generated/metadata`, `generated/code` +A change in `di.xml` | `generated/metadata`, `generated/code` (also need to run the code compiler again) +Add, remove, enable, or disable modules | `generated/metadata`, `generated/code`, `var/cache`, `var/page_cache` +Add or edit a layout or theme | `var/view_preprocessed`, `var/cache`, `var/page_cache` +Change LESS or templates | `var/view_preprocessed`, `var/cache`, `var/page_cache`, `pub/static` +Change `*.js` or `*.html` files | `pub/static` +Add or edit a CMS page, cacheable block, or use the Admin to change the configuration |`var/cache`, `var/page_cache` + +## How to clear the directories {#howdoi-clear-how} + +To only clear directories and not perform other actions, log in to the Magento server as the file system owner and clear directories using a command like the following: + +```bash +rm -r /generated/*/* +``` + +You can also use the following command-line tools clear some directories for you. These commands perform other tasks as well; consult the linked documentation for more details. + +| Tool name | Brief description | What it clears | +| --- | --- | --- | +| [`magento setup:upgrade`][]| Update Magento database schema and data | `generated/metadata` and `generated/code` | +| [`magento setup:di:compile`][]|Generates code | `generated/code` prior to compiling | +| [`magento deploy:mode:set {mode}`][]|Switch between `developer` and `production` mode | `generated/metadata`, `generated/code`, `var/view_preprocessed`| +| [`magento cache:clean {type}`][]|Clears the cache | `var/cache` and `var/page_cache`| + +[`magento setup:upgrade`]: {{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-db-upgr.html +[`magento setup:di:compile`]: {{ page.baseurl }}/config-guide/cli/config-cli-subcommands-compiler.html +[`magento deploy:mode:set {mode}`]: {{ page.baseurl }}/config-guide/cli/config-cli-subcommands-mode.html +[`magento cache:clean {type}`]: {{ page.baseurl }}/config-guide/cli/config-cli-subcommands-cache.html +[generated code]: {{ page.baseurl }}/extension-dev-guide/code-generation.html diff --git a/src/guides/v2.4/install-gde/bk-install-guide.md b/src/guides/v2.4/install-gde/bk-install-guide.md index 3ea5053aa3d..a1acc0e06d9 100644 --- a/src/guides/v2.4/install-gde/bk-install-guide.md +++ b/src/guides/v2.4/install-gde/bk-install-guide.md @@ -6,7 +6,9 @@ functional_areas: - System - Setup redirect_from: - - /guides/v2.4/install-gde/continue-to-install.html + - /guides/v2.4/install-gde/continue-to-install.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/overview.html +status: migrated --- You are among the 240,000 merchants worldwide who put their trust in our eCommerce software. We have gathered some information to help you get started with Magento and with your Magento installation. diff --git a/src/guides/v2.4/install-gde/composer.md b/src/guides/v2.4/install-gde/composer.md index f584e9f897c..4c499f3ba0a 100644 --- a/src/guides/v2.4/install-gde/composer.md +++ b/src/guides/v2.4/install-gde/composer.md @@ -6,6 +6,8 @@ functional_areas: - Setup redirect_from: - guides/v2.4/install-gde/prereq/zip_install.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/composer.html +status: migrated --- {% include install/composer-overview.md %} diff --git a/src/guides/v2.4/install-gde/continue-to-verify_cli.md b/src/guides/v2.4/install-gde/continue-to-verify_cli.md deleted file mode 120000 index aa1f7f7fd77..00000000000 --- a/src/guides/v2.4/install-gde/continue-to-verify_cli.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/install-gde/continue-to-verify_cli.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/continue-to-verify_cli.md b/src/guides/v2.4/install-gde/continue-to-verify_cli.md new file mode 100644 index 00000000000..71f27fbe5c7 --- /dev/null +++ b/src/guides/v2.4/install-gde/continue-to-verify_cli.md @@ -0,0 +1,33 @@ +--- +title: Post-installation +functional_areas: + - Install + - System + - Setup +redirect_from: /guides/v2.3/install-gde/continue-to-verify.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/verify.html +status: migrated +--- + +## Now that you've finished your installation + +We suggest the following: + +* [Verify the installation]({{ page.baseurl }}/install-gde/install/verify.html) + +## Other options + +You can also do any of the following: + +### Install optional sample data + +If you haven't already installed optional sample data, you can [install it now]({{ page.baseurl }}/install-gde/install/sample-data.html). + +### Manage and upgrade components + +* [Component management (install, uninstall, enable, disable, update)](https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/modules/manage.html) +* [System upgrade (upgrade the Magento software)](https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/implementation/perform-upgrade.html) + +### Configure + +[Configure the Magento application]({{ page.baseurl }}/install-gde/install/post-install-config.html) diff --git a/src/guides/v2.4/install-gde/contrib-git.md b/src/guides/v2.4/install-gde/contrib-git.md index 0478c1bb7e7..4af1ff54d15 100644 --- a/src/guides/v2.4/install-gde/contrib-git.md +++ b/src/guides/v2.4/install-gde/contrib-git.md @@ -4,8 +4,8 @@ functional_areas: - Install - System - Setup -migrated_to: https://developer.adobe.com/commerce/contributor/guides/install/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/install/ +status: migrated --- If you are a code or documentation contributor, this install guide is for you! Use Composer to install Magento, then switch over to a released version and update any installation dependencies. diff --git a/src/guides/v2.4/install-gde/install-flow-diagram.md b/src/guides/v2.4/install-gde/install-flow-diagram.md index ffba979fdcc..30e3fd55734 100644 --- a/src/guides/v2.4/install-gde/install-flow-diagram.md +++ b/src/guides/v2.4/install-gde/install-flow-diagram.md @@ -4,6 +4,8 @@ functional_areas: - Install - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/overview.html +status: migrated --- The following diagram provides a high-level overview of installing the Magento software: diff --git a/src/guides/v2.4/install-gde/install/cli/dev_add-update.md b/src/guides/v2.4/install-gde/install/cli/dev_add-update.md index e462308528c..3fda5b98b7b 100644 --- a/src/guides/v2.4/install-gde/install/cli/dev_add-update.md +++ b/src/guides/v2.4/install-gde/install/cli/dev_add-update.md @@ -6,6 +6,8 @@ menu_order: 5 menu_node: functional_areas: - Upgrade +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/developer/manage-modules.html +status: migrated --- A contributing developer updates components by specifying components and their versions in Magento's `composer.json`. diff --git a/src/guides/v2.4/install-gde/install/cli/dev_downgrade.md b/src/guides/v2.4/install-gde/install/cli/dev_downgrade.md deleted file mode 120000 index 16cb5ced8c1..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/dev_downgrade.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/dev_downgrade.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/dev_downgrade.md b/src/guides/v2.4/install-gde/install/cli/dev_downgrade.md new file mode 100644 index 00000000000..12482b5f366 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/dev_downgrade.md @@ -0,0 +1,91 @@ +--- +title: Change to a released version +functional_areas: + - Install + - System + - Setup +redirect_to: https://developer.adobe.com/commerce/contributor/guides/install/change-version/ +status: migrated +--- + +This topic discusses how a contributing developer can change versions of the Magento software after cloning the `develop` branch. This might be necessary to perform some tasks that require a specific Magento version other than `develop`. + +The `develop` branch is the default branch, which means you get it by default when you clone the Magento 2 GitHub repository. For some tasks, such as data migration from Magento 1.x to Magento 2.x, you must switch to a [release tag](https://github.com/magento/magento2/tags). + +You have the following options: + +* *(Easier)*. If you have not done any customizations, you should uninstall the Magento software and reinstall it with the released version. Uninstalling not only drops the database tables, it also clears the Magento `var` directory, enabling you to start over with no issues. + + For more information, see [Change versions by uninstalling the Magento software](#downgrade-uninstall) + +* If you have done customizations and do not want to lose them, back up the Magento system, switch to the released branch, and install in a new database instance. + + For more information, see [Change versions by installing the Magento software in a new database instance](#downgrade-db) + + You can migrate your customizations (both in the file system and in the database) from the backups you made or directly using database and file system tools. + +### Change versions by uninstalling the Magento software {#downgrade-uninstall} + +To change versions after cloning: + +1. Log in to your Magento server as, or switch to, [the file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). +1. Use the following command to uninstall the Magento software: + + ```bash + php /bin/magento setup:uninstall + ``` + +1. Either remove your old Magento clone directory or [update the Magento software]({{ page.baseurl }}/install-gde/install/cli/dev_update-magento.html). +1. If you have not already done so, clone the Magento 2 GitHub repository as follows: + + ```bash + git clone git@github.com:magento/magento2.git + ``` + +1. Change to [release tag](https://github.com/magento/magento2/tags) as follows: + + ```bash + git checkout tags/ [-b ] + ``` + + For example, to check out the 2.2.0 release tag in a new branch named `2.2.0`, enter + + ```bash + git checkout tags/2.2.0 -b 2.2.0 + ``` + +1. Install the Magento software using the [command line]({{ page.baseurl }}/install-gde/install/cli/install-cli-install.html). + +### Change versions by installing the Magento software in a new database instance {#downgrade-db} + +To change versions after cloning: + +1. Log in to your Magento server as, or switch to, [the file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). +1. Create a [new database instance]({{ page.baseurl }}/install-gde/prereq/mysql.html#instgde-prereq-mysql-config) for your installation. +1. [Back up]({{ page.baseurl }}/install-gde/install/cli/install-cli-backup.html#instgde-cli-uninst-back) the Magento file system, database, and media files: + + ```bash + php /bin/magento setup:backup --code --media --db + ``` + +1. Change to [release tag](https://github.com/magento/magento2/tags) as follows: + + ```bash + git checkout tags/ [-b ] + ``` + + For example, to check out the 2.2.0 release tag in a new branch named `2.2.0`, enter + + ```bash + git checkout tags/2.2.0 -b 2.2.0 + ``` + +1. Manually clear Magento `var` directories: + + ```bash + rm -rf /var/cache/* /var/page_cache/* /generated/code/* + ``` + +1. Install the Magento software in your new database instance. + + You must install using the [command line]({{ page.baseurl }}/install-gde/install/cli/install-cli-install.html). diff --git a/src/guides/v2.4/install-gde/install/cli/dev_reinstall.md b/src/guides/v2.4/install-gde/install/cli/dev_reinstall.md deleted file mode 120000 index cab106e3bc4..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/dev_reinstall.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/dev_reinstall.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/dev_reinstall.md b/src/guides/v2.4/install-gde/install/cli/dev_reinstall.md new file mode 100644 index 00000000000..a9b32f7f6f1 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/dev_reinstall.md @@ -0,0 +1,57 @@ +--- +subgroup: 99_contrib +title: Reinstall the Magento software +menu_title: Reinstall the Magento software +menu_order: 200 +menu_node: +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/uninstall.html +status: migrated +--- + +A contributing developer reinstalls Magento by updating `composer.json` to specify the Magento product version and component versions desired and runs `composer update`. + +To reinstall the Magento software as a contributing developer: + +1. Log in to your Magento server as a user with permissions to modify files in the Magento file system (for example, the [switch to the file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). +1. Make a backup copy of `composer.json` in your Magento installation directory: + + ```bash + cd + ``` + + ```bash + cp composer.json composer.json.bak + ``` + +1. Open `composer.json` in a text editor. +1. Locate the following line: + + ```json + "require": { + "magento/product-community-edition": "" + }, + ``` + +1. Replace `` with the version to which you want to upgrade, where `` is the product version to use. + + (The product version is in the format `2.0.x`) + +. + +1. Save your changes to `composer.json` and exit the text editor. +1. Enter the following command: + + ```bash + composer update + ``` + + Wait for dependencies to update. + +1. [Install the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli.html). + +*[contributing developer]: A developer who contributes code to the Magento 2 CE codebase +*[contributing developers]: Developers who contribute code to the Magento 2 CE codebase diff --git a/src/guides/v2.4/install-gde/install/cli/extensions.md b/src/guides/v2.4/install-gde/install/cli/extensions.md new file mode 100644 index 00000000000..0ca645d1e8c --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/extensions.md @@ -0,0 +1,182 @@ +--- +group: installation-guide +title: Install an extension +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/extensions.html +status: migrated +--- + +Code that extends or customizes {{site.data.var.ee}} and {{site.data.var.ce}} behavior is called an extension. You can optionally package and distribute extensions on the [Commerce Marketplace](https://marketplace.magento.com) or another extension distribution system. + +Extensions include: + +- Modules (extend Magento capabilities) +- Themes (change the look and feel of your [storefront](https://glossary.magento.com/storefront) and Admin) +- Language packages (localize the storefront and Admin) + +{:.bs-callout-tip} +This topic explains how to use the command line to install extensions you purchase from the Commerce Marketplace. You can use the same procedure to install _any_ extension; all you need is the extension's [Composer](https://glossary.magento.com/composer) name and version. To find it, open the extension's `composer.json` file and note the values for `"name"` and `"version"`. + +Prior to installation, you may want to: + +1. Back up your database. +1. Enable maintenance mode: + + ```bash + bin/magento maintenance:enable + ``` + +To install an extension, you must: + +1. Get an extension from the Commerce Marketplace or another extension developer. +1. If you install an extension from the Commerce Marketplace, make sure that the `repo.magento.com` repository exists in your `composer.json` file: + + ```bash + "repositories": [ + { + "type": "composer", + "url": "https://repo.magento.com/" + } + ] + ``` + +1. Get the extension's Composer name and version. +1. Update the `composer.json` file in your Magento project with the name and version of the extension. +1. Verify that the extension installed properly. +1. Enable and configure the extension. + +## Get the extension's Composer name and version + +If you already know the extension's Composer name and version, skip this step and continue with [Update your `composer.json` file](#update-composer-json). + +To get the extension's Composer name and version from the Commerce Marketplace: + +1. Log in to [Commerce Marketplace](https://marketplace.magento.com) with the username and password you used to purchase the extension. + +1. In the upper-right corner, click **Your name** > **My Profile**. + + ![Access your Marketplace account]({{ site.baseurl }}/common/images/marketplace-my-profile.png){:width="200px"} + +1. Click **My Purchases**. + + ![Marketplace purchase history]({{ site.baseurl }}/common/images/marketplace-my-purchases.png){:width="650px"} + +1. Find the extension you want to install and click **Technical Details**. + + ![Technical details shows the extension's Composer name]({{ site.baseurl }}/common/images/marketplace-extension-technical-details.png){:width="200px"} + +{:.bs-callout-tip} +Alternatively, you can find the Composer name and version of _any_ extension (whether you purchased it on Commerce Marketplace or somewhere else) in the extension's `composer.json` file. + +## Update your `composer.json` file {#update-composer-json} + +Add the extension's name and version to your `composer.json` file: + +1. Navigate to your Magento project directory and update your `composer.json` file. + + ```bash + composer require : + ``` + + For example, + + ```bash + composer require j2t/module-payplug:2.0.2 + ``` + +1. Enter your [authentication keys]({{ site.baseurl }}/guides/v2.3/install-gde/prereq/connect-auth.html). Your public key is your username; your private key is your password. + +1. Wait for Composer to finish updating your project dependencies and make sure there aren't any errors: + + ```terminal + Updating dependencies (including require-dev) + Package operations: 1 install, 0 updates, 0 removals + - Installing j2t/module-payplug (2.0.2): Downloading (100%) + Writing lock file + Generating autoload files + ``` + {:.no-copy} + +## Verify the extension + +To verify that the extension installed properly, run the following command: + +```bash +bin/magento module:status J2t_Payplug +``` + +By default, the extension is probably disabled: + +```terminal +Module is disabled +``` + +The extension name is in the format `_`; this is a different format from the Composer name. Use this format to enable the extension. If you are unsure of the extension name, run: + +```bash +bin/magento module:status +``` + +and look for the extension under "List of disabled modules". + +## Enable the extension + +Some extensions won't work properly unless you clear Magento-generated static view files first. Use the `--clear-static-content` option to clear static view files when you're enabling an extension. + +1. Enable the extension and clear static view files: + + ```bash + bin/magento module:enable J2t_Payplug --clear-static-content + ``` + + You should see the following output: + + ```terminal + The following modules have been enabled: + - J2t_Payplug + + To make sure that the enabled modules are properly registered, run 'setup:upgrade'. + Cache cleared successfully. + Generated classes cleared successfully. Please run the 'setup:di:compile' command to generate classes. + Generated static view files cleared successfully. + ``` + +1. Register the extension: + + ```bash + bin/magento setup:upgrade + ``` + +1. Recompile your Magento project: In Production mode, you may receive a message to "Please rerun Magento compile command". Magento does not prompt you to run the compile command in Developer mode. + + ```bash + bin/magento setup:di:compile + ``` + +1. Verify that the extension is enabled: + + ```bash + bin/magento module:status J2t_Payplug + ``` + + You should see output verifying that the extension is no longer disabled: + + ```terminal + Module is enabled + ``` + +1. Clean the cache: + + ```bash + bin/magento cache:clean + ``` + +1. Configure the extension in Admin as needed. + +{:.bs-callout-tip} +If you encounter errors when loading the storefront in a browser, use the following command to clear the cache: +
    +`bin/magento cache:flush` + +## Upgrade an extension + +{% include upgrade/module.md %} \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-adminurl.md b/src/guides/v2.4/install-gde/install/cli/install-cli-adminurl.md deleted file mode 120000 index af9d5701989..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-adminurl.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-adminurl.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-adminurl.md b/src/guides/v2.4/install-gde/install/cli/install-cli-adminurl.md new file mode 100644 index 00000000000..9e778339587 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-adminurl.md @@ -0,0 +1,45 @@ +--- +title: Display or change the Admin URI +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/admin-uri.html +status: migrated +--- + +## First steps {#instgde-cli-before} +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Prerequisites {#instgde-cli-subcommands-db-prereq} + +Before you run this command, you must [Create or update the deployment configuration]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-deployment.html). + +## Display the Admin URI {#instgde-cli-displayurl} +This section discusses how to use the command line to display the [Admin](https://glossary.magento.com/admin) Uniform Resource Identifier ([URI](https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2)). + +Command options: + +```bash +bin/magento info:adminuri +``` + +A sample result follows: + +```terminal +Admin Panel URI: /admin_1wgrah +``` + +You can also view the Admin URI in `/app/etc/env.php`. A snippet follows: + +```php?start_inline=1 + 'backend' => + array ( + 'frontName' => 'admin_1wgrah', + ), +``` + +## Change the Admin URL {#instgde-cli-changeurl} + +To change the Admin URI, use the [magento setup:config:set]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-deployment.html) command. \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-backup.md b/src/guides/v2.4/install-gde/install/cli/install-cli-backup.md deleted file mode 120000 index fc511ac6cd5..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-backup.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-backup.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-backup.md b/src/guides/v2.4/install-gde/install/cli/install-cli-backup.md new file mode 100644 index 00000000000..b6843b5de25 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-backup.md @@ -0,0 +1,117 @@ +--- +title: Back up and roll back the file system, media, and database +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/backup.html +status: migrated +--- + +## Overview of backup {#instgde-cli-uninst-back-over} + +This command enables you to back up: + +* The Magento file system (excluding `var` and `pub/static` directories) +* The `pub/media` directory +* The Magento 2 database + +Backups are stored in the `var/backups` directory and can be restored at any time using the [magento setup:rollback]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall-mods.html#instgde-cli-uninst-mod-roll) command. + +After backing up, you can [roll back](#instgde-cli-uninst-roll) at a later time. + +{:.bs-callout-tip} +For {{site.data.var.ece}} projects, see [Snapshots and backup management]({{ site.baseurl }}/cloud/project/project-webint-snap.html) in the _Cloud guide_. + +## First steps {#instgde-cli-before} +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Enable backups + +The Magento backup feature is disabled by default. To enable, enter the following CLI command: + +```bash +bin/magento config:set system/backup/functionality_enabled 1 +``` + +{:.bs-callout-warning} +**Deprecation Notice:** +Magento backup functionality is deprecated as of 2.1.16, 2.2.7, and 2.3.0. We recommend investigating additional backup technologies and binary backup tools (such as Percona XtraBackup). + +## Set the open files limit {#instgde-cli-ulimit} +{% include install/ulimit.md %} + +## Backing up {#instgde-cli-uninst-back} + +Command usage: + +```bash +bin/magento setup:backup [--code] [--media] [--db] +``` + +The command performs the following tasks: + +1. Puts the store in maintenance mode. +1. Executes one of the following command options. + + |Option|Meaning|Backup file name and location| + |--- |--- |--- | + |`--code`|Backs up the Magento file system (excluding var and pub/static directories).|var/backups/\_filesystem.tgz| + |`--media`|Back up the pub/media directory.|var/backups/\_filesystem_media.tgz| + |`--db`|Back up the Magento 2 database.|var/backups/\_db.sql| + +1. Takes the store out of maintenance mode. + +For example, to back up the file system and database, + +```bash +bin/magento setup:backup --code --db +``` + +Messages similar to the following display: + +```terminal +Enabling maintenance mode +Code backup is starting... +Code backup filename: 1434133011_filesystem.tgz (The archive can be uncompressed with 7-Zip on Windows systems) +Code backup path: /var/www/html/magento2/var/backups/1434133011_filesystem.tgz +[SUCCESS]: Code backup completed successfully. +DB backup is starting... +DB backup filename: 1434133011_db.sql +DB backup path: /var/www/html/magento2/var/backups/1434133011_db.sql +[SUCCESS]: DB backup completed successfully. +Disabling maintenance mode +``` + +## Roll back {#instgde-cli-uninst-roll} + +This section discusses how to roll back to a backup you made previously. You must know the file name of the backup file to restore. + +To find the name of your backups, enter: + +```bash +bin/magento info:backups:list +``` + +The first string in the backup file name is the timestamp. + +To roll back to a previous backup, enter: + +```bash +bin/magento setup:rollback [-c|--code-file=""] [-m|--media-file=""] [-d|--db-file=""] +``` + +For example, to restore a media backup named `1440611839_filesystem_media.tgz`, enter + +```bash +bin/magento setup:rollback -m 1440611839_filesystem_media.tgz +``` + +Messages similar to the following display: + +```terminal +[SUCCESS]: Media rollback completed successfully. +Please set file permission of bin/magento to executable +Disabling maintenance mode +``` diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-install.md b/src/guides/v2.4/install-gde/install/cli/install-cli-install.md index 0c2d0c30b7a..4350207b13b 100644 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-install.md +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-install.md @@ -7,6 +7,8 @@ functional_areas: - Install - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/install.html +status: migrated --- ## Before you start your installation {#instgde-install-cli-prereq} @@ -87,7 +89,7 @@ In {{site.data.var.ee}} version 2.2.8 and later, you can create the Magento admi |--- |--- |--- | |`--base-url`|Base URL to use to access your Admin and storefront in any of the following formats:

    `http[s]:////`.

    **Note:** The scheme (http:// or https://) and a trailing slash are both required.

    `` is the docroot-relative path in which to install the Magento software. Depending on how you set up your web server and virtual hosts, the path might be magento2 or it might be blank.

    To access Magento on localhost, you can use either `http://127.0.0.1//` or `http://127.0.0.1//`.

    - `{{base_url}}` which represents a base URL defined by a virtual host setting or by a virtualization environment like Docker. For example, if you set up a virtual host for Magento with the hostname magento.example.com, you can install the Magento software with `--base-url={{base_url}}` and access the Admin with a URL like http://magento.example.com/admin.|Yes| |`--backend-frontname`|Uniform Resource Identifier (URI) to access the Admin. You can omit this parameter to let Magento generate a random URI for you with the following pattern admin_jkhgdfq.

    We recommend a random URI for security purposes. A random URI is harder for hackers or malicious software to exploit.

    The URI displays at the end of the installation. You can display it later at any time using the magento info:adminuri command.

    If you choose to enter a value, we recommend you not use a common word like admin, backend, and so on. The Admin URI can contain alphanumeric values and the underscore character (`_`) only.|No| -|`--db-host`|Use any of the following:

    - The database server's fully qualified hostname or IP address.

    - `localhost` (default) or `127.0.0.1` if your database server is on the same host as your web server.localhost means the MySQL client library uses UNIX sockets to connect to the database. `127.0.0.1` causes the client library to use the TCP protocol. For more information about sockets, see the [PHP PDO_MYSQL documentation](http://php.net/manual/en/ref.pdo-mysql.php).

    **Note:** You can optionally specify the database server port in its hostname like www.example.com:9000|Yes| +|`--db-host`|Use any of the following:

    - The database server's fully qualified hostname or IP address.

    - `localhost` (default) or `127.0.0.1` if your database server is on the same host as your web server.localhost means the MySQL client library uses UNIX sockets to connect to the database. `127.0.0.1` causes the client library to use the TCP protocol. For more information about sockets, see the [PHP PDO_MYSQL documentation](https://php.net/manual/en/ref.pdo-mysql.php).

    **Note:** You can optionally specify the database server port in its hostname like www.example.com:9000|Yes| |`--db-name`|Name of the Magento database instance in which you want to install the Magento database tables.

    Default is `magento2`.|Yes| |`--db-user`|Username of the Magento database instance owner.

    Default is `root`.|Yes| |`--db-password`|Magento database instance owner's password.|Yes| diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-clone.md b/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-clone.md index 816e985fefb..cfe73a812de 100644 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-clone.md +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-clone.md @@ -5,6 +5,8 @@ functional_areas: - System - Setup redirect_from: /guides/v2.4/install-gde/install/web/install-web-sample-data-clone.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/sample-data/git-repositories.html +status: migrated --- {% include install/sampledata/sample-data-clone-24.md %} diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-composer.md b/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-composer.md index 86e0fb9cb0d..e5ed32d012c 100644 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-composer.md +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-composer.md @@ -5,6 +5,8 @@ functional_areas: - System - Setup redirect_from: /guides/v2.4/install-gde/install/web/install-web-sample-data-composer.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/sample-data/composer-packages.html +status: migrated --- {% include install/sampledata/sample-data-composer.md %} diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-other.md b/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-other.md deleted file mode 120000 index e193ec962a1..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-other.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-sample-data-other.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-other.md b/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-other.md new file mode 100644 index 00000000000..1e4440fc17e --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data-other.md @@ -0,0 +1,15 @@ +--- +subgroup: 05_Command-line installation +title: Remove sample data modules or update sample data +menu_title: Remove sample data modules or update sample data +menu_node: +menu_order: 6 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/sample-data/remove-or-update.html +status: migrated +--- + +{% include install/sampledata/sample-data-other-cmds.md %} diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data.md b/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data.md index d96b6c42b74..a07465079c4 100644 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data.md +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-sample-data.md @@ -5,6 +5,8 @@ functional_areas: - System - Setup redirect_from: /guides/v2.4/install-gde/install/web/install-web-sample-data.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/sample-data/overview.html +status: migrated --- {% include install/sampledata/sample-data-intro.md %} diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-admin.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-admin.md deleted file mode 120000 index edefccc491d..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-admin.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-subcommands-admin.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-admin.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-admin.md new file mode 100644 index 00000000000..001e862abfd --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-admin.md @@ -0,0 +1,119 @@ +--- +title: Create, edit, or unlock an administrator account +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/admin.html +status: migrated +--- + +## First steps +{% include install/first-steps-cli.md %} + +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Prerequisites + +Before you can use this command, you must do all of the following: + +- [Create the deployment configuration]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-deployment.html) +- [Enable at minimum the Magento_Authorization and Magento_User modules]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-enable.html) +- Create the Magento [database schema](https://glossary.magento.com/database-schema) + +{:.bs-callout-info} +The simplest way to create the database is to use the command `magento setup:upgrade`. + +## Create or edit an administrator + +Use this command to create a new administrator or to edit an existing administrator. + +{:.bs-callout-tip} +If you're editing an administrator, only the `first name`, `last name`, and `password` can be edited. + +Command usage: + +```bash +bin/magento admin:user:create [--=, ...] +``` + +Where the following table defines parameters and values: + +|Name|Value|Required?| +|--- |--- |--- | +|`--admin-firstname`|Magento administrator user's first name.|Yes| +|`--admin-lastname`|Magento administrator user's last name.|Yes| +|`--admin-email`|Magento administrator user's e-mail address.|Yes| +|`--admin-user`|Magento administrator username.|Yes| +|`--admin-password`|Magento administrator user password. The password must be at least 7 characters in length and must include at least one alphabetic and at least one numeric character.

    We recommend a longer, more complex password. If the password string contains special characters that require literal interpretation (such as backslashes or spaces), enclose the password in single quotations.|Yes| +|`--magento-init-params`|Add to any command to customize Magento initialization parameters

    For example: `MAGE_MODE=developer&MAGE_DIRS[base][path]=/var/www/example.com&MAGE_DIRS[cache][path]=/var/tmp/cache`|No| + +Example of usage: + +```bash +bin/magento admin:user:create --admin-firstname=John --admin-lastname=Doe --admin-email=j.doe@example.com --admin-user=j.doe --admin-password=A0b9%t3g +``` + +```terminal +Created Magento administrator user named j.doe +``` + +If you do not specify any of required params Magento will ask about them in the CLI: + +```bash +bin/magento admin:user:create +``` + +```terminal +Admin user: John +Admin password: +Admin email: j.doe.young@example.com +Admin first name: John +Admin last name: Doe Young +``` + +```terminal +Created Magento administrator user named John +``` + +The following example updates `first name`, `last name`, and `password` of `j.doe` admin user: + +```bash +bin/magento admin:user:create --admin-firstname="John X" --admin-lastname="Doe X" --admin-email=j.doe@example.com --admin-user=j.doe --admin-password=A1234567 +``` + +```terminal +Created Magento administrator user named j.doe +``` + +## Unlock an administrator account + +Use this command to unlock the account of an administrator that was locked, typically because of multiple incorrect login attempts. + +```bash +bin/magento admin:user:unlock {username} +``` + +You must specify the administrator's username. Example: + +```bash +bin/magento admin:user:unlock admin +``` + +```terminal +The user account "admin" has been unlocked +``` + +If the account is either not unlocked or if there was a problem, the following message displays: + +```terminal +The user account "admin" was not locked or could not be unlocked +``` + +Verify the user is an administrator, the user is active, and that the account is currently locked. To view the list of locked users in the Admin, log in as an administrator and click **System** > **Permissions** > **Locked Users**. + +If the account doesn't exist, the following message displays: + +```terminal +Couldn't find the user account "bob" +``` diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-consumers.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-consumers.md deleted file mode 120000 index 122108e3671..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-consumers.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-subcommands-consumers.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-consumers.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-consumers.md new file mode 100644 index 00000000000..37ecf13a584 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-consumers.md @@ -0,0 +1,26 @@ +--- +title: Configure consumer behavior +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/message-consumers.html +status: migrated +--- + +Before you run this command, you must do all of the following *or* you must [install the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-install.html): + +* [Create or update the deployment configuration]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-deployment.html) +* [Create the Magento database schema]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-db.html) + +## Configure the consumers behavior {#instgde-cli-consumersconfig} + +Configuring consumer behavior is done by sending key/value pairs within the setup function: + +```bash +bin/magento setup:config:set [--=, ...] +``` + +### Parameter descriptions + +{% include config/consumers.md %} diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-status.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-status.md deleted file mode 120000 index 62e9ad814d6..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-status.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-subcommands-db-status.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-status.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-status.md new file mode 100644 index 00000000000..5bf326f13f0 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-status.md @@ -0,0 +1,65 @@ +--- +subgroup: 05_Command-line installation +title: Check the Magento database status +menu_title: Check the Magento database status +menu_node: +menu_order: 16 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/database-status.html +status: migrated +--- + +## First steps {#instgde-cli-before} +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Prerequisites {#instgde-cli-subcommands-db-prereq} + +Before you run this command, you must [Create or update the deployment configuration]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-deployment.html). + +## Command usage + +To check the status of the Magento database, enter + +```bash +bin/magento setup:db:status +``` + +This command has no arguments or options. + +Sample output follows: + +```terminal +All modules are up to date. +``` + +The command returns one of the following exit codes: + +Exit code | Description | Suggested action +|--------------|--------------|--------------| + 0 | Normal | None | + 1 | Some modules use code versions newer or older than the database | Run [`magento setup:upgrade`]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-db-upgr.html) to update the database schema and run `composer update` from the Magento root directory to update component dependencies | + 2 | setup:upgrade is required | [`magento setup:upgrade`]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-db-upgr.html) to update the [database schema](https://glossary.magento.com/database-schema) | + +{:.ref-header} +Related topics + +* [Installing the Magento software using the command line]({{ page.baseurl }}/install-gde/install/cli/install-cli-install.html) +* [Remove sample data modules or update sample data]({{ page.baseurl }}/install-gde/install/cli/install-cli-sample-data-other.html) +* [Enable or disable modules]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-enable.html) +* [Display or change the Admin URI]({{ page.baseurl }}/install-gde/install/cli/install-cli-adminurl.html) +* [Uninstall modules]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall-mods.html) +* [Create or update the deployment configuration]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-deployment.html) +* [Enable or disable maintenance mode]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-maint.html) +* [Update the Magento database schema and data]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-db-upgr.html) +* [Configure the store]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-store.html) +* [Create or unlock a Magento administrator]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-admin.html) +* [Back up and roll back the file system, media, and database]({{ page.baseurl }}/install-gde/install/cli/install-cli-backup.html) +* [Uninstall themes]({{ page.baseurl }}/install-gde/install/cli/install-cli-theme-uninstall.html) +* [Uninstall language packages]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall-langpk.html) +* [Uninstall the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall.html#instgde-install-uninstall) +* [Update the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall.html#instgde-install-magento-update) +* [Reinstall the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall.html#instgde-install-magento-reinstall) diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-upgr.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-upgr.md deleted file mode 120000 index 35a521d0a49..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-upgr.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-subcommands-db-upgr.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-upgr.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-upgr.md new file mode 100644 index 00000000000..5770cc7b3d4 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db-upgr.md @@ -0,0 +1,42 @@ +--- +title: Update the database schema and data +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/database-upgrade.html +status: migrated +--- + +## First steps {#instgde-cli-before} +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Prerequisites {#instgde-cli-subcommands-maint-prereq} + +Before you use this command, you must [install the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-install.html). + +## Upgrade the Magento database schema and data {#instgde-cli-db-upgr} + +Anytime you perform an action that causes the Magento [database schema](https://glossary.magento.com/database-schema) or data to change, you must update them by running the command discussed in this section. A partial list of reasons follows: + +* You upgraded the Magento software using the command line +* You installed or updated a component using the command line +* You enabled or disabled a component using the command line + +{:.bs-callout-info} +A Magento *component* can be a module, theme, or language pack; it doesn't matter whether the component comes from the Commerce Marketplace or not + +1. Start the upgrade: + + ```bash + bin/magento setup:upgrade [--keep-generated] + ``` + + where `--keep-generated` is an optional argument that does not update [static view files]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-static-view.html). This optional argument is for use *only* in limited circumstances by experienced system integrators. It should be used *only* in [production mode]({{ page.baseurl }}/config-guide/bootstrap/magento-modes.html#production-mode). It should *not* be used in [developer mode]({{ page.baseurl }}/config-guide/bootstrap/magento-modes.html#developer-mode). + +1. Clean the cache: + + ```bash + bin/magento cache:clean + ``` diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db.md deleted file mode 120000 index 050180f7288..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-subcommands-db.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db.md new file mode 100644 index 00000000000..2448ebc4c45 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-db.md @@ -0,0 +1,33 @@ +--- +title: Create the database schema +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/database.html +status: migrated +--- + +## First steps {#instgde-cli-before} + +{% include install/first-steps-cli.md %} + +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Prerequisites {#instgde-cli-subcommands-db-prereq} + +Before you run this command, you must [Create or update the deployment configuration]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-deployment.html). + +## Configure the database and add data {#instgde-cli-dbconfig} + +Command usage: + +```bash +bin/magento setup:db-schema:upgrade +``` + +To see the status of the database, enter + +```bash +bin/magento setup:db:status +``` diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-deployment.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-deployment.md deleted file mode 120000 index 8ecfba37832..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-deployment.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-subcommands-deployment.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-deployment.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-deployment.md new file mode 100644 index 00000000000..6c8c8220763 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-deployment.md @@ -0,0 +1,94 @@ +--- +title: Create or update the deployment configuration +functional_areas: + - Install + - System + - Setup + - Deploy +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/deployment.html +status: migrated +--- + +## First steps {#instgde-cli-before} + +{% include install/first-steps-cli.md %} + +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Prerequisites {#instgde-cli-subcommands-configphp-prereq} + +There are no prerequisites for using this command. + +## Create or update the Magento deployment configuration {#instgde-cli-subcommands-configphp} + +[Magento's deployment configuration]({{ page.baseurl }}/config-guide/config/config-php.html) provides the information Magento needs to initialize and bootstrap. + +You can use this command if: + +* You previously installed the Magento software and you want to modify the deployment configuration +* If you want to create only the deployment configuration and continue the Magento installation some other way +* To update the deployment configuration without affecting anything else + +Command options: + +```bash +bin/magento setup:config:set [--=, ...] +``` + +The following table discusses the meanings of installation parameters and values. + +|Parameter|Value|Required?| +|--- |--- |--- | +|`--backend-frontname`|Uniform Resource Identifier ([URI](https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2)) to access the Admin.

    To prevent exploits, we recommend you not use a common word like admin, backend, and so on. The Admin URI can contain alphanumeric values and the underscore character (`_`) only.|No| +|`--db-host`|Use any of the following:

    - The database server's fully qualified hostname or IP address.

    - `localhost` (default) or `127.0.0.1` if your database server is on the same host as your web server. localhost means the MySQL client library uses UNIX sockets to connect to the database. `127.0.0.1` causes the client library to use the TCP protocol. For more information about sockets, see the [PHP PDO_MYSQL documentation](https://php.net/manual/en/ref.pdo-mysql.php).

    **Note:** You can optionally specify the database server port in its hostname like `www.example.com:9000`|No| +|`--db-name`|Name of the Magento database instance in which you want to install the Magento database tables.

    Default is `magento2`.|No| +|`--db-user`|Username of the Magento database instance owner.

    Default is `root`.|No| +|`--db-password`|Magento database instance owner's password.|No| +|`--db-prefix`|Use only if you're installing the Magento database tables in a database instance that has Magento tables in it already.

    In that case, use a prefix to identify the Magento tables for this installation. Some customers have more than one Magento instance running on a server with all tables in the same database.

    The prefix can be a maximum of five characters in length. It must begin with a letter and can include only letters, numbers, and underscore characters.

    This option enables those customers to share the database server with more than one Magento installation.|No| +|`--session-save`|Use any of the following:

    - `db` to store session data in the [database]({{ page.baseurl }}/extension-dev-guide/cache/partial-caching/database-caching.html). Choose database storage if you have a clustered database; otherwise, there might not be much benefit over file-based storage.

    - `files` to store session data in the file system. File-based session storage is appropriate unless the Magento file system access is slow, you have a clustered database, or you want to store session data in Redis.

    - `redis` to store session data in [Use Redis for session storage]({{ page.baseurl }}/config-guide/redis/config-redis.html>Redis. If you will be using Redis for default or page caching, Redis must be already installed. |No| +|`--key`|If you have one, specify a key to encrypt [sensitive data](#sens-data) in the Magento database. If you don't have one, Magento generates one for you.|No| +|`--db-init-statements`|Advanced MySQL configuration parameter. Uses database initialization statements to run when connecting to the MySQL database.

    Default is `SET NAMES utf8;`.

    Consult a reference similar to [this one](https://dev.mysql.com/doc/refman/5.6/en/server-options.html) before you set any values.|No| +|`--http-cache-hosts`|Comma-separated list of HTTP cache gateway hosts to which to send purge requests. (For example, Varnish servers.) Use this parameter to specify the host or hosts to purge in the same request. (It doesn't matter if you have only one host or many hosts.)

    Format must be `:`, where you can omit `` if it's port 80. For example, `--http-cache-hosts=192.0.2.100,192.0.2.155:6081`. Do not separate hosts with a space character.|No| + +## Import configuration data + +When setting up a production system, it's good practice to import configuration settings from `config.php` and `env.php` into the database. +These settings include configuration paths and values, websites, stores, store views, and themes. + +After importing websites, stores, store views, and themes, you can create product attributes and apply them to websites, stores, and store views, on the production system. + +On the production system, run the following command to import data from the configuration files (`config.php` and `env.php`) to the database: + +```bash +bin/magento app:config:import [-n, --no-interaction] +``` + +The optional `[-n, --no-interaction]` flag allows the command to run without additional confirmations. + +For additional information, please, check the [Import data from configuration files]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-config-mgmt-import.html) + +{% include install/sens-data.md %} + +If applicable, continue your Magento software installation: + +* [Command line installation]({{ page.baseurl }}/install-gde/install/cli/install-cli-install.html) + +{:.ref-header} +Related topics + +* [Installing the Magento software using the command line]({{ page.baseurl }}/install-gde/install/cli/install-cli-install.html) +* [Remove sample data modules or update sample data]({{ page.baseurl }}/install-gde/install/cli/install-cli-sample-data-other.html) +* [Enable or disable modules]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-enable.html) +* [Display or change the Admin URI]({{ page.baseurl }}/install-gde/install/cli/install-cli-adminurl.html) +* [Uninstall modules]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall-mods.html) +* [Enable or disable maintenance mode]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-maint.html) +* [Create the Magento database schema]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-db.html) +* [Update the Magento database schema and data]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-db-upgr.html) +* [Configure the store]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-store.html) +* [Create or unlock a Magento administrator]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-admin.html) +* [Back up and roll back the file system, media, and database]({{ page.baseurl }}/install-gde/install/cli/install-cli-backup.html) +* [Uninstall themes]({{ page.baseurl }}/install-gde/install/cli/install-cli-theme-uninstall.html) +* [Uninstall language packages]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall-langpk.html) +* [Uninstall the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall.html#instgde-install-uninstall) +* [Update the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall.html#instgde-install-magento-update) +* [Reinstall the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall.html#instgde-install-magento-reinstall) diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-enable.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-enable.md index cccf23e3968..a37c55a256a 100644 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-enable.md +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-enable.md @@ -4,6 +4,8 @@ functional_areas: - Install - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/manage-modules.html +status: migrated --- ## First steps {#instgde-cli-before} diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-lock.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-lock.md deleted file mode 120000 index dbb1e9a282b..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-lock.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-subcommands-lock.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-lock.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-lock.md new file mode 100644 index 00000000000..d8ae74e1afe --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-lock.md @@ -0,0 +1,47 @@ +--- +title: Configure the lock provider +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/lock-provider.html +status: migrated +--- + +## First steps {#instgde-cli-before} +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Prerequisites {#instgde-cli-subcommands-store-prereq} + +Before you run this command, you must do all of the following *or* you must [install the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-install.html): + +* [Create or update the deployment configuration]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-deployment.html) +* [Create the Magento database schema]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-db.html) + +{% include install/fully-secure.md %} + +## Configure the lock {#instgde-cli-lockconfig} + +Configure a lock provider to prevent the launch of duplicate cron jobs and cron groups. (Requires Magento 2.2.5 and later 2.2.x versions or version 2.3.2 and later.) + +Magento uses the database to save locks by default. If you have multiple nodes on your servers, we recommend using Zookeeper as the lock provider. + +If you are running {{site.data.var.ece}}, you do not need to configure lock provider settings. Magento configures the file lock provider for Pro projects during the provisioning process. See [Cloud variables]({{ site.baseurl }}/cloud/env/variables-cloud.html). + +> Command usage + +```bash +bin/magento setup:config:set [--=, ...] +``` + +> Parameter descriptions + +|Name|Value|Required?| +|--- |--- |--- | +|`--lock-provider`|Lock provider name: `db`, `zookeeper`, or `file`.

    The default lock provider: `db`|No| +|`--lock-db-prefix`|The specific db prefix to avoid lock conflicts when using the `db` lock provider.

    The default value: `NULL`|No| +|`--lock-zookeeper-host`|Host and port to connect to the Zookeeper cluster when you use the `zookeeper` lock provider.

    For example: `127.0.0.1:2181`|Yes, if you set `--lock-provider=zookeeper`| +|`--lock-zookeeper-path`|The path where Zookeeper saves locks.

    The default path is: `/magento/locks`|No| +|`--lock-file-path`|The path where file locks are saved.|Yes, if you set `--lock-provider=file`| +{:style="table-layout:auto"} diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-maint.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-maint.md deleted file mode 120000 index a536cff79ff..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-maint.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-subcommands-maint.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-maint.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-maint.md new file mode 100644 index 00000000000..4bcbc0bad7d --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-maint.md @@ -0,0 +1,131 @@ +--- +subgroup: 05_Command-line installation +title: Enable or disable maintenance mode +menu_title: Enable or disable maintenance mode +menu_node: +menu_order: 10 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/maintenance-mode.html +status: migrated +--- + +The following guide refers to a standard Magento maintenance mode page. If you need to use a custom maintenance page, see [Create the custom maintenance page](https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/troubleshooting/maintenance-mode-options.html) topic. + +Magento uses [maintenance mode]({{ page.baseurl }}/config-guide/bootstrap/magento-modes.html#maintenance-mode) to disable bootstrapping. Disabling bootstrapping is helpful while you are maintaining, upgrading, or reconfiguring your site. + +Magento detects maintenance mode as follows: + +* If `var/.maintenance.flag` does not exist, maintenance mode is off and Magento operates normally. +* Otherwise, maintenance mode is on unless `var/.maintenance.ip` exists. + + `var/.maintenance.ip` can contain a list of IP addresses. If an entry point is accessed using HTTP and the client IP address corresponds to one of the entries in that list, then maintenance mode is off. + +## Log in as file system owner {#instgde-cli-before} + +To log in as the file system owner: + +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Install Magento {#instgde-cli-subcommands-maint-prereq} + +Before you use this command to enable or disable maintenance mode, you must [install the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-install.html). + +## Enable or disable maintenance mode {#instgde-cli-maint} + +Use the `magento maintenance` CLI command to enable or disable Magento maintenance mode. + +Command usage: + +```bash +bin/magento maintenance:enable [--ip= ... --ip=] | [ip=none] +``` + +```bash +bin/magento maintenance:disable [--ip= ... --ip=] | [ip=none] +``` + +```bash +bin/magento maintenance:status +``` + +`--ip=` is an IP address to exempt from maintenance mode (for example, developers doing the maintenance). To exempt more than one IP address in the same command, use the option multiple times. + +{:.bs-callout-info} +Using `--ip=` with `magento maintenance:disable` saves the list of IPs for later use. To clear the list of exempt IPs, use `magento maintenance:enable --ip=none` or see [Maintain the list of exempt IP addresses](#instgde-cli-maint-exempt). + +`magento maintenance:status` displays the current status of maintenance mode. + +For example, to enable maintenance mode with no IP address exemptions: + +```bash +bin/magento maintenance:enable +``` + +To enable maintenance mode for all clients except 192.0.2.10 and 192.0.2.11: + +```bash +bin/magento maintenance:enable --ip=192.0.2.10 --ip=192.0.2.11 +``` + +After you place Magento in maintenance mode, you must stop all message queue consumer processes. +One way to find these processes is to run the `ps -ef | grep queue:consumers:start` command, and then run the `kill ` command for each consumer. In a multiple node environment, repeat this task on each node. + +## Maintain the list of exempt IP addresses {#instgde-cli-maint-exempt} + +To maintain the list of exempt IP addresses, you can either use the `[--ip=]` option in the preceding commands or you can use the following: + +```bash +bin/magento maintenance:allow-ips .. [--none] +``` + +` .. ` is an optional space-delimited list of IP addresses to exempt. + +`--none` clears the list. + +## Multi-store setups + +If you want to set up multiple stores, each with a different layout and localized content, pass the `$_GET['skin']` parameter to the intended processor. + +In the following example, we are using a `503` type error template file, which requires localized content. + +The constructor of the `Error_Processor` class accepts a `skin` GET parameter to change the layout: + +```php +if (isset($_GET['skin'])) { + $this->_setSkin($_GET['skin']); +} +``` + +This can also be added to a rewrite rule in the `.htaccess` file that will append a `skin` parameter to the URL. + +### $_GET['skin'] parameter + +To use the `skin` parameter: + +1. Check if the `.maintenance.flag` exists. +1. Note the host address, that refers to the `HTTP_HOST`, or any other variable such as ENV variables. +1. Check if the `skin` parameter exists. +1. Set the parameter by using the rewrite rules below. + + Here are some examples of rewrite rules: + + * RewriteCond `%{DOCUMENT_ROOT}/var/.maintenance.flag -f` + * RewriteCond `%{HTTP_HOST} ^sub.example.com$` + * RewriteCond `%{QUERY_STRING} !(^|&)skin=sub(&|$)` [NC] + * RewriteRule `^ %{REQUEST_URI}?skin=sub` [L] + +1. Copy the following files: + + * `pub/errors/default/503.phtml` to `pub/errors/sub/503.phtml` + * `pub/errors/default/css/styles.css` to `pub/errors/sub/styles.css` + +1. Edit these files to provide localized content in the `503.phtml` file and custom styling in the `styles.css` file. + + Ensure your paths point to your `errors` directory. The directory name must match the URL parameter indicated in the `RewriteRule`. In the previous example, the `sub` directory is used, which is specified as a parameter in the `RewriteRule` (`skin=sub`) + +{:.bs-callout-info} +The [nginx]({{ page.baseurl }}/config-guide/multi-site/ms_nginx.html) setting must be added for multi-store setups. diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-store.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-store.md deleted file mode 120000 index c1142f5a290..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-store.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-subcommands-store.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-store.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-store.md new file mode 100644 index 00000000000..c1b6d50a203 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands-store.md @@ -0,0 +1,45 @@ +--- +title: Configure the store +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/store.html +status: migrated +--- + +## First steps {#instgde-cli-before} +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Prerequisites {#instgde-cli-subcommands-store-prereq} + +Before you run this command, you must do all of the following *or* you must [install the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-install.html): + +* [Create or update the deployment configuration]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-deployment.html) +* [Create the Magento database schema]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-db.html) + +{% include install/fully-secure.md %} + +## Configure the store {#instgde-cli-storeconfig} + +Command usage: + +```bash +bin/magento setup:store-config:set [--=, ...] +``` + +where the following table defines parameters and values. + +|Name|Value|Required?| +|--- |--- |--- | +|`--base-url`|Base URL to use to access your Admin and storefront in any of the following formats:

    - `http[s]:////`.

    **Note:** The scheme (`http://` or `https://`) and a trailing slash are both required. `` is the docroot-relative path in which to install the Magento software. Depending on how you set up your web server and virtual hosts, the path might be magento2 or it might be blank.

    To access Magento on localhost, you can use `http://127.0.0.1//`.

    - `{{base_url}}` which represents a base URL defined by a virtual host setting or by a virtualization environment like Docker. For example, if you set up a virtual host for Magento with the hostname magento.example.com, you can install the Magento software with `--base-url={{base_url}}` and access the Admin with a URL like http://magento.example.com/admin.|No| +|`--language`|Language code to use in the Admin and storefront.

    (If you have not done so already, you can view the list of language codes by entering `magento info:language:list` from the `bin` directory.)|No| +|`--currency`|Default currency to use in the storefront.

    (If you have not done so already, you can view the list of currencies by entering `magento info:currency:list` from the `bin` directory.)|No| +|`--timezone`|Default time zone to use in the Admin and storefront. (If you have not done so already, you can view the list of time zones by entering `magento info:timezone:list` from the `bin` directory.)|No| +|`--use-rewrites`|`1` means you use web server rewrites for generated links in the storefront and Admin.

    `0` disables the use of web server rewrites. This is the default.|No| +|`--use-secure`|`1` enables the use of Secure Sockets Layer (SSL) in storefront URLs. Make sure your web server supports SSL before you select this option.

    `0` disables the use of SSL with Magento. In this case, all other secure URL options are assumed to also be 0. This is the default.|No| +|`--base-url-secure`|Secure base URL to use to access your Admin and storefront in the following format: `http[s]:////`|No| +|`--use-secure-admin`|`1` means you use SSL to access the Admin. Make sure your web server supports SSL before you select this option.

    `0` means you do not use SSL with the Admin. This is the default.|No| +|`--admin-use-security-key`|`1` causes the Magento software to use a randomly generated key value to access pages in the Admin and in forms. These key values help prevent cross-site script forgery attacks. This is the default.

    `0` disables the use of the key.|No| +|`--magento-init-params`|Add to any command to customize Magento initialization parameters

    For example: `MAGE_MODE=developer&MAGE_DIRS[base][path]=/var/www/example.com&MAGE_DIRS[cache][path]=/var/tmp/cache`|No| diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands.md deleted file mode 120000 index 658f235e38d..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-subcommands.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands.md b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands.md new file mode 100644 index 00000000000..8b96cad489c --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-subcommands.md @@ -0,0 +1,57 @@ +--- +subgroup: 05_Command-line installation +title: Prepare your system for install +menu_title: Get started with the command-line installation +menu_node: +menu_order: 2 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/composer.html +status: migrated +--- + +## Before you start your installation {#instgde-install-cli-prereq} +{% include install/before-you-begin-cli.md %} + +The installer is designed to be run multiple times if necessary so you can: + +* Provide different values + + For example, after you configure your web server for Secure Sockets Layer (SSL), you can run the installer to set SSL options. + +* Correct mistakes in previous installations +* Install Magento in a different database instance + +## Log in as file system owner {#instgde-cli-before} + +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Command summary {#instgde-cli-summary} + +The following table summarizes the available commands. Commands are shown in summary form only; for more information about a command, click the link in the Command column. + +|Command|Description|Prerequisites| +|--- |--- |--- | +|`magento setup:install`|Installs the Magento software|None| +|`magento setup:uninstall`|Removes the Magento software.|Magento software installed| +|`magento setup:upgrade`|Updates the Magento software.|Deployment configuration| +|`magento maintenance:{enable/disable}`|Enables or disables maintenance mode (in maintenance mode, only exempt IP addresses can access the Admin or storefront).|Magento software installed| +|`magento setup:config:set`|Creates or updates the deployment configuration.|None| +|`magento module:{enable/disable}`|Enable or disable modules.|None| +|`magento setup:store-config:set`|Sets storefront-related options, such as base URL, language, timezone, and so on.|Deployment configuration +Database (simplest way is to use magento setup:upgrade)| +|`magento setup:db-schema:upgrade`|Updates the Magento database schema.|Deployment configuration| +|`magento setup:db-data:upgrade`|Updates the Magento database data.|Deployment configuration| +|`magento setup:db:status`|Checks if the database is up-to-date with the code.|Deployment configuration| +|`magento admin:user:create`|Creates a Magento administrator.|All of the following:

    Deployment configuration

    Enable at minimum the Magento_User and Magento_Authorization modules

    Database (simplest way is to use magento setup:upgrade)| +|`magento list`|Lists all available commands.|None| +|`magento help`|Provides help for the specified command.|None| + +## Help commands {#instgde-cli-help} +{% include install/cli_help-commands.md %} + +## Common arguments {#instgde-cli-subcommands-common} +{% include install/cli_common-commands.md %} \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-theme-uninstall.md b/src/guides/v2.4/install-gde/install/cli/install-cli-theme-uninstall.md deleted file mode 120000 index 02d53b44868..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-theme-uninstall.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-theme-uninstall.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-theme-uninstall.md b/src/guides/v2.4/install-gde/install/cli/install-cli-theme-uninstall.md new file mode 100644 index 00000000000..608ba451701 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-theme-uninstall.md @@ -0,0 +1,107 @@ +--- +title: Uninstall themes Composer packages +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/themes.html +status: migrated +--- + +## Prerequisite {#instgde-install-uninst-theme-prereq} + +Before you use this command, you must know the relative path to your theme. Themes are located in a subdirectory of `/app/design/`. You must specify the path to the theme starting with the area, which is either `frontend` (for storefront themes) or `adminhtml` (for [Admin](https://glossary.magento.com/magento-admin) themes). + +For example, the path to the Luma [theme](https://glossary.magento.com/theme) provided with Magento 2 is `frontend/Magento/luma`. + +For more information about themes, see [Magento theme structure]({{ page.baseurl }}/frontend-dev-guide/themes/theme-structure.html). + +## Overview of uninstalling themes {#instgde-install-uninst-theme-over} + +This section discusses how to uninstall one or more themes, optionally including the themes' code from the file system. You can create backups first so you can restore the data at a later time. + +This command uninstalls *only* themes that are specified in `composer.json`; in other words, themes that are provided as [Composer](https://glossary.magento.com/composer) packages. If your theme is not a Composer package, you must uninstall it manually by: + +* Updating the `parent` node information in `theme.xml` to remove references to the theme. +* Removing theme code from the file system. + + [More information about theme inheritance]({{ page.baseurl }}/frontend-dev-guide/themes/theme-inherit.html). + +## First steps {#instgde-cli-before} +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Uninstall themes {#instgde-install-uninst-theme-uninst} + +Command usage: + +```bash +bin/magento theme:uninstall [--backup-code] [-c|--clear-static-content] {theme path} ... {theme path} +``` + +where + +* `{theme path}` is the relative path to the theme, starting with the area name. For example, the path to the Blank theme supplied with Magento 2 is `frontend/Magento/blank`. +* `--backup-code` backs up the Magento 2 codebase as discussed in the paragraphs that follow. +* `--clear-static-content` cleans generated [static view files]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-static-view.html#config-cli-static-overview), which is necessary to cause static view files to display properly. + +The command performs the following tasks: + +1. Verifies that the specified theme paths exist; if not, the command terminates. +1. Verifies that the theme is a Composer package; if not, the command terminates. +1. Checks for dependencies; if there are any, the command terminates. + + To work around this, you can either uninstall all themes at the same time or you can uninstall the depending theme first. + +1. Verifies that the theme is not being used; if it is being used, the command terminates. +1. Verifies that the theme is not the base of the virtual theme; if it is the base of a virtual theme, the command terminates. +1. Puts the store in maintenance mode. +1. If `--backup-code` is specified, backs up the Magento 2 codebase, excluding the `pub/static`, `pub/media`, and `var` directories. + + The backup file name is `var/backups/_filesystem.tgz` + + You can restore backups at any time using the [magento setup:rollback]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall-mods.html#instgde-cli-uninst-mod-roll) command. + +1. Removes themes from the `theme` database table. +1. Remove themes from code base using `composer remove`. +1. Cleans the [cache](https://glossary.magento.com/cache). +1. Cleans generated classes +1. If `--clear-static-content` is specified, cleans [generated static view files]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-static-view.html#config-cli-static-overview). + +For example, if you attempt to uninstall a theme that another theme depends on, the following message displays: + +```terminal +Cannot uninstall frontend/ExampleCorp/SampleModuleTheme because the following package(s) depend on it: + ExampleCorp/sample-module-theme-depend +``` + +One alternative is to uninstall both themes at the same time as follows after backing up the Magento codebase: + +```bash +bin/magento theme:uninstall frontend/ExampleCorp/SampleModuleTheme frontend/ExampleCorp/SampleModuleThemeDepend --backup-code +``` + +Messages similar to the following display: + +```terminal +Code backup is starting... +Code backup filename: 1435261098_filesystem_code.tgz (The archive can be uncompressed with 7-Zip on Windows systems) +Code backup path: /var/www/html/magento2/var/backups/1435261098_filesystem_code.tgz +[SUCCESS]: Code backup completed successfully.Removing frontend/ExampleCorp/SampleModuleTheme, frontend/ExampleCorp/SampleModuleThemeDepend from database +Loading composer repositories with package information +Updating dependencies (including require-dev) +Removing frontend/ExampleCorp/SampleModuleTheme, frontend/ExampleCorp/SampleModuleThemeDepend from Magento codebase + - Removing ExampleCorp/sample-module-theme-depend (dev-master) +Removing ExampleCorp/SampleThemeDepend + - Removing ExampleCorp/sample-module-theme (dev-master) +Removing ExampleCorp/SampleTheme +Writing lock file +Generating autoload files +Cache cleared successfully. +Alert: Generated static view files were not cleared. You can clear them using the --clear-static-content option. +Failure to clear static view files might cause display issues in the Admin and storefront. +Disabling maintenance mode +``` + + {:.bs-callout-info} +To uninstall a Magento [Admin](https://glossary.magento.com/admin) theme, you must also remove it from your component's [dependency injection](https://glossary.magento.com/dependency-injection) configuration, `/etc/di.xml`. diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-langpk.md b/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-langpk.md deleted file mode 120000 index f7e0c6ce5cc..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-langpk.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-uninstall-langpk.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-langpk.md b/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-langpk.md new file mode 100644 index 00000000000..d7ccf48473c --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-langpk.md @@ -0,0 +1,69 @@ +--- +title: Uninstall language packages +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/language-packages.html +status: migrated +--- + +## Overview of uninstalling language packages {#instgde-cli-uninst-lgpk-over} + +This section discusses how to uninstall one or more language packages, optionally including the language packages' code from the file system. You can create backups first so you can restore the data at a later time. + +This command uninstalls *only* language packages that are specified in `composer.json`; in other words, language packages that are provided as [Composer](https://glossary.magento.com/composer) packages. If your [language package](https://glossary.magento.com/language-package) is not a Composer package, you must uninstall it manually by removing language package code from the file system. + +You can restore backups at any time using the [magento setup:rollback]({{ page.baseurl }}/install-gde/install/cli/install-cli-uninstall-mods.html#instgde-cli-uninst-mod-roll) command. + +## First steps {#instgde-cli-before} +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Uninstall language packages {#instgde-cli-uninst-lgpk-uninst} + +Command usage: + +```bash +bin/magento i18n:uninstall [-b|--backup-code] {language package name} ... {language package name} +``` + +The language package uninstall command performs the following tasks: + +1. Checks for dependencies; if so, the command terminates. + + To work around this, you can either uninstall all dependent language packages at the same time or you can uninstall the depending language packages first. + +1. If `--backup code` is specified, backs up the Magento file system (excluding `var` and `pub/static` directories) to `var/backups/_filesystem.tgz` +1. Removes language packages files from the codebase using `composer remove`. +1. Cleans the [cache](https://glossary.magento.com/cache). + +For example, if you attempt to uninstall a language package that another language package depends on, the following message displays: + +```terminal +Cannot uninstall vendorname/language-en_us because the following package(s) depend on it: + vendorname/language-en_gb +``` + +One alternative is to uninstall both language packages after backing up the Magento codebase: + +```bash +bin/magento i18n:uninstall vendorname/language-en_us vendorname/language-en_gb --backup-code +``` + +Messages similar to the following display: + +```terminal +Code backup is starting... +Code backup filename: 1435261098_filesystem_code.tgz (The archive can be uncompressed with 7-Zip on Windows systems) +Code backup path: /var/www/html/magento2/var/backups/1435261098_filesystem_code.tgz +[SUCCESS]: Code backup completed successfully. +Loading composer repositories with package information +Updating dependencies (including require-dev) + - Removing vendorname/language-en_us (dev-master) +Removing Magento/LanguageEn_us + - Removing vendorname/language-en_br (dev-master) + - Removing vendorname/language-en_br (dev-master) +Writing lock file +Generating autoload files +``` diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-mods.md b/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-mods.md deleted file mode 120000 index ac070ccd38d..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-mods.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-uninstall-mods.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-mods.md b/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-mods.md new file mode 100644 index 00000000000..fa3620e1b72 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall-mods.md @@ -0,0 +1,197 @@ +--- +title: Uninstall modules +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/uninstall-modules.html +status: migrated +--- + +## Prerequisites {#instgde-cli-uninst-prereq} + +Before you use this command, you must [install the Magento software]({{ page.baseurl }}/install-gde/install/cli/install-cli-install.html). + +## Overview of uninstalling modules {#instgde-cli-uninst-mod-over} + +This section discusses how to uninstall one or more modules. During uninstallation, you can optionally remove the modules' code, database schema, and database data. You can create backups first so you can recover the data at a later time. + +You should uninstall a module only if you're certain you won't use it. Instead of uninstalling a module, you can disable it as discussed in [Enable or disable modules]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-enable.html). + + {:.bs-callout-info} +This command checks _only_ dependencies declared in the `composer.json` file. If you uninstall a [module](https://glossary.magento.com/module) that is _not_ defined in the `composer.json` file, this command uninstalls the module without checking for dependencies. This command does _not_, however, remove the module's code from the Magento file system. You must use file system tools to remove the module's code (for example, `rm -rf `). As an alternative, you can [disable]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-enable.html) non-Composer modules. + +## First steps {#instgde-cli-before} +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common). + +## Uninstall modules {#instgde-cli-uninst-mod-uninst} + +Command usage: + +```bash +bin/magento module:uninstall [--backup-code] [--backup-media] [--backup-db] [-r|--remove-data] [-c|--clear-static-content] \ + {ModuleName} ... {ModuleName} +``` + +where `{ModuleName}` specifies the module name in `_` format. For example, the Magento Customer module name is `Magento_Customer`. To get a list of module names, enter `magento module:status` + +The module uninstall command performs the following tasks: + +1. Verifies that the specified modules exist in the code base and are packages installed by [Composer](https://glossary.magento.com/composer). + + This command works *only* with modules defined as Composer packages. + +1. Checks for dependencies with other modules; if there are any, the command terminates.. + + To work around this, you can either uninstall all modules at the same time or you can uninstall the depending modules first. + +1. Requests confirmation to proceed. +1. Puts the store in maintenance mode. +1. Processes the following command options. + + | Option | Meaning | Backup file name and location | + | ---------------- | -------------------------------------------------------------------------------- | -------------------------------------------- | + | `--backup-code` | Backs up the Magento file system (excluding `var` and `pub/static` directories). | var/backups/_filesystem.tgz | + | `--backup-media` | Backs up the pub/media directory. | var/backups/_filesystem_media.tgz | + | `--backup-db` | Backs up the Magento 2 database. | var/backups/_db.gz | + +1. If `--remove-data` is specified, removes the database schema and data defined in the module's `Uninstall` classes. + + For each specified module to uninstall, invokes the `uninstall` method in its `Uninstall` class. This class must inherit from [Magento\Framework\Setup\UninstallInterface]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/Setup/UninstallInterface.php). + +1. Removes the specified modules from the `setup_module` database table. +1. Removes the specified modules from the module list in the [deployment configuration]({{ page.baseurl }}/config-guide/config/config-php.html). +1. Removes code from the codebase using `composer remove`. + + {:.bs-callout-info} + Uninstalling a module _always_ runs `composer remove`. The `--remove-data` option removes database data and schema defined by the module's `Uninstall` class. + +1. Cleans the [cache](https://glossary.magento.com/cache). +1. Updates generated classes. +1. If `--clear-static-content` is specified, cleans [generated static view files]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-static-view.html#config-cli-static-overview). +1. Takes the store out of maintenance mode. + +For example, if you attempt to uninstall a module that another module depends on, the following message displays: + +```terminal +magento module:uninstall Magento_SampleMinimal + Cannot uninstall module 'Magento_SampleMinimal' because the following module(s) depend on it: + Magento_SampleModifyContent +``` + +One alternative is to uninstall both modules after backing up the Magento module file system, `pub/media` files, and database tables but *not* removing the module's [database schema](https://glossary.magento.com/database-schema) or data: + +```bash +bin/magento module:uninstall Magento_SampleMinimal Magento_SampleModifyContent --backup-code --backup-media --backup-db +``` + +Messages similar to the following display: + +```terminal +You are about to remove code and/or database tables. Are you sure?[y/N]y +Enabling maintenance mode +Code backup is starting... +Code backup filename: 1435261098_filesystem_code.tgz (The archive can be uncompressed with 7-Zip on Windows systems) +Code backup path: /var/www/html/magento2/var/backups/1435261098_filesystem_code.tgz +[SUCCESS]: Code backup completed successfully. +Media backup is starting... +Media backup filename: 1435261098_filesystem_media.tgz (The archive can be uncompressed with 7-Zip on Windows systems) +Media backup path: /var/www/html/magento2/var/backups/1435261098_filesystem_media.tgz +[SUCCESS]: Media backup completed successfully. +DB backup is starting... +DB backup filename: 1435261098_db.gz (The archive can be uncompressed with 7-Zip on Windows systems) +DB backup path: /var/www/html/magento2/var/backups/1435261098_db.gz +[SUCCESS]: DB backup completed successfully. +You are about to remove a module(s) that might have database data. Remove the database data manually after uninstalling, if desired. +Removing Magento_SampleMinimal, Magento_SampleModifyContent from module registry in database +Removing Magento_SampleMinimal, Magento_SampleModifyContent from module list in deployment configuration +Removing code from Magento codebase: +Loading composer repositories with package information +Updating dependencies (including require-dev) + - Removing magento/sample-module-modifycontent (1.0.0) +Removing Magento/SampleModifycontent + - Removing magento/sample-module-minimal (1.0.0) +Removing Magento/SampleMinimal +Writing lock file +Generating autoload files +Cache cleared successfully. +Generated classes cleared successfully. +Alert: Generated static view files were not cleared. You can clear them using the --clear-static-content option. Failure to clear static view files might cause display issues in the Admin and storefront. +Disabling maintenance mode +``` + + {:.bs-callout-info} +Errors display if you attempt to uninstall a module with a dependency on another module. In that case, you cannot uninstall one module; you must uninstall both. + +## Roll back the file system, database, or media files {#instgde-cli-uninst-mod-roll} + +To restore the Magento codebase to the state at which you backed it up, use the following command: + +```bash +bin/magento setup:rollback [-c|--code-file=""] [-m|--media-file=""] [-d|--db-file=""] +``` + +where `` is the name of the backup file located in `/var/backups`. To display a list of backup files, enter `magento info:backups:list` + +{:.bs-callout-warning} +This command deletes the specified files or the database before restoring them. (For example, the --media-file option deletes media assets under `pub/media` before restoring from the specified rollback file.) Make sure you have made no changes to the file system or database that you want to keep before using this command. + + {:.bs-callout-info} +To display a list of available backup files, enter `magento info:backups:list` + +This command performs the following tasks: + +1. Puts the store in maintenance mode. +1. Verifies the backup file name. +1. If you specify a code rollback file: + + a. Verifies the rollback destination locations are writable (note that the `pub/static` and `var` folders are ignored). + + b. Deletes all files and directories under your Magento 2 installation directory. + + c. Extracts the archive file to the destination locations. + +1. If you specify a database rollback file: + + a. Drops the entire Magento database. + + b. Restores the database using the database backup. + +1. If you specify a media rollback file: + + a. Verifies the rollback destination locations are writable. + + b. Deletes all files and directories under `pub/media` + + c. Extracts the archive file to the destination locations. + +1. Takes the store out of maintenance mode. + +For example, to restore a code (that is, file system) backup, enter the following commands in the order shown: + +* Display a list of backups: + + ```bash + magento info:backups:list + ``` + +* Restore a file backup named `1433876616_filesystem.tgz`: + + ```bash + magento setup:rollback --code-file="1433876616_filesystem.tgz" + ``` + + Messages similar to the following display: + + ```terminal + Enabling maintenance mode + Code rollback is starting ... + Code rollback filename: 1433876616_filesystem.tgz + Code rollback file path: /var/www/html/magento2/var/backups/1433876616_filesystem.tgz + [SUCCESS]: Code rollback has completed successfully. + Disabling maintenance mode + ``` + + {:.bs-callout-info} +To run the `magento` command again without changing directories, you might need to enter `cd pwd`. diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall.md b/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall.md deleted file mode 120000 index 88bc495723f..00000000000 --- a/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/install/cli/install-cli-uninstall.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall.md b/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall.md new file mode 100644 index 00000000000..7f329a32f6c --- /dev/null +++ b/src/guides/v2.4/install-gde/install/cli/install-cli-uninstall.md @@ -0,0 +1,72 @@ +--- +title: Uninstall or reinstall Commerce +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/uninstall.html +status: migrated +--- + +## First steps {#instgde-cli-before} + +{% include install/first-steps-cli.md %} +In addition to the command arguments discussed here, see [Common arguments][]. + +## Prerequisites {#instgde-install-magento-prereq} + +Before you use these commands, you must [install the Magento software][]. + +## Update the Magento software {#instgde-install-magento-update} + +To update the Magento software: + +* If you installed the software from an archive or if you used 'composer-create-project', see the [Upgrade Guide](https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/overview.html). +* If you are a contributing developer (that is, you used `git clone`), see [Update the Magento application][]. + +## Reinstall the Magento software {#instgde-install-magento-reinstall} + +The way you reinstall the Magento application from the command line depends on your role: + +* If you installed the software from an archive or if you used 'composer-create-project', see [Reinstall Magento Software][]. +* If you're a contributing developer (that is, you started using `git clone`), see [Reinstall Magento Software][]. + +## Uninstall the Magento software {#instgde-install-uninstall} + +Uninstalling the Magento software drops and restores the database, removes the deployment configuration, and clears directories under `var`. + +To uninstall the Magento software, enter the following command: + +```bash +bin/magento setup:uninstall +``` + +The following message displays to confirm a successful uninstallation: + +```terminal +[SUCCESS]: Magento uninstallation complete. +``` + +## Optionally keeping generated files {#instgde-install-keep} + +By default, `bin/magento setup:upgrade` clears compiled code and the cache. Typically, you use `bin/magento setup:upgrade` to update components and each component can require different compiled classes. + +However, in some situations (particularly, deploying Magento to production), you might wish to avoid clearing compiled code because it can take some time. (The [cache](https://glossary.magento.com/cache) is still cleared.) To update the Magento [database schema](https://glossary.magento.com/database-schema) and data *without* clearing compiled code, enter: + +```bash +bin/magento setup:upgrade --keep-generated +``` + +{:.bs-callout-warning} +The optional `--keep-generated` option should be used _only_ in limited circumstances by experienced system integrators. This option should _never_ be used in a development environment. Improper use of this optional parameter can cause errors during code execution. + +## Install the Magento software + +* [Install the Magento software using the command line][] + + +[Update the Magento application]: https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/developer/git-installs.html +[install the Magento software]: {{ page.baseurl }}/install-gde/install/cli/install-cli-install.html +[Common arguments]: {{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands.html#instgde-cli-subcommands-common +[Reinstall Magento Software]: {{ page.baseurl }}/install-gde/install/cli/dev_reinstall.html +[Install the Magento software using the command line]: {{ page.baseurl }}/install-gde/install/cli/install-cli.html \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/cli/install-cli.md b/src/guides/v2.4/install-gde/install/cli/install-cli.md index cc439985498..e99987823fe 100644 --- a/src/guides/v2.4/install-gde/install/cli/install-cli.md +++ b/src/guides/v2.4/install-gde/install/cli/install-cli.md @@ -14,6 +14,8 @@ redirect_from: - /guides/v2.4/install-gde/install/web/install-web_5-create-admin.html - /guides/v2.4/install-gde/install/web/install-web_6-install.html - /guides/v2.4/install-gde/install/cli/install-cli-install.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/advanced.html +status: migrated --- {:.bs-callout-tip} @@ -108,7 +110,7 @@ The following tables provide many but not all available install parameters. For |--- |--- |--- | |`--base-url`|Base URL to use to access your Admin and storefront in any of the following formats:

    `http[s]:////`.

    **Note:** The scheme (http:// or https://) and a trailing slash are both required.

    `` is the docroot-relative path in which to install the Magento software. Depending on how you set up your web server and virtual hosts, the path might be magento2 or it might be blank.

    To access Magento on localhost, you can use either `http://127.0.0.1//` or `http://127.0.0.1//`.

    - `{{base_url}}` which represents a base URL defined by a virtual host setting or by a virtualization environment like Docker. For example, if you set up a virtual host for Magento with the hostname magento.example.com, you can install the Magento software with `--base-url={{base_url}}` and access the Admin with a URL like http://magento.example.com/admin.|Yes| |`--backend-frontname`|Uniform Resource Identifier (URI) to access the Admin. You can omit this parameter to let Magento generate a random URI for you with the following pattern admin_jkhgdfq.

    We recommend a random URI for security purposes. A random URI is harder for hackers or malicious software to exploit.

    The URI displays at the end of the installation. You can display it later at any time using the magento info:adminuri command.

    If you choose to enter a value, we recommend you not use a common word like admin, backend, and so on. The Admin URI can contain alphanumeric values and the underscore character (`_`) only.|No| -|`--db-host`|Use any of the following:

    - The database server's fully qualified hostname or IP address.

    - `localhost` (default) or `127.0.0.1` if your database server is on the same host as your web server.localhost means the MySQL client library uses UNIX sockets to connect to the database. `127.0.0.1` causes the client library to use the TCP protocol. For more information about sockets, see the [PHP PDO_MYSQL documentation](http://php.net/manual/en/ref.pdo-mysql.php).

    **Note:** You can optionally specify the database server port in its hostname like www.example.com:9000|Yes| +|`--db-host`|Use any of the following:

    - The database server's fully qualified hostname or IP address.

    - `localhost` (default) or `127.0.0.1` if your database server is on the same host as your web server.localhost means the MySQL client library uses UNIX sockets to connect to the database. `127.0.0.1` causes the client library to use the TCP protocol. For more information about sockets, see the [PHP PDO_MYSQL documentation](https://php.net/manual/en/ref.pdo-mysql.php).

    **Note:** You can optionally specify the database server port in its hostname like www.example.com:9000|Yes| |`--db-name`|Name of the Magento database instance in which you want to install the Magento database tables.

    Default is `magento2`.|Yes| |`--db-user`|Username of the Magento database instance owner.

    Default is `root`.|Yes| |`--db-password`|Magento database instance owner's password.|Yes| diff --git a/src/guides/v2.4/install-gde/install/get-help.md b/src/guides/v2.4/install-gde/install/get-help.md deleted file mode 120000 index 06d066a7f45..00000000000 --- a/src/guides/v2.4/install-gde/install/get-help.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/install/get-help.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/get-help.md b/src/guides/v2.4/install-gde/install/get-help.md new file mode 100644 index 00000000000..78e27d1ab34 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/get-help.md @@ -0,0 +1,15 @@ +--- +subgroup: YY_Help +title: Get help with your installation +menu_title: Get help with your installation +menu_order: 1 +menu_node: parent +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/advanced.html +status: migrated +--- + +{% include install/get-help.md %} diff --git a/src/guides/v2.4/install-gde/install/post-install-config.md b/src/guides/v2.4/install-gde/install/post-install-config.md index 156a51a6844..fe75a2559d2 100644 --- a/src/guides/v2.4/install-gde/install/post-install-config.md +++ b/src/guides/v2.4/install-gde/install/post-install-config.md @@ -4,6 +4,8 @@ functional_areas: - Install - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/configuration.html +status: migrated --- Now that you've finished installing the Magento application, you need to configure it. This topic provides some recommended configuration settings for Magento; the list is not complete so watch this space. @@ -11,6 +13,7 @@ Now that you've finished installing the Magento application, you need to configu ## Set up cron {#post-install-cron} cron---the UNIX task scheduler---is critical to Magento's day-to-day operations. It schedules things like reindexing, newsletters, e-mails, sitemaps, and so on. A *crontab* is a cron configuration. +You must install Magento services in the *crontab*, or some core functionality (as well as some third-party extensions) will not function properly. {% include config/setup-cron_how-to.md %} @@ -50,8 +53,8 @@ The UNIX `logrotate` utility enables you to administer systems that generate lar For more information, see one of the following: * [HowTo: The Ultimate Logrotate Command Tutorial with 10 Examples](https://www.thegeekstuff.com/2010/07/logrotate-examples) -* [stackexchange](http://unix.stackexchange.com/questions/85662/how-to-properly-automatically-manually-rotate-log-files-for-production-rails-app) -* [logrotate man page](http://linuxconfig.org/logrotate-8-manual-page) +* [stackexchange](https://unix.stackexchange.com/questions/85662/how-to-properly-automatically-manually-rotate-log-files-for-production-rails-app) +* [logrotate man page](https://linuxconfig.org/logrotate-8-manual-page) ### Set up iptables rules to enable various Magento services to communicate. @@ -60,7 +63,7 @@ Whether you have one server or many, you must open ports in the firewall to enab More information: * Ubuntu: [Ubuntu documentation page](https://help.ubuntu.com/community/IptablesHowTo). -* CentOS: [CentOS how-to](http://wiki.centos.org/HowTos/Network/IPTables). +* CentOS: [CentOS how-to](https://wiki.centos.org/HowTos/Network/IPTables). ### Security Enhanced Linux (SELinux) rules diff --git a/src/guides/v2.4/install-gde/install/post-install-umask.md b/src/guides/v2.4/install-gde/install/post-install-umask.md deleted file mode 120000 index d4a4778ae63..00000000000 --- a/src/guides/v2.4/install-gde/install/post-install-umask.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/install/post-install-umask.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/post-install-umask.md b/src/guides/v2.4/install-gde/install/post-install-umask.md new file mode 100644 index 00000000000..2e1b82a18bb --- /dev/null +++ b/src/guides/v2.4/install-gde/install/post-install-umask.md @@ -0,0 +1,17 @@ +--- +subgroup: 05_umask +title: Optionally set a umask +menu_title: Optionally set a umask +menu_node: parent +menu_order: 5 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/set-umask.html +status: migrated +--- + +## Optionally set `magento_umask` {#mage-owner-umask} + +{% include install/file-system-umask.md %} diff --git a/src/guides/v2.4/install-gde/install/prepare-install.md b/src/guides/v2.4/install-gde/install/prepare-install.md index 9f60ecc2fbb..ed8084ea94c 100644 --- a/src/guides/v2.4/install-gde/install/prepare-install.md +++ b/src/guides/v2.4/install-gde/install/prepare-install.md @@ -4,13 +4,13 @@ functional_areas: - Install - System - Setup -migrated_to: https://developer.adobe.com/commerce/contributor/guides/install/update-dependencies/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/install/update-dependencies/ +status: migrated --- ## Introduction to Magento installation dependencies {#install-update-depend} -We now use [Composer](http://getcomposer.org) to resolve dependencies before you install the Magento software and extensions. +We now use [Composer](https://getcomposer.org/) to resolve dependencies before you install the Magento software and extensions. [Composer](https://glossary.magento.com/composer) is a separate application that manages [PHP](https://glossary.magento.com/php) dependencies. Before you can install the Magento software, you must perform the following tasks in the order shown: diff --git a/src/guides/v2.4/install-gde/install/sample-data-after-clone.md b/src/guides/v2.4/install-gde/install/sample-data-after-clone.md index a64e302ed64..c2750b88c84 100644 --- a/src/guides/v2.4/install-gde/install/sample-data-after-clone.md +++ b/src/guides/v2.4/install-gde/install/sample-data-after-clone.md @@ -9,6 +9,8 @@ functional_areas: - Install - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/sample-data/git-repositories.html +status: migrated --- {% include install/sampledata/sample-data-clone-24.md %} diff --git a/src/guides/v2.4/install-gde/install/sample-data-after-composer.md b/src/guides/v2.4/install-gde/install/sample-data-after-composer.md deleted file mode 120000 index 5aa9b958fcc..00000000000 --- a/src/guides/v2.4/install-gde/install/sample-data-after-composer.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/install/sample-data-after-composer.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/sample-data-after-composer.md b/src/guides/v2.4/install-gde/install/sample-data-after-composer.md new file mode 100644 index 00000000000..13330fd97cd --- /dev/null +++ b/src/guides/v2.4/install-gde/install/sample-data-after-composer.md @@ -0,0 +1,17 @@ +--- +subgroup: T_SampleData +title: Install using Composer +menu_title: Install using Composer +menu_node: +menu_order: 3 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/sample-data/composer-packages.html +status: migrated +--- + +{% include install/sampledata/sample-data-composer.md %} + +{% include install/sampledata/sample-data-after.md %} diff --git a/src/guides/v2.4/install-gde/install/sample-data-after-magento.md b/src/guides/v2.4/install-gde/install/sample-data-after-magento.md deleted file mode 120000 index 27bbbcae46c..00000000000 --- a/src/guides/v2.4/install-gde/install/sample-data-after-magento.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/install/sample-data-after-magento.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/sample-data-after-magento.md b/src/guides/v2.4/install-gde/install/sample-data-after-magento.md new file mode 100644 index 00000000000..63eecda4286 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/sample-data-after-magento.md @@ -0,0 +1,18 @@ +--- +subgroup: T_SampleData +title: Install sample data after Magento +menu_title: Install sample data after Magento +menu_node: parent +menu_order: 1 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/sample-data/overview.html +status: migrated +--- + +The following topics discuss how to install optional sample data after you have already installed the Magento software. There is one additional step compared to pre-installation, which is to update the Magento [database schema](https://glossary.magento.com/database-schema) and data. + +* [Install using Composer]({{ page.baseurl }}/install-gde/install/sample-data-after-composer.html) +* [Install by cloning repositories]({{ page.baseurl }}/install-gde/install/sample-data-after-clone.html) diff --git a/src/guides/v2.4/install-gde/install/sample-data-before-clone.md b/src/guides/v2.4/install-gde/install/sample-data-before-clone.md index 8b12ae2c4ed..c1f973c3342 100644 --- a/src/guides/v2.4/install-gde/install/sample-data-before-clone.md +++ b/src/guides/v2.4/install-gde/install/sample-data-before-clone.md @@ -9,6 +9,8 @@ functional_areas: - Install - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/sample-data/git-repositories.html +status: migrated --- {% include install/sampledata/sample-data-clone-24.md %} diff --git a/src/guides/v2.4/install-gde/install/sample-data-before-composer.md b/src/guides/v2.4/install-gde/install/sample-data-before-composer.md deleted file mode 120000 index 16d5dc8d400..00000000000 --- a/src/guides/v2.4/install-gde/install/sample-data-before-composer.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/install/sample-data-before-composer.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/sample-data-before-composer.md b/src/guides/v2.4/install-gde/install/sample-data-before-composer.md new file mode 100644 index 00000000000..edaf2950df9 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/sample-data-before-composer.md @@ -0,0 +1,15 @@ +--- +subgroup: T_SampleData +title: Install using Composer +menu_title: Install using Composer +menu_node: +menu_order: 3 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/sample-data/composer-packages.html +status: migrated +--- + +{% include install/sampledata/sample-data-composer.md %} diff --git a/src/guides/v2.4/install-gde/install/sample-data-other-cmds.md b/src/guides/v2.4/install-gde/install/sample-data-other-cmds.md deleted file mode 120000 index d55199a2ac6..00000000000 --- a/src/guides/v2.4/install-gde/install/sample-data-other-cmds.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/install/sample-data-other-cmds.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/sample-data-other-cmds.md b/src/guides/v2.4/install-gde/install/sample-data-other-cmds.md new file mode 100644 index 00000000000..793440e8b53 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/sample-data-other-cmds.md @@ -0,0 +1,15 @@ +--- +subgroup: T_SampleData +title: Remove sample data modules or update sample data +menu_title: Remove sample data modules or update sample data +menu_node: +menu_order: 1000 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/sample-data/remove-or-update.html +status: migrated +--- + +{% include install/sampledata/sample-data-other-cmds.md %} diff --git a/src/guides/v2.4/install-gde/install/sample-data.md b/src/guides/v2.4/install-gde/install/sample-data.md deleted file mode 120000 index a6ea0af2143..00000000000 --- a/src/guides/v2.4/install-gde/install/sample-data.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/install/sample-data.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/sample-data.md b/src/guides/v2.4/install-gde/install/sample-data.md new file mode 100644 index 00000000000..f9aad17e6dd --- /dev/null +++ b/src/guides/v2.4/install-gde/install/sample-data.md @@ -0,0 +1,15 @@ +--- +subgroup: T_SampleData +title: Install, remove, or update optional sample data modules +menu_title: Install, remove, or update optional sample data modules +menu_node: parent +menu_order: 1 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/sample-data/overview.html +status: migrated +--- + +{% include install/sampledata/sample-data-intro.md %} diff --git a/src/guides/v2.4/install-gde/install/verify.md b/src/guides/v2.4/install-gde/install/verify.md deleted file mode 120000 index 33a15ca8d82..00000000000 --- a/src/guides/v2.4/install-gde/install/verify.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/install/verify.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/install/verify.md b/src/guides/v2.4/install-gde/install/verify.md new file mode 100644 index 00000000000..56622e5b762 --- /dev/null +++ b/src/guides/v2.4/install-gde/install/verify.md @@ -0,0 +1,49 @@ +--- +subgroup: 01_Verify +title: Verify the installation +menu_title: Verify the installation +menu_node: parent +menu_order: 1 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/next-steps/verify.html +status: migrated +--- + +## Verify the storefront (with optional sample data) {#instgde-verify-front-sample} + +Go to the [storefront](https://glossary.magento.com/storefront) in a web browser. For example, if your Magento installation base [URL](https://glossary.magento.com/url) is `http://www.example.com`, enter it in your browser's address or location bar. + +The following figure shows a sample storefront page. If it displays as follows, your installation was a success! + +![Magento storefront with the Luma theme]({{ site.baseurl }}/common/images/install-success_store-luma.png) + +## Verify the storefront (no sample data) {#instgde-verify-front} + +Go to the storefront in a web browser. For example, if your Magento installation base URL is `http://www.example.com`, enter it in your browser's address or location bar. + +The following figure shows a sample storefront page. If it displays as follows, your installation was a success! + +![Magento storefront which verifies a successful installation]({{ site.baseurl }}/common/images/install-success_store.png){:width="450px"} + +If the page displays a 404 (Not Found) or unconfigured (no styles, only text), see [After installing, images and stylesheets do not load; only text displays, no graphics](https://support.magento.com/hc/en-us/articles/360032994352). + +## Verify the Admin {#instgde-verify-admin} + +Go to the [Admin](https://glossary.magento.com/magento-admin) in a web browser. For example, if your Magento installation base URL is `http://www.example.com`, and the Admin URI is `admin_au1nT`, enter `http://www.example.com/admin_au1nT` in your browser's address or location bar. + +(The [Admin](https://glossary.magento.com/admin) URI is specified by the value of the `backend-frontname` installation parameter.) + +When prompted, log in as a Administrator. + +The following figure shows a sample Admin page. If it displays as follows, your installation was a success! + +![Admin which verifies a successful installation]({{ site.baseurl }}/common/images/install_success_admin.png) + +If the page displays unconfigured (no styles, only text), see [After installing, images and stylesheets do not load; only text displays, no graphics](https://support.magento.com/hc/en-us/articles/360032994352). + +If you get a 404 (Not Found) error similar to the following, see [Cannot access Magento software in a web browser](https://support.magento.com/hc/en-us/articles/360033117152). + +`The requested URL /magento2index.php/admin/admin/dashboard/index/key/0c81957145a968b697c32a846598dc2e/ was not found on this server.` diff --git a/src/guides/v2.4/install-gde/prereq/apache.md b/src/guides/v2.4/install-gde/prereq/apache.md index d5ea178446d..38c6f0c3b5e 100644 --- a/src/guides/v2.4/install-gde/prereq/apache.md +++ b/src/guides/v2.4/install-gde/prereq/apache.md @@ -4,6 +4,8 @@ functional_areas: - Install - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/web-server/apache.html +status: migrated --- ## Apache versions supported {#apache-support} @@ -23,7 +25,7 @@ Magento supports Apache 2.4.x. ## Important: Apache rewrites and .htaccess {#apache-help-rewrite} -This topic discusses how to enable Apache 2.4 rewrites and specify a setting for the [distributed configuration file, `.htaccess`](http://httpd.apache.org/docs/current/howto/htaccess.html). +This topic discusses how to enable Apache 2.4 rewrites and specify a setting for the [distributed configuration file, `.htaccess`](https://httpd.apache.org/docs/current/howto/htaccess.html). Magento uses server rewrites and `.htaccess` to provide directory-level instructions for Apache. The following instructions are included in all of the other sections in this topic as well. @@ -137,7 +139,7 @@ To upgrade to Apache 2.4: ``` {:.bs-callout-info} - If the 'apt-get install' command fails because of unmet dependencies, consult a resource like [http://askubuntu.com](http://askubuntu.com/questions/140246/how-do-i-resolve-unmet-dependencies-after-adding-a-ppa). + If the 'apt-get install' command fails because of unmet dependencies, consult a resource like [http://askubuntu.com](https://askubuntu.com/questions/140246/how-do-i-resolve-unmet-dependencies-after-adding-a-ppa). 1. Verify the installation. @@ -299,7 +301,7 @@ If you encounter 403 Forbidden errors when trying to access the Magento site, yo ### Solving 403 Forbidden errors for Apache 2.4 {#apache-error-2-4} -To enable website visitors to access your site, use one of the [Require directives](http://httpd.apache.org/docs/2.4/howto/access.html). +To enable website visitors to access your site, use one of the [Require directives](https://httpd.apache.org/docs/2.4/howto/access.html). For example: diff --git a/src/guides/v2.4/install-gde/prereq/connect-auth.md b/src/guides/v2.4/install-gde/prereq/connect-auth.md deleted file mode 120000 index 41d96c6b2ac..00000000000 --- a/src/guides/v2.4/install-gde/prereq/connect-auth.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/prereq/connect-auth.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/prereq/connect-auth.md b/src/guides/v2.4/install-gde/prereq/connect-auth.md new file mode 100644 index 00000000000..cd67fd042f4 --- /dev/null +++ b/src/guides/v2.4/install-gde/prereq/connect-auth.md @@ -0,0 +1,21 @@ +--- +subgroup: Prerequisites +title: Get your authentication keys +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/authentication-keys.html +status: migrated +--- + +{% include install/auth-tokens-get.md %} + +{:.ref-header} +Related topics + +* Use your authentication keys to: + + * [Get the {{site.data.var.ce}} or {{site.data.var.ee}} metapackage (integrators, packagers)]({{ page.baseurl }}/install-gde/composer.html) + * [Clone the Magento 2 GitHub]({{ page.baseurl }}/install-gde/prereq/dev_install.html) (contributing developers only) + * [Upgrade Magento and manage modules](https://experienceleague.adobe.com/docs/commerce-operations/upgrade-guide/overview.html) diff --git a/src/guides/v2.4/install-gde/prereq/dev_install.md b/src/guides/v2.4/install-gde/prereq/dev_install.md index cf917b17eea..046b67816c7 100644 --- a/src/guides/v2.4/install-gde/prereq/dev_install.md +++ b/src/guides/v2.4/install-gde/prereq/dev_install.md @@ -4,8 +4,8 @@ functional_areas: - Install - System - Setup -migrated_to: https://developer.adobe.com/commerce/contributor/guides/install/clone-repository/ -layout: migrated +redirect_to: https://developer.adobe.com/commerce/contributor/guides/install/clone-repository/ +status: migrated --- You can clone the latest code from the [Magento GitHub repository][gh-repo], and use code from a release branch or a development branch. diff --git a/src/guides/v2.4/install-gde/prereq/elasticsearch.md b/src/guides/v2.4/install-gde/prereq/elasticsearch.md index 6ea5fe32536..e1ceaa5f240 100644 --- a/src/guides/v2.4/install-gde/prereq/elasticsearch.md +++ b/src/guides/v2.4/install-gde/prereq/elasticsearch.md @@ -5,6 +5,8 @@ functional_areas: - Search - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/search-engine/overview.html +status: migrated --- As of {{ site.data.var.ee }} and {{ site.data.var.ce }} 2.4, all installations must be configured to use [Elasticsearch][] or [OpenSearch][] as the [catalog](https://glossary.magento.com/catalog) search solution. @@ -22,8 +24,8 @@ Refer to the [System Requirements][] for specific version information. We recommend the following: -* [Configure nginx and Elasticsearch][] -* [Configure Apache and Elasticsearch][] +* [Configure nginx for your search engine][] +* [Configure Apache for your search engine][] ## Installation location {#es-host} diff --git a/src/guides/v2.4/install-gde/prereq/es-aws.md b/src/guides/v2.4/install-gde/prereq/es-aws.md index 37842c60a8f..a9b0a3e7312 100644 --- a/src/guides/v2.4/install-gde/prereq/es-aws.md +++ b/src/guides/v2.4/install-gde/prereq/es-aws.md @@ -5,6 +5,8 @@ functional_areas: - Search - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/search-engine/aws-opensearch.html +status: migrated --- {{ site.data.var.ee }} and {{ site.data.var.ce }} 2.4.3 supports using Amazon OpenSearch Service clusters. This service is the successor to Amazon Elasticsearch Service. This topic describes how to configure Commerce to use AWS OpenSearch, and how to migrate data from a local Elasticsearch or OpenSearch instance to an AWS OpenSearch cluster. @@ -56,4 +58,5 @@ For additional information, see the [OpenSearch AWS documentation][]. [Elasticdump]: https://www.npmjs.com/package/elasticdump [Elasticsearch documentation]: https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html [Migrating to Amazon OpenSearch Service]: https://docs.aws.amazon.com/opensearch-service/latest/developerguide/migration.html +[OpenSearch AWS documentation]: https://docs.aws.amazon.com/opensearch-service/index.html [Advanced Install]: {{ page.baseurl }}/install-gde/install/cli/install-cli.html diff --git a/src/guides/v2.4/install-gde/prereq/es-config-apache.md b/src/guides/v2.4/install-gde/prereq/es-config-apache.md index 3046dadd020..4e642b8e6cf 100644 --- a/src/guides/v2.4/install-gde/prereq/es-config-apache.md +++ b/src/guides/v2.4/install-gde/prereq/es-config-apache.md @@ -7,6 +7,8 @@ functional_areas: - Search - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/search-engine/configure-apache.html +status: migrated --- {% include config/es-webserver-overview.md %} @@ -79,9 +81,9 @@ This section discusses how to configure a proxy using a virtual host. ## Secure communication with Apache {#es-ws-secure-apache} -This section discusses how to secure communication between Apache and the search engine using [HTTP Basic](http://tools.ietf.org/html/rfc2617) authentication with Apache. For more options, consult one of the following resources: +This section discusses how to secure communication between Apache and the search engine using [HTTP Basic](https://datatracker.ietf.org/doc/html/rfc2617) authentication with Apache. For more options, consult one of the following resources: -* [Apache 2.4 authentication and authorization tutorial](http://httpd.apache.org/docs/2.4/howto/auth.html) +* [Apache 2.4 authentication and authorization tutorial](https://httpd.apache.org/docs/2.4/howto/auth.html) See one of the following sections: diff --git a/src/guides/v2.4/install-gde/prereq/es-config-nginx.md b/src/guides/v2.4/install-gde/prereq/es-config-nginx.md index ff52c850727..4a4e036edc8 100644 --- a/src/guides/v2.4/install-gde/prereq/es-config-nginx.md +++ b/src/guides/v2.4/install-gde/prereq/es-config-nginx.md @@ -7,6 +7,8 @@ functional_areas: - Search - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/search-engine/configure-nginx.html +status: migrated --- {% include config/es-webserver-overview.md %} @@ -81,7 +83,7 @@ This section discusses how to specify who can access the [nginx](https://glossar ## Secure communication with nginx {#es-ws-secure-nginx} -This section discusses how to set up [HTTP Basic authentication](http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html) with your secure proxy. Use of TLS and HTTP Basic authentication together prevents anyone from intercepting communication with Elasticsearch or with your {{ site.data.var.ee }} or {{ site.data.var.ce }} server. +This section discusses how to set up [HTTP Basic authentication](https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html) with your secure proxy. Use of TLS and HTTP Basic authentication together prevents anyone from intercepting communication with Elasticsearch or with your {{ site.data.var.ee }} or {{ site.data.var.ce }} server. Because nginx natively supports HTTP Basic authentication, we recommend it over, for example, [Digest authentication](https://www.nginx.com/resources/wiki/modules/auth_digest/), which isn't recommended in production. diff --git a/src/guides/v2.4/install-gde/prereq/file-sys-perms-over.md b/src/guides/v2.4/install-gde/prereq/file-sys-perms-over.md deleted file mode 120000 index 23b7a7bb097..00000000000 --- a/src/guides/v2.4/install-gde/prereq/file-sys-perms-over.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/prereq/file-sys-perms-over.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/prereq/file-sys-perms-over.md b/src/guides/v2.4/install-gde/prereq/file-sys-perms-over.md new file mode 100644 index 00000000000..ecb468a8f45 --- /dev/null +++ b/src/guides/v2.4/install-gde/prereq/file-sys-perms-over.md @@ -0,0 +1,63 @@ +--- +title: Overview of ownership and permissions +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/file-system/overview.html +status: migrated +--- + +It is important to secure your Magento installation in a development environment to help prevent issues related to unauthorized people or processes accessing—and potentially harming—your system. Use the following file system ownership and permissions guidelines to protect your installation. + +## File system owner + +The file system owner is a user that owns and holds write permissions to files in the Magento file system. + +There are two types of file system owners: + +- **Shared hosting with a single user** + + Shared hosting providers enable you to log in to the Magento server as one user. As a single user, you can log in, transfer files using FTP, and run the web server. You have the option of setting a [`umask`](#restrict) to further restrict access, particularly in a production environment. + +- **Private hosting with two users** + + Private hosting is useful if you manage a Magento server. Each user has a specific responsibility: + + - The _web server user_ runs the Admin and storefront. + + - The _command-line user_ runs the Magento cron jobs and command-line utilities. + + Both users require the same level of permissions to the Magento file system, so it is best to use a [shared group][] and set a [`umask`](#restrict). + +### Restrict access with a umask {#restrict} + +To tighten security, particularly in a production environment on a shared hosting system, you can use `umask` to restrict access. A `umask`—also referred to as a _file system creation mask_—is a set of bits that controls how the file permissions are set for newly created files. + +{:.bs-callout-warning} +File system security is complex and extremely important. We strongly recommend that you consult an experienced system administrator or network administrator before you decide the level of permissions to set. We provide a mechanism for you to use, but creating a permissions strategy is your responsibility. + +Magento uses a three-bit, default mask: `002`. Subtract the Magento default mask from the UNIX defaults of 666 for files and 777 for directories. + +For example: + +- **775 for directories**—Full control by the user, full control by the group, and enables everyone to traverse the directory. These permissions are typically required by shared hosting providers. + +- **664 for files**—Writable by the user, writable by the group, and read-only for everyone else. + +For more information about creating a `magento_umask` file, see [Optionally set a umask]({{ page.baseurl }}/install-gde/install/post-install-umask.html). + +## Permissions, ownership, and Magento modes + +We recommend different permissions and ownership when you use the different Magento modes: default mode, developer mode, and production mode. See [About Magento modes][modes] in the _Configuration guide_. + +We further discuss permissions recommendations in [File systems access permissions][config-file-access] in the _Configuration guide_. + +{:.bs-callout-tip} +Before you install the Magento software, review [Set pre-installation ownership and permissions]({{ page.baseurl }}/install-gde/prereq/file-system-perms.html). + + + +[config-file-access]: {{page.baseurl}}/config-guide/prod/prod_file-sys-perms.html +[modes]: {{page.baseurl}}/config-guide/bootstrap/magento-modes.html +[shared group]: {{page.baseurl}}/install-gde/prereq/file-system-perms.html#perms-private diff --git a/src/guides/v2.4/install-gde/prereq/file-system-perms.md b/src/guides/v2.4/install-gde/prereq/file-system-perms.md deleted file mode 120000 index ab1a18d9344..00000000000 --- a/src/guides/v2.4/install-gde/prereq/file-system-perms.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/prereq/file-system-perms.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/prereq/file-system-perms.md b/src/guides/v2.4/install-gde/prereq/file-system-perms.md new file mode 100644 index 00000000000..3329c61f0d7 --- /dev/null +++ b/src/guides/v2.4/install-gde/prereq/file-system-perms.md @@ -0,0 +1,11 @@ +--- +title: Set pre-installation ownership and permissions +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/file-system/configure-permissions.html +status: migrated +--- + +{% include install/file-system-perms-before.md %} diff --git a/src/guides/v2.4/install-gde/prereq/install-rabbitmq.md b/src/guides/v2.4/install-gde/prereq/install-rabbitmq.md deleted file mode 120000 index 2813e080cf5..00000000000 --- a/src/guides/v2.4/install-gde/prereq/install-rabbitmq.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/prereq/install-rabbitmq.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/prereq/install-rabbitmq.md b/src/guides/v2.4/install-gde/prereq/install-rabbitmq.md new file mode 100644 index 00000000000..355c1c1dfff --- /dev/null +++ b/src/guides/v2.4/install-gde/prereq/install-rabbitmq.md @@ -0,0 +1,150 @@ +--- +title: RabbitMQ +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/rabbitmq.html +status: migrated +--- + +## RabbitMQ Overview {#overview} + +RabbitMQ is an open source message broker that offers a reliable, highly available, scalable, and portable messaging system. + +Message queues provide an asynchronous communications mechanism in which the sender and the receiver of a message do not contact each other. Nor do they need to communicate with the message queue at the same time. When a sender places a messages onto a queue, it is stored until the recipient receives them. + +The message queue system must be established before you install Magento. The basic sequence is + +1. Install RabbitMQ and any prerequisites. +1. Connect RabbitMQ and Magento. + +{:.bs-callout-info} +You can use MySQL or RabbitMQ for message queue processing. For details on setting up the message queue system, see [Message queues overview]({{ page.baseurl }}/extension-dev-guide/message-queues/message-queues.html). If you are using the Bulk API with {{ site.data.var.ee }}, the message queue system configuration defaults to using RabbitMQ as the message broker. See [Start message queue consumers]({{page.baseurl}}/config-guide/mq/manage-message-queues.html#start-message-queue-consumers) for more information. + +## Install RabbitMQ on Ubuntu {#ubuntu-install} + +To install RabbitMQ on Ubuntu 16 enter the following command: + +```bash +sudo apt install -y rabbitmq-server +``` + +This command also installs the required Erlang packages. + +If you have an older version of Ubuntu, RabbitMQ recommends installing the package from their website. + +1. Download the .deb package from [rabbitmq-server](https://www.rabbitmq.com/download.html). +1. Install the package with `dpkg`. + +Refer to [Installing on Debian/Ubuntu](https://www.rabbitmq.com/install-debian.html) for more information. + +## Install RabbitMQ on CentOS {#centos-install} + +### Install Erlang + +RabbitMQ was written using the Erlang programming language, which must be installed on the same system as RabbitMQ. + +See [Manual installation](https://www.erlang-solutions.com/resources/download.html) for more information. + +Refer to the [RabbitMQ/Erlang version matrix](https://www.rabbitmq.com/which-erlang.html) to install the correct version. + +### Install RabbitMQ + +The RabbitMQ server is included on CentOS, but the version is often old. RabbitMQ recommends installing the package from their website. + +Refer to the RabbitMQ install page to get the latest supported version. Magento 2.3 and 2.4 support RabbitMQ 3.8.x. + +Refer to [Installing on RPM-based Linux](https://www.rabbitmq.com/install-rpm.html) for more information. + +## Configure RabbitMQ {#config} + +Review the official RabbitMQ documentation to configure and manage RabbitMQ. Pay attention to the following items: + +* Environment variables +* Port access +* Default user accounts +* Starting and stopping the broker +* System limits + +## Install Magento with RabbitMQ and connect to {{site.data.var.ce}} or {{site.data.var.ee}} + +If you installed Magento after you installed RabbitMQ, add the following command line parameters when you install {{site.data.var.ce}} or {{site.data.var.ee}}: + +`--amqp-host="" --amqp-port="5672" --amqp-user="" --amqp-password="" --amqp-virtualhost="/"` + +where: + +|Parameter|Description| +|--- |--- | +|`--amqp-host`|The hostname where RabbitMQ is installed.| +|`--amqp-port`|The port to use to connect to RabbitMQ. The default is `5672`.| +|`--amqp-user`|The username for connecting to RabbitMQ. Do not use the default user `guest`.| +|`--amqp-password`|The password for connecting to RabbitMQ. Do not use the default password `guest`.| +|`--amqp-virtualhost`|The virtual host for connecting to RabbitMQ. The default is `/`. +|`--amqp-ssl`|Indicates whether to connect to RabbitMQ. The default is `false`. If you set the value to true, see Configure SSL for more information.| + +## Connect RabbitMQ to {{site.data.var.ce}} or {{site.data.var.ee}} + +If you already had Magento installed and you want to connect it to RabbitMQ, add a `queue` section in the `/app/etc/env.php` file so that it is similar to the following: + +```php +'queue' => + array ( + 'amqp' => + array ( + 'host' => 'rabbitmq.example.com', + 'port' => '11213', + 'user' => 'magento', + 'password' => 'magento', + 'virtualhost' => '/' + ), + ), +``` + +You can also set RabbitMQ configuration values using the `bin/magento setup:config:set` command: + +```bash +bin/magento setup:config:set --amqp-host="rabbitmq.example.com" --amqp-port="11213" --amqp-user="magento" --amqp-password="magento" --amqp-virtualhost="/" +``` + +After the running the command or updating the `/app/etc/env.php` file with AMQP configuration values, run `bin/magento setup:upgrade` to apply the changes and create the required queues and exchanges in RabbitMQ. + +## Configure SSL + +To configure support for SSL, edit the `ssl` and `ssl_options` parameters in the `/app/etc/env.php` file so that they are similar to the following: + +```php +'queue' => + array ( + 'amqp' => + array ( + 'host' => 'rabbitmq.example.com', + 'port' => '11213', + 'user' => 'magento', + 'password' => 'magento', + 'virtualhost' => '/', + 'ssl' => 'true', + 'ssl_options' => [ + 'cafile' => '/etc/pki/tls/certs/DigiCertCA.crt', + 'certfile' => '/path/to/magento/app/etc/ssl/test-rabbit.crt', + 'keyfile' => '/path/to/magento/app/etc/ssl/test-rabbit.key' + ], + ), + ), +``` + +## Start the message queue consumers + +After you have connected {{site.data.var.ee}} and RabbitMQ, you must start the message queue consumers. See [Configure message queues]({{page.baseurl}}/config-guide/mq/manage-message-queues.html#start-message-queue-consumers) for details. + +{:.ref-header} +Related topics + +* [Installing optional software]({{page.baseurl}}/install-gde/prereq/optional.html) +* [Apache]({{page.baseurl}}/install-gde/prereq/apache.html) +* [Required PHP Settings]({{page.baseurl}}/install-gde/prereq/php-settings.html) +* [Configuring security options]({{page.baseurl}}/install-gde/prereq/security.html) +* [How to get the Magento software]({{ page.baseurl }}/install-gde/bk-install-guide.html) +* [Message queue overview]({{page.baseurl}}/config-guide/mq/rabbitmq-overview.html) +* [Manage message queues]({{page.baseurl}}/config-guide/mq/manage-message-queues.html) diff --git a/src/guides/v2.4/install-gde/prereq/mysql.md b/src/guides/v2.4/install-gde/prereq/mysql.md index 8f4c3a28194..5e02d9241f4 100644 --- a/src/guides/v2.4/install-gde/prereq/mysql.md +++ b/src/guides/v2.4/install-gde/prereq/mysql.md @@ -1,5 +1,7 @@ --- title: MySQL +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/database-server/mysql.html +status: migrated --- ## General guidelines {#instgde-prereq-mysql-intro} diff --git a/src/guides/v2.4/install-gde/prereq/mysql_remote.md b/src/guides/v2.4/install-gde/prereq/mysql_remote.md index c829a7a61bc..007daeefdfc 100644 --- a/src/guides/v2.4/install-gde/prereq/mysql_remote.md +++ b/src/guides/v2.4/install-gde/prereq/mysql_remote.md @@ -4,6 +4,8 @@ functional_areas: - Install - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/database-server/mysql-remote.html +status: migrated --- There are times when you will want to host the database on a separate server, rather than running the database server and the web server on the same machine. diff --git a/src/guides/v2.4/install-gde/prereq/nginx.md b/src/guides/v2.4/install-gde/prereq/nginx.md deleted file mode 120000 index 6745a572180..00000000000 --- a/src/guides/v2.4/install-gde/prereq/nginx.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/prereq/nginx.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/prereq/nginx.md b/src/guides/v2.4/install-gde/prereq/nginx.md new file mode 100644 index 00000000000..ae3f516aa61 --- /dev/null +++ b/src/guides/v2.4/install-gde/prereq/nginx.md @@ -0,0 +1,573 @@ +--- +title: nginx +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/web-server/nginx.html +status: migrated +--- + +Magento supports nginx 1.18 (or the [latest mainline version](https://nginx.org/en/linux_packages.html#mainline)). You must also install the latest version of `php-fpm`. + +Installation instructions vary based on which operating system you are using. See [PHP](php-settings.html) for information. + +## Ubuntu + +The following section describes how to install Magento 2.x on Ubuntu using nginx, PHP, and MySQL. + +### Install nginx + +```bash +sudo apt -y install nginx +``` +You can also [build nginx from source](https://www.armanism.com/blog/install-nginx-on-ubuntu) + +After completing the following sections and [installing Magento]({{page.baseurl }}/install-gde/prereq/nginx.html#install-magento2-ubuntu), we will use a sample configuration file to [configure nginx]({{page.baseurl }}/install-gde/prereq/nginx.html#configure-nginx-ubuntu). + +### Install and configure php-fpm + +Magento requires several [PHP extensions](php-settings.html) to function properly. In addition to these extensions, you must also install and configure the `php-fpm` extension if you are using nginx. + +To install and configure `php-fpm`: + +1. Install `php-fpm` and `php-cli`: + + ```bash + apt-get -y install php7.2-fpm php7.2-cli + ``` + + {:.bs-callout-info} + This command installs the latest available version of PHP 7.2.X. See [Magento 2.3.x technology stack requirements]({{ page.baseurl }}/install-gde/system-requirements.html) for supported PHP versions. + +1. Open the `php.ini` files in an editor: + + ```bash + vim /etc/php/7.2/fpm/php.ini + ``` + + ```bash + vim /etc/php/7.2/cli/php.ini + ``` + +1. Edit both files to match the following lines: + + ```conf + memory_limit = 2G + max_execution_time = 1800 + zlib.output_compression = On + ``` + + {:.bs-callout-info} + We recommend setting the memory limit to 2G when testing Magento. Refer to [Required PHP settings]({{page.baseurl }}/install-gde/prereq/php-settings.html) for more information. + +1. Save and exit the editor. + +1. Restart the `php-fpm` service: + + ```bash + systemctl restart php7.2-fpm + ``` + +### Install and configure MySQL + +Refer to [MySQL]({{page.baseurl }}/install-gde/prereq/mysql.html) for more information. + +### Install and configure Magento2 {#install-magento2-ubuntu} + +There are several ways to download the Magento software, including: + +* [Get the Composer metapackage]({{ page.baseurl }}/install-gde/composer.html) + +* [Clone the git repository]({{ page.baseurl }}/install-gde/prereq/dev_install.html) + +For this example, we'll install using Composer and the command line. + +1. As the [file system owner]({{page.baseurl}}/install-gde/prereq/file-sys-perms-over.html), log in to your Magento server. + +1. Change to the web server docroot directory or a directory that you have configured as a virtual host docroot. For this example, we're using the Ubuntu default `/var/www/html`. + + ```bash + cd /var/www/html + ``` + +1. Install Composer globally. You'll need Composer to update dependencies before installing Magento: + + ```bash + curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer + ``` + +1. Create a new Composer project using the {{site.data.var.ce}} or {{site.data.var.ee}} metapackage. + + **{{site.data.var.ce}}** + + ```bash + composer create-project --repository=https://repo.magento.com/ magento/project-community-edition + ``` + + **{{site.data.var.ee}}** + + ```bash + composer create-project --repository=https://repo.magento.com/ magento/project-enterprise-edition + ``` + + When prompted, enter your [Magento authentication keys]({{ page.baseurl }}/install-gde/prereq/connect-auth.html). Your _public key_ is your username; your _private key_ is your password. + +1. Set read-write permissions for the web server group before you install the Magento software. This is necessary so that the command line can write files to the Magento file system. + + ```bash + cd /var/www/html/ + ``` + + ```bash + find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} + + ``` + + ```bash + find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} + + ``` + + ```bash + chown -R :www-data . # Ubuntu + ``` + + ```bash + chmod u+x bin/magento + ``` + +1. Install Magento from the [command line]({{ page.baseurl }}/install-gde/install/cli/install-cli.html). This example assumes that the Magento install directory is named `magento2ee`, the `db-host` is on the same machine (`localhost`), and that the `db-name`, `db-user`, and `db-password` are all `magento`: + + ```bash + bin/magento setup:install \ + --base-url=http://localhost/magento2ee \ + --db-host=localhost \ + --db-name=magento \ + --db-user=magento \ + --db-password=magento \ + --backend-frontname=admin \ + --admin-firstname=admin \ + --admin-lastname=admin \ + --admin-email=admin@admin.com \ + --admin-user=admin \ + --admin-password=admin123 \ + --language=en_US \ + --currency=USD \ + --timezone=America/Chicago \ + --use-rewrites=1 \ + --search-engine=elasticsearch7 \ + --elasticsearch-host=es-host.example.com \ + --elasticsearch-port=9200 + + ``` + +1. Switch to developer mode: + + ```bash + cd /var/www/html/magento2/bin + ``` + + ```bash + ./magento deploy:mode:set developer + ``` + +### Configure nginx {#configure-nginx-ubuntu} + +We recommend configuring nginx using the `nginx.conf.sample` configuration file provided in the Magento installation directory and an nginx virtual host. + +These instructions assume you're using the Ubuntu default location for the nginx virtual host (e.g., `/etc/nginx/sites-available`) and Ubuntu default docroot (e.g., `/var/www/html`), however, you can change these locations to suit your environment. + +1. Create a new virtual host for your Magento site: + + ```bash + vim /etc/nginx/sites-available/magento + ``` + +1. Add the following configuration: + + ```conf + upstream fastcgi_backend { + server unix:/run/php/php7.2-fpm.sock; + } + + server { + + listen 80; + server_name www.magento-dev.com; + set $MAGE_ROOT /var/www/html/magento2; + include /var/www/html/magento2/nginx.conf.sample; + } + ``` + +{:.bs-callout-info} +The `include` directive must point to the sample nginx configuration file in your Magento installation directory. + +1. Replace `www.magento-dev.com` with your domain name. This must match the base URL you specified when installing Magento. + +1. Save and exit the editor. + +1. Activate the newly created virtual host by creating a symlink to it in the `/etc/nginx/sites-enabled` directory: + + ```bash + ln -s /etc/nginx/sites-available/magento /etc/nginx/sites-enabled + ``` + +1. Verify that the syntax is correct: + + ```bash + nginx -t + ``` + +1. Restart nginx: + + ```bash + systemctl restart nginx + ``` + +### Verify the installation + +Open a web browser and navigate to your site's base URL to [verify the installation.]({{page.baseurl }}/install-gde/install/verify.html) + +## CentOS 7 + +The following section describes how to install Magento 2.x on CentOS 7 using nginx, PHP, and MySQL. + +### Install nginx + +```bash +yum -y install epel-release +``` + +```bash +yum -y install nginx +``` + +After installation is complete, start nginx and configure it to start at boot time: + +```bash +systemctl start nginx +``` + +```bash +systemctl enable nginx +``` + +After completing the following sections and [installing Magento]({{page.baseurl }}/install-gde/prereq/nginx.html#install-magento2-centos), we'll use a sample configuration file to [configure nginx]({{page.baseurl }}/install-gde/prereq/nginx.html#configure-nginx-centos). + +### Install and configure php-fpm + +Magento requires several [PHP](php-settings.html) extensions to function properly. In addition to these extensions, you must also install and configure the `php-fpm` extension if you're using nginx. + +1. Install `php-fpm`: + + ```bash + yum -y install php70w-fpm + ``` + +1. Open the `/etc/php.ini` file in an editor. + +1. Uncomment the `cgi.fix_pathinfo` line and change the value to `0`. + +1. Edit the file to match the following lines: + + ```conf + memory_limit = 2G + max_execution_time = 1800 + zlib.output_compression = On + ``` + +{:.bs-callout-info} +We recommend setting the memory limit to 2G when testing Magento. Refer to [Required PHP settings]({{page.baseurl }}/install-gde/prereq/php-settings.html) for more information. + +1. Uncomment the session path directory and set the path: + + ```conf + session.save_path = "/var/lib/php/session" + ``` + +1. Save and exit the editor. + +1. Open `/etc/php-fpm.d/www.conf` in an editor. + +1. Edit the file to match the following lines: + + ```conf + user = nginx + group = nginx + listen = /run/php-fpm/php-fpm.sock + listen.owner = nginx + listen.group = nginx + listen.mode = 0660 + ``` + +1. Uncomment the environment lines: + + ```conf + env[HOSTNAME] = $HOSTNAME + env[PATH] = /usr/local/bin:/usr/bin:/bin + env[TMP] = /tmp + env[TMPDIR] = /tmp + env[TEMP] = /tmp + ``` + +1. Save and exit the editor. + +1. Create a new directory for the PHP session path and change the owner to the `apache` user and group: + + ```bash + mkdir -p /var/lib/php/session/ + ``` + + ```bash + chown -R apache:apache /var/lib/php/ + ``` + +1. Create a new directory for the PHP session path and change the owner to the `apache` user and group: + + ```bash + mkdir -p /run/php-fpm/ + ``` + + ```bash + chown -R apache:apache /run/php-fpm/ + ``` + +1. Start the `php-fpm` service and configure it to start at boot time: + + ```bash + systemctl start php-fpm + ``` + + ```bash + systemctl enable php-fpm + ``` + +1. Verify that the `php-fpm` service is running: + + ```bash + netstat -pl | grep php-fpm.sock + ``` + +### Install and configure MySQL + +Refer to [MySQL]({{page.baseurl }}/install-gde/prereq/mysql.html) for more information. + +### Install and configure Magento2 {#install-magento2-centos} + +There are several ways to download the Magento software, including: + +* [Get the Composer metapackage]({{ page.baseurl }}/install-gde/composer.html) + +* [Clone the git repository]({{ page.baseurl }}/install-gde/prereq/dev_install.html) + +For this example, we'll install using Composer and the command line. + +1. As the [file system owner]({{page.baseurl}}/install-gde/prereq/file-sys-perms-over.html), log in to your Magento server. + +1. Change to the web server docroot directory or a directory that you have configured as a virtual host docroot. For this example, we're using the Ubuntu default `/var/www/html`. + + ```bash + cd /var/www/html + ``` + +1. Install Composer globally. You'll need Composer to update dependencies before installing Magento: + + ```bash + curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer + ``` + +1. Create a new Composer project using the {{site.data.var.ce}} or {{site.data.var.ee}} metapackage. + + **{{site.data.var.ce}}** + + ```bash + composer create-project --repository=https://repo.magento.com/ magento/project-community-edition + ``` + + **{{site.data.var.ee}}** + + ```bash + composer create-project --repository=https://repo.magento.com/ magento/project-enterprise-edition + ``` + + When prompted, enter your [Magento authentication keys]({{ page.baseurl }}/install-gde/prereq/connect-auth.html). Your _public key_ is your username; your _private key_ is your password. + +1. Set read-write permissions for the web server group before you install the Magento software. This is necessary so that the and command line can write files to the Magento file system. + + ```bash + cd /var/www/html/ + ``` + + ```bash + find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} + + ``` + + ```bash + find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} + + ``` + + ```bash + chown -R :www-data . # Ubuntu + ``` + + ```bash + chmod u+x bin/magento + ``` + +1. Install Magento from the [command line]({{ page.baseurl }}/install-gde/install/cli/install-cli.html). This example assumes that the Magento install directory is named `magento2ee`, the `db-host` is on the same machine (`localhost`), and that the `db-name`, `db-user`, and `db-password` are all `magento`: + + ```bash + bin/magento setup:install \ + --base-url=http://localhost/magento2ee \ + --db-host=localhost \ + --db-name=magento \ + --db-user=magento \ + --db-password=magento \ + --backend-frontname=admin \ + --admin-firstname=admin \ + --admin-lastname=admin \ + --admin-email=admin@admin.com \ + --admin-user=admin \ + --admin-password=admin123 \ + --language=en_US \ + --currency=USD \ + --timezone=America/Chicago \ + --use-rewrites=1 + ``` + +1. Switch to developer mode: + + ```bash + cd /var/www/html/magento2/bin + ``` + + ```bash + ./magento deploy:mode:set developer + ``` + +### Configure nginx {#configure-nginx-centos} + +We recommend configuring nginx using the `nginx.conf.sample` configuration file provided in the Magento installation directory and an nginx virtual host. + +These instructions assume you're using the CentOS default location for the nginx virtual host (e.g., `/etc/nginx/conf.d`) and default docroot (e.g., `/usr/share/nginx/html`), however, you can change these locations to suit your environment. + +1. Create a new virtual host for your Magento site: + + ```bash + vim /etc/nginx/conf.d/magento.conf + ``` + +1. Add the following configuration: + + ```conf + upstream fastcgi_backend { + server unix:/run/php-fpm/php-fpm.sock; + } + + server { + + listen 80; + server_name www.magento-dev.com; + set $MAGE_ROOT /usr/share/nginx/html/magento2; + include /usr/share/nginx/html/magento2/nginx.conf.sample; + } + ``` + +{:.bs-callout-info} +The `include` directive must point to the sample nginx configuration file in your Magento installation directory. + +1. Replace `www.magento-dev.com` with your domain name. + +1. Save and exit the editor. + +1. Verify that the syntax is correct: + + ```bash + nginx -t + ``` + +1. Restart nginx: + + ```bash + systemctl restart nginx + ``` + +### Configure SELinux and Firewalld + +SELinux is enabled by default on CentOS 7. Use the following command to see if it's running: + +```bash +sestatus +``` + +To configure SELinux and firewalld: + +1. Install SELinux management tools: + + ```bash + yum -y install policycoreutils-python + ``` + +1. Run the following commands to change the security context for the Magento installation directory: + + ```bash + semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/app/etc(/.*)?' + ``` + + ```bash + semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/var(/.*)?' + ``` + + ```bash + semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/pub/media(/.*)?' + ``` + + ```bash + semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/pub/static(/.*)?' + ``` + + ```bash + restorecon -Rv '/usr/share/nginx/html/magento2/' + ``` + +1. Install the firewalld package: + + ```bash + yum -y install firewalld + ``` + +1. Start the firewall service and configure it to start at boot time: + + ```bash + systemctl start firewalld + ``` + + ```bash + systemctl enable firewalld + ``` + +1. Run the following commands to open ports for HTTP and HTTPS so you can access the Magento base URL from a web browser: + + ```bash + firewall-cmd --permanent --add-service=http + ``` + + ```bash + firewall-cmd --permanent --add-service=https + ``` + + ```bash + firewall-cmd --reload + ``` + +### Verify the installation + +Open a web browser and navigate to your site's base URL to [verify the installation.]({{page.baseurl }}/install-gde/install/verify.html) + +{:.ref-header} +Related topics + +* [PHP](php-settings.html) +* [MySQL]({{page.baseurl }}/install-gde/prereq/mysql.html) +* [Configuring security options]({{page.baseurl }}/install-gde/prereq/security.html) +* [Installing optional software]({{page.baseurl }}/install-gde/prereq/optional.html) +* [Determine your installation or upgrade path]({{ page.baseurl }}/install-gde/bk-install-guide.html) diff --git a/src/guides/v2.4/install-gde/prereq/optional.md b/src/guides/v2.4/install-gde/prereq/optional.md deleted file mode 120000 index 6a851594f40..00000000000 --- a/src/guides/v2.4/install-gde/prereq/optional.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/prereq/optional.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/prereq/optional.md b/src/guides/v2.4/install-gde/prereq/optional.md new file mode 100644 index 00000000000..6eca3593ffd --- /dev/null +++ b/src/guides/v2.4/install-gde/prereq/optional.md @@ -0,0 +1,165 @@ +--- +title: Optional software +functional_areas: + - Install + - System + - Setup +redirect_from: + - guides/v2.3/install-gde/trouble/php/tshoot_phpini.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/optional-software.html +status: migrated +--- + +## Magento optional software {#install-optional-intro} + +We strongly recommend you install NTP to ensure that cron-related tasks perform properly. (Server dates could be in the past or future, for example.) + +The other optional utilities discussed in this topic might assist you with your installation; however, they are not required to install or use Magento. + +## Installing and Configuring Network Time Protocol (NTP) {#install-optional-ntp} + +[NTP](https://www.ntp.org/) enables servers to synchronize their system clocks using [globally available pool servers](https://www.ntppool.org/en/). We recommend you use NTP servers you trust, whether they are dedicated hardware solutions your internal network or external, public servers. + +If you are deploying Magento on multiple hosts, NTP is a simple way to guarantee their clocks are all synchronized, no matter what time zone the servers are in. Also, cron-related tasks (such as indexing and transactional e-mails) depend on the server clock being accurate. + +See one of the following sections: + +* [Install and configure NTP on Ubuntu](#install-optional-ntp-ubuntu) +* [Install and configure NTP on CentOS](#install-optional-ntp-centos) +* [Use NTP pool servers](#install-optional-ntp-servers) + +### Install and configure NTP on Ubuntu {#install-optional-ntp-ubuntu} + +Enter the following command to install NTP: + +```bash +apt-get install ntp +``` + +Continue with [Use NTP pool servers](#install-optional-ntp-servers). + +### Install and configure NTP on CentOS {#install-optional-ntp-centos} + +To install and configure NTP: + +1. Enter the following command to find the appropriate NTP software: + + ```bash + yum search ntp + ``` + +1. Select a package to install. For example, `ntp.x86_64`. + +1. Install the package. + + ```bash + yum -y install ntp.x86_64 + ``` + +1. Enter the following command so that NTP starts when the server starts. + + ```bash + chkconfig ntpd on + ``` + +1. Continue with the next section. + +### Use NTP pool servers {#install-optional-ntp-servers} + +Selecting pool servers is up to you. If you use NTP pool servers, ntp.org recommends you use [pool servers](https://www.ntppool.org/en/) that are close to your servers' time zone as discussed on the [NTP pool project help page](https://www.ntppool.org/en//use.html). If you have a private NTP server that is available to all hosts in your Magento deployment, you can use that server instead. + +1. Open `/etc/ntp.conf` in a text editor. + +1. Look for lines similar to the following: + + ```conf + server 0.centos.pool.ntp.org + server 1.centos.pool.ntp.org + server 2.centos.pool.ntp.org + ``` + +1. Replace those lines or add additional lines that specify your NTP pool server or other NTP servers. It's a good idea to specify more than one. + +1. An example of using three United States-based NTP servers follows: + + ```conf + server 0.us.pool.ntp.org + server 1.us.pool.ntp.org + server 2.us.pool.ntp.org + ``` + +1. Save your changes to `/etc/ntp.conf` and exit the text editor. + +1. Restart the service. + + * Ubuntu: `service ntp restart` + + * CentOS: `service ntpd restart` + +1. Enter `date` to check the server's date. + + If the date is incorrect, make sure the NTP client port (typically, UDP 123) is open in your firewall. + + Try the `ntpdate _[pool server hostname]_` command. If it fails, search for the error it returns. + + If all else fails, try rebooting the server. + +## Create phpinfo.php {#install-optional-phpinfo} + +[`phpinfo.php`](https://php.net/manual/en/function.phpinfo.php) displays a large amount of information about [PHP](https://glossary.magento.com/php) and its extensions. + +{:.bs-callout-info} +Use `phpinfo.php` in a development system _only_. It can be a security issue in production. + +Add the following code anywhere in your web server's docroot: + +```php +/phpinfo.php +``` + +If a 404 (Not Found) error displays, check the following: + +* Start the web server if necessary. +* Make sure your firewall allows traffic on port 80. + + [Help for Ubuntu](https://help.ubuntu.com/community/UFW) + + [Help for CentOS](https://wiki.centos.org/HowTos/Network/IPTables) + +## phpmyadmin {#install-optional-phpmyadmin} + +`phpmyadmin` is an easy-to-use, free database administration utility. You can use it to check and manipulate the contents of your database. You must log in to `phpmyadmin` as the MySQL database administrative user. + +For more information about `phpmyadmin`, see the [phpmyadmin home page](https://www.phpmyadmin.net/). + +For more detailed information about installation, see the [phpmyadmin installation documentation](https://docs.phpmyadmin.net/en/latest/setup.html#quick-install). + +{:.bs-callout-info} +Use phpmyadmin in a development system _only_. It can be a security issue in production. + +1. To use phpmyadmin, enter the following command in your browser's address or location field: + + ```http + http:///phpmyadmin + ``` + +1. When prompted, log in using your MySQL database `root` or administrative user's username and password. + +{:.ref-header} +Related topics + +* [Apache]({{page.baseurl }}/install-gde/prereq/apache.html) +* [PHP]({{page.baseurl }}/install-gde/prereq/php-settings.html) +* [MySQL]({{page.baseurl }}/install-gde/prereq/mysql.html) +* [Configuring security options]({{page.baseurl }}/install-gde/prereq/security.html) +* [How to get the Magento software]({{ page.baseurl }}/install-gde/bk-install-guide.html) diff --git a/src/guides/v2.4/install-gde/prereq/php-settings.md b/src/guides/v2.4/install-gde/prereq/php-settings.md index 48475049e2c..185f0e24fef 100644 --- a/src/guides/v2.4/install-gde/prereq/php-settings.md +++ b/src/guides/v2.4/install-gde/prereq/php-settings.md @@ -4,6 +4,8 @@ functional_areas: - Install - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/php-settings.html +status: migrated --- This topic discusses how to set required [PHP](https://glossary.magento.com/php) options. diff --git a/src/guides/v2.4/install-gde/prereq/prereq-overview.md b/src/guides/v2.4/install-gde/prereq/prereq-overview.md index 36c423ad7ba..810e78b13e4 100644 --- a/src/guides/v2.4/install-gde/prereq/prereq-overview.md +++ b/src/guides/v2.4/install-gde/prereq/prereq-overview.md @@ -4,6 +4,8 @@ functional_areas: - Install - System - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/overview.html +status: migrated --- ## Before you begin {#instgde-prereq-overview} @@ -15,7 +17,7 @@ Before you install Magento, you must do all of the following: * Make sure you can back up your entire system at various points during the installation so you can roll back in the [event](https://glossary.magento.com/event) of issues. {:.bs-callout-info} -We assume you are installing the Magento 2 software in a **development environment**, which means you have [root user](http://www.linfo.org/root.html) access to the machine **and** that the machine does not need to be highly secure. If you are setting up a more secure machine, we strongly recommend you consult a network administrator for additional assistance. +We assume you are installing the Magento 2 software in a **development environment**, which means you have root user access to the machine **and** that the machine does not need to be highly secure. If you are setting up a more secure machine, we strongly recommend you consult a network administrator for additional assistance. We strongly recommend you update and upgrade your operating system software. These upgrades can provide security and software fixes that might prevent future problems. Do not know what any of this means? Check out our [installation overview page]({{page.baseurl}}/install-gde/bk-install-guide.html). diff --git a/src/guides/v2.4/install-gde/prereq/security.md b/src/guides/v2.4/install-gde/prereq/security.md deleted file mode 120000 index 9bbef586fa1..00000000000 --- a/src/guides/v2.4/install-gde/prereq/security.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/prereq/security.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/prereq/security.md b/src/guides/v2.4/install-gde/prereq/security.md new file mode 100644 index 00000000000..7c9d776e4f1 --- /dev/null +++ b/src/guides/v2.4/install-gde/prereq/security.md @@ -0,0 +1,80 @@ +--- +subgroup: Prerequisites +title: SELinux and iptables +menu_title: SELinux and iptables +menu_order: 200 +functional_areas: + - Install + - System + - Setup +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/prerequisites/security.html +status: migrated +--- + +## SELinux {#install-prereq-selinux} + +[Security Enhanced Linux (SELinux)](https://selinuxproject.org/page/Main_Page) enables CentOS and Ubuntu administrators greater access control over their servers. If you are using SELinux *and* Apache must initiate a connection to another host, you must run the commands discussed in this section. + +{:.bs-callout-info} +Magento has no recommendation about using SELinux; you can use it for enhanced security if you wish. If you use SELinux, you must configure it properly or the Magento application will function unpredictably. If you choose to use SELinux, consult a resource like [the CentOS wiki](https://wiki.centos.org/HowTos/SELinux) to set up rules to enable communication. + +### Suggestion for installing the Magento software with Apache + +If you choose to enable SELinux, you might have issues running the installer unless you change the *security context* of some directories as follows: + +```bash +chcon -R --type httpd_sys_rw_content_t /app/etc +``` + +```bash +chcon -R --type httpd_sys_rw_content_t /var +``` + +```bash +chcon -R --type httpd_sys_rw_content_t /pub/media +``` + +```bash +chcon -R --type httpd_sys_rw_content_t /pub/static +``` + +```bash +chcon -R --type httpd_sys_rw_content_t /generated +``` + +The preceding commands work only with the Apache web server. Because of the variety of configurations and security requirements, we do not guarantee these commands work in all situations. For more information, see: + +* [man page](https://linux.die.net/man/8/httpd_selinux) +* [serverlab](https://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-selinux-policies-for-apache-web-servers/) + +### Enable inter-server communication + +If Apache and the database server are on the same host, use the following command if you plan to use integrations that use `curl` (ex. Paypal and USPS). +To enable Apache to initiate a connection to another host with SELinux enabled: + +1. To determine if SELinux is enabled, use the following command: + + ```bash + getenforce + ``` + + `Enforcing` displays to confirm that SELinux is running. + + * CentOS: `setsebool -P httpd_can_network_connect=1` + * Ubuntu: `setsebool -P apache2_can_network_connect=1` + +## Opening Ports In Your Firewall {#install-iptables} + +Depending on your security requirements, you might find it necessary to open port 80 and other ports in your firewall. Because of the sensitive nature of networking security, Magento strongly recommends you consult with your IT department before proceeding. Following are some suggested references: + +* Ubuntu: [Ubuntu documentation page](https://help.ubuntu.com/community/IptablesHowTo) +* CentOS: [CentOS how-to](https://wiki.centos.org/HowTos/Network/IPTables). + +{:.ref-header} +Related topics + +* [Apache]({{ page.baseurl }}/install-gde/prereq/apache.html) +* [PHP]({{page.baseurl}}/install-gde/prereq/php-settings.html) +* [MySQL]({{ page.baseurl }}/install-gde/prereq/mysql.html) +* [Installing optional software]({{ page.baseurl }}/install-gde/prereq/optional.html) +* [How to get the Magento software]({{ page.baseurl }}/install-gde/bk-install-guide.html) diff --git a/src/guides/v2.4/install-gde/system-requirements.md b/src/guides/v2.4/install-gde/system-requirements.md index a92286bd215..4545ec0bd85 100644 --- a/src/guides/v2.4/install-gde/system-requirements.md +++ b/src/guides/v2.4/install-gde/system-requirements.md @@ -8,6 +8,8 @@ redirect_from: - /guides/v2.4/install-gde/system-requirements-tech.html - /guides/v2.4/architecture/tech-stack.html - /system-requirements.html +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/system-requirements.html +status: migrated --- This table shows versions of third-party software dependencies that Adobe has tested with specific {{ site.data.var.ee }} and {{ site.data.var.ce }} releases. Adobe only supports the combination of system requirements described in the following table. @@ -16,6 +18,10 @@ For example, 2.4.3 is fully tested with MariaDB 10.4. Adobe recommends that you {% include install/system-requirements-table.html %} +## Adobe Commerce on cloud infrastructure + +Service version and compatibility support for {{site.data.var.ece}} is determined by versions deployed on the Cloud infrastructure, and sometimes differ from versions supported by Adobe Commerce on-premises deployments. For details on supported software and services deployed on {{site.data.var.ece}}, see [Supported software and services]({{ site.baseurl }}/cloud/requirements/cloud-requirements.html#cloud-arch-software). + ## Miscellaneous This section describes support and compatibility for all other types of required and optional software. @@ -25,12 +31,12 @@ All of the following requirements apply to the latest patch release of Magento 2 ### Mail server -Mail Transfer Agent (MTA) or an SMTP server +Mail Transfer Agent (MTA) or Simple Mail Transfer Protocol (SMTP) server ### Operating systems (Linux x86-64) Linux distributions, such as RedHat Enterprise Linux (RHEL), CentOS, Ubuntu, Debian, and similar. -Magento is not supported on Microsoft Windows and macOS. +Magento is not supported on Microsoft Windows and Apple macOS. ### PHP extensions @@ -59,7 +65,7 @@ PHPUnit (as a command-line tool) 9.0.0 ### RAM -Upgrading the Magento applications and extensions you obtain from Commerce Marketplaces and other sources can require up to 2GB of RAM. If you are using a system with less than 2GB of RAM, we recommend you create a [swap file](https://support.magento.com/hc/en-us/articles/360032980432); otherwise, your upgrade might fail. +Upgrading the Magento applications and extensions you obtain from Commerce Marketplaces and other sources can require up to 2 GB of RAM. If you are using a system with less than 2 GB of RAM, Adobe recommends you create a [swap file](https://support.magento.com/hc/en-us/articles/360032980432); otherwise, your upgrade might fail. ### System dependencies @@ -94,20 +100,20 @@ There is a known issue with `xdebug` that can affect Magento installations or ac [Known issue with xdebug]: https://support.magento.com/hc/en-us/articles/360034242212 -[php_xdebug 2.5.x]: http://xdebug.org/download.php +[php_xdebug 2.5.x]: https://xdebug.org/download [bash]: https://www.gnu.org/software/bash/ [gzip]: https://www.gzip.org/ [lsof]: https://linux.die.net/man/8/lsof [mysql]: https://www.mysql.com/ [mysqldump]: https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html [nice]: https://linux.die.net/man/1/nice -[php]: http://www.php.net/ +[php]: https://www.php.net/ [sed]: https://www.gnu.org/software/sed/manual/sed.html [tar]: https://linux.die.net/man/1/tar [PHP installation instructions]: prereq/php-settings.html -[official PHP documentation]: http://php.net/manual/en/extensions.php -[PHP OPcache]: http://php.net/manual/en/intro.opcache.php +[official PHP documentation]: https://php.net/manual/en/extensions.php +[PHP OPcache]: https://php.net/manual/en/intro.opcache.php [PHP documentation]: prereq/php-settings.html -[PHP OPcache documentation]: http://php.net/manual/en/opcache.setup.php +[PHP OPcache documentation]: https://php.net/manual/en/opcache.setup.php [Required PHP settings]: {{ page.baseurl }}/install-gde/prereq/php-settings.html [security certificate]: https://glossary.magento.com/security-certificate diff --git a/src/guides/v2.4/install-gde/trouble/php/tshoot_mod_access_compat.md b/src/guides/v2.4/install-gde/trouble/php/tshoot_mod_access_compat.md deleted file mode 120000 index 7a6488ed657..00000000000 --- a/src/guides/v2.4/install-gde/trouble/php/tshoot_mod_access_compat.md +++ /dev/null @@ -1 +0,0 @@ -../../../../v2.3/install-gde/trouble/php/tshoot_mod_access_compat.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/trouble/php/tshoot_mod_access_compat.md b/src/guides/v2.4/install-gde/trouble/php/tshoot_mod_access_compat.md new file mode 100644 index 00000000000..668f05c93c6 --- /dev/null +++ b/src/guides/v2.4/install-gde/trouble/php/tshoot_mod_access_compat.md @@ -0,0 +1,51 @@ +--- +subgroup: 02_access +title: 503 (Service Unavailable) errors accessing Magento software in a web browser +menu_title: 503 (Service Unavailable) errors accessing Magento software in a web browser +menu_node: +menu_order: 3 +functional_areas: + - Install + - System + - Setup +redirect_to: https://support.magento.com/hc/en-us/categories/115000200533-Troubleshooting +--- + +## 503 (Service Unavailable) errors accessing Magento software in a web browser {#trouble-install-depend} + +### Symptoms + +When you try to access your [Admin](https://glossary.magento.com/magento-admin) or [storefront](https://glossary.magento.com/storefront) in a web browser, you get HTTP 503 (Service Unavailable) errors. + +To confirm this issue is not related to [maintenance mode]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-maint.html), look in your Apache `error.log` for messages that include: + +```text +"Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration". +``` + +### Details + +Apache 2.4 changes the way certain directives related to `.htaccess` work. The Magento software uses `.htaccess` to rewrite URLs. If `.htaccess` doesn't work properly, you cannot access the Magento software in a web browser. + +Not all Apache 2.4 distributions have this issue because in some cases, a compatibility [module](https://glossary.magento.com/module) named `mod_access_compat` is enabled by default. If, however, your Apache 2.4 distribution has this module disabled, you must perform the tasks discussed in the next section. You can also consult the resources listed in the final section in this topic. + +### Suggested solution + +As a user with 'root' privileges, enter the following commands: + +```bash +a2enmod access_compat +``` + +```bash +service restart +``` + +On CentOS, `` is `httpd`. On Ubuntu, `` is `apache2`. + +### Additional resources + +* [Apache documentation about mod_access_compat](https://httpd.apache.org/docs/current/mod/mod_access_compat.html) +* [Apache documentation about mod_authz_host](https://httpd.apache.org/docs/current/mod/mod_authz_host.html) +* [Order, Allow, Deny from the Apache Definitive Guide](https://docstore.mik.ua/orelly/linux/apache/ch05_06.htm) +* [askubuntu.com](https://askubuntu.com/questions/335228/changes-in-apache-config-between-12-04-2-and-12-04-3-lts) diff --git a/src/guides/v2.4/install-gde/trouble/tshoot_var-gen-perms.md b/src/guides/v2.4/install-gde/trouble/tshoot_var-gen-perms.md deleted file mode 120000 index 9f2c28c8f20..00000000000 --- a/src/guides/v2.4/install-gde/trouble/tshoot_var-gen-perms.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/trouble/tshoot_var-gen-perms.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/trouble/tshoot_var-gen-perms.md b/src/guides/v2.4/install-gde/trouble/tshoot_var-gen-perms.md new file mode 100644 index 00000000000..e22a01a069d --- /dev/null +++ b/src/guides/v2.4/install-gde/trouble/tshoot_var-gen-perms.md @@ -0,0 +1,46 @@ +--- +subgroup: 02_access +title: Cannot write to the generated/code directory +menu_title: Cannot write to the generated/code directory +menu_node: +menu_order: 9 +functional_areas: + - Install + - System + - Setup +redirect_to: https://support.magento.com/hc/en-us/categories/115000200533-Troubleshooting +--- + +### Symptom + +After you successfully install Magento, exceptions display when you try to access the [storefront](https://glossary.magento.com/storefront) or [Admin](https://glossary.magento.com/admin). You might have to +[enable developer mode]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-mode.html#change-to-developer-mode) to see the exceptions. + +Sample exceptions follow: + +```terminal +Directory "/var/www/html/magento2/pub/static/_requirejs/adminhtml/Magento/backend/en_US" cannot be created Warning!mkdir(): Permission denied + +Error filtering template: Unable to write file into directory /var/www/html/magento2/pub/media/catalog/product/cache/1/small_image/240x300/beff4985b56e3afdbeabfc89641a4582/m/b. Access forbidden. + +exception 'Magento\Framework\Exception\LocalizedException' with message 'Can't create directory /var/www/html/magento2/generated/code/Magento/Framework/App/ResourceConnection/.' in /var/www/html/magento2/vendor/magento/framework/Code/Generator.php:103 Stack trace: +#0 /var/www/html/magento2/vendor/magento/framework/Code/Generator/Autoloader.php(35): Magento\Framework\Code\Generator->generateClass('Magento\\Framewo...') +#1 [internal function]: Magento\Framework\Code\Generator\Autoloader->load('Magento\\Framewo...') +#2 [internal function]: spl_autoload_call('Magento\\Framewo...') +#3 /var/www/html/magento2/vendor/magento/framework/Code/Reader/ClassReader.php(19): ReflectionClass->__construct('Magento\\Framewo...') +#4 /var/www/html/magento2/vendor/magento/framework/ObjectManager/Definition/Runtime.php(44): Magento\Framework\Code\Reader\ClassReader->getConstructor('Magento\\Framewo...') +#5 /var/www/html/magento2/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php(71): Magento\Framework\ObjectManager\Definition\Runtime->getParameters('Magento\\Framewo...') +#6 /var/www/html/magento2/vendor/magento/framework/ObjectManager/ObjectManager.php(71): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Magento\\Framewo...') +#7 +... more ... +``` + +### Details + +We recommend different ownership and permissions settings based on if you use one user or two to run the Magento application. + +Typically, you have one user on shared hosting and two users on private hosting (or if you have your own server). There could be exceptions to this, however. + +### Suggestion + +Review our recommendations in [Overview of ownership and permissions]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). diff --git a/src/guides/v2.4/install-gde/tutorials/change-docroot-to-pub.md b/src/guides/v2.4/install-gde/tutorials/change-docroot-to-pub.md deleted file mode 120000 index d6dce295188..00000000000 --- a/src/guides/v2.4/install-gde/tutorials/change-docroot-to-pub.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/install-gde/tutorials/change-docroot-to-pub.md \ No newline at end of file diff --git a/src/guides/v2.4/install-gde/tutorials/change-docroot-to-pub.md b/src/guides/v2.4/install-gde/tutorials/change-docroot-to-pub.md new file mode 100644 index 00000000000..e6a3f271e47 --- /dev/null +++ b/src/guides/v2.4/install-gde/tutorials/change-docroot-to-pub.md @@ -0,0 +1,176 @@ +--- +title: Modify docroot to improve security +redirect_to: https://experienceleague.adobe.com/docs/commerce-operations/installation-guide/tutorials/docroot.html +status: migrated +--- + +In a standard installation with an Apache web server, Magento is installed to the default web root: `/var/www/html/magento2`. +Within the `magento2` folder are: + +- /pub/ +- /setup/ +- /var/ +- other folders + +The Magento app is served from `/var/www/html/magento2/pub`. The rest of the Magento file system is vulnerable because it is accessible from a browser. +Setting the webroot to the `pub/` directory prevents site visitors from accessing sensitive areas of the Magento file system from a browser. + +This topic describes how to change the Apache docroot on an existing Magento instance to serve files from the Magento `pub/` directory, which is more secure. + +## A note about nginx + +If you are using [nginx]({{ page.baseurl }}/install-gde/prereq/nginx.html) and the [`nginx.conf.sample`]({{ site.mage2bloburl }}/{{ page.guide_version }}/nginx.conf.sample) file included in the Magento installation directory, you are probably already serving files from the `pub/` directory. + +When used in your server block that defines your site, the `nginx.conf.sample` configuration overrides your server's docroot settings to serve files from Magento's `pub/` directory. For example, see the last line in the following configuration: + +```bash + # /etc/nginx/sites-available/magento + + upstream fastcgi_backend { + server unix:/run/php/php7.4-fpm.sock; + } + + server { + + listen 80; + server_name 192.168.33.10; + set $MAGE_ROOT /var/www/html/magento2ce; + include /var/www/html/magento2ce/nginx.conf.sample; + } +``` + +## Before you begin + +To complete this tutorial, you will need access to a working Magento installation running on a [LAMP](https://en.wikipedia.org/wiki/LAMP_(software_bundle)) stack: + +- Linux +- Apache (2.4+) +- MySQL (5.7+) +- PHP (7.4) +- Elasticsearch (7.x) or OpenSearch (1.2) +- Magento (2.4+) + +{:.bs-callout-info} +Refer to [Prerequisites]({{ page.baseurl }}/install-gde/prereq/prereq-overview.html) and the [Installation Guide]({{ page.baseurl }}/install-gde/bk-install-guide.html) for more information. + +## 1. Edit your server configuration + +The name and location of your virtual host file depends on which version of Apache you are running. This example shows the name and location of the virtual host file on Apache v2.4. + +1. Log in to your Magento server. +1. Edit your virtual host file: + + ```bash + vim /etc/apache2/sites-available/000-default.conf + ``` + +1. Add the path to your Magento `pub/` directory to the `DocumentRoot` directive: + + ```conf + + + ServerAdmin webmaster@localhost + DocumentRoot /var/www/html/magento2ce/pub + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + + AllowOverride all + + + ``` + +1. Restart Apache: + + ```bash + systemctl restart apache2 + ``` + +## 2. Update your base URL + +If you appended a directory name to your server's hostname or IP address to create the base URL when you installed Magento (for example `http://192.168.33.10/magento2`), you'll need to remove it. + + {:.bs-callout-info} +Replace `192.168.33.10` with your server's hostname. + +1. Log in to the Magento database: + + ```bash + mysql -u -p + ``` + +1. Specify the Magento database you created when you installed Magento: + + ```shell + use + ``` + +1. Update the base URL: + + ```shell + UPDATE core_config_data SET value='http://192.168.33.10' WHERE path='web/unsecure/base_url'; + ``` + +## 3. Update the env.php file + +The following node needs to be appended to the `env.php` file. + +```conf +'directories' => [ + 'document_root_is_pub' => true +] +``` + +Refer to the [env.php reference]({{ page.baseurl }}/config-guide/prod/config-reference-envphp.html) for more information. + +## 4. Switch modes + +[Magento modes]({{ page.baseurl }}/config-guide/bootstrap/magento-modes.html), which include `production` and `developer`, are designed to improve security and make development easier. As the names suggest, you should switch to `developer` mode when extending or customizing Magento and switch to `production` mode when running Magento in a live environment. + +Switching between modes is an important step in verifying that your server configuration is working properly. You can switch between modes using the Magento CLI tool: + +1. Go to your Magento installation directory. +1. Switch to `production` mode. + + ```bash + bin/magento deploy:mode:set production + ``` + + ```bash + bin/magento cache:flush + ``` + +1. Refresh your browser and verify that the storefront displays properly. +1. Switch to `developer` mode. + + ```bash + bin/magento deploy:mode:set developer + ``` + + ```bash + bin/magento cache:flush + ``` + +1. Refresh your browser and verify that the storefront displays properly. + +## 5. Verify the storefront + +Go to the [storefront](https://glossary.magento.com/storefront) in a web browser to verify that everything is working. + +1. Open a web browser and enter your server's hostname or IP address in the address bar. For example, http://192.168.33.10. + + The following figure shows a sample storefront page. If it displays as follows, your installation was a success! + + ![Magento storefront which verifies a successful installation]({{ site.baseurl }}/common/images/install-success_store.png){:width="450px"} + + Refer to the [troubleshooting section](https://support.magento.com/hc/en-us/articles/360032994352) if the page displays a 404 (Not Found) or fails to load other assets like images, CSS, and JS. + +1. Try accessing a Magento directory from a browser. Append the directory name to your server's hostname or IP address in the address bar: + + If you see a 404 or the "Access denied" message, you've successfully restricted access to the Magento file system. + + ![Access denied]({{ site.baseurl }}/common/images/access-denied.png) + +## Congratulations! You're finished. +{:.no_toc} \ No newline at end of file diff --git a/src/guides/v2.4/inventory/architecture.md b/src/guides/v2.4/inventory/architecture.md deleted file mode 120000 index a226065aa12..00000000000 --- a/src/guides/v2.4/inventory/architecture.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/inventory/architecture.md \ No newline at end of file diff --git a/src/guides/v2.4/inventory/architecture.md b/src/guides/v2.4/inventory/architecture.md new file mode 100644 index 00000000000..af564b3915f --- /dev/null +++ b/src/guides/v2.4/inventory/architecture.md @@ -0,0 +1,75 @@ +--- +group: inventory +title: Inventory management architecture +redirect_to: https://developer.adobe.com/commerce/php/architecture/modules/inventory-management/ +status: migrated +--- + +Magento 2 is a highly modular system that allows 3rd-party developers to extend and customize the system on many levels. As a result, a developer can replace or add any component (module) without affecting the rest of the system. + +Module interchangeability was one of the main reasons behind introducing [Service Layer]({{ page.baseurl }}/architecture/archi_perspectives/service_layer.html) in Magento 2. By using service contracts and providing extensions over them, 3rd-party developers can: + +* Enhance out-of-the-box business logic +* Replace a module without breaking the system or other extensions relying on these contracts + +In Magento 2, a set of interfaces in a module's `/Api` directory typically define the service contracts, including the APIs and their implementations. A module interface expresses the elements (entity interfaces and services to manipulate them) that the module requires. These elements defined in the interface represent a gateway for communication between modules. The implementation contains the working business logic that corresponds to the elements declared in the interface. + +By placing service contracts (APIs), implementations, and UI code in the same module, Magento combines different architectural layers of the system in the scope of one component. Unfortunately, this means that a developer who wants to tweak a module's UI would be changing the same module as another developer who would like to substitute the implementation for predefined business logic. Even modules that the developer expects to be used in headless Magento installations (those that don't use the Admin at all) must contain UI code. + +## Inventory management service layer + +Implementing a good modular architecture means maintaining a loose coupling between components of the system, reducing dependencies on components that are not needed for a particular deployment. To allow modules to be swapped out, we have designed the Inventory Management modules to follow the [single responsibility principle](https://en.wikipedia.org/wiki/Single_responsibility_principle) (SRP). Each module has responsibility over a single part of the functionality, and all of its services are narrowly aligned with that responsibility. + +As a result of applying SRP to module responsibilities (while taking into account the multi-layered architecture of Magento), Inventory Management is comprised of independent modules responsible for: + +* Service contract APIs +* Implementation of the business logic for APIs +* Admin UI +* Frontend UI + +The Admin and frontend UIs can be separated, because it's possible to have two different technology stacks. The Admin UI uses UI components, while the frontend UI can use the [PWA](https://developer.adobe.com/commerce/pwa-studio/) studio stack, consisting of technology such as webpack, React, Redux, and GraphQL. + +Now, instead of creating one module that covers a specialized business domain, we create up to four modules, each one responsible for a dedicated layer of the system to provide high granularity for customizations. For example, in the standard Magento architecture, the `InventorySales` module would have contained all the APIs, business logic, and UI definitions. Now, these responsibilities are defined in the `InventorySales`, `InventorySalesApi`, `InventorySalesAdminUI`, and `InventorySalesFrontendUI` modules. + +This approach implies additional code limitations in the modules: + +* All modules should depend on the API module. Implementations can be swapped in `di.xml` files. +* API modules should contain web API tests. These tests cover API endpoints agnostically to the implementation details. Example: `InventoryApi\Tests\Api\*` +* Only UI modules should contain MFTF tests, because these tests cover the interaction between the user and the UI. Example: `InventoryCatalogAdminUi\Test\Mftf\*`. + +## Module dependencies + +The list of Inventory Management dependencies varies, depending on whether the merchant has installed a headless version of Magento. These merchants have integrated Magento with external Enterprise Resource Planning (ERP) software, and they often consider the ERP software to be the "source of truth" for processes like order processing and inventory tracking. The ERP provides its own UI for managing information and processes. Attempting to use the Magento UI to manage the same things would be excessive and would lead to sophisticated bi-directional synchronization of all changed data. + +### Dependencies in a standard installation + +For non-headless installations, Inventory Management has dependencies on the following modules: + +* Backend +* BundleProduct +* Catalog +* CatalogInventory (legacy) +* ConfigurableProduct +* Directory +* EAV +* GroupedProduct +* ImportExport +* Reports +* Sales +* Shipping +* Store +* UI + +### Dependencies in a headless installation + +In headless installations, Inventory Management is dependent on the following modules: + +* BundleProduct +* Catalog +* CatalogInventory (legacy) +* ConfigurableProduct +* EAV +* GroupedProduct +* ImportExport +* Sales +* Store diff --git a/src/guides/v2.4/inventory/index.md b/src/guides/v2.4/inventory/index.md deleted file mode 120000 index 1f43c3af6c6..00000000000 --- a/src/guides/v2.4/inventory/index.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/inventory/index.md \ No newline at end of file diff --git a/src/guides/v2.4/inventory/index.md b/src/guides/v2.4/inventory/index.md new file mode 100644 index 00000000000..f38144cb64a --- /dev/null +++ b/src/guides/v2.4/inventory/index.md @@ -0,0 +1,66 @@ +--- +group: inventory +title: Inventory Management overview +landing-page: Inventory +redirect_to: https://developer.adobe.com/commerce/webapi/rest/inventory/ +status: migrated +--- + +{{site.data.var.ce}} and {{site.data.var.ee}} v2.3 include new and expanded features and APIs for {{site.data.var.im}}. {{site.data.var.im}} replaces all core APIs in the Open Source `CatalogInventory` module and the `ScalableInventory` module in Commerce. It also provides additional APIs to extend and add functionality. + +{{site.data.var.im}} features include + +* Different configurations for merchants whose inventory originates from a single source and from multiple sources +* Stocks for tracking available aggregated quantities through assigned sources +* Concurrent checkout protection +* Shipment matching algorithms + +Merchants install {{site.data.var.im}} as part of v2.3.x and upgrades with the name `magento/inventory-composer-metapackage`. For details, see [Install {{site.data.var.im}}]({{site.baseurl}}/extensions/inventory-management/). + +**Magento Community Contribution** – Magento thanks the many contributors to the [Magento Inventory (was MSI) project](https://github.com/magento/inventory), developing these features as part of the Magento Community Engineering program. + +## Terminology + +The following terms are important as you work with {{site.data.var.im}} APIs: + +* **Sources** represent physical locations that store and ship available products. These locations can include warehouses, brick-and-mortar stores, distribution centers, and drop shippers. (Any location can be designated as a source for virtual products.) + +* **Stocks** map a sales channel (currently limited to websites) to source locations and on-hand inventory. A stock can map to multiple sales channels, but a sales channel can be assigned to only one stock. + +* **Aggregate Salable Quantity** is the total virtual inventory that can be sold through a sales channel. The amount is calculated across all sources assigned to a stock. + +* **Reservations** track deductions from the salable quantity as customers add products to carts and complete checkout. When an order ships, the reservation clears and deducts the shipped amounts from specific source inventory quantities. + +## A simple scenario + +The following diagram illustrates the relationship between source stocks, aggregate stocks, and sales channels: + +![Source and aggregate stock](images/inventory-diagram-stock.png) + +In this diagram, a bicycle merchant has inventory for a mountain bike in two warehouses and a drop shipper. He has two stocks with configured website sales channels and sources. When a customer shops through the UK website, Magento aggregates bike inventory from the UK warehouse and the drop shipper sources, for a salable quantity of 95. The bike can be shipped from either the warehouse or the drop shipper, but not the NY warehouse. Amazon Marketplace has the same stock, drawing from the same aggregate stock as the UK website. + +## Important {{site.data.var.im}} objects + +* `Source` – Defines a physical stock. + +* `SourceItem` – A relation object that represents the amount of a specific product at a physical source. We use this entity for updating inventory on each source. Quantities might change as a result of synchronizing with an external Product Information Management (PIM) or Enterprise Resource Planning (ERP) system, or internally as a stock deduction during the checkout process. A `SourceItem` cannot be used for retrieving data that must be rendered on front-end, because only aggregated data should be used for all validations and UI representation. + +* `StockItem` – Also known as Aggregated Virtual Stock. This is read-only data that the re-indexation process generates. Based on a pre-defined mapping, we define what sources are assigned to the current scope (sales channel) and aggregate quantities from all assigned sources. We also use `StockItem` to check if a product is in or out of stock. Making this segregation by Read-Only interface (`StockItem`) and Write-Only interface (`SourceItem`), the Inventory architecture achieves Command Query Responsibility Segregation (CQRS). As a result, all `GET` HTTP requests should use `StockItem` entity, and all `POST/PUT` should use `SourceItem`. + +## Shipping algorithms + +When merchants are ready to make a partial or full shipment, they select the source or sources from which to send the products. Customers typically want low-cost shipping and a guarantee of safe arrival of products, while the merchant needs to ensure minimal overhead for the inventory storage and shipping costs. {{site.data.var.im}} includes an algorithm that takes these considerations into account and recommends the best shipping option or options. Magento provides an algorithm for Priority, using the source priority per stock, where each source is given a priority in the scope of a specific sales channel, and for Distance, using the locations of sources and shipping destinations. {{site.data.var.im}} also supports developer-provided extensions for other algorithms based on criteria such as cheapest shipping and closest GPS location. + +## Message queue consumers + +The following table lists all [message queue consumers]({{ page.baseurl }}/config-guide/mq/manage-message-queues.html) related to {{ site.data.var.im }}, describes what they do, and identifies the Admin system configuration settings associated with them: + +| Consumer | Description | +|-------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `inventory.source.items.cleanup` | Asynchronously deletes source items by product SKU when a product is removed.
    Required when the [**Synchronize with Catalog**]({{ site.user_guide_url }}/configuration/catalog/inventory.html) stock option is enabled in the Admin system configuration settings. | +| `inventory.mass.update` | Asynchronously processes legacy stock items, updates legacy stock items, updates default source items, and reindexes inventory for specific product SKUs.
    Required when the [**Run asynchronously**]({{ site.user_guide_url }}/configuration/catalog/inventory.html#admin-bulk-operations) bulk operation is enabled in the Admin system configuration settings. | +| `inventory.reservations.cleanup` | Asynchronously deletes reservations by product SKU after a product is removed.
    Required when the [**Synchronize with Catalog**]({{ site.user_guide_url }}/configuration/catalog/inventory.html) stock option is enabled in the Admin system configuration settings. | +| `inventory.reservations.update` | Asynchronously updates reservations by product SKU after a product is removed.
    Required when the [**Synchronize with Catalog**]({{ site.user_guide_url }}/configuration/catalog/inventory.html) stock option is enabled in the Admin system configuration settings. | +| `inventory.reservations.updateSalabilityStatus` | Asynchronously updates the salable quantity of each product assigned to a stock.
    This consumer should be up and running at all times if you are using {{ site.data.var.im }}. | +| `inventory.indexer.sourceItem` | Asynchronously reindexes source items.
    Required when the [**Stock/Source reindex strategy**]({{ site.user_guide_url }}/configuration/catalog/inventory.html#inventory-indexer-settings) is set to "aynschronous" in the Admin system configuration settings. | +| `inventory.indexer.stock` | Asynchronously reindexes stock.
    Required when the [**Stock/Source reindex strategy**]({{ site.user_guide_url }}/configuration/catalog/inventory.html#inventory-indexer-settings) is set to "aynschronous" in the Admin system configuration settings. | diff --git a/src/guides/v2.4/inventory/inventory-api-reference.md b/src/guides/v2.4/inventory/inventory-api-reference.md index fb5f4d4e0f7..0e557332d35 100644 --- a/src/guides/v2.4/inventory/inventory-api-reference.md +++ b/src/guides/v2.4/inventory/inventory-api-reference.md @@ -1,6 +1,8 @@ --- group: inventory title: Inventory API reference +redirect_to: https://developer.adobe.com/commerce/php/development/components/web-api/inventory-management/ +status: migrated --- + +- {:.fix} Performance has improved for cart-and-checkout actions such as adding products to the cart in deployments with many (approximately 10,000) inventory sources. + +- {:.fix} The `bin/magento inventory:reservation:list-inconsistencies` command now handles orders with partial shipments correctly even if the reservations are missed from the database and the cache has been cleared. Previously, when this command was executed with a pre-cleared cache, Magento displayed this error: `Area code is not set`. + +- {:.fix} The `bin/magento inventory:reservation:list-inconsistencies` command no longer returns an undefined index error. + +- {:.fix} Incremental indexing of grouped product child products no longer causes other grouped products to be incorrectly indexed when children are shared. + +- {:.fix} The storefront category page now displays the correct product count after removing a product from a category by API. Previously, the category page product count was incorrect until re-indexing occurred. + +- {:.fix} Configurable products can now be returned to stock when creating a credit memo when the **Manage Stock** option is disabled. Previously, {{ site.data.var.ce }} did not display the **Return to stock** checkbox on the credit memo creation page when this option was disabled. + +- {:.fix} Management of Inventory stock that exceeds 10,000 items has improved. Previously, performance issues sometimes prevented merchants from editing stock in the Admin before launching their website. + +- {:.fix} The Admin **SYSTEM** > **Permissions** > **User Roles** page has been changed to provide administrators with restricted permissions access to delivery methods configuration. The Shipping methods section has been renamed to Delivery methods, and In-Store Pickup has been moved under Delivery methods section. [GitHub-30053](https://github.com/magento/magento2/issues/30053) + +- {:.fix} {{site.data.var.ce}} no longer creates a duplicate product reservation after a credit memo is updated by API. + +- {:.fix} Switching from the Pick in Store tab to the Shipping tab in the checkout workflow no longer triggers a JavaScript error when only In-Store Pickup Delivery is available. + +- {:.fix} Saleable product quantity and in-stock product quantity are now synced correctly. Previously, inventory reservation compensation was not recreated for canceled orders. + +- {:.fix} We’ve optimized the performance of the validator that prevents adding new source to a bundled product’s child product with shipment type `Ship Together`. + +- {:.fix} The `Allocated sources` column is now included as expected in order export CSV files. Previously, this column was omitted. + +- {:.fix} Product stock update through import now takes into account back orders and `Out-of-Stock Threshold` configuration settings when determining product stock status. Product stock status is now automatically set to out-of-stock if the product does not meet the stock requirements. If product stock does meet the threshold, the user-defined stock status `is_in_stock` is used. + +- {:.fix} Shoppers now receive a message when they try to order a product quantity that exceeds the salable quantity. Previously, {{site.data.var.ee}} did not display an error message. + +- {:.fix} Merchants can now successfully save a Company account that contains a custom `company_name` attribute. Previously, {{ site.data.var.ce }} threw an error when you tried to save the Company account. + +- {:.fix} Products no longer go out of stock after being imported with zero (0) quantity when back orders are enabled. + +- {:.fix} Stock status for a configurable product with multiple sources during import no longer changes when child products are assigned to the non-default stock. They are listed as in-stock because the other source has quantity greater than 0. Previously, the configurable product was listed as out of stock. + +### v1.2.3 + +{{site.data.var.im}} 1.2.3 (module version: `magento/inventory-metapackage = 1.2.3`) is supported with version 2.4.3 and compatible with version 2.4.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. + +- {:.fix} Fixed several issues related to the composite product visibility on the frontend. + +- {:.fix} Improved cart page management performance with the minimum required quantity. + +- {:.fix} Several bug fixes targeted to resolve issues with source creation, out of stock items, stock sourcing, sorting allocated sources, in-store delivery, and inventory commands. + +- {:.fix} Magento now supports three-digit Canadian postal codes for in-store delivery. Six-digit codes are not supported due to limitations set by `geonames.org`. + +- {:.fix} The Admin now displays the correct quantity of default stock for disabled products on the **Products** grid and the **Edit Product** page for multi-store deployments. + +- {:.fix} Magento now refreshes the category product cache when a bundle product comes back in stock. + +### v1.2.2 + +{{site.data.var.im}} 1.2.2 (module version: `magento/inventory-metapackage = 1.2.2`) is supported with version 2.4.2 and compatible with version 2.4.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. + +- {:.fix} Fixed several issues related to the composite product visibility on the frontend. + +- {:.fix} Improved cart page performance during quantity update on B2B. + +- {:.fix} Several bug fixes targeted to resolve issues with in-store pickup, mass updates, and inventory threshold. + +- {:.new} **Functional tests.** Introduced new functional tests and provided fixes for existing tests to make them more stable. + +### v1.2.1 + +{{site.data.var.im}} 1.2.1 (module version: `magento/inventory-metapackage = 1.2.1`) is supported with version 2.4.1 and compatible with version 2.4.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. + +- {:.fix} Fixed known issue related to `inventory_cleanup_reservations` cron job, addressed issue related to In-Store Pickup functionality for bundle products, general improvements to stock calculation, bundle product support and backorders functionality. + +- {:.new} **Functional tests.** Introduced new functional tests to provide additional coverage for In-Store Pickup functionality. + +### v1.2.0 + +{{site.data.var.im}} 1.2.0 (module version: `magento/inventory-metapackage = 1.2.0`) is supported with version 2.4.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. + +- {:.fix} Numerous bug fixes to resolve issues with source assignment, scalable environment feature support, and compatibility with PHP 7.4, MySQL 8, and PHPUNIT 9. + +- {:.new} **In-store delivery method.** Added a new option for users to select a source to be used as a pickup location during checkout. See [In-store Delivery]({{ site.user_guide_url }}/shipping/shipping-in-store-delivery.html). + +- {:.new} **Bundle product support for multi source mode.** Inventory supports all product types with multiple sources. + +- {:.new} **Asynchronous stock re-indexing.** Added the ability to asynchronously re-index stock and improved the performance of several critical scenarios. + +- {:.new} **Bulk interfaces.** Introduced new bulk interfaces for salability check: `\Magento\InventorySalesApi\Api\AreProductsSalableInterface`, `\Magento\InventorySalesApi\Api\AreProductsSalableForRequestedQtyInterface`. + +- {:.new} **Increased test coverage.** New functionality covered with automated tests, extended coverage for discovered and fixed issues. + +- {:.bug} **Known issue.** The absence of the `object_id` field in the reservations metadata is preventing the `inventory_cleanup_reservations` cron job from working properly. This issue was introduced in [magento/inventory#3046](https://github.com/magento/inventory/pull/3046). + + **Workaround:** Execute the following MySQL queries to manually cleanup reservations: + + ```sql + SELECT GROUP_CONCAT(reservation_id) FROM inventory_reservation GROUP BY stock_id, sku HAVING SUM(quantity) = 0; + DELETE FROM inventory_reservation where reservation_id IN (result_of_the_first_query); + ``` + +### v1.1.6 + +{{site.data.var.im}} 1.1.6 (module version: `inventory-composer-metapackage = 1.1.6`) is supported with version 2.3.6 and compatible with version 2.3.5, 2.3.4, 2.3.3, 2.3.2, 2.3.1, and 2.3.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. + +- {:.fix} Bug fixes to resolve issues related to backorders, credit memos, low stock report grid, fixes connected to "resolve inconsistencies" CLI tool and general improvements. + +- {:.new} **Asynchronous stock re-indexing.** Added the ability to asynchronously re-index stock and improved the performance of several critical scenarios. + +### v1.1.5 +{{site.data.var.im}} 1.1.5 (module version: `inventory-composer-metapackage = 1.1.5`) is supported with version 2.3.5 and compatible with version 2.3.4, 2.3.3, 2.3.2, 2.3.1, and 2.3.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. + +- {:.new} **Update inventory once product SKU is changed.** Introduced a new configuration setting to switch to the new behavior: "Synchronize with Catalog". + +- {:.new} **Functional tests.** Introduced new functional tests to eliminate the test coverage gap. Fixed several issues to make tests more stable and reliable). + +- {:.bug} Bug fixes to prevent product oversell, "Out of stock" products visibility on the storefront, numerous fixes for scalable environment support and user interface improvements. + +### v1.1.4 + +{{site.data.var.im}} 1.1.4 (module version: `inventory-composer-metapackage = 1.1.4`) is supported with version 2.3.4 and compatible with version 2.3.3, 2.3.2, 2.3.1, and 2.3.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. + +- {:.fix}**Increased performance.** Introduced bunching logic for Inventory Reservations CLI command to reduce memory usage and avoid cases when the process is stuck without any response. + +- {:.new}**Increased test coverage.** Introduced many new Functional tests. Almost all manual Inventory scenarios are covered with automated tests. + +- {:.bug} Numerous bug fixes targeted to resolve issues with credit memos, grouped products, source and stock mass actions. + +### v1.1.3 + +{{site.data.var.im}} 1.1.3 (module version: `inventory-composer-metapackage = 1.1.3`) is supported with version 2.3.3 and compatible with version 2.3.2, 2.3.1, and 2.3.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. + +- {:.fix}**Better integration with {{site.data.var.ee}} and {{site.data.var.b2b}} features.** {{site.data.var.im}} now works correctly with the following features for websites using non-default inventory sources and stocks: + - Order by SKU ({{site.data.var.ee}}) + - Quick order ({{site.data.var.b2b}}) + - Requisition lists ({{site.data.var.b2b}}) + +- {:.new}**Increased performance.** Storefront catalog browsing performance has significantly improved for websites running the default inventory stock and source. + +- {:.new}**Increased test coverage.** The automated Functional and Integration test coverage has increased significantly. + +### v1.1.2 + +{{site.data.var.im}} 1.1.2 (module version: `inventory-composer-metapackage = 1.1.2`) is supported with version 2.3.2 and compatible with version 2.3.1, and 2.3.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. + +- {:.fix} Added `source_code` to the response for the GET `/V1/shipments` REST endpoint. + +- {:.fix} Resolved issue to correctly clear reservations and update product quantities after issuing a credit memo for an unshipped order. When you select the option to + +- {:.fix} Resolved issue to correctly save quantity for configurable product children when entering quantities during product creation. + +New modules for Inventory Management 1.1.2 Beta include: + +```php + 'Magento_InventoryGraphQl' => 1, + 'Magento_InventoryReservations' => 1, + 'Magento_InventoryReservationsApi' => 1, + 'Magento_InventoryReservationCli' => 1, + 'Magento_InventoryExportStock' => 0, + 'Magento_InventoryExportStockApi' => 0, +``` + +- {:.new} **Added a Bulk Partial Stock Transfer Endpoint** - Current bulk transfer endpoints move all assigned quantity from an origin to a destination source. The new `/rest/V1/inventory/bulk-partial-source-transfer` endpoint allows merchants to transfer partial stock from source-to-source as a bulk operation. Enter a request to the endpoint with the `sku`, `qty`, `origin_source_code`, and `destination_source_code` to transfer a specific amount of quantity. Transfers verify the source is assigned to the `sku`, enough quantity exists to transfer, etc. See [Inventory Bulk Actions](https://developer.adobe.com/commerce/webapi/rest/inventory/bulk-inventory). + +- {:.new} **Added Reservation CLI** - New commands give you options to detect and resolve reservation inconsistencies. As orders submit and change status, {{site.data.var.im}} generates initial reservations and updates through compensation reservations. These commands return a list of detected inconsistencies by Order ID, SKU, and Stock ID and create reservations to resolve. See [Inventory CLI reference]({{ page.baseurl }}/inventory/inventory-cli-reference.html). + +- {:.new} **Performance improvements for sources and SSA options** - Sorting and selecting sources during shipment caused performance degradation for stocks with high numbers of sources. This release provides significant performance improvements to list and sort available sources when reviewing and selecting SSA options in shipments. + +- {:.new} **Added GraphQL support for {{site.data.var.im}}** - This release installs a new `magento/module-inventory-graph-ql` module. The GraphQL [Products endpoint]({{ page.baseurl }}/graphql/queries/products.html) now includes the `only_x_left_in_stock` and `stock_status` attributes for {{site.data.var.im}} support. + +- {:.new} **Simplified UI for Assigned Sources** - The Assigned Sources table in product pages has simplified content for easier updates and increased performance when displaying many sources. All sources list by source name (hover over for `source_code`). + +- {:.new} **Export Aggregated Stock Service** - This release provides a new export aggregated stock service (retaining reservations in the system) to support external Sales Channels like Amazon, eBay, Google Shopping ads, etc. + +### v1.1.0 + +{{site.data.var.im}} 1.1.0 (module version: `inventory-composer-metapackage = 1.1.0`) is supported and compatible with version 2.3.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. {{site.data.var.im}} 1.1.1 released only as a package name update, supported with version 2.3.1 and compatible with version 2.3.0 of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. + +- {:.fix} **Added support for Elasticsearch for single and multi sources modes** — You can now configure and use Elasticsearch with custom stocks. This resolves a [known issue]({{ site.baseurl }}/guides/v2.3/release-notes/ReleaseNotes2.3.0OpenSource.html) in version 2.3.0 of {{site.data.var.ce}} and {{site.data.var.ee}}. See [Set up the search engine]({{ page.baseurl }}/config-guide/elasticsearch/es-overview.html) for installation information and [Elasticsearch](https://docs.magento.com/m2/ce/user_guide/catalog/search-elasticsearch.html) to configure through the Admin. + +- {:.fix} Resolved performance issues with Default Stock to drastically increase performance with numerous operations. Improvements increase performance for Single Source mode, Transfer Inventory to Source, Storefront Category pages, and Salable Quantity calculations. This resolves a [known issue]({{ site.baseurl }}/guides/v2.3/release-notes/ReleaseNotes2.3.0OpenSource.html) requiring custom stocks creation for Single Source merchants in version 2.3.0 of {{site.data.var.ce}} and {{site.data.var.ee}}. + + + +- {:.fix} Resolved issues with Out of Stock status and bulk Inventory Transfer to Stock for configurable and grouped products. Selecting the parent products and performing bulk actions does not affect the product status. If the parent product was In Stock, it remains In Stock. + + + +- {:.new} **Distance Priority Algorithm** — The Distance Priority Algorithm is a new, out-of-the-box Source Selection Algorithm for distance-based shipping recommendations. This algorithm compares the location of the shipping destination address with source locations to determine the closest source to fulfill shipments. The distance may be determined by either physical distance or the time spent traveling from one location to another, using imported geocode location data or Google directions (driving, walking, or bicycling). See [Configuring Distance Priority Algorithm](https://docs.magento.com/m2/ce/user_guide/catalog/inventory-configure-distance-priority.html) in the _User Guide_. + +- {:.new} **Expanded source quantity list** — Merchants with a high number of sources can easily hover and view all sources per product through the Product Grid. Each product displays a minimum of five sources and matching quantities. When hovering over the sources, you can scroll through the entire list of sources and current quantities. See [Managing Inventory Quantities](https://docs.magento.com/m2/ce/user_guide/catalog/inventory-manage-inventory-quantities.html). + +- {:.bug} Known issue with Magento v2.3.1 - Asynchronous migration of data between sources will encounter issues due to changes in Asynchronous APIs with topic names reflecting PHP class and method names. We recommend using synchronous operations, setting **Run asynchronously** to "No". To configure, see [Configure Global Options](https://docs.magento.com/m2/ee/user_guide/catalog/inventory-options-global.html) in the Magento User Guide. diff --git a/src/guides/v2.4/inventory/reservations.md b/src/guides/v2.4/inventory/reservations.md deleted file mode 120000 index 92a3d53b050..00000000000 --- a/src/guides/v2.4/inventory/reservations.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/inventory/reservations.md \ No newline at end of file diff --git a/src/guides/v2.4/inventory/reservations.md b/src/guides/v2.4/inventory/reservations.md new file mode 100644 index 00000000000..b2dc8927add --- /dev/null +++ b/src/guides/v2.4/inventory/reservations.md @@ -0,0 +1,182 @@ +--- +group: inventory +title: Reservations +redirect_to: https://experienceleague.adobe.com/docs/commerce-admin/inventory/basics/selection-reservations.html +status: migrated +--- + +Adobe Commerce and Magento Open Source use _reservations_ to calculate and keep track of the salable quantity of each product assigned to a stock. When a customer places an order, the system checks whether the quantity requested for each item is available for sale. If yes, the system creates a reservation as an inventory request for each item, thereby reducing the salable quantity available for purchase. As items are shipped, cancelled or refunded, the system issues additional reservations that compensate the original. A cron job removes the original reservation and all compensatory reservations from the database when all ordered items have been shipped, cancelled, or refunded. + +{:.bs-callout-info} +The reservation capability requires the `inventory.reservations.updateSalabilityStatus` message queue consumer to be running at all times. To check if it is running, use the `bin/magento queue:consumers:list` command. If you do not see it in the list, start it: `bin/magento queue:consumers:start inventory.reservations.updateSalabilityStatus`. + +Reservations prevent the merchant from overselling products, even in cases where the latency between order placement and order processing is high. In addition, reservations are append-only operations that help prevent blocking operations and race conditions at the time of checkout. + +## Reservation calculations + +The system creates a reservation for each product when the following events occur: + +* A customer or merchant places an order. +* A customer or merchant fully or partially cancels an order. +* The merchant creates a shipment for a physical product. +* The merchant creates an invoice for a virtual or downloadable product. +* The merchant issues a credit memo. + +Reservations are append-only operations, similar to a log of events. The initial reservation is assigned a negative quantity value. All subsequent reservations created while processing the order are positive values. When the order is complete, the sum of all reservations for the product is 0. + +Before the system can issue a reservation in response to a new order, it determines whether there are enough salable items to fulfill the order. The following quantities factor into the calculation: + +* **StockItem quantity**. The StockItem quantity is the aggregated amount of inventory from all the physical sources for the current sales channel. If the Baltimore source has 20 units of a product, the Austin source has 25 units of the same product, while the Reno source has 10, and all these sources are linked to Stock A, then the StockItem count for thus product is 55 (20 + 25 + 10). (When items are shipped, the Inventory indexer updates the quantities available at each source.) + +* **Outstanding reservations**. The system totals all the initial reservations that have not been compensated. This number will always be negative. If customer A has a reservation for 10 items, and customer B has a reservation 5 for items, then outstanding reservations for the product total -15. + +Therefore, the merchant can fulfill an incoming order as long as the customer orders less than 40 (55 + -15) units. + +When you complete processing an order (Complete, Canceled, Closed), all reservations in the scope of that order should resolve to `0`. This clears all salable quantity holds. + +{:.bs-callout-info} +Backorders (with Out-of-Stock Thresholds) and Notify for Quantity Below Threshold settings also affect the calculation of salable quantities, but they are outside the scope of this topic. For more information about these settings, see [Configuring Inventory Management](https://docs.magento.com/m2/ce/user_guide/catalog/inventory-configure-inventory-management.html) in the _Admin User Guide_. + +## Reservation objects + +A reservation contains the following information: + +Parameter | Data type | Description +--- | --- | --- +`reservation_id` | Integer | A system-generated ID +`stock_id` | Integer | The ID of the stock the product is assigned to +`sku` | String | The SKU of the product +`quantity` | Float | The number of items in this reservation +`metadata` | String | The event type, object type, and object ID for this reservation. For example, `{"event_type":"order_placed","object_type":"order","object_id":"8"}` + +The metadata `event_type` can have the following values: + +* `order_placed` +* `order_canceled` +* `shipment_created` +* `creditmemo_created` +* `invoice_created` + +Currently, the metadata object type must be `order`, and the object ID is the order ID. + +In future releases, it might be possible to create a reservation when a customer adds an item to a shopping cart. Each item could be reserved for a fixed amount of time, such as 15 minutes, allowing the customer to reserve items while continuing to shop. When this type of reservation is enabled, the metadata could contain additional types of information. + +## Reservation lifecycle + +The following example shows the sequence of reservations generated for a simple order. + +1. The customer makes a purchase order for 25 units of product `SKU-1`. The reservation contains the following information: + + ```text + reservation_id = 1 + stock_id = 1 + sku = SKU-1 + quantity = -25 + event_type = order_placed + ``` + +1. The customer sends an invoice for 20 items, essentially canceling 5 of the units ordered. + + ```text + reservation_id = 2 + stock_id = 1 + sku = SKU-1 + quantity = 5 + event_type = order_canceled + ``` + +1. The merchant ships the purchased 20 units. + + ```text + reservation_id = 3 + stock_id = 1 + sku = `SKU-1` + quantity = 20 + event_type = shipment_created + ``` + +The three `quantity` values sum up to 0 (-25 + 5 + 20). Note that the system does not modify any existing reservations. + +## Removing processed reservations + +The `inventory_cleanup_reservations` cron job executes SQL queries to clear the reservation database table. By default, it runs daily at midnight, but you can configure the times and frequency. The cron job runs a script that queries the database to find complete reservation sequences in which the sum of quantity values is 0. When all reservations for a given product that originated on the same day (or other configured time) have been compensated, the cron job deletes the reservations all at once. + +The `inventory_reservations_cleanup` cron job is not the same as the `inventory.reservations.cleanup` message queue consumer. The consumer asynchronously deletes reservations by product SKU after a product has been removed, whereas the cron job clears the entire reservations table. The consumer is required when you enable the [**Synchronize with Catalog**]({{ site.user_guide_url }}/configuration/catalog/inventory.html) stock option in the Admin system configuration. See [Manage message queues]({{ page.baseurl }}/config-guide/mq/manage-message-queues.html). + +Often, all initial reservations produced in a single day cannot compensated that same day. This situation could occur when a customer places an order minutes before the cron job begins or makes the purchase with an offline payment method, such as a bank transfer. The compensated reservation sequences remain in the database until they have all been compensated. This practice does not interfere with reservation calculations, because the total for each reservation is 0. + +{:.bs-callout-info} +{{site.data.var.im}} provides commands to detect and manage reservation inconsistencies. See [Inventory CLI reference]({{page.baseurl}}/inventory/inventory-cli-reference.html). + +## Interfaces and services + +All interfaces and services are defined in the `InventoryReservations` and `InventoryReservationsApi` modules. + +### Data interface + +`ReservationInterface` defines the constants and getter methods required for managing reservations. + +### Reservation services + +When an event such as an order placement, cancellation, refund, or shipment occurs, the Append Reservation Service creates a reservation for each SKU, indicating how many items to add to the salable quantity total. The service guarantees the client does not use the `ReservationAppend` service to update existing reservations. (Reservations are append-only entities.) For example, use the service to check whether the `ReservationId`, which is passed in the scope of `ReservationInterface`, has been nullified. + +```php +interface AppendReservationsInterface +{ + /** + * Append reservations + * + * @param ReservationInterface[] $reservations + * @return void + * @throws \Magento\Framework\Exception\InputException + * @throws \Magento\Framework\Exception\CouldNotSaveException + */ + public function execute(array $reservations): void; +} +``` + +Do NOT use the `AppendReservationsInterface` service directly in the business logic that creates a business event. Instead, use a more high-level service: + +```php +namespace Magento\InventorySalesApi\Api; + +/** + * This service is responsible for creating reservations upon a sale event. + * + * @api + */ +interface PlaceReservationsForSalesEventInterface +{ + /** + * @param \Magento\InventorySalesApi\Api\Data\ItemToSellInterface[] $items + * @param \Magento\InventorySalesApi\Api\Data\SalesChannelInterface $salesChannel + * @param \Magento\InventorySalesApi\Api\Data\SalesEventInterface $salesEvent + * @return void + * + * @throws \Magento\Framework\Exception\LocalizedException + * @throws \Magento\Framework\Exception\InputException + * @throws \Magento\Framework\Exception\CouldNotSaveException + */ + public function execute( + array $items, + \Magento\InventorySalesApi\Api\Data\SalesChannelInterface $salesChannel, + \Magento\InventorySalesApi\Api\Data\SalesEventInterface $salesEvent + ): void; +} +``` + +### Checkout services + +In Inventory Management, a product's `Quantity` value is not static. The salable quantity is now retrieved as a result of a dedicated service call. This differs from the previous `CatalogInventory` implementation, which defined the `Product` `StockItem` interface. (`CatalogInventory` has been deprecated.) + +Use the following dynamic services introduced instead of `StockItem`: + +Interface | Description +--- | --- +`GetProductSalableQtyInterface` | Returns the salable product quantity for the specified stock ID +`IsProductSalableInterface` | Checks whether the product is salable +`IsProductSalableForRequestedQtyInterface` | Checks whether there is enough salable quantity to fulfill an order or place the product into a shopping cart + +## Web API support + +Adobe Commerce and Magento Open Source web APIs (REST and SOAP) impose restrictions for entity interfaces that are outside the scope of reservations. Most notably, Web APIs require getter and setter methods. Because reservations are append-only immutable entities, there are no reservation setter methods. Therefore, reservation Web APIs are not supported. diff --git a/src/guides/v2.4/inventory/source-selection-algorithms.md b/src/guides/v2.4/inventory/source-selection-algorithms.md deleted file mode 120000 index 065e453824a..00000000000 --- a/src/guides/v2.4/inventory/source-selection-algorithms.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/inventory/source-selection-algorithms.md \ No newline at end of file diff --git a/src/guides/v2.4/inventory/source-selection-algorithms.md b/src/guides/v2.4/inventory/source-selection-algorithms.md new file mode 100644 index 00000000000..c7913be7769 --- /dev/null +++ b/src/guides/v2.4/inventory/source-selection-algorithms.md @@ -0,0 +1,203 @@ +--- +group: inventory +title: Source selection algorithms +redirect_to: https://experienceleague.adobe.com/docs/commerce-admin/inventory/basics/selection-reservations.html +status: migrated +--- + +The **Source Selection Algorithm (SSA)** recommends how to fulfill partial and full shipments. The merchant decides which business needs take precedence when deciding which shipping method to use: + +* Should the products be delivered from the sources designated as having the highest priority? +* Should the total shipment cost be the primary factor in choosing a shipment method? +* Should the shipments originate from the closest source? +* Should the fastest shipping method with the shortest delivery time be used, even if it's not the cheapest? + +Magento provides the following algorithms: + +* Source priority +* Distance priority + +Third party developers can create additional algorithms to help merchants decide which shipping option best meets their needs. + +Magento does not enforce or save the results of SSA recommendations. The recommendations reflect conditions at the moment when the algorithm runs, but conditions change over time. For example, the amount of in-stock products will always fluctuate, and shipping costs might change. The merchant can also modify the recommendations by adjusting quantities for deduction or even by re-assigning the shipment's sources of origin. + +## Source Priority algorithm + +Custom stocks include an assigned list of sources to sell and ship available product inventory through the storefront. This algorithm uses the order of assigned sources in your stock to make recommendations. + +When run, the algorithm: + +* Works through the configured order of sources at the stock level starting at the top +* Skips any disabled sources +* Continues down the list until the order shipment is filled +* Recommends a quantity to ship and source per product based on the order in the list, available quantity, and quantity ordered + +## Distance Priority algorithm + +The Distance Priority algorithm compares the location of the shipping destination address with each source location to determine the closest source to fulfill shipments. The distance may be determined by physical distance or time spent traveling from one location to another, using imported database location data or Google directions (driving, walking, or bicycling). + +You have two options for calculating distance: + +**Google MAP:** Uses Google Maps Platform services to calculate the distance and time between the shipping destination address and source locations. This option uses the source's Latitude and Longitude (GPS coordinates) and may use the street address depending on the computation mode. You must provide a Google API key with Geocoding API and Distance Matrix API enabled. This option requires a Google billing plan and may incur charges through Google. + +**Offline Calculation:** Calculates the distance using downloaded and imported geocodes to determine the closest source to the shipping destination address. The geocodes are derived from the city, state, country, and postal code of both the shipping address and the source. + +To support offline calculations, Magento provides a command that downloads country-specific geocode data from [geonames.org](https://geonames.org) and imports this information into the database. + +We recommend entering full street address and GPS coordinate information in your sources if using the Distance Priority algorithm. Google MAP uses your GPS coordinates and your street address. Offline Calculation uses the city, state, country, and zip codes. + +{% include config/cli-inventory.md %} + +## SSA interfaces + +The source priority algorithm recommends delivering products from sources having the highest priority. The `SourceSelectionServiceInterface` accepts an `InventoryRequestInterface` object, which in turn contains the stock ID and a list of items to be shipped. Each item contains only the SKU and quantity. Other potentially relevant data, such as shipping address, is not included, because the priority algorithm does not need it. + +Additional input data might be needed for more sophisticated algorithms, such as the Distance Priority algorithm. In this case, the algorithm needs the shipping address and all data entered for the source (GPS or full address). That's why `InventoryRequestInterface` implements `ExtensibleDataInterface` interfaces, which can be extended with custom input parameters. + +Currently, Inventory Management deducts stock from the appropriate source after the merchant creates a shipment for an order. However, that's not flexible enough--a developer might want to introduce customizations and launch the SSA when the customer proceeds to checkout. Running the SSA at this point could provide the customer more accurate shipping costs. Note in this case, the `Order` object has not created yet, and the system must instead rely on the `Quote` object. + +Taking into account that there are at least two valid business cases when to launch the SSA, and the data source can be an `Order` or `Quote` object, Inventory Management introduces a new layer of abstraction. The algorithm must use an abstract data container instead of a specific Magento entity. + +Use these interfaces to create your own SSA: + +* [InventoryRequestInterface](https://github.com/magento/inventory/blob/1.1.3/app/code/Magento/InventorySourceSelectionApi/Api/Data/InventoryRequestInterface.php) requests products for a given quantity and stock ID +* [ItemRequestInterface](https://github.com/magento/inventory/blob/1.1.3/app/code/Magento/InventorySourceSelectionApi/Api/Data/ItemRequestInterface.php) represents the requested quantity for a specific SKU +* [SourceSelectionServiceInterface](https://github.com/magento/inventory/blob/1.1.3/app/code/Magento/InventorySourceSelectionApi/Api/SourceSelectionServiceInterface.php) returns the source selection algorithm result for the specified `inventoryRequest` +* [GetSourceSelectionAlgorithmListInterface](https://github.com/magento/inventory/blob/1.1.3/app/code/Magento/InventorySourceSelectionApi/Api/GetSourceSelectionAlgorithmListInterface.php) returns the list of data interfaces that represent registered SSAs +* [SourceSelectionAlgorithmInterface](https://github.com/magento/inventory/blob/1.1.3/app/code/Magento/InventorySourceSelectionApi/Api/Data/SourceSelectionAlgorithmInterface.php) represents a single SSA +* [SourceSelectionInterface](https://github.com/magento/inventory/blob/1.1.3/app/code/Magento/InventorySourceSelectionApi/Model/SourceSelectionInterface.php) returns the SSA result for the specified `inventoryRequest` +* [GetDistanceInterface](https://github.com/magento/inventory/blob/1.1.3/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetDistanceInterface.php) - returns the distance between the source and the shipping address in kilometers without specifying the units. To change this behavior, provide your own implementation for `\Magento\InventoryDistanceBasedSourceSelection\Model\DistanceProvider\GoogleMap\GetDistance`. + +## Develop a custom algorithm + +As you develop your custom Source Selection Algorithm, keep these design considerations in mind: + +* Implement `SourceSelectionInterface` +* If your module provides an SSA on quotes, introduce your own `InventoryRequestFactory` +* Register your SSA within a `di.xml` file + +### Implement `SourceSelectionInterface` + +Your SSA must implement `SourceSelectionInterface`, which is shown below: + +```php?start_inline=1 +/** + * Returns source selection algorithm result for given Inventory Request + * Current interface should be implemented in order to add own Source Selection Method + * + * @api + */ +interface SourceSelectionInterface +{ + /** + * @param InventoryRequestInterface $inventoryRequest + * @return SourceSelectionResultInterface + */ + public function execute( + InventoryRequestInterface $inventoryRequest + ): SourceSelectionResultInterface; +} +```` + +For example, the following example defines the `MinimalDeliveryCostAlgorithm` class: + +```php?start_inline=1 +namespace Some\Vendor\Namespace\SourceSelection; + +/** + * Minimal Delivery Cost for Merchant algorithm + * + * @api + */ +class MinimalDeliveryCostAlgorithm implements SourceSelectionInterface +{ + public function execute( + InventoryRequestInterface $inventoryRequest + ): SourceSelectionResultInterface; + { + // TODO: Implement execute() method. + } +} +``` + +### Create a `InventoryRequest` factory for quotes (optional) + +Magento provides the [`InventoryRequestFromOrderFactory`](https://github.com/magento/inventory/blob/1.1.3/app/code/Magento/InventoryShipping/Model/InventoryRequestFromOrderFactory.php), which determines the sources to use to fulfill the order at the time a shipment is created. + +```php?start_inline=1 +class InventoryRequestFromOrderFactory +{ + /** + * @param OrderInterface $order + * @return InventoryRequestInterface + */ + public function create(OrderInterface $order) : InventoryRequestInterface + { + $requestItems = []; + $websiteId = $order->getStore()->getWebsiteId(); + $stockId = (int)$this->stockByWebsiteIdResolver->execute((int)$websiteId)->getStockId(); + /** @var OrderItemInterface|OrderItem $orderItem */ + foreach ($order->getItems() as $orderItem) { + $itemSku = $this->getSkuFromOrderItem->execute($orderItem); + $qtyToDeliver = $orderItem->getQtyToShip(); + //check if order item is not delivered yet + if ($orderItem->isDeleted() + || $orderItem->getParentItemId() + || $this->isZero((float)$qtyToDeliver) + || $orderItem->getIsVirtual() + ) { + continue; + } + $requestItems[] = $this->itemRequestFactory->create([ + 'sku' => $itemSku, + 'qty' => $qtyToDeliver + ]); + } + return $this->inventoryRequestFactory->create([ + 'stockId' => $stockId, + 'items' => $requestItems + ]); + } +} +``` + +To add an SSA at the time of checkout, introduce your own factory that produces an `InventoryRequestInterface` based on a `Quote` object, outlined as follows: + +```php?start_inline=1 +class InventoryRequestFactory +{ + /** + * @param \Magento\Quote\Api\Data\CartInterface $quote + * @return InventoryRequestInterface + */ + public function create(\Magento\Quote\Api\Data\CartInterface $quote) : InventoryRequestInterface + { + // TODO + } +} +``` + +### Configure `di.xml` + +Configure your module's `etc/di.xml` file to register your SSA with `SourceSelectionServiceInterface` and `GetSourceSelectionAlgorithmList`. + +```xml + + + + Some\Vendor\Namespace\SourceSelection\MinimalDeliveryCostAlgorithm + + + + + + + + minimalDeliveryCost + Minimal Delivery Cost + Algorithm that calculates the shipping option with the lowest shipping cost to the merchant. + + + + +``` diff --git a/src/guides/v2.4/javascript-dev-guide/bk-javascript-dev-guide.md b/src/guides/v2.4/javascript-dev-guide/bk-javascript-dev-guide.md deleted file mode 120000 index 6700a6091cc..00000000000 --- a/src/guides/v2.4/javascript-dev-guide/bk-javascript-dev-guide.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/javascript-dev-guide/bk-javascript-dev-guide.md \ No newline at end of file diff --git a/src/guides/v2.4/javascript-dev-guide/bk-javascript-dev-guide.md b/src/guides/v2.4/javascript-dev-guide/bk-javascript-dev-guide.md new file mode 100644 index 00000000000..82e78235533 --- /dev/null +++ b/src/guides/v2.4/javascript-dev-guide/bk-javascript-dev-guide.md @@ -0,0 +1,50 @@ +--- +group: javascript-developer-guide +title: JavaScript Developer Guide +landing-page: JavaScript Developer Guide +redirect_to: https://developer.adobe.com/commerce/frontend-core/javascript/ +status: migrated +--- + +## Introduction {#overview-introduction} + +By default, the Magento application uses the [RequireJS file and module loader] to optimize the time of loading pages with included JavaScript files, and to manage dependencies of JavaScript resources. + +For information about how JS resources are located and configured, see the [JavaScript resources] topic in the Configuration Guide. + +## What's in this guide {#js_contents} + +Topics of this book describe the following: + +- [JavaScript initialization] - how to initialize JavaScript components and widgets in JavaScript files and `.phtml` templates +- [Use custom JavaScript] - how to extend or replace default JavaScript components/widgets. +- [Locate JavaScript] components - how to define which components (scripts) are used on a particular store page. +- [Magento jQuery widgets] - Magento jQuery widget API documentation. +- [Customizing JavaScript illustration] - practical illustration of custom widgets related tasks. + +JavaScript automatic testing is described in a separate [JavaScript unit testing] topic. + +## Terms used {#js_terms} + +| Term | Description | +| ------------------------------------- |--------------------------------------------------- | +| *JavaScript component (JS component)* | Any separate `.js` file decorated as [AMD module]. | +| *Ui component* | JS component located in the `Magento_Ui` module, in the [app/code/Magento/Ui/view] directory, or JS component that extends files from this module. | +| *jQuery UI widget* | A JS component/widget provided by the [jQuery UI library used in Magento]. | +| *jQuery widget* | Custom widget created using jQuery UI Widget Factory and decorated as AMD module. Many Magento JS components are the jQuery widgets. | + +[AMD module]: https://requirejs.org/docs/whyamd.html#amd +[`Magento_Ui`]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Ui +[app/code/Magento/Ui/view]: {{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Ui/view +[jQuery UI library used in Magento]: {{ site.mage2bloburl }}/{{ page.guide_version }}/lib/web/jquery/jquery-ui-1.9.2.js +[jQuery Widget]: https://jqueryui.com/widget/ + +[RequireJS file and module loader]: https://requirejs.org/ +[JavaScript resources]: {{page.baseurl}}/javascript-dev-guide/javascript/js-resources.html + +[JavaScript initialization]: {{page.baseurl}}/javascript-dev-guide/javascript/js_init.html +[Use custom JavaScript]: {{page.baseurl}}/javascript-dev-guide/javascript/custom_js.html +[Locate JavaScript]: {{page.baseurl}}/javascript-dev-guide/javascript/js_debug.html +[Magento jQuery widgets]: {{page.baseurl}}/javascript-dev-guide/widgets/jquery-widgets-about.html +[Customizing JavaScript illustration]: {{page.baseurl}}/javascript-dev-guide/javascript/js_practice.html +[JavaScript unit testing]: {{page.baseurl}}/test/js/jasmine.html diff --git a/src/guides/v2.4/javascript-dev-guide/conventions_js.md b/src/guides/v2.4/javascript-dev-guide/conventions_js.md deleted file mode 120000 index 295f3fad30c..00000000000 --- a/src/guides/v2.4/javascript-dev-guide/conventions_js.md +++ /dev/null @@ -1 +0,0 @@ -../../v2.3/javascript-dev-guide/conventions_js.md \ No newline at end of file diff --git a/src/guides/v2.4/javascript-dev-guide/conventions_js.md b/src/guides/v2.4/javascript-dev-guide/conventions_js.md new file mode 100644 index 00000000000..8b594944352 --- /dev/null +++ b/src/guides/v2.4/javascript-dev-guide/conventions_js.md @@ -0,0 +1,30 @@ +--- +group: javascript-developer-guide +title: Conventional notations used in this Guide +redirect_to: https://developer.adobe.com/commerce/frontend-core/javascript/conventions/ +status: migrated +--- + +## Conventional notations for paths to modules and themes + +Magento application components, including modules, themes, and language packages technically can be located anywhere under the Magento root directory. This refers to both Magento default and custom components. + +The following relative paths are used for modules and themes: + +**- ``:** + +[Theme](https://glossary.magento.com/theme) directory. Usually used when talking about custom themes, or any theme in general. + +For Magento out of the box [frontend](https://glossary.magento.com/frontend) themes, usually one of the following: + +- `app/design/frontend//` +- `vendor/magento/theme-frontend-` + +**- ``:** + +Module directory. When talking about a particular Magento module, also notation similar to the following is used: `` + +For Magento modules, the absolute path is usually one of the following: + +- `app/code//` +- `vendor/magento/module--` diff --git a/src/guides/v2.4/javascript-dev-guide/javascript/custom_js.md b/src/guides/v2.4/javascript-dev-guide/javascript/custom_js.md deleted file mode 120000 index a723830c445..00000000000 --- a/src/guides/v2.4/javascript-dev-guide/javascript/custom_js.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/javascript-dev-guide/javascript/custom_js.md \ No newline at end of file diff --git a/src/guides/v2.4/javascript-dev-guide/javascript/custom_js.md b/src/guides/v2.4/javascript-dev-guide/javascript/custom_js.md new file mode 100644 index 00000000000..0fa0d0ed769 --- /dev/null +++ b/src/guides/v2.4/javascript-dev-guide/javascript/custom_js.md @@ -0,0 +1,157 @@ +--- +group: javascript-developer-guide +title: Use custom JavaScript +redirect_to: https://developer.adobe.com/commerce/frontend-core/javascript/custom/ +status: migrated +--- + +This topic discusses how to use custom [JavaScript](https://glossary.magento.com/javascript) components with the components provided by Magento or custom replacement implementations. + +We strongly recommend that you do not change the source code of default Magento components and widgets. All customizations must be implemented in custom modules or themes. + +## Add a custom JS component {#custom_js_overview} + +To add a custom JS component (module), take the following steps: + +1. Place the custom component source file in one of the following locations: + - Your theme JS files: `/web/js` or `/_/web/js`. In this case the component is available in your theme and its [child themes]({{ page.baseurl }}/frontend-dev-guide/themes/theme-inherit.html). + - Your module view JS files: `/view/frontend/web/js`. In this case, the component is available in all modules and themes (if your module is enabled). + +1. Optionally, in the corresponding [module](https://glossary.magento.com/module) or theme, create a `requirejs-config.js` configuration file, if it does not yet exist there and set path for your resource. The RequireJS configuration file can be placed in one of the following locations: + + - Your theme: `` + - Module within your theme: `/` + - Your module (depending on the needed area - **base**, **frontend**, **adminhtml**): `/view/` + +## Replace a default JS component {#js_replace} + +To use a custom implementation of an existing Magento JS component: + +Place the custom component source file in one of the following locations: + +- Your theme JS files: `/web/js` +- Your module view JS files: `/view/frontend/web/js` + +Create a RequireJS configuration file `requirejs-config.js`, having specified the following: + +```javascript +var config = { + "map": { + "*": { + "": "" + } + } +}; +``` + +- ``: the name of the default component you replace +- ``: the name of the custom component + +For example, if you want to use a custom `navigation-menu.js` script instead of the default menu widgets, your `requirejs-config.js` should contain the following: + +```javascript +var config = { + "map": { + "*": { + "menu": "js/navigation-menu", + "mage/backend/menu": "js/navigation-menu" + } + } +}; +``` + +Place your `requirejs-config.js` file in one of the following directories (according to the location of your custom script, see step 1 of this procedure): + +- Your [theme](https://glossary.magento.com/theme) files: `` +- Your module view files: `/view/frontend` + +This way, your custom JS component is used instead of the [Magento component](https://glossary.magento.com/magento-component) in all entries all over the [frontend](https://glossary.magento.com/frontend) area. + +## Extend a default JS component {#extend_js} + +You can add a custom JS component/widget, which will extend a default Magento component/widget. + +### Extend Magento widget {#extend_js_widget} + +To extend a default Magento [jQuery](https://glossary.magento.com/jquery) widget, create `.js` with contents similar to the following: + +```javascript +define([ + 'jquery', + 'jquery-ui-modules/widget', // use individual jQuery UI component if your widget is for frontend or base areas + // 'jquery/ui', // use all 'jquery/ui' library if your widget is for adminhtml area + 'mage/' // usually widget can be found in /lib/web/mage dir +], function($){ + + $.widget('.', $.mage., { ... }); + + return $..; +}); +``` + +Where the following notation is used: + +- `.` - the name of your custom [widget](https://glossary.magento.com/widget). According to the jQuery widgets naming convention, this value must contain a [namespace](https://glossary.magento.com/namespace) and name. +- `mage.` - the name of the Magento widget that you extend. + +{:.bs-callout-info} +When using custom JS, try to keep dependencies to a minimum. Additional dependencies demand more web requests, which can slow rendering. + +{:.bs-callout-tip} +All jQuery UI components for frontend and base areas are located in `lib/web/jquery/ui-modules` dir. They can be used in JS widgets by `jquery-ui-modules` path mapping like `jquery-ui-modules/widget` and `jquery-ui-modules/slider`. +Using individual jQuery UI components instead of the monolithic jQuery UI library improves storefront performance. + +For information about initializing your custom widget in a `.phtml` template, see the [JavaScript initialization]({{ page.baseurl }}/javascript-dev-guide/javascript/js_init.html) topic. + +### Extend a default Ui component {#extend_js_component} + +To extend a default JS Ui component, your custom script must contain the following: + +```javascript +define([ + '' +], function(){ + + return .extend({ + + defaults: { ... }, // properties with default values + ... // methods of your component + }); +}); +``` + +Where the following notation is used: + +- ``: path to the default component that you extend +- ``: variable containing the default component that you extend + +For example, `Filters.js` script extends the default `filters.js`: + +```javascript +define([ + 'Magento_Ui/js/grid/filters/filters' +], function(Filters){ + + return Filters.extend({ + + defaults: { ... }, // properties with default values + ... // methods of your component + }); +}); +``` + +For information about initializing your custom JS component in a `.phtml` template, see the [JavaScript initialization]({{ page.baseurl }}/javascript-dev-guide/javascript/js_init.html) topic. + +If you need to enable the loading of default Magento JS components and widget initialization on a certain stage, add the following code in your JS script: + +```javascript +$(mage.apply); +``` + +{:.ref-header} +Related topics + +- [JavaScript resources in Magento]({{ page.baseurl }}/javascript-dev-guide/javascript/js-resources.html) +- [About AMD modules and RequireJS]({{ page.baseurl }}/javascript-dev-guide/javascript/js-resources.html) +- [JavaScript initialization]({{page.baseurl}}/javascript-dev-guide/javascript/js_init.html) +- [Advanced JavaScript bundling]({{page.baseurl}}/performance-best-practices/advanced-js-bundling.html) diff --git a/src/guides/v2.4/javascript-dev-guide/javascript/js-resources.md b/src/guides/v2.4/javascript-dev-guide/javascript/js-resources.md deleted file mode 120000 index 36a2cbdc893..00000000000 --- a/src/guides/v2.4/javascript-dev-guide/javascript/js-resources.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/javascript-dev-guide/javascript/js-resources.md \ No newline at end of file diff --git a/src/guides/v2.4/javascript-dev-guide/javascript/js-resources.md b/src/guides/v2.4/javascript-dev-guide/javascript/js-resources.md new file mode 100644 index 00000000000..d7ca977e84e --- /dev/null +++ b/src/guides/v2.4/javascript-dev-guide/javascript/js-resources.md @@ -0,0 +1,233 @@ +--- +group: javascript-developer-guide +subgroup: 1_Javascript +title: JavaScript resources in Commerce +redirect_to: https://developer.adobe.com/commerce/frontend-core/javascript/resources/ +status: migrated +--- + +## Overview {#m2devgde-js-resources-intro} + +This topic describes general concepts of how [JavaScript](https://glossary.magento.com/javascript) (JS) components are organized in Magento. + +To address the problem of slow page loads, we exclude JavaScript from the page headers and we added the ability to use the [RequireJS library](https://requirejs.org). + +RequireJS improves the perceived page load time because it allows JavaScript to load in the background; in particular, it enables asynchronous JavaScript loading. + +## Explore JavaScript resources {#m2devgde-js-resources-configuring} + +### JS resources location + +In Magento, you can find Javascript components on the following levels: + +* [Library](https://glossary.magento.com/library) level (`lib/web`). Resources located here are available in any place within Magento. +* Module level (`/view//web`). If the [module](https://glossary.magento.com/module) is enabled, resources added here are available in other modules and themes. +* Theme level, for a particular module (`/_/web`). Resources added here are available for [inheriting] themes. +* Theme level (`/web`). Resources added here are available for [inheriting]({{ page.baseurl }}/frontend-dev-guide/themes/theme-inherit.html) themes. + +{:.bs-callout-info} +The library level can only contain core Magento resources. Do not put custom JS files in the \`lib/web\` directory. + +### Specifying JS + +We recommend specifying JavaScript resources in the templates rather than in the [layout](https://glossary.magento.com/layout) updates, to ensure that the resources are available for body of a page. + +## Accessing JS resources + +JS resources are accessed using relative paths. + +**Example 1:** + +* File actual location: `app/code/Magento/ConfigurableProduct/view/frontend/web/js/configurable.js` +* File published to `pub/static`: `pub/static/frontend////Magento_ConfigurableProduct/js/configurable.js`. Here `` and `` are the currently applied in your instance [theme](https://glossary.magento.com/theme) and [locale](https://glossary.magento.com/locale). +* Called in script: + + ```javascript + require(["Magento_ConfigurableProduct/js/configurable"], function(Configurable){ + }); + ``` + +**Example 2:** + +* File actual location: `app/design/frontend/Magento/blank/Magento_Theme/web/js/theme.js` +* File published to `pub/static`: `pub/static/frontend/Magento/blank//Magento_Theme/js/theme.js` +* Called in script: + + ```javascript + require(["Magento_Theme/js/theme"], function(){ + }); + ``` + +**Example 3:** + +* File actual location: `lib/web/jquery.js` +* File published to `pub/static`: `pub/static/////jquery.js` +* Called in script: + + ```javascript + require(["jquery"], function($){ + }); + ``` + +Relative paths are also used in for [mapping and setting `paths` in requirejs-config.js configuration files]({{ page.baseurl }}/javascript-dev-guide/javascript/js-resources.html). + +## Dependencies between JavaScript resources {#m2devgde-js-resources-dependencies} + +To build a dependency on the third-party plugin, specify a [shim](https://requirejs.org/docs/api.html#config-shim) in the following configuration files: + +* `requirejs-config.js` + + ```javascript + var config = { + shim: { + "3-rd-party-plugin": ["jquery"] + } + }; + ``` + +* `.js` + + ```javascript + !(function($){ + // plugin code + // where $ == jQuery + })(jQuery); + ``` + +## RequireJS library + +### Including RequireJS {#m2devgde-js-resources-configrequirejs} + +To be available for the entire Magento instance, RequireJS library is included in the following layout files: + +* For the `adminhtml` [area]({{ page.baseurl }}/architecture/archi_perspectives/components/modules/mod_and_areas.html): + + [app/code/Magento/Backend/view/adminhtml/layout/default.xml]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Backend/view/adminhtml/layout/default.xml) + + ```xml + + + Admin + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + ``` + +* For the `frontend` area, the equivalent configuration is located in [`app/code/Magento/Theme/view/frontend/layout/default.xml`]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Theme/view/frontend/layout/default.xml). + +### Including third-party JavaScript libraries + +To include a 3rd party library and use it within the entire website (using the [Slick JS Library](https://github.com/kenwheeler/slick/) as an example): + +1. Download the library and copy `slick.min.js` to the `/web/js` folder + +1. Copy `slick.less` and `slick-theme.less` to the `/web/css/source` folder. Also add both files to `/web/css/source/_extend.less`. + + ```scss + @import "slick.less"; + @import "slick-theme.less"; + ``` + +1. Create or update the theme's `requirejs-config.js` file. + + `/requirejs-config.js` + + ```javascript + var config = { + paths: { + slick: 'js/slick.min' + }, + shim: { + slick: { + deps: ['jquery'] + } + } + }; + ``` + +After these steps, clear the cache and perform a static content deployment. + +#### Result + +We should now be able to use the Slick library, for example, on any list that we want to convert into a slider. + +```html +
      +
    • 1st Element
    • +
    • 2nd Element
    • +
    • 3rd Element
    • +
    • 4th Element
    • +
    • 5th Element
    • +
    • 6th Element
    • +
    • 7th Element
    • +
    • 8th Element
    • +
    + + +``` + +![Slick Slider]({{ site.baseurl }}/common/images/js/slick-slider-result.png) + +### Mapping JS resources {#m2devgde-js-resources-mapping} + +To make configurations more precise and specific to different modules and themes, `requirejs-config.js` files can be placed in different [locations](#m2devgde-js-resources-configuring) depending on your needs. + +All configurations are collected and executed in the following order: + +1. Library configurations. +1. Configurations at the module level. +1. Configurations at the theme module level for the ancestor themes. +1. Configurations at the theme module level for a current theme. +1. Configurations at the theme level for the ancestor themes. +1. Configurations at the theme level for the current theme. + +The `baseUrl` parameter for RequireJS is specified in the following files: + +* For the `frontend` area: [app/code/Magento/Theme/view/frontend/templates/page/js/require_js.phtml]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Theme/view/frontend/templates/page/js/require_js.phtml) +* For the `adminhtml` area: [app/code/Magento/Backend/view/adminhtml/templates/page/js/require_js.phtml]({{ site.mage2bloburl }}/{{ page.guide_version }}/app/code/Magento/Backend/view/adminhtml/templates/page/js/require_js.phtml) + +{:.ref-header} +Related reading + +* [About AMD modules and RequireJS]({{ page.baseurl }}/javascript-dev-guide/javascript/js-resources.html) +* [RequireJS library](https://requirejs.org) +* [inheriting]({{ page.baseurl }}/frontend-dev-guide/themes/theme-inherit.html) +* [shim](https://requirejs.org/docs/api.html#config-shim) diff --git a/src/guides/v2.4/javascript-dev-guide/javascript/js_debug.md b/src/guides/v2.4/javascript-dev-guide/javascript/js_debug.md deleted file mode 120000 index 9a060cbd035..00000000000 --- a/src/guides/v2.4/javascript-dev-guide/javascript/js_debug.md +++ /dev/null @@ -1 +0,0 @@ -../../../v2.3/javascript-dev-guide/javascript/js_debug.md \ No newline at end of file diff --git a/src/guides/v2.4/javascript-dev-guide/javascript/js_debug.md b/src/guides/v2.4/javascript-dev-guide/javascript/js_debug.md new file mode 100644 index 00000000000..bf2ec37af4f --- /dev/null +++ b/src/guides/v2.4/javascript-dev-guide/javascript/js_debug.md @@ -0,0 +1,72 @@ +--- +group: javascript-developer-guide +subgroup: 1_Javascript +title: Locate JavaScript components +functional_areas: + - Testing +redirect_to: https://developer.adobe.com/commerce/frontend-core/javascript/debug/ +status: migrated +--- + +## Overview {#js_debug_overview} + +This topic discusses how to define which [JavaScript](https://glossary.magento.com/javascript) components and widgets are used on a particular Magento store page. + +## Locate JS components: walkthrough {#locate_widget} + +To locate scripts used for a certain element: + +1. Open the store page in a browser, and locate the element\'s `class` or `id` using browser debugging tools, such as Firebug (Firefox) or Inspect Element (Chrome). +1. Select to view the page source. +1. Find the corresponding element in the page source and see if there are `data-mage-init` or `` tag + + > This is used to target either a CSS selector or `*`. If the CSS selector matches multiple HTML elements, the script will run for each matched HTML element. For `*`, no HTML element is selected and the script will run once with the HTML DOM as its target. This method can be implemented from anywhere in the codebase to target any HTML element. This is preferred when direct access to the HTML element is restricted, or when there is no target HTML element. + +Consider the example of adding a custom carousel JS: + +1. Copy the `.carousel.js` file to the `app/design/frontend///web/js//` directory. +1. Add your RequireJS module at `app/design/frontend///web/js/carousel.js`. + + ```javascript + define(['jquery',''], function($) + { + return function(config, element) + { + $(element).(config); + }; + }); + ``` + +1. Add the RequireJS config to the `app/design/frontend///requirejs-config.js` file. + + ```javascript + var config = { + map: { + '*': { + 'carousel': 'js/carousel', + '': 'js//.carousel' + } + } + }; + ``` + +You now have two options for specifying declarative notation: + +- Use the `data-mage-init` attribute to insert the carousel in a certain element: + + ```html +
    +
    Item 1
    + ... +
    Item n
    +
    + ``` + +- Use with ` + ``` + +#### Declarative notation using the `data-mage-init` attribute {#data_mage_init} + +Use the `data-mage-init` attribute to insert a JS component in a specified HTML element. The following example inserts a JS component in the `