[ { "Id": "2199", "URL": "/content-modules/secure-zones", "Name": "Secure Zones", "Description": "Multiple Secure Zones can be added to create different member’s only areas or tiered membership structures. Creating Secure Zones Secure Zones can be found under ‘Content’ ‘Secure Zones’ where a list of any available Secure Zones will be shown along with the number of Members subscribed to each zone. You’ll also be able to create, edit or delete Secure Zones - as detailed below. 1Details Option Description Secure Zone Assign a name for your Secure Zone. This name will be used throughout the admin when referencing this Secure Zone and may also be displayed to the site user on the front-end or in Secure Zone related system emails. Landing Page Selecting a Page here determines the page to redirect a user to after a Secure Zone signup form submission. If multiple Secure Zones are selected for the signup form, the landing page used will be determined by the last selected Secure Zone in the list. This landing..." },{ "Id": "3178", "URL": "/content-modules/comments", "Name": "Comments", "Description": "Promote engagement amongst your site members and allow users to give a star rating and comment on any module items you configure for . authors can edit or delete their own comments for full control over their content. can also be threaded, to show replies nested under their parent comments, or simply displayed as a flat list - sorted by date or other properties. Moderator controls and Workflow Notifications are also built-in for fine-grain approval control and management of so that admins are notified of new and can approve, decline, or mark as spam if needed. The module comes with complete interfacing and styles for both the submission form and /Rating layouts and logic, but can also be customised with your own Liquid layouts and styles. Managing View From the list view you can see all in a paginated table layout (with pagination controls at the bottom of the table) and a sortable column headers. You can also filter the list via the inputs at the top of the table, where you can filter by date ranges, 'Status' and 'Module'. Additionally, you’ll find controls for editing and deleting , as detailed further below. ..." },{ "Id": "2139", "URL": "/content-modules/custom-modules-aka-webapps", "Name": "Custom Modules", "Description": " From a simple staff profile listing, detailed image gallery, to a complex real estate directory, Custom modules help you display data sets consistently, allowing content administrators ease of management and even provide an opportunity for user-submitted content in a secure way. Benefits & Use Cases If coming from Business Catalyst these are much like WebApps, although are much more powerful and flexible. There are several aspects which make so much more flexible: Better management and easier access to multiple layout views for both Detail view and List view layouts. Ability to control various aspects of how items are listed and managed within the admin, such as enabling or disabling; multiple detail views, release and expiry dates, weighting, categories, tags and author, among many other settings. Flexibility to create nested items, combining one with other with the ability to add/edit nested item from within either of the lists views. Making complex content management easier, more structured and more intuitive for your client or administrator. See 'Advanced Settings' in the 'Settings' section below for more details. Creating a new To create a new and configure the settings, expand the '' item in the left..." },{ "Id": "3307", "URL": "/open-api-admin/module-items-attributes-api", "Name": "Module Items Attributes API", "Description": " GET Module Item Attributes List Retrieves a list of Attributes as a JSON response based on your provided query parameters. /api/v2/admin/module-items/{moduleItemId}/attributes Data / Response: { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } var obj = { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } ; var code = $('#code24 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Items": [ { "Id": 0, "Options": [ { "Id": 0, "Name": "string", "Image": "string", "OptionPrices": [ { "Value": 0, "CurrencyCountry": "string", "Currency": "string", "CountryAbbriviation": "string" } ] } ], "AttributeType": "string", "IsInventory": true, "Name": "string", "Required": true, "ValueType": "string" } ], "TotalItemsCount": 0 } var obj = { "Items": [ { "Id": 0, "Options": [ { "Id": 0, "Name": "string", "Image": "string", "OptionPrices": [ { "Value": 0, "CurrencyCountry": "string", "Currency": "string", "CountryAbbriviation": "string" } ] } ], "AttributeType": "string", "IsInventory": true, "Name": "string", "Required": true, "ValueType": "string" } ], "TotalItemsCount": 0 } ; var code = $('#code25 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); POST Module Item Attribute Create Creates a new Attribute based on the provided data...." },{ "Id": "3303", "URL": "/open-api-admin/module-items-attribute-options-api", "Name": "Module Items Attribute Options API", "Description": " POST Module Item Attribute Option Create Creates a new Attribute Option based on the provided data. /api/v2/admin/module-items/attributes/{attributeId}/options Data / Response: { "Name": "string", "Image": "string", "OptionPrices": [ { "Value": 0, "CurrencyCountry": "string", "Currency": "string", "CountryAbbriviation": "string" } ] } var obj = { "Name": "string", "Image": "string", "OptionPrices": [ { "Value": 0, "CurrencyCountry": "string", "Currency": "string", "CountryAbbriviation": "string" } ] } ; var code = $('#code42 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Id": 0, "Name": "string", "Image": "string", "OptionPrices": [ { "Value": 0, "CurrencyCountry": "string", "Currency": "string", "CountryAbbriviation": "string" } ] } var obj = { "Id": 0, "Name": "string", "Image": "string", "OptionPrices": [ { "Value": 0, "CurrencyCountry": "string", "Currency": "string", "CountryAbbriviation": "string" } ] } ; var code = $('#code43 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); PUT Module Item Attribute Option Update Updates a single Attribute Option based on the ID passed in the endpoint URL and data provided. /api/v2/admin/module-items/attributes/options/{id} Data / Response: { "Name": "string", "Image": "string", "OptionPrices": [ { "Value": 0, "CurrencyCountry": "string", "Currency": "string", "CountryAbbriviation": "string" } ] } var obj =..." },{ "Id": "2548", "URL": "/component-types/ecommerce_add_to_cart", "Name": "ecommerce_add_to_cart", "Description": "{% component type: "ecommerce_add_to_cart", itemId: "<Item ID>" %} Parameters and Options Parameter Values Required Description type ecommerce_add_to_cart This is the name of the entity that needs to be used for the component retrieving function. itemId <Item ID> The module item ID (specific Product) the data is to be sourced from layout <path/to/layout> Path to file that will contain the Liquid layout content to be parsed. If an empty string, nothing will be rendered.If paramater is not included, the default virtual layout will be rendered (see below). buttonName Add to cart (default) <YOUR TEXT> " },{ "Id": "3310", "URL": "/open-api-admin/module-item-draft-api", "Name": "Module Item Draft API", "Description": " PUT Module Item Draft Update Updates a single Module Item Draft based on the ID passed in the endpoint URL and data provided. /api/v2/admin/module-items/draft Data / Response: { "Id": 0, "EventProperties": { "HideWhenFull": true, "AllowMultipleSubscriptionPerEmail": true, "Capacity": 0, "EventDateStart": "2024-05-22T15:48:57.672Z", "EventDateEnd": "2024-05-22T15:48:57.672Z" }, "ProductProperties": { "SmallImage": "string", "LargeImage": "string", "OnSale": true, "IsGiftVoucher": true, "ProductWeight": 0, "ProductWidth": 0, "ProductHeight": 0, "ProductDepth": 0, "EnableDropShipping": true, "UnitType": "string", "MinimumUnits": 0, "MaximumUnits": 0, "RecurringType": "None", "IsShippable": true, "IsDownloadable": true, "NumberOfPossibleDownloads": 0, "Supplier": 0, "IsHide": true, "InStock": 0, "IsDisable": true, "IsGroupedProduct": true, "DownloadableFileLink": "string" }, "Name": "string", "UrlSlug": "string", "ParentId": 0, "Enabled": true, "ReleaseDate": "2024-05-22T15:48:57.672Z", "ExpiryDate": "2024-05-22T15:48:57.672Z", "Description": "string", "Weighting": 0, "DisableForSiteSearch": true, "SKUCode": "string", "CreatedByMemberId": 0, "Author": 0, "ModuleId": 0, "TemplateId": 0, "LayoutId": 0, "Parents": [ 0 ], "ItemCategories": [ "string" ], "ItemTags": [ "string" ], "SiteSearchKeywords": [ "string" ], "CustomProperties": { "additionalProp1": "string", "additionalProp2": "string", "additionalProp3": "string" } } var obj = { "Id": 0, "EventProperties": { "HideWhenFull": true, "AllowMultipleSubscriptionPerEmail": true, "Capacity": 0, "EventDateStart": "2024-05-22T15:48:57.672Z", "EventDateEnd": "2024-05-22T15:48:57.672Z" }, "ProductProperties": { "SmallImage": "string", "LargeImage": "string", "OnSale": true, "IsGiftVoucher": true, "ProductWeight": 0, "ProductWidth": 0, "ProductHeight": 0, "ProductDepth": 0, "EnableDropShipping": true, "UnitType": "string", "MinimumUnits": 0, "MaximumUnits": 0,..." },{ "Id": "2518", "URL": "/learning-liquid-free-online-course/liquid-in-treepl-cms", "Name": "Part 2: Liquid in Treepl CMS", "Description": "Total time for completion: 30 mins While Liquid is an open-source development started by the team at Shopify, it can be implemented in a variety of ways in different applications. The base Liquid library, as used in Shopify, has been implemented in Treepl CMS. So it follows very closely to the same constructs and methods documented on the Liquid website. There are 3 core aspects in understanding Liquid in Treepl CMS. Tags/Components Layouts Objects 1. Tags/Components Time for completion: 5 mins Component Tags are your connection to the back-end data within your Treepl CMS site instance, bringing that data into the Liquid scope so that you can manipulate it in your website development as needed. Whenever you are coding with Liquid you’ll often be using Tags. Tags are defined by a curly bracket and percentage character which wraps additional Liquid methods, like so: {% … %} There are a variety of Liquid Tags that we’ll look at but first of all we’ll discuss the Component Tag. Component Tags will contain a variety of parameters that define exactly what data is..." },{ "Id": "2598", "URL": "/treepl-portal/two-factor-authentication", "Name": "Two-Factor Authentication (2FA)", "Description": "2FA for the Treepl CMS login utilises the Google Authenticator app, which can be downloaded here: Google Play Store (Android) Apple App Store (iOS) 2FA for Partner Account To enable 2FA for your Partner Single-Sign-On (SSO) account (which will affect your Portal login and all Trail and Live sites), log in to your Portal and go to ‘My Details’. Under the “MY PROFILE” tab at the bottom of the account details form you’ll have the option to enable/disable Two-Factor Authentication. 2FA will then apply upon every new login attempt (for either the Portal or a site instance). Upon the very first login after 2FA has been enabled, you will be presented with the authentication screen with a QR code. Scan the QR code with your Google Authenticator App to register the Treepl CMS service with the app and finalise the 2FA setup process. Enter the Google Authenticator code generated for your account into the login screen..." },{ "Id": "2552", "URL": "/component-types/ecommerce_buy_now", "Name": "ecommerce_buy_now", "Description": "{% component type: "ecommerce_buy_now", itemId: "<Item ID>" %} Parameters and Options Parameter Values Required Description type ecommerce_buy_now This is the name of the entity that needs to be used for the component retrieving function. itemId <Item ID> The module item ID (specific Product) the data is to be sourced from layout <path/to/layout> Path to file that will contain the Liquid layout content to be parsed. If an empty string, nothing will be rendered.If paramater is not included, the default virtual layout will be rendered (see below). buttonName Buy now (default) <YOUR TEXT> " },{ "Id": "3323", "URL": "/open-api-admin/module-item-prices-api", "Name": "Module Item Prices API", "Description": " GET Module Item Prices List Retrieves a list of Prices as a JSON response based on your provided query parameters. /api/v2/admin/module-items/{moduleItemId}/prices Data / Response: N/A var obj = N/A ; var code = $('#code117 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Items": [ { "Id": 0, "CurrencyCountry": "string", "Currency": "string", "Country": "string", "CustomerTypeId": 0, "TaxId": 0, "RecommendedPrice": 0, "SellPrice": 0, "EnableVolumeDiscount": true, "TaxNeverApplies": true, "PriceQuantityDiscounts": [ { "MinQuantity": 0, "Value": 0 } ] } ], "TotalItemsCount": 0 } var obj = { "Items": [ { "Id": 0, "CurrencyCountry": "string", "Currency": "string", "Country": "string", "CustomerTypeId": 0, "TaxId": 0, "RecommendedPrice": 0, "SellPrice": 0, "EnableVolumeDiscount": true, "TaxNeverApplies": true, "PriceQuantityDiscounts": [ { "MinQuantity": 0, "Value": 0 } ] } ], "TotalItemsCount": 0 } ; var code = $('#code118 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); POST Module Item Price Create Creates a new Price based on the provided data. /api/v2/admin/module-items/{moduleItemId}/prices Data / Response: [ { "CustomerTypeId": 0, "TaxId": 0, "RecommendedPrice": 0, "SellPrice": 0, "EnableVolumeDiscount": true, "TaxNeverApplies": true, "PriceQuantityDiscounts": [ { "MinQuantity": 0, "Value": 0 } ] } ] var obj = [..." },{ "Id": "2553", "URL": "/component-types/ecommerce_item_quantity", "Name": "ecommerce_item_quantity", "Description": "{% component type: "ecommerce_item_quantity", itemId: "<Item ID>" %} Parameters and Options Parameter Values Required Description type ecommerce_item_quantity This is the name of the entity that needs to be used for the component retrieving function. itemId <Item ID> The module item ID (specific Product) the data is to be sourced from layout <path/to/layout> Path to file that will contain the Liquid layout content to be parsed. If an empty string, nothing will be rendered.If paramater is not included, the default virtual layout will be rendered (see below). collectionVariable <yourLiquidVariableName> Assigns the..." },{ "Id": "3317", "URL": "/open-api-admin/module-item-inventory-api", "Name": "Module Item Inventory API", "Description": " PUT Module Item Inventory Generate Generates a single Module Item's Inventory Variations based on the ID passed in the endpoint URL. /api/v2/admin/module-items/{moduleItemId}/generate-variations Data / Response: N/A var obj = N/A ; var code = $('#code139 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); Status 204 var obj = Status 204 ; var code = $('#code140 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); DELETE Module Item Inventory Discard Discards a single Module Item's Inventory Variations based on the ID passed in the endpoint URL. /api/v2/admin/module-items/{moduleItemId}/discard-variations Data / Response: N/A var obj = N/A ; var code = $('#code142 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Enabled": true, "LowStockNotification": 0, "HasAttributes": true, "WhenOutOfStock": "string", "HasGeneratedInventoryProducts": true, "InventoryProducts": [ { "Id": 0, "SKUCode": "string", "InStock": 0, "Enabled": true, "Title": "string", "PreOrder": 0 } ] } var obj = { "Enabled": true, "LowStockNotification": 0, "HasAttributes": true, "WhenOutOfStock": "string", "HasGeneratedInventoryProducts": true, "InventoryProducts": [ { "Id": 0, "SKUCode": "string", "InStock": 0, "Enabled": true, "Title": "string", "PreOrder": 0 } ] } ; var code = $('#code143 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, ''));..." },{ "Id": "2540", "URL": "/component-types/item_attributes", "Name": "item_attributes", "Description": "{% component type: "item_attributes", module: "<Module name/ID>", itemId: "<Item Id>" %} Parameters and Options Parameter Values Required Description type item_attributes This is the name of the entity that needs to be used for the component retrieving function. module <Module name/ID> The module’s entity/alias name or ID that the data is to be sourced from. itemId <Item ID> The module item ID (specific Product) the data is to be sourced from layout <path/to/layout> Path to file that will contain the Liquid layout content to be parsed. If an empty string, nothing..." },{ "Id": "3326", "URL": "/open-api-admin/module-item-related-items-api", "Name": "Module Item Related Items API", "Description": " GET Module Item's Related Items List Retrieves a list of Related Items as a JSON response based on your provided query parameters. /api/v2/admin/module-items/{moduleItemId}/related-items Data / Response: N/A var obj = N/A ; var code = $('#code159 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Items": [ { "ItemId": 0, "Name": "string" } ], "TotalItemsCount": 0 } var obj = { "Items": [ { "ItemId": 0, "Name": "string" } ], "TotalItemsCount": 0 } ; var code = $('#code160 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); PUT Module Item's Related Item Update Updates a single Related Item based on the ID passed in the endpoint URL and data provided. /api/v2/admin/module-items/{moduleItemId}/related-items Data / Response: [ { "ItemId": 0, "Name": "string" } ] var obj = [ { "ItemId": 0, "Name": "string" } ] ; var code = $('#code162 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); [ { "ItemId": 0, "Name": "string" } ] var obj = [ { "ItemId": 0, "Name": "string" } ] ; var code = $('#code163 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); ..." },{ "Id": "3324", "URL": "/open-api-admin/module-item-grouped-items-api", "Name": "Module Item Grouped Items API", "Description": " GET Module Item's Grouped Items List Retrieves a list of Grouped Items as a JSON response based on your provided query parameters. /api/v2/admin/module-items/{moduleItemId}/grouped-items Data / Response: N/A var obj = N/A ; var code = $('#code165 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Items": [ { "ItemId": 0, "Name": "string", "DisplayName": "string", "IsMain": true } ], "TotalItemsCount": 0 } var obj = { "Items": [ { "ItemId": 0, "Name": "string", "DisplayName": "string", "IsMain": true } ], "TotalItemsCount": 0 } ; var code = $('#code166 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); POST Module Item's Grouped Item Create Creates a new Grouped Item based on the provided data. /api/v2/admin/module-items/{moduleItemId}/grouped-items Data / Response: { "ItemId": 0, "Name": "string", "DisplayName": "string", "IsMain": true } var obj = { "ItemId": 0, "Name": "string", "DisplayName": "string", "IsMain": true } ; var code = $('#code168 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); [ { "ItemId": 0, "Name": "string", "DisplayName": "string", "IsMain": true } ] var obj = [ { "ItemId": 0, "Name": "string", "DisplayName": "string", "IsMain": true } ] ; var..." },{ "Id": "2554", "URL": "/component-types/related_items", "Name": "related_items", "Description": "{% component type: "related_items", source: "Products", itemId: "<Item ID>" %} Parameters and Options Parameter Values Required Description type related_items This is the name of the entity that needs to be used for the component retrieving function. source <Module name/ID> The module’s entity/alias name or ID that the data is to be sourced from. itemId <Item ID> The module item ID (specific Product) the data is to be sourced from layout <path/to/layout> Path to file that will contain the Liquid layout content to be parsed. If an empty string, nothing will..." },{ "Id": "2555", "URL": "/component-types/grouped_items", "Name": "grouped_items", "Description": "{% component type: "grouped_items", source: "Products", itemId: "<Item ID>" %} Parameters and Options Parameter Values Required Description type grouped_items This is the name of the entity that needs to be used for the component retrieving function. source <Module name/ID> The module’s entity/alias name or ID that the data is to be sourced from. itemId <Item ID> The module item ID (specific Product) the data is to be sourced from layout <path/to/layout> Path to file that will contain the Liquid layout content to be parsed. If an empty string, nothing will..." },{ "Id": "3325", "URL": "/open-api-admin/module-item-parent-items-api", "Name": "Module Item Parent Items API", "Description": " GET Module Item's Parent Items List Retrieves a list of Parent Items as a JSON response based on your provided query parameters. /api/v2/admin/module-items/{id}/parent-items Data / Response: N/A var obj = N/A ; var code = $('#code191 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Items": [ { "ItemId": 0, "Name": "string" } ], "TotalItemsCount": 0 } var obj = { "Items": [ { "ItemId": 0, "Name": "string" } ], "TotalItemsCount": 0 } ; var code = $('#code192 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); PUT Module Item's Parent Item Update Updates a single Parent Item based on the ID passed in the endpoint URL and data provided. /api/v2/admin/module-items/{id}/parent-items Data / Response: [ { "ItemId": 0, "Name": "string" } ] var obj = [ { "ItemId": 0, "Name": "string" } ] ; var code = $('#code194 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Items": [ { "ItemId": 0, "Name": "string" } ], "TotalItemsCount": 0 } var obj = { "Items": [ { "ItemId": 0, "Name": "string" } ], "TotalItemsCount": 0 } ; var code = $('#code195..." },{ "Id": "2519", "URL": "/learning-liquid-free-online-course/using-liquid-filters", "Name": "Part 3: Using Liquid Filters", "Description": "Total time for completion: ?? mins Quenched with the knowledge and know-how to draw Liquid data from Treepl CMS and flood it onto your page, you can now freeze, melt and/or steam that Liquid to your heart's content with the use of Filters. ...yeah, that was too much wasn’t it? But some things are worth going a little overboard with. Filters allow you to manipulate all kinds of content in a variety of ways, which fall into the following categories: String Filters Array Filters Math Filters Date/Time Filters Currency Filters String Filters Time for completion: 5 mins The majority of the content/data you’ll likely be working with in Treepl CMS will come in the form of strings. If you recall, from Part 2 of this Liquid course about Strings in your data Objects, all that juicy content packaged in double quotes can be further liquified to fit your every need. Let’s look at a really simple string filter and work up to more complex filtering. Imagine you have a blog post and you want to use the main body content to..." },{ "Id": "2588", "URL": "/treepl-portal/portal-login-issues", "Name": "Portal & Admin Login Troubleshooting", "Description": "This is due to some complexities in how cookies are managed in different browsers and the various settings that can be in place. If you are experiencing such issues, below are some steps which should resolve the problem for you. Browser Cookie Settings Check that your browser settings are the same as follows: Safari (Mac) Go to the “Safari” system bar menu. Select “Preferences”. Click “Privacy” in the top panel. Under ‘Block cookies’ select the option “Never”. Safari (iPhone/iPad iOS 11) Open your “Settings”. Scroll down and select “Safari”. Under “Privacy & Security”, turn off “Prevent Cross-Site Tracking” and “Block All Cookies”. Safari (iPhone/iPad iOS 10) Open your “Settings”. Scroll down and select “Safari”. Under “Privacy & Security”, select “Block Cookies” and “Always Allow” or “Allow from Websites I Visit”. Chrome Paste the following address to the browser address bar: chrome://settings/cookies Under 'General settings', make sure either "Allow all cookies" or "Block third-party cookies in incognito" are selected: In case you have Block third-party cookies..." },{ "Id": "2532", "URL": "/component-types/currencies", "Name": "currencies", "Description": "{% component type: "currencies" %} Parameters and Options Parameter Values Required Description type currencies This is the name of the entity that needs to be used for the component retrieving function. layout <path/to/layout> Path to file that will contain the Liquid layout content to be parsed. If an empty string, nothing will be rendered.If paramater is not included, the default virtual layout will be rendered (see below). collectionVariable <yourLiquidVariableName> Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported. ..." },{ "Id": "3284", "URL": "/open-api-admin/ecommerce-discount-codes-api", "Name": "Ecommerce Discount Codes API", "Description": " GET Ecommerce Discount Codes List Retrieves a list of Discount Codes as a JSON response based on your provided query parameters. /api/v2/admin/discount-codes Data / Response: { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } var obj = { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } ; var code = $('#code216 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Items": [ { "Id": 0, "Code": "string", "Type": "string", "Description": "string", "Currency": "string", "Enabled": true, "Amount": 0, "MinOrderCostLimitation": 0, "UseExpireAfterRedemption": true, "ExpireAfter": 0, "ReleaseDateTime": "2024-05-22T14:42:20.019Z", "ExpiryDateTime": "2024-05-22T14:42:20.019Z", "Catalogs": [ 0 ], "ApplyDiscountToCatalogs": true } ], "TotalItemsCount": 0 } var obj = { "Items": [ { "Id": 0, "Code": "string", "Type": "string", "Description": "string", "Currency": "string", "Enabled": true, "Amount": 0, "MinOrderCostLimitation": 0, "UseExpireAfterRedemption": true, "ExpireAfter": 0, "ReleaseDateTime": "2024-05-22T14:42:20.019Z", "ExpiryDateTime": "2024-05-22T14:42:20.019Z", "Catalogs": [ 0 ], "ApplyDiscountToCatalogs": true } ], "TotalItemsCount": 0 } ; var code = $('#code217 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); POST Ecommerce Discount Code Create Creates a new Discount Code based on the provided data. /api/v2/admin/discount-codes Data / Response: " },{ "Id": "2614", "URL": "/treepl-portal/site-billing-and-cancellations", "Name": "Site Billing & Cancellations", "Description": " Change of PayPal Billing Details If the PayPal account currently set up for a site’s billing subscription needs to change, you will need to cancel the PayPal subscription from the PayPal account (or request Treepl CMS support to cancel the subscription from their end). Once the PayPal subscription has been cancelled please submit a support ticket requesting a site billing change. Support will move the site account to ‘Trial’ status (for billing purposes only - the site will remain live and fully active) where you’ll be able to set up a new PayPal billing subscription by clicking on the ‘ACTIVATE’ button next to the Trial site account listing. If you are a PARTNER or PARTNER AGENCY reseller changing a site to Direct Billing, follow the steps above but instead of setting up the new billing subscription, change the site settings to enable Direct Billing and instruct your client to set up billing from the gear icon in the site admin. Within 48 hours after the new billing subscription has been set up, the site will move from your Trial sites list back to your Live sites list. Site Plan/Subsription Changes To change a site's plan,..." },{ "Id": "3289", "URL": "/open-api-admin/ecommerce-gift-vouchers-api", "Name": "Ecommerce Gift Vouchers API", "Description": " GET Ecommerce Gift Vouchers List Retrieves a list of Gift Vouchers as a JSON response based on your provided query parameters. /api/v2/admin/gift-vouchers Data / Response: { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } var obj = { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } ; var code = $('#code231 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Items": [ { "Id": 0, "Balance": 0, "Name": "string", "Amount": 0, "Enabled": true, "Currency": "string", "OrderId": 0, "Type": "string", "Recipient": { "Name": "string", "Email": "string", "Message": "string" } } ], "TotalItemsCount": 0 } var obj = { "Items": [ { "Id": 0, "Balance": 0, "Name": "string", "Amount": 0, "Enabled": true, "Currency": "string", "OrderId": 0, "Type": "string", "Recipient": { "Name": "string", "Email": "string", "Message": "string" } } ], "TotalItemsCount": 0 } ; var code = $('#code232 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); POST Ecommerce Gift Voucher Create Creates a new Gift Voucher based on the provided data. /api/v2/admin/gift-vouchers Data / Response: { "Name": "string", "Amount": 0, "Enabled": true, "Currency": "string",..." },{ "Id": "2530", "URL": "/component-types/shopping_cart", "Name": "shopping_cart", "Description": "It's primarily used to render a shopping cart summary throughout the site and the shopping cart layout. {% component type:"shopping_cart" %} Parameters and Options Parameter Values Required Description type shopping_cart This is the name of the entity that needs to be used for the component retrieving function. layout <path/to/layout> Path to file that will contain the Liquid layout content to be parsed. If an empty string, nothing will be rendered.If paramater is not included, the default virtual layout will be rendered (see below). collectionVariable <yourLiquidVariableName> Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.Your collectionVariable value must only contain..." },{ "Id": "3290", "URL": "/open-api-admin/ecommerce-shipping-options-api", "Name": "Ecommerce Shipping Options API", "Description": " GET Ecommerce External Shipping Services List Retrieves a list of External Shipping Providers as a JSON response based on your provided query parameters. /api/v2/admin/shipping-options/provider-services Data / Response: { "ShippingProviderType" : "string" } var obj = { "ShippingProviderType" : "string" } ; var code = $('#code256 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); [ { "Id": "19688", "Code": "INT_PARCEL_COR_OWN_PACKAGING", "DisplayName": "Courier (international)", "Description": null, "Type": "AustraliaPost" }, { "Id": "19689", "Code": "INT_PARCEL_EXP_OWN_PACKAGING", "DisplayName": "Express (international)", "Description": null, "Type": "AustraliaPost" } ] var obj = [ { "Id": "19688", "Code": "INT_PARCEL_COR_OWN_PACKAGING", "DisplayName": "Courier (international)", "Description": null, "Type": "AustraliaPost" }, { "Id": "19689", "Code": "INT_PARCEL_EXP_OWN_PACKAGING", "DisplayName": "Express (international)", "Description": null, "Type": "AustraliaPost" } ] ; var code = $('#code257 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); GET Ecommerce External Shipping Settings List Retrieves a list of External Shipping Provider Settings as a JSON response based on your provided query parameters. /api/v2/admin/shipping-options/provider-settings Data / Response: { "ShippingProviderType" : "string" } var obj = { "ShippingProviderType" : "string" } ; var code = $('#code259 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); " },{ "Id": "2537", "URL": "/component-types/shipping_options", "Name": "shipping_options", "Description": "When used in the Shopping Cart, it will also be responsible for rendering the correct shipping option/s based on the cart conditions and shipping option rules. {% component type: "shipping_options" %} Parameters and Options Parameter Values Required Description type shipping_options This is the name of the entity that needs to be used for the component retrieving function. layout <path/to/layout> Path to file that will contain the Liquid layout content to be parsed. If an empty string, nothing will be rendered.If paramater is not included, the default virtual layout will be rendered (see below). filteredCountry <COUNTRY CODE> Returns only those options available for the defined country (by country code, ie: US, CA,..." },{ "Id": "2592", "URL": "/component-types/shippingproviderfields", "Name": "shippingProviderFields", "Description": "When used in the Shopping Cart and when integrated shipping provider/s are in use, it will also be responsible for rendering any additional options related to the integrated shipping provider services. One such field includes the customers zip/post code, which will be required and carry through to the Checkout page where it will be locked in the Checkout form (much like the delivery Country is if selected from the Checkout page). {% component type: "shippingProviderFields" %} Parameters and Options Parameter Values Required Description type shippingProviderFields This is the name of the entity that needs to be used for the component retrieving function. layout <path/to/layout> Path to file that will contain the Liquid layout content to be parsed. If an empty string, nothing will be rendered.If paramater is not included, the default virtual..." },{ "Id": "3291", "URL": "/open-api-admin/ecommerce-taxes-api", "Name": "Ecommerce Taxes API", "Description": " GET Ecommerce Taxes List Retrieves a list of Taxes as a JSON response based on your provided query parameters. /api/v2/admin/taxes Data / Response: { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } var obj = { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } ; var code = $('#code288 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Items": [ { "Id": 0, "TaxCode": "string", "Country": "string", "Rate": 0 } ], "TotalItemsCount": 0 } var obj = { "Items": [ { "Id": 0, "TaxCode": "string", "Country": "string", "Rate": 0 } ], "TotalItemsCount": 0 } ; var code = $('#code289 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); POST Ecommerce Tax Create Creates a new Tax item based on the provided data. /api/v2/admin/taxes Data / Response: { "TaxCode": "string", "Country": "string", "Rate": 0 } var obj = { "TaxCode": "string", "Country": "string", "Rate": 0 } ; var code = $('#code291 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Id": 0, "TaxCode": "string", "Country": "string", "Rate": 0 } var obj..." },{ "Id": "2539", "URL": "/component-types/tax_codes", "Name": "tax_codes", "Description": "{% component type: "tax_codes" %} Parameters and Options Parameter Values Required Description type tax_codes This is the name of the entity that needs to be used for the component retrieving function. layout <path/to/layout> Path to file that will contain the Liquid layout content to be parsed. If an empty string, nothing will be rendered.If paramater is not included, the default virtual layout will be rendered (see below). filteredCountry <COUNTRY CODE> Returns only those options available for the defined country (by country code, ie: US, CA, AU, NZ, etc.) - since these items can belong to, or be restricted to, a specific country.The default shopping cart setup will use the default domain..." },{ "Id": "2520", "URL": "/learning-liquid-free-online-course/advanced-liquid-tags", "Name": "Part 4: Advanced Liquid Tags", "Description": "---- WORK IN PROGRESS FROM HERE DOWN ---- Control Flow Tags (if, unless, case) Operators… Truthy/Falsy… Variable Tags (assign, capture, increment...) Iteration Tags (for, else, break, limit, range, cycle, NOT-table…) Comment Tag ... Raw Tag ... Whitespace control? …? move to 'Working with Liquid' page " },{ "Id": "2547", "URL": "/component-types/payment_form_fields", "Name": "payment_form_fields", "Description": "This component is intended to be output within a payment form and requires various other elements and scripts generated with such a form in order to display and function correctly. This component cannot be modified via custom layouts or passed to a collection variable. {% component type: "payment_form_fields", formAlias: "<form_alias>" %} Parameters and Options Parameter Values Required Description type payment_form_fields This is the name of the entity that needs to be used for the component retrieving function. formAlias <form_alias> The alias name of the Form being used for payment collection. Virtual LayoutThis component is rendered via a default virtual layout that will output as per the following: <div id="paymentFields_{0}"></div> <input type="hidden" name="Payment_Data"/> <div id="paymentErrors_{0}" role="alert"></div> ..." },{ "Id": "3331", "URL": "/open-api-admin/site-globals-api", "Name": "Site Globals API", "Description": " GET Site Globals Property Groups List Retrieves a list of Site Globals Groups as a JSON response based on your provided query parameters. /api/v2/admin/site-globals Data / Response: { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } var obj = { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } ; var code = $('#code312 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); [ { "Id": 0, "CreatedDateTime": "2024-05-22T17:06:39.382Z", "Properties": [ { "Id": 0, "GroupId": 0, "CreatedDateTime": "2024-05-22T17:06:39.382Z", "LiquidOutput": "string", "LiquidShortOutput": "string", "HTMLLiquidOutput": "string", "HTMLLiquidShortOutput": "string", "Name": "string", "Alias": "string", "ShortAlias": "string", "SortOrder": 0, "Type": 0, "Value": "string", "HTMLAlias": "string", "ShortHTMLAlias": "string", "Layout": "string" } ], "Name": "string", "Alias": "string", "ShortAlias": "string", "EnableOse": true, "EnableToolbox": true } ] var obj = [ { "Id": 0, "CreatedDateTime": "2024-05-22T17:06:39.382Z", "Properties": [ { "Id": 0, "GroupId": 0, "CreatedDateTime": "2024-05-22T17:06:39.382Z", "LiquidOutput": "string", "LiquidShortOutput": "string", "HTMLLiquidOutput": "string", "HTMLLiquidShortOutput": "string", "Name": "string", "Alias": "string", "ShortAlias": "string", "SortOrder": 0, "Type": 0, "Value": "string", "HTMLAlias": "string", "ShortHTMLAlias": "string", "Layout": "string" } ], "Name": "string", "Alias": "string", "ShortAlias": "string", "EnableOse": true, "EnableToolbox": true } ] ; var code = $('#code313..." },{ "Id": "3294", "URL": "/open-api-admin/forms-api", "Name": "Forms API", "Description": " GET Forms List Retrieves a list of Forms as a JSON response based on your provided query parameters. /api/v2/admin/forms Data / Response: { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } var obj = { "Where" : {}, "Order_By" : "Id", "Offset" : 0, "Limit" : 100, } ; var code = $('#code342 code'); code.text((JSON.stringify(obj, null, 4))); code.html((code.html()).replace(/\[\[/g, '')); { "Items": [ { "Id": 0, "Name": "string", "Alias": "string", "Type": "Generic", "IsSendConfirmEmailNotification": true, "IsSendSecureZoneLoginDetailsEmail": true, "IsSecureSubmission": true, "SubmissionFolderPath": "string", "FtpPath": "string", "CreatedDateTime": "2024-05-22T15:30:06.921Z", "EnabledAutoresponder": true, "Template": "string", "RecurringType": "None", "EnableDefaultJSValidation": true, "SecureZoneIds": [ 0 ], "CustomWorkflowIds": [ 0 ], "FormFields": [ { "Name": "string", "Alias": "string", "FieldGroupType": "System", "IsEditable": true, "IsComposite": true, "IsMandatory": true, "Type": "DateTime" } ], "FormAutoresponder": { "FromName": "string", "FromEmail": "string", "Subject": "string", "Body": "string", "TemplateId": 0, "EnableEditor": true } } ], "TotalItemsCount": 0 } var obj = { "Items": [ { "Id": 0, "Name": "string", "Alias": "string", "Type": "Generic", "IsSendConfirmEmailNotification": true, "IsSendSecureZoneLoginDetailsEmail": true, "IsSecureSubmission": true, "SubmissionFolderPath": "string", "FtpPath": "string", "CreatedDateTime": "2024-05-22T15:30:06.921Z", "EnabledAutoresponder": true, "Template": "string", "RecurringType": "None", "EnableDefaultJSValidation": true, "SecureZoneIds": [ 0 ], "CustomWorkflowIds": [ 0 ], "FormFields":..." },
]