diff --git a/10/umbraco-cms/SUMMARY.md b/10/umbraco-cms/SUMMARY.md index 8a50bd2ac84..3dd29de32ba 100644 --- a/10/umbraco-cms/SUMMARY.md +++ b/10/umbraco-cms/SUMMARY.md @@ -415,6 +415,7 @@ * [Add Google Authentication](tutorials/add-google-authentication.md) * [Add Microsoft Entra ID authentication (Members)](tutorials/add-microsoft-entra-id-authentication.md) * [The Starter Kit](tutorials/starter-kit/README.md) + * [Install the Starter Kit](tutorials/starter-kit/install-the-starter-kit.md) * [Lessons](tutorials/starter-kit/lessons/README.md) * [Customize the Starter Kit](tutorials/starter-kit/lessons/1-customize-the-starter-kit.md) * [Add a Blog Post Publication Date](tutorials/starter-kit/lessons/2-add-a-blog-post-publication-date/README.md) diff --git a/10/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md b/10/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md new file mode 100644 index 00000000000..9d27225f58a --- /dev/null +++ b/10/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md @@ -0,0 +1,62 @@ +# Install the Starter Kit + +Installing the Starter Kit provides a pre-built set of templates, content types, and demo content to explore or kickstart your Umbraco project. + +## Outcome + +You’ll have the Umbraco Starter Kit installed in your local project, ready to explore in the backoffice. This setup adds example content and templates, perfect for learning or quick prototyping. + +## Steps + +You can install the Starter Kit in two ways, depending on your preference: + +* [Option 1: Install via .NET CLI](#option-1-install-via-net-cli) +* [Option 2: Install via Visual Studio](#option-2-install-via-visual-studio) + +### Option 1: Install via .NET CLI + +To install the Starter Kit via the .Net CLI, follow these steps: + +1. Open a terminal in your Umbraco project folder. +2. Run the following command to add the Starter Kit package: + +```bash +dotnet add package Umbraco.TheStarterKit +``` + +3. Build the project: + +```bash +dotnet build +``` + +4. Run the project: + +```bash +dotnet run +``` + +5. Go to `https://localhost:xxxx/` to view the Starter Kit content. + +### Option 2: Install via Visual Studio + +To install the starter Kit via Visual Studio, follow these steps: + +1. Open your Umbraco project in Visual Studio. +2. Go to **Tools** -> **NuGet Package Manager** -> **Manage NuGet Packages for Solution...**. +3. Browse for **Umbraco.TheStarterKit**. +4. Select the appropriate version from the Version drop-down depending on the Umbraco version you are using. +5. Click **Install**. +6. Open the **.csproj** file to make sure the package reference is added: + +```xml + + + +``` + +## Summary + +You now have a fully functional Umbraco site with demo content, templates, and structure to explore. Use this setup as the foundation for the upcoming lessons in this Starter Kit tutorial. + +[Back to Lessons](./) diff --git a/13/umbraco-cms/SUMMARY.md b/13/umbraco-cms/SUMMARY.md index b87aef3d20a..68601383abc 100644 --- a/13/umbraco-cms/SUMMARY.md +++ b/13/umbraco-cms/SUMMARY.md @@ -433,6 +433,7 @@ * [Creating a Backoffice Tour](tutorials/creating-a-backoffice-tour.md) * [Creating Custom Database Tables with Entity Framework](tutorials/getting-started-with-entity-framework-core.md) * [The Starter Kit](tutorials/starter-kit/README.md) + * [Install the Starter Kit](tutorials/starter-kit/install-the-starter-kit.md) * [Lessons](tutorials/starter-kit/lessons/README.md) * [Customize the Starter Kit](tutorials/starter-kit/lessons/1-customize-the-starter-kit.md) * [Add a Blog Post Publication Date](tutorials/starter-kit/lessons/2-add-a-blog-post-publication-date/README.md) diff --git a/13/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md b/13/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md new file mode 100644 index 00000000000..9d27225f58a --- /dev/null +++ b/13/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md @@ -0,0 +1,62 @@ +# Install the Starter Kit + +Installing the Starter Kit provides a pre-built set of templates, content types, and demo content to explore or kickstart your Umbraco project. + +## Outcome + +You’ll have the Umbraco Starter Kit installed in your local project, ready to explore in the backoffice. This setup adds example content and templates, perfect for learning or quick prototyping. + +## Steps + +You can install the Starter Kit in two ways, depending on your preference: + +* [Option 1: Install via .NET CLI](#option-1-install-via-net-cli) +* [Option 2: Install via Visual Studio](#option-2-install-via-visual-studio) + +### Option 1: Install via .NET CLI + +To install the Starter Kit via the .Net CLI, follow these steps: + +1. Open a terminal in your Umbraco project folder. +2. Run the following command to add the Starter Kit package: + +```bash +dotnet add package Umbraco.TheStarterKit +``` + +3. Build the project: + +```bash +dotnet build +``` + +4. Run the project: + +```bash +dotnet run +``` + +5. Go to `https://localhost:xxxx/` to view the Starter Kit content. + +### Option 2: Install via Visual Studio + +To install the starter Kit via Visual Studio, follow these steps: + +1. Open your Umbraco project in Visual Studio. +2. Go to **Tools** -> **NuGet Package Manager** -> **Manage NuGet Packages for Solution...**. +3. Browse for **Umbraco.TheStarterKit**. +4. Select the appropriate version from the Version drop-down depending on the Umbraco version you are using. +5. Click **Install**. +6. Open the **.csproj** file to make sure the package reference is added: + +```xml + + + +``` + +## Summary + +You now have a fully functional Umbraco site with demo content, templates, and structure to explore. Use this setup as the foundation for the upcoming lessons in this Starter Kit tutorial. + +[Back to Lessons](./) diff --git a/14/umbraco-cms/SUMMARY.md b/14/umbraco-cms/SUMMARY.md index 60d47c88086..85a871e21a6 100644 --- a/14/umbraco-cms/SUMMARY.md +++ b/14/umbraco-cms/SUMMARY.md @@ -429,6 +429,7 @@ * [Add Microsoft Entra ID authentication (Members)](tutorials/add-microsoft-entra-id-authentication.md) * [Creating Custom Database Tables with Entity Framework](tutorials/getting-started-with-entity-framework-core.md) * [The Starter Kit](tutorials/starter-kit/README.md) + * [Install the Starter Kit](tutorials/starter-kit/install-the-starter-kit.md) * [Lessons](tutorials/starter-kit/lessons/README.md) * [Customize the Starter Kit](tutorials/starter-kit/lessons/1-customize-the-starter-kit.md) * [Add a Blog Post Publication Date](tutorials/starter-kit/lessons/2-add-a-blog-post-publication-date/README.md) diff --git a/14/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md b/14/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md new file mode 100644 index 00000000000..9d27225f58a --- /dev/null +++ b/14/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md @@ -0,0 +1,62 @@ +# Install the Starter Kit + +Installing the Starter Kit provides a pre-built set of templates, content types, and demo content to explore or kickstart your Umbraco project. + +## Outcome + +You’ll have the Umbraco Starter Kit installed in your local project, ready to explore in the backoffice. This setup adds example content and templates, perfect for learning or quick prototyping. + +## Steps + +You can install the Starter Kit in two ways, depending on your preference: + +* [Option 1: Install via .NET CLI](#option-1-install-via-net-cli) +* [Option 2: Install via Visual Studio](#option-2-install-via-visual-studio) + +### Option 1: Install via .NET CLI + +To install the Starter Kit via the .Net CLI, follow these steps: + +1. Open a terminal in your Umbraco project folder. +2. Run the following command to add the Starter Kit package: + +```bash +dotnet add package Umbraco.TheStarterKit +``` + +3. Build the project: + +```bash +dotnet build +``` + +4. Run the project: + +```bash +dotnet run +``` + +5. Go to `https://localhost:xxxx/` to view the Starter Kit content. + +### Option 2: Install via Visual Studio + +To install the starter Kit via Visual Studio, follow these steps: + +1. Open your Umbraco project in Visual Studio. +2. Go to **Tools** -> **NuGet Package Manager** -> **Manage NuGet Packages for Solution...**. +3. Browse for **Umbraco.TheStarterKit**. +4. Select the appropriate version from the Version drop-down depending on the Umbraco version you are using. +5. Click **Install**. +6. Open the **.csproj** file to make sure the package reference is added: + +```xml + + + +``` + +## Summary + +You now have a fully functional Umbraco site with demo content, templates, and structure to explore. Use this setup as the foundation for the upcoming lessons in this Starter Kit tutorial. + +[Back to Lessons](./) diff --git a/16/umbraco-cms/SUMMARY.md b/16/umbraco-cms/SUMMARY.md index c88d6451267..6e126e44b45 100644 --- a/16/umbraco-cms/SUMMARY.md +++ b/16/umbraco-cms/SUMMARY.md @@ -450,7 +450,9 @@ * [Add Google Authentication (Users)](tutorials/add-google-authentication.md) * [Add Microsoft Entra ID authentication (Members)](tutorials/add-microsoft-entra-id-authentication.md) * [Creating Custom Database Tables with Entity Framework](tutorials/getting-started-with-entity-framework-core.md) +* [Migrating Macros](tutorials/migrating-macros.md) * [The Starter Kit](tutorials/starter-kit/README.md) + * [Install the Starter Kit](tutorials/starter-kit/install-the-starter-kit.md) * [Lessons](tutorials/starter-kit/lessons/README.md) * [Customize the Starter Kit](tutorials/starter-kit/lessons/1-customize-the-starter-kit.md) * [Add a Blog Post Publication Date](tutorials/starter-kit/lessons/2-add-a-blog-post-publication-date/README.md) diff --git a/16/umbraco-cms/reference/configuration/maximumuploadsizesettings.md b/16/umbraco-cms/reference/configuration/maximumuploadsizesettings.md index b622d0a8e0d..6772d58ec62 100644 --- a/16/umbraco-cms/reference/configuration/maximumuploadsizesettings.md +++ b/16/umbraco-cms/reference/configuration/maximumuploadsizesettings.md @@ -2,11 +2,24 @@ description: "Information on how to change the default cap of upload size" --- -Umbraco does not touch the default maximum allowed content size of the different services, but you can configure this yourself. +# Maximum Upload Size Settings -# Using IIS +Learn how to change the upload size limit for your Umbraco site depending on your hosting setup: -To configure the default 28.6MB upload limit using IIS, we have to create a web.config file at the root of the project. It should contain this: +- [Using IIS](#using-iis) +- [Hosting on Umbraco Cloud](#hosting-on-umbraco-cloud) +- [Using Kestrel](#using-kestrel) + +By default, Umbraco does not restrict upload size. The limits are controlled by the hosting platform. + +## Using IIS + +The default upload limit in IIS is 30000000 bytes (~28.6 MB). The maximum value allowed is 4 GB. + +To increase the upload limit: + +1. Create or update the `web.config` file at the root of your project. +2. Add the following configuration: ```xml @@ -14,7 +27,7 @@ To configure the default 28.6MB upload limit using IIS, we have to create a web. - + @@ -22,20 +35,23 @@ To configure the default 28.6MB upload limit using IIS, we have to create a web. ``` -`maxAllowedContentLength` is specified in bytes, so this configuration would limit requests, and therefore uploaded files, to 2 megabytes +`maxAllowedContentLength` is specified in bytes. For example: + +- 2 MB = 2,000,000 bytes +- 100 MB = 100,000,000 bytes +- 4 GB = 4294967295 (maximum value allowed) -{% hint style="info" %} -**Are you hosting your site on Umbraco Cloud?** +## Hosting on Umbraco Cloud -Umbraco Cloud uses IIS for hosting. This means you need to add the setting in a `web.config` file for this to work on your Umbraco Cloud hosted sites. -The upload size limit is 500mb on Umbraco Cloud. -{% endhint %} +Umbraco Cloud uses IIS for hosting, so changes must be made in the `web.config` file as described above. The default upload limit on Umbraco Cloud is 500 MB. -# Using Kestrel +To customize this limit, adjust the `maxAllowedContentLength` value in your `web.config` file accordingly. -Runtime settings allow you to configure the `MaxRequestLength` and `MaxQueryStringLength` for kestrel. If you want to upload files larger than 28.6MB, then you have to configure these settings. If nothing is configured requests and query strings can only be the default size and smaller. +## Using Kestrel -An example of a configuration could look something like this: +Kestrel’s runtime settings allow you to configure `MaxRequestLength` and `MaxQueryStringLength`. If you want to upload files larger than 28.6MB, update these values in the `appsettings.json` file. + +Example configuration: ```json "Umbraco": { @@ -48,8 +64,13 @@ An example of a configuration could look something like this: } ``` -`MaxRequestLength` is specified in kilobytes. This configuration will limit requests, and therefore uploaded files, to 2 megabytes, and a maximum query string length of 90 characters. +- `MaxRequestLength` is specified in kilobytes. For example: + - 2000 KB = 2 MB + - 100000 KB = 100 MB +- `MaxQueryStringLength` sets the maximum number of characters in the query string. + +## External Server Configurations -## [Using Nginx (external)](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size) +### [Using Nginx (external)](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size) -## [Using apache (external)](https://httpd.apache.org/docs/2.2/mod/core.html#limitrequestbody) +### [Using apache (external)](https://httpd.apache.org/docs/2.2/mod/core.html#limitrequestbody) diff --git a/16/umbraco-cms/tutorials/images/block-backoffice.png b/16/umbraco-cms/tutorials/images/block-backoffice.png new file mode 100644 index 00000000000..01518c0b874 Binary files /dev/null and b/16/umbraco-cms/tutorials/images/block-backoffice.png differ diff --git a/16/umbraco-cms/tutorials/images/block-definition.png b/16/umbraco-cms/tutorials/images/block-definition.png new file mode 100644 index 00000000000..c83e4e10166 Binary files /dev/null and b/16/umbraco-cms/tutorials/images/block-definition.png differ diff --git a/16/umbraco-cms/tutorials/images/macro-backoffice.png b/16/umbraco-cms/tutorials/images/macro-backoffice.png new file mode 100644 index 00000000000..15fc33b62c1 Binary files /dev/null and b/16/umbraco-cms/tutorials/images/macro-backoffice.png differ diff --git a/16/umbraco-cms/tutorials/images/macro-parameters.png b/16/umbraco-cms/tutorials/images/macro-parameters.png new file mode 100644 index 00000000000..83b0d4840d9 Binary files /dev/null and b/16/umbraco-cms/tutorials/images/macro-parameters.png differ diff --git a/16/umbraco-cms/tutorials/images/macro-settings.png b/16/umbraco-cms/tutorials/images/macro-settings.png new file mode 100644 index 00000000000..86ef8da0b41 Binary files /dev/null and b/16/umbraco-cms/tutorials/images/macro-settings.png differ diff --git a/16/umbraco-cms/tutorials/images/macro-tinymce.png b/16/umbraco-cms/tutorials/images/macro-tinymce.png new file mode 100644 index 00000000000..d06bd3a49fe Binary files /dev/null and b/16/umbraco-cms/tutorials/images/macro-tinymce.png differ diff --git a/16/umbraco-cms/tutorials/images/rte-tiptap.png b/16/umbraco-cms/tutorials/images/rte-tiptap.png new file mode 100644 index 00000000000..b5c902118d0 Binary files /dev/null and b/16/umbraco-cms/tutorials/images/rte-tiptap.png differ diff --git a/16/umbraco-cms/tutorials/images/tiptap-blocks.png b/16/umbraco-cms/tutorials/images/tiptap-blocks.png new file mode 100644 index 00000000000..a3fbe6a044d Binary files /dev/null and b/16/umbraco-cms/tutorials/images/tiptap-blocks.png differ diff --git a/16/umbraco-cms/tutorials/migrating-macros.md b/16/umbraco-cms/tutorials/migrating-macros.md new file mode 100644 index 00000000000..fa2d8cc9492 --- /dev/null +++ b/16/umbraco-cms/tutorials/migrating-macros.md @@ -0,0 +1,943 @@ +--- +description: >- + Get started with developing a custom migration path for Macros to Blocks in the Rich Text Editors (RTE). +--- + +# Migrating Macros + +There are a multitude of options for migrating away from macros to use blocks in the Rich Text Editor instead. This article showcases a solution that lets you scan and then fix each macro one by one (or in batches). + +{% hint style="info" %} +This tutorial serves primarily as inspiration for how to migrate the macros in your Umbraco website. + +The code supplied should not be used in a production environment without proper testing. It can however be used to kickstart your custom solution. +{% endhint %} + +At the end of the article a few [other ways of running a larger migration is explained](#alternative-approaches). + +Through the following tutorial, a macro will be converted one-to-one to a block. Each macro parameter will match the same named property on an Element Type. Text strings will be used as values. + +If your migration deals with complex types, it's advised to create instances of the new data format and compare the old and new values. There might be more differences between the Parameter Type on the macro and the Property Editor/Data Type on the Element Type. + +{% hint style="info" %} +**Upgrading from Umbraco 13** + +As most people will be dealing with this migration when upgrading from Umbraco 13, that will be including in this tutorial. Specifically from 13.7.2 to 15.2.3. + +This will also work when migrating directly from 13 to 17. +{% endhint %} + +## Macro setup + +The following covers how to configure a macro. + +You need to: + +1. Define a macro and its parameters. + +![Backoffice configuration of the macro](./images/macro-settings.png) + +![Backoffice configuration of the macro parameters](./images/macro-parameters.png) + +2. Have a macro partial view that is used to render the macro on the website. It is also used in the backoffice rendering if enabled in the macro settings. + +```csharp +@inherits Umbraco.Cms.Web.Common.Macros.PartialViewMacroPage +
+ @Model.MacroParameters["title"] +
+``` + +![Backoffice view of the sample macro](./images/macro-backoffice.png) + +3. Enable the Richtext Editor (TinyMce) to allow the insertion of macros. + +![Enable Macro in TinyMce Toolbar](./images/macro-tinymce.png) + +Below you can find the relevant items used in our example: + +## Block setup + +The block setup is similar but with a few changes: + +1. Switch the property editor of the Richtext Data Type from TinyMce to Tiptap. + +![Richtext editor configuration](./images/rte-tiptap.png) + +2. Set up an Element Type with the same properties as the macro parameters. + +![Block element doctype definition](./images/block-definition.png) + +![Backoffice view of the sample block](./images/block-backoffice.png) + +3. Allow the Tiptap editor to insert blocks and configure the newly created block to be one of the options. + +![Tiptap block configuration](./images/tiptap-blocks.png) + +4. Transform the macro view into a web component for the backoffice custom view. + +```js +import { html, customElement, LitElement } from '@umbraco-cms/backoffice/external/lit'; +export class ExampleBlockCustomView extends LitElement { + + static properties = { + mode: { type: Object }, + content: { attribute: false }, + }; + + render() { + return html` +
+ ${this.content?.title} +
+ `; + } +} +export default ExampleBlockCustomView; +window.customElements.define('custom-view', ExampleBlockCustomView); +``` + +5. Register the web component. + +```json +{ + "$schema": "../../umbraco-package-schema.json", + "name": "My.CustomViewPackage", + "version": "0.1.0", + "extensions": [ + { + "type": "blockEditorCustomView", + "alias": "my.blockEditorCustomView.ctaBlock", + "name": "Custom ctaBlock view", + "element": "/App_Plugins/CustomBlockViews/ctaBlock.js", + "forContentTypeAlias": "ctaBlock" + } + ] +} +``` + +6. Transform the macro view in to a Richtext block view. + +```csharp +@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage +@{ + var blockValue = Model.Content as CtaBlock; +} + +``` + +## The core conversion + +However you retrieve the relevant data you have with a raw string or a `RichTextEditorValue` that you need to convert. The following looks at a sample value. + +### MacroValue + +```json +{ + "blocks": { + "contentData": [ + ], + "settingsData": [ + ] + }, + "markup": "

Text before macro

\n

 

\n\n

 

\n

Text After Macro

" +} +``` + +The value holds JSON with: + +- Empty block information. +- The markup with the actual RTE value and the inline macro data. +- The macro consists off: + - The tag used as a placeholder where to render its output. + - An alias to find the correct render/update logic. + - Two parameters with values entered by the user. + +The first step in transforming the data is taking the JSON value and deserializing it into a `RichTextEditorValue`. This way you have a class to work with to store the updated data in. + +You can deserialize it yourself, or you can use the `RichTextPropertyEditorHelper` to do the job for you. It will also try to catch non-JSON values that have not been migrated to the new format. + +#### Usage of RichtextPropertyEditorHelper + +```csharp +RichTextPropertyEditorHelper.TryParseRichTextEditorValue(originalValue, _jsonSerializer, _logger, out var richTextEditorValue); +``` + +The next step is to get all (relevant) macro tags out of the markup. One way of doing this is through a regular expression. + +The sample regex does not take into account that the order of parameters, which might be different from tag to tag. One way of dealing with this is to not take out the parameters in the first match. Instead move each parameter to a separate regex that runs on the first match. + +#### Example regex + +```csharp +// this regex does not take into account that the parameters might be in a different order. +private static readonly Regex MacroTagRegex = new( + @"<\?UMBRACO_MACRO\s+macroAlias=['""](?.+)['""]\s+title=['""](?.+)['""]\s+youtubeVideoId=['""](?<youtubeVideoId>.+)['""]\s*/>", + RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline); +``` + +Every macro conversion will be different based on which parameters get matched to which properties on the block. As such it is advised to create a converter per macro that deals with the specific data handling. + +Now that the relevant information has been extracted, it's time to decide what the data should look like. + +```json +{ + "markup" : "<p>Text before macro</p>\n<p> </p>\n<umb-rte-block-inline data-content-key=\"958ab4b7-213c-4576-a4d7-30b31e3e5e83\"></umb-rte-block-inline>\n<p> </p>\n<p>Text After Macro</p>", + "blocks" : { + "contentData" : [ { + "contentTypeKey" : "190f8990-3720-4a00-bd48-4e10dde08a5b", + "udi" : null, + "key" : "958ab4b7-213c-4576-a4d7-30b31e3e5e83", + "values" : [ { + "editorAlias" : "Umbraco.TextBox", + "culture" : null, + "segment" : null, + "alias" : "title", + "value" : "CLICK HERE" + }, { + "editorAlias" : "Umbraco.TextBox", + "culture" : null, + "segment" : null, + "alias" : "youtubeVideoId", + "value" : "xvFZjo5PgG0" + } ] + } ], + "settingsData" : [ ], + "expose" : [ { + "contentKey" : "958ab4b7-213c-4576-a4d7-30b31e3e5e83", + "culture" : null, + "segment" : null + } ], + "Layout" : { + "Umbraco.RichText" : [ { + "contentUdi" : null, + "settingsUdi" : null, + "contentKey" : "958ab4b7-213c-4576-a4d7-30b31e3e5e83", + "settingsKey" : null + } ] + } + } +} +``` + +Note that: + +- The markup still contains a tag placeholder but this time with only the `data-content-key`. +- That key references an item inside the blocks `contentData` that holds the values of the properties and a reference to the Element Type set up earlier. +- The same key is added to the `expose` collection and the Rich text `layout` collection. +- This means that if you have multiple blocks in the same value, more `contentData` items will be added in the blocks collection. They will be referenced in the `expose and `Layout accordingly. + +The example below shows the full handling of an invariant macro to an invariant block. + +This migrator starts and ends with a raw (serialized) string. If you choose a different path, you might have to change the code to work with the supplied value types instead. + +{% code title="/MacroMigrator/CtaButtonMacroMigrator.cs" %} + +```csharp +using System.Text.RegularExpressions; +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Models.Blocks; +using Umbraco.Cms.Core.PropertyEditors; +using Umbraco.Cms.Core.Serialization; +using Umbraco.Cms.Core.Services; +using Umbraco.Cms.Core.Strings; + +namespace MacrosThirteenToFifteen.MacroMigrator; + +public class CtaButtonMacroMigrator : IMacroMigrator +{ + private readonly IJsonSerializer _jsonSerializer; + private readonly ILogger<CtaButtonMacroMigrator> _logger; + private readonly IShortStringHelper _shortStringHelper; + private readonly IContentTypeService _contentTypeService; + private const string BlockContentTypeAlias = "ctaBlock"; + + private Guid? _blockContentTypeKey = null; + + // Lets "cache" the contentTypeKey based on the BlockContentTypeAlias as it should not change between the first and subsequent uses. + public Guid TargetBlockContentTypeKey + { + get + { + _blockContentTypeKey ??= _contentTypeService.Get(BlockContentTypeAlias)?.Key ?? Guid.Empty; + return _blockContentTypeKey.Value; + } + } + + public string MacroAlias => "ctaButtonMacro"; + + // this regex does not take into account that the parameters might be in a different order. + private static readonly Regex MacroTagRegex = new( + @"<\?UMBRACO_MACRO\s+macroAlias=['""](?<macroAlias>.+)['""]\s+title=['""](?<title>.+)['""]\s+youtubeVideoId=['""](?<youtubeVideoId>.+)['""]\s*/>", + RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline); + + public CtaButtonMacroMigrator( + IJsonSerializer jsonSerializer, + ILogger<CtaButtonMacroMigrator> logger, + IShortStringHelper shortStringHelper, + IContentTypeService contentTypeService) + { + _jsonSerializer = jsonSerializer; + _logger = logger; + _shortStringHelper = shortStringHelper; + _contentTypeService = contentTypeService; + } + + public string Process(string originalValue) + { + if (TargetBlockContentTypeKey == Guid.Empty) + { + // can't process as the doctype is not present + return originalValue; + } + + // this migrator assumes that the conversion from old RTE values to new (markup being wrapped in json) has already been completed. + RichTextPropertyEditorHelper.TryParseRichTextEditorValue(originalValue, _jsonSerializer, _logger, + out var richTextEditorValue); + + if (richTextEditorValue == null) + { + return originalValue; + } + + // collect the values by using a group regex, read around possible downsides at the regex definition + var macroMatches = MacroTagRegex.Matches(richTextEditorValue.Markup); + foreach (Match? macroMatch in macroMatches) + { + if (macroMatch == null) + { + continue; + } + + // every macro needs its values assigned to a comparable blockValue + var blockKey = Guid.NewGuid(); + richTextEditorValue.Blocks ??= new RichTextBlockValue(); + // add the block to the inline contentData + richTextEditorValue.Blocks.ContentData.Add(new BlockItemData + { + Key = blockKey, + ContentTypeKey = TargetBlockContentTypeKey, + ContentTypeAlias = BlockContentTypeAlias, + Values = new List<BlockPropertyValue> + { + CreateInvariantTextboxBlockPropertyValue("title", macroMatch.Groups["title"].Value), + CreateInvariantTextboxBlockPropertyValue("youtubeVideoId", macroMatch.Groups["youtubeVideoId"].Value) + } + }); + // expose the contentblock as an invariant + richTextEditorValue.Blocks.Expose.Add(new BlockItemVariation + { + ContentKey = blockKey, + Culture = null, + Segment = null, + }); + // setup the layout + var layoutItem = new RichTextBlockLayoutItem(blockKey); + var layoutList = richTextEditorValue.Blocks.Layout.ContainsKey(Constants.PropertyEditors.Aliases.RichText) + ? richTextEditorValue.Blocks.Layout[Constants.PropertyEditors.Aliases.RichText].ToList() + : new List<IBlockLayoutItem>(); + layoutList.Add(layoutItem); + richTextEditorValue.Blocks.Layout[Constants.PropertyEditors.Aliases.RichText] = layoutList; + + // now that the data is converted into a block, replace the macro tag by a block tag + richTextEditorValue.Markup = richTextEditorValue.Markup.ReplaceFirst(macroMatch.Value, $"<umb-rte-block-inline data-content-key=\"{blockKey}\"></umb-rte-block-inline>"); + } + + return RichTextPropertyEditorHelper.SerializeRichTextEditorValue(richTextEditorValue, _jsonSerializer); + } + + private BlockPropertyValue CreateInvariantTextboxBlockPropertyValue(string alias, string value) + => new BlockPropertyValue + { + Alias = alias, + Culture = null, + Segment = null, + Value = value, + // The propertyType here is just a dummy to allow us to save the propertyEditorAlias + PropertyType = new PropertyType(_shortStringHelper,Constants.PropertyEditors.Aliases.TextBox, ValueStorageType.Nvarchar) + }; +} +``` +{% endcode %} + +## Retrieving the data + +In this setup, the values are received straight from the database using custom Data Transfer Objects (DTOs). This allows for getting get the data needed. This example does not take nested data into account. For an example on how to to do this, [check out one of the alternatives](#alternative-approaches) at the bottom of this article. + +This example also only fetches the active (draft/current) version of the affected data to reduce processing time. + +## Putting the updated value back + +Once the data is transformed it needs to be stored. Custom SQL is used to perform this. + +If you need to perform validation on the updated value, you either have to use a higher level services (`IContentValidationService`/`IContentEditingService`) or use the `RichTextPropertyValueEditor.Validate()` method. Because this example fetches the current data and overwrites it, the old value will not show up in the version history of the affected node. If you do need this to happen then it is advised to use the `IContentValidationService` or `IContentService` instead. + +Now that you have a converter you need a way to call the correct one depending on the macros found in an RTE value. For this, create a `MacroMigrationService` that holds the following method: + +```csharp +public void Migrate(IEnumerable<int> PropertyDataIds) +{ + using IScope scope = _scopeProvider.CreateScope(autoComplete: false); + + // get the necessary data from the database, just the Id and propertyValue. + var itemsToProcess = scope.Database.Fetch<MacroPropertyDto>(@" +select pd.id as propertyDataTypeId, + pd.textValue as PropertyValue +from umbracoPropertyData pd +where pd.id in (@0)",PropertyDataIds); + + foreach (var item in itemsToProcess) + { + // a value might have multiple values + var macroMatches = MacroTagRegex.Matches(item.PropertyValue); + foreach (Match macroMatch in macroMatches) + { + // for every macro find a matching migrator and run it + var migrator = _migrators.FirstOrDefault(m => m.MacroAlias == macroMatch.Groups["macroAlias"].Value); + if (migrator == null) + { + continue; + } + item.PropertyValue = migrator.Process(item.PropertyValue); + } + + // save the value back to the database + scope.Database.Execute(@" +update umbracoPropertyData +set textValue = @0 +where id = @1" + ,item.PropertyValue, item.PropertyDataTypeId); + } + + scope.Complete(); +} +``` + +The method above takes in an `IEnumerable<int>`. How to get those will be determined later. + +To access the database, you need a scope from the scope provider. + +The next step is to fetch the value from the database using our custom `MacroPropertyDto` and a custom SQL query. + +For each of the items found, run a regular expression that matches on the tag and alias. + +The next step is to look in the list of migrators to find the correct one based on the alias found in the match. Then this needs to run. + +When all macros have been converted for a given property, the updated value is saved in the database. + +To get all the property IDs, the following `Report` method is used. The method returns a paginated report of all items that need to be migrated. It includes relevant document data and which migrator will run. This allows you test and debug specific values and migrators. + +```csharp +public MacroMigrationReport Report(int page, int pageSize) +{ + using IScope scope = _scopeProvider.CreateScope(autoComplete: true); + + // page query all propertyValues in DB that are of type Umbraco.RichText with the textValue like '%<?UMBRACO_MACRO%/>%' + var count = scope.Database.ExecuteScalar<int>(CountQuery); + var pagedItems = scope.Database.Fetch<MacroPropertyDto>(page, pageSize, FetchQuery); + + var report = new MacroMigrationReport + { + Page = page, + PageSize = pageSize, + TotalItems = count, + }; + + // for the paged items + foreach (var macroPropertyDto in pagedItems) + { + var reportItem = new MacroMigrationReportItem + { + PropertyDataId = macroPropertyDto.PropertyDataTypeId, + ContentName = macroPropertyDto.ContentName, + ContentType = macroPropertyDto.ContentTypeAlias, + PropertyAlias = macroPropertyDto.propertyTypeAlias, + }; + + // add converterInformation, create an entry for each occurance of the UMBRACO_MACRO tag + var macroMatches = MacroTagRegex.Matches(macroPropertyDto.PropertyValue); + foreach (Match macroMatch in macroMatches) + { + var macroInfo = new MacroInfo + { + MacroAlias = macroMatch.Groups["macroAlias"].Value + }; + var migrator = _migrators.FirstOrDefault(m => m.MacroAlias == macroInfo.MacroAlias); + macroInfo.MacroConverter = migrator?.GetType().Name; + macroInfo.TargetBlockContentTypeKey = migrator?.TargetBlockContentTypeKey == Guid.Empty + ? null : + migrator?.TargetBlockContentTypeKey; + reportItem.FoundMacros.Add(macroInfo); + } + report.Items.Add(reportItem); + } + return report; +} +``` + +The last steps are to: + +1. Register the services and their interfaces into the DI container using a composer. +2. Create a management API controller to call the service. + +A full list of files including the full version of the `MacroMigrationService` and its dependencies can be found below. Once all of this is in place you will have some Swagger docs available at `/umbraco/swagger/index.html?urls.primaryName=Macro+Migrations+Api+v1` to test the migrators. + +<details> + +<summary>Full MacroMigrator System</summary> + +#### CtaButtonMacroMigrator.cs + +```csharp +using System.Text.RegularExpressions; +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Models.Blocks; +using Umbraco.Cms.Core.PropertyEditors; +using Umbraco.Cms.Core.Serialization; +using Umbraco.Cms.Core.Services; +using Umbraco.Cms.Core.Strings; + +namespace MacrosThirteenToFifteen.MacroMigrator; + +public class CtaButtonMacroMigrator : IMacroMigrator +{ + private readonly IJsonSerializer _jsonSerializer; + private readonly ILogger<CtaButtonMacroMigrator> _logger; + private readonly IShortStringHelper _shortStringHelper; + private readonly IContentTypeService _contentTypeService; + private const string BlockContentTypeAlias = "ctaBlock"; + + private Guid? _blockContentTypeKey = null; + + // Lets "cache" the contentTypeKey based on the BlockContentTypeAlias as it should not change between the first and subsequent uses. + public Guid TargetBlockContentTypeKey + { + get + { + _blockContentTypeKey ??= _contentTypeService.Get(BlockContentTypeAlias)?.Key ?? Guid.Empty; + return _blockContentTypeKey.Value; + } + } + + public string MacroAlias => "ctaButtonMacro"; + + // this regex does not take into account that the parameters might be in a different order. + private static readonly Regex MacroTagRegex = new( + @"<\?UMBRACO_MACRO\s+macroAlias=['""](?<macroAlias>.+)['""]\s+title=['""](?<title>.+)['""]\s+youtubeVideoId=['""](?<youtubeVideoId>.+)['""]\s*/>", + RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline); + + public CtaButtonMacroMigrator( + IJsonSerializer jsonSerializer, + ILogger<CtaButtonMacroMigrator> logger, + IShortStringHelper shortStringHelper, + IContentTypeService contentTypeService) + { + _jsonSerializer = jsonSerializer; + _logger = logger; + _shortStringHelper = shortStringHelper; + _contentTypeService = contentTypeService; + } + + public string Process(string originalValue) + { + if (TargetBlockContentTypeKey == Guid.Empty) + { + // can't process as the doctype is not present + return originalValue; + } + + // this migrator assumes that the conversion from old RTE values to new (markup being wrapped in json) has already been completed. + RichTextPropertyEditorHelper.TryParseRichTextEditorValue(originalValue, _jsonSerializer, _logger, + out var richTextEditorValue); + + if (richTextEditorValue == null) + { + return originalValue; + } + + // collect the values by using a group regex, read around possible downsides at the regex definition + var macroMatches = MacroTagRegex.Matches(richTextEditorValue.Markup); + foreach (Match? macroMatch in macroMatches) + { + if (macroMatch == null) + { + continue; + } + + // every macro needs its values assigned to a comparable blockValue + var blockKey = Guid.NewGuid(); + richTextEditorValue.Blocks ??= new RichTextBlockValue(); + // add the block to the inline contentData + richTextEditorValue.Blocks.ContentData.Add(new BlockItemData + { + Key = blockKey, + ContentTypeKey = TargetBlockContentTypeKey, + ContentTypeAlias = BlockContentTypeAlias, + Values = new List<BlockPropertyValue> + { + CreateInvariantTextboxBlockPropertyValue("title", macroMatch.Groups["title"].Value), + CreateInvariantTextboxBlockPropertyValue("youtubeVideoId", macroMatch.Groups["youtubeVideoId"].Value) + } + }); + // expose the contentblock as an invariant + richTextEditorValue.Blocks.Expose.Add(new BlockItemVariation + { + ContentKey = blockKey, + Culture = null, + Segment = null, + }); + // setup the layout + var layoutItem = new RichTextBlockLayoutItem(blockKey); + var layoutList = richTextEditorValue.Blocks.Layout.ContainsKey(Constants.PropertyEditors.Aliases.RichText) + ? richTextEditorValue.Blocks.Layout[Constants.PropertyEditors.Aliases.RichText].ToList() + : new List<IBlockLayoutItem>(); + layoutList.Add(layoutItem); + richTextEditorValue.Blocks.Layout[Constants.PropertyEditors.Aliases.RichText] = layoutList; + + // now that the data is converted into a block, replace the macro tag by a block tag + richTextEditorValue.Markup = richTextEditorValue.Markup.ReplaceFirst(macroMatch.Value, $"<umb-rte-block-inline data-content-key=\"{blockKey}\"></umb-rte-block-inline>"); + } + + return _jsonSerializer.Serialize(richTextEditorValue); + } + + private BlockPropertyValue CreateInvariantTextboxBlockPropertyValue(string alias, string value) + => new BlockPropertyValue + { + Alias = alias, + Culture = null, + Segment = null, + Value = value, + // The propertyType here is just a dummy to allow us to save the propertyEditorAlias + PropertyType = new PropertyType(_shortStringHelper,Constants.PropertyEditors.Aliases.TextBox, ValueStorageType.Nvarchar) + }; +} +``` + +#### IMacroMigrationService.cs + +```csharp +namespace MacrosThirteenToFifteen.MacroMigrator; + +public interface IMacroMigrationService +{ + /// <summary> + /// Reports which Current Property values for umbraco.richtext editors contain a macro tag + /// The summary will also report whether a compatible migrator is available + /// </summary> + /// <param name="page"></param> + /// <param name="pageSize"></param> + /// <returns></returns> + MacroMigrationReport Report(int page, int pageSize); + + /// <summary> + /// Runs compatible IMacroMigrators on the requested Property values + /// </summary> + /// <param name="PropertyDataIds"></param> + void Migrate(IEnumerable<int> PropertyDataIds); +} +``` + +#### IMacroMigrator.cs + +```csharp +namespace MacrosThirteenToFifteen.MacroMigrator; + +public interface IMacroMigrator +{ + /// <summary> + /// Used to match a migrator to a certain type of macro + /// </summary> + string MacroAlias { get; } + + Guid TargetBlockContentTypeKey { get; } + + /// <summary> + /// Migrates parts of the original value that contains a compatible macro tag into a block tag and block content + /// </summary> + /// <param name="originalValue">The value to migrate</param> + /// <returns></returns> + string Process(string originalValue); +} +``` + +#### MacroController.cs + +```csharp +using Asp.Versioning; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; +using Umbraco.Cms.Api.Common.Attributes; +using Umbraco.Cms.Api.Common.Filters; +using Umbraco.Cms.Api.Management.Controllers; +using Umbraco.Cms.Api.Management.OpenApi; +using Umbraco.Cms.Core; +using Umbraco.Cms.Web.Common.Authorization; + +namespace MacrosThirteenToFifteen.MacroMigrator; + +[ApiController] +[ApiVersion("1.0")] +[MapToApi("macro-migrations-api-v1")] +[Authorize(Policy = AuthorizationPolicies.BackOfficeAccess)] +[JsonOptionsName(Constants.JsonOptionsNames.BackOffice)] +[Route("api/v{version:apiVersion}/macro-migrations")] +public class MacroController : ManagementApiControllerBase +{ + private readonly IMacroMigrationService _macroMigrationService; + + public MacroController(IMacroMigrationService macroMigrationService) + { + _macroMigrationService = macroMigrationService; + } + + [HttpGet] + public IActionResult Overview(int page = 1, int pageSize = 10) + { + return Ok(_macroMigrationService.Report(page, pageSize)); + } + + [HttpPost] + public IActionResult Process(List<int> propertyValueIds) + { + _macroMigrationService.Migrate(propertyValueIds); + return Ok(); + } +} + +public class MacroMigrationsSecurityRequirementsOperationFilter : BackOfficeSecurityRequirementsOperationFilterBase +{ + protected override string ApiName => "macro-migrations-api-v1"; +} + +public class MacroMigrationsConfigureSwaggerGenOptions : IConfigureOptions<SwaggerGenOptions> +{ + public void Configure(SwaggerGenOptions options) + { + options.SwaggerDoc("macro-migrations-api-v1", new OpenApiInfo { Title = "Macro Migrations Api v1", Version = "1.0" }); + options.OperationFilter<MacroMigrationsSecurityRequirementsOperationFilter>(); + } +} +``` + +#### MacroMigrationComposer.cs + +```csharp +using Umbraco.Cms.Core.Composing; + +namespace MacrosThirteenToFifteen.MacroMigrator; + +public class MacroMigrationComposer : IComposer +{ + public void Compose(IUmbracoBuilder builder) + { + builder.Services.ConfigureOptions<MacroMigrationsConfigureSwaggerGenOptions>(); + builder.Services.AddUnique<IMacroMigrationService, MacroMigrationService>(); + builder.Services.AddSingleton<IMacroMigrator, CtaButtonMacroMigrator>(); + + builder.Services.AddTransient<IList<IMacroMigrator>>(p => p.GetServices<IMacroMigrator>().ToList()); + } +} +``` + +#### MacroMigrationService.cs + +```csharp +using System.Text.RegularExpressions; +using Umbraco.Cms.Infrastructure.Scoping; + + +namespace MacrosThirteenToFifteen.MacroMigrator; + +public class MacroMigrationService : IMacroMigrationService +{ + private readonly IScopeProvider _scopeProvider; + private readonly IList<IMacroMigrator> _migrators; + + private static readonly Regex MacroTagRegex = new( + @"<\?UMBRACO_MACRO\s+macroAlias=\\""(?<macroAlias>[a-zA-Z0-9]+)\\"".+/>", + RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline); + + private const string ReportBaseQuery = @" +from umbracoPropertyData pd +inner join cmsPropertyType pt on pt.id = pd.propertyTypeId +inner join cmsContentType ct on ct.nodeId = pt.contentTypeId +inner join umbracoContentVersion cv on cv.id = pd.versionId +inner join umbracoDataType dt on dt.nodeId = pt.dataTypeId +where + cv.current = 1 + AND pd.textValue like '%<?UMBRACO_MACRO%/>%' + AND dt.propertyEditorAlias = 'Umbraco.RichText' +ORDER BY pd.id"; + + private readonly string FetchQuery = @" +select pd.id as propertyDataTypeId, + pt.Alias as propertyTypeAlias, + ct.alias as contentTypeAlias, + cv.text as contentName, + pd.textValue as propertyValue, + dt.propertyEditorAlias as editorAlias, + pt.* +" + ReportBaseQuery; + + private readonly string CountQuery = @" +select Count(*) +" + ReportBaseQuery; + + public MacroMigrationService( + IScopeProvider scopeProvider, + IList<IMacroMigrator> migrators) + { + _scopeProvider = scopeProvider; + _migrators = migrators; + } + + public MacroMigrationReport Report(int page, int pageSize) + { + using IScope scope = _scopeProvider.CreateScope(autoComplete: true); + + // page query all propertyValues in DB that are of type Umbraco.RichText with the textValue like '%<?UMBRACO_MACRO%/>%' + var count = scope.Database.ExecuteScalar<int>(CountQuery); + var pagedItems = scope.Database.Fetch<MacroPropertyDto>(page, pageSize, FetchQuery); + + var report = new MacroMigrationReport + { + Page = page, + PageSize = pageSize, + TotalItems = count, + }; + + // for the paged items + foreach (var macroPropertyDto in pagedItems) + { + var reportItem = new MacroMigrationReportItem + { + PropertyDataId = macroPropertyDto.PropertyDataTypeId, + ContentName = macroPropertyDto.ContentName, + ContentType = macroPropertyDto.ContentTypeAlias, + PropertyAlias = macroPropertyDto.propertyTypeAlias, + }; + + // add converterInformation, create an entry for each occurance of the UMBRACO_MACRO tag + var macroMatches = MacroTagRegex.Matches(macroPropertyDto.PropertyValue); + foreach (Match macroMatch in macroMatches) + { + var macroInfo = new MacroInfo + { + MacroAlias = macroMatch.Groups["macroAlias"].Value + }; + var migrator = _migrators.FirstOrDefault(m => m.MacroAlias == macroInfo.MacroAlias); + macroInfo.MacroConverter = migrator?.GetType().Name; + macroInfo.TargetBlockContentTypeKey = migrator?.TargetBlockContentTypeKey == Guid.Empty + ? null : + migrator?.TargetBlockContentTypeKey; + reportItem.FoundMacros.Add(macroInfo); + } + report.Items.Add(reportItem); + } + return report; + } + + public void Migrate(IEnumerable<int> PropertyDataIds) + { + using IScope scope = _scopeProvider.CreateScope(autoComplete: true); + + // get the necessary data from the Database, just the Id and propertyValue. + var itemsToProcess = scope.Database.Fetch<MacroPropertyDto>(@" +select pd.id as propertyDataTypeId, + pd.textValue as PropertyValue +from umbracoPropertyData pd +where pd.id in (@0)",PropertyDataIds); + + foreach (var item in itemsToProcess) + { + // a value might have multiple values + var macroMatches = MacroTagRegex.Matches(item.PropertyValue); + foreach (Match macroMatch in macroMatches) + { + // for every macro find a matching migrator and run it + var migrator = _migrators.FirstOrDefault(m => m.MacroAlias == macroMatch.Groups["macroAlias"].Value); + if (migrator == null) + { + continue; + } + item.PropertyValue = migrator.Process(item.PropertyValue); + } + + // save the value back to the Database + scope.Database.Execute(@" +update umbracoPropertyData +set textValue = @0 +where id = @1" + ,item.PropertyValue, item.PropertyDataTypeId); + } + } +} + +public class MacroMigrationReport() +{ + public int Page { get; set; } + public int PageSize { get; set; } + public int TotalItems { get; set; } + public ICollection<MacroMigrationReportItem> Items { get; set; } = new List<MacroMigrationReportItem>(); +} + +public class MacroMigrationReportItem +{ + public int PropertyDataId { get; set; } + public string ContentName { get; set; } + public string ContentType { get; set; } + public string PropertyAlias { get; set; } + public ICollection<MacroInfo> FoundMacros { get; set; } = new List<MacroInfo>(); +} + +public class MacroInfo +{ + public string MacroAlias { get; set; } + public string? MacroConverter { get; set; } + + public Guid? TargetBlockContentTypeKey { get; set; } +} + +public class MacroPropertyDto +{ + public int PropertyDataTypeId { get; set; } + public string ContentName { get; set; } + public string ContentTypeAlias { get; set; } + public string propertyTypeAlias { get; set; } + public string PropertyValue { get; set; } +} + +public class PropertyValueDto +{ + public int PropertyDataTypeId { get; set; } + public string PropertyValue { get; set; } +} +``` + +</details> + +## Alternative approaches + +### Using Umbraco migrations + +If you want the conversion to happen automatically as you upgrade, you can define a [custom migration](https://docs.umbraco.com/umbraco-cms/extending/database) + +For an example that takes into account RTE values inside of block properties, have a look at our [local links migration](https://github.com/umbraco/Umbraco-CMS/blob/release/15.3/src/Umbraco.Infrastructure/Migrations/Upgrade/V_15_0_0/ConvertLocalLinks.cs) and its related [processors](https://github.com/umbraco/Umbraco-CMS/tree/release/15.3/src/Umbraco.Infrastructure/Migrations/Upgrade/V_15_0_0/LocalLinks) + +The proposed conversion logic should be adaptable to the system used in the local links migration. + +### Using Umbraco Deploy + +If you are using Umbraco Deploy in your solution, you can use its infrastructure to run the migration logic defined above. + +To make this work, update the alias of the rich text editor to something else. On import, a migration is triggered. See the [prevalue example](https://github.com/umbraco/Umbraco.Deploy.Contrib/blob/v15/dev/src/Umbraco.Deploy.Contrib/Migrators/Legacy/Content/PrevalueArtifactMigrator.cs) in the `Umbraco.Deploy.Contrib` package. + +Create a migrator to handle any value that is of the special alias and convert them into a property with the updated value. For an example see the matching [prevalue property type migrator](https://github.com/umbraco/Umbraco.Deploy.Contrib/blob/v15/dev/src/Umbraco.Deploy.Contrib/Migrators/Legacy/Content/PrevaluePropertyTypeMigratorBase.cs). diff --git a/16/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md b/16/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md new file mode 100644 index 00000000000..9d27225f58a --- /dev/null +++ b/16/umbraco-cms/tutorials/starter-kit/install-the-starter-kit.md @@ -0,0 +1,62 @@ +# Install the Starter Kit + +Installing the Starter Kit provides a pre-built set of templates, content types, and demo content to explore or kickstart your Umbraco project. + +## Outcome + +You’ll have the Umbraco Starter Kit installed in your local project, ready to explore in the backoffice. This setup adds example content and templates, perfect for learning or quick prototyping. + +## Steps + +You can install the Starter Kit in two ways, depending on your preference: + +* [Option 1: Install via .NET CLI](#option-1-install-via-net-cli) +* [Option 2: Install via Visual Studio](#option-2-install-via-visual-studio) + +### Option 1: Install via .NET CLI + +To install the Starter Kit via the .Net CLI, follow these steps: + +1. Open a terminal in your Umbraco project folder. +2. Run the following command to add the Starter Kit package: + +```bash +dotnet add package Umbraco.TheStarterKit +``` + +3. Build the project: + +```bash +dotnet build +``` + +4. Run the project: + +```bash +dotnet run +``` + +5. Go to `https://localhost:xxxx/` to view the Starter Kit content. + +### Option 2: Install via Visual Studio + +To install the starter Kit via Visual Studio, follow these steps: + +1. Open your Umbraco project in Visual Studio. +2. Go to **Tools** -> **NuGet Package Manager** -> **Manage NuGet Packages for Solution...**. +3. Browse for **Umbraco.TheStarterKit**. +4. Select the appropriate version from the Version drop-down depending on the Umbraco version you are using. +5. Click **Install**. +6. Open the **.csproj** file to make sure the package reference is added: + +```xml +<ItemGroup> +<PackageReference Include="Umbraco.TheStarterKit" Version="xx.x.x" /> +</ItemGroup> +``` + +## Summary + +You now have a fully functional Umbraco site with demo content, templates, and structure to explore. Use this setup as the foundation for the upcoming lessons in this Starter Kit tutorial. + +[Back to Lessons](./) diff --git a/16/umbraco-commerce/.gitbook/assets/storefront_swagger.json b/16/umbraco-commerce/.gitbook/assets/storefront_swagger.json index 9f10a21f5fb..f685fa0f066 100644 --- a/16/umbraco-commerce/.gitbook/assets/storefront_swagger.json +++ b/16/umbraco-commerce/.gitbook/assets/storefront_swagger.json @@ -13,6 +13,7 @@ ], "summary": "Starts the hosted payment process", "description": "Redirects to the given Orders selected payment gateway for payment processing.<br /><br />If in `Framed` mode should be redirected to as normal, or if in `Framed` mode, the endpoint URL should be launched in a WebView/iframe and developers should watch for changes in the URL to detect the outcome of the transaction. Final endpoint URLs will be one of `{endpointUrl}/completed`, `{endpointUrl}/canceled` or `{endpointUrl}/errored`. If launched in an iframe from a web context, you can also register a `message` event handler to get notified of the final status. Messages will be in the format `UC:{orderId}:{token}:{status}`", + "operationId": "pay", "parameters": [ { "name": "orderId", @@ -23,7 +24,7 @@ "type": "string", "format": "uuid" }, - "example": "a3140924-7f3a-4625-a378-81f05b6b9166" + "example": "29c220ef-4837-4ece-9c28-1b782252c5c7" }, { "name": "token", @@ -33,32 +34,25 @@ "schema": { "type": "string" }, - "example": "ca6f5d62-32de-4849-bbf4-643d6f945a8d" + "example": "c1642d47-5908-4181-acdf-348b5d4e0be2" } ], "responses": { "200": { - "description": "Success" - }, - "400": { - "description": "Bad Request", + "description": "OK", "content": { - "application/json": { + "text/html": { "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "string" } } } }, + "400": { + "description": "Bad Request" + }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } } } @@ -70,6 +64,7 @@ ], "summary": "Initialize a hosted checkout flow", "description": "Initialization prepares the order for checkout and produces a token to be passed to the `/pay` endpoint.", + "operationId": "token", "parameters": [ { "name": "Store", @@ -81,7 +76,7 @@ }, "examples": { "Entity ID": { - "value": "b78a4683-e2f2-475d-b924-a52a8b302246" + "value": "df35cde2-f261-4849-a30e-427900a4e659" }, "Entity Alias": { "value": "blendid" @@ -97,7 +92,7 @@ "type": "string", "format": "uuid" }, - "example": "1ca12483-eec6-414f-bfcc-2dd2430cac4c" + "example": "7e6ba006-3b01-44ee-966a-12a39742f204" }, { "name": "Origin", @@ -127,34 +122,24 @@ ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CheckoutTokenResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/CheckoutTokenDto" + } + ] } } } }, "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Bad Request" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } } } @@ -166,6 +151,7 @@ ], "summary": "Confirms an inline checkout flow", "description": "Updates the given Orders transaction info with the supplied details and transitions the order from a `open` to a `finalized` state", + "operationId": "confirm", "parameters": [ { "name": "Api-Key", @@ -186,7 +172,7 @@ }, "examples": { "Entity ID": { - "value": "5883cc2a-34d1-493f-aee7-5112210f7345" + "value": "5bc52d3e-5a05-41ec-adbe-2603c939b2d6" }, "Entity Alias": { "value": "blendid" @@ -202,49 +188,49 @@ "type": "string", "format": "uuid" }, - "example": "087492f4-4ff2-41fd-aebd-df1dcd198c3c" + "example": "c84c693c-4119-40f9-8af0-709ed0e8f908" }, { - "name": "expand", + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" + "Return single field": { + "value": "totalprice" }, - "Expand specific property": { - "value": "currency" + "Return multiple fields": { + "value": "orderlines,totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } @@ -253,38 +239,68 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CheckoutConfirmRequestDto" + "oneOf": [ + { + "$ref": "#/components/schemas/CheckoutConfirmRequestDto" + } + ] } } } }, "responses": { "200": { - "description": "Success", + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CheckoutConfirmResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/CheckoutConfirmDto" + } + ] } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } }, "404": { "description": "Not Found", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } @@ -299,6 +315,7 @@ ], "summary": "Initialize an inline checkout flow", "description": "With inline checkout flow it's the developers responsibility to capture the transaction and confirm the payment via the `/confirm` endpoint. The selected payment methods setting are returned to ease payment gateway configuation, along with details of any meta data the payment method expects to be captured.", + "operationId": "initialize", "parameters": [ { "name": "Api-Key", @@ -319,7 +336,7 @@ }, "examples": { "Entity ID": { - "value": "85087853-2a64-4aa9-8591-d76fab9adfd2" + "value": "a7872bad-bd9a-4e8d-bfd9-14c18f96faac" }, "Entity Alias": { "value": "blendid" @@ -335,119 +352,40 @@ "type": "string", "format": "uuid" }, - "example": "b69092b3-4609-4640-b283-b76f44dd8dd2" - } - ], - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CheckoutInitializeResponseDto" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - } - } - }, - "/umbraco/delivery/api/v1/content/item/{id}/variant": { - "get": { - "tags": [ - "Content" - ], - "summary": "Gets a multi-variants content", - "description": "By default the variants property editor from Umbraco Commerce will only return attribute information with a product node to save on excessive payload sizes. The variants endpoint can be called to dynamically fetch an attibute combinations content only when it is requested.", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "The ID of the content item that has an Umbraco Commerce variants property editor defined on it", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - }, - "example": "3658dedd-98e1-4d3f-b7a5-9bd37144a16f" - }, - { - "name": "attribute", - "in": "query", - "description": "The attribute combination of the variant to return", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - }, - "example": [ - "key1:value1", - "key2:value2" - ] + "example": "6f1c5403-4985-4c31-8474-2fed2872a77b" } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductVariantItemDto" + "oneOf": [ + { + "$ref": "#/components/schemas/CheckoutInitializedDto" + } + ] } } } }, "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Bad Request" }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } } } }, - "/umbraco/commerce/storefront/api/v1/countries": { + "/umbraco/commerce/storefront/api/v1/checkout/{orderId}/paymentmethods": { "get": { "tags": [ - "Country" + "Checkout" ], - "summary": "Gets all the Countries in a Store", + "summary": "Get valid Payment Methods and their fees for a given Order", + "operationId": "getValidPaymentMethodsByOrderId", "parameters": [ { "name": "Api-Key", @@ -468,7 +406,7 @@ }, "examples": { "Entity ID": { - "value": "aaaee3a8-262b-468a-9850-cd3070f96276" + "value": "161cfe9a-3cda-45da-9442-0c7344d4a1a2" }, "Entity Alias": { "value": "blendid" @@ -480,10 +418,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "3939a415-ce07-462b-ae10-7e965e2e8e5c" + "example": "38b88086-55ce-4669-95f8-87cd20bdd520" }, { "name": "Billing-Country", @@ -494,7 +431,7 @@ }, "examples": { "Entity ID": { - "value": "b8fa37cd-d163-43dc-bf66-c0da215a4434" + "value": "b23b3219-fb67-4543-8e4e-ef3ccd5cf2ea" }, "Entity Alias": { "value": "us" @@ -510,7 +447,7 @@ }, "examples": { "Entity ID": { - "value": "2afb85ce-71c5-4463-9433-d49ae13a2ed6" + "value": "24057a2c-3f8c-45b7-8339-cdd7f961e95d" }, "Entity Alias": { "value": "az" @@ -526,7 +463,7 @@ }, "examples": { "Entity ID": { - "value": "9037c567-8494-462f-aca9-cafd14b2b8f3" + "value": "fe16a464-4959-458b-9bb0-471845920b41" }, "Entity Alias": { "value": "us" @@ -542,7 +479,7 @@ }, "examples": { "Entity ID": { - "value": "c0ffff68-4173-4d97-ad29-99634f67fb97" + "value": "08683b60-8ace-4848-b93c-c2b2e64bd773" }, "Entity Alias": { "value": "az" @@ -558,7 +495,7 @@ }, "examples": { "Entity ID": { - "value": "46009e99-ef4e-4a28-8c8b-81f1a048244e" + "value": "058a5aba-8b49-417e-85b1-89e8a006b1fa" }, "Entity Alias": { "value": "or" @@ -574,7 +511,7 @@ }, "examples": { "Entity ID": { - "value": "a9e6b7d6-6259-4d5d-816c-4cb6ebe06295" + "value": "d561c0f8-6ee9-42a4-9ac5-585875c77e92" }, "Entity Alias": { "value": "or" @@ -597,21 +534,38 @@ "schema": { "type": "string" }, - "example": "cust_b1a82255-000f-4954-9f04-393258d7b5f4" + "example": "cust_965bfedf-1027-4eb5-97ce-da27c3be1150" }, { - "name": "filter", + "name": "orderId", + "in": "path", + "description": "The ID of the order", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + }, + "example": "e8aeb70e-a152-45a7-aa0b-751e34db8476" + }, + { + "name": "fields", "in": "query", - "description": "Filter the returned list of items", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Return all results": { + "Return all fields": { "value": " " }, - "Return items allowed in a given country": { - "value": "allowedInCountry:GB" + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, @@ -636,63 +590,39 @@ "value": "paymentmethod[taxclass]" } } - }, - { - "name": "fields", - "in": "query", - "description": "Limit the properties returned in the response", - "schema": { - "type": "string" - }, - "examples": { - "Return all fields": { - "value": " " - }, - "Return single field": { - "value": "totalprice" - }, - "Return multiple fields": { - "value": "orderlines,totalprice" - }, - "Return nested fields": { - "value": "orderlines[sku,description]" - } - } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/PaymentMethodWithFeeDto" + } + ] } } } } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } } } }, - "/umbraco/commerce/storefront/api/v1/country/{countryIdOrAlias}/region/{regionIdOrAlias}/paymentmethods": { + "/umbraco/commerce/storefront/api/v1/checkout/{orderId}/shippingmethods": { "get": { "tags": [ - "Country" + "Checkout" ], - "summary": "Gets the Payment Methods allowed in a Region", + "summary": "Get valid Shipping Methods and their rates for a given Order", + "operationId": "getValidShippingMethodsByOrderId", "parameters": [ { "name": "Api-Key", @@ -713,7 +643,7 @@ }, "examples": { "Entity ID": { - "value": "87aff01f-8d57-4198-a7e1-b951f2f0b637" + "value": "61b74774-9e4e-4e2b-af20-c4f80b04f286" }, "Entity Alias": { "value": "blendid" @@ -725,10 +655,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "4cb7359e-aabd-474b-af9f-3842f141b46e" + "example": "ea0e09bb-0623-4a10-b9a1-509bb6722620" }, { "name": "Billing-Country", @@ -739,7 +668,7 @@ }, "examples": { "Entity ID": { - "value": "114305df-42cb-4b30-ad05-0609f035dadb" + "value": "913ca621-6e47-4bae-a93d-e89d44a14fd4" }, "Entity Alias": { "value": "us" @@ -755,7 +684,7 @@ }, "examples": { "Entity ID": { - "value": "624c58a0-e840-4510-808c-8c17126e841d" + "value": "c700c3e5-746c-4a0e-a949-2f72626360e7" }, "Entity Alias": { "value": "az" @@ -771,7 +700,7 @@ }, "examples": { "Entity ID": { - "value": "5a98bf85-c567-493e-ad2d-0c2a42e93729" + "value": "d9878aad-827a-486a-9358-a8b2fffce938" }, "Entity Alias": { "value": "us" @@ -787,7 +716,7 @@ }, "examples": { "Entity ID": { - "value": "c537ad6d-c21b-46d9-a0f9-d3af308fb3e1" + "value": "6ed2a4c0-9e23-4fc2-881e-556e026ae48f" }, "Entity Alias": { "value": "az" @@ -803,7 +732,7 @@ }, "examples": { "Entity ID": { - "value": "37da8bae-7033-4277-9950-e413d8558a54" + "value": "ecb55f95-0bd5-4548-935c-a57e2405b5c0" }, "Entity Alias": { "value": "or" @@ -819,7 +748,7 @@ }, "examples": { "Entity ID": { - "value": "c53b28d6-8cca-402e-9dec-5c7fd6683d8c" + "value": "4890254d-6eb8-4294-b65e-01dfe98206e4" }, "Entity Alias": { "value": "or" @@ -842,45 +771,44 @@ "schema": { "type": "string" }, - "example": "cust_83a3d6aa-f5f8-4abb-827d-82286bdb6373" + "example": "cust_55efd49c-78c8-49c6-b800-de18c4df7ad5" }, { - "name": "countryIdOrAlias", + "name": "orderId", "in": "path", - "description": "The ID or the alias of the country resource", + "description": "The ID of the order", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" }, - "examples": { - "Entity ID": { - "value": "aaba32bf-030a-4698-9cc9-4331dcba8fa2" - }, - "Entity Alias": { - "value": "alias" - } - } + "example": "89974928-7470-4dfb-b75a-5a76e51691ae" }, { - "name": "regionIdOrAlias", - "in": "path", - "description": "The ID or the alias of the region resource", - "required": true, + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Entity ID": { - "value": "b3ea7224-dd02-4d20-8dc4-98704474751b" + "Return all fields": { + "value": " " }, - "Entity Alias": { - "value": "alias" - } - } - }, - { - "name": "expand", - "in": "query", + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } + }, + { + "name": "expand", + "in": "query", "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" @@ -899,63 +827,162 @@ "value": "paymentmethod[taxclass]" } } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingMethodWithRatesDto" + } + ] + } + } + } + } + }, + "404": { + "description": "Not Found" + } + } + } + }, + "/umbraco/delivery/api/v1/content/item/{id}/variant": { + "get": { + "tags": [ + "Content" + ], + "summary": "Gets a multi-variants content", + "description": "By default the variants property editor from Umbraco Commerce will only return attribute information with a product node to save on excessive payload sizes. The variants endpoint can be called to dynamically fetch an attibute combinations content only when it is requested.", + "operationId": "getVariant", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "The ID of the content item that has an Umbraco Commerce variants property editor defined on it", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + }, + "example": "fd77b9ea-5b7b-4b94-aab8-3fcdad7efada" }, { - "name": "fields", + "name": "attribute", "in": "query", - "description": "Limit the properties returned in the response", + "description": "The attribute combination of the variant to return", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "example": [ + "key1:value1", + "key2:value2" + ] + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response. Refer to [the documentation](https://docs.umbraco.com/umbraco-cms/reference/content-delivery-api#query-parameters) for more details on this.", "schema": { "type": "string" }, "examples": { - "Return all fields": { - "value": " " + "Expand none": { + "value": "" }, - "Return single field": { - "value": "totalprice" + "Expand all": { + "value": "all" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "property:alias1" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand specific properties": { + "value": "property:alias1,alias2" + } + } + }, + { + "name": "Accept-Language", + "in": "header", + "description": "Defines the language to return. Use this when querying language variant content items.", + "schema": { + "type": "string" + }, + "examples": { + "Default": { + "value": "" + }, + "English culture": { + "value": "en-us" } } + }, + { + "name": "Api-Key", + "in": "header", + "description": "API key specified through configuration to authorize access to the API.", + "schema": { + "type": "string" + } + }, + { + "name": "Preview", + "in": "header", + "description": "Whether to request draft content.", + "schema": { + "type": "boolean" + } + }, + { + "name": "Start-Item", + "in": "header", + "description": "URL segment or GUID of a root content item.", + "schema": { + "type": "string" + } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethodResponseDto" - } + "oneOf": [ + { + "$ref": "#/components/schemas/ProductVariantItemDto" + } + ] } } } }, + "400": { + "description": "Bad Request" + }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } } } }, - "/umbraco/commerce/storefront/api/v1/country/{countryIdOrAlias}/region/{regionIdOrAlias}/shippingmethods": { + "/umbraco/commerce/storefront/api/v1/countries": { "get": { "tags": [ "Country" ], - "summary": "Gets the Shipping Methods allowed in a Region", + "summary": "Gets all the Countries in a Store", + "operationId": "searchCountries", "parameters": [ { "name": "Api-Key", @@ -976,7 +1003,7 @@ }, "examples": { "Entity ID": { - "value": "4de1f409-1e95-4955-9339-032646ea1b03" + "value": "b805d672-dbef-40a1-84da-681b3b517dda" }, "Entity Alias": { "value": "blendid" @@ -988,10 +1015,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "92150ab9-0c6e-4133-8117-91ddbba71057" + "example": "00cc7aae-85da-4ac2-861b-551dde08254d" }, { "name": "Billing-Country", @@ -1002,7 +1028,7 @@ }, "examples": { "Entity ID": { - "value": "026a73c1-92e6-4328-a12b-456244721209" + "value": "615fa89d-748d-45d4-8e64-82c040131121" }, "Entity Alias": { "value": "us" @@ -1018,7 +1044,7 @@ }, "examples": { "Entity ID": { - "value": "f7ac8f88-7793-49a8-9b2f-e2675ec0b363" + "value": "c7911176-93db-4ffd-b562-f40f33092010" }, "Entity Alias": { "value": "az" @@ -1034,7 +1060,7 @@ }, "examples": { "Entity ID": { - "value": "090721b8-14c1-4b85-b6fd-17e6232ba537" + "value": "81f39f8e-5934-4319-ae80-be66b59338dc" }, "Entity Alias": { "value": "us" @@ -1050,7 +1076,7 @@ }, "examples": { "Entity ID": { - "value": "139b8d9d-9dee-46f1-9482-20f52b07aff2" + "value": "ff760c2f-2662-4647-afed-4299dd396b49" }, "Entity Alias": { "value": "az" @@ -1066,7 +1092,7 @@ }, "examples": { "Entity ID": { - "value": "77657d45-7470-4442-8f6b-5c8e5b2b6e18" + "value": "62be54c6-00d7-462a-b362-8b88f80b65ec" }, "Entity Alias": { "value": "or" @@ -1082,7 +1108,7 @@ }, "examples": { "Entity ID": { - "value": "df4703de-e9cd-4396-bcaa-63f274f94d95" + "value": "af4121f9-d024-461d-8291-2ee6bfa65f60" }, "Entity Alias": { "value": "or" @@ -1105,39 +1131,43 @@ "schema": { "type": "string" }, - "example": "cust_d628ebd1-829c-4dab-bc14-77ba67caa22a" + "example": "cust_0701d208-da68-4800-a276-2011709fd722" }, { - "name": "countryIdOrAlias", - "in": "path", - "description": "The ID or the alias of the country resource", - "required": true, + "name": "filter", + "in": "query", + "description": "Filter the returned list of items", "schema": { "type": "string" }, "examples": { - "Entity ID": { - "value": "f1ba917a-2065-432d-a902-41ecd349a088" + "Return all results": { + "value": " " }, - "Entity Alias": { - "value": "alias" + "Return items allowed in a given country": { + "value": "allowedInCountry:GB" } } }, { - "name": "regionIdOrAlias", - "in": "path", - "description": "The ID or the alias of the region resource", - "required": true, + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Entity ID": { - "value": "740debc9-d547-492d-abab-ec9ade822a37" + "Return all fields": { + "value": " " }, - "Entity Alias": { - "value": "alias" + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, @@ -1162,63 +1192,39 @@ "value": "paymentmethod[taxclass]" } } - }, - { - "name": "fields", - "in": "query", - "description": "Limit the properties returned in the response", - "schema": { - "type": "string" - }, - "examples": { - "Return all fields": { - "value": " " - }, - "Return single field": { - "value": "totalprice" - }, - "Return multiple fields": { - "value": "orderlines,totalprice" - }, - "Return nested fields": { - "value": "orderlines[sku,description]" - } - } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethodResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/CountryDto" + } + ] } } } } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } } } }, - "/umbraco/commerce/storefront/api/v1/country/{idOrAlias}": { + "/umbraco/commerce/storefront/api/v1/country/{countryIdOrAlias}/region/{regionIdOrAlias}/paymentmethods": { "get": { "tags": [ "Country" ], - "summary": "Gets a Country by ID or Alias", + "summary": "Gets the Payment Methods allowed in a Region", + "operationId": "getPaymentMethodsByCountryIdOrAlias", "parameters": [ { "name": "Api-Key", @@ -1239,7 +1245,7 @@ }, "examples": { "Entity ID": { - "value": "39dd640b-fe70-45b7-94fc-bfa3d01785df" + "value": "0e13277c-0fa4-4bcb-bd99-2b250e451191" }, "Entity Alias": { "value": "blendid" @@ -1251,10 +1257,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "5f6f4cf6-8a75-464c-9f91-2956b470058e" + "example": "79e3eb6d-ed3e-400b-94fa-43c466cf290e" }, { "name": "Billing-Country", @@ -1265,7 +1270,7 @@ }, "examples": { "Entity ID": { - "value": "1caff81a-a59b-45af-9879-7ba5871cb536" + "value": "41c4b8f7-af34-471e-b349-2b5db568aba0" }, "Entity Alias": { "value": "us" @@ -1281,7 +1286,7 @@ }, "examples": { "Entity ID": { - "value": "8fe3ad9f-eead-4e1f-8556-52b590917cdd" + "value": "4bcec082-cc97-4d4d-85c5-c46d23aaa1aa" }, "Entity Alias": { "value": "az" @@ -1297,7 +1302,7 @@ }, "examples": { "Entity ID": { - "value": "8007ae4b-8a48-477c-beec-11577ce6bd9e" + "value": "287d11bd-6c35-4acb-9b67-6586777f3c1d" }, "Entity Alias": { "value": "us" @@ -1313,7 +1318,7 @@ }, "examples": { "Entity ID": { - "value": "374d22a3-501c-47f4-bcc3-d22addaccabe" + "value": "e6a0da82-2403-4d9e-8135-215a32332308" }, "Entity Alias": { "value": "az" @@ -1329,7 +1334,7 @@ }, "examples": { "Entity ID": { - "value": "0c0b0b74-ea44-40e0-9894-c75b98968eb3" + "value": "2bed7e9a-5d9a-4e4f-9539-5f85a11a772f" }, "Entity Alias": { "value": "or" @@ -1345,7 +1350,7 @@ }, "examples": { "Entity ID": { - "value": "36ef13cc-b9db-49b8-a5d1-2e26afebd456" + "value": "8ad0ff66-b6a7-4b71-921e-b656581b4723" }, "Entity Alias": { "value": "or" @@ -1368,19 +1373,23 @@ "schema": { "type": "string" }, - "example": "cust_72224c93-8b0d-4e60-bb6f-e8f4923422d0" + "example": "cust_94377964-f740-47a0-9954-7740399303f9" }, { - "name": "idOrAlias", + "name": "countryIdOrAlias", "in": "path", - "description": "The ID or the alias of the given resource", + "description": "The ID or the alias of the country resource", "required": true, "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + } + ] }, "examples": { "Entity ID": { - "value": "7540acb8-4650-46d2-9ae9-988d611a4da2" + "value": "4a8e39fa-837f-47fc-afb1-68ba4389069f" }, "Entity Alias": { "value": "alias" @@ -1388,24 +1397,23 @@ } }, { - "name": "expand", - "in": "query", - "description": "Defines the properties that should be expanded in the response", + "name": "regionIdOrAlias", + "in": "path", + "description": "The ID or the alias of the region resource", + "required": true, "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + } + ] }, "examples": { - "Expand none": { - "value": " " - }, - "Expand prices": { - "value": "$price" - }, - "Expand specific property": { - "value": "currency" + "Entity ID": { + "value": "e8f5d367-1aaf-4c5c-a25a-d69829126a08" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Entity Alias": { + "value": "alias" } } }, @@ -1430,38 +1438,62 @@ "value": "orderlines[sku,description]" } } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CountryResponseDto" + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/PaymentMethodDto" + } + ] + } } } } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } - } + }, + "deprecated": true } }, - "/umbraco/commerce/storefront/api/v1/country/{idOrAlias}/currencies": { + "/umbraco/commerce/storefront/api/v1/country/{countryIdOrAlias}/region/{regionIdOrAlias}/shippingmethods": { "get": { "tags": [ "Country" ], - "summary": "Gets the Currencies allowed in a Country", + "summary": "Gets the Shipping Methods allowed in a Region", + "operationId": "getShippingMethodsByCountryIdOrAlias", "parameters": [ { "name": "Api-Key", @@ -1482,7 +1514,7 @@ }, "examples": { "Entity ID": { - "value": "ce04e0b5-8b72-484f-9d80-a58551cd61d9" + "value": "ed07f085-5b92-467a-86a6-6b907a08a430" }, "Entity Alias": { "value": "blendid" @@ -1494,10 +1526,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "338b1ced-378a-4c68-a1bc-b71e5ea6a80c" + "example": "3a8e8369-8215-416f-a17c-b00333e28030" }, { "name": "Billing-Country", @@ -1508,7 +1539,7 @@ }, "examples": { "Entity ID": { - "value": "c92f83d1-9148-44d1-a296-6abbe1dc0999" + "value": "bcc5eb56-5ee6-4257-ad7a-34edc5fd314b" }, "Entity Alias": { "value": "us" @@ -1524,7 +1555,7 @@ }, "examples": { "Entity ID": { - "value": "b07917b5-70d8-40fc-b35c-83a24fbda8e9" + "value": "7d2f65c9-4c4d-4a87-a64a-35dbe70caab0" }, "Entity Alias": { "value": "az" @@ -1540,7 +1571,7 @@ }, "examples": { "Entity ID": { - "value": "505d8dbf-7d46-4493-8989-cd6a972af6df" + "value": "eccc92d8-393c-458f-be5e-267e6f7dba8c" }, "Entity Alias": { "value": "us" @@ -1556,7 +1587,7 @@ }, "examples": { "Entity ID": { - "value": "2dbaafcc-8b5c-454f-8c4c-e8b67d8761d1" + "value": "12631597-4411-46a2-a1ec-1a9b9111bc5a" }, "Entity Alias": { "value": "az" @@ -1572,7 +1603,7 @@ }, "examples": { "Entity ID": { - "value": "3f4cf70c-a93d-434f-940e-c9a92aa47094" + "value": "17bfeba6-b04f-40de-bd71-2ae4529afea6" }, "Entity Alias": { "value": "or" @@ -1588,7 +1619,7 @@ }, "examples": { "Entity ID": { - "value": "2ab654d8-f683-48b7-b45d-2d3828805fce" + "value": "e9c8228f-7129-45ca-bdb7-030418578d28" }, "Entity Alias": { "value": "or" @@ -1611,19 +1642,23 @@ "schema": { "type": "string" }, - "example": "cust_b93c2d78-1a50-4980-ab6e-718d6b13acc1" + "example": "cust_bc93f7f7-fe91-4ef6-985a-48da72e73df4" }, { - "name": "idOrAlias", + "name": "countryIdOrAlias", "in": "path", - "description": "The ID or the alias of the given resource", + "description": "The ID or the alias of the country resource", "required": true, "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + } + ] }, "examples": { "Entity ID": { - "value": "1a4ad2a7-349b-47b2-bf4c-a1d7e1b8f063" + "value": "4d6f17d6-d6ab-4e62-a663-bdea0bf99280" }, "Entity Alias": { "value": "alias" @@ -1631,24 +1666,23 @@ } }, { - "name": "expand", - "in": "query", - "description": "Defines the properties that should be expanded in the response", + "name": "regionIdOrAlias", + "in": "path", + "description": "The ID or the alias of the region resource", + "required": true, "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + } + ] }, "examples": { - "Expand none": { - "value": " " - }, - "Expand prices": { - "value": "$price" - }, - "Expand specific property": { - "value": "currency" + "Entity ID": { + "value": "479ee86a-3791-442c-a850-3af0d5b806fa" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Entity Alias": { + "value": "alias" } } }, @@ -1673,41 +1707,62 @@ "value": "orderlines[sku,description]" } } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/CurrencyResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingMethodDto" + } + ] } } } } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } - } + }, + "deprecated": true } }, - "/umbraco/commerce/storefront/api/v1/country/{idOrAlias}/paymentmethods": { + "/umbraco/commerce/storefront/api/v1/country/{idOrAlias}": { "get": { "tags": [ "Country" ], - "summary": "Gets the Payment Methods allowed in a Country", + "summary": "Gets a Country by ID or Alias", + "operationId": "getCountryByIdOrAlias", "parameters": [ { "name": "Api-Key", @@ -1728,7 +1783,7 @@ }, "examples": { "Entity ID": { - "value": "7bdc7462-97ae-425c-88ec-9fb5e479fc61" + "value": "179590c4-25b0-47e6-8c2c-2bdc2a3bf9c6" }, "Entity Alias": { "value": "blendid" @@ -1740,10 +1795,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "3cf3c75e-777e-470d-af12-811bfb56decc" + "example": "5081a5fd-228e-4d10-abac-da74a5d47fb8" }, { "name": "Billing-Country", @@ -1754,7 +1808,7 @@ }, "examples": { "Entity ID": { - "value": "033fb3f7-9633-4b0d-9f76-47eec8b4e0db" + "value": "524ad232-424c-4cbf-8b7b-4aab26048ecf" }, "Entity Alias": { "value": "us" @@ -1770,7 +1824,7 @@ }, "examples": { "Entity ID": { - "value": "2f0afc87-b993-49db-8dc2-3aa87691026e" + "value": "7331417d-96e0-49cc-962d-edbb87b48870" }, "Entity Alias": { "value": "az" @@ -1786,7 +1840,7 @@ }, "examples": { "Entity ID": { - "value": "be7376a4-135b-4211-965e-dd6b3a6da86a" + "value": "446f7a3c-3ab5-4b27-a420-2bac9d9b2203" }, "Entity Alias": { "value": "us" @@ -1802,7 +1856,7 @@ }, "examples": { "Entity ID": { - "value": "9950a82a-9e7f-4d16-a444-9edbc9088ef5" + "value": "39a26454-2cc4-45cd-9469-f3f0a0750eb6" }, "Entity Alias": { "value": "az" @@ -1818,7 +1872,7 @@ }, "examples": { "Entity ID": { - "value": "ac4e2892-ea4a-401f-b749-39bb971f1f94" + "value": "188cf8e3-d9a8-4b26-975c-0f0a5ad2df53" }, "Entity Alias": { "value": "or" @@ -1834,7 +1888,7 @@ }, "examples": { "Entity ID": { - "value": "64ea1e7f-c69a-4535-a1ce-3dade8d33cc6" + "value": "35f9ac70-926f-447c-97a3-795ac011b0cf" }, "Entity Alias": { "value": "or" @@ -1857,7 +1911,7 @@ "schema": { "type": "string" }, - "example": "cust_21d95084-2a0b-45e8-a619-9b2ed3e89eee" + "example": "cust_38632648-2b6b-4beb-ae1b-9f1a4e2659b9" }, { "name": "idOrAlias", @@ -1865,11 +1919,15 @@ "description": "The ID or the alias of the given resource", "required": true, "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + } + ] }, "examples": { "Entity ID": { - "value": "80b94f39-9697-44e6-8ecb-1212ba074910" + "value": "3bebf017-2676-4989-bf5e-1989b77b9be6" }, "Entity Alias": { "value": "alias" @@ -1877,83 +1935,78 @@ } }, { - "name": "expand", + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" + "Return single field": { + "value": "totalprice" }, - "Expand specific property": { - "value": "currency" + "Return multiple fields": { + "value": "orderlines,totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethodResponseDto" - } + "oneOf": [ + { + "$ref": "#/components/schemas/CountryDto" + } + ] } } } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } } } }, - "/umbraco/commerce/storefront/api/v1/country/{idOrAlias}/shippingmethods": { + "/umbraco/commerce/storefront/api/v1/country/{idOrAlias}/currencies": { "get": { "tags": [ "Country" ], - "summary": "Gets the Shipping Methods allowed in a Country", + "summary": "Gets the Currencies allowed in a Country", + "operationId": "getCurrenciesByCountryIdOrAlias", "parameters": [ { "name": "Api-Key", @@ -1974,7 +2027,7 @@ }, "examples": { "Entity ID": { - "value": "b16d136e-5b57-4812-b231-ad95fc473142" + "value": "639c9c43-82d2-4223-81f6-9e18282a5d39" }, "Entity Alias": { "value": "blendid" @@ -1986,10 +2039,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "691fa037-f27c-45a5-ac80-cb5c9ad5e6d5" + "example": "5b14853d-8e51-4bde-8bd6-e1e9c06981ef" }, { "name": "Billing-Country", @@ -2000,7 +2052,7 @@ }, "examples": { "Entity ID": { - "value": "46d309bb-258e-415b-a2db-1ef712c2c0aa" + "value": "a112d1a9-5cbd-4970-92c3-9ddb4ef54f01" }, "Entity Alias": { "value": "us" @@ -2016,7 +2068,7 @@ }, "examples": { "Entity ID": { - "value": "1060cb1a-ad6c-4b41-bd3b-3ecbc26ef531" + "value": "bd59a132-5e4e-4edc-b098-206fa9ca1785" }, "Entity Alias": { "value": "az" @@ -2032,7 +2084,7 @@ }, "examples": { "Entity ID": { - "value": "09013686-7d5a-47dc-a52b-736366c0fc37" + "value": "90a2e5d0-5691-44ab-b741-60a750a1fdc4" }, "Entity Alias": { "value": "us" @@ -2048,7 +2100,7 @@ }, "examples": { "Entity ID": { - "value": "7f6298ed-aada-446e-b2f1-95ea60840bdc" + "value": "2d90ec5a-f80f-47c5-8321-8d5514328867" }, "Entity Alias": { "value": "az" @@ -2064,7 +2116,7 @@ }, "examples": { "Entity ID": { - "value": "984db4a2-86b1-4c2b-96b1-60422d420be9" + "value": "9a91dc6c-3c15-4aa6-a320-b5c74d19ba16" }, "Entity Alias": { "value": "or" @@ -2080,7 +2132,7 @@ }, "examples": { "Entity ID": { - "value": "61cd7707-f12a-493c-93d7-aa76be7f6a42" + "value": "b543ffa0-4d8c-4b2f-9f8b-7683c747484d" }, "Entity Alias": { "value": "or" @@ -2103,7 +2155,7 @@ "schema": { "type": "string" }, - "example": "cust_0ee595ef-93e8-449b-8cf3-bbc4364d4391" + "example": "cust_fe0e4bb6-1eb0-4902-835c-cbcbc0585aef" }, { "name": "idOrAlias", @@ -2111,11 +2163,15 @@ "description": "The ID or the alias of the given resource", "required": true, "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + } + ] }, "examples": { "Entity ID": { - "value": "d8b00204-3b3b-4bc0-a715-9aa1c01795c1" + "value": "25ffdd93-c095-44a4-af19-f75578d1cb9f" }, "Entity Alias": { "value": "alias" @@ -2123,83 +2179,82 @@ } }, { - "name": "expand", + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" + "Return single field": { + "value": "totalprice" }, - "Expand specific property": { - "value": "currency" + "Return multiple fields": { + "value": "orderlines,totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethodResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/CurrencyDto" + } + ] } } } } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } - } + }, + "deprecated": true } }, - "/umbraco/commerce/storefront/api/v1/currencies": { + "/umbraco/commerce/storefront/api/v1/country/{idOrAlias}/paymentmethods": { "get": { "tags": [ - "Currency" + "Country" ], - "summary": "Gets all the Currencies in a Store", + "summary": "Gets the Payment Methods allowed in a Country", + "operationId": "getPaymentMethodsByCountryIdOrAlias", "parameters": [ { "name": "Api-Key", @@ -2220,7 +2275,7 @@ }, "examples": { "Entity ID": { - "value": "dbc1f7a2-6cb8-43c6-9489-30ba08d82c7f" + "value": "6f8ee881-0141-4e75-a701-0679d7829a23" }, "Entity Alias": { "value": "blendid" @@ -2232,10 +2287,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "e35b6b9d-dffe-4a41-a324-9d44b2e66b8d" + "example": "3efdda02-b6dd-437a-aa91-8238394bde00" }, { "name": "Billing-Country", @@ -2246,7 +2300,7 @@ }, "examples": { "Entity ID": { - "value": "837d138c-64af-4248-abc9-d93f747e3d94" + "value": "a01b5e97-7769-4d8c-9cbc-ff978bc58fa4" }, "Entity Alias": { "value": "us" @@ -2262,7 +2316,7 @@ }, "examples": { "Entity ID": { - "value": "14f54183-d1fe-482a-ae8c-90100bdc69a9" + "value": "1cf83d54-0afa-4793-88d1-62e2e79ba4ef" }, "Entity Alias": { "value": "az" @@ -2278,7 +2332,7 @@ }, "examples": { "Entity ID": { - "value": "35c0687c-1754-4858-a1a2-26b684922a5b" + "value": "89918977-a89b-4572-b454-c335efc96ea3" }, "Entity Alias": { "value": "us" @@ -2294,7 +2348,7 @@ }, "examples": { "Entity ID": { - "value": "df29f28f-708f-4704-a832-e17ec9f4015d" + "value": "9c8ff67f-30c8-4f49-a5ed-98ead9a91164" }, "Entity Alias": { "value": "az" @@ -2310,7 +2364,7 @@ }, "examples": { "Entity ID": { - "value": "cad6bb8c-8829-4f92-8ce3-0e939f1043cf" + "value": "2233e86c-481c-4f1b-a76f-e50c45c0129b" }, "Entity Alias": { "value": "or" @@ -2326,7 +2380,7 @@ }, "examples": { "Entity ID": { - "value": "73a5a892-ceeb-4acd-ab08-d531d73f97e7" + "value": "76629e4f-86eb-4847-bd26-007a5149cabd" }, "Entity Alias": { "value": "or" @@ -2349,102 +2403,106 @@ "schema": { "type": "string" }, - "example": "cust_9418af18-1156-4505-9af6-96ff0f12b800" + "example": "cust_32b61a21-40c3-4142-a310-bf1516ea2af2" }, { - "name": "filter", - "in": "query", - "description": "Filter the returned list of items", + "name": "idOrAlias", + "in": "path", + "description": "The ID or the alias of the given resource", + "required": true, "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + } + ] }, "examples": { - "Return all results": { - "value": " " + "Entity ID": { + "value": "8df6751e-9acc-4968-9d68-88b43dcd51c7" }, - "Return items allowed in a given country": { - "value": "allowedInCountry:GB" + "Entity Alias": { + "value": "alias" } } }, { - "name": "expand", + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" + "Return single field": { + "value": "totalprice" }, - "Expand specific property": { - "value": "currency" + "Return multiple fields": { + "value": "orderlines,totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/CurrencyResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/PaymentMethodDto" + } + ] } } } } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } - } + }, + "deprecated": true } }, - "/umbraco/commerce/storefront/api/v1/currency/{idOrAlias}": { + "/umbraco/commerce/storefront/api/v1/country/{idOrAlias}/shippingmethods": { "get": { "tags": [ - "Currency" + "Country" ], - "summary": "Gets a Currency by ID or Alias", + "summary": "Gets the Shipping Methods allowed in a Country", + "operationId": "getShippingMethodsByCountryIdOrAlias", "parameters": [ { "name": "Api-Key", @@ -2465,7 +2523,7 @@ }, "examples": { "Entity ID": { - "value": "20b72b2c-3c21-4a30-b75a-3453556a5662" + "value": "6690045d-1343-45ba-bbb2-30beb7edb038" }, "Entity Alias": { "value": "blendid" @@ -2477,10 +2535,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "d98ede52-7168-4e57-bd70-6cc1c5c7d9e8" + "example": "e90f68b9-1e27-4991-82d8-a7f2037e5b03" }, { "name": "Billing-Country", @@ -2491,7 +2548,7 @@ }, "examples": { "Entity ID": { - "value": "a54fe566-6ea2-459f-9b85-9a160210686a" + "value": "b37e31b5-5d86-4d9b-a951-a9e6036ca545" }, "Entity Alias": { "value": "us" @@ -2507,7 +2564,7 @@ }, "examples": { "Entity ID": { - "value": "3566f760-25d2-4231-bf91-7e8ac22a1f72" + "value": "8f97084f-b32f-44b7-aecf-f7734a8e78d8" }, "Entity Alias": { "value": "az" @@ -2523,7 +2580,7 @@ }, "examples": { "Entity ID": { - "value": "0e909dc8-a657-4b32-a9a1-47f8dde64e3f" + "value": "ccf190c3-f291-4730-8a3f-caf4ebc07cd5" }, "Entity Alias": { "value": "us" @@ -2539,7 +2596,7 @@ }, "examples": { "Entity ID": { - "value": "4dbbfb54-3408-49ae-b0c7-39d1b48c6898" + "value": "f2b283c6-cb66-40d6-92f3-b465a8b78de0" }, "Entity Alias": { "value": "az" @@ -2555,7 +2612,7 @@ }, "examples": { "Entity ID": { - "value": "2fa21b66-1d08-463f-9cec-a47ad78efe9e" + "value": "bc1a02b2-6f83-44ba-b689-12552f6ce18d" }, "Entity Alias": { "value": "or" @@ -2571,7 +2628,7 @@ }, "examples": { "Entity ID": { - "value": "fc0e3a30-5c0d-4bf8-8db9-0ca52d7f17bf" + "value": "5f6dd0bf-568a-4c78-b8e9-27fead34a2c9" }, "Entity Alias": { "value": "or" @@ -2594,7 +2651,7 @@ "schema": { "type": "string" }, - "example": "cust_ec365a61-0ddf-4440-9d7f-35bb94ec7f37" + "example": "cust_2cf85338-fe49-407e-9af7-50e186dd476e" }, { "name": "idOrAlias", @@ -2602,39 +2659,21 @@ "description": "The ID or the alias of the given resource", "required": true, "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + } + ] }, "examples": { "Entity ID": { - "value": "0cb10bb7-211f-498e-87fa-897caef86a48" + "value": "35733b5a-e031-4697-a048-4ca9bce87fe3" }, "Entity Alias": { "value": "alias" } } }, - { - "name": "expand", - "in": "query", - "description": "Defines the properties that should be expanded in the response", - "schema": { - "type": "string" - }, - "examples": { - "Expand none": { - "value": " " - }, - "Expand prices": { - "value": "$price" - }, - "Expand specific property": { - "value": "currency" - }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" - } - } - }, { "name": "fields", "in": "query", @@ -2656,74 +2695,6 @@ "value": "orderlines[sku,description]" } } - } - ], - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CurrencyResponseDto" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - } - } - }, - "/umbraco/commerce/storefront/api/v1/customer/{customerReferenceOrEmail}/orders": { - "get": { - "tags": [ - "Customer" - ], - "summary": "Gets all the finalized Order of a Customer", - "parameters": [ - { - "name": "Api-Key", - "in": "header", - "description": "API key specified through configuration to authorize access to the API.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "Store", - "in": "header", - "description": "The ID or the alias of the store", - "required": true, - "schema": { - "type": "string" - }, - "examples": { - "Entity ID": { - "value": "5a7e5d2e-d932-4f18-bc4b-8ee1b641b358" - }, - "Entity Alias": { - "value": "blendid" - } - } - }, - { - "name": "customerReferenceOrEmail", - "in": "path", - "description": "A custom reference or email of an existing customer. Can be UrlBase64 encoded.", - "required": true, - "schema": { - "type": "string" - }, - "example": "cust_14c7ba32-367d-42f3-83b1-e59c839e5d22" }, { "name": "expand", @@ -2746,73 +2717,40 @@ "value": "paymentmethod[taxclass]" } } - }, - { - "name": "fields", - "in": "query", - "description": "Limit the properties returned in the response", - "schema": { - "type": "string" - }, - "examples": { - "Return all fields": { - "value": " " - }, - "Return single field": { - "value": "totalprice" - }, - "Return multiple fields": { - "value": "orderlines,totalprice" - }, - "Return nested fields": { - "value": "orderlines[sku,description]" - } - } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/OrderResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingMethodDto" + } + ] } } } } }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } - } + }, + "deprecated": true } }, - "/umbraco/commerce/storefront/api/v1/order/{orderId}": { - "delete": { + "/umbraco/commerce/storefront/api/v1/currencies": { + "get": { "tags": [ - "Order" + "Currency" ], - "summary": "Deletes an Order", + "summary": "Gets all the Currencies in a Store", + "operationId": "searchCurrencies", "parameters": [ { "name": "Api-Key", @@ -2833,7 +2771,7 @@ }, "examples": { "Entity ID": { - "value": "95a2ae74-7314-4adc-bb94-f28d3fb4e953" + "value": "f04853f8-49ad-4938-806a-196614ea2104" }, "Entity Alias": { "value": "blendid" @@ -2845,10 +2783,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "0069e286-22d1-41e5-9cf1-ebbf4c6b240e" + "example": "6f1b61c5-7953-4d34-8f94-a6f7d886a6f5" }, { "name": "Billing-Country", @@ -2859,7 +2796,7 @@ }, "examples": { "Entity ID": { - "value": "3fad8e78-31d4-4fcc-9927-4f1cf87e019b" + "value": "a068c065-f262-4222-8ff5-a8c339b0d46b" }, "Entity Alias": { "value": "us" @@ -2875,7 +2812,7 @@ }, "examples": { "Entity ID": { - "value": "2f04ec0a-4196-4be1-8bab-ea7bb4706f59" + "value": "3d090e57-6ed2-4c9d-9e37-50ba479e81fc" }, "Entity Alias": { "value": "az" @@ -2891,7 +2828,7 @@ }, "examples": { "Entity ID": { - "value": "613d4f97-3f2c-424c-a9ba-78178756d725" + "value": "c6945052-4b36-49fa-8595-02663af129b9" }, "Entity Alias": { "value": "us" @@ -2907,7 +2844,7 @@ }, "examples": { "Entity ID": { - "value": "c1165355-5ef2-460a-b4b4-175929e3ffa0" + "value": "7b3f72a6-2f77-4037-a305-ee85d559b314" }, "Entity Alias": { "value": "az" @@ -2923,7 +2860,7 @@ }, "examples": { "Entity ID": { - "value": "df976c97-24f0-4fbe-98c7-a07d8465c01b" + "value": "ff3dfe56-50ac-4e85-842e-d7012894fa91" }, "Entity Alias": { "value": "or" @@ -2939,7 +2876,7 @@ }, "examples": { "Entity ID": { - "value": "868c2364-f4fd-4bef-959d-02bd34b596dd" + "value": "9284a2fa-e1d1-46a5-8c24-7221d34e0f1e" }, "Entity Alias": { "value": "or" @@ -2962,41 +2899,100 @@ "schema": { "type": "string" }, - "example": "cust_53775bb3-8f50-453d-9096-df08e9c447a3" + "example": "cust_039ab087-b115-40fc-a92e-db3f38973fdf" }, { - "name": "orderId", - "in": "path", - "description": "The ID of the order", - "required": true, + "name": "filter", + "in": "query", + "description": "Filter the returned list of items", "schema": { - "type": "string", - "format": "uuid" + "type": "string" + }, + "examples": { + "Return all results": { + "value": " " + }, + "Return items allowed in a given country": { + "value": "allowedInCountry:GB" + } + } + }, + { + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", + "schema": { + "type": "string" + }, + "examples": { + "Return all fields": { + "value": " " + }, + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" }, - "example": "2c057deb-fd04-4658-b137-4b12033821f3" + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } } ], "responses": { "200": { - "description": "Success" - }, - "400": { - "description": "Bad Request", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/CurrencyDto" + } + ] + } } } } + }, + "404": { + "description": "Not Found" } } - }, + } + }, + "/umbraco/commerce/storefront/api/v1/currency/{idOrAlias}": { "get": { "tags": [ - "Order" + "Currency" ], - "summary": "Gets an Order by ID", + "summary": "Gets a Currency by ID or Alias", + "operationId": "getCurrencyByIdOrAlias", "parameters": [ { "name": "Api-Key", @@ -3017,7 +3013,7 @@ }, "examples": { "Entity ID": { - "value": "0cee075c-3e9e-4fe3-a870-2804a0ec3bbf" + "value": "41d12836-2567-4112-98bb-0488cea26648" }, "Entity Alias": { "value": "blendid" @@ -3029,10 +3025,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "c1af1022-9646-446c-9332-56ceddf8ec72" + "example": "170c673b-ba60-4308-98d5-ae47549d0e84" }, { "name": "Billing-Country", @@ -3043,7 +3038,7 @@ }, "examples": { "Entity ID": { - "value": "d4488951-b00f-4c3d-b7d6-b359ba0e5e34" + "value": "bed3d62f-689b-4791-b8fd-2564f3cd405e" }, "Entity Alias": { "value": "us" @@ -3059,7 +3054,7 @@ }, "examples": { "Entity ID": { - "value": "271234f2-ffad-47b9-8c3a-443239f1d11e" + "value": "fee2e447-035d-41fb-8807-a1d79681dd69" }, "Entity Alias": { "value": "az" @@ -3075,7 +3070,7 @@ }, "examples": { "Entity ID": { - "value": "c7092d3d-7a2f-4c90-8ad5-5bf3fbe1f89e" + "value": "21995dc0-8784-44bc-b760-1f7d1c830ed2" }, "Entity Alias": { "value": "us" @@ -3091,7 +3086,7 @@ }, "examples": { "Entity ID": { - "value": "723d0bf4-5637-45dd-b34a-352b5fa846a9" + "value": "10fbc3f9-56a0-4787-af2b-a3b0bf0d0612" }, "Entity Alias": { "value": "az" @@ -3107,7 +3102,7 @@ }, "examples": { "Entity ID": { - "value": "1a5851d6-f5a3-43f1-bce3-16cf97957721" + "value": "84dd054c-1cf5-47a9-95b1-2bf16911eab4" }, "Entity Alias": { "value": "or" @@ -3123,7 +3118,7 @@ }, "examples": { "Entity ID": { - "value": "06e03cf6-c6d2-49cb-9259-96b4cfad1649" + "value": "ee9577ef-41f2-415e-bb88-e783d76992a6" }, "Entity Alias": { "value": "or" @@ -3146,38 +3141,26 @@ "schema": { "type": "string" }, - "example": "cust_1acdc1dc-84fa-4fec-b91f-d5b6ff8e5493" + "example": "cust_047f3860-c22a-4f7c-8cca-2eb3f81183db" }, { - "name": "orderId", + "name": "idOrAlias", "in": "path", - "description": "The ID of the order", + "description": "The ID or the alias of the given resource", "required": true, "schema": { - "type": "string", - "format": "uuid" - }, - "example": "9552c564-be6c-448c-9872-9a291766bc37" - }, - { - "name": "expand", - "in": "query", - "description": "Defines the properties that should be expanded in the response", - "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + } + ] }, "examples": { - "Expand none": { - "value": " " - }, - "Expand prices": { - "value": "$price" - }, - "Expand specific property": { - "value": "currency" + "Entity ID": { + "value": "b731317d-121a-40bb-9739-776f2f187b7b" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Entity Alias": { + "value": "alias" } } }, @@ -3202,46 +3185,174 @@ "value": "orderlines[sku,description]" } } - } - ], - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrderResponseDto" - } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } - }, - "400": { - "description": "Bad Request", + } + ], + "responses": { + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "oneOf": [ + { + "$ref": "#/components/schemas/CurrencyDto" + } + ] } } } }, "404": { - "description": "Not Found", + "description": "Not Found" + } + } + } + }, + "/umbraco/commerce/storefront/api/v1/customer/{customerReferenceOrEmail}/orders": { + "get": { + "tags": [ + "Customer" + ], + "summary": "Gets all the finalized Order of a Customer", + "operationId": "getCustomerOrders", + "parameters": [ + { + "name": "Api-Key", + "in": "header", + "description": "API key specified through configuration to authorize access to the API.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Store", + "in": "header", + "description": "The ID or the alias of the store", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "ee6c7960-409c-476e-8c3d-e39985fd45b5" + }, + "Entity Alias": { + "value": "blendid" + } + } + }, + { + "name": "customerReferenceOrEmail", + "in": "path", + "description": "A custom reference or email of an existing customer. Can be UrlBase64 encoded.", + "required": true, + "schema": { + "type": "string" + }, + "example": "cust_10541b3e-6f13-43c7-bf73-8154e2892885" + }, + { + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", + "schema": { + "type": "string" + }, + "examples": { + "Return all fields": { + "value": " " + }, + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } + } + ], + "responses": { + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] + } } } } + }, + "400": { + "description": "Bad Request" + }, + "404": { + "description": "Not Found" } } - }, - "patch": { + } + }, + "/umbraco/commerce/storefront/api/v1/order/{orderId}": { + "post": { "tags": [ "Order" ], - "summary": "Updates an Order", + "summary": "Adds a product to an Order", + "operationId": "addProductToOrder", "parameters": [ { "name": "Api-Key", @@ -3262,7 +3373,7 @@ }, "examples": { "Entity ID": { - "value": "e6683440-640f-435c-a86d-9b6ffda8c8b3" + "value": "7c7c7591-ca38-406d-a5f8-de45941d0137" }, "Entity Alias": { "value": "blendid" @@ -3274,10 +3385,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "23f6e40a-bd99-4438-ace0-8b322fadd110" + "example": "7f78d5aa-d9de-4099-9988-683044c93079" }, { "name": "Billing-Country", @@ -3288,7 +3398,7 @@ }, "examples": { "Entity ID": { - "value": "45e9d12c-5179-44ed-abe2-d234d71fb7fb" + "value": "2c1407d1-13eb-416b-a6f4-8b0260f79cdc" }, "Entity Alias": { "value": "us" @@ -3304,7 +3414,7 @@ }, "examples": { "Entity ID": { - "value": "ba281ccc-82fb-4c57-bde1-e699bc47730c" + "value": "d209c559-07f7-4cbe-943e-4f938d643e94" }, "Entity Alias": { "value": "az" @@ -3320,7 +3430,7 @@ }, "examples": { "Entity ID": { - "value": "8d237853-7243-4415-8d18-1bceec4c24d2" + "value": "4f210d7c-3751-4f39-98de-d62dae92a67c" }, "Entity Alias": { "value": "us" @@ -3336,7 +3446,7 @@ }, "examples": { "Entity ID": { - "value": "1352d095-d27b-43f9-94cd-8df9cebc2e5a" + "value": "7f992ec0-f338-476f-8ad4-5955cdc61710" }, "Entity Alias": { "value": "az" @@ -3352,7 +3462,7 @@ }, "examples": { "Entity ID": { - "value": "df864be5-33a6-405b-aef6-9d7d5a3d2426" + "value": "d299a49d-ea2c-4fbd-ae2c-7b9b3304c629" }, "Entity Alias": { "value": "or" @@ -3368,7 +3478,7 @@ }, "examples": { "Entity ID": { - "value": "6ee66bbb-1a4e-4900-801d-98705592b7dc" + "value": "8e7b1ee0-f9da-4a7c-baec-f52bfb2a775a" }, "Entity Alias": { "value": "or" @@ -3391,7 +3501,7 @@ "schema": { "type": "string" }, - "example": "cust_fc236c25-bbae-4355-91ca-9867ecf8df02" + "example": "cust_ca14ee00-445f-42bb-aac2-e0c4e1dfa6c5" }, { "name": "orderId", @@ -3402,49 +3512,49 @@ "type": "string", "format": "uuid" }, - "example": "c6ee6b2c-3233-43df-aa4f-21615aa5cc9b" + "example": "16300268-3854-4fc0-ada3-39d577e13392" }, { - "name": "expand", + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" + "Return single field": { + "value": "totalprice" }, - "Expand specific property": { - "value": "currency" + "Return multiple fields": { + "value": "orderlines,totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } @@ -3453,39 +3563,65 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateOrderRequestDto" + "oneOf": [ + { + "$ref": "#/components/schemas/AddProductRequestDto" + } + ] } } } }, "responses": { "200": { - "description": "Success", + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } } } }, - "post": { + "delete": { "tags": [ "Order" ], - "summary": "Adds a product to an Order", + "summary": "Deletes an Order", + "operationId": "deleteOrder", "parameters": [ { "name": "Api-Key", @@ -3506,7 +3642,7 @@ }, "examples": { "Entity ID": { - "value": "8bbfbc68-4679-4924-a992-bcc85d278d2c" + "value": "e3449368-d2f1-43f8-a8bc-87efb999bed5" }, "Entity Alias": { "value": "blendid" @@ -3518,10 +3654,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "3f29ad06-c73f-471b-8d50-4008d5fba487" + "example": "651691d4-dc69-4655-8a06-ad33b8308928" }, { "name": "Billing-Country", @@ -3532,7 +3667,7 @@ }, "examples": { "Entity ID": { - "value": "715871d7-bb59-473b-a8dd-ab41923b663b" + "value": "c9766f47-133b-4e34-b897-c1af4e3a4647" }, "Entity Alias": { "value": "us" @@ -3548,7 +3683,7 @@ }, "examples": { "Entity ID": { - "value": "3e01ee69-7686-4c30-9049-bc4058257d86" + "value": "2c611ae0-8e9e-49e9-a224-59e9a5286cdb" }, "Entity Alias": { "value": "az" @@ -3564,7 +3699,7 @@ }, "examples": { "Entity ID": { - "value": "bfefdb24-bb1f-4d5c-8f38-cd34ff409147" + "value": "83c2ee36-8105-4294-a7bd-b3124eb7e034" }, "Entity Alias": { "value": "us" @@ -3580,7 +3715,7 @@ }, "examples": { "Entity ID": { - "value": "8a5ebe37-6c3e-4b14-aba6-c8ec03b80ebe" + "value": "450c44b6-76c5-4e27-9aff-1c57eb1b9241" }, "Entity Alias": { "value": "az" @@ -3596,7 +3731,7 @@ }, "examples": { "Entity ID": { - "value": "43607317-17f4-42aa-be09-d342bcda577a" + "value": "e1d3bd6b-69a4-4b44-a038-e18d09f6434b" }, "Entity Alias": { "value": "or" @@ -3612,7 +3747,7 @@ }, "examples": { "Entity ID": { - "value": "10663191-15bd-49d9-8ad4-741ba57d3742" + "value": "e27d5b1e-1ed5-4044-af0c-943aaf73cb31" }, "Entity Alias": { "value": "or" @@ -3635,7 +3770,7 @@ "schema": { "type": "string" }, - "example": "cust_73894966-2a44-4c83-8cd4-13115ab015eb" + "example": "cust_47d058dc-2ee3-4bf1-a870-d0e3a2ea4892" }, { "name": "orderId", @@ -3646,92 +3781,48 @@ "type": "string", "format": "uuid" }, - "example": "6501b7b7-179a-4eed-b726-4c10dab2dd15" - }, - { - "name": "expand", - "in": "query", - "description": "Defines the properties that should be expanded in the response", - "schema": { - "type": "string" - }, - "examples": { - "Expand none": { - "value": " " - }, - "Expand prices": { - "value": "$price" - }, - "Expand specific property": { - "value": "currency" - }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" - } - } - }, - { - "name": "fields", - "in": "query", - "description": "Limit the properties returned in the response", - "schema": { - "type": "string" - }, - "examples": { - "Return all fields": { - "value": " " - }, - "Return single field": { - "value": "totalprice" - }, - "Return multiple fields": { - "value": "orderlines,totalprice" - }, - "Return nested fields": { - "value": "orderlines[sku,description]" - } - } + "example": "b0561602-95ea-4b37-b67f-837fc8783167" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AddProductRequestDto" - } - } - } - }, "responses": { "200": { - "description": "Success", - "content": { - "application/json": { + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/OrderResponseDto" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } } } - } - }, - "/umbraco/commerce/storefront/api/v1/order/{orderId}/bundle/{bundleId}": { - "post": { + }, + "get": { "tags": [ "Order" ], - "summary": "Adds a product to a Bundle", + "summary": "Gets an Order by ID", + "operationId": "getOrderById", "parameters": [ { "name": "Api-Key", @@ -3752,7 +3843,7 @@ }, "examples": { "Entity ID": { - "value": "3730a5ec-0db6-4505-a732-80d20e0f91b5" + "value": "ad3fe555-b68c-4b09-980e-c094eabbf8bb" }, "Entity Alias": { "value": "blendid" @@ -3764,10 +3855,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "a75fcd7f-f659-4475-8367-63d9aad2f500" + "example": "d0de0f1e-5f12-42cb-8aaa-8f744f807523" }, { "name": "Billing-Country", @@ -3778,7 +3868,7 @@ }, "examples": { "Entity ID": { - "value": "7bcdee91-0749-4546-8005-51076fffaead" + "value": "606feeb4-3590-4e0b-8326-1454472ca53f" }, "Entity Alias": { "value": "us" @@ -3794,7 +3884,7 @@ }, "examples": { "Entity ID": { - "value": "45a510a5-a9c4-4219-ab41-1d6efd2a5614" + "value": "8b5d8f49-9ef5-4d34-985b-4cdeaa4dc123" }, "Entity Alias": { "value": "az" @@ -3810,7 +3900,7 @@ }, "examples": { "Entity ID": { - "value": "d1a5f064-0bb1-49c9-99ee-0d5ce1c717a0" + "value": "331cd6ca-7dd6-4e64-a6b0-58cb1f9c1c00" }, "Entity Alias": { "value": "us" @@ -3826,7 +3916,7 @@ }, "examples": { "Entity ID": { - "value": "6a43332b-93ba-4216-9977-bc11fe712469" + "value": "a133acf7-8e99-4afe-b711-a73a6092dfd6" }, "Entity Alias": { "value": "az" @@ -3842,7 +3932,7 @@ }, "examples": { "Entity ID": { - "value": "1cee4030-0aee-4438-8c67-2770f7cca1bf" + "value": "2f208944-b536-4176-b096-7a9873236896" }, "Entity Alias": { "value": "or" @@ -3858,7 +3948,7 @@ }, "examples": { "Entity ID": { - "value": "5f75d33b-2360-4851-a497-bbbbabe9d2ad" + "value": "a5aa3eea-8c5d-4ef5-942e-614a84b05650" }, "Entity Alias": { "value": "or" @@ -3881,7 +3971,7 @@ "schema": { "type": "string" }, - "example": "cust_81ce937e-e188-42a6-8683-9b7e5b58014f" + "example": "cust_a7ea3a29-4b39-48e8-8f0b-f370966e53ce" }, { "name": "orderId", @@ -3892,17 +3982,29 @@ "type": "string", "format": "uuid" }, - "example": "b3942bea-ffe4-479d-a6f7-e4c70fd37609" + "example": "4d8062ef-ff03-4ec2-9e45-94cb9c56a2bd" }, { - "name": "bundleId", - "in": "path", - "description": "The ID of the bundle", - "required": true, + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, - "example": "2cdfee74-430b-4578-9140-1e482bc3f346" + "examples": { + "Return all fields": { + "value": " " + }, + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } }, { "name": "expand", @@ -3925,69 +4027,37 @@ "value": "paymentmethod[taxclass]" } } - }, - { - "name": "fields", - "in": "query", - "description": "Limit the properties returned in the response", - "schema": { - "type": "string" - }, - "examples": { - "Return all fields": { - "value": " " - }, - "Return single field": { - "value": "totalprice" - }, - "Return multiple fields": { - "value": "orderlines,totalprice" - }, - "Return nested fields": { - "value": "orderlines[sku,description]" - } - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AddProductRequestDto" - } - } - } - }, "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Bad Request" + }, + "404": { + "description": "Not Found" } } - } - }, - "/umbraco/commerce/storefront/api/v1/order/{orderId}/bundle/{bundleId}/item/{orderLineId}": { - "delete": { + }, + "patch": { "tags": [ "Order" ], - "summary": "Deletes an Order Line in a Bundle", + "summary": "Updates an Order", + "operationId": "updateOrder", "parameters": [ { "name": "Api-Key", @@ -4008,7 +4078,7 @@ }, "examples": { "Entity ID": { - "value": "4b526716-dc0f-4bb7-ab31-cf685ed5970e" + "value": "727e5824-f9d9-408f-bb04-c37cb72ddb20" }, "Entity Alias": { "value": "blendid" @@ -4020,10 +4090,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "3134de87-6feb-4ead-8890-c4ac4e1cdde3" + "example": "f6635e2c-f873-4f8c-a5ad-9b500c9d4caf" }, { "name": "Billing-Country", @@ -4034,7 +4103,7 @@ }, "examples": { "Entity ID": { - "value": "26d0646b-ab6e-486c-8f7a-10764e12a45b" + "value": "479f8824-9644-46df-8107-8c73b0c7aab2" }, "Entity Alias": { "value": "us" @@ -4050,7 +4119,7 @@ }, "examples": { "Entity ID": { - "value": "f0dba06c-47e5-4de0-8394-ece29c211ff5" + "value": "b5d833cb-e172-4beb-9fa4-e4cb1571eac6" }, "Entity Alias": { "value": "az" @@ -4066,7 +4135,7 @@ }, "examples": { "Entity ID": { - "value": "3c1f5d7e-3231-4d2a-95bc-896e0df1b460" + "value": "f1a42615-32e4-493a-b199-08e833a91dd7" }, "Entity Alias": { "value": "us" @@ -4082,7 +4151,7 @@ }, "examples": { "Entity ID": { - "value": "e0688154-ee92-4e57-89d0-2381b35e1690" + "value": "14ed7597-2944-458c-b38e-aeff39c90d97" }, "Entity Alias": { "value": "az" @@ -4098,7 +4167,7 @@ }, "examples": { "Entity ID": { - "value": "efe482ae-00e7-442a-ab1a-2182abfbc3d7" + "value": "8d3d13db-e062-4f39-9ff3-9c8c7c81bfe5" }, "Entity Alias": { "value": "or" @@ -4114,7 +4183,7 @@ }, "examples": { "Entity ID": { - "value": "1f21ea5f-4ac0-48bb-96e8-cf41f6cb9d91" + "value": "f991f158-2204-40d8-8a1c-c800209ce706" }, "Entity Alias": { "value": "or" @@ -4137,7 +4206,7 @@ "schema": { "type": "string" }, - "example": "cust_f26be500-69cf-40bb-8b39-311fec48f282" + "example": "cust_76e2a189-1451-4d0e-a121-0f1c29e5935b" }, { "name": "orderId", @@ -4148,28 +4217,29 @@ "type": "string", "format": "uuid" }, - "example": "63ff8924-6284-4348-a3ef-202bb494b6f4" + "example": "a1fca9a5-7b2c-4311-9325-a874ac94d219" }, { - "name": "bundleId", - "in": "path", - "description": "The ID of the bundle", - "required": true, + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, - "example": "d7cf5194-33e7-4b9e-b4cb-1b6916f5f38f" - }, - { - "name": "orderLineId", - "in": "path", - "description": "The ID of the order line", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - }, - "example": "ba9518e6-7594-49cf-bb4e-0785c5c39e91" + "examples": { + "Return all fields": { + "value": " " + }, + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } }, { "name": "expand", @@ -4192,58 +4262,73 @@ "value": "paymentmethod[taxclass]" } } - }, - { - "name": "fields", - "in": "query", - "description": "Limit the properties returned in the response", - "schema": { - "type": "string" - }, - "examples": { - "Return all fields": { - "value": " " - }, - "Return single field": { - "value": "totalprice" - }, - "Return multiple fields": { - "value": "orderlines,totalprice" - }, - "Return nested fields": { - "value": "orderlines[sku,description]" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateOrderRequestDto" + } + ] } } } - ], + }, "responses": { "200": { - "description": "Success", + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } } } - }, - "patch": { + } + }, + "/umbraco/commerce/storefront/api/v1/order/{orderId}/bundle/{bundleId}": { + "post": { "tags": [ "Order" ], - "summary": "Updates an Order Line in a Bundle", + "summary": "Adds a product to a Bundle", + "operationId": "addProductToBundle", "parameters": [ { "name": "Api-Key", @@ -4264,7 +4349,7 @@ }, "examples": { "Entity ID": { - "value": "1ee8bacf-2523-46ff-b169-1c8602a177c5" + "value": "95a9f6d6-37a2-480a-a277-3e5186c823a7" }, "Entity Alias": { "value": "blendid" @@ -4276,10 +4361,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "d944fd27-d0c2-43bf-b6bc-81a9048a3761" + "example": "e927d478-a411-4006-aae2-22a1a8884106" }, { "name": "Billing-Country", @@ -4290,7 +4374,7 @@ }, "examples": { "Entity ID": { - "value": "74668b9d-aae6-44ff-bd21-2516c1191646" + "value": "afd500ea-c151-40b1-a2be-26b25f4d52d6" }, "Entity Alias": { "value": "us" @@ -4306,7 +4390,7 @@ }, "examples": { "Entity ID": { - "value": "28f5680e-b8b8-4d76-96b6-172f3b70b6fb" + "value": "5a59496d-daa1-4ce3-b602-d99f947ca6c4" }, "Entity Alias": { "value": "az" @@ -4322,7 +4406,7 @@ }, "examples": { "Entity ID": { - "value": "a39dd754-1471-4937-8cfc-bd9dffc8349c" + "value": "3fbee558-4d07-4529-8758-7bedb0c7b20b" }, "Entity Alias": { "value": "us" @@ -4338,7 +4422,7 @@ }, "examples": { "Entity ID": { - "value": "809c2654-3e23-4332-bdd3-ad3844ff14b1" + "value": "35e846d2-7457-4211-927c-7d1a7edf1b61" }, "Entity Alias": { "value": "az" @@ -4354,7 +4438,7 @@ }, "examples": { "Entity ID": { - "value": "0489fe67-643c-47ce-805a-676aa4bced02" + "value": "14d810a9-3e49-4be0-b00b-c996d70e8b1f" }, "Entity Alias": { "value": "or" @@ -4370,7 +4454,7 @@ }, "examples": { "Entity ID": { - "value": "93c14d21-398f-4e91-9ac2-4870e733ca10" + "value": "2f3c7411-9f81-43df-802a-72049e22c577" }, "Entity Alias": { "value": "or" @@ -4393,7 +4477,7 @@ "schema": { "type": "string" }, - "example": "cust_68090526-e7ce-4b27-b0d0-175f7f92a639" + "example": "cust_1b64479b-bb5c-4cb0-a402-149fbd6d0950" }, { "name": "orderId", @@ -4404,7 +4488,7 @@ "type": "string", "format": "uuid" }, - "example": "24850c50-8e13-44b5-8d03-f747b4868ed5" + "example": "e12af3ac-c689-4551-9873-db5531a3f515" }, { "name": "bundleId", @@ -4414,60 +4498,49 @@ "schema": { "type": "string" }, - "example": "da5d970e-1eb0-4361-bb92-3fafe038fc47" + "example": "e74a171c-d55b-47ad-9268-9a1d8fc95f24" }, { - "name": "orderLineId", - "in": "path", - "description": "The ID of the order line", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - }, - "example": "35f3260a-ada2-4838-b3e4-50d86b6ebff9" - }, - { - "name": "expand", + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" + "Return single field": { + "value": "totalprice" }, - "Expand specific property": { - "value": "currency" + "Return multiple fields": { + "value": "orderlines,totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } @@ -4476,28 +4549,53 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateOrderLineRequestDto" + "oneOf": [ + { + "$ref": "#/components/schemas/AddProductRequestDto" + } + ] } } } }, "responses": { "200": { - "description": "Success", + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } @@ -4505,12 +4603,13 @@ } } }, - "/umbraco/commerce/storefront/api/v1/order/{orderId}/bundle/{bundleId}/items": { + "/umbraco/commerce/storefront/api/v1/order/{orderId}/bundle/{bundleId}/item/{orderLineId}": { "delete": { "tags": [ "Order" ], - "summary": "Deletes all Order Lines in a Bundle", + "summary": "Deletes an Order Line in a Bundle", + "operationId": "deleteBundleOrderLine", "parameters": [ { "name": "Api-Key", @@ -4531,7 +4630,7 @@ }, "examples": { "Entity ID": { - "value": "ca2ad049-9c8d-4d5b-b0cd-7ed651b640b4" + "value": "9507f2c5-0015-4631-99d3-5bf0d5adeef3" }, "Entity Alias": { "value": "blendid" @@ -4543,10 +4642,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "0e424f22-e43e-4a3c-9690-f6fcee8474e4" + "example": "3a9507fc-c346-4e74-9716-59f6ca1822c4" }, { "name": "Billing-Country", @@ -4557,7 +4655,7 @@ }, "examples": { "Entity ID": { - "value": "01bbcaa8-d4bd-430d-b032-789bff870e49" + "value": "45fdb08d-c9a2-4fef-b641-2bbf071dc161" }, "Entity Alias": { "value": "us" @@ -4573,7 +4671,7 @@ }, "examples": { "Entity ID": { - "value": "b71013ba-ba14-4426-89df-97373ad6a8eb" + "value": "b9221698-424b-4068-b303-5c397abb8f17" }, "Entity Alias": { "value": "az" @@ -4589,7 +4687,7 @@ }, "examples": { "Entity ID": { - "value": "35377fd5-66d4-4601-ac40-58dd9a54b026" + "value": "a8e6f7ef-dccf-458c-b767-ce1c7104b019" }, "Entity Alias": { "value": "us" @@ -4605,7 +4703,7 @@ }, "examples": { "Entity ID": { - "value": "6c7237c4-b1dd-4453-9d18-af562ceccc4c" + "value": "87e3c2a4-93d2-4c38-891e-86680c450841" }, "Entity Alias": { "value": "az" @@ -4621,7 +4719,7 @@ }, "examples": { "Entity ID": { - "value": "6ec77b61-2fd5-48d3-b2dc-950d5da2cb80" + "value": "16d3d9bf-8f9c-442e-b627-acea6d860838" }, "Entity Alias": { "value": "or" @@ -4637,7 +4735,7 @@ }, "examples": { "Entity ID": { - "value": "d2238f8a-aedb-4cf1-81dd-2a210e0cfda6" + "value": "f5bd0154-dcff-49f2-893e-2fdabe32b5c0" }, "Entity Alias": { "value": "or" @@ -4660,7 +4758,7 @@ "schema": { "type": "string" }, - "example": "cust_48c4ebb8-12f4-45a4-a7f5-9d0f7713754b" + "example": "cust_3ebd91ed-a995-494a-931c-aa445c4f0969" }, { "name": "orderId", @@ -4671,7 +4769,7 @@ "type": "string", "format": "uuid" }, - "example": "31359e38-2aff-4c2e-a9b9-b6c2420df1fb" + "example": "1aff93c9-83d4-4832-bf3c-171cd06b51d8" }, { "name": "bundleId", @@ -4681,29 +4779,18 @@ "schema": { "type": "string" }, - "example": "ee3e348d-b58c-4a19-a82a-f4c55b784274" + "example": "7b814fa0-3000-41ae-a53c-b029e7bb6de0" }, { - "name": "expand", - "in": "query", - "description": "Defines the properties that should be expanded in the response", + "name": "orderLineId", + "in": "path", + "description": "The ID of the order line", + "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" }, - "examples": { - "Expand none": { - "value": " " - }, - "Expand prices": { - "value": "$price" - }, - "Expand specific property": { - "value": "currency" - }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" - } - } + "example": "8f22084a-f03e-47c1-9068-09b17c0671c2" }, { "name": "fields", @@ -4726,25 +4813,68 @@ "value": "orderlines[sku,description]" } } - } - ], - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrderResponseDto" - } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] + } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } @@ -4755,7 +4885,8 @@ "tags": [ "Order" ], - "summary": "Bulk updates Order Lines in an Order", + "summary": "Updates an Order Line in a Bundle", + "operationId": "updateBundleOrderLine", "parameters": [ { "name": "Api-Key", @@ -4776,7 +4907,7 @@ }, "examples": { "Entity ID": { - "value": "4d159856-0845-4165-aeec-aa3379d15476" + "value": "40562163-4029-4f81-ad0e-5b026aaea1ec" }, "Entity Alias": { "value": "blendid" @@ -4788,10 +4919,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "153a3974-7a44-44e9-82b8-797ddf18e127" + "example": "5c272fb1-e24e-426e-bc89-b9cd2dddd866" }, { "name": "Billing-Country", @@ -4802,7 +4932,7 @@ }, "examples": { "Entity ID": { - "value": "39aa37ed-1f90-4eef-bce8-6d64caeed7c8" + "value": "3cf73136-ec3f-442d-b362-b0f35adeba24" }, "Entity Alias": { "value": "us" @@ -4818,7 +4948,7 @@ }, "examples": { "Entity ID": { - "value": "ad4ce33a-6126-41a4-89d7-09c356e0fc94" + "value": "1f7d2861-6797-422a-bdc1-da27810d2e7c" }, "Entity Alias": { "value": "az" @@ -4834,7 +4964,7 @@ }, "examples": { "Entity ID": { - "value": "09ffa3fa-b1ab-4eb9-9357-a1d03a75cb58" + "value": "2e00eb54-281f-43d2-b170-2180dc35cf62" }, "Entity Alias": { "value": "us" @@ -4850,7 +4980,7 @@ }, "examples": { "Entity ID": { - "value": "4d784b41-af04-4a87-8b89-554cde2ed605" + "value": "cd8e2f09-4262-4a64-9fda-0c142b3810ab" }, "Entity Alias": { "value": "az" @@ -4866,7 +4996,7 @@ }, "examples": { "Entity ID": { - "value": "40864257-05c0-41ca-8d65-cce1059a5ec2" + "value": "72e64640-2d2e-411f-9afa-460c6bea27d4" }, "Entity Alias": { "value": "or" @@ -4882,7 +5012,7 @@ }, "examples": { "Entity ID": { - "value": "d479fc39-005e-48f9-9558-83c386f3d7c5" + "value": "916249a1-dea2-454a-84ec-74ce76be85a4" }, "Entity Alias": { "value": "or" @@ -4905,7 +5035,7 @@ "schema": { "type": "string" }, - "example": "cust_fcf6bd19-206e-40d6-9fab-22cc0abc40d9" + "example": "cust_8dcd4c7c-380c-4dcb-8d32-d44b00a7c499" }, { "name": "orderId", @@ -4916,7 +5046,7 @@ "type": "string", "format": "uuid" }, - "example": "2ca0faf4-d2b9-4e83-8ab0-c56647f5042b" + "example": "4411c480-dcd6-4bac-a5e3-f553993f5d54" }, { "name": "bundleId", @@ -4926,29 +5056,18 @@ "schema": { "type": "string" }, - "example": "270e14d0-4fe8-4039-ae6d-b47b1c0892f7" + "example": "9dd7eb1b-2d10-49e1-99ab-9eed7ffc75c0" }, { - "name": "expand", - "in": "query", - "description": "Defines the properties that should be expanded in the response", + "name": "orderLineId", + "in": "path", + "description": "The ID of the order line", + "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" }, - "examples": { - "Expand none": { - "value": " " - }, - "Expand prices": { - "value": "$price" - }, - "Expand specific property": { - "value": "currency" - }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" - } - } + "example": "f0dc1400-cca1-40dd-ae9a-85426e7fa704" }, { "name": "fields", @@ -4971,37 +5090,81 @@ "value": "orderlines[sku,description]" } } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } } ], "requestBody": { "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UpdateOrderLineWithIdRequestDto" - } + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateOrderLineRequestDto" + } + ] } } } }, "responses": { "200": { - "description": "Success", + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } @@ -5009,12 +5172,13 @@ } } }, - "/umbraco/commerce/storefront/api/v1/order/{orderId}/item/{orderLineId}": { + "/umbraco/commerce/storefront/api/v1/order/{orderId}/bundle/{bundleId}/items": { "delete": { "tags": [ "Order" ], - "summary": "Deletes an Order Line in an Order", + "summary": "Deletes all Order Lines in a Bundle", + "operationId": "deleteAllBundleOrderLines", "parameters": [ { "name": "Api-Key", @@ -5035,7 +5199,7 @@ }, "examples": { "Entity ID": { - "value": "94d19207-2e3a-4dde-8d3e-a63e31143344" + "value": "345fdaee-26d4-43a6-bca8-b828cd38c2e1" }, "Entity Alias": { "value": "blendid" @@ -5047,10 +5211,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "42f3c348-24b9-41d9-8415-a4b7d8b31476" + "example": "abe3a8fc-4341-47a6-bc98-fd63a35f5203" }, { "name": "Billing-Country", @@ -5061,7 +5224,7 @@ }, "examples": { "Entity ID": { - "value": "872b8c8c-9961-4d22-8dc4-22bdcd2cc437" + "value": "7ee1550d-6a64-49ec-a4a4-26081f783616" }, "Entity Alias": { "value": "us" @@ -5077,7 +5240,7 @@ }, "examples": { "Entity ID": { - "value": "702bbd2d-07a4-4727-82b7-19d148198c4e" + "value": "59917cfc-eb58-4d88-94a8-6ed5026ef1b6" }, "Entity Alias": { "value": "az" @@ -5093,7 +5256,7 @@ }, "examples": { "Entity ID": { - "value": "907ba0dc-6938-4fa9-8070-ee4e6feda872" + "value": "f1e03cd7-cc7c-46e6-84f5-907cef2109a1" }, "Entity Alias": { "value": "us" @@ -5109,7 +5272,7 @@ }, "examples": { "Entity ID": { - "value": "ec89fc43-a62c-42cf-9309-2475fdb009af" + "value": "04a90696-c960-4b54-bbb6-624a4a241337" }, "Entity Alias": { "value": "az" @@ -5125,7 +5288,7 @@ }, "examples": { "Entity ID": { - "value": "415b9be2-0ec5-4001-a8b4-1bd24866f1e8" + "value": "8c55a4c2-08f6-4245-9e2c-a308e0af399c" }, "Entity Alias": { "value": "or" @@ -5141,7 +5304,7 @@ }, "examples": { "Entity ID": { - "value": "d694f924-11a2-4183-bf87-eef053cf749f" + "value": "d278fff1-8768-4a16-b150-952f797360d9" }, "Entity Alias": { "value": "or" @@ -5164,7 +5327,7 @@ "schema": { "type": "string" }, - "example": "cust_1d14f624-6910-4c18-a2b9-d9e14296cd4c" + "example": "cust_10f51845-1a57-4287-abde-5a3412565bc4" }, { "name": "orderId", @@ -5175,81 +5338,101 @@ "type": "string", "format": "uuid" }, - "example": "00a6fbce-0386-4e34-a504-a708ea789df0" + "example": "ec6b8db6-170b-44b5-a917-c6e753a7cc40" }, { - "name": "orderLineId", + "name": "bundleId", "in": "path", - "description": "The ID of the order line", + "description": "The ID of the bundle", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "76d901d2-f1ea-4b3b-9e28-5be8b46096e4" + "example": "21e01d4e-2d0b-40cb-a6d9-a5e3a3168b75" }, { - "name": "expand", + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" + "Return single field": { + "value": "totalprice" }, - "Expand specific property": { - "value": "currency" + "Return multiple fields": { + "value": "orderlines,totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } ], "responses": { "200": { - "description": "Success", + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } @@ -5260,7 +5443,8 @@ "tags": [ "Order" ], - "summary": "Updates an Order Line in an Order", + "summary": "Bulk updates Order Lines in an Order", + "operationId": "updateBundleOrderLines", "parameters": [ { "name": "Api-Key", @@ -5281,7 +5465,7 @@ }, "examples": { "Entity ID": { - "value": "6c915eda-2b5f-485d-94b1-0576f3997656" + "value": "eebb8ccd-f726-4186-bca4-92f74f72d49f" }, "Entity Alias": { "value": "blendid" @@ -5293,10 +5477,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "b9cd42a9-829f-459c-a589-99fb52b0fc62" + "example": "21637cbc-70d0-4153-995f-2a2ecbcca566" }, { "name": "Billing-Country", @@ -5307,7 +5490,7 @@ }, "examples": { "Entity ID": { - "value": "e718af5e-ee21-4a9c-8023-3aaad2b3acaa" + "value": "bc89e438-55ca-47ce-956f-c07a55d86ca2" }, "Entity Alias": { "value": "us" @@ -5323,7 +5506,7 @@ }, "examples": { "Entity ID": { - "value": "9f974f7f-6ddd-4fdd-8e65-f61810e37cb1" + "value": "07d2663f-aea7-4df4-a40a-5cf2fbdef7e7" }, "Entity Alias": { "value": "az" @@ -5339,7 +5522,7 @@ }, "examples": { "Entity ID": { - "value": "9d1b907f-17a9-4913-b9a4-30d6634ba9d0" + "value": "23c8e1ed-094d-4f10-981b-703c1f21ed86" }, "Entity Alias": { "value": "us" @@ -5355,7 +5538,7 @@ }, "examples": { "Entity ID": { - "value": "b6f62e17-1f91-4917-8a04-1de94faa6e5a" + "value": "02028655-d5b5-4bb2-bc28-43a3fedcfadc" }, "Entity Alias": { "value": "az" @@ -5371,7 +5554,7 @@ }, "examples": { "Entity ID": { - "value": "de74f938-734e-40f6-8039-b114887df84e" + "value": "adfdf195-c3b9-4b50-afdf-6fee5c40d167" }, "Entity Alias": { "value": "or" @@ -5387,7 +5570,7 @@ }, "examples": { "Entity ID": { - "value": "edc91ea1-6795-4e96-bc9e-6ec8f5b2b813" + "value": "815254bd-3320-407e-8121-204bc6e81639" }, "Entity Alias": { "value": "or" @@ -5410,7 +5593,7 @@ "schema": { "type": "string" }, - "example": "cust_c94d09ff-ce8d-49e3-a139-3c9877f3858f" + "example": "cust_6944daf2-6e6d-4557-8efe-f92af731d896" }, { "name": "orderId", @@ -5421,60 +5604,59 @@ "type": "string", "format": "uuid" }, - "example": "3a687504-a46c-43a9-b5bf-03656a0a930f" + "example": "2a05407e-bc1e-4e0f-aefd-fd8df711d677" }, { - "name": "orderLineId", + "name": "bundleId", "in": "path", - "description": "The ID of the order line", + "description": "The ID of the bundle", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "0be414ec-69b4-40a4-935a-affda21f9bfb" + "example": "daa15b48-6447-419f-aee0-7520c8300e35" }, { - "name": "expand", + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" + "Return single field": { + "value": "totalprice" }, - "Expand specific property": { - "value": "currency" + "Return multiple fields": { + "value": "orderlines,totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } @@ -5483,28 +5665,56 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateOrderLineRequestDto" + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateOrderLineWithIdRequestDto" + } + ] + } } } } }, "responses": { "200": { - "description": "Success", + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } @@ -5512,12 +5722,13 @@ } } }, - "/umbraco/commerce/storefront/api/v1/order/{orderId}/items": { + "/umbraco/commerce/storefront/api/v1/order/{orderId}/item/{orderLineId}": { "delete": { "tags": [ "Order" ], - "summary": "Deletes all Order Lines in an Order", + "summary": "Deletes an Order Line in an Order", + "operationId": "deleteOrderLine", "parameters": [ { "name": "Api-Key", @@ -5538,7 +5749,7 @@ }, "examples": { "Entity ID": { - "value": "7b713de8-eaea-4a43-ae84-4db0a87586ea" + "value": "2d99a55f-6041-48cb-b6e5-740ffdd96c10" }, "Entity Alias": { "value": "blendid" @@ -5550,10 +5761,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "41157dd2-d4a1-4b15-81f4-aef60dcde021" + "example": "94f855b0-0b66-4ddc-ac66-1c18fa7100c5" }, { "name": "Billing-Country", @@ -5564,7 +5774,7 @@ }, "examples": { "Entity ID": { - "value": "75240f64-c441-46b3-b791-85fde4f996fd" + "value": "4c750442-45d0-4429-be13-f3b38b3a139b" }, "Entity Alias": { "value": "us" @@ -5580,7 +5790,7 @@ }, "examples": { "Entity ID": { - "value": "db2af947-07e2-47f1-937f-cb0379ce652d" + "value": "776617b1-b4e9-4022-820b-968550824263" }, "Entity Alias": { "value": "az" @@ -5596,7 +5806,7 @@ }, "examples": { "Entity ID": { - "value": "2f916699-0220-45ca-8efd-3cc0ad11efa8" + "value": "db71b765-edb4-429c-a0df-a6ff158b6786" }, "Entity Alias": { "value": "us" @@ -5612,7 +5822,7 @@ }, "examples": { "Entity ID": { - "value": "a81541c4-d02d-4fed-8916-b36d6c3aa30d" + "value": "80c29983-61b2-47bb-8c49-f1bf03be748a" }, "Entity Alias": { "value": "az" @@ -5628,7 +5838,7 @@ }, "examples": { "Entity ID": { - "value": "a1bf380e-5593-4268-9c35-c69e8222d07c" + "value": "e950def0-deb9-4a70-8c73-8e93e8fef7a0" }, "Entity Alias": { "value": "or" @@ -5644,7 +5854,7 @@ }, "examples": { "Entity ID": { - "value": "bab88817-749b-4680-a111-54f0b30f9c57" + "value": "17d9d0e8-ce8f-4a8b-a358-0be780fed1e3" }, "Entity Alias": { "value": "or" @@ -5667,7 +5877,7 @@ "schema": { "type": "string" }, - "example": "cust_09bedb9f-0744-4c96-87fa-7afe781eb58d" + "example": "cust_2278050d-6d43-4f06-a542-1391bddf6525" }, { "name": "orderId", @@ -5678,70 +5888,102 @@ "type": "string", "format": "uuid" }, - "example": "5f910d9e-1ebc-4864-a61a-d745f1582616" + "example": "b908d702-26f7-4625-8b94-e555c0cdf479" }, { - "name": "expand", + "name": "orderLineId", + "in": "path", + "description": "The ID of the order line", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + }, + "example": "52f3090e-a3e8-4404-9967-2933e5f9b020" + }, + { + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" - }, - "Expand specific property": { - "value": "currency" + "Return single field": { + "value": "totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } ], "responses": { "200": { - "description": "Success", + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } @@ -5752,7 +5994,8 @@ "tags": [ "Order" ], - "summary": "Bulk updates Order Lines in an Order", + "summary": "Updates an Order Line in an Order", + "operationId": "updateOrderLine", "parameters": [ { "name": "Api-Key", @@ -5773,7 +6016,7 @@ }, "examples": { "Entity ID": { - "value": "bda2558c-903c-4523-8aa6-ce37dae1fc6e" + "value": "098dd65f-f337-470a-9cb4-fc3af63dd202" }, "Entity Alias": { "value": "blendid" @@ -5785,10 +6028,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "bdc5489e-35df-4005-a95c-0855b983c85c" + "example": "dd2edba9-8f23-460a-90c9-669a6fa8e987" }, { "name": "Billing-Country", @@ -5799,7 +6041,7 @@ }, "examples": { "Entity ID": { - "value": "a0cf0d9b-d5ac-4e74-897d-e8095cf6be0c" + "value": "9cce337a-4de3-47be-940b-5ec22b2e72fd" }, "Entity Alias": { "value": "us" @@ -5815,7 +6057,7 @@ }, "examples": { "Entity ID": { - "value": "54253a31-71ca-4ea4-9625-c18d4e98dbf0" + "value": "3f14fec5-0afb-47ea-8f67-c2618996790a" }, "Entity Alias": { "value": "az" @@ -5831,7 +6073,7 @@ }, "examples": { "Entity ID": { - "value": "d878fdcd-b441-4805-9efd-a74affda1a2c" + "value": "1e225ba2-934a-44b7-b75d-96a8fb57cc3d" }, "Entity Alias": { "value": "us" @@ -5847,7 +6089,7 @@ }, "examples": { "Entity ID": { - "value": "fd93f19f-efcb-4ec0-9700-167ef0a90143" + "value": "25ff817d-6b5c-4851-bac8-5ae22ec4e5c3" }, "Entity Alias": { "value": "az" @@ -5863,7 +6105,7 @@ }, "examples": { "Entity ID": { - "value": "eec64c88-a08b-4f7a-8c81-f05f5179e3ae" + "value": "1142a124-7e42-43b6-b4b6-35ac8dafd67a" }, "Entity Alias": { "value": "or" @@ -5879,7 +6121,7 @@ }, "examples": { "Entity ID": { - "value": "a00be2a4-1d78-480e-afdd-57e73868ae3a" + "value": "edebdeb1-b3a9-45a5-b17e-a2e7292eed9d" }, "Entity Alias": { "value": "or" @@ -5902,7 +6144,7 @@ "schema": { "type": "string" }, - "example": "cust_b6aaf43a-e6a9-4df6-8c21-f0e0e267c556" + "example": "cust_b84c262d-85a8-447e-a5b0-2d45ae1554c1" }, { "name": "orderId", @@ -5913,29 +6155,18 @@ "type": "string", "format": "uuid" }, - "example": "3060c626-4026-4497-bd36-57af2143a12b" + "example": "4e0bfcbd-4654-47bf-b910-f350e124cc01" }, { - "name": "expand", - "in": "query", - "description": "Defines the properties that should be expanded in the response", + "name": "orderLineId", + "in": "path", + "description": "The ID of the order line", + "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" }, - "examples": { - "Expand none": { - "value": " " - }, - "Expand prices": { - "value": "$price" - }, - "Expand specific property": { - "value": "currency" - }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" - } - } + "example": "cf917076-2ba7-4dd4-92f4-5c3d7cea1e63" }, { "name": "fields", @@ -5958,37 +6189,81 @@ "value": "orderlines[sku,description]" } } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } } ], "requestBody": { "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UpdateOrderLineWithIdRequestDto" - } + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateOrderLineRequestDto" + } + ] } } } }, "responses": { "200": { - "description": "Success", + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } @@ -5996,12 +6271,13 @@ } } }, - "/umbraco/commerce/storefront/api/v1/orders": { - "post": { + "/umbraco/commerce/storefront/api/v1/order/{orderId}/items": { + "delete": { "tags": [ "Order" ], - "summary": "Creates a new Order", + "summary": "Deletes all Order Lines in an Order", + "operationId": "deleteAllOrderLines", "parameters": [ { "name": "Api-Key", @@ -6022,7 +6298,7 @@ }, "examples": { "Entity ID": { - "value": "b53b88b8-005e-49c2-85bd-93513d587ca1" + "value": "308eb479-0d62-4c54-8680-a40ddc83d007" }, "Entity Alias": { "value": "blendid" @@ -6034,10 +6310,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "e5f99a43-6141-4560-b0e1-e0dd6c591725" + "example": "178b3dd7-40d8-452e-b415-7ce5a9805bf8" }, { "name": "Billing-Country", @@ -6048,7 +6323,7 @@ }, "examples": { "Entity ID": { - "value": "55edc2e6-bd07-48b0-a9ae-8ad5cdeb489c" + "value": "e0cb9649-6d13-4a15-84cd-ee7de562fd2b" }, "Entity Alias": { "value": "us" @@ -6064,7 +6339,7 @@ }, "examples": { "Entity ID": { - "value": "a6d4fa59-64bb-4b71-8a46-615ae1932248" + "value": "1b7a48d2-9e9f-4b41-9748-a457a313d802" }, "Entity Alias": { "value": "az" @@ -6080,7 +6355,7 @@ }, "examples": { "Entity ID": { - "value": "b68ab24e-7fb2-4c3c-904d-659f66223e6e" + "value": "0a970134-e29f-42a4-a837-e3b81588af03" }, "Entity Alias": { "value": "us" @@ -6096,7 +6371,7 @@ }, "examples": { "Entity ID": { - "value": "0304d3a1-6adf-48df-8698-ac7be540e905" + "value": "f3ed0b47-53f5-4043-b5c4-be11f235be02" }, "Entity Alias": { "value": "az" @@ -6112,7 +6387,7 @@ }, "examples": { "Entity ID": { - "value": "1f5a4a7d-a26b-46f7-bb7b-056b56a8e874" + "value": "1a2dac15-9685-4702-904f-8b2b8b802e4b" }, "Entity Alias": { "value": "or" @@ -6128,7 +6403,7 @@ }, "examples": { "Entity ID": { - "value": "d18270a7-04f6-4668-ba22-f25c0905483d" + "value": "eefa3926-fdec-4cad-a0b1-69a4514a403d" }, "Entity Alias": { "value": "or" @@ -6151,29 +6426,18 @@ "schema": { "type": "string" }, - "example": "cust_07557567-3a6d-4c1c-a1f5-1bd5ea824af5" + "example": "cust_12aedc30-d3b6-45dd-ac44-a7ffcd28c1f6" }, { - "name": "expand", - "in": "query", - "description": "Defines the properties that should be expanded in the response", + "name": "orderId", + "in": "path", + "description": "The ID of the order", + "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" }, - "examples": { - "Expand none": { - "value": " " - }, - "Expand prices": { - "value": "$price" - }, - "Expand specific property": { - "value": "currency" - }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" - } - } + "example": "4f628282-4f20-4b11-aa0d-8c98bb5d3516" }, { "name": "fields", @@ -6196,47 +6460,80 @@ "value": "orderlines[sku,description]" } } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOrderRequestDto" + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } - }, + ], "responses": { "200": { - "description": "Success", + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } } } - } - }, - "/umbraco/commerce/storefront/api/v1/paymentmethod/{idOrAlias}": { - "get": { + }, + "patch": { "tags": [ - "Payment Method" + "Order" ], - "summary": "Get a Payment Method by ID or Alias", + "summary": "Bulk updates Order Lines in an Order", + "operationId": "updateOrderLines", "parameters": [ { "name": "Api-Key", @@ -6257,7 +6554,7 @@ }, "examples": { "Entity ID": { - "value": "71605a40-8c15-45be-b6b3-7c3276897b78" + "value": "fb4d3901-d2da-406d-8fee-cb746c156a3a" }, "Entity Alias": { "value": "blendid" @@ -6269,10 +6566,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "e20fef42-63b2-4311-99b7-b1cb917d2b33" + "example": "f858e0a6-aaa2-4e07-9665-4be2ea672fb1" }, { "name": "Billing-Country", @@ -6283,7 +6579,7 @@ }, "examples": { "Entity ID": { - "value": "9295363d-b523-40b3-a7f1-ff98755ac6bc" + "value": "fa4d799e-945f-4008-9fbd-251546c56d5f" }, "Entity Alias": { "value": "us" @@ -6299,7 +6595,7 @@ }, "examples": { "Entity ID": { - "value": "868d24c5-661c-4e9c-9e73-9a78fcdbc86a" + "value": "320b334f-0d64-4955-bdd7-7bf6016f30db" }, "Entity Alias": { "value": "az" @@ -6315,7 +6611,7 @@ }, "examples": { "Entity ID": { - "value": "54021f4f-0b2a-4780-a93c-1ff6fb039d27" + "value": "08faa4b9-eb74-4ac2-870b-0f0d6c9c030b" }, "Entity Alias": { "value": "us" @@ -6331,7 +6627,7 @@ }, "examples": { "Entity ID": { - "value": "ae676130-8ce4-4a22-afde-dcfc4a2e370c" + "value": "c1151c54-29ef-40ea-8e73-00b4cdee42f6" }, "Entity Alias": { "value": "az" @@ -6347,7 +6643,7 @@ }, "examples": { "Entity ID": { - "value": "9252cb33-9b93-45d1-aaa3-ed9f3f149b9e" + "value": "d57e09af-8fbe-4d3a-9b4a-7365010a80e5" }, "Entity Alias": { "value": "or" @@ -6363,7 +6659,7 @@ }, "examples": { "Entity ID": { - "value": "b17bf9a8-0e3e-4b1b-93a3-fefb9689b30a" + "value": "9c577cbe-1fc3-49b3-a26a-eb217622d0a0" }, "Entity Alias": { "value": "or" @@ -6386,22 +6682,38 @@ "schema": { "type": "string" }, - "example": "cust_b0239945-7e5a-4a55-8f19-868e6b27cdab" + "example": "cust_f76cbfcf-4607-4a6c-9811-6936a011eeaf" }, { - "name": "idOrAlias", + "name": "orderId", "in": "path", - "description": "The ID or the alias of the given resource", + "description": "The ID of the order", "required": true, + "schema": { + "type": "string", + "format": "uuid" + }, + "example": "1c2c8e52-cc9e-4ee4-89fd-b718e34f433e" + }, + { + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Entity ID": { - "value": "52ff3a45-e9dd-4ef7-a5d1-bf498c0fa012" + "Return all fields": { + "value": " " }, - "Entity Alias": { - "value": "alias" + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, @@ -6426,47 +6738,62 @@ "value": "paymentmethod[taxclass]" } } - }, - { - "name": "fields", - "in": "query", - "description": "Limit the properties returned in the response", - "schema": { - "type": "string" - }, - "examples": { - "Return all fields": { - "value": " " - }, - "Return single field": { - "value": "totalprice" - }, - "Return multiple fields": { - "value": "orderlines,totalprice" - }, - "Return nested fields": { - "value": "orderlines[sku,description]" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateOrderLineWithIdRequestDto" + } + ] + } } } } - ], + }, "responses": { "200": { - "description": "Success", + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PaymentMethodResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { + "400": { + "description": "Bad Request", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } @@ -6474,12 +6801,13 @@ } } }, - "/umbraco/commerce/storefront/api/v1/paymentmethods": { + "/umbraco/commerce/storefront/api/v1/order/{paymentLinkToken}": { "get": { "tags": [ - "Payment Method" + "Order" ], - "summary": "Gets all the Payment Methods in a Store", + "summary": "Gets an Order by Payment Link Token", + "operationId": "getOrderByPaymentLinkToken", "parameters": [ { "name": "Api-Key", @@ -6500,7 +6828,7 @@ }, "examples": { "Entity ID": { - "value": "587947af-2c36-4084-82f4-cfab786a96ea" + "value": "2a7d0f1d-cf60-494b-98f8-f953a7aa6416" }, "Entity Alias": { "value": "blendid" @@ -6512,10 +6840,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "4ea4185f-4dd2-4c2d-82c2-aecf334b0d18" + "example": "8cf86ea8-e80e-464f-a9bd-ede3428b31c9" }, { "name": "Billing-Country", @@ -6526,7 +6853,7 @@ }, "examples": { "Entity ID": { - "value": "685f97ad-c3ff-4b4b-ae3e-2294bd5396ab" + "value": "14059204-31a3-4c69-92a3-c5b040b5e97c" }, "Entity Alias": { "value": "us" @@ -6542,7 +6869,7 @@ }, "examples": { "Entity ID": { - "value": "5e8f5b86-b1b6-40f3-9953-4195ff224b53" + "value": "a3c24bba-605f-455e-8711-ae3fb09538fc" }, "Entity Alias": { "value": "az" @@ -6558,7 +6885,7 @@ }, "examples": { "Entity ID": { - "value": "82ff479b-2c3d-4ce9-a080-24aa9dde11a4" + "value": "c7daec8f-2913-419f-9029-4000fd221650" }, "Entity Alias": { "value": "us" @@ -6574,7 +6901,7 @@ }, "examples": { "Entity ID": { - "value": "3119c012-db73-40f1-99fa-0f7efa953542" + "value": "b999e28e-c43a-4d4e-a5f3-dfd8de33736b" }, "Entity Alias": { "value": "az" @@ -6590,7 +6917,7 @@ }, "examples": { "Entity ID": { - "value": "b0327cb0-7350-463c-940e-0d4c6ef2e893" + "value": "d0919fde-4024-4a1e-b461-d414248e6732" }, "Entity Alias": { "value": "or" @@ -6606,7 +6933,7 @@ }, "examples": { "Entity ID": { - "value": "989e8a06-31fa-40f6-886b-1f47565cc5b9" + "value": "d227118f-378d-48e9-a56c-2288185ed3ff" }, "Entity Alias": { "value": "or" @@ -6629,21 +6956,35 @@ "schema": { "type": "string" }, - "example": "cust_430b99c0-de84-447c-b1d7-c457ddbd476c" + "example": "cust_85a9bfcc-aebc-457c-b44a-40a8619bc03d" }, { - "name": "filter", + "name": "paymentLinkToken", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fields", "in": "query", - "description": "Filter the returned list of items", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Return all results": { + "Return all fields": { "value": " " }, - "Return items allowed in a given country": { - "value": "allowedInCountry:GB" + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, @@ -6668,63 +7009,39 @@ "value": "paymentmethod[taxclass]" } } - }, - { - "name": "fields", - "in": "query", - "description": "Limit the properties returned in the response", - "schema": { - "type": "string" - }, - "examples": { - "Return all fields": { - "value": " " - }, - "Return single field": { - "value": "totalprice" - }, - "Return multiple fields": { - "value": "orderlines,totalprice" - }, - "Return nested fields": { - "value": "orderlines[sku,description]" - } - } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethodResponseDto" - } + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, + "400": { + "description": "Bad Request" + }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } } } }, - "/umbraco/commerce/storefront/api/v1/products": { - "get": { + "/umbraco/commerce/storefront/api/v1/orders": { + "post": { "tags": [ - "Product" + "Order" ], - "summary": "Gets one or more Products by product reference", + "summary": "Creates a new Order", + "operationId": "createOrder", "parameters": [ { "name": "Api-Key", @@ -6745,7 +7062,7 @@ }, "examples": { "Entity ID": { - "value": "ab5c64bf-8a31-468c-baba-ae8d61e73547" + "value": "ef3bcc53-09d9-4114-bd2f-3033bfb51dd4" }, "Entity Alias": { "value": "blendid" @@ -6757,10 +7074,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "bb750847-8a8c-419c-bb9a-163f96d89d7f" + "example": "737d58f7-5b99-4020-8110-d73890858078" }, { "name": "Billing-Country", @@ -6771,7 +7087,7 @@ }, "examples": { "Entity ID": { - "value": "52fbd0e4-e65f-4928-ac1e-e4c8e5250d8a" + "value": "b8a1d8cb-3625-4f1f-8d6b-4f871c69dc1d" }, "Entity Alias": { "value": "us" @@ -6787,7 +7103,7 @@ }, "examples": { "Entity ID": { - "value": "a762c4fc-2601-4331-ab6f-485ce36718c9" + "value": "689e6f39-41be-4276-aa15-29df5c2c323a" }, "Entity Alias": { "value": "az" @@ -6803,7 +7119,7 @@ }, "examples": { "Entity ID": { - "value": "33e7cd54-cbc6-4d1e-a326-967f01d2a3aa" + "value": "9e2ba382-d259-4977-8348-578af7994825" }, "Entity Alias": { "value": "us" @@ -6819,7 +7135,7 @@ }, "examples": { "Entity ID": { - "value": "863e6466-21aa-410a-bf86-1861825690a1" + "value": "2c36d47d-3854-4baf-a264-80d5ffa1fc62" }, "Entity Alias": { "value": "az" @@ -6835,7 +7151,7 @@ }, "examples": { "Entity ID": { - "value": "5517a711-4742-42a7-a733-c315355cff1f" + "value": "3fd2fa08-d951-4ba6-a9a8-4f8623e1f7d0" }, "Entity Alias": { "value": "or" @@ -6851,7 +7167,7 @@ }, "examples": { "Entity ID": { - "value": "57b6cae2-69ad-40ef-ad6f-beb164bc4aff" + "value": "72a737a1-593b-44a4-a2f6-817921571343" }, "Entity Alias": { "value": "or" @@ -6874,21 +7190,27 @@ "schema": { "type": "string" }, - "example": "cust_de245ace-3fb2-4dbd-8cff-f09f67b7f5e7" + "example": "cust_c99bf7f6-048a-4ea5-9e44-d81e3b1065ce" }, { - "name": "productReference", + "name": "fields", "in": "query", - "description": "One or more product references of products / product variants to retrieve.", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "A product": { - "value": "27ee0e97-9dc5-4d47-9a8d-356923ce194c" + "Return all fields": { + "value": " " }, - "A product variant": { - "value": "c8e2f5ae-2ecf-4537-a564-e53825aff7f6:ede5a80b-5f83-4cb2-9b46-2bf291866453" + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, @@ -6913,50 +7235,59 @@ "value": "paymentmethod[taxclass]" } } - }, - { - "name": "fields", - "in": "query", - "description": "Limit the properties returned in the response", - "schema": { - "type": "string" - }, - "examples": { - "Return all fields": { - "value": " " - }, - "Return single field": { - "value": "totalprice" - }, - "Return multiple fields": { - "value": "orderlines,totalprice" - }, - "Return nested fields": { - "value": "orderlines[sku,description]" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/CreateOrderRequestDto" + } + ] } } } - ], + }, "responses": { "200": { - "description": "Success", - "content": { - "application/json": { + "description": "OK", + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/ProductResponseDto" - } + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true + } + } + }, + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderDto" + } + ] } } } }, "400": { "description": "Bad Request", - "content": { - "application/json": { + "headers": { + "Umb-Notifications": { + "description": "The list of notifications produced during the request.", "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationHeaderModel" + }, + "nullable": true } } } @@ -6964,12 +7295,13 @@ } } }, - "/umbraco/commerce/storefront/api/v1/shippingmethod/{idOrAlias}": { + "/umbraco/commerce/storefront/api/v1/paymentmethod/{idOrAlias}": { "get": { "tags": [ - "Shipping Method" + "Payment Method" ], - "summary": "Get a Shipping Method by ID or Alias", + "summary": "Get a Payment Method by ID or Alias", + "operationId": "getPaymentMethodByIdOrAlias", "parameters": [ { "name": "Api-Key", @@ -6990,7 +7322,7 @@ }, "examples": { "Entity ID": { - "value": "3845deb0-8a8c-4c3f-b659-275ecdde7317" + "value": "852c6ca7-ca6a-465a-82a6-d6681652b4a9" }, "Entity Alias": { "value": "blendid" @@ -7002,10 +7334,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "1f56a2a7-00f5-4341-9579-a3a32c0cc5d3" + "example": "def9cf00-6bc6-46b7-84a4-c2ab43382722" }, { "name": "Billing-Country", @@ -7016,7 +7347,7 @@ }, "examples": { "Entity ID": { - "value": "43b6cf87-bd03-4074-9c6f-a65b03654084" + "value": "5d6fa947-d861-4181-bf8f-129b6ca0984b" }, "Entity Alias": { "value": "us" @@ -7032,7 +7363,7 @@ }, "examples": { "Entity ID": { - "value": "7b5bcdf9-eec4-4519-9793-56f43023881b" + "value": "83599f19-be28-42cc-9f21-8dec38a01b88" }, "Entity Alias": { "value": "az" @@ -7048,7 +7379,7 @@ }, "examples": { "Entity ID": { - "value": "748650ba-b7b9-429b-ba13-01e96c4d2127" + "value": "9b329ed3-ce60-45d0-8768-17453d42b180" }, "Entity Alias": { "value": "us" @@ -7064,7 +7395,7 @@ }, "examples": { "Entity ID": { - "value": "8453aca6-45f0-4c04-9de7-c6b346d06926" + "value": "45880094-ed65-4a13-aae0-158a630d7c1f" }, "Entity Alias": { "value": "az" @@ -7080,7 +7411,7 @@ }, "examples": { "Entity ID": { - "value": "e0f21e7b-f3a9-4261-92c4-d9a30c7fc2db" + "value": "f889a5cd-3102-486b-9907-96e3f28389b4" }, "Entity Alias": { "value": "or" @@ -7096,7 +7427,7 @@ }, "examples": { "Entity ID": { - "value": "a94f9577-9ce7-4164-bda4-ef5938dc557f" + "value": "685980df-f1a0-4d0b-994a-6f79660d863b" }, "Entity Alias": { "value": "or" @@ -7119,7 +7450,7 @@ "schema": { "type": "string" }, - "example": "cust_6a30cebe-fd0c-4c3d-84d2-8d5f880dc041" + "example": "cust_a92bc24a-79af-4ca0-82b6-91a3ce2a9523" }, { "name": "idOrAlias", @@ -7127,11 +7458,15 @@ "description": "The ID or the alias of the given resource", "required": true, "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + } + ] }, "examples": { "Entity ID": { - "value": "61060231-d89c-4de0-a7da-33b9465ed755" + "value": "95f59da6-f5b8-4ac7-9b9e-a9343573a0db" }, "Entity Alias": { "value": "alias" @@ -7139,80 +7474,79 @@ } }, { - "name": "expand", + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" + "Return single field": { + "value": "totalprice" }, - "Expand specific property": { - "value": "currency" + "Return multiple fields": { + "value": "orderlines,totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ShippingMethodResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/PaymentMethodDto" + } + ] } } } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } - } + }, + "deprecated": true } }, - "/umbraco/commerce/storefront/api/v1/shippingmethods": { + "/umbraco/commerce/storefront/api/v2/paymentmethod/{idOrAlias}": { "get": { "tags": [ - "Shipping Method" + "Payment Method" ], - "summary": "Gets all the Shipping Methods in a Store", + "summary": "Get a Payment Method by ID or Alias", + "operationId": "getPaymentMethodByIdOrAliasV2", "parameters": [ { "name": "Api-Key", @@ -7233,7 +7567,7 @@ }, "examples": { "Entity ID": { - "value": "2a88d89e-a754-4d5f-b9f8-b4b482ceb2a4" + "value": "584baccb-57e3-4a70-8f30-bc24e4d0f480" }, "Entity Alias": { "value": "blendid" @@ -7245,10 +7579,9 @@ "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "ccee4cae-fe96-4920-bee1-233a43b250fe" + "example": "1c7aaee4-2640-4342-bed8-a97a4594455e" }, { "name": "Billing-Country", @@ -7259,7 +7592,7 @@ }, "examples": { "Entity ID": { - "value": "79e62c9f-6161-4465-b66a-7caf273b5bf0" + "value": "45e11561-b83d-42a7-8925-4b63deb4a3b2" }, "Entity Alias": { "value": "us" @@ -7275,7 +7608,7 @@ }, "examples": { "Entity ID": { - "value": "51c1bf45-ad7a-4c3b-9495-9ee2acb368c6" + "value": "2cb3645b-1309-416d-884b-110bb9be4a76" }, "Entity Alias": { "value": "az" @@ -7291,7 +7624,7 @@ }, "examples": { "Entity ID": { - "value": "47f7c554-7bdb-42f6-99b6-81941a9658b5" + "value": "1d3d7db3-78a0-4ead-8dad-0eb7fd69682f" }, "Entity Alias": { "value": "us" @@ -7307,7 +7640,7 @@ }, "examples": { "Entity ID": { - "value": "6caa7104-e602-40a2-a052-3b6b4a9208c2" + "value": "ac655338-2d8d-440b-8bb2-91ea1cbca7c2" }, "Entity Alias": { "value": "az" @@ -7323,7 +7656,7 @@ }, "examples": { "Entity ID": { - "value": "fcc0aba4-44a7-43c8-b8c7-00138d16a4bd" + "value": "654b9609-ed5e-44df-93a6-6d5ec5aa89c1" }, "Entity Alias": { "value": "or" @@ -7339,7 +7672,7 @@ }, "examples": { "Entity ID": { - "value": "a722f159-238f-4ff1-8ee4-062074f3598b" + "value": "cf378f94-8d71-4eb5-a2e7-db2cb39bebbc" }, "Entity Alias": { "value": "or" @@ -7362,102 +7695,102 @@ "schema": { "type": "string" }, - "example": "cust_d742c337-747e-453c-be07-61d894cb2e0b" + "example": "cust_c6da7ff8-bbe0-4771-ad48-803f230c8b08" }, { - "name": "filter", - "in": "query", - "description": "Filter the returned list of items", + "name": "idOrAlias", + "in": "path", + "description": "The ID or the alias of the given resource", + "required": true, "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + } + ] }, "examples": { - "Return all results": { - "value": " " + "Entity ID": { + "value": "244c8889-9ecd-4875-adf9-f406c5bedbdd" }, - "Return items allowed in a given country": { - "value": "allowedInCountry:GB" + "Entity Alias": { + "value": "alias" } } }, { - "name": "expand", + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" + "Return single field": { + "value": "totalprice" }, - "Expand specific property": { - "value": "currency" + "Return multiple fields": { + "value": "orderlines,totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethodResponseDto" - } + "oneOf": [ + { + "$ref": "#/components/schemas/PaymentMethodV2Dto" + } + ] } } } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } } } }, - "/umbraco/commerce/storefront/api/v1/store/{idOrAlias}": { + "/umbraco/commerce/storefront/api/v1/paymentmethods": { "get": { "tags": [ - "Store" + "Payment Method" ], - "summary": "Gets a Store by ID or Alias", + "summary": "Gets all the Payment Methods in a Store", + "operationId": "searchPaymentMethods", "parameters": [ { "name": "Api-Key", @@ -7468,15 +7801,31 @@ "type": "string" } }, + { + "name": "Store", + "in": "header", + "description": "The ID or the alias of the store", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "25fce666-3226-45b5-a8a9-7e9ace7d97d5" + }, + "Entity Alias": { + "value": "blendid" + } + } + }, { "name": "Current-Order", "in": "header", "description": "The ID of the current order associated with the current session", "schema": { - "type": "string", - "format": "uuid" + "type": "string" }, - "example": "1092cdf5-dda3-4ae4-a07a-81e3a9fd8bfe" + "example": "9b20205b-dea1-4bb3-9ae4-3983b6d28170" }, { "name": "Billing-Country", @@ -7487,7 +7836,7 @@ }, "examples": { "Entity ID": { - "value": "6f34bfec-acd7-46c7-b472-499528af25f4" + "value": "860faba8-ce5f-427d-ac70-6fe1b424a17d" }, "Entity Alias": { "value": "us" @@ -7503,7 +7852,7 @@ }, "examples": { "Entity ID": { - "value": "5cbe3147-a891-4fa7-bd52-d55116d84fca" + "value": "984ff14e-229e-45aa-a737-b3c04f9e49cb" }, "Entity Alias": { "value": "az" @@ -7519,7 +7868,7 @@ }, "examples": { "Entity ID": { - "value": "e4567d73-227b-4817-9b07-95a79f7a9682" + "value": "7d7810f3-f961-4b33-88e4-673f0e340f62" }, "Entity Alias": { "value": "us" @@ -7535,7 +7884,7 @@ }, "examples": { "Entity ID": { - "value": "a5a48afe-1b7d-4540-9a53-f0792c79d6f4" + "value": "e864b801-7a46-4b85-83e8-e037ba829269" }, "Entity Alias": { "value": "az" @@ -7551,7 +7900,7 @@ }, "examples": { "Entity ID": { - "value": "a5cc0430-e423-47fe-8ab8-85e2e3b017a4" + "value": "c18a3230-504d-4b80-9520-1b11f71dfaa5" }, "Entity Alias": { "value": "or" @@ -7567,7 +7916,7 @@ }, "examples": { "Entity ID": { - "value": "ccadbfd4-0f08-418c-8a7f-02dbd736135f" + "value": "4260a567-d083-439d-9609-d1006e617198" }, "Entity Alias": { "value": "or" @@ -7590,508 +7939,3638 @@ "schema": { "type": "string" }, - "example": "cust_95e41d45-068b-47bd-9d13-5a75de4a757e" + "example": "cust_93169ade-35bb-4b04-a6f8-f8e3b5d0c0a1" }, { - "name": "idOrAlias", - "in": "path", - "description": "The ID or the alias of the given resource", - "required": true, + "name": "filter", + "in": "query", + "description": "Filter the returned list of items", "schema": { "type": "string" }, "examples": { - "Entity ID": { - "value": "805e2989-7e91-4649-bbf1-35374f65ac28" + "Return all results": { + "value": " " }, - "Entity Alias": { - "value": "alias" + "Return items allowed in a given country": { + "value": "allowedInCountry:GB" } } }, { - "name": "expand", + "name": "fields", "in": "query", - "description": "Defines the properties that should be expanded in the response", + "description": "Limit the properties returned in the response", "schema": { "type": "string" }, "examples": { - "Expand none": { + "Return all fields": { "value": " " }, - "Expand prices": { - "value": "$price" + "Return single field": { + "value": "totalprice" }, - "Expand specific property": { - "value": "currency" + "Return multiple fields": { + "value": "orderlines,totalprice" }, - "Expand nested properties": { - "value": "paymentmethod[taxclass]" + "Return nested fields": { + "value": "orderlines[sku,description]" } } }, { - "name": "fields", + "name": "expand", "in": "query", - "description": "Limit the properties returned in the response", + "description": "Defines the properties that should be expanded in the response", "schema": { "type": "string" }, "examples": { - "Return all fields": { + "Expand none": { "value": " " }, - "Return single field": { - "value": "totalprice" + "Expand prices": { + "value": "$price" }, - "Return multiple fields": { - "value": "orderlines,totalprice" + "Expand specific property": { + "value": "currency" }, - "Return nested fields": { - "value": "orderlines[sku,description]" + "Expand nested properties": { + "value": "paymentmethod[taxclass]" } } } ], "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StoreResponseDto" + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/PaymentMethodDto" + } + ] + } } } } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "description": "Not Found" } - } + }, + "deprecated": true } - } - }, - "components": { - "schemas": { - "AddProductRequestDto": { - "type": "object", - "properties": { - "productReference": { - "type": "string" - }, - "productVariantReference": { - "type": "string", - "nullable": true - }, - "quantity": { - "type": "number", - "format": "double" + }, + "/umbraco/commerce/storefront/api/v2/paymentmethods": { + "get": { + "tags": [ + "Payment Method" + ], + "summary": "Gets all the Payment Methods in a Store", + "operationId": "searchPaymentMethodsV2", + "parameters": [ + { + "name": "Api-Key", + "in": "header", + "description": "API key specified through configuration to authorize access to the API.", + "required": true, + "schema": { + "type": "string" + } }, - "properties": { - "type": "object", - "additionalProperties": { + { + "name": "Store", + "in": "header", + "description": "The ID or the alias of the store", + "required": true, + "schema": { "type": "string" }, - "nullable": true + "examples": { + "Entity ID": { + "value": "c1e02408-ee77-4621-ac74-b20c64259966" + }, + "Entity Alias": { + "value": "blendid" + } + } }, - "bundleId": { - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "AdjustedAmountDto": { - "type": "object", - "properties": { - "adjustments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AmountAdjustmentDto" + { + "name": "Current-Order", + "in": "header", + "description": "The ID of the current order associated with the current session", + "schema": { + "type": "string" }, - "nullable": true - }, - "withoutAdjustments": { - "$ref": "#/components/schemas/AmountDto" + "example": "e6762698-f318-4c5a-bba1-91d69db57f24" }, - "adjustment": { - "$ref": "#/components/schemas/AmountDto" + { + "name": "Billing-Country", + "in": "header", + "description": "The ID or alias of the session default billing country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "a0ecc69e-cc2f-4625-8dc2-30753609cb68" + }, + "Entity Alias": { + "value": "us" + } + } }, - "value": { - "$ref": "#/components/schemas/AmountDto" - } - }, - "additionalProperties": false - }, - "AdjustedPriceDto": { - "type": "object", - "properties": { - "adjustments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PriceAdjustmentDto" + { + "name": "Billing-Region", + "in": "header", + "description": "The ID or alias of the session default billing region", + "schema": { + "type": "string" }, - "nullable": true + "examples": { + "Entity ID": { + "value": "e77d0cd6-a35b-49df-bcee-2efc48308a97" + }, + "Entity Alias": { + "value": "az" + } + } }, - "withoutAdjustments": { - "$ref": "#/components/schemas/PriceDto" + { + "name": "Shipping-Country", + "in": "header", + "description": "The ID or alias of the session default shipping country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "f3970f87-7e09-40ff-84d7-1778d2a53b06" + }, + "Entity Alias": { + "value": "us" + } + } }, - "adjustment": { - "$ref": "#/components/schemas/PriceDto" + { + "name": "Shipping-Region", + "in": "header", + "description": "The ID or alias of the session default shipping region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "c2963f30-bcfa-46af-bf90-8d5093c72f6f" + }, + "Entity Alias": { + "value": "az" + } + } }, - "value": { - "$ref": "#/components/schemas/PriceDto" - } - }, - "additionalProperties": false - }, - "AdjustedPriceWithPreviousAdjustmentsDto": { - "type": "object", - "properties": { - "adjustments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PriceAdjustmentDto" + { + "name": "Tax-Class", + "in": "header", + "description": "The ID or alias of the session default tax class", + "schema": { + "type": "string" }, - "nullable": true + "examples": { + "Entity ID": { + "value": "2cc0c1de-29cc-4a10-a22a-ccfa1cda16c2" + }, + "Entity Alias": { + "value": "or" + } + } }, - "withoutAdjustments": { - "$ref": "#/components/schemas/PriceDto" + { + "name": "Currency", + "in": "header", + "description": "The ID or alias of the session currency", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "5504ca9d-446a-41e1-8ee4-d12d88e07ee0" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Accept-Language", + "in": "header", + "description": "The ISO culture code of the current session culture", + "schema": { + "type": "string" + }, + "example": "en-US" + }, + { + "name": "Customer-Reference", + "in": "header", + "description": "The unique reference for the customer associated with the current session", + "schema": { + "type": "string" + }, + "example": "cust_377abd98-1265-41e1-b9cb-7ee5cda37be6" + }, + { + "name": "filter", + "in": "query", + "description": "Filter the returned list of items", + "schema": { + "type": "string" + }, + "examples": { + "Return all results": { + "value": " " + }, + "Return items allowed in a given country": { + "value": "allowedInCountry:GB" + } + } + }, + { + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", + "schema": { + "type": "string" + }, + "examples": { + "Return all fields": { + "value": " " + }, + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/PaymentMethodV2Dto" + } + ] + } + } + } + } + }, + "404": { + "description": "Not Found" + } + } + } + }, + "/umbraco/commerce/storefront/api/v1/products": { + "get": { + "tags": [ + "Product" + ], + "summary": "Gets one or more Products by product reference", + "operationId": "getProducts", + "parameters": [ + { + "name": "Api-Key", + "in": "header", + "description": "API key specified through configuration to authorize access to the API.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Store", + "in": "header", + "description": "The ID or the alias of the store", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "573b1f7f-dc4d-49bd-a5b3-7ae753e32307" + }, + "Entity Alias": { + "value": "blendid" + } + } + }, + { + "name": "Current-Order", + "in": "header", + "description": "The ID of the current order associated with the current session", + "schema": { + "type": "string" + }, + "example": "615c83c3-326e-4c82-ba81-3dfa97b74e53" + }, + { + "name": "Billing-Country", + "in": "header", + "description": "The ID or alias of the session default billing country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "51b5ccf6-57b9-4641-b407-25a817b737e6" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Billing-Region", + "in": "header", + "description": "The ID or alias of the session default billing region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "551be988-8fd3-4120-8b9f-38ece5585e92" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Shipping-Country", + "in": "header", + "description": "The ID or alias of the session default shipping country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "c232e18b-919a-4408-a6e5-fe3ab5ef7d54" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Shipping-Region", + "in": "header", + "description": "The ID or alias of the session default shipping region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "4a0e4875-b757-4945-bdc2-f7186dc67b4a" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Tax-Class", + "in": "header", + "description": "The ID or alias of the session default tax class", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "e4dbac33-5b18-47f6-8795-1db15149888c" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Currency", + "in": "header", + "description": "The ID or alias of the session currency", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "64301345-f64f-4d97-8eb6-329e1545e4b0" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Accept-Language", + "in": "header", + "description": "The ISO culture code of the current session culture", + "schema": { + "type": "string" + }, + "example": "en-US" + }, + { + "name": "Customer-Reference", + "in": "header", + "description": "The unique reference for the customer associated with the current session", + "schema": { + "type": "string" + }, + "example": "cust_627edc2c-9547-4f8a-b057-df3040f24dc2" + }, + { + "name": "productReference", + "in": "query", + "description": "One or more product references of products / product variants to retrieve.", + "schema": { + "type": "string" + }, + "examples": { + "A product": { + "value": "34dc4eaf-2800-4fac-899c-b5e6ca94850b" + }, + "A product variant": { + "value": "80463a2d-4481-4ddd-8b5f-438dd7fc0c35:f67f6e4a-0a08-4a3c-b931-69276fe72b8b" + } + } + }, + { + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", + "schema": { + "type": "string" + }, + "examples": { + "Return all fields": { + "value": " " + }, + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ProductDto" + } + ] + } + } + } + } + }, + "400": { + "description": "Bad Request" + } + } + } + }, + "/umbraco/commerce/storefront/api/v1/shippingmethod/{idOrAlias}": { + "get": { + "tags": [ + "Shipping Method" + ], + "summary": "Get a Shipping Method by ID or Alias", + "operationId": "getShippingMethodByIdOrAlias", + "parameters": [ + { + "name": "Api-Key", + "in": "header", + "description": "API key specified through configuration to authorize access to the API.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Store", + "in": "header", + "description": "The ID or the alias of the store", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "b90a7186-f13f-40f0-b45b-67fec2c9011c" + }, + "Entity Alias": { + "value": "blendid" + } + } + }, + { + "name": "Current-Order", + "in": "header", + "description": "The ID of the current order associated with the current session", + "schema": { + "type": "string" + }, + "example": "076eeae9-c4c9-41f9-9145-b8a3fab223c3" + }, + { + "name": "Billing-Country", + "in": "header", + "description": "The ID or alias of the session default billing country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "f63b87ed-d64a-4c29-8786-9c9a8068a1ef" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Billing-Region", + "in": "header", + "description": "The ID or alias of the session default billing region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "333f8d11-7c53-40b7-b6cf-934c4ae6adf9" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Shipping-Country", + "in": "header", + "description": "The ID or alias of the session default shipping country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "f6b88749-d555-4670-9b14-04335c0e8b55" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Shipping-Region", + "in": "header", + "description": "The ID or alias of the session default shipping region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "18a5899c-c202-497c-8a36-d7bb07781961" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Tax-Class", + "in": "header", + "description": "The ID or alias of the session default tax class", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "260eeaf3-7293-4cc6-9794-3408c944f14b" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Currency", + "in": "header", + "description": "The ID or alias of the session currency", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "4dd19787-db4b-4ffd-8c47-910d13e10b0d" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Accept-Language", + "in": "header", + "description": "The ISO culture code of the current session culture", + "schema": { + "type": "string" + }, + "example": "en-US" + }, + { + "name": "Customer-Reference", + "in": "header", + "description": "The unique reference for the customer associated with the current session", + "schema": { + "type": "string" + }, + "example": "cust_8023900c-2ffc-4973-8f8e-ef09cb459561" + }, + { + "name": "idOrAlias", + "in": "path", + "description": "The ID or the alias of the given resource", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string" + } + ] + }, + "examples": { + "Entity ID": { + "value": "f1455c22-c890-4690-96d4-7ba5b78aff5f" + }, + "Entity Alias": { + "value": "alias" + } + } + }, + { + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", + "schema": { + "type": "string" + }, + "examples": { + "Return all fields": { + "value": " " + }, + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingMethodDto" + } + ] + } + } + } + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": true + } + }, + "/umbraco/commerce/storefront/api/v2/shippingmethod/{idOrAlias}": { + "get": { + "tags": [ + "Shipping Method" + ], + "summary": "Get a Shipping Method by ID or Alias", + "operationId": "getShippingMethodByIdOrAliasV2", + "parameters": [ + { + "name": "Api-Key", + "in": "header", + "description": "API key specified through configuration to authorize access to the API.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Store", + "in": "header", + "description": "The ID or the alias of the store", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "997e95a3-1b40-402d-8368-7663d0ff359e" + }, + "Entity Alias": { + "value": "blendid" + } + } + }, + { + "name": "Current-Order", + "in": "header", + "description": "The ID of the current order associated with the current session", + "schema": { + "type": "string" + }, + "example": "382d65b8-3c07-4407-aef3-29689899fcaf" + }, + { + "name": "Billing-Country", + "in": "header", + "description": "The ID or alias of the session default billing country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "7baad57d-0756-4366-9243-28010ddd8351" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Billing-Region", + "in": "header", + "description": "The ID or alias of the session default billing region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "7685c022-0ad9-423e-b6cd-a48081c1f9bb" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Shipping-Country", + "in": "header", + "description": "The ID or alias of the session default shipping country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "48ce9259-4119-48fe-b3de-b6b21fe47f4f" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Shipping-Region", + "in": "header", + "description": "The ID or alias of the session default shipping region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "087f5109-ad17-4bc1-b659-f46ae590b78b" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Tax-Class", + "in": "header", + "description": "The ID or alias of the session default tax class", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "e582c6df-ce3d-4439-a025-2613e104d773" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Currency", + "in": "header", + "description": "The ID or alias of the session currency", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "c3dcc82c-2303-4695-929e-705467aa0fa8" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Accept-Language", + "in": "header", + "description": "The ISO culture code of the current session culture", + "schema": { + "type": "string" + }, + "example": "en-US" + }, + { + "name": "Customer-Reference", + "in": "header", + "description": "The unique reference for the customer associated with the current session", + "schema": { + "type": "string" + }, + "example": "cust_2fc4b28c-68e0-46dd-84d0-9fbfe22ffebd" + }, + { + "name": "idOrAlias", + "in": "path", + "description": "The ID or the alias of the given resource", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string" + } + ] + }, + "examples": { + "Entity ID": { + "value": "e590ca81-8523-4342-a74f-a5adeefd05e4" + }, + "Entity Alias": { + "value": "alias" + } + } + }, + { + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", + "schema": { + "type": "string" + }, + "examples": { + "Return all fields": { + "value": " " + }, + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingMethodV2Dto" + } + ] + } + } + } + }, + "404": { + "description": "Not Found" + } + } + } + }, + "/umbraco/commerce/storefront/api/v1/shippingmethods": { + "get": { + "tags": [ + "Shipping Method" + ], + "summary": "Gets all the Shipping Methods in a Store", + "operationId": "searchShippingMethods", + "parameters": [ + { + "name": "Api-Key", + "in": "header", + "description": "API key specified through configuration to authorize access to the API.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Store", + "in": "header", + "description": "The ID or the alias of the store", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "e408b010-7bba-4235-8d35-340b18939b4d" + }, + "Entity Alias": { + "value": "blendid" + } + } + }, + { + "name": "Current-Order", + "in": "header", + "description": "The ID of the current order associated with the current session", + "schema": { + "type": "string" + }, + "example": "f56f30d2-5f0c-4cf1-9db2-3afbfd26afe3" + }, + { + "name": "Billing-Country", + "in": "header", + "description": "The ID or alias of the session default billing country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "21dabf17-766f-48a7-9fed-8e86dc1431d0" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Billing-Region", + "in": "header", + "description": "The ID or alias of the session default billing region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "f27e9337-e29d-4d31-9583-e772973f3309" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Shipping-Country", + "in": "header", + "description": "The ID or alias of the session default shipping country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "d67f50c9-9765-4326-ac71-23c9cfab9dcb" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Shipping-Region", + "in": "header", + "description": "The ID or alias of the session default shipping region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "9ab4f24a-09a5-408d-bf48-4b20b55e77a1" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Tax-Class", + "in": "header", + "description": "The ID or alias of the session default tax class", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "84a6903a-166c-44e2-a2e3-be17b974da7e" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Currency", + "in": "header", + "description": "The ID or alias of the session currency", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "ef3ed3ed-1f68-46ba-9ee2-662badabfb0e" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Accept-Language", + "in": "header", + "description": "The ISO culture code of the current session culture", + "schema": { + "type": "string" + }, + "example": "en-US" + }, + { + "name": "Customer-Reference", + "in": "header", + "description": "The unique reference for the customer associated with the current session", + "schema": { + "type": "string" + }, + "example": "cust_ae840c37-7d89-4f32-a6e4-9453603c4140" + }, + { + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", + "schema": { + "type": "string" + }, + "examples": { + "Return all fields": { + "value": " " + }, + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the returned list of items", + "schema": { + "type": "string" + }, + "examples": { + "Return all results": { + "value": " " + }, + "Return items allowed in a given country": { + "value": "allowedInCountry:GB" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingMethodDto" + } + ] + } + } + } + } + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": true + } + }, + "/umbraco/commerce/storefront/api/v2/shippingmethods": { + "get": { + "tags": [ + "Shipping Method" + ], + "summary": "Gets all the Shipping Methods in a Store", + "operationId": "searchShippingMethodsV2", + "parameters": [ + { + "name": "Api-Key", + "in": "header", + "description": "API key specified through configuration to authorize access to the API.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Store", + "in": "header", + "description": "The ID or the alias of the store", + "required": true, + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "876996cd-9fad-4d76-9c83-7dfe304d6d86" + }, + "Entity Alias": { + "value": "blendid" + } + } + }, + { + "name": "Current-Order", + "in": "header", + "description": "The ID of the current order associated with the current session", + "schema": { + "type": "string" + }, + "example": "68cbb5e6-659c-450c-ba34-96444580fb3a" + }, + { + "name": "Billing-Country", + "in": "header", + "description": "The ID or alias of the session default billing country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "a6e0a9a3-afd6-4b4e-906e-35d45aea5183" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Billing-Region", + "in": "header", + "description": "The ID or alias of the session default billing region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "2d2a2eff-5b00-48db-b017-1bc2a03fd5b4" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Shipping-Country", + "in": "header", + "description": "The ID or alias of the session default shipping country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "6e1581f2-784a-4fe0-bcb5-62f62795e988" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Shipping-Region", + "in": "header", + "description": "The ID or alias of the session default shipping region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "d9ca7204-4df0-4f5c-bb96-53621241a103" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Tax-Class", + "in": "header", + "description": "The ID or alias of the session default tax class", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "cb0bdf46-53ad-4ca5-af3b-027997da4ed8" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Currency", + "in": "header", + "description": "The ID or alias of the session currency", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "d9912a82-1d91-4b88-bed1-c0fd31f7a004" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Accept-Language", + "in": "header", + "description": "The ISO culture code of the current session culture", + "schema": { + "type": "string" + }, + "example": "en-US" + }, + { + "name": "Customer-Reference", + "in": "header", + "description": "The unique reference for the customer associated with the current session", + "schema": { + "type": "string" + }, + "example": "cust_f3ce48bd-1576-49d5-a198-4c33c001d8f0" + }, + { + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", + "schema": { + "type": "string" + }, + "examples": { + "Return all fields": { + "value": " " + }, + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } + }, + { + "name": "filter", + "in": "query", + "description": "Filter the returned list of items", + "schema": { + "type": "string" + }, + "examples": { + "Return all results": { + "value": " " + }, + "Return items allowed in a given country": { + "value": "allowedInCountry:GB" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingMethodV2Dto" + } + ] + } + } + } + } + }, + "404": { + "description": "Not Found" + } + } + } + }, + "/umbraco/commerce/storefront/api/v1/store/{idOrAlias}": { + "get": { + "tags": [ + "Store" + ], + "summary": "Gets a Store by ID or Alias", + "operationId": "getStoreByIdOrAlias", + "parameters": [ + { + "name": "Api-Key", + "in": "header", + "description": "API key specified through configuration to authorize access to the API.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Current-Order", + "in": "header", + "description": "The ID of the current order associated with the current session", + "schema": { + "type": "string" + }, + "example": "1420ffe0-24a7-4340-842b-72612011be79" + }, + { + "name": "Billing-Country", + "in": "header", + "description": "The ID or alias of the session default billing country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "534539e0-be3d-4f29-a6ca-249078d57f8b" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Billing-Region", + "in": "header", + "description": "The ID or alias of the session default billing region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "a20fae3a-8649-475e-a265-1b6c2625f54d" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Shipping-Country", + "in": "header", + "description": "The ID or alias of the session default shipping country", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "8f8c1ea6-0bec-45f4-83ce-1759060a7925" + }, + "Entity Alias": { + "value": "us" + } + } + }, + { + "name": "Shipping-Region", + "in": "header", + "description": "The ID or alias of the session default shipping region", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "ae32d6fc-857c-47ec-a0ff-b1f2cc84bafd" + }, + "Entity Alias": { + "value": "az" + } + } + }, + { + "name": "Tax-Class", + "in": "header", + "description": "The ID or alias of the session default tax class", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "ca46d002-6a37-47b0-9d62-53d544c3201b" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Currency", + "in": "header", + "description": "The ID or alias of the session currency", + "schema": { + "type": "string" + }, + "examples": { + "Entity ID": { + "value": "0ad0ff55-3f81-4f09-9f78-3bf6b07da951" + }, + "Entity Alias": { + "value": "or" + } + } + }, + { + "name": "Accept-Language", + "in": "header", + "description": "The ISO culture code of the current session culture", + "schema": { + "type": "string" + }, + "example": "en-US" + }, + { + "name": "Customer-Reference", + "in": "header", + "description": "The unique reference for the customer associated with the current session", + "schema": { + "type": "string" + }, + "example": "cust_638e703a-29a4-40b2-bfda-e117eb7c8328" + }, + { + "name": "idOrAlias", + "in": "path", + "description": "The ID or the alias of the given resource", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string" + } + ] + }, + "examples": { + "Entity ID": { + "value": "479626da-5077-4af4-aca8-a6c41509de27" + }, + "Entity Alias": { + "value": "alias" + } + } + }, + { + "name": "fields", + "in": "query", + "description": "Limit the properties returned in the response", + "schema": { + "type": "string" + }, + "examples": { + "Return all fields": { + "value": " " + }, + "Return single field": { + "value": "totalprice" + }, + "Return multiple fields": { + "value": "orderlines,totalprice" + }, + "Return nested fields": { + "value": "orderlines[sku,description]" + } + } + }, + { + "name": "expand", + "in": "query", + "description": "Defines the properties that should be expanded in the response", + "schema": { + "type": "string" + }, + "examples": { + "Expand none": { + "value": " " + }, + "Expand prices": { + "value": "$price" + }, + "Expand specific property": { + "value": "currency" + }, + "Expand nested properties": { + "value": "paymentmethod[taxclass]" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + } + ] + } + } + } + }, + "404": { + "description": "Not Found" + } + } + } + } + }, + "components": { + "schemas": { + "AddProductRequestDto": { + "required": [ + "productReference", + "quantity" + ], + "type": "object", + "properties": { + "productReference": { + "type": "string" + }, + "productVariantReference": { + "type": "string", + "nullable": true + }, + "quantity": { + "type": "number", + "format": "double" + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "bundleId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "AdjustedAmountDto": { + "type": "object", + "properties": { + "adjustments": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AmountAdjustmentDto" + } + ] + }, + "nullable": true + }, + "withoutAdjustments": { + "oneOf": [ + { + "$ref": "#/components/schemas/AmountDto" + } + ], + "nullable": true + }, + "adjustment": { + "oneOf": [ + { + "$ref": "#/components/schemas/AmountDto" + } + ], + "nullable": true + }, + "value": { + "oneOf": [ + { + "$ref": "#/components/schemas/AmountDto" + } + ], + "nullable": true + } + }, + "additionalProperties": false + }, + "AdjustedPriceDto": { + "type": "object", + "properties": { + "adjustments": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceAdjustmentDto" + } + ] + }, + "nullable": true + }, + "withoutAdjustments": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true + }, + "adjustment": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true + }, + "value": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true + } + }, + "additionalProperties": false + }, + "AdjustedPriceWithPreviousAdjustmentsDto": { + "type": "object", + "properties": { + "adjustments": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceAdjustmentDto" + } + ] + }, + "nullable": true + }, + "withoutAdjustments": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true + }, + "adjustment": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true + }, + "value": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true + }, + "previousAdjustments": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true + }, + "withPreviousAdjustments": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true + }, + "totalAdjustment": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true + } + }, + "additionalProperties": false + }, + "AllowedCountryDto": { + "type": "object", + "properties": { + "country": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryDto" + }, + { + "$ref": "#/components/schemas/CountryNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/CountryReferenceDto" + } + ], + "nullable": true + } + }, + "additionalProperties": false + }, + "AmountAdjustmentDto": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "type": { + "type": "string", + "nullable": true + }, + "amount": { + "oneOf": [ + { + "$ref": "#/components/schemas/AmountDto" + } + ], + "nullable": true + }, + "originalAmount": { + "oneOf": [ + { + "$ref": "#/components/schemas/AmountDto" + } + ], + "nullable": true + }, + "metaData": { + "type": "object", + "additionalProperties": { }, + "nullable": true + } + }, + "additionalProperties": false + }, + "AmountDto": { + "type": "object", + "properties": { + "currency": { + "oneOf": [ + { + "$ref": "#/components/schemas/CurrencyReferenceDto" + } + ], + "nullable": true + }, + "value": { + "type": "number", + "format": "double", + "nullable": true + }, + "formatted": { + "oneOf": [ + { + "$ref": "#/components/schemas/FormattedAmountDto" + } + ], + "nullable": true + } + }, + "additionalProperties": false + }, + "ApiContentModel": { + "required": [ + "contentType", + "createDate", + "id", + "name", + "properties", + "route", + "updateDate" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "contentType": { + "type": "string" + }, + "properties": { + "type": "object", + "additionalProperties": { + "nullable": true + } + }, + "name": { + "type": "string" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "updateDate": { + "type": "string", + "format": "date-time" + }, + "route": { + "oneOf": [ + { + "$ref": "#/components/schemas/ApiContentRouteModel" + } + ] + } + }, + "additionalProperties": false + }, + "ApiContentResponseModel": { + "required": [ + "contentType", + "createDate", + "cultures", + "id", + "name", + "properties", + "route", + "updateDate" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "contentType": { + "type": "string" + }, + "properties": { + "type": "object", + "additionalProperties": { + "nullable": true + } + }, + "name": { + "type": "string" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "updateDate": { + "type": "string", + "format": "date-time" + }, + "route": { + "oneOf": [ + { + "$ref": "#/components/schemas/ApiContentRouteModel" + } + ] + }, + "cultures": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/components/schemas/ApiContentRouteModel" + } + ] + } + } + }, + "additionalProperties": false + }, + "ApiContentRouteModel": { + "required": [ + "path", + "startItem" + ], + "type": "object", + "properties": { + "path": { + "type": "string" + }, + "startItem": { + "oneOf": [ + { + "$ref": "#/components/schemas/ApiContentStartItemModel" + } + ] + } + }, + "additionalProperties": false + }, + "ApiContentStartItemModel": { + "required": [ + "id", + "path" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "path": { + "type": "string" + } + }, + "additionalProperties": false + }, + "ApiElementModel": { + "required": [ + "contentType", + "id", + "properties" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "contentType": { + "type": "string" + }, + "properties": { + "type": "object", + "additionalProperties": { + "nullable": true + } + } + }, + "additionalProperties": false + }, + "AttributeCombinationDto": { + "type": "object", + "properties": { + "name": { + "oneOf": [ + { + "$ref": "#/components/schemas/AttributeNameDto" + } + ], + "nullable": true + }, + "value": { + "oneOf": [ + { + "$ref": "#/components/schemas/AttributeValueDto" + } + ], + "nullable": true + } + }, + "additionalProperties": false + }, + "AttributeNameDto": { + "type": "object", + "properties": { + "alias": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "AttributeValueDto": { + "type": "object", + "properties": { + "alias": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CheckoutConfirmDto": { + "required": [ + "orderNumber", + "transactionInfo" + ], + "type": "object", + "properties": { + "orderNumber": { + "type": "string" + }, + "transactionInfo": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderTransactionInfoDto" + } + ] + } + }, + "additionalProperties": false + }, + "CheckoutConfirmRequestDto": { + "required": [ + "amount", + "paymentStatus", + "transactionId" + ], + "type": "object", + "properties": { + "amount": { + "type": "number", + "format": "double" + }, + "fee": { + "type": "number", + "format": "double", + "nullable": true + }, + "transactionId": { + "type": "string" + }, + "paymentStatus": { + "$ref": "#/components/schemas/PaymentStatus" + }, + "metaData": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CheckoutInitializedDto": { + "required": [ + "orderNumber", + "paymentMethod" + ], + "type": "object", + "properties": { + "orderNumber": { + "type": "string" + }, + "paymentMethod": { + "oneOf": [ + { + "$ref": "#/components/schemas/CheckoutPaymentMethodDto" + } + ] + } + }, + "additionalProperties": false + }, + "CheckoutPaymentMethodDto": { + "required": [ + "settings", + "urls" + ], + "type": "object", + "properties": { + "settings": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "metaDataDefinitions": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "urls": { + "oneOf": [ + { + "$ref": "#/components/schemas/CheckoutPaymentMethodUrlsDto" + } + ] + } + }, + "additionalProperties": false + }, + "CheckoutPaymentMethodUrlsDto": { + "required": [ + "callback", + "cancel", + "continue", + "error" + ], + "type": "object", + "properties": { + "continue": { + "type": "string" + }, + "cancel": { + "type": "string" + }, + "error": { + "type": "string" + }, + "callback": { + "type": "string" + } + }, + "additionalProperties": false + }, + "CheckoutTokenDto": { + "required": [ + "orderNumber", + "token" + ], + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "orderNumber": { + "type": "string" + }, + "payUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CountryDto": { + "required": [ + "code", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "code": { + "type": "string" + }, + "name": { + "type": "string", + "nullable": true + }, + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true + }, + "defaultCurrency": { + "oneOf": [ + { + "$ref": "#/components/schemas/CurrencyDto" + }, + { + "$ref": "#/components/schemas/CurrencyNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/CurrencyReferenceDto" + } + ], + "nullable": true + }, + "defaultPaymentMethod": { + "oneOf": [ + { + "$ref": "#/components/schemas/PaymentMethodBaseDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodReferenceDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodV2Dto" + }, + { + "$ref": "#/components/schemas/PaymentMethodWithFeeDto" + } + ], + "nullable": true + }, + "defaultShippingMethod": { + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingMethodBaseDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodReferenceDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodV2Dto" + }, + { + "$ref": "#/components/schemas/ShippingMethodWithRatesDto" + } + ], + "nullable": true + }, + "regions": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/RegionDto" + }, + { + "$ref": "#/components/schemas/RegionNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/RegionReferenceDto" + } + ] + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CountryNamedReferenceDto": { + "required": [ + "code", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "code": { + "type": "string" + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CountryReferenceDto": { + "required": [ + "code", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "code": { + "type": "string" + } + }, + "additionalProperties": false + }, + "CountryRegionTaxClassDto": { + "type": "object", + "properties": { + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true + }, + "country": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryDto" + }, + { + "$ref": "#/components/schemas/CountryNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/CountryReferenceDto" + } + ], + "nullable": true + }, + "region": { + "oneOf": [ + { + "$ref": "#/components/schemas/RegionDto" + }, + { + "$ref": "#/components/schemas/RegionNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/RegionReferenceDto" + } + ], + "nullable": true + }, + "taxRate": { + "type": "number", + "format": "double", + "nullable": true + }, + "taxCode": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateOrderRequestDto": { + "type": "object", + "properties": { + "language": { + "type": "string", + "nullable": true + }, + "currency": { + "oneOf": [ + { + "type": "string" + } + ], + "nullable": true + }, + "taxClass": { + "oneOf": [ + { + "type": "string" + } + ], + "nullable": true + }, + "customerReference": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CurrencyDto": { + "required": [ + "code", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "code": { + "type": "string" + }, + "name": { + "type": "string", + "nullable": true + }, + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true + }, + "culture": { + "type": "string", + "nullable": true + }, + "symbol": { + "type": "string", + "nullable": true + }, + "decimalPlaces": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "decimalSeparator": { + "type": "string", + "nullable": true + }, + "groupSeparator": { + "type": "string", + "nullable": true + }, + "formatTemplate": { + "type": "string", + "nullable": true + }, + "allowedCountries": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AllowedCountryDto" + } + ] + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CurrencyNamedReferenceDto": { + "required": [ + "code", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "code": { + "type": "string" + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CurrencyReferenceDto": { + "required": [ + "code", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "code": { + "type": "string" + } + }, + "additionalProperties": false + }, + "DiscountDto": { + "required": [ + "alias", + "id", + "type" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "alias": { + "type": "string" }, - "adjustment": { - "$ref": "#/components/schemas/PriceDto" + "name": { + "type": "string", + "nullable": true + }, + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/DiscountType" + }, + "expiryDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "DiscountNamedReferenceDto": { + "required": [ + "alias", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "alias": { + "type": "string" + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "DiscountReferenceDto": { + "required": [ + "alias", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" }, + "alias": { + "type": "string" + } + }, + "additionalProperties": false + }, + "DiscountType": { + "enum": [ + "Automatic", + "Code" + ], + "type": "string" + }, + "EventMessageTypeModel": { + "enum": [ + "Default", + "Info", + "Error", + "Success", + "Warning" + ], + "type": "string" + }, + "FormattedAmountDto": { + "type": "object", + "properties": { "value": { - "$ref": "#/components/schemas/PriceDto" + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "FormattedPriceDto": { + "type": "object", + "properties": { + "withoutTax": { + "type": "string", + "nullable": true }, - "previousAdjustments": { - "$ref": "#/components/schemas/PriceDto" + "tax": { + "type": "string", + "nullable": true }, - "withPreviousAdjustments": { - "$ref": "#/components/schemas/PriceDto" + "withTax": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "GiftCardReferenceDto": { + "required": [ + "code", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" }, - "totalAdjustment": { - "$ref": "#/components/schemas/PriceDto" + "code": { + "type": "string" } }, "additionalProperties": false }, - "AllowedCountryDto": { + "HostedCheckoutMode": { + "enum": [ + "Framed", + "Redirect" + ], + "type": "string" + }, + "NotificationHeaderModel": { + "required": [ + "category", + "message", + "type" + ], "type": "object", "properties": { - "country": { - "$ref": "#/components/schemas/CountryReferenceDto" + "message": { + "type": "string" + }, + "category": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/EventMessageTypeModel" } }, "additionalProperties": false }, - "AmountAdjustmentDto": { + "OrderAppliedDiscountCodeDto": { "type": "object", "properties": { - "name": { + "discount": { + "oneOf": [ + { + "$ref": "#/components/schemas/DiscountDto" + }, + { + "$ref": "#/components/schemas/DiscountNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/DiscountReferenceDto" + } + ], + "nullable": true + }, + "code": { + "type": "string", + "nullable": true + }, + "isFulfilled": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "OrderCustomerInfoDto": { + "type": "object", + "properties": { + "customerReference": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "OrderDto": { + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "orderNumber": { + "type": "string", + "nullable": true + }, + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true + }, + "cartNumber": { "type": "string", "nullable": true }, - "type": { - "type": "string", + "languageIsoCode": { + "type": "string", + "nullable": true + }, + "currency": { + "oneOf": [ + { + "$ref": "#/components/schemas/CurrencyDto" + }, + { + "$ref": "#/components/schemas/CurrencyNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/CurrencyReferenceDto" + } + ], + "nullable": true + }, + "taxClass": { + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], + "nullable": true + }, + "taxRate": { + "type": "number", + "format": "double", + "nullable": true + }, + "orderStatus": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderStatusDto" + }, + { + "$ref": "#/components/schemas/OrderStatusNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/OrderStatusReferenceDto" + } + ], + "nullable": true + }, + "customerInfo": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderCustomerInfoDto" + } + ], + "nullable": true + }, + "paymentInfo": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderPaymentInfoDto" + } + ], + "nullable": true + }, + "shippingInfo": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderShippingInfoDto" + } + ], + "nullable": true + }, + "transactionInfo": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderTransactionInfoDto" + } + ], + "nullable": true + }, + "discountCodes": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderAppliedDiscountCodeDto" + } + ] + }, + "nullable": true + }, + "discounts": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/DiscountReferenceDto" + } + ] + }, + "nullable": true + }, + "giftCards": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/GiftCardReferenceDto" + } + ] + }, + "nullable": true + }, + "totalQuantity": { + "type": "number", + "format": "double", + "nullable": true + }, + "subtotalPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/AdjustedPriceWithPreviousAdjustmentsDto" + } + ], + "nullable": true + }, + "totalPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/AdjustedPriceWithPreviousAdjustmentsDto" + } + ], + "nullable": true + }, + "transactionAmount": { + "oneOf": [ + { + "$ref": "#/components/schemas/AdjustedAmountDto" + } + ], + "nullable": true + }, + "orderLines": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderLineDto" + } + ] + }, + "nullable": true + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, "nullable": true }, - "amount": { - "$ref": "#/components/schemas/AmountDto" + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true }, - "originalAmount": { - "$ref": "#/components/schemas/AmountDto" - } - }, - "additionalProperties": false - }, - "AmountDto": { - "type": "object", - "properties": { - "currency": { - "$ref": "#/components/schemas/CurrencyReferenceDto" + "createDate": { + "type": "string", + "format": "date-time", + "nullable": true }, - "value": { - "type": "number", - "format": "double", + "updateDate": { + "type": "string", + "format": "date-time", "nullable": true }, - "formatted": { - "$ref": "#/components/schemas/FormattedAmountDto" - } - }, - "additionalProperties": false - }, - "AttributeCombinationDto": { - "type": "object", - "properties": { - "name": { - "$ref": "#/components/schemas/AttributeNameDto" + "finalizedDate": { + "type": "string", + "format": "date-time", + "nullable": true }, - "value": { - "$ref": "#/components/schemas/AttributeValueDto" + "isFinalized": { + "type": "boolean", + "nullable": true } }, "additionalProperties": false }, - "AttributeNameDto": { + "OrderLineDto": { + "required": [ + "id" + ], "type": "object", "properties": { - "alias": { + "id": { + "type": "string", + "format": "uuid" + }, + "productReference": { "type": "string", "nullable": true }, - "name": { + "productVariantReference": { "type": "string", "nullable": true - } - }, - "additionalProperties": false - }, - "AttributeValueDto": { - "type": "object", - "properties": { - "alias": { + }, + "sku": { "type": "string", "nullable": true }, "name": { "type": "string", "nullable": true - } - }, - "additionalProperties": false - }, - "CheckoutConfirmRequestDto": { - "type": "object", - "properties": { - "amount": { - "type": "number", - "format": "double" }, - "fee": { + "quantity": { "type": "number", "format": "double", "nullable": true }, - "transactionId": { - "type": "string" + "taxClass": { + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], + "nullable": true }, - "paymentStatus": { - "$ref": "#/components/schemas/PaymentStatus" + "bundleId": { + "type": "string", + "nullable": true }, - "metaData": { + "orderLines": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/OrderLineDto" + } + ] + }, + "nullable": true + }, + "properties": { "type": "object", "additionalProperties": { "type": "string" }, "nullable": true - } - }, - "additionalProperties": false - }, - "CheckoutConfirmResponseDto": { - "type": "object", - "properties": { - "orderNumber": { - "type": "string" }, - "transactionInfo": { - "$ref": "#/components/schemas/OrderTransactionInfoResponseDto" + "attributes": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AttributeCombinationDto" + } + ] + }, + "nullable": true + }, + "basePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/AdjustedPriceDto" + } + ], + "nullable": true + }, + "unitPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/AdjustedPriceDto" + } + ], + "nullable": true + }, + "taxRate": { + "type": "number", + "format": "double", + "nullable": true + }, + "totalPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/AdjustedPriceWithPreviousAdjustmentsDto" + } + ], + "nullable": true } }, "additionalProperties": false }, - "CheckoutInitializeResponseDto": { + "OrderPaymentInfoDto": { "type": "object", "properties": { - "orderNumber": { - "type": "string" + "country": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryDto" + }, + { + "$ref": "#/components/schemas/CountryNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/CountryReferenceDto" + } + ], + "nullable": true + }, + "region": { + "oneOf": [ + { + "$ref": "#/components/schemas/RegionDto" + }, + { + "$ref": "#/components/schemas/RegionNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/RegionReferenceDto" + } + ], + "nullable": true }, "paymentMethod": { - "$ref": "#/components/schemas/CheckoutPaymentMethodResponseDto" - } - }, - "additionalProperties": false - }, - "CheckoutPaymentMethodResponseDto": { - "type": "object", - "properties": { - "settings": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "oneOf": [ + { + "$ref": "#/components/schemas/PaymentMethodBaseDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodReferenceDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodV2Dto" + }, + { + "$ref": "#/components/schemas/PaymentMethodWithFeeDto" + } + ], + "nullable": true }, - "metaDataDefinitions": { - "type": "object", - "additionalProperties": { - "type": "string" - }, + "taxRate": { + "type": "number", + "format": "double", "nullable": true }, - "urls": { - "$ref": "#/components/schemas/CheckoutPaymentMethodUrlsResponseDto" + "totalPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/AdjustedPriceDto" + } + ], + "nullable": true } }, "additionalProperties": false }, - "CheckoutPaymentMethodUrlsResponseDto": { + "OrderShippingInfoDto": { "type": "object", "properties": { - "continue": { - "type": "string" + "country": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryDto" + }, + { + "$ref": "#/components/schemas/CountryNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/CountryReferenceDto" + } + ], + "nullable": true }, - "cancel": { - "type": "string" + "region": { + "oneOf": [ + { + "$ref": "#/components/schemas/RegionDto" + }, + { + "$ref": "#/components/schemas/RegionNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/RegionReferenceDto" + } + ], + "nullable": true }, - "error": { - "type": "string" + "shippingMethod": { + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingMethodBaseDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodReferenceDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodV2Dto" + }, + { + "$ref": "#/components/schemas/ShippingMethodWithRatesDto" + } + ], + "nullable": true }, - "callback": { - "type": "string" - } - }, - "additionalProperties": false - }, - "CheckoutTokenResponseDto": { - "type": "object", - "properties": { - "token": { - "type": "string" + "shippingOption": { + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingOptionDto" + } + ], + "nullable": true }, - "orderNumber": { - "type": "string" + "taxRate": { + "type": "number", + "format": "double", + "nullable": true }, - "payUrl": { - "type": "string", + "totalPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/AdjustedPriceDto" + } + ], "nullable": true } }, "additionalProperties": false }, - "CountryReferenceDto": { + "OrderStatusDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, - "code": { + "alias": { "type": "string" + }, + "name": { + "type": "string", + "nullable": true + }, + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true + }, + "color": { + "type": "string", + "nullable": true } }, "additionalProperties": false }, - "CountryResponseDto": { + "OrderStatusNamedReferenceDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, - "code": { + "alias": { "type": "string" }, "name": { - "type": "string", - "nullable": true - }, - "defaultCurrency": { - "$ref": "#/components/schemas/CurrencyReferenceDto" - }, - "defaultPaymentMethod": { - "$ref": "#/components/schemas/PaymentMethodReferenceDto" - }, - "defaultShippingMethod": { - "$ref": "#/components/schemas/ShippingMethodReferenceDto" - }, - "regions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RegionReferenceDto" - }, + "type": "string", "nullable": true } }, "additionalProperties": false }, - "CreateOrderRequestDto": { + "OrderStatusReferenceDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { - "language": { - "type": "string", - "nullable": true - }, - "currency": { - "type": "string", - "nullable": true - }, - "taxClass": { + "id": { "type": "string", - "nullable": true + "format": "uuid" }, - "customerReference": { - "type": "string", - "nullable": true + "alias": { + "type": "string" } }, "additionalProperties": false }, - "CurrencyReferenceDto": { + "OrderTransactionInfoDto": { + "required": [ + "paymentStatus" + ], "type": "object", "properties": { - "id": { + "transactionId": { "type": "string", - "format": "uuid" + "nullable": true }, - "code": { - "type": "string" + "authorizedAmount": { + "oneOf": [ + { + "$ref": "#/components/schemas/AmountDto" + } + ], + "nullable": true + }, + "feeAmount": { + "oneOf": [ + { + "$ref": "#/components/schemas/AmountDto" + } + ], + "nullable": true + }, + "baseCurrencyExchangeRate": { + "type": "number", + "format": "double", + "nullable": true + }, + "paymentStatus": { + "$ref": "#/components/schemas/PaymentStatus" } }, "additionalProperties": false }, - "CurrencyResponseDto": { + "PaymentMethodBaseDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, - "code": { + "alias": { "type": "string" }, "name": { "type": "string", "nullable": true }, - "culture": { + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true + }, + "sku": { "type": "string", "nullable": true }, - "formatTemplate": { + "taxClass": { + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], + "nullable": true + }, + "paymentProviderAlias": { "type": "string", "nullable": true }, - "allowedCountries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AllowedCountryDto" - }, + "imageUrl": { + "type": "string", "nullable": true } }, "additionalProperties": false }, - "DiscountReferenceDto": { + "PaymentMethodDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { @@ -8100,361 +11579,561 @@ }, "alias": { "type": "string" - } - }, - "additionalProperties": false - }, - "FormattedAmountDto": { - "type": "object", - "properties": { - "value": { + }, + "name": { "type": "string", "nullable": true - } - }, - "additionalProperties": false - }, - "FormattedPriceDto": { - "type": "object", - "properties": { - "withoutTax": { + }, + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true + }, + "sku": { "type": "string", "nullable": true }, - "tax": { + "taxClass": { + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], + "nullable": true + }, + "paymentProviderAlias": { "type": "string", "nullable": true }, - "withTax": { + "imageUrl": { "type": "string", "nullable": true + }, + "price": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true, + "deprecated": true } }, "additionalProperties": false }, - "GiftCardReferenceDto": { + "PaymentMethodNamedReferenceDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, - "code": { + "alias": { "type": "string" + }, + "name": { + "type": "string", + "nullable": true } }, "additionalProperties": false }, - "HostedCheckoutMode": { - "enum": [ - "Framed", - "Redirect" + "PaymentMethodReferenceDto": { + "required": [ + "alias", + "id" ], - "type": "integer", - "format": "int32" - }, - "IApiElementModel": { "type": "object", "properties": { "id": { "type": "string", - "format": "uuid", - "readOnly": true - }, - "contentType": { - "type": "string", - "readOnly": true + "format": "uuid" }, - "properties": { - "type": "object", - "additionalProperties": { }, - "readOnly": true + "alias": { + "type": "string" } }, "additionalProperties": false }, - "OrderAppliedDiscountCodeResponseDto": { + "PaymentMethodV2Dto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { - "discount": { - "$ref": "#/components/schemas/DiscountReferenceDto" + "id": { + "type": "string", + "format": "uuid" }, - "code": { + "alias": { + "type": "string" + }, + "name": { "type": "string", "nullable": true }, - "isFulfilled": { - "type": "boolean", + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], "nullable": true - } - }, - "additionalProperties": false - }, - "OrderCustomerInfoResponseDto": { - "type": "object", - "properties": { - "customerReference": { + }, + "sku": { "type": "string", "nullable": true }, - "firstName": { - "type": "string", + "taxClass": { + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], "nullable": true }, - "lastName": { + "paymentProviderAlias": { "type": "string", "nullable": true }, - "email": { + "imageUrl": { "type": "string", "nullable": true } }, "additionalProperties": false }, - "OrderLineResponseDto": { + "PaymentMethodWithFeeDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, - "productReference": { + "alias": { + "type": "string" + }, + "name": { "type": "string", "nullable": true }, - "productVariantReference": { - "type": "string", + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], "nullable": true }, "sku": { "type": "string", "nullable": true }, - "name": { - "type": "string", + "taxClass": { + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], "nullable": true }, - "quantity": { - "type": "number", - "format": "double", + "paymentProviderAlias": { + "type": "string", "nullable": true }, - "taxClass": { - "$ref": "#/components/schemas/TaxClassReferenceDto" + "imageUrl": { + "type": "string", + "nullable": true }, - "bundleId": { + "fee": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true + } + }, + "additionalProperties": false + }, + "PaymentStatus": { + "enum": [ + "Initialized", + "Authorized", + "Captured", + "Cancelled", + "Refunded", + "PendingExternalSystem", + "Error" + ], + "type": "string" + }, + "PriceAdjustmentDto": { + "type": "object", + "properties": { + "name": { "type": "string", "nullable": true }, - "orderLines": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderLineResponseDto" - }, + "type": { + "type": "string", "nullable": true }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, + "price": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], "nullable": true }, - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AttributeCombinationDto" - }, + "originalPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], "nullable": true }, - "basePrice": { - "$ref": "#/components/schemas/AdjustedPriceDto" + "metaData": { + "type": "object", + "additionalProperties": { }, + "nullable": true + } + }, + "additionalProperties": false + }, + "PriceDto": { + "type": "object", + "properties": { + "currency": { + "oneOf": [ + { + "$ref": "#/components/schemas/CurrencyReferenceDto" + } + ], + "nullable": true }, - "unitPrice": { - "$ref": "#/components/schemas/AdjustedPriceDto" + "withoutTax": { + "type": "number", + "format": "double", + "nullable": true }, - "taxRate": { + "tax": { "type": "number", "format": "double", "nullable": true }, - "totalPrice": { - "$ref": "#/components/schemas/AdjustedPriceWithPreviousAdjustmentsDto" - } - }, - "additionalProperties": false - }, - "OrderPaymentInfoResponseDto": { - "type": "object", - "properties": { - "country": { - "$ref": "#/components/schemas/CountryReferenceDto" - }, - "region": { - "$ref": "#/components/schemas/RegionReferenceDto" - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethodReferenceDto" - }, - "taxRate": { + "withTax": { "type": "number", "format": "double", "nullable": true }, - "totalPrice": { - "$ref": "#/components/schemas/AdjustedPriceDto" + "formatted": { + "oneOf": [ + { + "$ref": "#/components/schemas/FormattedPriceDto" + } + ], + "nullable": true } }, "additionalProperties": false }, - "OrderResponseDto": { + "ProductDto": { + "required": [ + "productReference", + "sku" + ], "type": "object", "properties": { - "id": { - "type": "string", - "format": "uuid" + "productReference": { + "type": "string" }, - "cartNumber": { + "sku": { + "type": "string" + }, + "name": { "type": "string", "nullable": true }, - "orderNumber": { + "productVariantReference": { "type": "string", "nullable": true }, - "languageIsoCode": { + "imageUrl": { "type": "string", "nullable": true }, - "currency": { - "$ref": "#/components/schemas/CurrencyReferenceDto" - }, - "taxClass": { - "$ref": "#/components/schemas/TaxClassReferenceDto" + "price": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true }, - "taxRate": { + "stock": { "type": "number", "format": "double", "nullable": true }, - "orderStatus": { - "$ref": "#/components/schemas/OrderStatusReferenceDto" - }, - "customerInfo": { - "$ref": "#/components/schemas/OrderCustomerInfoResponseDto" - }, - "paymentInfo": { - "$ref": "#/components/schemas/OrderPaymentInfoResponseDto" - }, - "shippingInfo": { - "$ref": "#/components/schemas/OrderShippingInfoResponseDto" - }, - "transactionInfo": { - "$ref": "#/components/schemas/OrderTransactionInfoResponseDto" - }, - "discountCodes": { + "attributes": { "type": "array", "items": { - "$ref": "#/components/schemas/OrderAppliedDiscountCodeResponseDto" + "oneOf": [ + { + "$ref": "#/components/schemas/AttributeCombinationDto" + } + ] }, "nullable": true }, - "discounts": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DiscountReferenceDto" - }, + "taxClass": { + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], "nullable": true }, - "giftCards": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GiftCardReferenceDto" + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" }, "nullable": true }, - "totalQuantity": { - "type": "number", - "format": "double", + "isGiftCard": { + "type": "boolean", "nullable": true - }, - "subtotalPrice": { - "$ref": "#/components/schemas/AdjustedPriceWithPreviousAdjustmentsDto" - }, - "totalPrice": { - "$ref": "#/components/schemas/AdjustedPriceWithPreviousAdjustmentsDto" - }, - "transactionAmount": { - "$ref": "#/components/schemas/AdjustedAmountDto" - }, - "orderLines": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderLineResponseDto" - }, + } + }, + "additionalProperties": false + }, + "ProductVariantItemDto": { + "type": "object", + "properties": { + "content": { + "oneOf": [ + { + "$ref": "#/components/schemas/ApiContentModel" + }, + { + "$ref": "#/components/schemas/ApiContentResponseModel" + }, + { + "$ref": "#/components/schemas/ApiElementModel" + } + ], "nullable": true }, - "properties": { + "attributes": { "type": "object", "additionalProperties": { "type": "string" }, "nullable": true }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, + "isDefault": { + "type": "boolean", "nullable": true + } + }, + "additionalProperties": false + }, + "RegionDto": { + "required": [ + "code", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" }, - "createDate": { + "code": { + "type": "string" + }, + "name": { "type": "string", - "format": "date-time", "nullable": true }, - "updateDate": { - "type": "string", - "format": "date-time", + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], "nullable": true }, - "finalizedDate": { - "type": "string", - "format": "date-time", + "country": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryDto" + }, + { + "$ref": "#/components/schemas/CountryNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/CountryReferenceDto" + } + ], "nullable": true }, - "isFinalized": { - "type": "boolean", + "defaultPaymentMethod": { + "oneOf": [ + { + "$ref": "#/components/schemas/PaymentMethodBaseDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodReferenceDto" + }, + { + "$ref": "#/components/schemas/PaymentMethodV2Dto" + }, + { + "$ref": "#/components/schemas/PaymentMethodWithFeeDto" + } + ], + "nullable": true + }, + "defaultShippingMethod": { + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingMethodBaseDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodReferenceDto" + }, + { + "$ref": "#/components/schemas/ShippingMethodV2Dto" + }, + { + "$ref": "#/components/schemas/ShippingMethodWithRatesDto" + } + ], "nullable": true } }, "additionalProperties": false }, - "OrderShippingInfoResponseDto": { + "RegionNamedReferenceDto": { + "required": [ + "code", + "id" + ], "type": "object", "properties": { - "country": { - "$ref": "#/components/schemas/CountryReferenceDto" - }, - "region": { - "$ref": "#/components/schemas/RegionReferenceDto" + "id": { + "type": "string", + "format": "uuid" }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethodReferenceDto" + "code": { + "type": "string" }, - "taxRate": { - "type": "number", - "format": "double", + "name": { + "type": "string", "nullable": true + } + }, + "additionalProperties": false + }, + "RegionReferenceDto": { + "required": [ + "code", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" }, - "totalPrice": { - "$ref": "#/components/schemas/AdjustedPriceDto" + "code": { + "type": "string" } }, "additionalProperties": false }, - "OrderStatusReferenceDto": { + "ShippingMethodBaseDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { @@ -8463,35 +12142,142 @@ }, "alias": { "type": "string" + }, + "name": { + "type": "string", + "nullable": true + }, + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true + }, + "sku": { + "type": "string", + "nullable": true + }, + "taxClass": { + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], + "nullable": true + }, + "imageUrl": { + "type": "string", + "nullable": true } }, "additionalProperties": false }, - "OrderTransactionInfoResponseDto": { + "ShippingMethodDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { - "transactionId": { + "id": { + "type": "string", + "format": "uuid" + }, + "alias": { + "type": "string" + }, + "name": { "type": "string", "nullable": true }, - "authorizedAmount": { - "$ref": "#/components/schemas/AmountDto" + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true }, - "feeAmount": { - "$ref": "#/components/schemas/AmountDto" + "sku": { + "type": "string", + "nullable": true }, - "baseCurrencyExchangeRate": { - "type": "number", - "format": "double", + "taxClass": { + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], + "nullable": true + }, + "imageUrl": { + "type": "string", + "nullable": true + }, + "price": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], + "nullable": true, + "deprecated": true + } + }, + "additionalProperties": false + }, + "ShippingMethodNamedReferenceDto": { + "required": [ + "alias", + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "alias": { + "type": "string" + }, + "name": { + "type": "string", "nullable": true - }, - "paymentStatus": { - "$ref": "#/components/schemas/PaymentStatus" } }, "additionalProperties": false }, - "PaymentMethodReferenceDto": { + "ShippingMethodReferenceDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { @@ -8504,7 +12290,11 @@ }, "additionalProperties": false }, - "PaymentMethodResponseDto": { + "ShippingMethodV2Dto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { @@ -8518,20 +12308,38 @@ "type": "string", "nullable": true }, + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true + }, "sku": { "type": "string", "nullable": true }, "taxClass": { - "$ref": "#/components/schemas/TaxClassReferenceDto" - }, - "paymentProviderAlias": { - "type": "string", + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], "nullable": true }, - "price": { - "$ref": "#/components/schemas/PriceDto" - }, "imageUrl": { "type": "string", "nullable": true @@ -8539,181 +12347,208 @@ }, "additionalProperties": false }, - "PaymentStatus": { - "enum": [ - "Initialized", - "Authorized", - "Captured", - "Cancelled", - "Refunded", - "PendingExternalSystem", - "Error" + "ShippingMethodWithRatesDto": { + "required": [ + "alias", + "id" ], - "type": "integer", - "format": "int32" - }, - "PriceAdjustmentDto": { "type": "object", "properties": { - "name": { + "id": { "type": "string", - "nullable": true + "format": "uuid" }, - "type": { + "alias": { + "type": "string" + }, + "name": { "type": "string", "nullable": true }, - "price": { - "$ref": "#/components/schemas/PriceDto" - }, - "originalPrice": { - "$ref": "#/components/schemas/PriceDto" - } - }, - "additionalProperties": false - }, - "PriceDto": { - "type": "object", - "properties": { - "currency": { - "$ref": "#/components/schemas/CurrencyReferenceDto" + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], + "nullable": true }, - "withoutTax": { - "type": "number", - "format": "double", + "sku": { + "type": "string", "nullable": true }, - "tax": { - "type": "number", - "format": "double", + "taxClass": { + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], "nullable": true }, - "withTax": { - "type": "number", - "format": "double", + "imageUrl": { + "type": "string", "nullable": true }, - "formatted": { - "$ref": "#/components/schemas/FormattedPriceDto" + "rates": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingRateDto" + } + ] + }, + "nullable": true } }, "additionalProperties": false }, - "ProblemDetails": { + "ShippingOptionDto": { "type": "object", "properties": { - "type": { + "id": { "type": "string", "nullable": true }, - "title": { + "name": { "type": "string", "nullable": true - }, - "status": { - "type": "integer", - "format": "int32", + } + }, + "additionalProperties": false + }, + "ShippingRateDto": { + "type": "object", + "properties": { + "option": { + "oneOf": [ + { + "$ref": "#/components/schemas/ShippingOptionDto" + } + ], "nullable": true }, - "detail": { + "packageId": { "type": "string", + "format": "uuid", "nullable": true }, - "instance": { - "type": "string", + "value": { + "oneOf": [ + { + "$ref": "#/components/schemas/PriceDto" + } + ], "nullable": true } }, - "additionalProperties": { } + "additionalProperties": false }, - "ProductResponseDto": { + "StoreDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { - "productReference": { - "type": "string" - }, - "productVariantReference": { + "id": { "type": "string", - "nullable": true + "format": "uuid" }, - "sku": { - "type": "string", - "nullable": true + "alias": { + "type": "string" }, "name": { "type": "string", "nullable": true }, - "imageUrl": { - "type": "string", - "nullable": true - }, - "price": { - "$ref": "#/components/schemas/PriceDto" - }, - "stock": { - "type": "number", - "format": "double", - "nullable": true - }, - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AttributeCombinationDto" - }, - "nullable": true - }, - "taxClass": { - "$ref": "#/components/schemas/TaxClassReferenceDto" - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, + "defaultCountry": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryDto" + }, + { + "$ref": "#/components/schemas/CountryNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/CountryReferenceDto" + } + ], "nullable": true }, - "isGiftCard": { - "type": "boolean", + "defaultTaxClass": { + "oneOf": [ + { + "$ref": "#/components/schemas/TaxClassDto" + }, + { + "$ref": "#/components/schemas/TaxClassNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/TaxClassReferenceDto" + } + ], "nullable": true - } - }, - "additionalProperties": false - }, - "ProductVariantItemDto": { - "type": "object", - "properties": { - "content": { - "$ref": "#/components/schemas/IApiElementModel" }, - "attributes": { - "type": "object", - "additionalProperties": { - "type": "string" - }, + "baseCurrency": { + "oneOf": [ + { + "$ref": "#/components/schemas/CurrencyDto" + }, + { + "$ref": "#/components/schemas/CurrencyNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/CurrencyReferenceDto" + } + ], "nullable": true }, - "isDefault": { + "pricesIncludeTax": { "type": "boolean", "nullable": true } }, "additionalProperties": false }, - "RegionReferenceDto": { + "StoreNamedReferenceDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, - "code": { + "alias": { "type": "string" + }, + "name": { + "type": "string", + "nullable": true } }, "additionalProperties": false }, - "ShippingMethodReferenceDto": { + "StoreReferenceDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { @@ -8726,7 +12561,11 @@ }, "additionalProperties": false }, - "ShippingMethodResponseDto": { + "TaxClassDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { @@ -8740,24 +12579,57 @@ "type": "string", "nullable": true }, - "sku": { - "type": "string", + "store": { + "oneOf": [ + { + "$ref": "#/components/schemas/StoreDto" + }, + { + "$ref": "#/components/schemas/StoreNamedReferenceDto" + }, + { + "$ref": "#/components/schemas/StoreReferenceDto" + } + ], "nullable": true }, - "taxClass": { - "$ref": "#/components/schemas/TaxClassReferenceDto" + "defaultTaxRate": { + "type": "number", + "format": "double", + "nullable": true }, - "price": { - "$ref": "#/components/schemas/PriceDto" + "defaultTaxCode": { + "type": "string", + "nullable": true }, - "imageUrl": { + "taxRate": { + "type": "number", + "format": "double", + "nullable": true + }, + "taxCode": { "type": "string", "nullable": true + }, + "countryRegionTaxClasses": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryRegionTaxClassDto" + } + ] + }, + "nullable": true } }, "additionalProperties": false }, - "StoreResponseDto": { + "TaxClassNamedReferenceDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { @@ -8770,24 +12642,15 @@ "name": { "type": "string", "nullable": true - }, - "defaultCountry": { - "$ref": "#/components/schemas/CountryReferenceDto" - }, - "defaultTaxClass": { - "$ref": "#/components/schemas/TaxClassReferenceDto" - }, - "baseCurrency": { - "$ref": "#/components/schemas/CurrencyReferenceDto" - }, - "pricesIncludeTax": { - "type": "boolean", - "nullable": true } }, "additionalProperties": false }, "TaxClassReferenceDto": { + "required": [ + "alias", + "id" + ], "type": "object", "properties": { "id": { @@ -8820,11 +12683,19 @@ "nullable": true }, "country": { - "type": "string", + "oneOf": [ + { + "type": "string" + } + ], "nullable": true }, "region": { - "type": "string", + "oneOf": [ + { + "type": "string" + } + ], "nullable": true } }, @@ -8913,7 +12784,11 @@ "nullable": true }, "taxClass": { - "type": "string", + "oneOf": [ + { + "type": "string" + } + ], "nullable": true }, "properties": { @@ -8927,6 +12802,9 @@ "additionalProperties": false }, "UpdateOrderLineWithIdRequestDto": { + "required": [ + "id" + ], "type": "object", "properties": { "quantityIncrement": { @@ -8945,7 +12823,11 @@ "nullable": true }, "taxClass": { - "type": "string", + "oneOf": [ + { + "type": "string" + } + ], "nullable": true }, "properties": { @@ -8970,11 +12852,19 @@ "nullable": true }, "currency": { - "type": "string", + "oneOf": [ + { + "type": "string" + } + ], "nullable": true }, "taxClass": { - "type": "string", + "oneOf": [ + { + "type": "string" + } + ], "nullable": true }, "customerReference": { @@ -8982,20 +12872,47 @@ "nullable": true }, "customer": { - "$ref": "#/components/schemas/UpdateCustomerRequestDto" + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateCustomerRequestDto" + } + ], + "nullable": true }, "billingAddress": { - "$ref": "#/components/schemas/UpdateAddressRequestDto" + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateAddressRequestDto" + } + ], + "nullable": true }, "shippingAddress": { - "$ref": "#/components/schemas/UpdateShippingAddressRequestDto" + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateShippingAddressRequestDto" + } + ], + "nullable": true }, "shippingMethod": { + "oneOf": [ + { + "type": "string" + } + ], + "nullable": true + }, + "shippingOption": { "type": "string", "nullable": true }, "paymentMethod": { - "type": "string", + "oneOf": [ + { + "type": "string" + } + ], "nullable": true }, "redeem": { @@ -9030,6 +12947,9 @@ "additionalProperties": false }, "UpdateShippingAddressRequestDto": { + "required": [ + "sameAsBilling" + ], "type": "object", "properties": { "line1": { @@ -9049,15 +12969,28 @@ "nullable": true }, "country": { - "type": "string", + "oneOf": [ + { + "type": "string" + } + ], "nullable": true }, "region": { - "type": "string", + "oneOf": [ + { + "type": "string" + } + ], "nullable": true }, "contact": { - "$ref": "#/components/schemas/UpdateContactRequestDto" + "oneOf": [ + { + "$ref": "#/components/schemas/UpdateContactRequestDto" + } + ], + "nullable": true }, "sameAsBilling": { "type": "boolean" @@ -9065,6 +12998,19 @@ }, "additionalProperties": false } + }, + "securitySchemes": { + "Backoffice User": { + "type": "oauth2", + "description": "Umbraco Authentication", + "flows": { + "authorizationCode": { + "authorizationUrl": "/umbraco/management/api/v1/security/back-office/authorize", + "tokenUrl": "/umbraco/management/api/v1/security/back-office/token", + "scopes": { } + } + } + } } } -} +} \ No newline at end of file diff --git a/16/umbraco-commerce/SUMMARY.md b/16/umbraco-commerce/SUMMARY.md index 8852f839981..c24fc4b759d 100644 --- a/16/umbraco-commerce/SUMMARY.md +++ b/16/umbraco-commerce/SUMMARY.md @@ -57,6 +57,7 @@ * [Implementing a Currency Switcher](how-to-guides/currency-switching.md) * [Building a Members Portal](how-to-guides/member-portal.md) * [Order Number Customization](how-to-guides/order-number-customization.md) +* [Sending Payment Links to Customers](how-to-guides/payment-links.md) * [Create an Order via Code](how-to-guides/create-order-via-code.md) ## Key Concepts diff --git a/16/umbraco-commerce/how-to-guides/dynamically-priced-products.md b/16/umbraco-commerce/how-to-guides/dynamically-priced-products.md index 571d69bda31..1ae5eb3beb9 100644 --- a/16/umbraco-commerce/how-to-guides/dynamically-priced-products.md +++ b/16/umbraco-commerce/how-to-guides/dynamically-priced-products.md @@ -9,7 +9,7 @@ Sometimes products do not have a fixed price. Depending on the customer's requir This guide shows you how to implement dynamically priced products in Umbraco Commerce. {% hint style="info" %} -This guide is not a direct follow-on from the [getting started tutorial](../tutorials/build-a-store/overview.md). It is assumed that your store is set up in a similar structure. +This guide is not a direct follow-on from the [getting started tutorial](../tutorials/build-a-store/README.md). It is assumed that your store is set up in a similar structure. {% endhint %} ## Capturing User Input diff --git a/16/umbraco-commerce/how-to-guides/images/payment-links/checkout.png b/16/umbraco-commerce/how-to-guides/images/payment-links/checkout.png new file mode 100644 index 00000000000..763adcd2a17 Binary files /dev/null and b/16/umbraco-commerce/how-to-guides/images/payment-links/checkout.png differ diff --git a/16/umbraco-commerce/how-to-guides/images/payment-links/choose-payment-link-email-template.png b/16/umbraco-commerce/how-to-guides/images/payment-links/choose-payment-link-email-template.png new file mode 100644 index 00000000000..27318eb9a24 Binary files /dev/null and b/16/umbraco-commerce/how-to-guides/images/payment-links/choose-payment-link-email-template.png differ diff --git a/16/umbraco-commerce/how-to-guides/images/payment-links/email.png b/16/umbraco-commerce/how-to-guides/images/payment-links/email.png new file mode 100644 index 00000000000..1d8b85df26e Binary files /dev/null and b/16/umbraco-commerce/how-to-guides/images/payment-links/email.png differ diff --git a/16/umbraco-commerce/how-to-guides/images/payment-links/generate-payment-link-button.png b/16/umbraco-commerce/how-to-guides/images/payment-links/generate-payment-link-button.png new file mode 100644 index 00000000000..8f77dc8c8bd Binary files /dev/null and b/16/umbraco-commerce/how-to-guides/images/payment-links/generate-payment-link-button.png differ diff --git a/16/umbraco-commerce/how-to-guides/images/payment-links/generate-payment-link-modal.png b/16/umbraco-commerce/how-to-guides/images/payment-links/generate-payment-link-modal.png new file mode 100644 index 00000000000..71f7b5153ef Binary files /dev/null and b/16/umbraco-commerce/how-to-guides/images/payment-links/generate-payment-link-modal.png differ diff --git a/16/umbraco-commerce/how-to-guides/images/payment-links/payment-link-copied-to-clipboard.png b/16/umbraco-commerce/how-to-guides/images/payment-links/payment-link-copied-to-clipboard.png new file mode 100644 index 00000000000..1915979268d Binary files /dev/null and b/16/umbraco-commerce/how-to-guides/images/payment-links/payment-link-copied-to-clipboard.png differ diff --git a/16/umbraco-commerce/how-to-guides/images/payment-links/send-payment-link-email.png b/16/umbraco-commerce/how-to-guides/images/payment-links/send-payment-link-email.png new file mode 100644 index 00000000000..1561ec4edf6 Binary files /dev/null and b/16/umbraco-commerce/how-to-guides/images/payment-links/send-payment-link-email.png differ diff --git a/16/umbraco-commerce/how-to-guides/overview.md b/16/umbraco-commerce/how-to-guides/overview.md index 472ba99c910..c9af615983b 100644 --- a/16/umbraco-commerce/how-to-guides/overview.md +++ b/16/umbraco-commerce/how-to-guides/overview.md @@ -8,5 +8,6 @@ In this section, we will provide a series of How-To Guides, showcasing how to pe ## Available guides -<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center">Migrate from Vendr to Umbraco Commerce</td><td><a href="migrate-from-vendr-to-umbraco-commerce/">migrate-from-vendr-to-umbraco-commerce</a></td></tr><tr><td align="center">Configure SQLite support</td><td><a href="configure-sqlite-support.md">configure-sqlite-support.md</a></td></tr><tr><td align="center">Add item to Cart</td><td><a href="add-item.md">add-item.md</a></td></tr><tr><td align="center">Update Cart</td><td><a href="update-cart.md">update-cart.md</a></td></tr> -<tr><td align="center">Delete item from Cart</td><td><a href="delete-item.md">delete-item.md</a></td></tr><tr><td align="center">Limit Order Line Quantity</td><td><a href="limit-orderline-quantity.md">limit-orderline-quantity.md</a></td></tr><tr><td align="center">Use an alternative database for Umbraco Commerce tables</td><td><a href="use-an-alternative-database-for-umbraco-commerce-tables.md">use-an-alternative-database-for-umbraco-commerce-tables.md</a></td></tr></tbody></table> +<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center">Migrate from Vendr to Umbraco Commerce</td><td><a href="../upgrading/migrate-from-vendr-to-umbraco-commerce/README.md">migrate-from-vendr-to-umbraco-commerce</a></td></tr><tr><td align="center">Configure SQLite support</td><td><a href="configure-sqlite-support.md">configure-sqlite-support.md</a></td></tr><tr><td align="center">Creating a Custom Shopping Cart</td><td><a href="../tutorials/build-a-store/custom-cart.md">custom-cart.md</a></td></tr> +<tr><td align="center">Limit Order Line Quantity</td><td><a href="limit-orderline-quantity.md">limit-orderline-quantity.md</a></td></tr><tr><td align="center">Use an alternative database for Umbraco Commerce tables</td><td><a href="use-an-alternative-database-for-umbraco-commerce-tables.md">use-an-alternative-database-for-umbraco-commerce-tables.md</a></td></tr></tbody></table> + diff --git a/16/umbraco-commerce/how-to-guides/payment-links.md b/16/umbraco-commerce/how-to-guides/payment-links.md new file mode 100644 index 00000000000..fee87540b0e --- /dev/null +++ b/16/umbraco-commerce/how-to-guides/payment-links.md @@ -0,0 +1,104 @@ +--- +description: Learn how to send a payment link to customers in Umbraco Commerce. +--- + +# Sending Payment Links to Customers + +A common scenario in e-commerce is when a store owner wants to send a pre-filled cart to a customer for them to complete. This can be useful in many scenarios. It could be when customers request a quote, and the store owner wants to send a link to the customer to make the payment. + +In Umbraco Commerce, it only takes a few clicks to create and send a payment link. The customer can then click the link and complete the purchase. + +{% hint style="info" %} +The payment links feature was introduced in Umbraco Commerce version 15.3.0 +{% endhint %} + +## Generating a Payment Link + +1. Go to the **Commerce** section in the Umbraco backoffice. +2. Expand the associated store and click on the **Carts** menu item. +3. Click on the **Create Cart** button. +4. Populate the cart with the products you want to include in the payment link. +5. Click on the **Save** button to save the cart. +6. Click on the **Generate Payment Link** button to launch the payment link generator modal. + +![Generate Payment Link](images/payment-links/generate-payment-link-button.png) + +7. Configure the payment link settings in the Payment Link Generator modal. You can set the following options: + + - **Validity Period**: The period in minutes for which the payment link will be valid. + - **Landing Page URL**: The URL to which the customer will be directed when clicking on the payment link. + +![Payment Link Generator](images/payment-links/generate-payment-link-modal.png) + +8. Use one of the two options to send the payment link to the customer: + + - [**Copy to Clipboard**](#copy-to-clipboard) + - [**Send via Email**](#send-via-email) + +### Copy to Clipboard + +Clicking on the **Copy to Clipboard** button generates the payment link and then copies it to the clipboard. A notification will display to confirm the copy was successful. You can paste the link into an email or other communication form. + +![Copy to Clipboard Notification](images/payment-links/payment-link-copied-to-clipboard.png) + +### Send via Email + +Clicking on the **Send via Email** button launches the Send Email modal. From here, you can select an email template and set the recipient's email address. + +![Email Template Selection](images/payment-links/choose-payment-link-email-template.png) + +![Recipient Configuration](images/payment-links/send-payment-link-email.png) + +Clicking the **Send** button will send the email to the recipient with the payment link. + +![Email Payment Link Example](images/payment-links/email.png) + +{% hint style="info" %} +Umbraco Commerce includes a default email template for sending payment links. You can customize this template by going to the **Settings** section in the Umbraco backoffice and selecting the **Email Templates** menu item. +{% endhint %} + +## Payment Link Usage + +When the customer receives the payment link, they can click on the link to open the cart in the store. The cart will be pre-filled with the products and quantities that were added when the payment link was generated. + +![Payment Link Populated Cart](images/payment-links/checkout.png) + +The customer can proceed to the checkout and complete the purchase as normal. + +{% hint style="info" %} +The payment link cart will be held in session until the cart is completed or the session expires. Once completed, any previously open carts will be restored. +{% endhint %} + +## Handling Expired Payment Links + +If a customer tries to use an expired payment link, they will be redirected to the configured landing page URL along with a `payment_link_error` querystring parameter. The value of this parameter will contain the reason for the error. + +Developers should use this querystring parameter to display a message to the customer explaining that the payment link has expired. + +## Headless Considerations + +The payment links handling is done automatically for standard Razor site implementations. You need to handle the payment links manually for headless Storefront API implementations. + +Developers should check for a `payment_link_token` querystring parameter when a customer lands on the site. If present, the developer should use the [Storefront API](../reference/storefront-api/endpoints/order.md#umbraco-commerce-storefront-api-v1-order-paymentlinktoken) to retrieve the cart associated with the payment link token. This can then be loaded into the session for the customer to complete payment. + +## Configuration Options + +The payment links feature has different configuration options you can set via `appsettings.json`: + +{% code title="appsettings.json" %} +```json +{ + "Umbraco": { + "Commerce": { + "PaymentLinks": { + "TokenSigningSecret": "your_secret_here", + "TokenQueryParameterName": "payment_link_token", + "ErrorQueryParameterName": "payment_link_error", + } + } + } +} +``` +{% endcode %} + +By default, Umbraco Commerce payment link tokens are based on the JSON Web Token (JWT) format and are signed using the `TokenSigningSecret` value. The `TokenQueryParameterName` value is used to configure the querystring parameter name used for the payment link token. The `ErrorQueryParameterName` value is used to configure the querystring parameter name used for an error message. diff --git a/16/umbraco-commerce/how-to-guides/personalized-products.md b/16/umbraco-commerce/how-to-guides/personalized-products.md index 083eb09217b..1f4d82e01ab 100644 --- a/16/umbraco-commerce/how-to-guides/personalized-products.md +++ b/16/umbraco-commerce/how-to-guides/personalized-products.md @@ -13,7 +13,7 @@ This will be broken down into the following steps: * Register a UI extension to display the value in the Backoffice. {% hint style="info" %} -This guide is not a direct follow-on from the [getting started tutorial](../tutorials/build-a-store/overview.md). It is assumed that your store is set up in a similar structure. +This guide is not a direct follow-on from the [getting started tutorial](../tutorials/build-a-store/README.md). It is assumed that your store is set up in a similar structure. {% endhint %} ## Capturing a Message diff --git a/16/umbraco-commerce/how-to-guides/product-bundles.md b/16/umbraco-commerce/how-to-guides/product-bundles.md index 88429b3671e..c631688e2ed 100644 --- a/16/umbraco-commerce/how-to-guides/product-bundles.md +++ b/16/umbraco-commerce/how-to-guides/product-bundles.md @@ -7,7 +7,7 @@ description: Learn how to implement product bundles in Umbraco Commerce. Product bundles are Umbraco Commerces' way of creating composite products. This feature allows you to create a product that consists of multiple sub-products. The sub-products can be optional or mandatory, and you can define the quantity of each sub-product. The final order line will be a composite order line of the selected primary product and its sub-product options. {% hint style="info" %} -This guide is not a direct follow-on from the [getting started tutorial](../tutorials/build-a-store/overview.md). It is assumed that your store is set up in a similar structure. +This guide is not a direct follow-on from the [getting started tutorial](../tutorials/build-a-store/README.md). It is assumed that your store is set up in a similar structure. {% endhint %} ## Product Setup diff --git a/16/umbraco-commerce/reference/storefront-api/endpoints/order.md b/16/umbraco-commerce/reference/storefront-api/endpoints/order.md index 0ede104e2c8..9bad1e20db4 100644 --- a/16/umbraco-commerce/reference/storefront-api/endpoints/order.md +++ b/16/umbraco-commerce/reference/storefront-api/endpoints/order.md @@ -10,6 +10,10 @@ The Order endpoints are where you will manage your carts/orders and perform cart [storefront_swagger.json](../../../.gitbook/assets/storefront_swagger.json) {% endswagger %} +{% swagger src="../../../.gitbook/assets/storefront_swagger.json" path="/umbraco/commerce/storefront/api/v1/order/{paymentLinkToken}" method="get" %} +[storefront_swagger.json](../../../.gitbook/assets/storefront_swagger.json) +{% endswagger %} + {% swagger src="../../../.gitbook/assets/storefront_swagger.json" path="/umbraco/commerce/storefront/api/v1/order/{orderId}" method="patch" %} [storefront_swagger.json](../../../.gitbook/assets/storefront_swagger.json) {% endswagger %} @@ -56,4 +60,4 @@ The Order endpoints are where you will manage your carts/orders and perform cart {% swagger src="../../../.gitbook/assets/storefront_swagger.json" path="/umbraco/commerce/storefront/api/v1/order/{orderId}/bundle/{bundleId}/item/{orderLineId}" method="delete" %} [storefront_swagger.json](../../../.gitbook/assets/storefront_swagger.json) -{% endswagger %} \ No newline at end of file +{% endswagger %} diff --git a/16/umbraco-commerce/reference/taxes/calculated-tax-rates.md b/16/umbraco-commerce/reference/taxes/calculated-tax-rates.md index 18411ce1202..e6762f3717c 100644 --- a/16/umbraco-commerce/reference/taxes/calculated-tax-rates.md +++ b/16/umbraco-commerce/reference/taxes/calculated-tax-rates.md @@ -11,7 +11,7 @@ When using calculated rate taxes, taxes are calculated as a single price adjustm Calculated tax rates are configured using **Tax Calculation Methods**. A tax calculation method provides a connection to a third-party calculation service via a [Sales Tax Provider](../../key-concepts/sales-taxt-providers.md). The sales tax provider passes the order details to the calculation service and returns the tax amount to be applied to the order. {% hint style="info" %} -Before you can configure a tax calculation method, you will need to install at least one [sales tax provider](../../key-concepts/sales-taxt-providers.md). +Before you can configure a tax calculation method, you will need to install at least one [sales tax provider](../../key-concepts/sales-tax-providers.md). A TaxJar example is provided on GitHub at [https://github.com/umbraco/Umbraco.Commerce.SalesTaxProviders.TaxJar](https://github.com/umbraco/Umbraco.Commerce.SalesTaxProviders.TaxJar) {% endhint %} diff --git a/16/umbraco-commerce/release-notes/README.md b/16/umbraco-commerce/release-notes/README.md index 0ff82adbb41..7d9feb02ffb 100644 --- a/16/umbraco-commerce/release-notes/README.md +++ b/16/umbraco-commerce/release-notes/README.md @@ -11,7 +11,7 @@ In this section, we have summarized the changes to Umbraco Commerce released in If there are any breaking changes or other issues to be aware of when upgrading they are also noted here. {% hint style="info" %} -If you are upgrading to a new major version, check the breaking changes in the [Version Specific Upgrade Notes](upgrading/version-specific-upgrades.md) article. +If you are upgrading to a new major version, check the breaking changes in the [Version Specific Upgrade Notes](../upgrading/version-specific-upgrades.md) article. {% endhint %} ## Release History diff --git a/16/umbraco-commerce/tutorials/build-a-store/configure-store.md b/16/umbraco-commerce/tutorials/build-a-store/configure-store.md index 4217eb10775..1bd3239ab7d 100644 --- a/16/umbraco-commerce/tutorials/build-a-store/configure-store.md +++ b/16/umbraco-commerce/tutorials/build-a-store/configure-store.md @@ -22,7 +22,7 @@ If your business operates in multiple regions, setting up locations helps: * Configure stores for different locations with separate languages, shipping addresses, regional offers, local regulations, and payment gateways. * Ship products from different locations. The system can be set up to route orders to the nearest warehouse based on the customer’s location. -### Steps to set up a location: +### Steps to set up a location 1. Select your store from the **Stores** menu in the **Settings** section. In this case, *Umbraco Swag Store*. 2. Go to **Locations** under the Store. @@ -38,9 +38,9 @@ If your business operates in multiple regions, setting up locations helps: Order Status tracks the progression of an order. It helps both the store owner and customers track the order's progress from the moment it is placed until it is delivered (or returned). -When you first set up Umbraco Commerce, it comes with predefined order statuses to help manage the order lifecycle. These statuses include _New_, _Completed_, _Cancelled_, and _Error_. The statuses can be customized based on your specific business requirements. +When you first set up Umbraco Commerce, it comes with predefined order statuses to help manage the order lifecycle. These statuses include *New*, *Completed*, *Cancelled*, and *Error*. The statuses can be customized based on your specific business requirements. -### Steps to create an order status: +### Steps to create an order status 1. Go to **Order Statuses** under the Store. 2. Click **Create Order Status**. @@ -57,7 +57,7 @@ Payment Methods define the payment options available in the store. By default, U Umbraco Commerce also supports the integration of different third-party payment gateways. For more information, see the [Umbraco Commerce Payment Providers Documentation](../../../../commerce-add-ons/payment-providers/README.md). -### Steps to set up a payment method: +### Steps to set up a payment method 1. Go to **Payment Methods** under the Store. 2. Click **Create Payment Method**. @@ -75,7 +75,7 @@ Shipping methods determine how customers receive their orders. Setting up shippi By default, Umbraco Commerce comes with the basic Pickup option. For more information on the integration for different providers, see the [Umbraco Commerce Shipping providers Documentation](../../../../commerce-add-ons/shipping-providers/README.md). -### Steps to create a shipping method: +### Steps to create a shipping method 1. Go to **Shipping Methods** under the Store. 2. Click **Create Shipping Method**. @@ -91,7 +91,7 @@ By default, Umbraco Commerce comes with the basic Pickup option. For more inform Setting up a country involves configuring settings related to shipping, payment methods, tax rates, localization, legal compliance requirements, and so on for that specific country. -### Steps to set up a country: +### Steps to set up a country 1. Go to **Countries** under the Store. 2. Click **Create Country**. @@ -105,9 +105,9 @@ Setting up a country involves configuring settings related to shipping, payment ## Setting up a Currency -Setting up currency is essential for ensuring that prices are displayed and transactions are processed accurately. For information on configuring an exchange rate service, see the [Currency Exchange Rate Service Provider](../key-concepts/currency-exchange-rate-service-providers.md) article. +Setting up currency is essential for ensuring that prices are displayed and transactions are processed accurately. For information on configuring an exchange rate service, see the [Currency Exchange Rate Service Provider](../../key-concepts/currency-exchange-rate-service-providers.md) article. -### Steps to set up a currency: +### Steps to set up a currency 1. Go to **Currencies** under the Store. 2. Click **Create Currency**. @@ -120,9 +120,9 @@ Setting up currency is essential for ensuring that prices are displayed and tran ## Setting up Taxes -Tax setup is crucial for compliance with local regulations and for ensuring that your pricing is accurate and transparent. You can set up tax rates for each jurisdiction where you must collect tax. For more information, see the [Tax Sources](../key-concepts/tax-sources.md) article. +Tax setup is crucial for compliance with local regulations and for ensuring that your pricing is accurate and transparent. You can set up tax rates for each jurisdiction where you must collect tax. For more information, see the [Tax Sources](../../key-concepts/tax-sources.md) article. -### Steps to set up taxes: +### Steps to set up taxes 1. Go to **Taxes** under the Store. 2. Click **Create Tax Class**. @@ -137,7 +137,7 @@ Tax setup is crucial for compliance with local regulations and for ensuring that Defines the different **Email**, **Print**, and **Export** templates available for the store. These templates help maintain consistency and professionalism in communication with customers and facilitate data handling. -### Steps to create an Email Template: +### Steps to create an Email Template 1. Expand the **Templates** folder under the Store. 2. Go to **Email Templates**. diff --git a/16/umbraco-commerce/tutorials/build-a-store/create-product.md b/16/umbraco-commerce/tutorials/build-a-store/create-product.md index 928e8131c71..d913cea07ae 100644 --- a/16/umbraco-commerce/tutorials/build-a-store/create-product.md +++ b/16/umbraco-commerce/tutorials/build-a-store/create-product.md @@ -66,4 +66,4 @@ If you haven't already, you'll need to allow the product Document Type to be a c ![Product Page](../images/blendid/product_page.png) -With the product created, you can now move on to [Implementing a Shopping Cart](cart-management/overview.md). +With the product created, you can now move on to [Implementing a Shopping Cart](./cart.md). diff --git a/16/umbraco-commerce/upgrading/version-specific-upgrades.md b/16/umbraco-commerce/upgrading/version-specific-upgrades.md index 6dd27916eff..9d7c78a0fd8 100644 --- a/16/umbraco-commerce/upgrading/version-specific-upgrades.md +++ b/16/umbraco-commerce/upgrading/version-specific-upgrades.md @@ -8,7 +8,7 @@ description: >- This page covers specific upgrade documentation for when migrating to major 15 of Umbraco Commerce. {% hint style="info" %} -If you are upgrading to a new minor or patch version, you can find information about the breaking changes in the [Release Notes](../release-notes.md) article. +If you are upgrading to a new minor or patch version, you can find information about the breaking changes in the [Release Notes](../release-notes/README.md) article. {% endhint %} ## Version Specific Upgrade Notes History diff --git a/16/umbraco-forms/installation/the-licensing-model.md b/16/umbraco-forms/installation/the-licensing-model.md index 5284bc59a67..cd6cbee17a8 100644 --- a/16/umbraco-forms/installation/the-licensing-model.md +++ b/16/umbraco-forms/installation/the-licensing-model.md @@ -82,7 +82,7 @@ Once you've configured your license with the correct domains, you are ready to i 1. Download your license from your Umbraco.com account - this will give you a `.lic` file 2. Place the file in the `/umbraco/Licenses` directory in your Umbraco installation -The `.lic` file must be placed in the `/umbraco/Licenses` directory to be registered by Umbraco Forms. If the file isn't placed correctly, the application will automatically switch to trial mode. +The `.lic` file must be placed in the `/umbraco/Licenses` directory to be registered by Umbraco Forms. If the file isn't placed correctly, the application will automatically switch to trial mode. It is also recommended to restart your site after you have added the license file. ### Multiple license files diff --git a/16/umbraco-ui-builder/changelog-archive/changelog.md b/16/umbraco-ui-builder/changelog-archive/changelog.md index 82b8c320984..54b1d6497ed 100644 --- a/16/umbraco-ui-builder/changelog-archive/changelog.md +++ b/16/umbraco-ui-builder/changelog-archive/changelog.md @@ -9,7 +9,7 @@ description: Changelog for Konstrukt, the backoffice UI builder for Umbraco. **Date:** 2023-02-22 **Description:** Patch release with bug fixes -- Fixed issue where upload file property editor throws "the specified file type has been disallowed by the administrator" error ([#49](https://github.com/outfielddigital/konstrukt/issues/49)). +- Fixed issue where upload file property editor throws "the specified file type has been disallowed by the administrator" error. - Added ngrok URLs to allow domains that don't need a license. ## v1.6.3 @@ -17,10 +17,10 @@ description: Changelog for Konstrukt, the backoffice UI builder for Umbraco. **Date:** 2023-01-16 **Description:** Patch release with bug fixes -- Moved encrypted properties implementation to the base repository class so encryption is honored when performing save/load operation directly against the repository API ([#44](https://github.com/outfielddigital/konstrukt/issues/44)). +- Moved encrypted properties implementation to the base repository class so encryption is honored when performing save/load operation directly against the repository API. - Made `SecurityHelper` swappable so you can use something other than the default `DataProtectionProvider` implementation that comes out of the box (OOTB). -- Fixed issue with advanced filters that use the lambda `ParameterReplacer` due to the parameter being replaced in the function, but not in the Lambda parameters list ([#45](https://github.com/outfielddigital/konstrukt/issues/45)). -- Fixed date filters not working on mobile resolution devices ([#46](https://github.com/outfielddigital/konstrukt/issues/46)). +- Fixed issue with advanced filters that use the lambda `ParameterReplacer` due to the parameter being replaced in the function, but not in the Lambda parameters list. +- Fixed date filters not working on mobile resolution devices. ## v1.6.2 @@ -52,7 +52,7 @@ description: Changelog for Konstrukt, the backoffice UI builder for Umbraco. **Date:** 2022-09-09 **Description:** Patch release with bug fixes -- Fixed bug in entity picker not correctly showing the `Add` button when it should ([#39](https://github.com/outfielddigital/konstrukt/issues/39)). +- Fixed bug in entity picker not correctly showing the `Add` button when it should. - Added some basic validation to config at startup to ensure a valid config model. ## v1.5.1 @@ -60,7 +60,7 @@ description: Changelog for Konstrukt, the backoffice UI builder for Umbraco. **Date:** 2022-08-22 **Description:** Patch release with bug fixes -- Fixed searchable properties not being searched in a case-insensitive way for repositories that don't use Umbraco's NPoco extension methods ([#36](https://github.com/outfielddigital/konstrukt/issues/36)). +- Fixed searchable properties not being searched in a case-insensitive way for repositories that don't use Umbraco's NPoco extension methods. - Fixed regression in Konstrukt repository not correctly combining filters. - Fixed exception due to `ServiceProvider` not getting passed to Data transfer object (DTO) mapper. diff --git a/16/umbraco-ui-builder/collections/editors.md b/16/umbraco-ui-builder/collections/editors.md index 88cb56c92d3..4f4c419d0d5 100644 --- a/16/umbraco-ui-builder/collections/editors.md +++ b/16/umbraco-ui-builder/collections/editors.md @@ -6,7 +6,7 @@ description: Configuring the editor of a collection in Umbraco UI Builder. An editor is the user interface used to edit an entity. It consists of tabs and property editors. -![A collection editor](../images/editor.png) +![A collection editor](../images/people-editor.png) ## Configuring an Editor diff --git a/16/umbraco-ui-builder/images/people-editor.png b/16/umbraco-ui-builder/images/people-editor.png new file mode 100644 index 00000000000..167bd6b872a Binary files /dev/null and b/16/umbraco-ui-builder/images/people-editor.png differ