From b817b394ec41e21663b11bd60c0034612b860517 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Thu, 16 May 2024 19:48:34 +0000
Subject: [PATCH 01/71] Automatic upgrade of the SDK. Build #340123.

---
 .gitignore                                    |    4 +-
 README.md                                     |  168 +-
 WellnessLiving/Config/WlConfigDeveloper.php   |   92 +-
 .../Core/Captcha/CaptchaRequireModel.php      |   72 +-
 WellnessLiving/Core/Drive/DriveTypeSid.php    |   60 +-
 .../Drive/ImageUpload/ImageUploadModel.php    |  430 ++--
 .../ImageUpload/ImageUploadTemporaryModel.php |  244 +--
 .../Core/Geo/Region/RegionModel.php           |  146 +-
 .../Core/Google/GoogleCaptchaModel.php        |   62 +-
 WellnessLiving/Core/Locale/CurrencySid.php    |  166 +-
 .../ChangePasswordApplyModel.php              |  108 +-
 .../ChangePasswordBeginModel.php              |  102 +-
 .../Login/Register/RegisterConfirmModel.php   |   88 +-
 .../Passport/User/Email/EmailExistModel.php   |   56 +-
 .../Core/Quiz/ResponseStatusSid.php           |   86 +-
 .../Credential/CredentialModel.php            |   82 +-
 .../Request/Api/Application/OriginModel.php   |   74 +-
 .../Core/Request/Api/KeySecretModel.php       |  114 +-
 .../Core/Request/Token/TokenPinModel.php      |   76 +-
 WellnessLiving/Core/Sid/SortOrderSid.php      |   40 +-
 WellnessLiving/Core/Sid/YesNoSid.php          |   40 +-
 WellnessLiving/Core/a/ADateWeekSid.php        |   90 +-
 WellnessLiving/Core/a/ADurationSid.php        |  134 +-
 WellnessLiving/Core/a/AFolder.php             |  186 +-
 WellnessLiving/Core/a/ASocialSid.php          |   56 +-
 .../Drive/ImageUpload/ImageUploadModel.php    |   88 +-
 .../Passport/Login/Enter/NotepadModel.php     |  110 +-
 WellnessLiving/Custom/Wl/Report/DataModel.php |   60 +-
 .../Resource/ApplicationResourceModel.php     |  628 +++---
 WellnessLiving/Custom/Wl/WlRegionSid.php      |   62 +-
 WellnessLiving/Sha3.php                       |  828 ++++----
 .../Social/Apple/Login/AppleLoginModel.php    |   56 +-
 .../Social/Facebook/Login/LoginModel.php      |   60 +-
 .../Social/Google/Plus/LoginModel.php         |   60 +-
 .../Social/Microsoft/LoginModel.php           |  156 +-
 .../Studio/Task/Branch/BranchBuildModel.php   |  116 +-
 .../Task/Branch/BranchDeleteModeSid.php       |   50 +-
 .../Appointment/Book/Asset/AssetListModel.php |  476 ++---
 .../Appointment/Book/Finish/Finish47Model.php |  492 ++---
 .../Book/Finish/FinishMultipleModel.php       |  788 +++----
 .../Book/Payment/PaymentMultipleModel.php     | 1056 ++++-----
 .../Book/Payment/PaymentPostModel.php         |  834 ++++----
 .../Book/Purchase/PurchaseModel.php           |    8 -
 .../Book/Service/ServiceList52Model.php       |  784 +++----
 .../Wl/Appointment/Edit/AddonUpdateModel.php  |  150 +-
 .../Wl/Book/Process/Info/Info54Model.php      | 1256 +++++------
 .../Process/Info/InfoCanCompleteModel.php     |  214 +-
 .../Wl/Book/Process/Payment/PaymentModel.php  |  814 +++----
 .../Wl/Book/Process/Process54Model.php        |  538 ++---
 .../Wl/Book/Process/Process59Model.php        |  536 ++---
 .../Wl/Book/Process/ProcessSpaSid.php         |  202 +-
 .../Book/Process/Purchase/Purchase56Model.php | 1110 +++++-----
 .../Purchase/PurchaseElementListModel.php     |  236 +--
 .../Process/Purchase/PurchaseElementModel.php |  294 +--
 .../Wl/Book/Process/Quiz/QuizModel.php        |  482 ++---
 .../Book/Process/Relation/RelationModel.php   |  286 +--
 .../Book/Process/Resource/Resource54Model.php |  642 +++---
 .../Wl/Book/Process/doc/Questions.md          |   12 +-
 .../Business/Account/BusinessAccountModel.php |   84 +-
 .../AmazonRegion/AmazonRegionModel.php        |   66 +-
 .../Wl/Business/BusinessAccessModel.php       |  222 +-
 .../Wl/Business/BusinessCategorySid.php       |   84 +-
 WellnessLiving/Wl/Business/BusinessModel.php  |  156 +-
 .../Wl/Business/BusinessPaymentCaptcha.php    |   30 +-
 .../Business/Config/BusinessConfigModel.php   |  206 +-
 WellnessLiving/Wl/Business/DataModel.php      |  670 +++---
 .../Business/Design/BusinessDesignModel.php   |  158 +-
 .../RsBusinessDesignLogoPositionSid.php       |   50 +-
 .../Design/RsBusinessDesignLogoStyleSid.php   |   60 +-
 .../Design/RsPageFrontendHeaderLayoutSid.php  |   60 +-
 .../BusinessFranchiseLocationFormSid.php      |   80 +-
 .../Location/BusinessFranchiseLocationSid.php |   66 +-
 .../Wl/Business/Lead/BusinessLeadModel.php    |  136 +-
 .../Business/Partner/PartnerSettingsModel.php |  174 +-
 .../Business/Select/BusinessSelectModel.php   |  146 +-
 .../Business/Type/BusinessTypeListModel.php   |   50 +-
 .../User/Subscribe/SubscribeModel.php         |  120 +-
 WellnessLiving/Wl/Catalog/Cart/CartModel.php  |  412 ++--
 .../Wl/Catalog/Cart/LimitQuantityModel.php    |  196 +-
 .../Wl/Catalog/CatalogList/ElementModel.php   | 1192 +++++------
 .../Wl/Catalog/CatalogList/ListModel.php      |  110 +-
 .../Wl/Catalog/Payment/PaymentModel.php       | 1070 +++++-----
 .../Wl/Catalog/PurchaseOptionViewSid.php      |  128 +-
 .../StaffApp/CatalogCart/CatalogCartModel.php |  550 ++---
 .../Wl/Classes/ClassList/BookListModel.php    |  148 +-
 .../Wl/Classes/ClassView/ElementModel.php     |  336 +--
 .../Wl/Classes/Period/Modify/ModifyModel.php  |  256 +--
 .../Classes/Promotion/ClassPromotionModel.php |  176 +-
 WellnessLiving/Wl/Classes/Tab/TabSid.php      |   64 +-
 WellnessLiving/Wl/Collector/DebtListModel.php |  238 +--
 WellnessLiving/Wl/Collector/DebtPayModel.php  |  152 +-
 .../Wl/Collector/DebtTransactionModel.php     |  168 +-
 .../Wl/Coupon/CouponList/ListModel.php        |  164 +-
 .../Wl/Coupon/PurchaseRestrictionSid.php      |   54 +-
 WellnessLiving/Wl/Coupon/WlTypeSid.php        |   58 +-
 .../Wl/Event/Book/EventView/ElementModel.php  | 1202 +++++------
 .../Wl/Event/EventCancelWholeModel.php        |   72 +-
 WellnessLiving/Wl/Event/EventListModel.php    |  708 ++++---
 .../Wl/Facebook/Login/FacebookLoginModel.php  |   76 +-
 WellnessLiving/Wl/Facility/WlFacilitySid.php  |   26 +-
 .../Wl/Family/Relation/RelationModel.php      |  152 +-
 .../Family/Relation/WlFamilyRelationSid.php   |   94 +-
 WellnessLiving/Wl/Fitbuilder/MessageModel.php |   29 -
 .../Wl/Google/Login/GoogleLoginModel.php      |   76 +-
 WellnessLiving/Wl/Gym/Visit/VisitAddModel.php |  158 +-
 .../Wl/Holiday/BulkBusinessHolidayModel.php   |  120 +-
 WellnessLiving/Wl/Holiday/HolidayModel.php    |  106 +-
 .../Wl/Insurance/Catalog/ProgramListModel.php |  104 +-
 .../Field/EnrollmentFieldListModel.php        |  232 +-
 .../Autymate/AutymateAccessModeSid.php        |   40 +-
 .../Autymate/AutymateActivateModel.php        |  112 +-
 .../Autymate/AutymateStatusSid.php            |   40 +-
 .../Wl/Integration/Autymate/ReportModel.php   |  332 +--
 .../Curves/CurvesFranchiseLocationModel.php   |  426 ++--
 .../Wl/Integration/DragonFly/AccessModel.php  |   98 +-
 .../Saml/SamlUserDeactivationModel.php        |   60 +-
 WellnessLiving/Wl/Lead/LeadCaptcha.php        |   30 +-
 WellnessLiving/Wl/Lead/LeadModel.php          |  328 +--
 WellnessLiving/Wl/Location/Flag/FlagModel.php |  124 +-
 WellnessLiving/Wl/Location/ListBulkModel.php  |  246 +--
 WellnessLiving/Wl/Location/LocationModel.php  |  194 +-
 .../WorkTime/LocationWorkTimeModel.php        |   96 +-
 WellnessLiving/Wl/Login/Agree/AgreeModel.php  |  112 +-
 .../Wl/Login/Attendance/Add/AddModel.php      |  430 ++--
 .../Wl/Login/Attendance/AddOptionSid.php      |   50 +-
 .../Attendance/AttendanceInfoByTokenModel.php |  640 +++---
 .../Attendance/AttendanceListByTokenModel.php |  558 ++---
 .../Login/Attendance/AttendanceListModel.php  |  540 ++---
 .../Wl/Login/Coupon/CouponModel.php           |   90 +-
 WellnessLiving/Wl/Login/Mail/MailUseModel.php |   74 +-
 .../Wl/Login/Member/MemberModel.php           |  134 +-
 .../Wl/Login/Member/MemberValidateModel.php   |  202 +-
 .../Wl/Login/Permission/PermissionModel.php   |   60 +-
 .../Login/Promotion/Convert/ConvertModel.php  |  386 ++--
 .../Promotion/Convert/ConvertWhenSid.php      |   60 +-
 .../Promotion/PromotionPayPauseModel.php      |  282 +--
 WellnessLiving/Wl/Login/Type/SystemSid.php    |   60 +-
 WellnessLiving/Wl/Mail/SendMailModel.php      |  152 +-
 .../Wl/Member/Group/GroupList/ListModel.php   |  174 +-
 .../Purchase/MemberByPromotionModel.php       |  140 +-
 .../Microsoft/Login/MicrosoftLoginModel.php   |  174 +-
 WellnessLiving/Wl/Mode/ModeSid.php            |  268 +--
 .../Send/NotificationSendModel.php            |  140 +-
 .../Wl/Pay/Account/AccountModel.php           |  190 +-
 .../Wl/Pay/Address/AddressModel.php           |   96 +-
 .../Wl/Pay/Form/EnvironmentModel.php          |  374 ++--
 WellnessLiving/Wl/Pay/Method/ListModel.php    |  148 +-
 .../Report/TransactionAllPaymentModel.php     |  292 +--
 .../Transaction/WlPayTransactionStatusSid.php |  270 +--
 .../Wl/Profile/Alert/AlertModel.php           |  232 +-
 .../Wl/Profile/Edit/CreateModel.php           |  106 +-
 .../Wl/Profile/Edit/EditByTokenModel.php      |  526 ++---
 .../Wl/Profile/Edit/EditPasswordModel.php     |  124 +-
 .../Form/Response/ResponseListModel.php       |  214 +-
 .../PurchaseList/PurchaseListElementModel.php | 1618 +++++++-------
 .../PurchaseList/PurchaseListModel.php        |  326 +--
 .../Wl/Profile/RegisterSourceSid.php          |   54 +-
 .../Wl/Profile/Setting/SettingModel.php       |  188 +-
 WellnessLiving/Wl/Profile/Term/TermModel.php  |  176 +-
 .../Promotion/Convert/PromotionConvertSid.php |   54 +-
 .../Wl/Promotion/Edit/Limit/Cycle/Sid.php     |   40 +-
 .../Promotion/Index/PromotionIndexModel.php   |  616 +++---
 .../Wl/Promotion/PromotionListModel.php       |  116 +-
 .../Wl/Promotion/PromotionModel.php           |  328 +--
 .../Wl/Purchase/Mail/PurchaseMailModel.php    |   56 +-
 .../Purchase/Receipt/PurchaseReceiptModel.php |  848 ++++----
 .../Wl/Purchase/Share/PurchaseShareModel.php  |   74 +-
 WellnessLiving/Wl/Quiz/QuizElementModel.php   |  274 +--
 .../Wl/Quiz/Response/QuizResponse.php         |   30 +-
 WellnessLiving/Wl/Quiz/Response/SourceSid.php |   88 +-
 .../Application/MemberInfoColorSid.php        |   70 +-
 .../Application/MemberInfoIconSid.php         |  124 +-
 .../Reception/Application/MemberInfoModel.php |  392 ++--
 .../Application/ReceptionScheduleModel.php    |  468 ++--
 .../Generator/ReportGeneratorStatusSid.php    |  174 +-
 .../Wl/Resource/Image/ImageIconSid.php        |  314 +--
 .../Wl/Resource/Image/ImageShapeSid.php       |   60 +-
 .../Wl/Resource/Layout/LayoutModel.php        |  514 ++---
 .../Wl/Resource/Layout/LayoutShapeSid.php     |   50 +-
 WellnessLiving/Wl/Review/ReviewCaptcha.php    |   30 +-
 .../Wl/Review/ReviewFeatureModel.php          |   72 +-
 .../Review/ReviewList/ReviewElementModel.php  |  254 +--
 .../Wl/Review/ReviewList/ReviewOrderSid.php   |   60 +-
 WellnessLiving/Wl/Review/ReviewReplyModel.php |  104 +-
 .../Wl/Schedule/ClassList/ClassListModel.php  |  510 ++---
 .../Wl/Schedule/ClassView/ClassViewModel.php  |  468 ++--
 .../Wl/Schedule/ClassView/DenyReasonSid.php   |  234 +-
 .../Wl/Schedule/Design/OptionSid.php          |   54 +-
 .../Wl/Schedule/Page/PageElementModel.php     |  722 +++----
 .../StaffApp/ScheduleListByTokenModel.php     |  756 +++----
 .../Wl/Search/Tag/SearchTagListModel.php      |   76 +-
 .../Wl/Service/ServiceBookFlowSid.php         |   50 +-
 WellnessLiving/Wl/Service/ServicePriceSid.php |   60 +-
 .../Wl/Service/ServiceRequireSid.php          |   86 +-
 WellnessLiving/Wl/Service/ServiceSid.php      |   84 +-
 .../Shop/Product/PurchaseRestrictionSid.php   |   54 +-
 .../Resource/ApplicationResourceModel.php     |   54 +-
 .../Wl/Skin/Application/SkinModel.php         |  114 +-
 .../Wl/Staff/Privilege/PrivilegeListModel.php |  128 +-
 WellnessLiving/Wl/Staff/StaffElementModel.php |  556 ++---
 WellnessLiving/Wl/Tag/TagListModel.php        |   86 +-
 WellnessLiving/Wl/Tax/TaxListModel.php        |   78 +-
 WellnessLiving/Wl/Tax/TaxModel.php            |   56 +-
 .../Wl/User/Info/UserIntegrationModel.php     |   90 +-
 .../Wl/User/Referrer/ReferrerModel.php        |  226 +-
 .../Catalog/Filter/Sort/FilterSortSid.php     |   80 +-
 .../Video/Category/CategoryElementModel.php   |  192 +-
 .../Wl/Video/Category/CategoryListModel.php   |  150 +-
 .../Wl/Video/Level/LevelListModel.php         |   84 +-
 WellnessLiving/Wl/Video/Level/LevelModel.php  |  102 +-
 WellnessLiving/Wl/Video/Tag/TagListModel.php  |   66 +-
 WellnessLiving/Wl/Video/Tag/TagModel.php      |  102 +-
 WellnessLiving/Wl/Video/VideoElementModel.php |  768 +++----
 WellnessLiving/Wl/Video/VideoListModel.php    |  344 +--
 WellnessLiving/Wl/Video/Watch/WatchModel.php  |  128 +-
 .../Wl/Video/Watch/WatchSourceSid.php         |   68 +-
 .../Wl/Virtual/VirtualProviderSid.php         |   44 +-
 WellnessLiving/Wl/Visit/VisitStatusModel.php  |  478 ++---
 WellnessLiving/Wl/WlActivationSid.php         |   98 +-
 WellnessLiving/Wl/WlAgeSid.php                |   60 +-
 WellnessLiving/Wl/WlClassModifyActionSid.php  |   50 +-
 WellnessLiving/Wl/WlClassModifyModeSid.php    |   60 +-
 WellnessLiving/Wl/WlClassModifyStepSid.php    |   72 +-
 WellnessLiving/Wl/WlFacilitySid.php           |  174 +-
 WellnessLiving/Wl/WlHomeTourSid.php           |  274 +--
 WellnessLiving/Wl/WlPayProcessorSid.php       |   90 +-
 WellnessLiving/Wl/WlPrivilegeRoleSid.php      |   80 +-
 WellnessLiving/Wl/WlPrivilegeSid.php          | 1880 ++++++++---------
 WellnessLiving/Wl/WlProfileNoteSid.php        |   96 +-
 WellnessLiving/Wl/WlProjectSid.php            |   30 +-
 WellnessLiving/Wl/WlPurchasePriceSid.php      |   40 +-
 WellnessLiving/Wl/WlRankTypeSid.php           |   32 +-
 WellnessLiving/Wl/WlRegionSid.php             |   56 +-
 WellnessLiving/Wl/WlReviewStatusSid.php       |   50 +-
 WellnessLiving/Wl/WlScheduleTimeSid.php       |   50 +-
 WellnessLiving/WlActivationSid.php            |   26 +-
 WellnessLiving/WlAgeSid.php                   |   26 +-
 WellnessLiving/WlFacilitySid.php              |   26 +-
 WellnessLiving/WlFile.php                     |  150 +-
 WellnessLiving/WlHomeTourSid.php              |   26 +-
 WellnessLiving/WlModelMultiModel.php          |  242 +--
 WellnessLiving/WlPayProcessorSid.php          |   26 +-
 WellnessLiving/WlPrivilegeSid.php             |   22 +-
 WellnessLiving/WlProjectSid.php               |   26 +-
 WellnessLiving/WlRegionSid.php                |   26 +-
 WellnessLiving/doc/multi-model.md             |  138 +-
 WellnessLiving/doc/problems.txt               |   16 +-
 WellnessLiving/doc/upgrade-20211109.md        |   84 +-
 composer.json                                 |   26 +-
 composer.lock                                 |   40 +-
 250 files changed, 27868 insertions(+), 27873 deletions(-)
 delete mode 100644 WellnessLiving/Wl/Fitbuilder/MessageModel.php

diff --git a/.gitignore b/.gitignore
index 9fd1dabc..d8aed59f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
-.idea
-/vendor/
+.idea
+/vendor/
diff --git a/README.md b/README.md
index 45690a7e..87c54a1d 100644
--- a/README.md
+++ b/README.md
@@ -1,84 +1,84 @@
-# WellnessLiving SDK
-
-## Register your application in our system
-
-To register your application, please contact WellnessLiving Support and provide the following information:
-
-* The name of your application.
-* Information about what your application does.
-
-After registering, we'll send you the following information:
-
-* The application ID
-* The secret code (authorization code)
-* An example staff member in staging
-* Your staging business ID for testing
-
-We'll also provide you with data to connect to our staging and production environments.
-Unique application IDs and secret codes are required for both environments.
-
-## Download 
-
-Our SDK can be downloaded at https://github.com/wellnessliving/wl-sdk.
-
-You can also use this bash one-liner to install the SDK with composer:
-```shell
-([ ! -f composer.json ] && echo '{"name":"sdk/project"}' > composer.json); composer config repositories.wellnessliving/wl-sdk git https://github.com/wellnessliving/wl-sdk && composer require 'wellnessliving/wl-sdk:>=1.0.0' && composer install
-```
-
-## How to run example script
-
-After the SDK has been downloaded, try to run the example script placed in the root directory of the WellnessLiving SDK.
-
-To run the example script, perform the following actions:
-
-1. Put your application ID and secret key in `example-config.php`.
-2. Put your login/password of your example staff member in `example-sdk.php`.
-3. Run the following command using your command-line interface:
-
-       php example-sdk.php
-
-## Embed our SDK in your code
-
-To work with our SDK in your code, you'll need the `WellnessLiving/` directory from the root directory of the WellnessLiving SDK.
-
-You can remove example files from your project to suit your business needs.
-
-We recommend using our autoloader that's included in our example:
-
-    require_once __DIR__.'/WellnessLiving/wl-autoloader.php';
-
-## Moving to production
-
-When you're ready to switch to the production environment, change your connection configuration class in your config file to inherit from 
-`\WellnessLiving\Config\WlConfigProduction`. By default, the connection configuration class inherits `\WellnessLiving\Config\WlConfigDeveloper`, which
-points to the staging environment.
-
-## Notes about our release process
-
-We maintain three development branches:
-
-* Trunk
-* Staging
-* Production
-
-Trunk is where our Engineering Department develops new features. Most changes are made in the trunk.
-
-For about two weeks before the release to production, staging is recreated from the trunk.
-Staging is used by our QA Team to find bugs.
-Also, we use staging to present our new features to our customers so that they can be sure new features work as
-they expected before new features move to production.
-
-### Versioning
-The versioning scheme we use is based on [Semantic Versioning](https://semver.org), wherein version suffixes are added in accordance to [Composer's version stability protocols](https://getcomposer.org/doc/articles/versions.md#stabilities). 
-* Trunk (development) releases are tagged with only numbers, without any special suffix (for example, v1.0.4).
-* Staging releases are tagged with `rc` suffix (for example, v1.0.3-rc).
-* Production releases are tagged with `stable` suffix (for example, v1.0.0-stable).
-If you're checking out a version with a specific suffix, changes in the API code are only available on the proper backend server (demo, stable, or production respectively) or a lower one (staging version is auto-merged into development, but not vice versa).
-
-**Note:** Our API and SDK is subject to change at any time without notice.
-
-Review changes in the SDK repository to determine if there are any incompatible changes.
-
-You must also write integration tests to be sure that your application is fully compatible with
-our new version of SDK and staging.
+# WellnessLiving SDK
+
+## Register your application in our system
+
+To register your application, please contact WellnessLiving Support and provide the following information:
+
+* The name of your application.
+* Information about what your application does.
+
+After registering, we'll send you the following information:
+
+* The application ID
+* The secret code (authorization code)
+* An example staff member in staging
+* Your staging business ID for testing
+
+We'll also provide you with data to connect to our staging and production environments.
+Unique application IDs and secret codes are required for both environments.
+
+## Download 
+
+Our SDK can be downloaded at https://github.com/wellnessliving/wl-sdk.
+
+You can also use this bash one-liner to install the SDK with composer:
+```shell
+([ ! -f composer.json ] && echo '{"name":"sdk/project"}' > composer.json); composer config repositories.wellnessliving/wl-sdk git https://github.com/wellnessliving/wl-sdk && composer require 'wellnessliving/wl-sdk:>=1.0.0' && composer install
+```
+
+## How to run example script
+
+After the SDK has been downloaded, try to run the example script placed in the root directory of the WellnessLiving SDK.
+
+To run the example script, perform the following actions:
+
+1. Put your application ID and secret key in `example-config.php`.
+2. Put your login/password of your example staff member in `example-sdk.php`.
+3. Run the following command using your command-line interface:
+
+       php example-sdk.php
+
+## Embed our SDK in your code
+
+To work with our SDK in your code, you'll need the `WellnessLiving/` directory from the root directory of the WellnessLiving SDK.
+
+You can remove example files from your project to suit your business needs.
+
+We recommend using our autoloader that's included in our example:
+
+    require_once __DIR__.'/WellnessLiving/wl-autoloader.php';
+
+## Moving to production
+
+When you're ready to switch to the production environment, change your connection configuration class in your config file to inherit from 
+`\WellnessLiving\Config\WlConfigProduction`. By default, the connection configuration class inherits `\WellnessLiving\Config\WlConfigDeveloper`, which
+points to the staging environment.
+
+## Notes about our release process
+
+We maintain three development branches:
+
+* Trunk
+* Staging
+* Production
+
+Trunk is where our Engineering Department develops new features. Most changes are made in the trunk.
+
+For about two weeks before the release to production, staging is recreated from the trunk.
+Staging is used by our QA Team to find bugs.
+Also, we use staging to present our new features to our customers so that they can be sure new features work as
+they expected before new features move to production.
+
+### Versioning
+The versioning scheme we use is based on [Semantic Versioning](https://semver.org), wherein version suffixes are added in accordance to [Composer's version stability protocols](https://getcomposer.org/doc/articles/versions.md#stabilities). 
+* Trunk (development) releases are tagged with only numbers, without any special suffix (for example, v1.0.4).
+* Staging releases are tagged with `rc` suffix (for example, v1.0.3-rc).
+* Production releases are tagged with `stable` suffix (for example, v1.0.0-stable).
+If you're checking out a version with a specific suffix, changes in the API code are only available on the proper backend server (demo, stable, or production respectively) or a lower one (staging version is auto-merged into development, but not vice versa).
+
+**Note:** Our API and SDK is subject to change at any time without notice.
+
+Review changes in the SDK repository to determine if there are any incompatible changes.
+
+You must also write integration tests to be sure that your application is fully compatible with
+our new version of SDK and staging.
diff --git a/WellnessLiving/Config/WlConfigDeveloper.php b/WellnessLiving/Config/WlConfigDeveloper.php
index d13702b5..0de174c6 100644
--- a/WellnessLiving/Config/WlConfigDeveloper.php
+++ b/WellnessLiving/Config/WlConfigDeveloper.php
@@ -1,47 +1,47 @@
-<?php
-
-namespace WellnessLiving\Config;
-
-use WellnessLiving\Wl\WlRegionSid;
-
-/**
- * Base class for Sandbox configurations.
- *
- * When creating an instance of a configuration class, the value of the <var>id_region</var> argument
- * affects the selection of the testing branch:
- * * <var>id_region</var>={@link \WellnessLiving\WlRegionSid::AP_SOUTHEAST_2} - Trunk branch (Demo data center);
- * * <var>id_region</var>={@link \WellnessLiving\WlRegionSid::US_EAST_1} - Stable branch (Staging data center).
- */
-abstract class WlConfigDeveloper extends WlConfigAbstract
-{
-  /**
-   * @inheritDoc
-   */
-  protected static $COOKIE_PERSISTENT=[
-    WlRegionSid::AP_SOUTHEAST_2 => 'dp',
-    WlRegionSid::US_EAST_1 => 'sp',
-  ];
-
-  /**
-   * @inheritDoc
-   */
-  protected static $COOKIE_TRANSIENT=[
-    WlRegionSid::AP_SOUTHEAST_2 => 'dt',
-    WlRegionSid::US_EAST_1 => 'st',
-  ];
-
-  /**
-   * @inheritDoc
-   */
-  protected static $REGION_URL = [
-    WlRegionSid::AP_SOUTHEAST_2 => 'https://demo.wellnessliving.com/',
-    WlRegionSid::US_EAST_1 => 'https://staging.wellnessliving.com/',
-  ];
-
-  /**
-   * @inheritDoc
-   */
-  const URL_EDGE='https://edge.sandbox.wellnessliving.com/';
-}
-
+<?php
+
+namespace WellnessLiving\Config;
+
+use WellnessLiving\Wl\WlRegionSid;
+
+/**
+ * Base class for Sandbox configurations.
+ *
+ * When creating an instance of a configuration class, the value of the <var>id_region</var> argument
+ * affects the selection of the testing branch:
+ * * <var>id_region</var>={@link \WellnessLiving\WlRegionSid::AP_SOUTHEAST_2} - Trunk branch (Demo data center);
+ * * <var>id_region</var>={@link \WellnessLiving\WlRegionSid::US_EAST_1} - Stable branch (Staging data center).
+ */
+abstract class WlConfigDeveloper extends WlConfigAbstract
+{
+  /**
+   * @inheritDoc
+   */
+  protected static $COOKIE_PERSISTENT=[
+    WlRegionSid::AP_SOUTHEAST_2 => 'dp',
+    WlRegionSid::US_EAST_1 => 'sp',
+  ];
+
+  /**
+   * @inheritDoc
+   */
+  protected static $COOKIE_TRANSIENT=[
+    WlRegionSid::AP_SOUTHEAST_2 => 'dt',
+    WlRegionSid::US_EAST_1 => 'st',
+  ];
+
+  /**
+   * @inheritDoc
+   */
+  protected static $REGION_URL = [
+    WlRegionSid::AP_SOUTHEAST_2 => 'https://demo.wellnessliving.com/',
+    WlRegionSid::US_EAST_1 => 'https://staging.wellnessliving.com/',
+  ];
+
+  /**
+   * @inheritDoc
+   */
+  const URL_EDGE='https://edge.sandbox.wellnessliving.com/';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Captcha/CaptchaRequireModel.php b/WellnessLiving/Core/Captcha/CaptchaRequireModel.php
index 02471027..518c670e 100644
--- a/WellnessLiving/Core/Captcha/CaptchaRequireModel.php
+++ b/WellnessLiving/Core/Captcha/CaptchaRequireModel.php
@@ -1,37 +1,37 @@
-<?php
-
-namespace WellnessLiving\Core\Captcha;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Checks if a CAPTCHA is required.
- */
-class CaptchaRequireModel extends WlModelAbstract
-{
-  /**
-   * Arguments for creating CAPTCHA object.
-   *
-   * @get get
-   * @var array
-   */
-  public $a_arguments = [];
-
-  /**
-   * The CID of the CAPTCHA.
-   *
-   * @get get
-   * @var int
-   */
-  public $cid_captcha = 0;
-
-  /**
-   * This will be `true` if a CAPTCHA is required. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_require = false;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Captcha;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Checks if a CAPTCHA is required.
+ */
+class CaptchaRequireModel extends WlModelAbstract
+{
+  /**
+   * Arguments for creating CAPTCHA object.
+   *
+   * @get get
+   * @var array
+   */
+  public $a_arguments = [];
+
+  /**
+   * The CID of the CAPTCHA.
+   *
+   * @get get
+   * @var int
+   */
+  public $cid_captcha = 0;
+
+  /**
+   * This will be `true` if a CAPTCHA is required. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_require = false;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Drive/DriveTypeSid.php b/WellnessLiving/Core/Drive/DriveTypeSid.php
index b36643b4..3e1a284a 100644
--- a/WellnessLiving/Core/Drive/DriveTypeSid.php
+++ b/WellnessLiving/Core/Drive/DriveTypeSid.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Core\Drive;
-
-/**
- * List of image types.
- */
-class DriveTypeSid
-{
-  /**
-   * Bmp image.
-   */
-  const BMP = 4;
-
-  /**
-   * Gif image.
-   */
-  const GIF = 1;
-
-  /**
-   * Jpeg image.
-   */
-  const JPEG = 2;
-
-  /**
-   * Png image.
-   */
-  const PNG = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Drive;
+
+/**
+ * List of image types.
+ */
+class DriveTypeSid
+{
+  /**
+   * Bmp image.
+   */
+  const BMP = 4;
+
+  /**
+   * Gif image.
+   */
+  const GIF = 1;
+
+  /**
+   * Jpeg image.
+   */
+  const JPEG = 2;
+
+  /**
+   * Png image.
+   */
+  const PNG = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Drive/ImageUpload/ImageUploadModel.php b/WellnessLiving/Core/Drive/ImageUpload/ImageUploadModel.php
index bb1a8a62..542776bf 100644
--- a/WellnessLiving/Core/Drive/ImageUpload/ImageUploadModel.php
+++ b/WellnessLiving/Core/Drive/ImageUpload/ImageUploadModel.php
@@ -1,216 +1,216 @@
-<?php
-
-namespace WellnessLiving\Core\Drive\ImageUpload;
-
-/**
- * An endpoint that performs the final action to an uploaded image.
- * Images are uploaded using {@link ImageUploadTemporaryModel}.
- */
-class ImageUploadModel extends \WellnessLiving\Custom\Core\Drive\ImageUpload\ImageUploadModel
-{
-  /**
-   * Image information for every ID.
-   *
-   * @post result
-   * @var array[]
-   */
-  public $a_image;
-
-  /**
-   * Information about the text for an empty image upload. See the PHP side for more information.
-   *
-   * @get result
-   * @put result
-   * @var array|null
-   */
-  public $a_text_empty;
-
-  /**
-   * An HTML string to use for the image recommendation.
-   *
-   * @get result
-   * @put result
-   * @var string
-   */
-  public $html_image_hint;
-
-  /**
-   * The maximum height of image.
-   *
-   * @get result
-   * @put result
-   * @var int|null
-   */
-  public $i_height_max;
-
-  /**
-   * The minimum height of image.
-   *
-   * @get result
-   * @put result
-   * @var int|null
-   */
-  public $i_height_min;
-
-  /**
-   * The height of the thumbnail image.
-   * This will be `null` until it's loaded from the server.
-   *
-   * @get result
-   * @put result
-   * @var int|null
-   */
-  public $i_thumbnail_height;
-
-  /**
-   * The width of the thumbnail image.
-   * This will be `null` until it's loaded from the server.
-   *
-   * @get result
-   * @put result
-   * @var int|null
-   */
-  public $i_thumbnail_width;
-
-  /**
-   * The maximum width of the image.
-   *
-   * @get result
-   * @put result
-   * @var int|null
-   */
-  public $i_width_max;
-
-  /**
-   * The minimum width of the image.
-   *
-   * @get result
-   * @put result
-   * @var int|null
-   */
-  public $i_width_min;
-
-  /**
-   * If `true`, the image is treated as circular. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @put result
-   * @var bool|null
-   */
-  public $is_circular;
-
-  /**
-   * If `true`, image deletion is permitted. Otherwise, this will be `false`.
-   *
-   * This will be `null` until it's loaded from the server.
-   *
-   * @get result
-   * @put result
-   * @var bool|null
-   */
-  public $is_delete_allow;
-
-  /**
-   * If `true`, the temporary image will be retrieved. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @put get
-   * @var bool
-   */
-  public $is_temporary = false;
-
-  /**
-   * The image ID set in {@link ImageUploadModel::$s_class}.
-   *
-   * @get get
-   * @put get
-   * @var string
-   */
-  public $k_id = '';
-
-  /**
-   * The name of the class that manages this image.
-   *
-   * @get get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $s_class = '';
-
-  /**
-   * The link protection code.
-   *
-   * @get result
-   * @put result
-   * @var string|null
-   */
-  public $s_code;
-
-  /**
-   * The action that must be performed to the image.
-   *
-   * @put post
-   * @var string
-   */
-  public $s_command = '';
-
-  /**
-   * The image link.
-   *
-   * @get result
-   * @put result
-   * @var string|null
-   */
-  public $s_link;
-
-  /**
-   * A list of image IDs set in {@link ImageUploadModel::$s_class}, serialised using JSON.
-   *
-   * This will be `null` if there's no data being sent by the client.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_id = null;
-
-  /**
-   * The image URL that should be displayed in cases where no image is uploaded.
-   * This will be `null` until it's loaded from the server.
-   *
-   * @get result
-   * @put result
-   * @var string|null
-   */
-  public $url_empty;
-
-  /**
-   * The thumbnail URL of the image.
-   * This will be `null` until it's loaded from the server.
-   *
-   * @get result
-   * @put result
-   * @var string|null
-   */
-  public $url_thumbnail;
-
-  /**
-   * The script URL where new image should be uploaded from.
-   *
-   * @get result
-   * @put result
-   * @var string|null
-   */
-  public $url_upload;
-
-  /**
-   * The URL of the full image.
-   *
-   * @get result
-   * @put result
-   * @var string|null
-   */
-  public $url_view;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Drive\ImageUpload;
+
+/**
+ * An endpoint that performs the final action to an uploaded image.
+ * Images are uploaded using {@link ImageUploadTemporaryModel}.
+ */
+class ImageUploadModel extends \WellnessLiving\Custom\Core\Drive\ImageUpload\ImageUploadModel
+{
+  /**
+   * Image information for every ID.
+   *
+   * @post result
+   * @var array[]
+   */
+  public $a_image;
+
+  /**
+   * Information about the text for an empty image upload. See the PHP side for more information.
+   *
+   * @get result
+   * @put result
+   * @var array|null
+   */
+  public $a_text_empty;
+
+  /**
+   * An HTML string to use for the image recommendation.
+   *
+   * @get result
+   * @put result
+   * @var string
+   */
+  public $html_image_hint;
+
+  /**
+   * The maximum height of image.
+   *
+   * @get result
+   * @put result
+   * @var int|null
+   */
+  public $i_height_max;
+
+  /**
+   * The minimum height of image.
+   *
+   * @get result
+   * @put result
+   * @var int|null
+   */
+  public $i_height_min;
+
+  /**
+   * The height of the thumbnail image.
+   * This will be `null` until it's loaded from the server.
+   *
+   * @get result
+   * @put result
+   * @var int|null
+   */
+  public $i_thumbnail_height;
+
+  /**
+   * The width of the thumbnail image.
+   * This will be `null` until it's loaded from the server.
+   *
+   * @get result
+   * @put result
+   * @var int|null
+   */
+  public $i_thumbnail_width;
+
+  /**
+   * The maximum width of the image.
+   *
+   * @get result
+   * @put result
+   * @var int|null
+   */
+  public $i_width_max;
+
+  /**
+   * The minimum width of the image.
+   *
+   * @get result
+   * @put result
+   * @var int|null
+   */
+  public $i_width_min;
+
+  /**
+   * If `true`, the image is treated as circular. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @put result
+   * @var bool|null
+   */
+  public $is_circular;
+
+  /**
+   * If `true`, image deletion is permitted. Otherwise, this will be `false`.
+   *
+   * This will be `null` until it's loaded from the server.
+   *
+   * @get result
+   * @put result
+   * @var bool|null
+   */
+  public $is_delete_allow;
+
+  /**
+   * If `true`, the temporary image will be retrieved. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @put get
+   * @var bool
+   */
+  public $is_temporary = false;
+
+  /**
+   * The image ID set in {@link ImageUploadModel::$s_class}.
+   *
+   * @get get
+   * @put get
+   * @var string
+   */
+  public $k_id = '';
+
+  /**
+   * The name of the class that manages this image.
+   *
+   * @get get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $s_class = '';
+
+  /**
+   * The link protection code.
+   *
+   * @get result
+   * @put result
+   * @var string|null
+   */
+  public $s_code;
+
+  /**
+   * The action that must be performed to the image.
+   *
+   * @put post
+   * @var string
+   */
+  public $s_command = '';
+
+  /**
+   * The image link.
+   *
+   * @get result
+   * @put result
+   * @var string|null
+   */
+  public $s_link;
+
+  /**
+   * A list of image IDs set in {@link ImageUploadModel::$s_class}, serialised using JSON.
+   *
+   * This will be `null` if there's no data being sent by the client.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_id = null;
+
+  /**
+   * The image URL that should be displayed in cases where no image is uploaded.
+   * This will be `null` until it's loaded from the server.
+   *
+   * @get result
+   * @put result
+   * @var string|null
+   */
+  public $url_empty;
+
+  /**
+   * The thumbnail URL of the image.
+   * This will be `null` until it's loaded from the server.
+   *
+   * @get result
+   * @put result
+   * @var string|null
+   */
+  public $url_thumbnail;
+
+  /**
+   * The script URL where new image should be uploaded from.
+   *
+   * @get result
+   * @put result
+   * @var string|null
+   */
+  public $url_upload;
+
+  /**
+   * The URL of the full image.
+   *
+   * @get result
+   * @put result
+   * @var string|null
+   */
+  public $url_view;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php b/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php
index 71d75dcf..4b7a02f6 100644
--- a/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php
+++ b/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php
@@ -1,125 +1,125 @@
-<?php
-
-namespace WellnessLiving\Core\Drive\ImageUpload;
-
-use WellnessLiving\Core\Drive\DriveTypeSid;
-use WellnessLiving\WlFile;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Uploads a raw image to a server.
- *
- * You must save an image by using {@link ImageUploadModel}.
- */
-class ImageUploadTemporaryModel extends WlModelAbstract
-{
-  /**
-   * The image to be uploaded.
-   *
+<?php
+
+namespace WellnessLiving\Core\Drive\ImageUpload;
+
+use WellnessLiving\Core\Drive\DriveTypeSid;
+use WellnessLiving\WlFile;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Uploads a raw image to a server.
+ *
+ * You must save an image by using {@link ImageUploadModel}.
+ */
+class ImageUploadTemporaryModel extends WlModelAbstract
+{
+  /**
+   * The image to be uploaded.
+   *
    * @post post
    * @var WlFile
-   */
-  public $f_image;
-
-  /**
-   * If `true`, a crop is used. Otherwise, this will be `false` if a crop isn't used (the image is saved in its original size).
-   *
-   * @post result
-   * @var bool
-   */
-  public $has_crop;
-
-  /**
-   * The actual height of the thumbnail image.
-   *
-   * @post result
-   * @var int
-   */
-  public $i_height;
-
-  /**
-   * The height of the original image.
-   *
-   * @post result
-   * @var int
-   */
-  public $i_height_src;
-
-  /**
-   * The angle of the image rotation compared to the original.
-   *
-   * @post result
-   * @var int
-   */
-  public $i_rotate;
-
-  /**
-   * The actual width of the thumbnail image.
-   *
-   * @post result
-   * @var int
-   */
-  public $i_width;
-
-  /**
-   * The width of the original image.
-   *
-   * @post result
-   * @var int
-   */
-  public $i_width_src;
-
-  /**
-   * The image type ID. One of the {@link DriveTypeSid} constants.
-   *
-   * @post result
-   * @var int
-   */
-  public $id_type_src;
-
-  /**
-   * If `true`, the thumbnail is a resized variant of the original image.
-   *
-   * @post result
-   * @var bool
-   */
-  public $is_resize;
-
-  /**
-   * The key of the image within {@link ImageUploadTemporaryModel::$s_class}.
-   *
-   * For example, for a user's photo, specify the user's key here.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_id = '';
-
-  /**
-   * The name of the class that manages this image.
-   *
-   * For example, for a user's photo, specify the string `PassportLoginImage` here.
-   *
-   * @post get
-   * @var string
-   */
-  public $s_class = '';
-
-  /**
-   * The URL to the resized and rotated image in file storage.
-   *
-   * @post result
-   * @var string
-   */
-  public $url_thumbnail;
-
-  /**
-   * The URL to the original image in file storage.
-   *
-   * @post result
-   * @var string
-   */
-  public $url_view;
-}
-
+   */
+  public $f_image;
+
+  /**
+   * If `true`, a crop is used. Otherwise, this will be `false` if a crop isn't used (the image is saved in its original size).
+   *
+   * @post result
+   * @var bool
+   */
+  public $has_crop;
+
+  /**
+   * The actual height of the thumbnail image.
+   *
+   * @post result
+   * @var int
+   */
+  public $i_height;
+
+  /**
+   * The height of the original image.
+   *
+   * @post result
+   * @var int
+   */
+  public $i_height_src;
+
+  /**
+   * The angle of the image rotation compared to the original.
+   *
+   * @post result
+   * @var int
+   */
+  public $i_rotate;
+
+  /**
+   * The actual width of the thumbnail image.
+   *
+   * @post result
+   * @var int
+   */
+  public $i_width;
+
+  /**
+   * The width of the original image.
+   *
+   * @post result
+   * @var int
+   */
+  public $i_width_src;
+
+  /**
+   * The image type ID. One of the {@link DriveTypeSid} constants.
+   *
+   * @post result
+   * @var int
+   */
+  public $id_type_src;
+
+  /**
+   * If `true`, the thumbnail is a resized variant of the original image.
+   *
+   * @post result
+   * @var bool
+   */
+  public $is_resize;
+
+  /**
+   * The key of the image within {@link ImageUploadTemporaryModel::$s_class}.
+   *
+   * For example, for a user's photo, specify the user's key here.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_id = '';
+
+  /**
+   * The name of the class that manages this image.
+   *
+   * For example, for a user's photo, specify the string `PassportLoginImage` here.
+   *
+   * @post get
+   * @var string
+   */
+  public $s_class = '';
+
+  /**
+   * The URL to the resized and rotated image in file storage.
+   *
+   * @post result
+   * @var string
+   */
+  public $url_thumbnail;
+
+  /**
+   * The URL to the original image in file storage.
+   *
+   * @post result
+   * @var string
+   */
+  public $url_view;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Geo/Region/RegionModel.php b/WellnessLiving/Core/Geo/Region/RegionModel.php
index a76764f4..e96aa578 100644
--- a/WellnessLiving/Core/Geo/Region/RegionModel.php
+++ b/WellnessLiving/Core/Geo/Region/RegionModel.php
@@ -1,74 +1,74 @@
-<?php
-
-namespace WellnessLiving\Core\Geo\Region;
-
-use WellnessLiving\Core\Locale\LocaleSid;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Gets a list of regions for a specified country or all countries.
- * A region refers to a jurisdiction like a state, province, or territory.
- */
-class RegionModel extends WlModelAbstract
-{
-  /**
-   * A list of regions grouped by their country.
-   * <dl>
-   *   <dt>
-   *     string[] <var>a_region</var>
-   *   </dt>
-   *   <dd>
-   *     A list of regions in the country. Every element has the next keys: <dl>
-   *       <dt>
-   *         string <var>k_geo</var>
-   *       </dt>
-   *       <dd>
-   *         The region key.
-   *       </dd>
-   *       <dt>
-   *         string <var>s_title</var>
-   *       </dt>
-   *       <dd>
-   *         The name of the region.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>k_geo_country</var>
-   *   </dt>
-   *   <dd>
-   *     The country key.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_title</var>
-   *   </dt>
-   *   <dd>
-   *     The name of the country.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_region;
-
-  /**
-   * The locale ID to find regions for. One of the {@link LocaleSid} constants.
-   *
-   * @get get
-   * @var int
-   */
-  public $id_locale = 0;
-
-  /**
-   * Determines whether to get regions for all locales.
-   *
-   * If `true`, this will get regions for all locales. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_locale_all = false;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Geo\Region;
+
+use WellnessLiving\Core\Locale\LocaleSid;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Gets a list of regions for a specified country or all countries.
+ * A region refers to a jurisdiction like a state, province, or territory.
+ */
+class RegionModel extends WlModelAbstract
+{
+  /**
+   * A list of regions grouped by their country.
+   * <dl>
+   *   <dt>
+   *     string[] <var>a_region</var>
+   *   </dt>
+   *   <dd>
+   *     A list of regions in the country. Every element has the next keys: <dl>
+   *       <dt>
+   *         string <var>k_geo</var>
+   *       </dt>
+   *       <dd>
+   *         The region key.
+   *       </dd>
+   *       <dt>
+   *         string <var>s_title</var>
+   *       </dt>
+   *       <dd>
+   *         The name of the region.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>k_geo_country</var>
+   *   </dt>
+   *   <dd>
+   *     The country key.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_title</var>
+   *   </dt>
+   *   <dd>
+   *     The name of the country.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_region;
+
+  /**
+   * The locale ID to find regions for. One of the {@link LocaleSid} constants.
+   *
+   * @get get
+   * @var int
+   */
+  public $id_locale = 0;
+
+  /**
+   * Determines whether to get regions for all locales.
+   *
+   * If `true`, this will get regions for all locales. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_locale_all = false;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Google/GoogleCaptchaModel.php b/WellnessLiving/Core/Google/GoogleCaptchaModel.php
index 1c1b02fa..3cb02c78 100644
--- a/WellnessLiving/Core/Google/GoogleCaptchaModel.php
+++ b/WellnessLiving/Core/Google/GoogleCaptchaModel.php
@@ -1,32 +1,32 @@
-<?php
-
-namespace WellnessLiving\Core\Google;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Stores the user token CAPTCHA.
- */
-class GoogleCaptchaModel extends WlModelAbstract
-{
-  /**
-   * The action name.
-   *
-   * Used to determine the place where the CAPTCHA is needed in documentation for endpoints that used
-   * the CAPTCHA.
-   *
-   * @put post
-   * @var string
-   */
-  public $text_action = '';
-
-  /**
-   * The user token CAPTCHA.
-   *
-   * @put post
-   * @var string
-   */
-  public $text_token = '';
-}
-
+<?php
+
+namespace WellnessLiving\Core\Google;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Stores the user token CAPTCHA.
+ */
+class GoogleCaptchaModel extends WlModelAbstract
+{
+  /**
+   * The action name.
+   *
+   * Used to determine the place where the CAPTCHA is needed in documentation for endpoints that used
+   * the CAPTCHA.
+   *
+   * @put post
+   * @var string
+   */
+  public $text_action = '';
+
+  /**
+   * The user token CAPTCHA.
+   *
+   * @put post
+   * @var string
+   */
+  public $text_token = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Locale/CurrencySid.php b/WellnessLiving/Core/Locale/CurrencySid.php
index 7a81aa40..3dc1de7c 100644
--- a/WellnessLiving/Core/Locale/CurrencySid.php
+++ b/WellnessLiving/Core/Locale/CurrencySid.php
@@ -1,84 +1,84 @@
-<?php
-
-namespace WellnessLiving\Core\Locale;
-
-/**
- * A list of currencies.
- *
- * Currency constant names must comply with the standard `ISO 4217` for correct integration with other services.
- *
- * @link https://docs.1010data.com/1010dataReferenceManual/DataTypesAndFormats/currencyUnitCodes.html
- *
- * Last used ID: 13
- */
-abstract class CurrencySid
-{
-  /**
-   * United Arab Emirates dirham.
-   */
-  const AED = 11;
-
-  /**
-   * Australian dollar.
-   */
-  const AUD = 6;
-
-  /**
-   * Canadian dollar.
-   */
-  const CAD = 4;
-
-  /**
-   * Egypt Pound.
-   */
-  const EGP = 8;
-
-  /**
-   * Euro.
-   */
-  const EUR = 13;
-
-  /**
-   * British pound.
-   */
-  const GBP = 3;
-
-  /**
-   * Kuwaiti dinar.
-   */
-  const KWD = 14;
-
-  /**
-   * Cayman Islands dollar.
-   */
-  const KYD = 5;
-
-  /**
-   * New Zealand Dollar.
-   */
-  const NZD = 10;
-
-  /**
-   * Philippines Pesco.
-   */
-  const PHP = 12;
-
-  /**
-   * Unknown code.
-   *
-   * Used when currency is not specified or is not known.
-   */
-  const UNKNOWN = 2;
-
-  /**
-   * US dollars.
-   */
-  const USD = 1;
-
-  /**
-   * South African rand.
-   */
-  const ZAR = 7;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Locale;
+
+/**
+ * A list of currencies.
+ *
+ * Currency constant names must comply with the standard `ISO 4217` for correct integration with other services.
+ *
+ * @link https://docs.1010data.com/1010dataReferenceManual/DataTypesAndFormats/currencyUnitCodes.html
+ *
+ * Last used ID: 13
+ */
+abstract class CurrencySid
+{
+  /**
+   * United Arab Emirates dirham.
+   */
+  const AED = 11;
+
+  /**
+   * Australian dollar.
+   */
+  const AUD = 6;
+
+  /**
+   * Canadian dollar.
+   */
+  const CAD = 4;
+
+  /**
+   * Egypt Pound.
+   */
+  const EGP = 8;
+
+  /**
+   * Euro.
+   */
+  const EUR = 13;
+
+  /**
+   * British pound.
+   */
+  const GBP = 3;
+
+  /**
+   * Kuwaiti dinar.
+   */
+  const KWD = 14;
+
+  /**
+   * Cayman Islands dollar.
+   */
+  const KYD = 5;
+
+  /**
+   * New Zealand Dollar.
+   */
+  const NZD = 10;
+
+  /**
+   * Philippines Pesco.
+   */
+  const PHP = 12;
+
+  /**
+   * Unknown code.
+   *
+   * Used when currency is not specified or is not known.
+   */
+  const UNKNOWN = 2;
+
+  /**
+   * US dollars.
+   */
+  const USD = 1;
+
+  /**
+   * South African rand.
+   */
+  const ZAR = 7;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Passport/ChangePassword/ChangePasswordApplyModel.php b/WellnessLiving/Core/Passport/ChangePassword/ChangePasswordApplyModel.php
index 9dcb8d66..7a9b288a 100644
--- a/WellnessLiving/Core/Passport/ChangePassword/ChangePasswordApplyModel.php
+++ b/WellnessLiving/Core/Passport/ChangePassword/ChangePasswordApplyModel.php
@@ -1,55 +1,55 @@
-<?php
-
-namespace WellnessLiving\Core\Passport\ChangePassword;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Finishes the password change procedure for a user.
- *
- * This endpoint advances the {@link ChangePasswordBeginModel} endpoint.
- * Set your desired password in the {@link ChangePasswordBeginModel::$url_reset}
- * field, where you use the "reset password" link via email to get the user's new password for this endpoint.
- *
- * When the user goes to your page, get <tt>text_mail</tt> and <tt>text_code</tt> from the URL, then post this model to set a password for user.
- *
- * Use <tt>text_mail</tt> as the value for {@link ChangePasswordApplyModel::$text_login} and
- * {@link ChangePasswordApplyModel::$text_mail},
- * and <tt>text_code</tt> as the value for {@link ChangePasswordApplyModel::$text_code}.
- */
-class ChangePasswordApplyModel extends WlModelAbstract
-{
-  /**
-   * The verification code, which can be obtained from the "reset password" email link. This is a required value.
-   *
-   * @post get
-   * @var string
-   */
-  public $text_code = '';
-
-  /**
-   * The user's login, which can be obtained from the "reset password" email link. This is a required value.
-   *
-   * @post get
-   * @var string
-   */
-  public $text_login = '';
-
-  /**
-   * The user's email address, which can be obtained from the "reset password" email link. This is a required value.
-   *
-   * @post get
-   * @var string
-   */
-  public $text_mail = '';
-
-  /**
-   * The user's new password. This is a required value.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_password = '';
-}
-
+<?php
+
+namespace WellnessLiving\Core\Passport\ChangePassword;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Finishes the password change procedure for a user.
+ *
+ * This endpoint advances the {@link ChangePasswordBeginModel} endpoint.
+ * Set your desired password in the {@link ChangePasswordBeginModel::$url_reset}
+ * field, where you use the "reset password" link via email to get the user's new password for this endpoint.
+ *
+ * When the user goes to your page, get <tt>text_mail</tt> and <tt>text_code</tt> from the URL, then post this model to set a password for user.
+ *
+ * Use <tt>text_mail</tt> as the value for {@link ChangePasswordApplyModel::$text_login} and
+ * {@link ChangePasswordApplyModel::$text_mail},
+ * and <tt>text_code</tt> as the value for {@link ChangePasswordApplyModel::$text_code}.
+ */
+class ChangePasswordApplyModel extends WlModelAbstract
+{
+  /**
+   * The verification code, which can be obtained from the "reset password" email link. This is a required value.
+   *
+   * @post get
+   * @var string
+   */
+  public $text_code = '';
+
+  /**
+   * The user's login, which can be obtained from the "reset password" email link. This is a required value.
+   *
+   * @post get
+   * @var string
+   */
+  public $text_login = '';
+
+  /**
+   * The user's email address, which can be obtained from the "reset password" email link. This is a required value.
+   *
+   * @post get
+   * @var string
+   */
+  public $text_mail = '';
+
+  /**
+   * The user's new password. This is a required value.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_password = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Passport/ChangePassword/ChangePasswordBeginModel.php b/WellnessLiving/Core/Passport/ChangePassword/ChangePasswordBeginModel.php
index 193cb495..02d85513 100644
--- a/WellnessLiving/Core/Passport/ChangePassword/ChangePasswordBeginModel.php
+++ b/WellnessLiving/Core/Passport/ChangePassword/ChangePasswordBeginModel.php
@@ -1,52 +1,52 @@
-<?php
-
-namespace WellnessLiving\Core\Passport\ChangePassword;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Starts the password change procedure for a user.
- *
- * Post this to send the user the "reset password" email.
- */
-class ChangePasswordBeginModel extends WlModelAbstract
-{
-  /**
-   * The characters to pass captcha test.
-   *
-   * Specify this only if server requires captcha.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_captcha = '';
-
-  /**
-   * The error code. This will be an empty string if the email has been sent successfully.
-   *
-   * @post result
-   * @var string
-   */
-  public $text_error;
-
-  /**
-   * The user's email. This is a required value.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_mail = '';
-
-  /**
-   * The URL for the password reset page. This link will be used in a password reset email.
-   *
-   * Specify this only if you want to send the user to a custom password reset page.
-   * If empty, the default URL page will be used.
-   *
-   * @post post
-   * @var string
-   */
-  public $url_reset = '';
-}
-
+<?php
+
+namespace WellnessLiving\Core\Passport\ChangePassword;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Starts the password change procedure for a user.
+ *
+ * Post this to send the user the "reset password" email.
+ */
+class ChangePasswordBeginModel extends WlModelAbstract
+{
+  /**
+   * The characters to pass captcha test.
+   *
+   * Specify this only if server requires captcha.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_captcha = '';
+
+  /**
+   * The error code. This will be an empty string if the email has been sent successfully.
+   *
+   * @post result
+   * @var string
+   */
+  public $text_error;
+
+  /**
+   * The user's email. This is a required value.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_mail = '';
+
+  /**
+   * The URL for the password reset page. This link will be used in a password reset email.
+   *
+   * Specify this only if you want to send the user to a custom password reset page.
+   * If empty, the default URL page will be used.
+   *
+   * @post post
+   * @var string
+   */
+  public $url_reset = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Passport/Login/Register/RegisterConfirmModel.php b/WellnessLiving/Core/Passport/Login/Register/RegisterConfirmModel.php
index efadba7d..acf00f62 100644
--- a/WellnessLiving/Core/Passport/Login/Register/RegisterConfirmModel.php
+++ b/WellnessLiving/Core/Passport/Login/Register/RegisterConfirmModel.php
@@ -1,45 +1,45 @@
-<?php
-
-namespace WellnessLiving\Core\Passport\Login\Register;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Confirm the user's email and completes the registration process.
- */
-class RegisterConfirmModel extends WlModelAbstract
-{
-  /**
-   * The unique registration code.
-   *
-   * @post get
-   * @var string
-   */
-  public $text_code = '';
-
-  /**
-   * The user's login.
-   *
-   * @post get
-   * @var string
-   */
-  public $text_login = '';
-
-  /**
-   * The user's email.
-   *
-   * @post get
-   * @var string
-   */
-  public $text_mail = '';
-
-  /**
-   * The key of the new registered user.
-   *
-   * @post result
-   * @var string
-   */
-  public $uid;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Passport\Login\Register;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Confirm the user's email and completes the registration process.
+ */
+class RegisterConfirmModel extends WlModelAbstract
+{
+  /**
+   * The unique registration code.
+   *
+   * @post get
+   * @var string
+   */
+  public $text_code = '';
+
+  /**
+   * The user's login.
+   *
+   * @post get
+   * @var string
+   */
+  public $text_login = '';
+
+  /**
+   * The user's email.
+   *
+   * @post get
+   * @var string
+   */
+  public $text_mail = '';
+
+  /**
+   * The key of the new registered user.
+   *
+   * @post result
+   * @var string
+   */
+  public $uid;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Passport/User/Email/EmailExistModel.php b/WellnessLiving/Core/Passport/User/Email/EmailExistModel.php
index 6673063b..f1b4fc51 100644
--- a/WellnessLiving/Core/Passport/User/Email/EmailExistModel.php
+++ b/WellnessLiving/Core/Passport/User/Email/EmailExistModel.php
@@ -1,29 +1,29 @@
-<?php
-
-namespace WellnessLiving\Core\Passport\User\Email;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Checks if the email address exists in the system.
- */
-class EmailExistModel extends WlModelAbstract
-{
-  /**
-   * Determines whether the email address exists.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_exist = false;
-
-  /**
-   * The email address.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_email = '';
-}
-
+<?php
+
+namespace WellnessLiving\Core\Passport\User\Email;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Checks if the email address exists in the system.
+ */
+class EmailExistModel extends WlModelAbstract
+{
+  /**
+   * Determines whether the email address exists.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_exist = false;
+
+  /**
+   * The email address.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_email = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Quiz/ResponseStatusSid.php b/WellnessLiving/Core/Quiz/ResponseStatusSid.php
index 73a424db..73d12bf1 100644
--- a/WellnessLiving/Core/Quiz/ResponseStatusSid.php
+++ b/WellnessLiving/Core/Quiz/ResponseStatusSid.php
@@ -1,44 +1,44 @@
-<?php
-
-namespace WellnessLiving\Core\Quiz;
-
-/**
- * List of response statuses.
- *
- * Last used ID: 5
- */
-class ResponseStatusSid
-{
-  /**
-   * Response is active.
-   */
-  const ACTIVE = 1;
-
-  /**
-   * Response is active and has amendments.
-   */
-  const ACTIVE_AMEND = 5;
-
-  /**
-   * Response in draft mode.
-   */
-  const DRAFT = 2;
-
-  /**
-   * Response in inactive.
-   *
-   * It's temporary status which used when response is saved during registration/booking/purchase process,
-   * after this process is ended response status changed to {@link ResponseStatusSid::ACTIVE}.
-   */
-  const INACTIVE = 3;
-
-  /**
-   * Response in inactive and in draft mode.
-   *
-   * It's temporary status which used when response is saved in draft mode during registration/booking/purchase process,
-   * after this process is ended response status changed to {@link ResponseStatusSid::DRAFT}.
-   */
-  const INACTIVE_DRAFT = 4;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Quiz;
+
+/**
+ * List of response statuses.
+ *
+ * Last used ID: 5
+ */
+class ResponseStatusSid
+{
+  /**
+   * Response is active.
+   */
+  const ACTIVE = 1;
+
+  /**
+   * Response is active and has amendments.
+   */
+  const ACTIVE_AMEND = 5;
+
+  /**
+   * Response in draft mode.
+   */
+  const DRAFT = 2;
+
+  /**
+   * Response in inactive.
+   *
+   * It's temporary status which used when response is saved during registration/booking/purchase process,
+   * after this process is ended response status changed to {@link ResponseStatusSid::ACTIVE}.
+   */
+  const INACTIVE = 3;
+
+  /**
+   * Response in inactive and in draft mode.
+   *
+   * It's temporary status which used when response is saved in draft mode during registration/booking/purchase process,
+   * after this process is ended response status changed to {@link ResponseStatusSid::DRAFT}.
+   */
+  const INACTIVE_DRAFT = 4;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Request/Api/Application/Credential/CredentialModel.php b/WellnessLiving/Core/Request/Api/Application/Credential/CredentialModel.php
index eba3820c..b6b72fb0 100644
--- a/WellnessLiving/Core/Request/Api/Application/Credential/CredentialModel.php
+++ b/WellnessLiving/Core/Request/Api/Application/Credential/CredentialModel.php
@@ -1,42 +1,42 @@
-<?php
-
-namespace WellnessLiving\Core\Request\Api\Application\Credential;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Manages credentials for the application.
- */
-class CredentialModel extends WlModelAbstract
-{
-  /**
-   * The CID of the credential.
-   * Accepted values: <ul>
-   *   <li>
-   *     <tt>972</tt> - The Google credential.
-   *
-   *   </li>
-   *   <li>
-   *     <tt>973</tt> - The Facebook credential.
-   *
-   *   </li>
-   * </ul>
-   *
-   * @delete get
-   * @get get
-   * @put get
-   * @var int
-   */
-  public $cid_credential;
-
-  /**
-   * An array with the credential.
-   *
-   * @get result
-   * @put post
-   * @var array
-   */
-  public $json_credential;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Request\Api\Application\Credential;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Manages credentials for the application.
+ */
+class CredentialModel extends WlModelAbstract
+{
+  /**
+   * The CID of the credential.
+   * Accepted values: <ul>
+   *   <li>
+   *     <tt>972</tt> - The Google credential.
+   *
+   *   </li>
+   *   <li>
+   *     <tt>973</tt> - The Facebook credential.
+   *
+   *   </li>
+   * </ul>
+   *
+   * @delete get
+   * @get get
+   * @put get
+   * @var int
+   */
+  public $cid_credential;
+
+  /**
+   * An array with the credential.
+   *
+   * @get result
+   * @put post
+   * @var array
+   */
+  public $json_credential;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Request/Api/Application/OriginModel.php b/WellnessLiving/Core/Request/Api/Application/OriginModel.php
index 333c9321..71c94478 100644
--- a/WellnessLiving/Core/Request/Api/Application/OriginModel.php
+++ b/WellnessLiving/Core/Request/Api/Application/OriginModel.php
@@ -1,38 +1,38 @@
-<?php
-
-namespace WellnessLiving\Core\Request\Api\Application;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Gets, deletes, and adds origins for the application.
- *
- * Origins are links on the sites where the API can be used sign CORS authorizations from a client's browser.
- * If the site isn't in the list, you can only use the API for requests between two servers. Requests directly from
- * a client's browser are restricted.
- *
- * Origins should appear as a full link in the same manner they appear on the site.
- *
- * It's important to understand that the application can add allowed sites only for itself and can't add sites for another application.
- * This means that you need to call this endpoint using only the application that you're using on the sites.
- */
-class OriginModel extends WlModelAbstract
-{
-  /**
-   * A list of origins.
-   *
-   * The key is the URL on the site where API calls can be made.
-   *
-   * The value is a domain used to make API requests.
-   * This will be `null` in cases where the API requests are made directly to the WellnessLiving web server or if
-   * it isn't initialized yet.
-   *
-   * @delete post
-   * @get result
-   * @put post
-   * @var array|null
-   */
-  public $a_list;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Request\Api\Application;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Gets, deletes, and adds origins for the application.
+ *
+ * Origins are links on the sites where the API can be used sign CORS authorizations from a client's browser.
+ * If the site isn't in the list, you can only use the API for requests between two servers. Requests directly from
+ * a client's browser are restricted.
+ *
+ * Origins should appear as a full link in the same manner they appear on the site.
+ *
+ * It's important to understand that the application can add allowed sites only for itself and can't add sites for another application.
+ * This means that you need to call this endpoint using only the application that you're using on the sites.
+ */
+class OriginModel extends WlModelAbstract
+{
+  /**
+   * A list of origins.
+   *
+   * The key is the URL on the site where API calls can be made.
+   *
+   * The value is a domain used to make API requests.
+   * This will be `null` in cases where the API requests are made directly to the WellnessLiving web server or if
+   * it isn't initialized yet.
+   *
+   * @delete post
+   * @get result
+   * @put post
+   * @var array|null
+   */
+  public $a_list;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Request/Api/KeySecretModel.php b/WellnessLiving/Core/Request/Api/KeySecretModel.php
index 8e52b799..4eacbfac 100644
--- a/WellnessLiving/Core/Request/Api/KeySecretModel.php
+++ b/WellnessLiving/Core/Request/Api/KeySecretModel.php
@@ -1,58 +1,58 @@
-<?php
-
-namespace WellnessLiving\Core\Request\Api;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Gets a secret key for request signing.
- * This is required for a CORS request.
- *
- * A request to this point must be signed as an ordinary request from the SDK using transient and persistent cookies.
- * There must be no CORS (don't send from a browser).
- */
-class KeySecretModel extends WlModelAbstract
-{
-  /**
-   * The CSRF code from the client side.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_csrf;
-
-  /**
-   * The secret key for the request signing.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_key_secret;
-
-  /**
-   * The session key.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_key_session;
-
-  /**
-   * Alias of {@link KeySecretModel::$url_origin}.
-   *
-   * @get get
-   * @var string
-   * @deprecated Use {@link KeySecretModel::$url_origin} instead.
-   */
-  public $url_domain;
-
-  /**
-   * Origin for client requests.
-   *
-   * @get get
-   * @var string
-   */
-  public $url_origin;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Request\Api;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Gets a secret key for request signing.
+ * This is required for a CORS request.
+ *
+ * A request to this point must be signed as an ordinary request from the SDK using transient and persistent cookies.
+ * There must be no CORS (don't send from a browser).
+ */
+class KeySecretModel extends WlModelAbstract
+{
+  /**
+   * The CSRF code from the client side.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_csrf;
+
+  /**
+   * The secret key for the request signing.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_key_secret;
+
+  /**
+   * The session key.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_key_session;
+
+  /**
+   * Alias of {@link KeySecretModel::$url_origin}.
+   *
+   * @get get
+   * @var string
+   * @deprecated Use {@link KeySecretModel::$url_origin} instead.
+   */
+  public $url_domain;
+
+  /**
+   * Origin for client requests.
+   *
+   * @get get
+   * @var string
+   */
+  public $url_origin;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Request/Token/TokenPinModel.php b/WellnessLiving/Core/Request/Token/TokenPinModel.php
index 4d1849f3..62c73d60 100644
--- a/WellnessLiving/Core/Request/Token/TokenPinModel.php
+++ b/WellnessLiving/Core/Request/Token/TokenPinModel.php
@@ -1,39 +1,39 @@
-<?php
-
-namespace WellnessLiving\Core\Request\Token;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Creates a one-time PIN code.
- *
- * This code must be used for generating a security token.
- */
-class TokenPinModel extends WlModelAbstract
-{
-  /**
-   * The expiration date/time of the PIN code.
-   *
-   * @get result
-   * @var string
-   */
-  public $dtu_expire;
-
-  /**
-   * The PIN code.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_pin;
-
-  /**
-   * The ID to use to send a security code via a push notification.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_push = '';
-}
-
+<?php
+
+namespace WellnessLiving\Core\Request\Token;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Creates a one-time PIN code.
+ *
+ * This code must be used for generating a security token.
+ */
+class TokenPinModel extends WlModelAbstract
+{
+  /**
+   * The expiration date/time of the PIN code.
+   *
+   * @get result
+   * @var string
+   */
+  public $dtu_expire;
+
+  /**
+   * The PIN code.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_pin;
+
+  /**
+   * The ID to use to send a security code via a push notification.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_push = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Sid/SortOrderSid.php b/WellnessLiving/Core/Sid/SortOrderSid.php
index 9937ea12..8dbec01b 100644
--- a/WellnessLiving/Core/Sid/SortOrderSid.php
+++ b/WellnessLiving/Core/Sid/SortOrderSid.php
@@ -1,21 +1,21 @@
-<?php
-
-namespace WellnessLiving\Core\Sid;
-
-/**
- * List of possible sort order.
- */
-class SortOrderSid
-{
-  /**
-   * Ascending order.
-   */
-  const ASC = 2;
-
-  /**
-   * Descending order.
-   */
-  const DESC = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Sid;
+
+/**
+ * List of possible sort order.
+ */
+class SortOrderSid
+{
+  /**
+   * Ascending order.
+   */
+  const ASC = 2;
+
+  /**
+   * Descending order.
+   */
+  const DESC = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Sid/YesNoSid.php b/WellnessLiving/Core/Sid/YesNoSid.php
index 50ae5dcf..a61662bd 100644
--- a/WellnessLiving/Core/Sid/YesNoSid.php
+++ b/WellnessLiving/Core/Sid/YesNoSid.php
@@ -1,21 +1,21 @@
-<?php
-
-namespace WellnessLiving\Core\Sid;
-
-/**
- * A list of two answers for any question: Yes or No.
- */
-class YesNoSid
-{
-  /**
-   * The answer is "no".
-   */
-  const NO = 2;
-
-  /**
-   * The answer is "yes".
-   */
-  const YES = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Core\Sid;
+
+/**
+ * A list of two answers for any question: Yes or No.
+ */
+class YesNoSid
+{
+  /**
+   * The answer is "no".
+   */
+  const NO = 2;
+
+  /**
+   * The answer is "yes".
+   */
+  const YES = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/a/ADateWeekSid.php b/WellnessLiving/Core/a/ADateWeekSid.php
index 6e1835ff..cd3679ed 100644
--- a/WellnessLiving/Core/a/ADateWeekSid.php
+++ b/WellnessLiving/Core/a/ADateWeekSid.php
@@ -1,46 +1,46 @@
-<?php
-
-namespace WellnessLiving\Core\a;
-
-/**
- * A class for the days of the week.
- */
-abstract class ADateWeekSid
-{
-  /**
-   * Friday.
-   */
-  const FRIDAY = 5;
-
-  /**
-   * Monday.
-   */
-  const MONDAY = 1;
-
-  /**
-   * Saturday.
-   */
-  const SATURDAY = 6;
-
-  /**
-   * Sunday.
-   */
-  const SUNDAY = 7;
-
-  /**
-   * Thursday.
-   */
-  const THURSDAY = 4;
-
-  /**
-   * Tuesday.
-   */
-  const TUESDAY = 2;
-
-  /**
-   * Wednesday.
-   */
-  const WEDNESDAY = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Core\a;
+
+/**
+ * A class for the days of the week.
+ */
+abstract class ADateWeekSid
+{
+  /**
+   * Friday.
+   */
+  const FRIDAY = 5;
+
+  /**
+   * Monday.
+   */
+  const MONDAY = 1;
+
+  /**
+   * Saturday.
+   */
+  const SATURDAY = 6;
+
+  /**
+   * Sunday.
+   */
+  const SUNDAY = 7;
+
+  /**
+   * Thursday.
+   */
+  const THURSDAY = 4;
+
+  /**
+   * Tuesday.
+   */
+  const TUESDAY = 2;
+
+  /**
+   * Wednesday.
+   */
+  const WEDNESDAY = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/a/ADurationSid.php b/WellnessLiving/Core/a/ADurationSid.php
index 88268ab6..78c41f29 100644
--- a/WellnessLiving/Core/a/ADurationSid.php
+++ b/WellnessLiving/Core/a/ADurationSid.php
@@ -1,68 +1,68 @@
-<?php
-
-namespace WellnessLiving\Core\a;
-
-/**
- * A class for managing time intervals.
- * Last ID: 8.
- */
-abstract class ADurationSid
-{
-  /**
-   * Days.
-   *
-   * @title Day
-   */
-  const DAY = 4;
-
-  /**
-   * Hours.
-   *
-   * @title Hour
-   */
-  const HOUR = 3;
-
-  /**
-   * Minutes.
-   *
-   * @title Minute
-   */
-  const MINUTE = 2;
-
-  /**
-   * Months.
-   *
-   * @title Month
-   */
-  const MONTH = 5;
-
-  /**
-   * Seconds.
-   *
-   * @title Second
-   */
-  const SECOND = 1;
-
-  /**
-   * Weeks (7 days).
-   *
-   * @title Week
-   */
-  const WEEK = 7;
-
-  /**
-   * Foursome of weeks (28 days).
-   *
-   * @title 4 Weeks
-   */
-  const WEEK4 = 8;
-
-  /**
-   * Years.
-   *
-   * @title Year
-   */
-  const YEAR = 6;
-}
-
+<?php
+
+namespace WellnessLiving\Core\a;
+
+/**
+ * A class for managing time intervals.
+ * Last ID: 8.
+ */
+abstract class ADurationSid
+{
+  /**
+   * Days.
+   *
+   * @title Day
+   */
+  const DAY = 4;
+
+  /**
+   * Hours.
+   *
+   * @title Hour
+   */
+  const HOUR = 3;
+
+  /**
+   * Minutes.
+   *
+   * @title Minute
+   */
+  const MINUTE = 2;
+
+  /**
+   * Months.
+   *
+   * @title Month
+   */
+  const MONTH = 5;
+
+  /**
+   * Seconds.
+   *
+   * @title Second
+   */
+  const SECOND = 1;
+
+  /**
+   * Weeks (7 days).
+   *
+   * @title Week
+   */
+  const WEEK = 7;
+
+  /**
+   * Foursome of weeks (28 days).
+   *
+   * @title 4 Weeks
+   */
+  const WEEK4 = 8;
+
+  /**
+   * Years.
+   *
+   * @title Year
+   */
+  const YEAR = 6;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/a/AFolder.php b/WellnessLiving/Core/a/AFolder.php
index dca3d592..e430b4b0 100644
--- a/WellnessLiving/Core/a/AFolder.php
+++ b/WellnessLiving/Core/a/AFolder.php
@@ -1,94 +1,94 @@
-<?php
-
-namespace WellnessLiving\Core\a;
-
-/**
- * Functions used when working with folders.
- */
-class AFolder
-{
-  /**
-   * Delete files and folders in the specified directory.
-   *
-   * @param string $s_path The path to delete data for.
-   * @param bool $is_recursive Determines if this is a recursive deletion.
-   * @param bool $is_file If <tt>true</tt>, this delete files. Otherwise, this will be <tt>false</tt>.
-   * @param bool $is_dir If <tt>true</tt>, this deletes subdirectories. Otherwise, this will be <tt>false</tt>.
-   * @return bool If <tt>true</tt>, there aren't any errors. Otherwise, this will be <tt>false</tt> if an error occurred.
-   */
-  public static function clear($s_path,$is_recursive = true,$is_file = true,$is_dir = true)
-  {
-    if(empty($s_path))
-      return true;
-    if($s_path[strlen($s_path)-1]=='/')
-      $s_path = substr($s_path,0,strlen($s_path)-1);
-    $has_file = false;
-    if($r_dir = opendir($s_path))
-    {
-      while(($s_file = readdir($r_dir))!==false)
-      {
-        if($s_file=='.'||$s_file=='..')
-          continue;
-        if(is_dir($s_path.'/'.$s_file))
-        {
-          if($is_recursive)
-          {
-            if(static::clear($s_path.'/'.$s_file,true,$is_file))
-            {
-              if($is_dir)
-                rmdir($s_path.'/'.$s_file);
-              else
-                $has_file = true;
-            }
-            else
-              $has_file = true;
-          }
-          else
-            $has_file = true;
-          continue;
-        }
-        if($is_file)
-        {
-          if(!unlink($s_path.'/'.$s_file))
-            $has_file = true;
-        }
-        else
-          $has_file = true;
-      }
-      closedir($r_dir);
-    }
-    return !$has_file;
-  }
-
-  /**
-   * Copies content from one folder to another.
-   *
-   * @param string $s_source The source folder.
-   * @param string $s_destination The destination folder.
-   */
-  public static function copy($s_source,$s_destination)
-  {
-    $r_directory = opendir($s_source);
-    while(($s_file=readdir($r_directory))!==false)
-    {
-      if($s_file==='.'||$s_file==='..'||$s_file==='.idea'||$s_file==='.svn')
-        continue;
-
-      $s_destination_file = $s_destination.'/'.$s_file;
-
-      if(is_dir($s_source.'/'.$s_file))
-      {
-        if(!is_dir($s_destination_file))
-          mkdir($s_destination_file);
-        static::copy($s_source.'/'.$s_file,$s_destination_file);
-      }
-      else
-      {
-        copy($s_source.'/'.$s_file,$s_destination_file);
-      }
-    }
-    closedir($r_directory);
-  }
-}
-
+<?php
+
+namespace WellnessLiving\Core\a;
+
+/**
+ * Functions used when working with folders.
+ */
+class AFolder
+{
+  /**
+   * Delete files and folders in the specified directory.
+   *
+   * @param string $s_path The path to delete data for.
+   * @param bool $is_recursive Determines if this is a recursive deletion.
+   * @param bool $is_file If <tt>true</tt>, this delete files. Otherwise, this will be <tt>false</tt>.
+   * @param bool $is_dir If <tt>true</tt>, this deletes subdirectories. Otherwise, this will be <tt>false</tt>.
+   * @return bool If <tt>true</tt>, there aren't any errors. Otherwise, this will be <tt>false</tt> if an error occurred.
+   */
+  public static function clear($s_path,$is_recursive = true,$is_file = true,$is_dir = true)
+  {
+    if(empty($s_path))
+      return true;
+    if($s_path[strlen($s_path)-1]=='/')
+      $s_path = substr($s_path,0,strlen($s_path)-1);
+    $has_file = false;
+    if($r_dir = opendir($s_path))
+    {
+      while(($s_file = readdir($r_dir))!==false)
+      {
+        if($s_file=='.'||$s_file=='..')
+          continue;
+        if(is_dir($s_path.'/'.$s_file))
+        {
+          if($is_recursive)
+          {
+            if(static::clear($s_path.'/'.$s_file,true,$is_file))
+            {
+              if($is_dir)
+                rmdir($s_path.'/'.$s_file);
+              else
+                $has_file = true;
+            }
+            else
+              $has_file = true;
+          }
+          else
+            $has_file = true;
+          continue;
+        }
+        if($is_file)
+        {
+          if(!unlink($s_path.'/'.$s_file))
+            $has_file = true;
+        }
+        else
+          $has_file = true;
+      }
+      closedir($r_dir);
+    }
+    return !$has_file;
+  }
+
+  /**
+   * Copies content from one folder to another.
+   *
+   * @param string $s_source The source folder.
+   * @param string $s_destination The destination folder.
+   */
+  public static function copy($s_source,$s_destination)
+  {
+    $r_directory = opendir($s_source);
+    while(($s_file=readdir($r_directory))!==false)
+    {
+      if($s_file==='.'||$s_file==='..'||$s_file==='.idea'||$s_file==='.svn')
+        continue;
+
+      $s_destination_file = $s_destination.'/'.$s_file;
+
+      if(is_dir($s_source.'/'.$s_file))
+      {
+        if(!is_dir($s_destination_file))
+          mkdir($s_destination_file);
+        static::copy($s_source.'/'.$s_file,$s_destination_file);
+      }
+      else
+      {
+        copy($s_source.'/'.$s_file,$s_destination_file);
+      }
+    }
+    closedir($r_directory);
+  }
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/a/ASocialSid.php b/WellnessLiving/Core/a/ASocialSid.php
index d787318f..bd4391fa 100644
--- a/WellnessLiving/Core/a/ASocialSid.php
+++ b/WellnessLiving/Core/a/ASocialSid.php
@@ -1,29 +1,29 @@
-<?php
-
-namespace WellnessLiving\Core\a;
-
-/**
- * A list of supported social networks.
- *
- * Last used ID: 3.
- */
-abstract class ASocialSid
-{
-  /**
-   * @link https://www.facebook.com
-   */
-  const FACEBOOK = 1;
-
-  /**
-   * @deprecated Not supported.
-   * @link https://plus.google.com
-   */
-  const GOOGLE = 2;
-
-  /**
-   * @link https://twitter.com
-   */
-  const TWITTER = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Core\a;
+
+/**
+ * A list of supported social networks.
+ *
+ * Last used ID: 3.
+ */
+abstract class ASocialSid
+{
+  /**
+   * @link https://www.facebook.com
+   */
+  const FACEBOOK = 1;
+
+  /**
+   * @deprecated Not supported.
+   * @link https://plus.google.com
+   */
+  const GOOGLE = 2;
+
+  /**
+   * @link https://twitter.com
+   */
+  const TWITTER = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Custom/Core/Drive/ImageUpload/ImageUploadModel.php b/WellnessLiving/Custom/Core/Drive/ImageUpload/ImageUploadModel.php
index fd700445..4195f02c 100644
--- a/WellnessLiving/Custom/Core/Drive/ImageUpload/ImageUploadModel.php
+++ b/WellnessLiving/Custom/Core/Drive/ImageUpload/ImageUploadModel.php
@@ -1,45 +1,45 @@
-<?php
-
-namespace WellnessLiving\Custom\Core\Drive\ImageUpload;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Class aimed to customise class {@link \WellnessLiving\Core\Drive\ImageUpload\ImageUploadModel}.
- *
- * @property string $s_command The action that must be performed to the image.
- */
-abstract class ImageUploadModel extends WlModelAbstract
-{
-  /**
-   * The forms command used to delete an image.
-   */
-  public function commandDelete()
-  {
-    $this->s_command = 'delete';
-  }
-
-  /**
-   * The forms command used to save an uploaded image.
-   */
-  public function commandSave()
-  {
-    $this->s_command = 'save';
-  }
-
-  /**
-   * The forms command used to crop and save an uploaded image.
-   *
-   * @param int $i_offset_left Left offset to crop.
-   * @param int $i_offset_top Top offset to crop.
-   * @param int $i_width The width to crop.
-   * @param int $i_height The height to crop.
-   * @param int $i_rotation The rotation angle.
-   */
-  public function commandUpload($i_offset_left, $i_offset_top, $i_width, $i_height, $i_rotation = 0)
-  {
-    $this->s_command = 'upload '.$i_offset_left.' '.$i_offset_top.' '.$i_width.' '.$i_height.' '.$i_rotation;
-  }
-}
-
+<?php
+
+namespace WellnessLiving\Custom\Core\Drive\ImageUpload;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Class aimed to customise class {@link \WellnessLiving\Core\Drive\ImageUpload\ImageUploadModel}.
+ *
+ * @property string $s_command The action that must be performed to the image.
+ */
+abstract class ImageUploadModel extends WlModelAbstract
+{
+  /**
+   * The forms command used to delete an image.
+   */
+  public function commandDelete()
+  {
+    $this->s_command = 'delete';
+  }
+
+  /**
+   * The forms command used to save an uploaded image.
+   */
+  public function commandSave()
+  {
+    $this->s_command = 'save';
+  }
+
+  /**
+   * The forms command used to crop and save an uploaded image.
+   *
+   * @param int $i_offset_left Left offset to crop.
+   * @param int $i_offset_top Top offset to crop.
+   * @param int $i_width The width to crop.
+   * @param int $i_height The height to crop.
+   * @param int $i_rotation The rotation angle.
+   */
+  public function commandUpload($i_offset_left, $i_offset_top, $i_width, $i_height, $i_rotation = 0)
+  {
+    $this->s_command = 'upload '.$i_offset_left.' '.$i_offset_top.' '.$i_width.' '.$i_height.' '.$i_rotation;
+  }
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Custom/Core/Passport/Login/Enter/NotepadModel.php b/WellnessLiving/Custom/Core/Passport/Login/Enter/NotepadModel.php
index d46ab594..57083819 100644
--- a/WellnessLiving/Custom/Core/Passport/Login/Enter/NotepadModel.php
+++ b/WellnessLiving/Custom/Core/Passport/Login/Enter/NotepadModel.php
@@ -1,56 +1,56 @@
-<?php
-
-namespace WellnessLiving\Custom\Core\Passport\Login\Enter;
-
-use WellnessLiving\Sha3;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Class aimed to customise class {@link \WellnessLiving\Core\Passport\Login\Enter\NotepadModel}.
- *
- * @property string $s_notepad
- */
-class NotepadModel extends WlModelAbstract
-{
-  /**
-   * Evaluates the hash based on the notepad and the plaintext user password.
-   *
-   * @param string $s_password The plaintext user password.
-   * @return string The password hash. This depends on the hash, the salt, the type of the hash, and the plaintext user password.
-   */
-  public function hash($s_password)
-  {
-    // Unlike the server side, only HEX hash is supported in JS.
-    // For this reason, the API expects a HEX string and not a raw hash.
-    return Sha3::hash($this->s_notepad.static::passwordHash($s_password)/*Important! See comment above.*/,512,false);
-  }
-
-  /**
-   * Evaluates the initial hash based on the notepad and the plaintext user password (the value of the hash stored in the database).
-   *
-   * This method has a server-side counterpart.
-   *
-   * @param string $s_password The plaintext user password.
-   * @return string The hashed user password.
-   */
-  public static function passwordHash($s_password)
-  {
-    static $a_delimiter=[
-      'r',
-      '4S',
-      'zqX',
-      'zqiOK',
-      'TLVS75V',
-      'Ue5aLaIIG75',
-      'uODJYM2JsCX4G',
-      'kt58wZfHHGQkHW4QN',
-      'Lh9Fl5989crMU4E7P6E'
-    ];
-
-    // Unlike the server side, only HEX hash is supported in JS.
-    // For this reason, the API expects a HEX string and not a raw hash.
-    return Sha3::hash(implode($s_password,$a_delimiter).$s_password/*Important! See comment above.*/,512,false);
-  }
-}
-
+<?php
+
+namespace WellnessLiving\Custom\Core\Passport\Login\Enter;
+
+use WellnessLiving\Sha3;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Class aimed to customise class {@link \WellnessLiving\Core\Passport\Login\Enter\NotepadModel}.
+ *
+ * @property string $s_notepad
+ */
+class NotepadModel extends WlModelAbstract
+{
+  /**
+   * Evaluates the hash based on the notepad and the plaintext user password.
+   *
+   * @param string $s_password The plaintext user password.
+   * @return string The password hash. This depends on the hash, the salt, the type of the hash, and the plaintext user password.
+   */
+  public function hash($s_password)
+  {
+    // Unlike the server side, only HEX hash is supported in JS.
+    // For this reason, the API expects a HEX string and not a raw hash.
+    return Sha3::hash($this->s_notepad.static::passwordHash($s_password)/*Important! See comment above.*/,512,false);
+  }
+
+  /**
+   * Evaluates the initial hash based on the notepad and the plaintext user password (the value of the hash stored in the database).
+   *
+   * This method has a server-side counterpart.
+   *
+   * @param string $s_password The plaintext user password.
+   * @return string The hashed user password.
+   */
+  public static function passwordHash($s_password)
+  {
+    static $a_delimiter=[
+      'r',
+      '4S',
+      'zqX',
+      'zqiOK',
+      'TLVS75V',
+      'Ue5aLaIIG75',
+      'uODJYM2JsCX4G',
+      'kt58wZfHHGQkHW4QN',
+      'Lh9Fl5989crMU4E7P6E'
+    ];
+
+    // Unlike the server side, only HEX hash is supported in JS.
+    // For this reason, the API expects a HEX string and not a raw hash.
+    return Sha3::hash(implode($s_password,$a_delimiter).$s_password/*Important! See comment above.*/,512,false);
+  }
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Custom/Wl/Report/DataModel.php b/WellnessLiving/Custom/Wl/Report/DataModel.php
index 4bbf96e2..f0ec6d52 100644
--- a/WellnessLiving/Custom/Wl/Report/DataModel.php
+++ b/WellnessLiving/Custom/Wl/Report/DataModel.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Custom\Wl\Report;
-
-use WellnessLiving\Wl\Report\UrlEncode;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Class aimed to customise class {@link \WellnessLiving\Wl\Report\DataModel}.
- *
- * @property string $s_filter
- */
-class DataModel extends WlModelAbstract
-{
-  /**
-   * Sets report filters.
-   *
-   * Specific filters depend on specific reports.
-   *
-   * @param array $a_filter The report filters. The key is the filter variable name, and the value is its value.
-   */
-  public function filterSet($a_filter)
-  {
-    if(count($a_filter))
-      $this->s_filter= UrlEncode::encode($a_filter);
-    else
-      $this->s_filter='';
-  }
-}
-
+<?php
+
+namespace WellnessLiving\Custom\Wl\Report;
+
+use WellnessLiving\Wl\Report\UrlEncode;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Class aimed to customise class {@link \WellnessLiving\Wl\Report\DataModel}.
+ *
+ * @property string $s_filter
+ */
+class DataModel extends WlModelAbstract
+{
+  /**
+   * Sets report filters.
+   *
+   * Specific filters depend on specific reports.
+   *
+   * @param array $a_filter The report filters. The key is the filter variable name, and the value is its value.
+   */
+  public function filterSet($a_filter)
+  {
+    if(count($a_filter))
+      $this->s_filter= UrlEncode::encode($a_filter);
+    else
+      $this->s_filter='';
+  }
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Custom/Wl/Skin/Application/Resource/ApplicationResourceModel.php b/WellnessLiving/Custom/Wl/Skin/Application/Resource/ApplicationResourceModel.php
index 5e4c47b6..57b35f1b 100644
--- a/WellnessLiving/Custom/Wl/Skin/Application/Resource/ApplicationResourceModel.php
+++ b/WellnessLiving/Custom/Wl/Skin/Application/Resource/ApplicationResourceModel.php
@@ -1,315 +1,315 @@
-<?php
-
-namespace WellnessLiving\Custom\Wl\Skin\Application\Resource;
-
-use WellnessLiving\Core\a\AFolder;
-use WellnessLiving\WlAssertException;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Class aimed to customise class {@link \WellnessLiving\Wl\Skin\Application\Resource\ApplicationResourceModel}.
- *
- * @property array $a_application
- */
-class ApplicationResourceModel extends WlModelAbstract
-{
-  /**
-   * The application ID placeholder.
-   */
-  const ID = '[ID]';
-
-  /**
-   * Updates the `www/js/communication.js` file.
-   *
-   * @param string $k_business The key of a business for that sources are making.
-   * @param string $s_sources The path to the directory with the sources that must be processed.
-   * @throws WlAssertException in the case of an error.
-   */
-  private function _communication($k_business,$s_sources)
-  {
-    $this->_file($k_business,$s_sources,'www/js/communication.js',[
-      [
-        's_key' => 'text_domain',
-        's_placeholder' => static::ID
-      ]
-    ]);
-  }
-
-  /**
-   * Updates the content of the `config.xml` file.
-   *
-   * @param string $k_business The key of a business for that sources are making.
-   * @param string $s_sources The path to the directory with the sources that must be processed.
-   * @throws WlAssertException in the case of an error.
-   */
-  private function _config($k_business, $s_sources)
-  {
-    $this->_file($k_business,$s_sources,'config.xml',[
-      [
-        's_key' => 'i_version',
-        's_placeholder' => '[VERSION_CODE]'
-      ],
-      [
-        's_key' => 's_google_reverse',
-        's_placeholder' => '[GOOGLE_REVERSED_CLIENT_ID]'
-      ],
-      [
-        's_key' => 'text_domain',
-        's_placeholder' => static::ID
-      ],
-      [
-        's_key' => 'text_name',
-        's_placeholder' => '[NAME]'
-      ]
-    ]);
-  }
-
-  /**
-   * Updates a specified file.
-   *
-   * @param string $k_business The key of a business for that sources are making.
-   * @param string $s_sources The path to the directory with the sources that must be processed.
-   * @param string $s_file File to be updated.
-   * @param array[] $a_data The data to be updated. Every element has the following keys:
-   * <dl>
-   *   <dt>string <var>s_key</var></dt>
-   *   <dd>The key of the data in the {@link ApplicationResourceModel::$a_application} field.</dd>
-   *   <dt>string <var>s_placeholder</var></dt>
-   *   <dd>The placeholder in the source file to be replaced by data.</dd>
-   * </dl>
-   * @throws WlAssertException in the case of an error.
-   */
-  private function _file($k_business, $s_sources, $s_file, $a_data)
-  {
-    $a_replace = [];
-    foreach($a_data as $a_data_item)
-    {
-      if(empty($this->a_application[$k_business][$a_data_item['s_key']]))
-      {
-        throw new WlAssertException([
-          's_data' => $a_data_item['s_key'],
-          'text_message' => 'Data has not been returned by server.'
-        ]);
-      }
-      $a_replace[] = $this->a_application[$k_business][$a_data_item['s_key']];
-    }
-
-    $s_file = $s_sources.$s_file;
-    if(!file_exists($s_file))
-    {
-      throw new WlAssertException([
-        's_file' => $s_file,
-        'text_message' => 'File does not exist.'
-      ]);
-    }
-
-    $text_content = file_get_contents($s_file);
-
-    foreach($a_data as $a_data_item)
-    {
-      if(strpos($text_content,$a_data_item['s_placeholder'])===false)
-      {
-        throw new WlAssertException([
-          's_placeholder' => $a_data_item['s_placeholder'],
-          'text_content' => $text_content,
-          'text_message' => 'File does not contain placeholder.'
-        ]);
-      }
-    }
-
-    $text_content = str_replace(
-      array_column($a_data,'s_placeholder'),
-      $a_replace,
-      $text_content
-    );
-
-    file_put_contents($s_file,$text_content);
-  }
-
-  /**
-   * Updates the `www/js/google.plus.js` file.
-   *
-   * @param string $k_business Key of a business for that sources are making.
-   * @param string $s_sources The path to the directory with the sources that must be processed.
-   * @throws WlAssertException in the case of an error.
-   */
-  private function _google($k_business, $s_sources)
-  {
-    $this->_file($k_business,$s_sources,'www/js/google.plus.js',[
-      [
-        's_key' => 's_google_id',
-        's_placeholder' => '[GOOGLE_CLIENT_ID]'
-      ]
-    ]);
-  }
-
-  /**
-   * Updates the content of the `www/index.html` file.
-   *
-   * @param string $k_business Key of a business for that sources are making.
-   * @param string $s_sources The path to the directory with the sources that must be processed.
-   * @throws WlAssertException in the case of an error.
-   */
-  private function _index($k_business, $s_sources)
-  {
-    $this->_file($k_business,$s_sources,'www/index.html',[
-      [
-        's_key' => 'text_domain',
-        's_placeholder' => static::ID
-      ]
-    ]);
-  }
-
-  /**
-   * Sets application resources.
-   *
-   * @param string $k_business Key of a business for that sources are making.
-   * @param string $s_sources The path to the directory with the sources that must be processed.
-   * @throws WlAssertException in the case of an error.
-   */
-  private function _resource($k_business, $s_sources)
-  {
-    $s_resource = $s_sources.'res/';
-
-    if(!file_exists($s_resource))
-    {
-      throw new WlAssertException([
-        's_resource' => $s_resource,
-        'text_message' => 'Resource directory does not exist.'
-      ]);
-    }
-
-    if(empty($this->a_application[$k_business]['a_resource']))
-    {
-      throw new WlAssertException([
-        'text_message' => 'Resources information has not been returned by server.'
-      ]);
-    }
-
-    $a_resource_list = $this->a_application[$k_business]['a_resource'];
-    $url_sdk = $this->config()->url();
-
-    foreach($a_resource_list as $a_resource)
-    {
-      foreach($a_resource['a_group'] as $a_group)
-      {
-        if(isset($a_group['a_image']))
-        {
-          foreach($a_group['a_image'] as $a_image)
-          {
-            if(!$a_image['url_link'])
-              continue;
-
-            $s_prefix = substr($a_image['url_link'],0,4)==='http'?'':$url_sdk;
-            $s_image = file_get_contents($s_prefix.$a_image['url_link']);
-
-            foreach($a_image['a_file'] as $s_file)
-            {
-              $i_directory = strrpos($s_file,'/');
-              if($i_directory!==false)
-              {
-                $s_directory = substr($s_file,0,$i_directory+1);
-                if(!file_exists($s_resource.$s_directory))
-                  continue;
-              }
-
-              file_put_contents($s_resource.$s_file,$s_image);
-
-              if($s_file==='screen/ios/Default@3x~iphone~comany.png')
-                file_put_contents($s_sources.'www/icon.png',$s_image);
-            }
-          }
-        }
-
-        if(isset($a_group['a_file']))
-        {
-          foreach($a_group['a_file'] as $a_file)
-          {
-            if(!$a_file['url_link'])
-              continue;
-
-            $i_directory = strrpos($a_file['s_file'],'/');
-            if($i_directory!==false)
-            {
-              $s_directory = substr($a_file['s_file'],0,$i_directory+1);
-              if(!file_exists($s_sources.$s_directory))
-                continue;
-            }
-
-            $s_prefix = substr($a_file['url_link'],0,4)==='http'?'':$url_sdk;
-            $r_file = fopen($s_prefix.$a_file['url_link'],'rb');
-            if(!$r_file)
-              continue;
-
-            file_put_contents($s_sources.$a_file['s_file'],$r_file);
-            fclose($r_file);
-          }
-        }
-      }
-    }
-  }
-
-  /**
-   * Generates sources for the application.
-   *
-   * @param string $s_source The directory with raw sources.
-   * @param string $s_destination The directory with ready sources for certain application.
-   * @throws WlAssertException in the case of an error.
-   */
-  public function sources($s_source, $s_destination)
-  {
-    if(!is_dir($s_source))
-    {
-      throw new WlAssertException([
-        'text_message' => 'Source directory does not exist.'
-      ]);
-    }
-    if(!is_dir($s_destination))
-    {
-      throw new WlAssertException([
-        'text_message' => 'Destination directory does not exist.'
-      ]);
-    }
-
-    if(is_null($this->a_application))
-    {
-      throw new WlAssertException([
-        'text_message' => 'You must load model information before sources generation.'
-      ]);
-    }
-    if(!count($this->a_application))
-    {
-      throw new WlAssertException([
-        'text_message' => 'Application information has not been returned by server.'
-      ]);
-    }
-
-    if($s_source[strlen($s_source)-1]!=='/')
-      $s_source .= '/';
-    if($s_destination[strlen($s_destination)-1]!=='/')
-      $s_destination .= '/';
-
-    foreach($this->a_application as $k_business => $a_application)
-    {
-      if(empty($a_application['text_domain']))
-        continue;
-
-      $s_destination_application = $s_destination.$k_business.'-'.$a_application['text_domain'].'/';
-
-      echo $s_destination_application."\n";
-      if(!is_dir($s_destination_application))
-        mkdir($s_destination_application);
-
-      AFolder::clear($s_destination_application);
-      AFolder::copy($s_source,$s_destination_application);
-
-      $this->_resource($k_business,$s_destination_application);
-      $this->_config($k_business,$s_destination_application);
-      $this->_index($k_business,$s_destination_application);
-      $this->_communication($k_business,$s_destination_application);
-      $this->_google($k_business,$s_destination_application);
-    }
-  }
-}
-
+<?php
+
+namespace WellnessLiving\Custom\Wl\Skin\Application\Resource;
+
+use WellnessLiving\Core\a\AFolder;
+use WellnessLiving\WlAssertException;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Class aimed to customise class {@link \WellnessLiving\Wl\Skin\Application\Resource\ApplicationResourceModel}.
+ *
+ * @property array $a_application
+ */
+class ApplicationResourceModel extends WlModelAbstract
+{
+  /**
+   * The application ID placeholder.
+   */
+  const ID = '[ID]';
+
+  /**
+   * Updates the `www/js/communication.js` file.
+   *
+   * @param string $k_business The key of a business for that sources are making.
+   * @param string $s_sources The path to the directory with the sources that must be processed.
+   * @throws WlAssertException in the case of an error.
+   */
+  private function _communication($k_business,$s_sources)
+  {
+    $this->_file($k_business,$s_sources,'www/js/communication.js',[
+      [
+        's_key' => 'text_domain',
+        's_placeholder' => static::ID
+      ]
+    ]);
+  }
+
+  /**
+   * Updates the content of the `config.xml` file.
+   *
+   * @param string $k_business The key of a business for that sources are making.
+   * @param string $s_sources The path to the directory with the sources that must be processed.
+   * @throws WlAssertException in the case of an error.
+   */
+  private function _config($k_business, $s_sources)
+  {
+    $this->_file($k_business,$s_sources,'config.xml',[
+      [
+        's_key' => 'i_version',
+        's_placeholder' => '[VERSION_CODE]'
+      ],
+      [
+        's_key' => 's_google_reverse',
+        's_placeholder' => '[GOOGLE_REVERSED_CLIENT_ID]'
+      ],
+      [
+        's_key' => 'text_domain',
+        's_placeholder' => static::ID
+      ],
+      [
+        's_key' => 'text_name',
+        's_placeholder' => '[NAME]'
+      ]
+    ]);
+  }
+
+  /**
+   * Updates a specified file.
+   *
+   * @param string $k_business The key of a business for that sources are making.
+   * @param string $s_sources The path to the directory with the sources that must be processed.
+   * @param string $s_file File to be updated.
+   * @param array[] $a_data The data to be updated. Every element has the following keys:
+   * <dl>
+   *   <dt>string <var>s_key</var></dt>
+   *   <dd>The key of the data in the {@link ApplicationResourceModel::$a_application} field.</dd>
+   *   <dt>string <var>s_placeholder</var></dt>
+   *   <dd>The placeholder in the source file to be replaced by data.</dd>
+   * </dl>
+   * @throws WlAssertException in the case of an error.
+   */
+  private function _file($k_business, $s_sources, $s_file, $a_data)
+  {
+    $a_replace = [];
+    foreach($a_data as $a_data_item)
+    {
+      if(empty($this->a_application[$k_business][$a_data_item['s_key']]))
+      {
+        throw new WlAssertException([
+          's_data' => $a_data_item['s_key'],
+          'text_message' => 'Data has not been returned by server.'
+        ]);
+      }
+      $a_replace[] = $this->a_application[$k_business][$a_data_item['s_key']];
+    }
+
+    $s_file = $s_sources.$s_file;
+    if(!file_exists($s_file))
+    {
+      throw new WlAssertException([
+        's_file' => $s_file,
+        'text_message' => 'File does not exist.'
+      ]);
+    }
+
+    $text_content = file_get_contents($s_file);
+
+    foreach($a_data as $a_data_item)
+    {
+      if(strpos($text_content,$a_data_item['s_placeholder'])===false)
+      {
+        throw new WlAssertException([
+          's_placeholder' => $a_data_item['s_placeholder'],
+          'text_content' => $text_content,
+          'text_message' => 'File does not contain placeholder.'
+        ]);
+      }
+    }
+
+    $text_content = str_replace(
+      array_column($a_data,'s_placeholder'),
+      $a_replace,
+      $text_content
+    );
+
+    file_put_contents($s_file,$text_content);
+  }
+
+  /**
+   * Updates the `www/js/google.plus.js` file.
+   *
+   * @param string $k_business Key of a business for that sources are making.
+   * @param string $s_sources The path to the directory with the sources that must be processed.
+   * @throws WlAssertException in the case of an error.
+   */
+  private function _google($k_business, $s_sources)
+  {
+    $this->_file($k_business,$s_sources,'www/js/google.plus.js',[
+      [
+        's_key' => 's_google_id',
+        's_placeholder' => '[GOOGLE_CLIENT_ID]'
+      ]
+    ]);
+  }
+
+  /**
+   * Updates the content of the `www/index.html` file.
+   *
+   * @param string $k_business Key of a business for that sources are making.
+   * @param string $s_sources The path to the directory with the sources that must be processed.
+   * @throws WlAssertException in the case of an error.
+   */
+  private function _index($k_business, $s_sources)
+  {
+    $this->_file($k_business,$s_sources,'www/index.html',[
+      [
+        's_key' => 'text_domain',
+        's_placeholder' => static::ID
+      ]
+    ]);
+  }
+
+  /**
+   * Sets application resources.
+   *
+   * @param string $k_business Key of a business for that sources are making.
+   * @param string $s_sources The path to the directory with the sources that must be processed.
+   * @throws WlAssertException in the case of an error.
+   */
+  private function _resource($k_business, $s_sources)
+  {
+    $s_resource = $s_sources.'res/';
+
+    if(!file_exists($s_resource))
+    {
+      throw new WlAssertException([
+        's_resource' => $s_resource,
+        'text_message' => 'Resource directory does not exist.'
+      ]);
+    }
+
+    if(empty($this->a_application[$k_business]['a_resource']))
+    {
+      throw new WlAssertException([
+        'text_message' => 'Resources information has not been returned by server.'
+      ]);
+    }
+
+    $a_resource_list = $this->a_application[$k_business]['a_resource'];
+    $url_sdk = $this->config()->url();
+
+    foreach($a_resource_list as $a_resource)
+    {
+      foreach($a_resource['a_group'] as $a_group)
+      {
+        if(isset($a_group['a_image']))
+        {
+          foreach($a_group['a_image'] as $a_image)
+          {
+            if(!$a_image['url_link'])
+              continue;
+
+            $s_prefix = substr($a_image['url_link'],0,4)==='http'?'':$url_sdk;
+            $s_image = file_get_contents($s_prefix.$a_image['url_link']);
+
+            foreach($a_image['a_file'] as $s_file)
+            {
+              $i_directory = strrpos($s_file,'/');
+              if($i_directory!==false)
+              {
+                $s_directory = substr($s_file,0,$i_directory+1);
+                if(!file_exists($s_resource.$s_directory))
+                  continue;
+              }
+
+              file_put_contents($s_resource.$s_file,$s_image);
+
+              if($s_file==='screen/ios/Default@3x~iphone~comany.png')
+                file_put_contents($s_sources.'www/icon.png',$s_image);
+            }
+          }
+        }
+
+        if(isset($a_group['a_file']))
+        {
+          foreach($a_group['a_file'] as $a_file)
+          {
+            if(!$a_file['url_link'])
+              continue;
+
+            $i_directory = strrpos($a_file['s_file'],'/');
+            if($i_directory!==false)
+            {
+              $s_directory = substr($a_file['s_file'],0,$i_directory+1);
+              if(!file_exists($s_sources.$s_directory))
+                continue;
+            }
+
+            $s_prefix = substr($a_file['url_link'],0,4)==='http'?'':$url_sdk;
+            $r_file = fopen($s_prefix.$a_file['url_link'],'rb');
+            if(!$r_file)
+              continue;
+
+            file_put_contents($s_sources.$a_file['s_file'],$r_file);
+            fclose($r_file);
+          }
+        }
+      }
+    }
+  }
+
+  /**
+   * Generates sources for the application.
+   *
+   * @param string $s_source The directory with raw sources.
+   * @param string $s_destination The directory with ready sources for certain application.
+   * @throws WlAssertException in the case of an error.
+   */
+  public function sources($s_source, $s_destination)
+  {
+    if(!is_dir($s_source))
+    {
+      throw new WlAssertException([
+        'text_message' => 'Source directory does not exist.'
+      ]);
+    }
+    if(!is_dir($s_destination))
+    {
+      throw new WlAssertException([
+        'text_message' => 'Destination directory does not exist.'
+      ]);
+    }
+
+    if(is_null($this->a_application))
+    {
+      throw new WlAssertException([
+        'text_message' => 'You must load model information before sources generation.'
+      ]);
+    }
+    if(!count($this->a_application))
+    {
+      throw new WlAssertException([
+        'text_message' => 'Application information has not been returned by server.'
+      ]);
+    }
+
+    if($s_source[strlen($s_source)-1]!=='/')
+      $s_source .= '/';
+    if($s_destination[strlen($s_destination)-1]!=='/')
+      $s_destination .= '/';
+
+    foreach($this->a_application as $k_business => $a_application)
+    {
+      if(empty($a_application['text_domain']))
+        continue;
+
+      $s_destination_application = $s_destination.$k_business.'-'.$a_application['text_domain'].'/';
+
+      echo $s_destination_application."\n";
+      if(!is_dir($s_destination_application))
+        mkdir($s_destination_application);
+
+      AFolder::clear($s_destination_application);
+      AFolder::copy($s_source,$s_destination_application);
+
+      $this->_resource($k_business,$s_destination_application);
+      $this->_config($k_business,$s_destination_application);
+      $this->_index($k_business,$s_destination_application);
+      $this->_communication($k_business,$s_destination_application);
+      $this->_google($k_business,$s_destination_application);
+    }
+  }
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Custom/Wl/WlRegionSid.php b/WellnessLiving/Custom/Wl/WlRegionSid.php
index ef74de7f..4b43e865 100644
--- a/WellnessLiving/Custom/Wl/WlRegionSid.php
+++ b/WellnessLiving/Custom/Wl/WlRegionSid.php
@@ -1,32 +1,32 @@
-<?php
-
-namespace WellnessLiving\Custom\Wl;
-
-/**
- * List of available data center regions.
- *
- * The business independently chooses the data center region in which it will be registered.
- * The choice of the data center region does not depend on the actual location of the business.
- * The region determines the data center in which the Wellnessliving system operates.
- * The region should be chosen based on the access speed to the data center from business clients.
- * Business from any region can be registered in any data center, but only in one.
- *
- * Last ID: 2.
- */
-class WlRegionSid
-{
-  /**
-   * Returns a list of data center region identifiers.
-   *
-   * @return int[] List of data center region identifiers.
-   */
-  public static function all()
-  {
-    return [
-      static::US_EAST_1,
-      static::AP_SOUTHEAST_2
-    ];
-  }
-}
-
+<?php
+
+namespace WellnessLiving\Custom\Wl;
+
+/**
+ * List of available data center regions.
+ *
+ * The business independently chooses the data center region in which it will be registered.
+ * The choice of the data center region does not depend on the actual location of the business.
+ * The region determines the data center in which the Wellnessliving system operates.
+ * The region should be chosen based on the access speed to the data center from business clients.
+ * Business from any region can be registered in any data center, but only in one.
+ *
+ * Last ID: 2.
+ */
+class WlRegionSid
+{
+  /**
+   * Returns a list of data center region identifiers.
+   *
+   * @return int[] List of data center region identifiers.
+   */
+  public static function all()
+  {
+    return [
+      static::US_EAST_1,
+      static::AP_SOUTHEAST_2
+    ];
+  }
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Sha3.php b/WellnessLiving/Sha3.php
index 4c15eef7..59415b53 100644
--- a/WellnessLiving/Sha3.php
+++ b/WellnessLiving/Sha3.php
@@ -1,415 +1,415 @@
-<?php
-/**
- * The MIT License (MIT)
- *
- * Copyright (c) 2015 Bruno Bierbaumer
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * @link https://github.com/0xbb/php-sha3
-*/
-
-namespace WellnessLiving;
-
-final class Sha3
-{
-    const KECCAK_ROUNDS = 24;
-    private static $keccakf_rotc = [1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14, 27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44];
-    private static $keccakf_piln = [10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4, 15, 23, 19, 13, 12,2, 20, 14, 22, 9, 6, 1];
-
-    private static function keccakf64(&$st, $rounds)
-    {
-        $keccakf_rndc = [
-            [0x00000000, 0x00000001], [0x00000000, 0x00008082], [0x80000000, 0x0000808a], [0x80000000, 0x80008000],
-            [0x00000000, 0x0000808b], [0x00000000, 0x80000001], [0x80000000, 0x80008081], [0x80000000, 0x00008009],
-            [0x00000000, 0x0000008a], [0x00000000, 0x00000088], [0x00000000, 0x80008009], [0x00000000, 0x8000000a],
-            [0x00000000, 0x8000808b], [0x80000000, 0x0000008b], [0x80000000, 0x00008089], [0x80000000, 0x00008003],
-            [0x80000000, 0x00008002], [0x80000000, 0x00000080], [0x00000000, 0x0000800a], [0x80000000, 0x8000000a],
-            [0x80000000, 0x80008081], [0x80000000, 0x00008080], [0x00000000, 0x80000001], [0x80000000, 0x80008008]
-        ];
-
-        $bc = [];
-        for ($round = 0; $round < $rounds; $round++) {
-
-            // Theta
-            for ($i = 0; $i < 5; $i++) {
-                $bc[$i] = [
-                    $st[$i][0] ^ $st[$i + 5][0] ^ $st[$i + 10][0] ^ $st[$i + 15][0] ^ $st[$i + 20][0],
-                    $st[$i][1] ^ $st[$i + 5][1] ^ $st[$i + 10][1] ^ $st[$i + 15][1] ^ $st[$i + 20][1]
-                ];
-            }
-
-            for ($i = 0; $i < 5; $i++) {
-                $t = [
-                    $bc[($i + 4) % 5][0] ^ (($bc[($i + 1) % 5][0] << 1) | ($bc[($i + 1) % 5][1] >> 31)) & (0xFFFFFFFF),
-                    $bc[($i + 4) % 5][1] ^ (($bc[($i + 1) % 5][1] << 1) | ($bc[($i + 1) % 5][0] >> 31)) & (0xFFFFFFFF)
-                ];
-
-                for ($j = 0; $j < 25; $j += 5) {
-                    $st[$j + $i] = [
-                        $st[$j + $i][0] ^ $t[0],
-                        $st[$j + $i][1] ^ $t[1]
-                    ];
-                }
-            }
-
-            // Rho Pi
-            $t = $st[1];
-            for ($i = 0; $i < 24; $i++) {
-                $j = self::$keccakf_piln[$i];
-
-                $bc[0] = $st[$j];
-
-                $n = self::$keccakf_rotc[$i];
-                $hi = $t[0];
-                $lo = $t[1];
-                if ($n >= 32) {
-                    $n -= 32;
-                    $hi = $t[1];
-                    $lo = $t[0];
-                }
-
-                $st[$j] =[
-                    (($hi << $n) | ($lo >> (32 - $n))) & (0xFFFFFFFF),
-                    (($lo << $n) | ($hi >> (32 - $n))) & (0xFFFFFFFF)
-                ];
-
-                $t = $bc[0];
-            }
-
-            //  Chi
-            for ($j = 0; $j < 25; $j += 5) {
-                for ($i = 0; $i < 5; $i++) {
-                    $bc[$i] = $st[$j + $i];
-                }
-                for ($i = 0; $i < 5; $i++) {
-                    $st[$j + $i] = [
-                        $st[$j + $i][0] ^ ~$bc[($i + 1) % 5][0] & $bc[($i + 2) % 5][0],
-                        $st[$j + $i][1] ^ ~$bc[($i + 1) % 5][1] & $bc[($i + 2) % 5][1]
-                    ];
-                }
-            }
-
-            // Iota
-            $st[0] = [
-                $st[0][0] ^ $keccakf_rndc[$round][0],
-                $st[0][1] ^ $keccakf_rndc[$round][1]
-            ];
-        }
-    }
-
-    private static function keccak64($in_raw, $capacity, $outputlength, $suffix, $raw_output)
-    {
-        $capacity /= 8;
-
-        $inlen = self::ourStrlen($in_raw);
-
-        $rsiz = 200 - 2 * $capacity;
-        $rsizw = $rsiz / 8;
-
-        $st = [];
-        for ($i = 0; $i < 25; $i++) {
-            $st[] = [0, 0];
-        }
-
-        for ($in_t = 0; $inlen >= $rsiz; $inlen -= $rsiz, $in_t += $rsiz) {
-            for ($i = 0; $i < $rsizw; $i++) {
-                $t = unpack('V*', self::ourSubstr($in_raw, $i * 8 + $in_t, 8));
-
-                $st[$i] = [
-                    $st[$i][0] ^ $t[2],
-                    $st[$i][1] ^ $t[1]
-                ];
-            }
-
-            self::keccakf64($st, self::KECCAK_ROUNDS);
-        }
-
-        $temp = self::ourSubstr($in_raw, $in_t, $inlen);
-        $temp = str_pad($temp, $rsiz, "\x0", STR_PAD_RIGHT);
-
-        $temp[$inlen] = chr($suffix);
-        $temp[$rsiz - 1] = chr(ord($temp[$rsiz - 1]) | 0x80);
-
-        for ($i = 0; $i < $rsizw; $i++) {
-            $t = unpack('V*', self::ourSubstr($temp, $i * 8, 8));
-
-            $st[$i] = [
-                $st[$i][0] ^ $t[2],
-                $st[$i][1] ^ $t[1]
-            ];
-        }
-
-        self::keccakf64($st, self::KECCAK_ROUNDS);
-
-        $out = '';
-        for ($i = 0; $i < 25; $i++) {
-            $out .= $t = pack('V*', $st[$i][1], $st[$i][0]);
-        }
-        $r = self::ourSubstr($out, 0, $outputlength / 8);
-
-        return $raw_output ? $r : bin2hex($r);
-    }
-
-    private static function keccakf32(&$st, $rounds)
-    {
-        $keccakf_rndc = [
-            [0x0000, 0x0000, 0x0000, 0x0001], [0x0000, 0x0000, 0x0000, 0x8082], [0x8000, 0x0000, 0x0000, 0x0808a], [0x8000, 0x0000, 0x8000, 0x8000],
-            [0x0000, 0x0000, 0x0000, 0x808b], [0x0000, 0x0000, 0x8000, 0x0001], [0x8000, 0x0000, 0x8000, 0x08081], [0x8000, 0x0000, 0x0000, 0x8009],
-            [0x0000, 0x0000, 0x0000, 0x008a], [0x0000, 0x0000, 0x0000, 0x0088], [0x0000, 0x0000, 0x8000, 0x08009], [0x0000, 0x0000, 0x8000, 0x000a],
-            [0x0000, 0x0000, 0x8000, 0x808b], [0x8000, 0x0000, 0x0000, 0x008b], [0x8000, 0x0000, 0x0000, 0x08089], [0x8000, 0x0000, 0x0000, 0x8003],
-            [0x8000, 0x0000, 0x0000, 0x8002], [0x8000, 0x0000, 0x0000, 0x0080], [0x0000, 0x0000, 0x0000, 0x0800a], [0x8000, 0x0000, 0x8000, 0x000a],
-            [0x8000, 0x0000, 0x8000, 0x8081], [0x8000, 0x0000, 0x0000, 0x8080], [0x0000, 0x0000, 0x8000, 0x00001], [0x8000, 0x0000, 0x8000, 0x8008]
-        ];
-
-        $bc = [];
-        for ($round = 0; $round < $rounds; $round++) {
-
-            // Theta
-            for ($i = 0; $i < 5; $i++) {
-                $bc[$i] = [
-                    $st[$i][0] ^ $st[$i + 5][0] ^ $st[$i + 10][0] ^ $st[$i + 15][0] ^ $st[$i + 20][0],
-                    $st[$i][1] ^ $st[$i + 5][1] ^ $st[$i + 10][1] ^ $st[$i + 15][1] ^ $st[$i + 20][1],
-                    $st[$i][2] ^ $st[$i + 5][2] ^ $st[$i + 10][2] ^ $st[$i + 15][2] ^ $st[$i + 20][2],
-                    $st[$i][3] ^ $st[$i + 5][3] ^ $st[$i + 10][3] ^ $st[$i + 15][3] ^ $st[$i + 20][3]
-                ];
-            }
-
-            for ($i = 0; $i < 5; $i++) {
-                $t = [
-                    $bc[($i + 4) % 5][0] ^ ((($bc[($i + 1) % 5][0] << 1) | ($bc[($i + 1) % 5][1] >> 15)) & (0xFFFF)),
-                    $bc[($i + 4) % 5][1] ^ ((($bc[($i + 1) % 5][1] << 1) | ($bc[($i + 1) % 5][2] >> 15)) & (0xFFFF)),
-                    $bc[($i + 4) % 5][2] ^ ((($bc[($i + 1) % 5][2] << 1) | ($bc[($i + 1) % 5][3] >> 15)) & (0xFFFF)),
-                    $bc[($i + 4) % 5][3] ^ ((($bc[($i + 1) % 5][3] << 1) | ($bc[($i + 1) % 5][0] >> 15)) & (0xFFFF))
-                ];
-
-                for ($j = 0; $j < 25; $j += 5) {
-                    $st[$j + $i] = [
-                        $st[$j + $i][0] ^ $t[0],
-                        $st[$j + $i][1] ^ $t[1],
-                        $st[$j + $i][2] ^ $t[2],
-                        $st[$j + $i][3] ^ $t[3]
-                    ];
-                }
-            }
-
-            // Rho Pi
-            $t = $st[1];
-            for ($i = 0; $i < 24; $i++) {
-                $j = self::$keccakf_piln[$i];
-                $bc[0] = $st[$j];
-
-
-                $n = self::$keccakf_rotc[$i] >> 4;
-                $m = self::$keccakf_rotc[$i] % 16;
-
-                $st[$j] =  [
-                    ((($t[(0+$n) %4] << $m) | ($t[(1+$n) %4] >> (16-$m))) & (0xFFFF)),
-                    ((($t[(1+$n) %4] << $m) | ($t[(2+$n) %4] >> (16-$m))) & (0xFFFF)),
-                    ((($t[(2+$n) %4] << $m) | ($t[(3+$n) %4] >> (16-$m))) & (0xFFFF)),
-                    ((($t[(3+$n) %4] << $m) | ($t[(0+$n) %4] >> (16-$m))) & (0xFFFF))
-                ];
-
-                $t = $bc[0];
-            }
-
-            //  Chi
-            for ($j = 0; $j < 25; $j += 5) {
-                for ($i = 0; $i < 5; $i++) {
-                    $bc[$i] = $st[$j + $i];
-                }
-                for ($i = 0; $i < 5; $i++) {
-                    $st[$j + $i] = [
-                        $st[$j + $i][0] ^ ~$bc[($i + 1) % 5][0] & $bc[($i + 2) % 5][0],
-                        $st[$j + $i][1] ^ ~$bc[($i + 1) % 5][1] & $bc[($i + 2) % 5][1],
-                        $st[$j + $i][2] ^ ~$bc[($i + 1) % 5][2] & $bc[($i + 2) % 5][2],
-                        $st[$j + $i][3] ^ ~$bc[($i + 1) % 5][3] & $bc[($i + 2) % 5][3]
-                    ];
-                }
-            }
-
-            // Iota
-            $st[0] = [
-                $st[0][0] ^ $keccakf_rndc[$round][0],
-                $st[0][1] ^ $keccakf_rndc[$round][1],
-                $st[0][2] ^ $keccakf_rndc[$round][2],
-                $st[0][3] ^ $keccakf_rndc[$round][3]
-            ];
-        }
-    }
-
-    private static function keccak32($in_raw, $capacity, $outputlength, $suffix, $raw_output)
-    {
-        $capacity /= 8;
-
-        $inlen = self::ourStrlen($in_raw);
-
-        $rsiz = 200 - 2 * $capacity;
-        $rsizw = $rsiz / 8;
-
-        $st = [];
-        for ($i = 0; $i < 25; $i++) {
-            $st[] = [0, 0, 0, 0];
-        }
-
-        for ($in_t = 0; $inlen >= $rsiz; $inlen -= $rsiz, $in_t += $rsiz) {
-            for ($i = 0; $i < $rsizw; $i++) {
-                $t = unpack('v*', self::ourSubstr($in_raw, $i * 8 + $in_t, 8));
-
-                $st[$i] = [
-                    $st[$i][0] ^ $t[4],
-                    $st[$i][1] ^ $t[3],
-                    $st[$i][2] ^ $t[2],
-                    $st[$i][3] ^ $t[1]
-                ];
-            }
-
-            self::keccakf32($st, self::KECCAK_ROUNDS);
-        }
-
-        $temp = self::ourSubstr($in_raw, $in_t, $inlen);
-        $temp = str_pad($temp, $rsiz, "\x0", STR_PAD_RIGHT);
-
-        $temp[$inlen] = chr($suffix);
-        $temp[$rsiz - 1] = chr($temp[$rsiz - 1] | 0x80);
-
-        for ($i = 0; $i < $rsizw; $i++) {
-            $t = unpack('v*', self::ourSubstr($temp, $i * 8, 8));
-
-            $st[$i] = [
-                $st[$i][0] ^ $t[4],
-                $st[$i][1] ^ $t[3],
-                $st[$i][2] ^ $t[2],
-                $st[$i][3] ^ $t[1]
-            ];
-        }
-
-        self::keccakf32($st, self::KECCAK_ROUNDS);
-
-        $out = '';
-        for ($i = 0; $i < 25; $i++) {
-            $out .= $t = pack('v*', $st[$i][3],$st[$i][2], $st[$i][1], $st[$i][0]);
-        }
-        $r = self::ourSubstr($out, 0, $outputlength / 8);
-
-        return $raw_output ? $r: bin2hex($r);
-    }
-
-    // 0 = not run, 1 = 64 bit passed, 2 = 32 bit passed, 3 = failed
-    private static $test_state = 0;
-    private static function selfTest()
-    {
-        if(self::$test_state === 1 || self::$test_state === 2){
-            return;
-        }
-
-        if(self::$test_state === 3){
-            throw new \Exception('Sha3 previous self test failed!');
-        }
-
-        $in = '';
-        $md = '6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7';
-        if(self::keccak64($in, 224, 224, 0x06, false) === $md){
-            self::$test_state = 1;
-            return;
-        }
-
-        if(self::keccak32($in, 224, 224, 0x06, false) === $md){
-            self::$test_state = 2;
-            return;
-        }
-
-        self::$test_state = 3;
-        throw new \Exception('Sha3 self test failed!');
-    }
-
-    private static function keccak($in_raw, $capacity, $outputlength, $suffix, $raw_output)
-    {
-        self::selfTest();
-
-        if(self::$test_state === 1) {
-            return self::keccak64($in_raw, $capacity, $outputlength, $suffix, $raw_output);
-        }
-
-        return self::keccak32($in_raw, $capacity, $outputlength, $suffix, $raw_output);
-    }
-
-    public static function hash($in, $mdlen, $raw_output = false)
-    {
-        if( ! in_array($mdlen, [224, 256, 384, 512], true)) {
-            throw new \Exception('Unsupported Sha3 Hash output size.');
-        }
-
-        return self::keccak($in, $mdlen, $mdlen, 0x06, $raw_output);
-    }
-
-    public static function shake($in, $security_level, $outlen, $raw_output = false)
-    {
-        if( ! in_array($security_level, [128, 256], true)) {
-            throw new \Exception('Unsupported Sha3 Shake security level.');
-        }
-
-        return self::keccak($in, $security_level, $outlen, 0x1f, $raw_output);
-    }
-
-    /**
-     *  Multi-byte-safe string functions borrowed from https://github.com/sarciszewski/php-future
-     */
-
-    /**
-     * Multi-byte-safe string length calculation
-     *
-     * @param string $str
-     * @return int
-     */
-    private static function ourStrlen($str)
-    {
-        // Premature optimization: cache the function_exists() result
-        static $exists = null;
-        if ($exists === null) {
-            $exists = \function_exists('\\mb_strlen');
-        }
-        // If it exists, we need to make sure we're using 8bit mode
-        if ($exists) {
-            $length =  \mb_strlen($str, '8bit');
-            if ($length === false) {
-                throw new \Exception('mb_strlen() failed.');
-            }
-            return $length;
-        }
-
-        return \strlen($str);
-    }
-
-    /**
-     * Multi-byte-safe substring calculation
-     *
-     * @param string $str
-     * @param int $start
-     * @param int $length (optional)
-     * @return string
-     */
-    private static function ourSubstr($str, $start = 0, $length = null)
-    {
-        // Premature optimization: cache the function_exists() result
-        static $exists = null;
-        if ($exists === null) {
-            $exists = \function_exists('\\mb_substr');
-        }
-        // If it exists, we need to make sure we're using 8bit mode
-        if ($exists) {
-            return \mb_substr($str, $start, $length, '8bit');
-        } elseif ($length !== null) {
-            return \substr($str, $start, $length);
-        }
-        return \substr($str, $start);
-    }
+<?php
+/**
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2015 Bruno Bierbaumer
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * @link https://github.com/0xbb/php-sha3
+*/
+
+namespace WellnessLiving;
+
+final class Sha3
+{
+    const KECCAK_ROUNDS = 24;
+    private static $keccakf_rotc = [1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14, 27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44];
+    private static $keccakf_piln = [10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4, 15, 23, 19, 13, 12,2, 20, 14, 22, 9, 6, 1];
+
+    private static function keccakf64(&$st, $rounds)
+    {
+        $keccakf_rndc = [
+            [0x00000000, 0x00000001], [0x00000000, 0x00008082], [0x80000000, 0x0000808a], [0x80000000, 0x80008000],
+            [0x00000000, 0x0000808b], [0x00000000, 0x80000001], [0x80000000, 0x80008081], [0x80000000, 0x00008009],
+            [0x00000000, 0x0000008a], [0x00000000, 0x00000088], [0x00000000, 0x80008009], [0x00000000, 0x8000000a],
+            [0x00000000, 0x8000808b], [0x80000000, 0x0000008b], [0x80000000, 0x00008089], [0x80000000, 0x00008003],
+            [0x80000000, 0x00008002], [0x80000000, 0x00000080], [0x00000000, 0x0000800a], [0x80000000, 0x8000000a],
+            [0x80000000, 0x80008081], [0x80000000, 0x00008080], [0x00000000, 0x80000001], [0x80000000, 0x80008008]
+        ];
+
+        $bc = [];
+        for ($round = 0; $round < $rounds; $round++) {
+
+            // Theta
+            for ($i = 0; $i < 5; $i++) {
+                $bc[$i] = [
+                    $st[$i][0] ^ $st[$i + 5][0] ^ $st[$i + 10][0] ^ $st[$i + 15][0] ^ $st[$i + 20][0],
+                    $st[$i][1] ^ $st[$i + 5][1] ^ $st[$i + 10][1] ^ $st[$i + 15][1] ^ $st[$i + 20][1]
+                ];
+            }
+
+            for ($i = 0; $i < 5; $i++) {
+                $t = [
+                    $bc[($i + 4) % 5][0] ^ (($bc[($i + 1) % 5][0] << 1) | ($bc[($i + 1) % 5][1] >> 31)) & (0xFFFFFFFF),
+                    $bc[($i + 4) % 5][1] ^ (($bc[($i + 1) % 5][1] << 1) | ($bc[($i + 1) % 5][0] >> 31)) & (0xFFFFFFFF)
+                ];
+
+                for ($j = 0; $j < 25; $j += 5) {
+                    $st[$j + $i] = [
+                        $st[$j + $i][0] ^ $t[0],
+                        $st[$j + $i][1] ^ $t[1]
+                    ];
+                }
+            }
+
+            // Rho Pi
+            $t = $st[1];
+            for ($i = 0; $i < 24; $i++) {
+                $j = self::$keccakf_piln[$i];
+
+                $bc[0] = $st[$j];
+
+                $n = self::$keccakf_rotc[$i];
+                $hi = $t[0];
+                $lo = $t[1];
+                if ($n >= 32) {
+                    $n -= 32;
+                    $hi = $t[1];
+                    $lo = $t[0];
+                }
+
+                $st[$j] =[
+                    (($hi << $n) | ($lo >> (32 - $n))) & (0xFFFFFFFF),
+                    (($lo << $n) | ($hi >> (32 - $n))) & (0xFFFFFFFF)
+                ];
+
+                $t = $bc[0];
+            }
+
+            //  Chi
+            for ($j = 0; $j < 25; $j += 5) {
+                for ($i = 0; $i < 5; $i++) {
+                    $bc[$i] = $st[$j + $i];
+                }
+                for ($i = 0; $i < 5; $i++) {
+                    $st[$j + $i] = [
+                        $st[$j + $i][0] ^ ~$bc[($i + 1) % 5][0] & $bc[($i + 2) % 5][0],
+                        $st[$j + $i][1] ^ ~$bc[($i + 1) % 5][1] & $bc[($i + 2) % 5][1]
+                    ];
+                }
+            }
+
+            // Iota
+            $st[0] = [
+                $st[0][0] ^ $keccakf_rndc[$round][0],
+                $st[0][1] ^ $keccakf_rndc[$round][1]
+            ];
+        }
+    }
+
+    private static function keccak64($in_raw, $capacity, $outputlength, $suffix, $raw_output)
+    {
+        $capacity /= 8;
+
+        $inlen = self::ourStrlen($in_raw);
+
+        $rsiz = 200 - 2 * $capacity;
+        $rsizw = $rsiz / 8;
+
+        $st = [];
+        for ($i = 0; $i < 25; $i++) {
+            $st[] = [0, 0];
+        }
+
+        for ($in_t = 0; $inlen >= $rsiz; $inlen -= $rsiz, $in_t += $rsiz) {
+            for ($i = 0; $i < $rsizw; $i++) {
+                $t = unpack('V*', self::ourSubstr($in_raw, $i * 8 + $in_t, 8));
+
+                $st[$i] = [
+                    $st[$i][0] ^ $t[2],
+                    $st[$i][1] ^ $t[1]
+                ];
+            }
+
+            self::keccakf64($st, self::KECCAK_ROUNDS);
+        }
+
+        $temp = self::ourSubstr($in_raw, $in_t, $inlen);
+        $temp = str_pad($temp, $rsiz, "\x0", STR_PAD_RIGHT);
+
+        $temp[$inlen] = chr($suffix);
+        $temp[$rsiz - 1] = chr(ord($temp[$rsiz - 1]) | 0x80);
+
+        for ($i = 0; $i < $rsizw; $i++) {
+            $t = unpack('V*', self::ourSubstr($temp, $i * 8, 8));
+
+            $st[$i] = [
+                $st[$i][0] ^ $t[2],
+                $st[$i][1] ^ $t[1]
+            ];
+        }
+
+        self::keccakf64($st, self::KECCAK_ROUNDS);
+
+        $out = '';
+        for ($i = 0; $i < 25; $i++) {
+            $out .= $t = pack('V*', $st[$i][1], $st[$i][0]);
+        }
+        $r = self::ourSubstr($out, 0, $outputlength / 8);
+
+        return $raw_output ? $r : bin2hex($r);
+    }
+
+    private static function keccakf32(&$st, $rounds)
+    {
+        $keccakf_rndc = [
+            [0x0000, 0x0000, 0x0000, 0x0001], [0x0000, 0x0000, 0x0000, 0x8082], [0x8000, 0x0000, 0x0000, 0x0808a], [0x8000, 0x0000, 0x8000, 0x8000],
+            [0x0000, 0x0000, 0x0000, 0x808b], [0x0000, 0x0000, 0x8000, 0x0001], [0x8000, 0x0000, 0x8000, 0x08081], [0x8000, 0x0000, 0x0000, 0x8009],
+            [0x0000, 0x0000, 0x0000, 0x008a], [0x0000, 0x0000, 0x0000, 0x0088], [0x0000, 0x0000, 0x8000, 0x08009], [0x0000, 0x0000, 0x8000, 0x000a],
+            [0x0000, 0x0000, 0x8000, 0x808b], [0x8000, 0x0000, 0x0000, 0x008b], [0x8000, 0x0000, 0x0000, 0x08089], [0x8000, 0x0000, 0x0000, 0x8003],
+            [0x8000, 0x0000, 0x0000, 0x8002], [0x8000, 0x0000, 0x0000, 0x0080], [0x0000, 0x0000, 0x0000, 0x0800a], [0x8000, 0x0000, 0x8000, 0x000a],
+            [0x8000, 0x0000, 0x8000, 0x8081], [0x8000, 0x0000, 0x0000, 0x8080], [0x0000, 0x0000, 0x8000, 0x00001], [0x8000, 0x0000, 0x8000, 0x8008]
+        ];
+
+        $bc = [];
+        for ($round = 0; $round < $rounds; $round++) {
+
+            // Theta
+            for ($i = 0; $i < 5; $i++) {
+                $bc[$i] = [
+                    $st[$i][0] ^ $st[$i + 5][0] ^ $st[$i + 10][0] ^ $st[$i + 15][0] ^ $st[$i + 20][0],
+                    $st[$i][1] ^ $st[$i + 5][1] ^ $st[$i + 10][1] ^ $st[$i + 15][1] ^ $st[$i + 20][1],
+                    $st[$i][2] ^ $st[$i + 5][2] ^ $st[$i + 10][2] ^ $st[$i + 15][2] ^ $st[$i + 20][2],
+                    $st[$i][3] ^ $st[$i + 5][3] ^ $st[$i + 10][3] ^ $st[$i + 15][3] ^ $st[$i + 20][3]
+                ];
+            }
+
+            for ($i = 0; $i < 5; $i++) {
+                $t = [
+                    $bc[($i + 4) % 5][0] ^ ((($bc[($i + 1) % 5][0] << 1) | ($bc[($i + 1) % 5][1] >> 15)) & (0xFFFF)),
+                    $bc[($i + 4) % 5][1] ^ ((($bc[($i + 1) % 5][1] << 1) | ($bc[($i + 1) % 5][2] >> 15)) & (0xFFFF)),
+                    $bc[($i + 4) % 5][2] ^ ((($bc[($i + 1) % 5][2] << 1) | ($bc[($i + 1) % 5][3] >> 15)) & (0xFFFF)),
+                    $bc[($i + 4) % 5][3] ^ ((($bc[($i + 1) % 5][3] << 1) | ($bc[($i + 1) % 5][0] >> 15)) & (0xFFFF))
+                ];
+
+                for ($j = 0; $j < 25; $j += 5) {
+                    $st[$j + $i] = [
+                        $st[$j + $i][0] ^ $t[0],
+                        $st[$j + $i][1] ^ $t[1],
+                        $st[$j + $i][2] ^ $t[2],
+                        $st[$j + $i][3] ^ $t[3]
+                    ];
+                }
+            }
+
+            // Rho Pi
+            $t = $st[1];
+            for ($i = 0; $i < 24; $i++) {
+                $j = self::$keccakf_piln[$i];
+                $bc[0] = $st[$j];
+
+
+                $n = self::$keccakf_rotc[$i] >> 4;
+                $m = self::$keccakf_rotc[$i] % 16;
+
+                $st[$j] =  [
+                    ((($t[(0+$n) %4] << $m) | ($t[(1+$n) %4] >> (16-$m))) & (0xFFFF)),
+                    ((($t[(1+$n) %4] << $m) | ($t[(2+$n) %4] >> (16-$m))) & (0xFFFF)),
+                    ((($t[(2+$n) %4] << $m) | ($t[(3+$n) %4] >> (16-$m))) & (0xFFFF)),
+                    ((($t[(3+$n) %4] << $m) | ($t[(0+$n) %4] >> (16-$m))) & (0xFFFF))
+                ];
+
+                $t = $bc[0];
+            }
+
+            //  Chi
+            for ($j = 0; $j < 25; $j += 5) {
+                for ($i = 0; $i < 5; $i++) {
+                    $bc[$i] = $st[$j + $i];
+                }
+                for ($i = 0; $i < 5; $i++) {
+                    $st[$j + $i] = [
+                        $st[$j + $i][0] ^ ~$bc[($i + 1) % 5][0] & $bc[($i + 2) % 5][0],
+                        $st[$j + $i][1] ^ ~$bc[($i + 1) % 5][1] & $bc[($i + 2) % 5][1],
+                        $st[$j + $i][2] ^ ~$bc[($i + 1) % 5][2] & $bc[($i + 2) % 5][2],
+                        $st[$j + $i][3] ^ ~$bc[($i + 1) % 5][3] & $bc[($i + 2) % 5][3]
+                    ];
+                }
+            }
+
+            // Iota
+            $st[0] = [
+                $st[0][0] ^ $keccakf_rndc[$round][0],
+                $st[0][1] ^ $keccakf_rndc[$round][1],
+                $st[0][2] ^ $keccakf_rndc[$round][2],
+                $st[0][3] ^ $keccakf_rndc[$round][3]
+            ];
+        }
+    }
+
+    private static function keccak32($in_raw, $capacity, $outputlength, $suffix, $raw_output)
+    {
+        $capacity /= 8;
+
+        $inlen = self::ourStrlen($in_raw);
+
+        $rsiz = 200 - 2 * $capacity;
+        $rsizw = $rsiz / 8;
+
+        $st = [];
+        for ($i = 0; $i < 25; $i++) {
+            $st[] = [0, 0, 0, 0];
+        }
+
+        for ($in_t = 0; $inlen >= $rsiz; $inlen -= $rsiz, $in_t += $rsiz) {
+            for ($i = 0; $i < $rsizw; $i++) {
+                $t = unpack('v*', self::ourSubstr($in_raw, $i * 8 + $in_t, 8));
+
+                $st[$i] = [
+                    $st[$i][0] ^ $t[4],
+                    $st[$i][1] ^ $t[3],
+                    $st[$i][2] ^ $t[2],
+                    $st[$i][3] ^ $t[1]
+                ];
+            }
+
+            self::keccakf32($st, self::KECCAK_ROUNDS);
+        }
+
+        $temp = self::ourSubstr($in_raw, $in_t, $inlen);
+        $temp = str_pad($temp, $rsiz, "\x0", STR_PAD_RIGHT);
+
+        $temp[$inlen] = chr($suffix);
+        $temp[$rsiz - 1] = chr($temp[$rsiz - 1] | 0x80);
+
+        for ($i = 0; $i < $rsizw; $i++) {
+            $t = unpack('v*', self::ourSubstr($temp, $i * 8, 8));
+
+            $st[$i] = [
+                $st[$i][0] ^ $t[4],
+                $st[$i][1] ^ $t[3],
+                $st[$i][2] ^ $t[2],
+                $st[$i][3] ^ $t[1]
+            ];
+        }
+
+        self::keccakf32($st, self::KECCAK_ROUNDS);
+
+        $out = '';
+        for ($i = 0; $i < 25; $i++) {
+            $out .= $t = pack('v*', $st[$i][3],$st[$i][2], $st[$i][1], $st[$i][0]);
+        }
+        $r = self::ourSubstr($out, 0, $outputlength / 8);
+
+        return $raw_output ? $r: bin2hex($r);
+    }
+
+    // 0 = not run, 1 = 64 bit passed, 2 = 32 bit passed, 3 = failed
+    private static $test_state = 0;
+    private static function selfTest()
+    {
+        if(self::$test_state === 1 || self::$test_state === 2){
+            return;
+        }
+
+        if(self::$test_state === 3){
+            throw new \Exception('Sha3 previous self test failed!');
+        }
+
+        $in = '';
+        $md = '6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7';
+        if(self::keccak64($in, 224, 224, 0x06, false) === $md){
+            self::$test_state = 1;
+            return;
+        }
+
+        if(self::keccak32($in, 224, 224, 0x06, false) === $md){
+            self::$test_state = 2;
+            return;
+        }
+
+        self::$test_state = 3;
+        throw new \Exception('Sha3 self test failed!');
+    }
+
+    private static function keccak($in_raw, $capacity, $outputlength, $suffix, $raw_output)
+    {
+        self::selfTest();
+
+        if(self::$test_state === 1) {
+            return self::keccak64($in_raw, $capacity, $outputlength, $suffix, $raw_output);
+        }
+
+        return self::keccak32($in_raw, $capacity, $outputlength, $suffix, $raw_output);
+    }
+
+    public static function hash($in, $mdlen, $raw_output = false)
+    {
+        if( ! in_array($mdlen, [224, 256, 384, 512], true)) {
+            throw new \Exception('Unsupported Sha3 Hash output size.');
+        }
+
+        return self::keccak($in, $mdlen, $mdlen, 0x06, $raw_output);
+    }
+
+    public static function shake($in, $security_level, $outlen, $raw_output = false)
+    {
+        if( ! in_array($security_level, [128, 256], true)) {
+            throw new \Exception('Unsupported Sha3 Shake security level.');
+        }
+
+        return self::keccak($in, $security_level, $outlen, 0x1f, $raw_output);
+    }
+
+    /**
+     *  Multi-byte-safe string functions borrowed from https://github.com/sarciszewski/php-future
+     */
+
+    /**
+     * Multi-byte-safe string length calculation
+     *
+     * @param string $str
+     * @return int
+     */
+    private static function ourStrlen($str)
+    {
+        // Premature optimization: cache the function_exists() result
+        static $exists = null;
+        if ($exists === null) {
+            $exists = \function_exists('\\mb_strlen');
+        }
+        // If it exists, we need to make sure we're using 8bit mode
+        if ($exists) {
+            $length =  \mb_strlen($str, '8bit');
+            if ($length === false) {
+                throw new \Exception('mb_strlen() failed.');
+            }
+            return $length;
+        }
+
+        return \strlen($str);
+    }
+
+    /**
+     * Multi-byte-safe substring calculation
+     *
+     * @param string $str
+     * @param int $start
+     * @param int $length (optional)
+     * @return string
+     */
+    private static function ourSubstr($str, $start = 0, $length = null)
+    {
+        // Premature optimization: cache the function_exists() result
+        static $exists = null;
+        if ($exists === null) {
+            $exists = \function_exists('\\mb_substr');
+        }
+        // If it exists, we need to make sure we're using 8bit mode
+        if ($exists) {
+            return \mb_substr($str, $start, $length, '8bit');
+        } elseif ($length !== null) {
+            return \substr($str, $start, $length);
+        }
+        return \substr($str, $start);
+    }
 }
\ No newline at end of file
diff --git a/WellnessLiving/Social/Apple/Login/AppleLoginModel.php b/WellnessLiving/Social/Apple/Login/AppleLoginModel.php
index ab907e4d..bceb86c3 100644
--- a/WellnessLiving/Social/Apple/Login/AppleLoginModel.php
+++ b/WellnessLiving/Social/Apple/Login/AppleLoginModel.php
@@ -1,29 +1,29 @@
-<?php
-
-namespace WellnessLiving\Social\Apple\Login;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Authorizes a user with Apple.
- */
-class AppleLoginModel extends WlModelAbstract
-{
-  /**
-   * The application ID.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_application = '';
-
-  /**
-   * The authorization code.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_authorization = '';
-}
-
+<?php
+
+namespace WellnessLiving\Social\Apple\Login;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Authorizes a user with Apple.
+ */
+class AppleLoginModel extends WlModelAbstract
+{
+  /**
+   * The application ID.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_application = '';
+
+  /**
+   * The authorization code.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_authorization = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Social/Facebook/Login/LoginModel.php b/WellnessLiving/Social/Facebook/Login/LoginModel.php
index dd2ba430..8ef9c2c7 100644
--- a/WellnessLiving/Social/Facebook/Login/LoginModel.php
+++ b/WellnessLiving/Social/Facebook/Login/LoginModel.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Social\Facebook\Login;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Authorizes Facebook users.
- */
-class LoginModel extends WlModelAbstract
-{
-  /**
-   * The application ID.
-   *
-   * This will be `null` if the application is being used to make the request.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $s_application = null;
-
-  /**
-   * The Facebook token.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_token = '';
-}
-
+<?php
+
+namespace WellnessLiving\Social\Facebook\Login;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Authorizes Facebook users.
+ */
+class LoginModel extends WlModelAbstract
+{
+  /**
+   * The application ID.
+   *
+   * This will be `null` if the application is being used to make the request.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_application = null;
+
+  /**
+   * The Facebook token.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_token = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Social/Google/Plus/LoginModel.php b/WellnessLiving/Social/Google/Plus/LoginModel.php
index c866a762..0bdb8362 100644
--- a/WellnessLiving/Social/Google/Plus/LoginModel.php
+++ b/WellnessLiving/Social/Google/Plus/LoginModel.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Social\Google\Plus;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Authorizes a user with Google.
- */
-class LoginModel extends WlModelAbstract
-{
-  /**
-   * The application ID.
-   *
-   * This will be `null` for application use, which makes the request. Use the application credential from
-   *
-   * @post post
-   * @var string|null
-   */
-  public $s_application = null;
-
-  /**
-   * The Google server authorization code.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_code = '';
-}
-
+<?php
+
+namespace WellnessLiving\Social\Google\Plus;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Authorizes a user with Google.
+ */
+class LoginModel extends WlModelAbstract
+{
+  /**
+   * The application ID.
+   *
+   * This will be `null` for application use, which makes the request. Use the application credential from
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_application = null;
+
+  /**
+   * The Google server authorization code.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_code = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Social/Microsoft/LoginModel.php b/WellnessLiving/Social/Microsoft/LoginModel.php
index 34fa6405..c862e8d1 100644
--- a/WellnessLiving/Social/Microsoft/LoginModel.php
+++ b/WellnessLiving/Social/Microsoft/LoginModel.php
@@ -1,79 +1,79 @@
-<?php
-
-namespace WellnessLiving\Social\Microsoft;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Performs preliminary authorization actions with Microsoft.
- */
-class LoginModel extends WlModelAbstract
-{
-  /**
-   * If `true`, the user has a bound Microsoft account. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_exists = false;
-
-  /**
-   * If authorization is performed in a third-party application, set this flag in case of authorization errors.
-   *
-   * @post get
-   * @var bool
-   */
-  public $is_external = false;
-
-  /**
-   * The authorization code that the app requested.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_code = '';
-
-  /**
-   * If a state parameter is included in the request, the same value should appear in the response.
-   * The app should verify that the state values in the request and response are identical.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_state = '';
-
-  /**
-   * The client for whom the Microsoft account will be unlinked.
-   *
-   * @delete get
-   * @get get
-   * @var string
-   */
-  public $uid = '';
-
-  /**
-   * The Microsoft OAuth 2.0 authorization link.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_login = '';
-
-  /**
-   * The Redirect URI for external applications.
-   * The link to the page on which Microsoft will return the result after authorization.
-   *
-   * * All possible links must be registered in the Microsoft application used for authorization.
-   * * WARNING: Do not use this link for a direct redirect. This will present a vulnerability.
-   *
-   * * A {@link LoginModel::$url_login} link will be generated along with this redirect URI.
-   * * When checking the received {@link LoginModel::$s_code} from Microsoft.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $url_redirect = '';
-}
-
+<?php
+
+namespace WellnessLiving\Social\Microsoft;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Performs preliminary authorization actions with Microsoft.
+ */
+class LoginModel extends WlModelAbstract
+{
+  /**
+   * If `true`, the user has a bound Microsoft account. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_exists = false;
+
+  /**
+   * If authorization is performed in a third-party application, set this flag in case of authorization errors.
+   *
+   * @post get
+   * @var bool
+   */
+  public $is_external = false;
+
+  /**
+   * The authorization code that the app requested.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_code = '';
+
+  /**
+   * If a state parameter is included in the request, the same value should appear in the response.
+   * The app should verify that the state values in the request and response are identical.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_state = '';
+
+  /**
+   * The client for whom the Microsoft account will be unlinked.
+   *
+   * @delete get
+   * @get get
+   * @var string
+   */
+  public $uid = '';
+
+  /**
+   * The Microsoft OAuth 2.0 authorization link.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_login = '';
+
+  /**
+   * The Redirect URI for external applications.
+   * The link to the page on which Microsoft will return the result after authorization.
+   *
+   * * All possible links must be registered in the Microsoft application used for authorization.
+   * * WARNING: Do not use this link for a direct redirect. This will present a vulnerability.
+   *
+   * * A {@link LoginModel::$url_login} link will be generated along with this redirect URI.
+   * * When checking the received {@link LoginModel::$s_code} from Microsoft.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $url_redirect = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Task/Branch/BranchBuildModel.php b/WellnessLiving/Studio/Task/Branch/BranchBuildModel.php
index b54737e5..bf4d16e6 100644
--- a/WellnessLiving/Studio/Task/Branch/BranchBuildModel.php
+++ b/WellnessLiving/Studio/Task/Branch/BranchBuildModel.php
@@ -1,59 +1,59 @@
-<?php
-
-namespace WellnessLiving\Studio\Task\Branch;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Changes branch information during build.
- *
- * This API is designed to use only from builds (`BranchCreate`, `BranchDelete`) and is not expected that this API is
- *   called from other places.
- */
-class BranchBuildModel extends WlModelAbstract
-{
-  /**
-   * Information about paths into which catalogs are cloned.
-   *
-   * Keys are aliases of the original repository catalogs.
-   * Values are paths into which original catalogs are cloned.
-   *
-   * Each element has the following structure:<dl>
-   * <dt>int <var>id_repository_server_type</var></dt>
-   * <dd>Repository service type ID.</dd>
-   * <dt>string <var>s_destination</var></dt>
-   * <dd>Path into which original catalog is cloned/copied.</dd>
-   * <dt>string <var>s_repository</var></dt>
-   * <dd>Repository name.</dd>
-   * <dt>string <var>s_source</var></dt>
-   * <dd>Path of the original catalog.</dd>
-   * </dl>
-   *
-   * Set this property when a new branch is created. In other cases, an exception will be thrown.
-   *
-   * @post get
-   * @var array
-   */
-  public $a_path = [];
-
-  /**
-   * Build key that creates a branch for the specified task.
-   *
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $k_build = '';
-
-  /**
-   * Task link of the branch.
-   *
-   * @delete get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $s_task_link = '';
-}
-
+<?php
+
+namespace WellnessLiving\Studio\Task\Branch;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Changes branch information during build.
+ *
+ * This API is designed to use only from builds (`BranchCreate`, `BranchDelete`) and is not expected that this API is
+ *   called from other places.
+ */
+class BranchBuildModel extends WlModelAbstract
+{
+  /**
+   * Information about paths into which catalogs are cloned.
+   *
+   * Keys are aliases of the original repository catalogs.
+   * Values are paths into which original catalogs are cloned.
+   *
+   * Each element has the following structure:<dl>
+   * <dt>int <var>id_repository_server_type</var></dt>
+   * <dd>Repository service type ID.</dd>
+   * <dt>string <var>s_destination</var></dt>
+   * <dd>Path into which original catalog is cloned/copied.</dd>
+   * <dt>string <var>s_repository</var></dt>
+   * <dd>Repository name.</dd>
+   * <dt>string <var>s_source</var></dt>
+   * <dd>Path of the original catalog.</dd>
+   * </dl>
+   *
+   * Set this property when a new branch is created. In other cases, an exception will be thrown.
+   *
+   * @post get
+   * @var array
+   */
+  public $a_path = [];
+
+  /**
+   * Build key that creates a branch for the specified task.
+   *
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $k_build = '';
+
+  /**
+   * Task link of the branch.
+   *
+   * @delete get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $s_task_link = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php b/WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php
index bf9f5b7b..2dcb47d3 100644
--- a/WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php
+++ b/WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php
@@ -1,26 +1,26 @@
-<?php
-
-namespace WellnessLiving\Studio\Task\Branch;
-
-/**
- *  List of the available modes for <tt>BranchDelete</tt> build.
- */
-class BranchDeleteModeSid
-{
-  /**
-   * Deleting branch without merging changes.
-   */
-  const DELETE_NO_MERGE = 3;
-
-  /**
-   * Changes are merged. Branch is not deleted.
-   */
-  const MERGE_ONLY = 2;
-
-  /**
-   * Deleting branch with merging changes.
-   */
-  const STANDARD = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Studio\Task\Branch;
+
+/**
+ *  List of the available modes for <tt>BranchDelete</tt> build.
+ */
+class BranchDeleteModeSid
+{
+  /**
+   * Deleting branch without merging changes.
+   */
+  const DELETE_NO_MERGE = 3;
+
+  /**
+   * Changes are merged. Branch is not deleted.
+   */
+  const MERGE_ONLY = 2;
+
+  /**
+   * Deleting branch with merging changes.
+   */
+  const STANDARD = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php b/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
index 0caace57..32f40613 100644
--- a/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
@@ -1,239 +1,239 @@
-<?php
-
-namespace WellnessLiving\Wl\Appointment\Book\Asset;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Resource\Image\ImageIconSid;
-use WellnessLiving\Wl\Resource\Image\ImageShapeSid;
-use WellnessLiving\Wl\Service\ServicePriceSid;
-use WellnessLiving\Wl\Service\ServiceRequireSid;
-
-/**
- * Retrieves information about assets in the current asset category.
- */
-class AssetListModel extends WlModelAbstract
-{
-  /**
-   * A list of information about assets:
-   *
-   * <dl>
-   *   <dt>array <var>a_age_restrictions</var></dt>
-   *   <dd>
-   *     Information about age restrictions for this event.
-   *
-   *     This will be an empty array if there aren't any age restrictions.
-   *
-   *     <dl>
-   *       <dt>int|null <var>i_age_from</var></dt>
-   *       <dd>The minimum age permitted for the event. This will be `null` if a minimum age isn't set or available.</dd>
-   *       <dt>int|null <var>i_age_to</var></dt>
-   *       <dd>The maximum age permitted for the event. This will be `null` if a maximum age isn't set or available.</dd>
-   *       <dt>bool <var>is_age_public</var></dt>
-   *       <dd>This will be `true` if age restrictions are public and available. Otherwise, this will be `false` if they're hidden.
-   *         When restrictions are hidden and current user isn't a staff member, the age range will be empty.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>array <var>a_class_tab</var></dt>
-   *   <dd>The key of service.</dd>
-   *   <dt>
-   *     array[] <var>a_direct_link</var>
-   *   </dt>
-   *   <dd>
-   *     A list of links to create a booking from a direct link (direct booking URL).
-   *     The system needs to know what tab is associated with the booking. Therefore, there needs to be one link
-   *     per tab.
-   *     Each element has two values:
-   *     <dl>
-   *       <dt>string <var>k_class_tab</var></dt>
-   *       <dd>The key of the book now tab.</dd>
-   *       <dt>string <var>url_tab</var></dt>
-   *       <dd>The direct booking URL. This will open the booking wizard under the related booking tab.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>array[] <var>a_image</var></dt>
-   *   <dd>Information about the asset logo:
-   *     <dl>
-   *       <dt>int <var>i_angle</var></dt>
-   *       <dd>The angle of the shape rotation. This is set only if the image is one of the default shapes.</dd>
-   *       <dt>bool <var>is_empty</var></dt>
-   *       <dd>Determines if the asset logo is empty.</dd>
-   *       <dt>string <var>sid_image_icon</var></dt>
-   *       <dd>The icon name. String representation of one of the {@link ImageIconSid} constants. This is only set if the image kind equals to `image`.</dd>
-   *       <dt>string <var>sid_image_shape</var></dt>
-   *       <dd>The shape name. String representation of one of the {@link ImageShapeSid} constants. This is set only if the image kind equals to `shape`.</dd>
-   *       <dt>string <var>url</var></dt>
-   *       <dd>The asset logo URL.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>array[] <var>a_period</var></dt>
-   *   <dd>A list of asset periods with the following information:
-   *     <dl>
-   *       <dt>string <var>html_duration</var></dt>
-   *       <dd>The HTML code used to display the asset duration.</dd>
-   *       <dt>string <var>html_price</var></dt>
-   *       <dd>The HTML code used to display the formatted price.</dd>
-   *       <dt>int <var>i_duration</var></dt>
-   *       <dd>The asset duration in minutes.</dd>
-   *       <dt>int <var>id_price</var></dt>
-   *       <dd>The asset period price type. One of {@link ServicePriceSid} constants.</dd>
-   *       <dt>sting <var>m_price</var></dt>
-   *       <dd>The asset period price.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>array <var>a_search_tag</var></dt>
-   *   <dd>QUICK Search tag keys.</dd>
-   *   <dt>bool <var>hide_application</var></dt>
-   *   <dd>
-   *     Determines whether the asset will be hidden in the White Label mobile apps.
-   *     If `true`, the asset won't be displayed. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>string <var>html_age_restriction</var></dt>
-   *   <dd>The resource age restriction</dd>
-   *   <dt>string <var>html_title</var></dt>
-   *   <dd>The resource name.</dd>
-   *   <dt>int <var>id_service_require</var></dt>
-   *   <dd>The purchase rule. One of the {@link ServiceRequireSid} constants.</dd>
-   *   <dt>bool <var>is_age_restricted</var></dt>
-   *   <dd>Determines whether this service can't be booked due to age restrictions.</dd>
-   *   <dt>string <var>k_class_tab</var></dt>
-   *   <dd>Quick book tab key.</dd>
-   *   <dt>string <var>k_resource</var></dt>
-   *   <dd>The resource key.</dd>
-   *   <dt>string <var>k_resource_category</var></dt>
-   *   <dd>The resource category key.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_asset;
-
-  /**
-   * The selected date and time of the asset booking. It is used in cases when the business booking policy allows
-   * clients to select a date and time, and then the available asset.
-   *
-   * @get get
-   * @var string
-   */
-  public $dtl_date = false;
-
-  /**
-   * Image height in pixels. Please specify this value if you need image to be returned in specific size.
-   * In case this value is not specified returned image will have default size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_height = 0;
-
-  /**
-   * Image width in pixels. Please specify this value if you need image to be returned in specific size.
-   * In case this value is not specified returned image will have default size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_width = 0;
-
-  /**
-   * Mode type, one of {@link ModeSid} constants.
-   *
-   * @get get
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * This is `true` if asset categories are loaded for back-end mode. Otherwise, this will be `false` for front-end mode.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_backend = false;
-
-  /**
-   * `true` - search in all tabs.
-   * `false` - search only for the selected book tab.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_tab_all = false;
-
-  /**
-   * Key of the appointment, if we reschedule existing appointment.
-   * It should be sent to ignore it when we get availability hours for the asset.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_appointment = '0';
-
-  /**
-   * Business key.
-   *
-   * If not set, location's business will be used.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The class tab key used to filter assets.
-   *
-   * This will be `null` if not set yet or if elements with no specified class tab are selected.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_class_tab = '0';
-
-  /**
-   * The location key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * The asset category key to show information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_resource_category = '0';
-
-  /**
-   * The asset layout key.
-   * May be empty if asset category has no layout.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_resource_layout;
-
-  /**
-   * Timezone of date and time of asset booking.
-   *
-   * Empty if {@link AssetListModel::$dtl_date} not set or client can't change in which timezone dates should be shown.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_timezone = '';
-
-  /**
-   * Client to get information for.
-   *
-   * If client not set, returns full asset list without client restrictions.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $uid = null;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Appointment\Book\Asset;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Resource\Image\ImageIconSid;
+use WellnessLiving\Wl\Resource\Image\ImageShapeSid;
+use WellnessLiving\Wl\Service\ServicePriceSid;
+use WellnessLiving\Wl\Service\ServiceRequireSid;
+
+/**
+ * Retrieves information about assets in the current asset category.
+ */
+class AssetListModel extends WlModelAbstract
+{
+  /**
+   * A list of information about assets:
+   *
+   * <dl>
+   *   <dt>array <var>a_age_restrictions</var></dt>
+   *   <dd>
+   *     Information about age restrictions for this event.
+   *
+   *     This will be an empty array if there aren't any age restrictions.
+   *
+   *     <dl>
+   *       <dt>int|null <var>i_age_from</var></dt>
+   *       <dd>The minimum age permitted for the event. This will be `null` if a minimum age isn't set or available.</dd>
+   *       <dt>int|null <var>i_age_to</var></dt>
+   *       <dd>The maximum age permitted for the event. This will be `null` if a maximum age isn't set or available.</dd>
+   *       <dt>bool <var>is_age_public</var></dt>
+   *       <dd>This will be `true` if age restrictions are public and available. Otherwise, this will be `false` if they're hidden.
+   *         When restrictions are hidden and current user isn't a staff member, the age range will be empty.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>array <var>a_class_tab</var></dt>
+   *   <dd>The key of service.</dd>
+   *   <dt>
+   *     array[] <var>a_direct_link</var>
+   *   </dt>
+   *   <dd>
+   *     A list of links to create a booking from a direct link (direct booking URL).
+   *     The system needs to know what tab is associated with the booking. Therefore, there needs to be one link
+   *     per tab.
+   *     Each element has two values:
+   *     <dl>
+   *       <dt>string <var>k_class_tab</var></dt>
+   *       <dd>The key of the book now tab.</dd>
+   *       <dt>string <var>url_tab</var></dt>
+   *       <dd>The direct booking URL. This will open the booking wizard under the related booking tab.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>array[] <var>a_image</var></dt>
+   *   <dd>Information about the asset logo:
+   *     <dl>
+   *       <dt>int <var>i_angle</var></dt>
+   *       <dd>The angle of the shape rotation. This is set only if the image is one of the default shapes.</dd>
+   *       <dt>bool <var>is_empty</var></dt>
+   *       <dd>Determines if the asset logo is empty.</dd>
+   *       <dt>string <var>sid_image_icon</var></dt>
+   *       <dd>The icon name. String representation of one of the {@link ImageIconSid} constants. This is only set if the image kind equals to `image`.</dd>
+   *       <dt>string <var>sid_image_shape</var></dt>
+   *       <dd>The shape name. String representation of one of the {@link ImageShapeSid} constants. This is set only if the image kind equals to `shape`.</dd>
+   *       <dt>string <var>url</var></dt>
+   *       <dd>The asset logo URL.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>array[] <var>a_period</var></dt>
+   *   <dd>A list of asset periods with the following information:
+   *     <dl>
+   *       <dt>string <var>html_duration</var></dt>
+   *       <dd>The HTML code used to display the asset duration.</dd>
+   *       <dt>string <var>html_price</var></dt>
+   *       <dd>The HTML code used to display the formatted price.</dd>
+   *       <dt>int <var>i_duration</var></dt>
+   *       <dd>The asset duration in minutes.</dd>
+   *       <dt>int <var>id_price</var></dt>
+   *       <dd>The asset period price type. One of {@link ServicePriceSid} constants.</dd>
+   *       <dt>sting <var>m_price</var></dt>
+   *       <dd>The asset period price.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>array <var>a_search_tag</var></dt>
+   *   <dd>QUICK Search tag keys.</dd>
+   *   <dt>bool <var>hide_application</var></dt>
+   *   <dd>
+   *     Determines whether the asset will be hidden in the White Label mobile apps.
+   *     If `true`, the asset won't be displayed. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>string <var>html_age_restriction</var></dt>
+   *   <dd>The resource age restriction</dd>
+   *   <dt>string <var>html_title</var></dt>
+   *   <dd>The resource name.</dd>
+   *   <dt>int <var>id_service_require</var></dt>
+   *   <dd>The purchase rule. One of the {@link ServiceRequireSid} constants.</dd>
+   *   <dt>bool <var>is_age_restricted</var></dt>
+   *   <dd>Determines whether this service can't be booked due to age restrictions.</dd>
+   *   <dt>string <var>k_class_tab</var></dt>
+   *   <dd>Quick book tab key.</dd>
+   *   <dt>string <var>k_resource</var></dt>
+   *   <dd>The resource key.</dd>
+   *   <dt>string <var>k_resource_category</var></dt>
+   *   <dd>The resource category key.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_asset;
+
+  /**
+   * The selected date and time of the asset booking. It is used in cases when the business booking policy allows
+   * clients to select a date and time, and then the available asset.
+   *
+   * @get get
+   * @var string
+   */
+  public $dtl_date = false;
+
+  /**
+   * Image height in pixels. Please specify this value if you need image to be returned in specific size.
+   * In case this value is not specified returned image will have default size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_height = 0;
+
+  /**
+   * Image width in pixels. Please specify this value if you need image to be returned in specific size.
+   * In case this value is not specified returned image will have default size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_width = 0;
+
+  /**
+   * Mode type, one of {@link ModeSid} constants.
+   *
+   * @get get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * This is `true` if asset categories are loaded for back-end mode. Otherwise, this will be `false` for front-end mode.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_backend = false;
+
+  /**
+   * `true` - search in all tabs.
+   * `false` - search only for the selected book tab.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_tab_all = false;
+
+  /**
+   * Key of the appointment, if we reschedule existing appointment.
+   * It should be sent to ignore it when we get availability hours for the asset.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_appointment = '0';
+
+  /**
+   * Business key.
+   *
+   * If not set, location's business will be used.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The class tab key used to filter assets.
+   *
+   * This will be `null` if not set yet or if elements with no specified class tab are selected.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_class_tab = '0';
+
+  /**
+   * The location key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * The asset category key to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_resource_category = '0';
+
+  /**
+   * The asset layout key.
+   * May be empty if asset category has no layout.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_resource_layout;
+
+  /**
+   * Timezone of date and time of asset booking.
+   *
+   * Empty if {@link AssetListModel::$dtl_date} not set or client can't change in which timezone dates should be shown.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_timezone = '';
+
+  /**
+   * Client to get information for.
+   *
+   * If client not set, returns full asset list without client restrictions.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $uid = null;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php b/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php
index 7db3ac12..8d5455f6 100644
--- a/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php
@@ -1,247 +1,247 @@
-<?php
-
-namespace WellnessLiving\Wl\Appointment\Book\Finish;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Appointment\Book\Question\QuestionModel;
-use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-
-/**
- * Completes an appointment booking.
- */
-class Finish47Model extends WlModelAbstract
-{
-  /**
-   * A list of answers for the questions from {@link QuestionModel::$a_question}.
-   * Keys refer to hashes of the questions. Values refer to answers for the questions.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_answer = [];
-
-  /**
-   * The keys of the booked appointments.
-   * Every element has key:
-   * <dl>
-   *   <dt>
-   *     string <var>k_appointment</var>
-   *   </dt>
-   *   <dd>
-   *     The appointment key.
-   *   </dd>
-   * </dl>
-   *
-   * @post result
-   * @var array[]
-   */
-  public $a_appointment = null;
-
-  /**
-   * The documentation is the same as in {@link FinishModel::$a_book_data}.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_book_data = [];
-
-  /**
-   * The activity keys of the bookings that were made.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_login_activity_visit = null;
-
-  /**
-   * A list of payment sources to pay with.
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_pay_form = [];
-
-  /**
-   * Data required for payment. Has next structure:<dl>
-   *   <dt>int <var>id_purchase_item</var></dt>
-   *   <dd>Type of the purchase item. One of the {@link WlPurchaseItemSid} constants.</dd>
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>Promotion key or appointment key. Depends on <var>id_purchase_item</var> of this array.</dd>
-   *   <dt>string <var>k_login_promotion</var></dt>
-   *   <dd>Login promotion key.</dd>
-   *   <dt>string <var>k_session_pass</var></dt>
-   *   <dd>Session pass key.</dd>
-   *   <dt>string <var>text_discount_code</var></dt>
-   *   <dd>Discount code.</dd>
-   * </dl>
-   *
-   * @post post
-   * @var array
-   */
-  public $a_payment_data = [];
-
-  /**
-   * The purchase item keys.
-   * Empty if no purchases are made for the appointment booking.
-   *
-   * @post post
-   * @var string[]
-   */
-  public $a_purchase_item = [];
-
-  /**
-   * List of quiz response keys.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_quiz_response = [];
-
-  /**
-   * List of user keys to book appointments.
-   * There may be empty values in this list, which means that this is a walk-in.
-   *
-   * @get get
-   * @post get
-   * @var string[]
-   */
-  public $a_uid = [];
-
-  /**
-   * Data to create new user.
-   * Specify this if <var>$uid</var> is empty.
-   * Must contain the following keys:
-   * <dl>
-   *   <dt>string[] <var>a_note</var></dt>
-   *   <dd>List of notes to add to user.</dd>
-   *   <dt>string <var>text_mail</var></dt>
-   *   <dd>Mail.</dd>
-   *   <dt>string <var>text_name_first</var></dt>
-   *   <dd>First name.</dd>
-   *   <dt>string <var>text_name_last</var></dt>
-   *   <dd>Last name.</dd>
-   *   <dt>string <var>text_phone</var></dt>
-   *   <dd>Phone.</dd>
-   * </dl>
-   *
-   * @post get
-   * @var array
-   */
-  public $a_user = [];
-
-  /**
-   * The keys of visits.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_visit = null;
-
-  /**
-   * The booking mode ID. One of the {@link ModeSid} constants.
-   *
-   * @post post
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * The payment type ID for the appointment. One of the {@link WlAppointmentPaySid} constants.
-   *
-   * @post get
-   * @var int
-   */
-  public $id_pay = 0;
-
-  /**
-   * Determines whether multiple appointments are booked in back-to-back mode.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_back_to_back = false;
-
-  /**
-   * If `true`, the appointment is booked as unpaid. Otherwise, this will be `false` to select an available Purchase Option.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_unpaid_force = false;
-
-  /**
-   * If `true`, the client is a walk-in. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @post get
-   * @var bool
-   */
-  public $is_walk_in = false;
-
-  /**
-   * The appointment key.
-   * This should be set if you're rebooking an existing appointment.
-   *
-   * Otherwise, use `0` to book a new appointment.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_appointment = '0';
-
-  /**
-   * The business key.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * Location to show available appointment booking schedule.
-   *
-   * @get get,result
-   * @post get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * Key of timezone.
-   *
-   * `null` if not set then use default timezone client.
-   *
-   * @post get
-   * @var null|string
-   */
-  public $k_timezone = null;
-
-  /**
-   * The sum paid for a deposit.
-   *
-   * @post post
-   * @var string
-   */
-  public $m_pay = '0';
-
-  /**
-   * Unique identifier of the wizard.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_id = '';
-
-  /**
-   * The user key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Appointment\Book\Finish;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Appointment\Book\Question\QuestionModel;
+use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+
+/**
+ * Completes an appointment booking.
+ */
+class Finish47Model extends WlModelAbstract
+{
+  /**
+   * A list of answers for the questions from {@link QuestionModel::$a_question}.
+   * Keys refer to hashes of the questions. Values refer to answers for the questions.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_answer = [];
+
+  /**
+   * The keys of the booked appointments.
+   * Every element has key:
+   * <dl>
+   *   <dt>
+   *     string <var>k_appointment</var>
+   *   </dt>
+   *   <dd>
+   *     The appointment key.
+   *   </dd>
+   * </dl>
+   *
+   * @post result
+   * @var array[]
+   */
+  public $a_appointment = null;
+
+  /**
+   * The documentation is the same as in {@link FinishModel::$a_book_data}.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_book_data = [];
+
+  /**
+   * The activity keys of the bookings that were made.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_login_activity_visit = null;
+
+  /**
+   * A list of payment sources to pay with.
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_pay_form = [];
+
+  /**
+   * Data required for payment. Has next structure:<dl>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>Type of the purchase item. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>Promotion key or appointment key. Depends on <var>id_purchase_item</var> of this array.</dd>
+   *   <dt>string <var>k_login_promotion</var></dt>
+   *   <dd>Login promotion key.</dd>
+   *   <dt>string <var>k_session_pass</var></dt>
+   *   <dd>Session pass key.</dd>
+   *   <dt>string <var>text_discount_code</var></dt>
+   *   <dd>Discount code.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var array
+   */
+  public $a_payment_data = [];
+
+  /**
+   * The purchase item keys.
+   * Empty if no purchases are made for the appointment booking.
+   *
+   * @post post
+   * @var string[]
+   */
+  public $a_purchase_item = [];
+
+  /**
+   * List of quiz response keys.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_quiz_response = [];
+
+  /**
+   * List of user keys to book appointments.
+   * There may be empty values in this list, which means that this is a walk-in.
+   *
+   * @get get
+   * @post get
+   * @var string[]
+   */
+  public $a_uid = [];
+
+  /**
+   * Data to create new user.
+   * Specify this if <var>$uid</var> is empty.
+   * Must contain the following keys:
+   * <dl>
+   *   <dt>string[] <var>a_note</var></dt>
+   *   <dd>List of notes to add to user.</dd>
+   *   <dt>string <var>text_mail</var></dt>
+   *   <dd>Mail.</dd>
+   *   <dt>string <var>text_name_first</var></dt>
+   *   <dd>First name.</dd>
+   *   <dt>string <var>text_name_last</var></dt>
+   *   <dd>Last name.</dd>
+   *   <dt>string <var>text_phone</var></dt>
+   *   <dd>Phone.</dd>
+   * </dl>
+   *
+   * @post get
+   * @var array
+   */
+  public $a_user = [];
+
+  /**
+   * The keys of visits.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_visit = null;
+
+  /**
+   * The booking mode ID. One of the {@link ModeSid} constants.
+   *
+   * @post post
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * The payment type ID for the appointment. One of the {@link WlAppointmentPaySid} constants.
+   *
+   * @post get
+   * @var int
+   */
+  public $id_pay = 0;
+
+  /**
+   * Determines whether multiple appointments are booked in back-to-back mode.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_back_to_back = false;
+
+  /**
+   * If `true`, the appointment is booked as unpaid. Otherwise, this will be `false` to select an available Purchase Option.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_unpaid_force = false;
+
+  /**
+   * If `true`, the client is a walk-in. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_walk_in = false;
+
+  /**
+   * The appointment key.
+   * This should be set if you're rebooking an existing appointment.
+   *
+   * Otherwise, use `0` to book a new appointment.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_appointment = '0';
+
+  /**
+   * The business key.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * Location to show available appointment booking schedule.
+   *
+   * @get get,result
+   * @post get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * Key of timezone.
+   *
+   * `null` if not set then use default timezone client.
+   *
+   * @post get
+   * @var null|string
+   */
+  public $k_timezone = null;
+
+  /**
+   * The sum paid for a deposit.
+   *
+   * @post post
+   * @var string
+   */
+  public $m_pay = '0';
+
+  /**
+   * Unique identifier of the wizard.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_id = '';
+
+  /**
+   * The user key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php b/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php
index 1dc37ae2..101f76f8 100644
--- a/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php
@@ -1,395 +1,395 @@
-<?php
-
-namespace WellnessLiving\Wl\Appointment\Book\Finish;
-
-use WellnessLiving\Core\a\ADateWeekSid;
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\Core\a\AGenderSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
-use WellnessLiving\Wl\Classes\Tab\TabSid;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-
-/**
- * Pays for an appointment or appointment Purchase Option for a client.
- */
-class FinishMultipleModel extends WlModelAbstract
-{
-  /**
-   * A list of answers for the questions.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_answer = [];
-
-  /**
-   * The booked appointments. Every element has the key:
-   * <dl>
-   *   <dt>
-   *     string <var>k_appointment</var>
-   *   </dt>
-   *   <dd>
-   *     The appointment key.
-   *   </dd>
-   * </dl>
-   *
-   * @post result
-   * @var array[]
-   */
-  public $a_appointment = [];
-
-  /**
-   * All data from the provider model `Wl_Appointment_Book_ProviderModel`:
-   * <dl>
-   *   <dt>
-   *     array [<var>a_product</var>]
-   *   </dt>
-   *   <dd>
-   *     Add-ons to the appointment. Specified for appointment bookings only.
-   *     The old format used array keys. While the new format has each element as an array:
-   *     <dl>
-   *       <dt>int <var>i_count</var></dt><dd>The add-on count.</dd>
-   *       <dt>string <var>k_shop_product_option</var></dt><dd>The add-on key.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     array [<var>a_repeat</var>]
-   *   </dt>
-   *   <dd>
-   *     Information for the recurring booking:
-   *     <dl>
-   *       <dt>
-   *         int[] [<var>a_week</var>]
-   *       </dt>
-   *       <dd>
-   *         The days of the week when the appointment repeats. One of the constants of the {@link ADateWeekSid} class.
-   *         This will be empty if the appointment doesn't repeat weekly.
-   *       </dd>
-   *       <dt>
-   *         string [<var>dl_end</var>]
-   *       </dt>
-   *       <dd>
-   *         The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_occurrence</var>]
-   *       </dt>
-   *       <dd>
-   *         The number of occurrences after which the appointment's repeat cycle stops.
-   *         This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
-   *       </dd>
-   *       <dt>
-   *         int <var>i_period</var>
-   *       </dt>
-   *       <dd>
-   *         The frequency at which the appointment repeats.
-   *       </dd>
-   *       <dt>
-   *         int <var>id_period</var>
-   *       </dt>
-   *       <dd>
-   *         The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
-   *       </dd>
-   *       <dt>
-   *         bool [<var>is_month</var>]
-   *       </dt>
-   *       <dd>
-   *         <tt>true</tt> if the appointment repeats monthly on the same date.
-   *         <tt>false</tt> if the appointment repeats monthly on the same day of the week.
-   *         <tt>null</tt> if the appointment doesn't repeat monthly.
-   *       </dd>
-   *     </dl>
-   *     This will be empty if the appointment isn't booked recurringly.
-   *   </dd>
-   *   <dt>
-   *     array [<var>a_resource</var>]
-   *   </dt>
-   *   <dd>
-   *     The list of assets for the appointment booking.
-   *     Keys refer to asset categories. Values are arrays with the next keys:
-   *     <dl>
-   *       <dt>int [<var>i_index</var>]</dt>
-   *       <dd>The asset index on the layout. This is only specified if the asset category has a layout.</dd>
-   *       <dt>string <var>k_resource</var></dt>
-   *       <dd>The asset.</dd>
-   *     </dl>
-   *     Specify this only for an appointment booking.
-   *   </dd>
-   *   <dt>
-   *     string <var>dt_date</var>
-   *   </dt>
-   *   <dd>
-   *     The date/time for the booking in MySQL format in the location's time zone.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_duration</var>]
-   *   </dt>
-   *   <dd>
-   *     The duration for the asset booking in minutes. Specify this for separate asset bookings only.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_index</var>]
-   *   </dt>
-   *   <dd>
-   *     The asset index on the layout.
-   *     Specify this for separate asset bookings only and for cases when the asset category only has the layout.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_class_tab</var>
-   *   </dt>
-   *   <dd>
-   *     The booking service type. One of the {@link TabSid} constants.
-   *   </dd>
-   *   <dt>
-   *     int [<var>id_gender_staff</var>]
-   *   </dt>
-   *   <dd>
-   *     The gender of the staff member conducting the appointment. One of the {@link AGenderSid} constants.
-   *     Specify this for appointment bookings only.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_login_promotion</var>]
-   *   </dt>
-   *   <dd>
-   *     The user's Purchase Option.
-   *     Specify this if you want to use a specific Purchase Option to pay for the booking.
-   *
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_resource</var>]
-   *   </dt>
-   *   <dd>
-   *     The asset booking. Specify this for separate asset bookings only.
-   *
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_service</var>]
-   *   </dt>
-   *   <dd>
-   *     The appointment booking. Specify this for appointment bookings only.
-   *
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_staff</var>]
-   *   </dt>
-   *   <dd>
-   *     The staff member conducting the appointment.
-   *     Specify this for appointment bookings only.
-   *
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_staff_date</var>]
-   *   </dt>
-   *   <dd>
-   *     The staff member conducting the appointment.
-   *     The difference between this and <var>k_staff</var> is that this value must be set only in cases
-   *     when you want to add customer to an appointment that already exists.
-   *     Specify this for appointment bookings only.
-   *
-   *   </dd>
-   *   <dt>string [<var>m_tip_appointment</var>]</dt>
-   *   <dd>The amount of selected tips.</dd>
-   *   <dt>sting <var>k_timezone</var></dt>
-   *   <dd>The time zone key. This will be 'null' if the time zone used matches the time zone of the location.</dd>
-   * </dl>
-   *
-   * @post post
-   * @var array
-   */
-  public $a_book_data = [];
-
-  /**
-   * The activity IDs of bookings that have been made.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_login_activity_visit;
-
-  /**
-   * The sum paid.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_paid = [];
-
-  /**
-   * The payment type for the appointment. One of the {@link WlAppointmentPaySid} constants.
-   *
-   * @post get
-   * @var array
-   */
-  public $a_pay = [];
-
-  /**
-   * A list of payment sources to pay with.
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_pay_form = [];
-
-  /**
-   * Data required for payment with the next structure:<dl>
-   *   <dt>int <var>id_purchase_item</var></dt>
-   *   <dd>The purchase item type. One of the {@link WlPurchaseItemSid} constants.</dd>
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>The promotion or appointment key, depending on <var>id_purchase_item</var> in this array.</dd>
-   *   <dt>string <var>k_login_promotion</var></dt>
-   *   <dd>The login promotion key.</dd>
-   *   <dt>string <var>text_discount_code</var></dt>
-   *   <dd>The discount code.</dd>
-   * </dl>
-   *
-   * @post post
-   * @var array
-   */
-  public $a_payment_data = [];
-
-  /**
-   * The purchase items keys.
-   * This will be empty if no purchases have been made for the appointment booking.
-   *
-   * @post post
-   * @var string[]
-   */
-  public $a_purchase_item = [];
-
-  /**
-   * The list of quiz response keys.
-   * Keys refer to quiz keys.
-   * And values refer to response keys.
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_quiz_response = [];
-
-  /**
-   * List of user keys to book appointments.
-   * There may be empty values in this list, which means that this is a walk-in.
-   *
-   * @get get
-   * @post get
-   * @var string[]
-   */
-  public $a_uid = [];
-
-  /**
-   * Data to create new users.
-   * Specify this if <var>$uid</var> is empty.
-   * The data must contain the next keys:
-   * <dl><dt>string[] <var>a_note</var></dt><dd>The list of notes to add to the new user's profile.</dd>
-   * <dt>string <var>text_mail</var></dt><dd>The new user's email address.</dd>
-   * <dt>string <var>text_name_first</var></dt><dd>The new user's first name.</dd>
-   * <dt>string <var>text_name_last</var></dt><dd>The new user's last name.</dd>
-   * <dt>string <var>text_phone</var></dt><dd>The new user's mobile phone number.</dd></dl>
-   *
-   * @post get
-   * @var array
-   */
-  public $a_user = [];
-
-  /**
-   * The visit IDs.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_visit = [];
-
-  /**
-   * Keys of booked visits.
-   *
-   * Structured into a two-dimensional array.
-   * 1st dimension - providers; 2nd dimension - visit keys inside a provider.
-   *
-   * @post result
-   * @var string[][]
-   */
-  public $a_visit_provider = [];
-
-  /**
-   * The mode type. One of the {@link ModeSid} constants.
-   *
-   * @post post
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * Determines whether multiple appointments have been booked in back-to-back mode.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_back_to_back = false;
-
-  /**
-   * This will be `true` when trying to make a test booking and rollback should be applied.
-   * Otherwise, this will be `false`.
-   *
-   * If the flag is set to `true`, credit card requirement will be ignored during this check.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_try = false;
-
-  /**
-   * If `true`, the client is a walk-in. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @post get
-   * @var bool
-   */
-  public $is_walk_in = false;
-
-  /**
-   * The appointment key.
-   * Specify this to reschedule a certain appointment.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_appointment = '0';
-
-  /**
-   * The business key.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * Location to show available appointment booking schedule.
-   *
-   * @get get,result
-   * @post get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * Unique identifier of the wizard.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_id = '';
-
-  /**
-   * The user key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Appointment\Book\Finish;
+
+use WellnessLiving\Core\a\ADateWeekSid;
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\Core\a\AGenderSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
+use WellnessLiving\Wl\Classes\Tab\TabSid;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+
+/**
+ * Pays for an appointment or appointment Purchase Option for a client.
+ */
+class FinishMultipleModel extends WlModelAbstract
+{
+  /**
+   * A list of answers for the questions.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_answer = [];
+
+  /**
+   * The booked appointments. Every element has the key:
+   * <dl>
+   *   <dt>
+   *     string <var>k_appointment</var>
+   *   </dt>
+   *   <dd>
+   *     The appointment key.
+   *   </dd>
+   * </dl>
+   *
+   * @post result
+   * @var array[]
+   */
+  public $a_appointment = [];
+
+  /**
+   * All data from the provider model `Wl_Appointment_Book_ProviderModel`:
+   * <dl>
+   *   <dt>
+   *     array [<var>a_product</var>]
+   *   </dt>
+   *   <dd>
+   *     Add-ons to the appointment. Specified for appointment bookings only.
+   *     The old format used array keys. While the new format has each element as an array:
+   *     <dl>
+   *       <dt>int <var>i_count</var></dt><dd>The add-on count.</dd>
+   *       <dt>string <var>k_shop_product_option</var></dt><dd>The add-on key.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     array [<var>a_repeat</var>]
+   *   </dt>
+   *   <dd>
+   *     Information for the recurring booking:
+   *     <dl>
+   *       <dt>
+   *         int[] [<var>a_week</var>]
+   *       </dt>
+   *       <dd>
+   *         The days of the week when the appointment repeats. One of the constants of the {@link ADateWeekSid} class.
+   *         This will be empty if the appointment doesn't repeat weekly.
+   *       </dd>
+   *       <dt>
+   *         string [<var>dl_end</var>]
+   *       </dt>
+   *       <dd>
+   *         The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_occurrence</var>]
+   *       </dt>
+   *       <dd>
+   *         The number of occurrences after which the appointment's repeat cycle stops.
+   *         This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *       </dd>
+   *       <dt>
+   *         int <var>i_period</var>
+   *       </dt>
+   *       <dd>
+   *         The frequency at which the appointment repeats.
+   *       </dd>
+   *       <dt>
+   *         int <var>id_period</var>
+   *       </dt>
+   *       <dd>
+   *         The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *       </dd>
+   *       <dt>
+   *         bool [<var>is_month</var>]
+   *       </dt>
+   *       <dd>
+   *         <tt>true</tt> if the appointment repeats monthly on the same date.
+   *         <tt>false</tt> if the appointment repeats monthly on the same day of the week.
+   *         <tt>null</tt> if the appointment doesn't repeat monthly.
+   *       </dd>
+   *     </dl>
+   *     This will be empty if the appointment isn't booked recurringly.
+   *   </dd>
+   *   <dt>
+   *     array [<var>a_resource</var>]
+   *   </dt>
+   *   <dd>
+   *     The list of assets for the appointment booking.
+   *     Keys refer to asset categories. Values are arrays with the next keys:
+   *     <dl>
+   *       <dt>int [<var>i_index</var>]</dt>
+   *       <dd>The asset index on the layout. This is only specified if the asset category has a layout.</dd>
+   *       <dt>string <var>k_resource</var></dt>
+   *       <dd>The asset.</dd>
+   *     </dl>
+   *     Specify this only for an appointment booking.
+   *   </dd>
+   *   <dt>
+   *     string <var>dt_date</var>
+   *   </dt>
+   *   <dd>
+   *     The date/time for the booking in MySQL format in the location's time zone.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_duration</var>]
+   *   </dt>
+   *   <dd>
+   *     The duration for the asset booking in minutes. Specify this for separate asset bookings only.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_index</var>]
+   *   </dt>
+   *   <dd>
+   *     The asset index on the layout.
+   *     Specify this for separate asset bookings only and for cases when the asset category only has the layout.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_class_tab</var>
+   *   </dt>
+   *   <dd>
+   *     The booking service type. One of the {@link TabSid} constants.
+   *   </dd>
+   *   <dt>
+   *     int [<var>id_gender_staff</var>]
+   *   </dt>
+   *   <dd>
+   *     The gender of the staff member conducting the appointment. One of the {@link AGenderSid} constants.
+   *     Specify this for appointment bookings only.
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_login_promotion</var>]
+   *   </dt>
+   *   <dd>
+   *     The user's Purchase Option.
+   *     Specify this if you want to use a specific Purchase Option to pay for the booking.
+   *
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_resource</var>]
+   *   </dt>
+   *   <dd>
+   *     The asset booking. Specify this for separate asset bookings only.
+   *
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_service</var>]
+   *   </dt>
+   *   <dd>
+   *     The appointment booking. Specify this for appointment bookings only.
+   *
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_staff</var>]
+   *   </dt>
+   *   <dd>
+   *     The staff member conducting the appointment.
+   *     Specify this for appointment bookings only.
+   *
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_staff_date</var>]
+   *   </dt>
+   *   <dd>
+   *     The staff member conducting the appointment.
+   *     The difference between this and <var>k_staff</var> is that this value must be set only in cases
+   *     when you want to add customer to an appointment that already exists.
+   *     Specify this for appointment bookings only.
+   *
+   *   </dd>
+   *   <dt>string [<var>m_tip_appointment</var>]</dt>
+   *   <dd>The amount of selected tips.</dd>
+   *   <dt>sting <var>k_timezone</var></dt>
+   *   <dd>The time zone key. This will be 'null' if the time zone used matches the time zone of the location.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var array
+   */
+  public $a_book_data = [];
+
+  /**
+   * The activity IDs of bookings that have been made.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_login_activity_visit;
+
+  /**
+   * The sum paid.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_paid = [];
+
+  /**
+   * The payment type for the appointment. One of the {@link WlAppointmentPaySid} constants.
+   *
+   * @post get
+   * @var array
+   */
+  public $a_pay = [];
+
+  /**
+   * A list of payment sources to pay with.
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_pay_form = [];
+
+  /**
+   * Data required for payment with the next structure:<dl>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The purchase item type. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The promotion or appointment key, depending on <var>id_purchase_item</var> in this array.</dd>
+   *   <dt>string <var>k_login_promotion</var></dt>
+   *   <dd>The login promotion key.</dd>
+   *   <dt>string <var>text_discount_code</var></dt>
+   *   <dd>The discount code.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var array
+   */
+  public $a_payment_data = [];
+
+  /**
+   * The purchase items keys.
+   * This will be empty if no purchases have been made for the appointment booking.
+   *
+   * @post post
+   * @var string[]
+   */
+  public $a_purchase_item = [];
+
+  /**
+   * The list of quiz response keys.
+   * Keys refer to quiz keys.
+   * And values refer to response keys.
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_quiz_response = [];
+
+  /**
+   * List of user keys to book appointments.
+   * There may be empty values in this list, which means that this is a walk-in.
+   *
+   * @get get
+   * @post get
+   * @var string[]
+   */
+  public $a_uid = [];
+
+  /**
+   * Data to create new users.
+   * Specify this if <var>$uid</var> is empty.
+   * The data must contain the next keys:
+   * <dl><dt>string[] <var>a_note</var></dt><dd>The list of notes to add to the new user's profile.</dd>
+   * <dt>string <var>text_mail</var></dt><dd>The new user's email address.</dd>
+   * <dt>string <var>text_name_first</var></dt><dd>The new user's first name.</dd>
+   * <dt>string <var>text_name_last</var></dt><dd>The new user's last name.</dd>
+   * <dt>string <var>text_phone</var></dt><dd>The new user's mobile phone number.</dd></dl>
+   *
+   * @post get
+   * @var array
+   */
+  public $a_user = [];
+
+  /**
+   * The visit IDs.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_visit = [];
+
+  /**
+   * Keys of booked visits.
+   *
+   * Structured into a two-dimensional array.
+   * 1st dimension - providers; 2nd dimension - visit keys inside a provider.
+   *
+   * @post result
+   * @var string[][]
+   */
+  public $a_visit_provider = [];
+
+  /**
+   * The mode type. One of the {@link ModeSid} constants.
+   *
+   * @post post
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * Determines whether multiple appointments have been booked in back-to-back mode.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_back_to_back = false;
+
+  /**
+   * This will be `true` when trying to make a test booking and rollback should be applied.
+   * Otherwise, this will be `false`.
+   *
+   * If the flag is set to `true`, credit card requirement will be ignored during this check.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_try = false;
+
+  /**
+   * If `true`, the client is a walk-in. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_walk_in = false;
+
+  /**
+   * The appointment key.
+   * Specify this to reschedule a certain appointment.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_appointment = '0';
+
+  /**
+   * The business key.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * Location to show available appointment booking schedule.
+   *
+   * @get get,result
+   * @post get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * Unique identifier of the wizard.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_id = '';
+
+  /**
+   * The user key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
index 0358a857..2f97e642 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
@@ -1,529 +1,529 @@
-<?php
-
-namespace WellnessLiving\Wl\Appointment\Book\Payment;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
-use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
-use WellnessLiving\Wl\Classes\Tab\TabSid;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-
-/**
- * Completes the payment for an appointment or appointment Purchase Option for a client.
- *
- * The only difference between this endpoint and {@link PaymentModel} is
- * that this endpoint is capable of paying for multiple appointments at the same time.
- *
- * This endpoint uses a CAPTCHA check.
- * To pass the CAPTCHA, you'll need to study the documentation of the CAPTCHA base class. In the documentation, you'll
- * find that you need to send a CAPTCHA for a specific action. For this API, the action is {@link BusinessPaymentCaptcha::CID}.
- */
-class PaymentMultipleModel extends WlModelAbstract
-{
-  /**
-   * The booking process information:
-   * <dl>
-   *   <dt>
-   *     array[] <var>a_provider</var>
-   *   </dt>
-   *   <dd>
-   *     The batch of appointments to be booked. Each element has the next values:
-   *     <dl>
-   *       <dt>
-   *         array <var>a_product</var>
-   *       </dt>
-   *       <dd>
-   *         The add-on list.
-   *         Keys refer to add-on keys, and values refer to the add-on quantities.
-   *       </dd>
-   *       <dt>
-   *         int <var>i_duration</var>
-   *       </dt>
-   *       <dd>
-   *         The asset duration in minutes. This won't be empty for asset bookings.
-   *       </dd>
-   *       <dt>
-   *         int <var>id_purchase_item</var>
-   *       </dt>
-   *       <dd>
-   *         The ID of the purchase item. One of the {@link WlPurchaseItemSid} constants.
-   *         This won't be empty for new options purchased.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_pay_later</var>
-   *       </dt>
-   *       <dd>
-   *         This will be <tt>true</tt> if the customer wants to pay upon their visit. Otherwise, this will be <tt>false</tt>
-   *         if the user wants to pay now.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_purchase_previous</var>
-   *       </dt>
-   *       <dd>
-   *         This will be <tt>true</tt> if the Purchase Option that was selected for another appointment from the batch
-   *         must be used for this appointment. Otherwise, this will be <tt>false</tt>.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_wait_list_unpaid</var>
-   *       </dt>
-   *       <dd>
-   *         This will be <tt>true</tt> if the customer is booked into the wait list and doesn't have to pay.
-   *         Otherwise, this will be <tt>false</tt> if the customer is booking to an active list (or if the wait list booking
-   *         should be paid now).
-   *       </dd>
-   *       <dt>
-   *         string <var>k_id</var>
-   *       </dt>
-   *       <dd>
-   *         The key of the purchase item.
-   *         This won't be empty for new options purchased.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_login_prize</var>
-   *       </dt>
-   *       <dd>
-   *         The key of the customer's prize used to pay for the booking. This won't be empty for bookings made using prizes.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_login_promotion</var>
-   *       </dt>
-   *       <dd>
-   *         The key of the Purchase Option. This won't be empty when using a Purchase Option that's already been purchased.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_resource</var>
-   *       </dt>
-   *       <dd>
-   *         The key of the asset booking.
-   *         This is only used for asset bookings.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_service</var>
-   *       </dt>
-   *       <dd>
-   *         The key of the appointment booking service.
-   *         This is only used for appointment bookings.
-   *       </dd>
-   *       <dt>
-   *         string <var>s_signature</var>
-   *       </dt>
-   *       <dd>
-   *         The signature for the Purchase Option contract.
-   *         The data is returned from the canvas HTML element or the signature pad.
-   *         This won't be empty if the Purchase Option requires contract signing.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     int <var>id_class_tab</var>
-   *   </dt>
-   *   <dd>
-   *     The "Book now" tab. One of the {@link TabSid} constants.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_tip_appointment</var>
-   *   </dt>
-   *   <dd>
-   *     The tips amount.
-   *   </dd>
-   * </dl>
-   *
-   * Set this field value for GET requests.
-   *
-   * @get get
-   * @var array
-   */
-  public $a_book_data = [];
-
-  /**
-   * A copy of {@link PaymentMultipleModel::$a_book_data}.
-   *
-   * Set this field value for POST requests.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_book_data_post = [];
-
-  /**
-   * The list of redeemed prizes.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_login_prize = [];
-
-  /**
-   * The payment type for the appointment. One of the {@link WlAppointmentPaySid} constants.
-   *
-   * @post result
-   * @var int[]
-   */
-  public $a_pay;
-
-  /**
-   * A list of payment sources to pay with.
-   *
-   * Each element has next keys:
-   * <dl>
-   *   <dt>
-   *     array [<var>a_pay_card</var>]
-   *   </dt>
-   *   <dd>
-   *     The payment card information:
-   *     <dl>
-   *       <dt>
-   *         array <var>a_pay_address</var>
-   *       </dt>
-   *       <dd>
-   *         The payment address:
-   *         <dl>
-   *           <dt>boolean <var>is_new</var></dt>
-   *           <dd>Set this value to <tt>1</tt> to add a new payment address or to <tt>0</tt> to use a saved payment address.</dd>
-   *           <dt>string [<var>k_geo_country</var>]</dt>
-   *           <dd>The key of the country used for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>k_geo_region</var>]</dt>
-   *           <dd>The key of the region for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>k_pay_address</var>]</dt>
-   *           <dd>The key of the saved payment address. Specify this to use a saved address.</dd>
-   *           <dt>string [<var>s_city</var>]</dt>
-   *           <dd>The city used for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_name</var>]</dt>
-   *           <dd>The card name. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_phone</var>]</dt>
-   *           <dd>The payment phone. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_postal</var>]</dt>
-   *           <dd>The postal code for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_street1</var>]</dt>
-   *           <dd>The payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_street2</var>]</dt>
-   *           <dd>The optional payment address. Specify this to add a new address.</dd>
-   *         </dl>
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_csc</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card CSC. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_month</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card expiration month. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_year</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card expiration year. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         boolean <var>is_new</var>
-   *       </dt>
-   *       <dd>
-   *         Specify <tt>1</tt> to add a new card, or <tt>0</tt> to use a saved card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>k_pay_bank</var>]
-   *       </dt>
-   *       <dd>
-   *         The key of the credit card. Specify this to use saved card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_comment</var>]
-   *       </dt>
-   *       <dd>
-   *         Optional comment(s). Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_number</var>]
-   *       </dt>
-   *       <dd>
-   *         The card number. Specify this to add a new card.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>f_amount</var>
-   *   </dt>
-   *   <dd>
-   *     The amount of money to withdraw with this payment source.
-   *   </dd>
-   *   <dt>
-   *     boolean [<var>is_hide</var>]
-   *   </dt>
-   *   <dd>
-   *     Determines whether this payment method is hidden.
-   *   </dd>
-   *   <dt>
-   *     boolean [<var>is_success</var>=<tt>false</tt>]
-   *   </dt>
-   *   <dd>
-   *     Identifies whether this source was successfully charged.
-   *   </dd>
-   *   <dt>
-   *     string [<var>m_surcharge</var>]
-   *   </dt>
-   *   <dd>
-   *     The client-side calculated surcharge.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_index</var>]
-   *   </dt>
-   *   <dd>
-   *     The index of this form (optional).
-   *   </dd>
-   *   <dt>
-   *     string <var>sid_pay_method</var>
-   *   </dt>
-   *   <dd>
-   *     The payment method ID.
-   *   </dd>
-   * </dl>
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_pay_form = [];
-
-  /**
-   * Information about the selected login promotion.
-   *
-   * <dl>
-   *   <dt>
-   *     int <var>i_limit</var>
-   *   </dt>
-   *   <dd>
-   *      The visit count limit of the promotion.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_remain</var>
-   *   </dt>
-   *   <dd>
-   *     The count of remaining visits.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_expire</var>
-   *   </dt>
-   *   <dd>
-   *     The expiration date.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title of the promotion.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_promotion_data;
-
-  /**
-   * Fields refer to strings in the format <tt>id_purchase_item-k_id</tt>. Values refer to an array with the next stricture:
-   * <dl>
-   *   <dt>
-   *     array <var>a_tax</var>
-   *   </dt>
-   *   <dd>
-   *     A list of taxes to apply containing information about taxes.
-   *     The array keys are <tt>k_tax</tt> keys. Each element contains the following fields:
-   *     <dl>
-   *       <dt>
-   *         float <var>m_tax</var>
-   *       </dt>
-   *       <dd>
-   *         The tax rate.
-   *       </dd>
-   *       <dt>
-   *         string <var>text_title</var>
-   *       </dt>
-   *       <dd>
-   *         The name of the tax.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>id_purchase_item</var>
-   *   </dt>
-   *   <dd>
-   *     The purchase item ID. One of the {@link WlPurchaseItemSid} constants.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_id</var>
-   *   </dt>
-   *   <dd>
-   *     The value of the discount used for the purchase.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_discount</var>
-   *   </dt>
-   *   <dd>
-   *     The value of the discount used for the purchase.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_pay</var>
-   *   </dt>
-   *   <dd>
-   *     The payment for the promotion (or single visit) without taxes.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_price</var>
-   *   </dt>
-   *   <dd>
-   *     The price of the promotion (or single visit).
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_purchase;
-
-  /**
-   * The keys of purchased items.
-   *
-   * The first level of the array is the list of appointments from the batch.
-   * The second level of the array is the list of items purchased for this appointment.
-   *
-   * @post result
-   * @var string[][]|null
-   */
-  public $a_purchase_item;
-
-  /**
-   * The list of quiz response keys.
-   * Keys refer to quiz keys.
-   * And values refer to response keys.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_quiz_response = [];
-
-  /**
-   * The list of amounts to pay for appointments from the batch, with taxes and without surcharges.
-   *
-   * @get result
-   * @var string[]
-   */
-  public $a_total;
-
-  /**
-   * List of user keys to book appointments.
-   * There may be empty values in this list, which means that this is a walk-in.
-   *
-   * @get get
-   * @post get
-   * @var string[]
-   */
-  public $a_uid = [];
-
-  /**
-   * The ID of the source mode. One of the {@link ModeSid} constants.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * If `true`, the client is a walk-in. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @post get
-   * @var bool
-   */
-  public $is_walk_in = false;
-
-  /**
-   * Location to show available appointment booking schedule.
-   *
-   * @get get,result
-   * @post get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * Key of the activity for the purchase made. This will be empty if no purchase has been made.
-   *
-   * @post result
-   * @var string
-   */
-  public $k_login_activity_purchase;
-
-  /**
-   * The gift card amount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_coupon;
-
-  /**
-   * The discount amount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount;
-
-  /**
-   * The surcharge amount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_surcharge;
-
-  /**
-   * The amount of tax to pay.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_tax;
-
-  /**
-   * The price of the service, with taxes and without surcharges.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_total;
-
-  /**
-   * The gift card code.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $text_coupon_code = '';
-
-  /**
-   * The discount code.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $text_discount_code = '';
-
-  /**
-   * The user key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Appointment\Book\Payment;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
+use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
+use WellnessLiving\Wl\Classes\Tab\TabSid;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+
+/**
+ * Completes the payment for an appointment or appointment Purchase Option for a client.
+ *
+ * The only difference between this endpoint and {@link PaymentModel} is
+ * that this endpoint is capable of paying for multiple appointments at the same time.
+ *
+ * This endpoint uses a CAPTCHA check.
+ * To pass the CAPTCHA, you'll need to study the documentation of the CAPTCHA base class. In the documentation, you'll
+ * find that you need to send a CAPTCHA for a specific action. For this API, the action is {@link BusinessPaymentCaptcha::CID}.
+ */
+class PaymentMultipleModel extends WlModelAbstract
+{
+  /**
+   * The booking process information:
+   * <dl>
+   *   <dt>
+   *     array[] <var>a_provider</var>
+   *   </dt>
+   *   <dd>
+   *     The batch of appointments to be booked. Each element has the next values:
+   *     <dl>
+   *       <dt>
+   *         array <var>a_product</var>
+   *       </dt>
+   *       <dd>
+   *         The add-on list.
+   *         Keys refer to add-on keys, and values refer to the add-on quantities.
+   *       </dd>
+   *       <dt>
+   *         int <var>i_duration</var>
+   *       </dt>
+   *       <dd>
+   *         The asset duration in minutes. This won't be empty for asset bookings.
+   *       </dd>
+   *       <dt>
+   *         int <var>id_purchase_item</var>
+   *       </dt>
+   *       <dd>
+   *         The ID of the purchase item. One of the {@link WlPurchaseItemSid} constants.
+   *         This won't be empty for new options purchased.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_pay_later</var>
+   *       </dt>
+   *       <dd>
+   *         This will be <tt>true</tt> if the customer wants to pay upon their visit. Otherwise, this will be <tt>false</tt>
+   *         if the user wants to pay now.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_purchase_previous</var>
+   *       </dt>
+   *       <dd>
+   *         This will be <tt>true</tt> if the Purchase Option that was selected for another appointment from the batch
+   *         must be used for this appointment. Otherwise, this will be <tt>false</tt>.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_wait_list_unpaid</var>
+   *       </dt>
+   *       <dd>
+   *         This will be <tt>true</tt> if the customer is booked into the wait list and doesn't have to pay.
+   *         Otherwise, this will be <tt>false</tt> if the customer is booking to an active list (or if the wait list booking
+   *         should be paid now).
+   *       </dd>
+   *       <dt>
+   *         string <var>k_id</var>
+   *       </dt>
+   *       <dd>
+   *         The key of the purchase item.
+   *         This won't be empty for new options purchased.
+   *       </dd>
+   *       <dt>
+   *         string <var>k_login_prize</var>
+   *       </dt>
+   *       <dd>
+   *         The key of the customer's prize used to pay for the booking. This won't be empty for bookings made using prizes.
+   *       </dd>
+   *       <dt>
+   *         string <var>k_login_promotion</var>
+   *       </dt>
+   *       <dd>
+   *         The key of the Purchase Option. This won't be empty when using a Purchase Option that's already been purchased.
+   *       </dd>
+   *       <dt>
+   *         string <var>k_resource</var>
+   *       </dt>
+   *       <dd>
+   *         The key of the asset booking.
+   *         This is only used for asset bookings.
+   *       </dd>
+   *       <dt>
+   *         string <var>k_service</var>
+   *       </dt>
+   *       <dd>
+   *         The key of the appointment booking service.
+   *         This is only used for appointment bookings.
+   *       </dd>
+   *       <dt>
+   *         string <var>s_signature</var>
+   *       </dt>
+   *       <dd>
+   *         The signature for the Purchase Option contract.
+   *         The data is returned from the canvas HTML element or the signature pad.
+   *         This won't be empty if the Purchase Option requires contract signing.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     int <var>id_class_tab</var>
+   *   </dt>
+   *   <dd>
+   *     The "Book now" tab. One of the {@link TabSid} constants.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_tip_appointment</var>
+   *   </dt>
+   *   <dd>
+   *     The tips amount.
+   *   </dd>
+   * </dl>
+   *
+   * Set this field value for GET requests.
+   *
+   * @get get
+   * @var array
+   */
+  public $a_book_data = [];
+
+  /**
+   * A copy of {@link PaymentMultipleModel::$a_book_data}.
+   *
+   * Set this field value for POST requests.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_book_data_post = [];
+
+  /**
+   * The list of redeemed prizes.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_login_prize = [];
+
+  /**
+   * The payment type for the appointment. One of the {@link WlAppointmentPaySid} constants.
+   *
+   * @post result
+   * @var int[]
+   */
+  public $a_pay;
+
+  /**
+   * A list of payment sources to pay with.
+   *
+   * Each element has next keys:
+   * <dl>
+   *   <dt>
+   *     array [<var>a_pay_card</var>]
+   *   </dt>
+   *   <dd>
+   *     The payment card information:
+   *     <dl>
+   *       <dt>
+   *         array <var>a_pay_address</var>
+   *       </dt>
+   *       <dd>
+   *         The payment address:
+   *         <dl>
+   *           <dt>boolean <var>is_new</var></dt>
+   *           <dd>Set this value to <tt>1</tt> to add a new payment address or to <tt>0</tt> to use a saved payment address.</dd>
+   *           <dt>string [<var>k_geo_country</var>]</dt>
+   *           <dd>The key of the country used for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>k_geo_region</var>]</dt>
+   *           <dd>The key of the region for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>k_pay_address</var>]</dt>
+   *           <dd>The key of the saved payment address. Specify this to use a saved address.</dd>
+   *           <dt>string [<var>s_city</var>]</dt>
+   *           <dd>The city used for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_name</var>]</dt>
+   *           <dd>The card name. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_phone</var>]</dt>
+   *           <dd>The payment phone. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_postal</var>]</dt>
+   *           <dd>The postal code for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_street1</var>]</dt>
+   *           <dd>The payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_street2</var>]</dt>
+   *           <dd>The optional payment address. Specify this to add a new address.</dd>
+   *         </dl>
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_csc</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card CSC. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_month</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card expiration month. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_year</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card expiration year. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         boolean <var>is_new</var>
+   *       </dt>
+   *       <dd>
+   *         Specify <tt>1</tt> to add a new card, or <tt>0</tt> to use a saved card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>k_pay_bank</var>]
+   *       </dt>
+   *       <dd>
+   *         The key of the credit card. Specify this to use saved card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_comment</var>]
+   *       </dt>
+   *       <dd>
+   *         Optional comment(s). Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_number</var>]
+   *       </dt>
+   *       <dd>
+   *         The card number. Specify this to add a new card.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>f_amount</var>
+   *   </dt>
+   *   <dd>
+   *     The amount of money to withdraw with this payment source.
+   *   </dd>
+   *   <dt>
+   *     boolean [<var>is_hide</var>]
+   *   </dt>
+   *   <dd>
+   *     Determines whether this payment method is hidden.
+   *   </dd>
+   *   <dt>
+   *     boolean [<var>is_success</var>=<tt>false</tt>]
+   *   </dt>
+   *   <dd>
+   *     Identifies whether this source was successfully charged.
+   *   </dd>
+   *   <dt>
+   *     string [<var>m_surcharge</var>]
+   *   </dt>
+   *   <dd>
+   *     The client-side calculated surcharge.
+   *   </dd>
+   *   <dt>
+   *     string [<var>s_index</var>]
+   *   </dt>
+   *   <dd>
+   *     The index of this form (optional).
+   *   </dd>
+   *   <dt>
+   *     string <var>sid_pay_method</var>
+   *   </dt>
+   *   <dd>
+   *     The payment method ID.
+   *   </dd>
+   * </dl>
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_pay_form = [];
+
+  /**
+   * Information about the selected login promotion.
+   *
+   * <dl>
+   *   <dt>
+   *     int <var>i_limit</var>
+   *   </dt>
+   *   <dd>
+   *      The visit count limit of the promotion.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_remain</var>
+   *   </dt>
+   *   <dd>
+   *     The count of remaining visits.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_expire</var>
+   *   </dt>
+   *   <dd>
+   *     The expiration date.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_title</var>
+   *   </dt>
+   *   <dd>
+   *     The title of the promotion.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_promotion_data;
+
+  /**
+   * Fields refer to strings in the format <tt>id_purchase_item-k_id</tt>. Values refer to an array with the next stricture:
+   * <dl>
+   *   <dt>
+   *     array <var>a_tax</var>
+   *   </dt>
+   *   <dd>
+   *     A list of taxes to apply containing information about taxes.
+   *     The array keys are <tt>k_tax</tt> keys. Each element contains the following fields:
+   *     <dl>
+   *       <dt>
+   *         float <var>m_tax</var>
+   *       </dt>
+   *       <dd>
+   *         The tax rate.
+   *       </dd>
+   *       <dt>
+   *         string <var>text_title</var>
+   *       </dt>
+   *       <dd>
+   *         The name of the tax.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>id_purchase_item</var>
+   *   </dt>
+   *   <dd>
+   *     The purchase item ID. One of the {@link WlPurchaseItemSid} constants.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_id</var>
+   *   </dt>
+   *   <dd>
+   *     The value of the discount used for the purchase.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_discount</var>
+   *   </dt>
+   *   <dd>
+   *     The value of the discount used for the purchase.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_pay</var>
+   *   </dt>
+   *   <dd>
+   *     The payment for the promotion (or single visit) without taxes.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_price</var>
+   *   </dt>
+   *   <dd>
+   *     The price of the promotion (or single visit).
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_purchase;
+
+  /**
+   * The keys of purchased items.
+   *
+   * The first level of the array is the list of appointments from the batch.
+   * The second level of the array is the list of items purchased for this appointment.
+   *
+   * @post result
+   * @var string[][]|null
+   */
+  public $a_purchase_item;
+
+  /**
+   * The list of quiz response keys.
+   * Keys refer to quiz keys.
+   * And values refer to response keys.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_quiz_response = [];
+
+  /**
+   * The list of amounts to pay for appointments from the batch, with taxes and without surcharges.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_total;
+
+  /**
+   * List of user keys to book appointments.
+   * There may be empty values in this list, which means that this is a walk-in.
+   *
+   * @get get
+   * @post get
+   * @var string[]
+   */
+  public $a_uid = [];
+
+  /**
+   * The ID of the source mode. One of the {@link ModeSid} constants.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * If `true`, the client is a walk-in. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_walk_in = false;
+
+  /**
+   * Location to show available appointment booking schedule.
+   *
+   * @get get,result
+   * @post get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * Key of the activity for the purchase made. This will be empty if no purchase has been made.
+   *
+   * @post result
+   * @var string
+   */
+  public $k_login_activity_purchase;
+
+  /**
+   * The gift card amount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_coupon;
+
+  /**
+   * The discount amount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount;
+
+  /**
+   * The surcharge amount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_surcharge;
+
+  /**
+   * The amount of tax to pay.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_tax;
+
+  /**
+   * The price of the service, with taxes and without surcharges.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_total;
+
+  /**
+   * The gift card code.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $text_coupon_code = '';
+
+  /**
+   * The discount code.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $text_discount_code = '';
+
+  /**
+   * The user key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
index 2f90bbb6..730712ac 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
@@ -1,418 +1,418 @@
-<?php
-
-namespace WellnessLiving\Wl\Appointment\Book\Payment;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
-use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-use WellnessLiving\Wl\Service\ServicePriceSid;
-
-/**
- * Sends payments for an appointment booking.
- *
- * This endpoint using captcha check.
- * To pass captcha need study the documentation by captcha API, there you will find that you need to send a captcha for a specific action.
- * For this API an action is {@link BusinessPaymentCaptcha::CID}.
- */
-class PaymentPostModel extends WlModelAbstract
-{
-  /**
-   * Information detailing an appointment booking.
-   * Same as {@link PaymentModel::$a_book_data}.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_book_data = [];
-
-  /**
-   * A list of payment sources to pay with.
-   *
-   * Each element has next keys:
-   * <dl>
-   *   <dt>
-   *     array [<var>a_pay_card</var>]
-   *   </dt>
-   *   <dd>
-   *     The payment card information:
-   *     <dl>
-   *       <dt>
-   *         array <var>a_pay_address</var>
-   *       </dt>
-   *       <dd>
-   *         The payment address:
-   *         <dl>
-   *           <dt>boolean <var>is_new</var></dt>
-   *           <dd>Set this value to <tt>1</tt> to add a new payment address or to <tt>0</tt> to use a saved payment address.</dd>
-   *           <dt>string [<var>k_geo_country</var>]</dt>
-   *           <dd>The key of the country used for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>k_geo_region</var>]</dt>
-   *           <dd>The key of the region for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>k_pay_address</var>]</dt>
-   *           <dd>The key of the saved payment address. Specify this to use a saved address.</dd>
-   *           <dt>string [<var>s_city</var>]</dt>
-   *           <dd>The city used for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_name</var>]</dt>
-   *           <dd>The card name. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_phone</var>]</dt>
-   *           <dd>The payment phone. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_postal</var>]</dt>
-   *           <dd>The postal code for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_street1</var>]</dt>
-   *           <dd>The payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_street2</var>]</dt>
-   *           <dd>The optional payment address. Specify this to add a new address.</dd>
-   *         </dl>
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_csc</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card CSC. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_month</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card expiration month. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_year</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card expiration year. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         boolean <var>is_new</var>
-   *       </dt>
-   *       <dd>
-   *         Specify <tt>1</tt> to add a new card, or <tt>0</tt> to use a saved card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>k_pay_bank</var>]
-   *       </dt>
-   *       <dd>
-   *         The key of the credit card. Specify this to use saved card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_comment</var>]
-   *       </dt>
-   *       <dd>
-   *         Optional comment(s). Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_number</var>]
-   *       </dt>
-   *       <dd>
-   *         The card number. Specify this to add a new card.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>f_amount</var>
-   *   </dt>
-   *   <dd>
-   *     The amount of money to withdraw with this payment source.
-   *   </dd>
-   *   <dt>
-   *     boolean [<var>is_hide</var>]
-   *   </dt>
-   *   <dd>
-   *     Determines whether this payment method is hidden.
-   *   </dd>
-   *   <dt>
-   *     boolean [<var>is_success</var>=<tt>false</tt>]
-   *   </dt>
-   *   <dd>
-   *     Identifies whether this source was successfully charged.
-   *   </dd>
-   *   <dt>
-   *     string [<var>m_surcharge</var>]
-   *   </dt>
-   *   <dd>
-   *     The client-side calculated surcharge.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_index</var>]
-   *   </dt>
-   *   <dd>
-   *     The index of this form (optional).
-   *   </dd>
-   *   <dt>
-   *     string <var>sid_pay_method</var>
-   *   </dt>
-   *   <dd>
-   *     The payment method ID.
-   *   </dd>
-   * </dl>
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_pay_form = [];
-
-  /**
-   * Information about selected Purchase Options.
-   * <dl>
-   *   <dt>string <var>i_limit</var></dt>
-   *   <dd>The limit of total visits.</dd>
-   *
-   *   <dt>int <var>i_remain</var></dt>
-   *   <dd>The number of remaining visits.</dd>
-   *
-   *   <dt>string <var>s_expire</var></dt>
-   *   <dd>The expiration date.</dd>
-   *
-   *   <dt>string <var>s_title</var></dt>
-   *   <dd>The title of the Purchase Option.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_promotion_data = null;
-
-  /**
-   * Information about selected purchase items.
-   *
-   * Indexes are strings in the format `id_purchase_item-k_id`.
-   *
-   * Values are an array with the following structure:
-   *
-   * <dl>
-   *   <dt>array <var>a_tax</var></dt>
-   *   <dd>
-   *     Contains information about taxes in the following format. A list of taxes to apply.
-   *     The array keys are `k_tax` keys. Each element contains the following fields: <dl>
-   *       <dt>float <var>m_tax</var></dt>
-   *       <dd>The tax rate.</dd>
-   *
-   *       <dt>string <var>text_title</var></dt>
-   *       <dd>The name of the tax.</dd>
-   *     </dl>
-   *   </dd>
-   *
-   *   <dt>string <var>id_purchase_item</var></dt>
-   *   <dd>The purchase item ID. A constant of {@link WlPurchaseItemSid}.</dd>
-   *
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>The value of the discount used for the purchase.</dd>
-   *
-   *   <dt>string <var>m_discount</var></dt>
-   *   <dd>The value of the discount used for the purchase.</dd>
-   *
-   *   <dt>string <var>m_pay</var></dt>
-   *   <dd>The payment for the Purchase Option or single visit without taxes.</dd>
-   *
-   *   <dt>string <var>m_price</var></dt>
-   *   <dd>The price of the Purchase Option or single visit.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_purchase = null;
-
-  /**
-   * The purchase item keys from the database.
-   *
-   * This will be `null` if not set yet.
-   *
-   * @post result
-   * @var string[]|null
-   */
-  public $a_purchase_item = null;
-
-  /**
-   * List of quiz response keys.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_quiz_response = [];
-
-  /**
-   * List of user keys to book appointments.
-   * There may be empty values in this list, which means that this is a walk-in.
-   *
-   * @get get
-   * @post get
-   * @var string[]
-   */
-  public $a_uid = [];
-
-  /**
-   * The key of source mode. A constant of {@link ModeSid}.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * The payment type for the appointment. A constant of {@link WlAppointmentPaySid}.
-   *
-   * @post result
-   * @var int
-   */
-  public $id_pay = null;
-
-  /**
-   * The purchase item ID. A constant of {@link WlPurchaseItemSid}.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_purchase_item = 0;
-
-  /**
-   * If `true`, the client is a walk-in. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @post get
-   * @var bool
-   */
-  public $is_walk_in = false;
-
-  /**
-   * The item key. Depends of {@link PaymentModel::$id_purchase_item} property.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_id = '0';
-
-  /**
-   * Location to show available appointment booking schedule.
-   *
-   * @get get,result
-   * @post get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * The key of activity of the purchase made.
-   * Empty if no purchase has been made.
-   *
-   * @post result
-   * @var string
-   */
-  public $k_login_activity_purchase = null;
-
-  /**
-   * Login prize key. In case when appointment paid by reward prize, there is the key of redeemed login prize. Empty otherwise.
-   *
-   * @post result
-   * @var string
-   */
-  public $k_login_prize = '0';
-
-  /**
-   * The login promotion key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_login_promotion = '0';
-
-  /**
-   * Session pass key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_session_pass = '0';
-
-  /**
-   * Gift card amount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_coupon = '0.00';
-
-  /**
-   * Discount amount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount = '0.00';
-
-  /**
-   * Surcharge amount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_surcharge = '0.00';
-
-  /**
-   * The tax of service.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_tax = '0.00';
-
-  /**
-   * The total cost of the purchase.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_total = null;
-
-  /**
-   * Variable price. Is set only during booking an appointment with variable type of the price
-   *   {@link ServicePriceSid::VARIES} from spa backend {@link ModeSid::SPA_BACKEND}.
-   *
-   * @get get
-   * @var string
-   */
-  public $m_variable_price = '';
-
-  /**
-   * Service unique key.
-   * Used for model cache.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_unique_key = '';
-
-  /**
-   * Gift card code.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $text_coupon_code = '';
-
-  /**
-   * The discount code to be applied to the purchase.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $text_discount_code = '';
-
-  /**
-   * The user key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Appointment\Book\Payment;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
+use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+use WellnessLiving\Wl\Service\ServicePriceSid;
+
+/**
+ * Sends payments for an appointment booking.
+ *
+ * This endpoint using captcha check.
+ * To pass captcha need study the documentation by captcha API, there you will find that you need to send a captcha for a specific action.
+ * For this API an action is {@link BusinessPaymentCaptcha::CID}.
+ */
+class PaymentPostModel extends WlModelAbstract
+{
+  /**
+   * Information detailing an appointment booking.
+   * Same as {@link PaymentModel::$a_book_data}.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_book_data = [];
+
+  /**
+   * A list of payment sources to pay with.
+   *
+   * Each element has next keys:
+   * <dl>
+   *   <dt>
+   *     array [<var>a_pay_card</var>]
+   *   </dt>
+   *   <dd>
+   *     The payment card information:
+   *     <dl>
+   *       <dt>
+   *         array <var>a_pay_address</var>
+   *       </dt>
+   *       <dd>
+   *         The payment address:
+   *         <dl>
+   *           <dt>boolean <var>is_new</var></dt>
+   *           <dd>Set this value to <tt>1</tt> to add a new payment address or to <tt>0</tt> to use a saved payment address.</dd>
+   *           <dt>string [<var>k_geo_country</var>]</dt>
+   *           <dd>The key of the country used for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>k_geo_region</var>]</dt>
+   *           <dd>The key of the region for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>k_pay_address</var>]</dt>
+   *           <dd>The key of the saved payment address. Specify this to use a saved address.</dd>
+   *           <dt>string [<var>s_city</var>]</dt>
+   *           <dd>The city used for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_name</var>]</dt>
+   *           <dd>The card name. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_phone</var>]</dt>
+   *           <dd>The payment phone. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_postal</var>]</dt>
+   *           <dd>The postal code for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_street1</var>]</dt>
+   *           <dd>The payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_street2</var>]</dt>
+   *           <dd>The optional payment address. Specify this to add a new address.</dd>
+   *         </dl>
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_csc</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card CSC. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_month</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card expiration month. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_year</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card expiration year. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         boolean <var>is_new</var>
+   *       </dt>
+   *       <dd>
+   *         Specify <tt>1</tt> to add a new card, or <tt>0</tt> to use a saved card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>k_pay_bank</var>]
+   *       </dt>
+   *       <dd>
+   *         The key of the credit card. Specify this to use saved card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_comment</var>]
+   *       </dt>
+   *       <dd>
+   *         Optional comment(s). Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_number</var>]
+   *       </dt>
+   *       <dd>
+   *         The card number. Specify this to add a new card.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>f_amount</var>
+   *   </dt>
+   *   <dd>
+   *     The amount of money to withdraw with this payment source.
+   *   </dd>
+   *   <dt>
+   *     boolean [<var>is_hide</var>]
+   *   </dt>
+   *   <dd>
+   *     Determines whether this payment method is hidden.
+   *   </dd>
+   *   <dt>
+   *     boolean [<var>is_success</var>=<tt>false</tt>]
+   *   </dt>
+   *   <dd>
+   *     Identifies whether this source was successfully charged.
+   *   </dd>
+   *   <dt>
+   *     string [<var>m_surcharge</var>]
+   *   </dt>
+   *   <dd>
+   *     The client-side calculated surcharge.
+   *   </dd>
+   *   <dt>
+   *     string [<var>s_index</var>]
+   *   </dt>
+   *   <dd>
+   *     The index of this form (optional).
+   *   </dd>
+   *   <dt>
+   *     string <var>sid_pay_method</var>
+   *   </dt>
+   *   <dd>
+   *     The payment method ID.
+   *   </dd>
+   * </dl>
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_pay_form = [];
+
+  /**
+   * Information about selected Purchase Options.
+   * <dl>
+   *   <dt>string <var>i_limit</var></dt>
+   *   <dd>The limit of total visits.</dd>
+   *
+   *   <dt>int <var>i_remain</var></dt>
+   *   <dd>The number of remaining visits.</dd>
+   *
+   *   <dt>string <var>s_expire</var></dt>
+   *   <dd>The expiration date.</dd>
+   *
+   *   <dt>string <var>s_title</var></dt>
+   *   <dd>The title of the Purchase Option.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_promotion_data = null;
+
+  /**
+   * Information about selected purchase items.
+   *
+   * Indexes are strings in the format `id_purchase_item-k_id`.
+   *
+   * Values are an array with the following structure:
+   *
+   * <dl>
+   *   <dt>array <var>a_tax</var></dt>
+   *   <dd>
+   *     Contains information about taxes in the following format. A list of taxes to apply.
+   *     The array keys are `k_tax` keys. Each element contains the following fields: <dl>
+   *       <dt>float <var>m_tax</var></dt>
+   *       <dd>The tax rate.</dd>
+   *
+   *       <dt>string <var>text_title</var></dt>
+   *       <dd>The name of the tax.</dd>
+   *     </dl>
+   *   </dd>
+   *
+   *   <dt>string <var>id_purchase_item</var></dt>
+   *   <dd>The purchase item ID. A constant of {@link WlPurchaseItemSid}.</dd>
+   *
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The value of the discount used for the purchase.</dd>
+   *
+   *   <dt>string <var>m_discount</var></dt>
+   *   <dd>The value of the discount used for the purchase.</dd>
+   *
+   *   <dt>string <var>m_pay</var></dt>
+   *   <dd>The payment for the Purchase Option or single visit without taxes.</dd>
+   *
+   *   <dt>string <var>m_price</var></dt>
+   *   <dd>The price of the Purchase Option or single visit.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_purchase = null;
+
+  /**
+   * The purchase item keys from the database.
+   *
+   * This will be `null` if not set yet.
+   *
+   * @post result
+   * @var string[]|null
+   */
+  public $a_purchase_item = null;
+
+  /**
+   * List of quiz response keys.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_quiz_response = [];
+
+  /**
+   * List of user keys to book appointments.
+   * There may be empty values in this list, which means that this is a walk-in.
+   *
+   * @get get
+   * @post get
+   * @var string[]
+   */
+  public $a_uid = [];
+
+  /**
+   * The key of source mode. A constant of {@link ModeSid}.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * The payment type for the appointment. A constant of {@link WlAppointmentPaySid}.
+   *
+   * @post result
+   * @var int
+   */
+  public $id_pay = null;
+
+  /**
+   * The purchase item ID. A constant of {@link WlPurchaseItemSid}.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_purchase_item = 0;
+
+  /**
+   * If `true`, the client is a walk-in. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_walk_in = false;
+
+  /**
+   * The item key. Depends of {@link PaymentModel::$id_purchase_item} property.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_id = '0';
+
+  /**
+   * Location to show available appointment booking schedule.
+   *
+   * @get get,result
+   * @post get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * The key of activity of the purchase made.
+   * Empty if no purchase has been made.
+   *
+   * @post result
+   * @var string
+   */
+  public $k_login_activity_purchase = null;
+
+  /**
+   * Login prize key. In case when appointment paid by reward prize, there is the key of redeemed login prize. Empty otherwise.
+   *
+   * @post result
+   * @var string
+   */
+  public $k_login_prize = '0';
+
+  /**
+   * The login promotion key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_login_promotion = '0';
+
+  /**
+   * Session pass key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_session_pass = '0';
+
+  /**
+   * Gift card amount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_coupon = '0.00';
+
+  /**
+   * Discount amount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount = '0.00';
+
+  /**
+   * Surcharge amount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_surcharge = '0.00';
+
+  /**
+   * The tax of service.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_tax = '0.00';
+
+  /**
+   * The total cost of the purchase.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_total = null;
+
+  /**
+   * Variable price. Is set only during booking an appointment with variable type of the price
+   *   {@link ServicePriceSid::VARIES} from spa backend {@link ModeSid::SPA_BACKEND}.
+   *
+   * @get get
+   * @var string
+   */
+  public $m_variable_price = '';
+
+  /**
+   * Service unique key.
+   * Used for model cache.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_unique_key = '';
+
+  /**
+   * Gift card code.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $text_coupon_code = '';
+
+  /**
+   * The discount code to be applied to the purchase.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $text_discount_code = '';
+
+  /**
+   * The user key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
index 2b89b021..8cef93cb 100644
--- a/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
@@ -497,14 +497,6 @@ class PurchaseModel extends WlModelAbstract
    */
   public $i_width = 0;
 
-    /**
-     * The mode type. One of the {@link ModeSid} constants.
-     *
-     * @get get
-     * @var int
-     */
-    public $id_mode = 0;
-
   /**
    * The mode type. One of the {@link ModeSid} constants.
    *
diff --git a/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php b/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
index dc463c14..0b03e231 100644
--- a/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
@@ -1,393 +1,393 @@
-<?php
-
-namespace WellnessLiving\Wl\Appointment\Book\Service;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Service\ServiceBookFlowSid;
-use WellnessLiving\Wl\Service\ServicePriceSid;
-use WellnessLiving\Wl\Service\ServiceRequireSid;
-
-/**
- * Retrieves information about services in the current service category.
- *
- * This is a new version of the {@link ServiceListModel} endpoint.
- * It allows for filtering a list of services by multiple book now tabs.
- */
-class ServiceList52Model extends WlModelAbstract
-{
-  /**
-   * The class tab key to use to filter services. If empty, this can be found on the standard book tab.
-   *
-   * If multiple tabs are sent, appointment types, which are in at least in one of the tabs, will be in the result.
-   *
-   * @get get
-   * @var string[]
-   */
-  public $a_class_tab = [];
-
-  /**
-   * A list of services with information about them.
-   *
-   * <b>Key</b> - the service key.
-   * <b>Value</b> - an array, with every element consisting of the next keys:
-   * <dl>
-   *   <dt>
-   *     array <var>a_class_tab</var>
-   *   </dt>
-   *   <dd>
-   *     The list of tab keys for the service.
-   *   </dd>
-   *   <dt>
-   *     array[] <var>a_direct_link</var>
-   *   </dt>
-   *   <dd>
-   *     A list of links to start booking from a direct link.
-   *     This can't be one link, as the same appointment can be available in several booking tabs.
-   *     Therefore, each booking tab has its own direct booking link.
-   *     Each element has two values:
-   *     <dl>
-   *       <dt>string <var>k_class_tab</var></dt>
-   *       <dd>The key of the book now tab.</dd>
-   *       <dt>string <var>url_tab</var></dt>
-   *       <dd>The booking URL. This will open the booking wizard under the related booking tab.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     array <var>a_config</var>
-   *   </dt>
-   *   <dd>
-   *     Appointment-specific business policies. This will be `null` when using the general business policy.
-   *   </dd>
-   *   <dt>
-   *     array <var>a_image</var>
-   *   </dt>
-   *   <dd>
-   *     Information about the appointment image. An array with the following values:
-   *     <dl>
-   *       <dt>int <var>i_height</var></dt>
-   *       <dd>The height of the image.</dd>
-   *       <dt>int <var>i_width</var></dt>
-   *       <dd>The width of the image.</dd>
-   *       <dt>bool <var>is_empty</var></dt>
-   *       <dd>This will be `true` if the image is not set.</dd>
-   *       <dt>string <var>k_service</var></dt>
-   *       <dd>The service key.</dd>
-   *       <dt>string <var>s_service</var></dt>
-   *       <dd>The name of the service.</dd>
-   *       <dt>string <var>s_url</var></dt>
-   *       <dd>The URL to the image.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string[] <var>a_login_type_restriction</var>
-   *   </dt>
-   *   <dd>
-   *     List of login type titles for current service.
-   *     Clients that have one of these types can book service.
-   *   </dd>
-   *   <dt>
-   *     string[] <var>a_member_group_restriction</var>
-   *   </dt>
-   *   <dd>
-   *     List of member groups titles for current service.
-   *     Clients that belongs to these groups can book service.
-   *   </dd>
-   *   <dt>
-   *     string <var>f_deposit</var>
-   *   </dt>
-   *   <dd>
-   *     The amount of deposit required.
-   *   </dd>
-   *   <dt>
-   *     string <var>f_offline_max</var>
-   *   </dt>
-   *   <dd>
-   *     The maximum offline price.
-   *   </dd>
-   *   <dt>
-   *     string <var>f_offline_min</var>
-   *   </dt>
-   *   <dd>
-   *     The minimum offline price.
-   *   </dd>
-   *   <dt>
-   *     string <var>f_online</var>
-   *   </dt>
-   *   <dd>
-   *     The online price.
-   *   </dd>
-   *   <dt>
-   *     bool <var>hide_application</var>
-   *   </dt>
-   *   <dd>
-   *      Determines whether the service will be hidden in the White Label mobile application.
-   *      `true` means that service won't be displayed. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_age_from</var>
-   *   </dt>
-   *   <dd>
-   *     The required minimum client age to book an appointment.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_age_to</var>
-   *   </dt>
-   *   <dd>
-   *     The required maximum client age to book an appointment.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_price</var>
-   *   </dt>
-   *   <dd>
-   *     The price type ID. One of {@link ServicePriceSid} constants.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The appointment duration in minutes.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_book_flow</var>
-   *   </dt>
-   *   <dd>
-   *     The type of client booking flow. One of {@link ServiceBookFlowSid} constants.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_service_require</var>
-   *   </dt>
-   *   <dd>
-   *     The required payment type ID. One of {@link ServiceRequireSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_age_public</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if age restrictions are public. Otherwise, `false` if they should be hidden from clients.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_age_restricted</var>
-   *   </dt>
-   *   <dd>
-   *     Determines whether this service can't be booked due to age restrictions.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_back_to_back</var>
-   *   </dt>
-   *   <dd>
-   *      Determines whether this service supports back-to-back booking.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_bookable</var>
-   *   </dt>
-   *   <dd>
-   *     Whether this appointment can be booked online.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_book_repeat_client</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if clients can book classes and appointments on a recurring basis. Otherwise, this `false`.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_deposit_percent</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if <var>f_deposit</var> is a percentage. Otherwise, this will be `false` if <var>f_deposit</var> is an amount of
-   *     money.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_gender_select</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if clients can select the staff member's gender. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_online_sell</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if clients can buy this appointment. Otherwise, this will be `false` if only staff members can sell it.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_resource_type</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if the service requires assets. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_single_buy</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if the appointment can be booked without a Purchase Option. Otherwise, this will be `false` if it's necessary to
-   *     buy a Purchase Option.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_staff_confirm</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if the appointment must be confirmed by a staff member after booking. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_staff_skip</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if clients can select a staff member for the appointment. Otherwise, this will be `false` if otherwise.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_question</var>
-   *   </dt>
-   *   <dd>
-   *     Determines whether the service will ask for questions or not.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_virtual</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if the service is virtual. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_service</var>
-   *   </dt>
-   *   <dd>
-   *     The appointment primary key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_service_category</var>
-   *   </dt>
-   *   <dd>
-   *     The service category primary key.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The appointment duration in a human-readable format.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_service</var>
-   *   </dt>
-   *   <dd>
-   *     The appointment title.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_age_restriction</var>
-   *   </dt>
-   *   <dd>
-   *     Age restriction header.
-   *   </dd>
-   *   <dt>
-   *     string <var>xml_description</var>
-   *   </dt>
-   *   <dd>
-   *     Appointment description (deprecated, use `html_description`).
-   *   </dd>
-   *   <dt>
-   *     string <var>xml_description_short</var>
-   *   </dt>
-   *   <dd>
-   *     Appointment short description (deprecated, use `html_description_short`).
-   *   </dd>
-   *   <dt>
-   *     string <var>xml_special</var>
-   *   </dt>
-   *   <dd>
-   *      Special instructions (deprecated, use `html_special`).
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_service;
-
-  /**
-   * List of user keys to book appointments.
-   * There may be empty values in this list, which means that this is a walk-in.
-   *
-   * @get get
-   * @post get
-   * @var string[]
-   */
-  public $a_uid = [];
-
-  /**
-   * Image height in pixels. Please specify this value if you need image to be returned in specific size.
-   * In case this value is not specified returned image will have default thumbnail size.
-   *
-   * @get get
-   * @var int|null
-   */
-  public $i_height = 0;
-
-  /**
-   * Image width in pixels. Please specify this value if you need image to be returned in specific size.
-   * In case this value is not specified returned image will have default thumbnail size.
-   *
-   * @get get
-   * @var int|null
-   */
-  public $i_width = 0;
-
-  /**
-   * `true` - return all active services for a certain location.
-   * `false` - return only services that are associated with a book now tab.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_backend = false;
-
-  /**
-   * Whether services allow multiple appointment booking.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_multiple_booking;
-
-  /**
-   * `true` - search in all tabs.
-   * `false` - search only on the selected book now tab.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_tab_all = false;
-
-  /**
-   * If `true`, the client is a walk-in. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @post get
-   * @var bool
-   */
-  public $is_walk_in = false;
-
-  /**
-   * Location to show available appointment booking schedule.
-   *
-   * @get get,result
-   * @post get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * The key of a service category to show information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_service_category = '0';
-
-  /**
-   * The user key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Appointment\Book\Service;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Service\ServiceBookFlowSid;
+use WellnessLiving\Wl\Service\ServicePriceSid;
+use WellnessLiving\Wl\Service\ServiceRequireSid;
+
+/**
+ * Retrieves information about services in the current service category.
+ *
+ * This is a new version of the {@link ServiceListModel} endpoint.
+ * It allows for filtering a list of services by multiple book now tabs.
+ */
+class ServiceList52Model extends WlModelAbstract
+{
+  /**
+   * The class tab key to use to filter services. If empty, this can be found on the standard book tab.
+   *
+   * If multiple tabs are sent, appointment types, which are in at least in one of the tabs, will be in the result.
+   *
+   * @get get
+   * @var string[]
+   */
+  public $a_class_tab = [];
+
+  /**
+   * A list of services with information about them.
+   *
+   * <b>Key</b> - the service key.
+   * <b>Value</b> - an array, with every element consisting of the next keys:
+   * <dl>
+   *   <dt>
+   *     array <var>a_class_tab</var>
+   *   </dt>
+   *   <dd>
+   *     The list of tab keys for the service.
+   *   </dd>
+   *   <dt>
+   *     array[] <var>a_direct_link</var>
+   *   </dt>
+   *   <dd>
+   *     A list of links to start booking from a direct link.
+   *     This can't be one link, as the same appointment can be available in several booking tabs.
+   *     Therefore, each booking tab has its own direct booking link.
+   *     Each element has two values:
+   *     <dl>
+   *       <dt>string <var>k_class_tab</var></dt>
+   *       <dd>The key of the book now tab.</dd>
+   *       <dt>string <var>url_tab</var></dt>
+   *       <dd>The booking URL. This will open the booking wizard under the related booking tab.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     array <var>a_config</var>
+   *   </dt>
+   *   <dd>
+   *     Appointment-specific business policies. This will be `null` when using the general business policy.
+   *   </dd>
+   *   <dt>
+   *     array <var>a_image</var>
+   *   </dt>
+   *   <dd>
+   *     Information about the appointment image. An array with the following values:
+   *     <dl>
+   *       <dt>int <var>i_height</var></dt>
+   *       <dd>The height of the image.</dd>
+   *       <dt>int <var>i_width</var></dt>
+   *       <dd>The width of the image.</dd>
+   *       <dt>bool <var>is_empty</var></dt>
+   *       <dd>This will be `true` if the image is not set.</dd>
+   *       <dt>string <var>k_service</var></dt>
+   *       <dd>The service key.</dd>
+   *       <dt>string <var>s_service</var></dt>
+   *       <dd>The name of the service.</dd>
+   *       <dt>string <var>s_url</var></dt>
+   *       <dd>The URL to the image.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_login_type_restriction</var>
+   *   </dt>
+   *   <dd>
+   *     List of login type titles for current service.
+   *     Clients that have one of these types can book service.
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_member_group_restriction</var>
+   *   </dt>
+   *   <dd>
+   *     List of member groups titles for current service.
+   *     Clients that belongs to these groups can book service.
+   *   </dd>
+   *   <dt>
+   *     string <var>f_deposit</var>
+   *   </dt>
+   *   <dd>
+   *     The amount of deposit required.
+   *   </dd>
+   *   <dt>
+   *     string <var>f_offline_max</var>
+   *   </dt>
+   *   <dd>
+   *     The maximum offline price.
+   *   </dd>
+   *   <dt>
+   *     string <var>f_offline_min</var>
+   *   </dt>
+   *   <dd>
+   *     The minimum offline price.
+   *   </dd>
+   *   <dt>
+   *     string <var>f_online</var>
+   *   </dt>
+   *   <dd>
+   *     The online price.
+   *   </dd>
+   *   <dt>
+   *     bool <var>hide_application</var>
+   *   </dt>
+   *   <dd>
+   *      Determines whether the service will be hidden in the White Label mobile application.
+   *      `true` means that service won't be displayed. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_age_from</var>
+   *   </dt>
+   *   <dd>
+   *     The required minimum client age to book an appointment.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_age_to</var>
+   *   </dt>
+   *   <dd>
+   *     The required maximum client age to book an appointment.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_price</var>
+   *   </dt>
+   *   <dd>
+   *     The price type ID. One of {@link ServicePriceSid} constants.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The appointment duration in minutes.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_book_flow</var>
+   *   </dt>
+   *   <dd>
+   *     The type of client booking flow. One of {@link ServiceBookFlowSid} constants.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_service_require</var>
+   *   </dt>
+   *   <dd>
+   *     The required payment type ID. One of {@link ServiceRequireSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_age_public</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if age restrictions are public. Otherwise, `false` if they should be hidden from clients.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_age_restricted</var>
+   *   </dt>
+   *   <dd>
+   *     Determines whether this service can't be booked due to age restrictions.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_back_to_back</var>
+   *   </dt>
+   *   <dd>
+   *      Determines whether this service supports back-to-back booking.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_bookable</var>
+   *   </dt>
+   *   <dd>
+   *     Whether this appointment can be booked online.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_book_repeat_client</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if clients can book classes and appointments on a recurring basis. Otherwise, this `false`.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_deposit_percent</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if <var>f_deposit</var> is a percentage. Otherwise, this will be `false` if <var>f_deposit</var> is an amount of
+   *     money.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_gender_select</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if clients can select the staff member's gender. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_online_sell</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if clients can buy this appointment. Otherwise, this will be `false` if only staff members can sell it.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_resource_type</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if the service requires assets. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_single_buy</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if the appointment can be booked without a Purchase Option. Otherwise, this will be `false` if it's necessary to
+   *     buy a Purchase Option.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_staff_confirm</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if the appointment must be confirmed by a staff member after booking. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_staff_skip</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if clients can select a staff member for the appointment. Otherwise, this will be `false` if otherwise.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_question</var>
+   *   </dt>
+   *   <dd>
+   *     Determines whether the service will ask for questions or not.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_virtual</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if the service is virtual. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_service</var>
+   *   </dt>
+   *   <dd>
+   *     The appointment primary key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_service_category</var>
+   *   </dt>
+   *   <dd>
+   *     The service category primary key.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The appointment duration in a human-readable format.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_service</var>
+   *   </dt>
+   *   <dd>
+   *     The appointment title.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_age_restriction</var>
+   *   </dt>
+   *   <dd>
+   *     Age restriction header.
+   *   </dd>
+   *   <dt>
+   *     string <var>xml_description</var>
+   *   </dt>
+   *   <dd>
+   *     Appointment description (deprecated, use `html_description`).
+   *   </dd>
+   *   <dt>
+   *     string <var>xml_description_short</var>
+   *   </dt>
+   *   <dd>
+   *     Appointment short description (deprecated, use `html_description_short`).
+   *   </dd>
+   *   <dt>
+   *     string <var>xml_special</var>
+   *   </dt>
+   *   <dd>
+   *      Special instructions (deprecated, use `html_special`).
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_service;
+
+  /**
+   * List of user keys to book appointments.
+   * There may be empty values in this list, which means that this is a walk-in.
+   *
+   * @get get
+   * @post get
+   * @var string[]
+   */
+  public $a_uid = [];
+
+  /**
+   * Image height in pixels. Please specify this value if you need image to be returned in specific size.
+   * In case this value is not specified returned image will have default thumbnail size.
+   *
+   * @get get
+   * @var int|null
+   */
+  public $i_height = 0;
+
+  /**
+   * Image width in pixels. Please specify this value if you need image to be returned in specific size.
+   * In case this value is not specified returned image will have default thumbnail size.
+   *
+   * @get get
+   * @var int|null
+   */
+  public $i_width = 0;
+
+  /**
+   * `true` - return all active services for a certain location.
+   * `false` - return only services that are associated with a book now tab.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_backend = false;
+
+  /**
+   * Whether services allow multiple appointment booking.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_multiple_booking;
+
+  /**
+   * `true` - search in all tabs.
+   * `false` - search only on the selected book now tab.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_tab_all = false;
+
+  /**
+   * If `true`, the client is a walk-in. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_walk_in = false;
+
+  /**
+   * Location to show available appointment booking schedule.
+   *
+   * @get get,result
+   * @post get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * The key of a service category to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_service_category = '0';
+
+  /**
+   * The user key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Edit/AddonUpdateModel.php b/WellnessLiving/Wl/Appointment/Edit/AddonUpdateModel.php
index a757a4b6..134092c0 100644
--- a/WellnessLiving/Wl/Appointment/Edit/AddonUpdateModel.php
+++ b/WellnessLiving/Wl/Appointment/Edit/AddonUpdateModel.php
@@ -1,76 +1,76 @@
-<?php
-
-namespace WellnessLiving\Wl\Appointment\Edit;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Updates add-ons for an appointment.
- *
- * This endpoint can be used to update add-ons for existing appointments.
- */
-class AddonUpdateModel extends WlModelAbstract
-{
-  /**
-   * The appointment addon-ons.
-   *
-   * Old format - an array where each value is key of the add-on.
-   * New format - each element is an array: <dl>
-   *   <dt>int <var>i_product</var></dt><dd> The add-on count. Max value is 255.</dd>
-   *   <dt>string <var>k_shop_product_option</var></dt><dd>The add-on key.</dd>
-   * </dl>
-   *
-   * @put post
-   * @var array|array[]
-   */
-  public $a_addon;
-
-  /**
-   * Data to show appointment add-ons:<dl>
-   *   <dt>array[] <var>a_addon</var></dt>
-   *   <dd>Data about appointment add-ons. Each element contains data about a single add-on: <dl>
-   *     <dt>int <var>i_product</var></dt><dd>The add-on's quantity.</dd>
-   *     <dt>string <var>html_amount</var></dt><dd>The add-on's additional amount. This will be an empty string if the add-on doesn't have an additional amount.</dd>
-   *     <dt>string <var>html_duration</var></dt><dd>The add-on's additional duration. This will be an empty string if the add-on doesn't add duration.</dd>
-   *     <dt>string <var>html_title</var></dt><dd>The add-on's name.</dd>
-   *     <dt>int <var>i_count_paid</var></dt><dd>The quantity paid for the add-on.</dd>
-   *     <dt>int <var>i_inventory_current</var></dt><dd>The add-ons inventory count.</dd>
-   *     <dt>bool <var>is_select</var></dt><dd>Determines whether the add-on is added to appointment.</dd>
-   *     <dt>string <var>k_shop_product_option</var></dt><dd>The add-on product key.</dd>
-   *     <dt>string <var>url</var></dt><dd>The URL for the add-on picture. This will be an empty string if the add-on doesn't have a picture.</dd>
-   *   </dl></dd>
-   *   <dt>bool <var>is_search</var></dt><dd>Determines whether the add-on search field needs to be shown.</dd></dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_addon_data;
-
-  /**
-   * Determines whether the appointment duration needs to be updated.
-   *
-   * @put post
-   * @var bool
-   */
-  public $is_duration_update = false;
-
-  /**
-   * The appointment key.
-   *
-   * @get get
-   * @put get
-   * @var string
-   */
-  public $k_appointment;
-
-  /**
-   * The business key. This will be an empty string if not set yet.
-   *
-   * @get get
-   * @put get
-   * @var string
-   */
-  public $k_business = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Appointment\Edit;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Updates add-ons for an appointment.
+ *
+ * This endpoint can be used to update add-ons for existing appointments.
+ */
+class AddonUpdateModel extends WlModelAbstract
+{
+  /**
+   * The appointment addon-ons.
+   *
+   * Old format - an array where each value is key of the add-on.
+   * New format - each element is an array: <dl>
+   *   <dt>int <var>i_product</var></dt><dd> The add-on count. Max value is 255.</dd>
+   *   <dt>string <var>k_shop_product_option</var></dt><dd>The add-on key.</dd>
+   * </dl>
+   *
+   * @put post
+   * @var array|array[]
+   */
+  public $a_addon;
+
+  /**
+   * Data to show appointment add-ons:<dl>
+   *   <dt>array[] <var>a_addon</var></dt>
+   *   <dd>Data about appointment add-ons. Each element contains data about a single add-on: <dl>
+   *     <dt>int <var>i_product</var></dt><dd>The add-on's quantity.</dd>
+   *     <dt>string <var>html_amount</var></dt><dd>The add-on's additional amount. This will be an empty string if the add-on doesn't have an additional amount.</dd>
+   *     <dt>string <var>html_duration</var></dt><dd>The add-on's additional duration. This will be an empty string if the add-on doesn't add duration.</dd>
+   *     <dt>string <var>html_title</var></dt><dd>The add-on's name.</dd>
+   *     <dt>int <var>i_count_paid</var></dt><dd>The quantity paid for the add-on.</dd>
+   *     <dt>int <var>i_inventory_current</var></dt><dd>The add-ons inventory count.</dd>
+   *     <dt>bool <var>is_select</var></dt><dd>Determines whether the add-on is added to appointment.</dd>
+   *     <dt>string <var>k_shop_product_option</var></dt><dd>The add-on product key.</dd>
+   *     <dt>string <var>url</var></dt><dd>The URL for the add-on picture. This will be an empty string if the add-on doesn't have a picture.</dd>
+   *   </dl></dd>
+   *   <dt>bool <var>is_search</var></dt><dd>Determines whether the add-on search field needs to be shown.</dd></dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_addon_data;
+
+  /**
+   * Determines whether the appointment duration needs to be updated.
+   *
+   * @put post
+   * @var bool
+   */
+  public $is_duration_update = false;
+
+  /**
+   * The appointment key.
+   *
+   * @get get
+   * @put get
+   * @var string
+   */
+  public $k_appointment;
+
+  /**
+   * The business key. This will be an empty string if not set yet.
+   *
+   * @get get
+   * @put get
+   * @var string
+   */
+  public $k_business = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Info/Info54Model.php b/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
index 91bf87b4..609ef5b0 100644
--- a/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
@@ -1,629 +1,629 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process\Info;
-
-use WellnessLiving\Core\a\ADateWeekSid;
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Book\Process\ProcessSpaSid;
-use WellnessLiving\Wl\Mode\ModeSid;
-
-/**
- * Offers functionality for the class booking wizard on the "Class and Location" page.
- *
- * When using this endpoint, take into account the {@link ProcessSpaSid::QUIZ} step.
- */
-class Info54Model extends WlModelAbstract
-{
-  /**
-   * Week days available for recurring booking. Constants of {@link ADateWeekSid} class.
-   *
-   * `null` if recurring booking is not available.
-   *
-   * @get result
-   * @var int[]|null
-   */
-  public $a_day_available;
-
-  /**
-   * The keys of users' activity.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_login_activity;
-
-  /**
-   * Information about the recurring booking:
-   * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
-   *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
-   *   </dd>
-   *   <dt>
-   *     string [<var>dl_end</var>]
-   *   </dt>
-   *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_occurrence</var>]
-   *   </dt>
-   *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_period</var>
-   *   </dt>
-   *   <dd>
-   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
-   * </dl>
-   *
-   * This will be `null` if the booking isn't recurring.
-   *
-   * @post post
-   * @var array|null
-   */
-  public $a_repeat = null;
-
-  /**
-   * A list of assets being booked. Every element has the next structure:
-   * <dl>
-   *   <dt>int <var>i_index</var></dt>
-   *   <dd>Order number of the asset (maybe from 1 to asset quantity).</dd>
-   *   <dt>string <var>k_resource</var></dt>
-   *   <dd>The key of asset.</dd>
-   * </dl>
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_resource = [];
-
-  /**
-   * A list of all class sessions that can be booked together. Every element has the next structure:
-   * <dl>
-   *   <dt>
-   *     string[] <var>a_staff</var>
-   *   </dt>
-   *   <dd>
-   *     List of staff names that are leading this session.
-   *   </dd>
-   *   <dt>
-   *     string[] <var>a_virtual_location</var>
-   *   </dt>
-   *   <dd>
-   *     List of virtual locations.
-   *   </dd>
-   *   <dt>
-   *     string <var>dt_date</var>
-   *   </dt>
-   *   <dd>
-   *     The date/time when session starts in MySQL format and in GMT.
-   *   </dd>
-   *   <dt>
-   *     boolean <var>is_select</var>
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> if this session should be selected when page is initialized;
-   *     <tt>false</tt> if otherwise.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_wait</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if client is added to a wait list, `false` - to an active list.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_wait_list_unpaid</var>
-   *   </dt>
-   *   <dd>
-   *     Allow clients to join the wait list unpaid.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_class_period</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the session.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_location</var>
-   *   </dt>
-   *   <dd>
-   *     Location key.
-   *   </dd>
-   *   <dt>
-   *     bool <var>m_price</var>
-   *   </dt>
-   *   <dd>
-   *     Price of the session.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_location</var>
-   *   </dt>
-   *   <dd>
-   *     The name of the location where the session occurred.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_start</var>
-   *   </dt>
-   *   <dd>
-   *     The date/time when the session starts in human-readable format.
-   *     Returned in the time zone of the location.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_duration</var>
-   *   </dt>
-   *   <dd>
-   *     String representation of session duration.
-   *
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_session_all;
-
-  /**
-   * List of sessions that can be paid without new purchases.
-   * Such as previously prepaid or free sessions.
-   *
-   * Each its item has the key of following format: <dl>
-   *   <dt>string <var>dt_date</var>::<var>k_class_period</var></dt><dd>Composite key of the array.</dd>
-   * </dl>
-   * and the value of following structure: <dl>
-   *   <dt>string <var>dt_date</var></dt><dd>Session date.</dd>
-   *   <dt>string <var>k_class_period</var></dt><dd>Class period key for the session.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_session_free;
-
-  /**
-   * The selected sessions.
-   *
-   * <b>Keys</b> - The class period keys.
-   * <b>Values</b> - List of date/time when the session occurred in MySQL format and in GMT.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_session_select = [];
-
-  /**
-   * Selected sessions on the waiting list without pay.
-   *
-   * Keys - session IDs.
-   *
-   * Values - index arrays of dates/time when session is occurred. In MySQL format. In GMT.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_session_wait_list_unpaid = [];
-
-  /**
-   * The staff member conducting the session. Every element has the next structure:
-   * <dl>
-   *   <dt>
-   *     array <var>a_logo</var>
-   *   </dt>
-   *     <dd>
-   *     The staff member photo:
-   *     <dl>
-   *       <dt>int <var>i_height</var></dt>
-   *       <dd>The image height.</dd>
-   *       <dt>int <var>i_width</var></dt>
-   *       <dd>The image width.</dd>
-   *       <dt>string <var>s_url</var></dt>
-   *       <dd>The image URL.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>string <var>s_family</var></dt>
-   *   <dd>The first letter of staff member surname.</dd>
-   *   <dt>string <var>s_staff</var></dt>
-   *   <dd>The staff member's name.</dd>
-   *   <dt>string <var>uid</var></dt>
-   *   <dd>UID of the staff member.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_staff;
-
-  /**
-   * The keys of the bookings made.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_visit;
-
-  /**
-   * Determines whether the class/event can be booked at this step or not.
-   * This is an external process control flag.
-   *
-   * @post post
-   * @var bool
-   */
-  public $can_book = true;
-
-  /**
-   * Date when this class session occurrences stop.
-   *
-   * @get result
-   * @var string
-   */
-  public $dl_end;
-
-  /**
-   * Date/time to which session is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_date_gmt = '';
-
-  /**
-   * The date/time of the session the user is booking in MySQL format in the location's timezone.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_date_local;
-
-  /**
-   * `true` if price for the individual session should be hidden, if client has applicable pricing option to pay for this
-   * booking.
-   * `false` if price should be shown always.
-   *
-   * @get result
-   * @var bool
-   */
-  public $hide_price;
-
-  /**
-   * The text of the contract to which the user must agree before book this session.
-   * Not empty if business has contract and if user did not agree to this contract.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_contract;
-
-  /**
-   * Class duration in human-readable format.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_duration;
-
-  /**
-   * The special instructions for the class.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_special;
-
-  /**
-   * Special instructions preview for class.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_special_preview;
-
-  /**
-   * Number of available spots.
-   *
-   * `null` if this information is not available.
-   *
-   * @get result
-   * @var int|null
-   */
-  public $i_available = null;
-
-  /**
-   * Number of booked spots.
-   *
-   * `null` if this information is not available.
-   *
-   * @get result
-   * @var int|null
-   */
-  public $i_book = null;
-
-  /**
-   * The duration of the session in minutes.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_duration;
-
-  /**
-   * Estimated place of reservation on the waiting list.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_wait_spot = 0;
-
-  /**
-   * The mode type. One of the {@link ModeSid} constants.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * Determines if the user has agreed to the liability release.
-   * `true` - if  the user has agreed. Otherwise, this will be.
-   * `false` - if the user hasn't agreed or the agreement isn't required.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_agree = false;
-
-  /**
-   * `true` if recurring booking is available, `false` otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_book_repeat_client;
-
-  /**
-   * `true` if the setting for frequency during class recurring booking will be `never end` by default, `false` otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_book_repeat_no_end_date;
-
-  /**
-   * If client must authorize credit card.
-   *
-   * @post result
-   * @var bool
-   */
-  public $is_card_authorize = false;
-
-  /**
-   * Can client chooses several session per booking.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_event_session = false;
-
-  /**
-   * Can the class/event be booked immediately or not.
-   *
-   * The verification is based on the search for client's promotions and other features of the class/event.
-   * But it does not take into account the presence of other mandatory steps.
-   * Their presence will be indicated by the {@link InfoModel::$is_next} flag.
-   *
-   * @post result
-   * @var bool
-   */
-  public $is_force_book = false;
-
-  /**
-   * `true` if user pressed 'Pay later'.
-   * `false` if user pressed 'Pay now'.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_force_pay_later = false;
-
-  /**
-   * `true` - next steps of the wizard are needed (for example, to purchase something to book the selected session).
-   * `false` - no need for next steps (all that's needed has already been purchased).
-   *
-   * @post result
-   * @var bool
-   */
-  public $is_next;
-
-  /**
-   * `true` if event can be paid with pricing option only.
-   * `false` if full event purchase or single session purchase are allowed.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_promotion_only;
-
-  /**
-   * Whether the class can be paid with single session.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_single_buy;
-
-  /**
-   * Whether the full text of the special instructions fits within the preview length or not.
-   *
-   * @get result
-   * @var bool
-   *
-   * @see InfoModel::$html_special
-   * @see InfoModel::$html_special_preview
-   */
-  public $is_special_preview = false;
-
-  /**
-   * `true` if class is virtual, `false` otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_virtual;
-
-  /**
-   * Key of session which is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * Class period location key.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_location;
-
-  /**
-   * Login promotion to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_login_promotion = '';
-
-  /**
-   * Session pass to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_session_pass = '';
-
-  /**
-   * Price of the session.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_price;
-
-  /**
-   * Whole event cost.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_price_total;
-
-  /**
-   * Event price at an early discount.
-   *
-   * An empty string if there is no discount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_price_total_early;
-
-  /**
-   * The class title.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_class;
-
-  /**
-   * The location address.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_location_address;
-
-  /**
-   * The location title.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_location_title;
-
-  /**
-   * User signature.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_signature = '';
-
-  /**
-   * The time when the session takes place in the location's time zone. In format `hh:mm`.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_time;
-
-  /**
-   * Room where session takes place.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_room;
-
-  /**
-   * Text representation of the list of staffs.
-   * List of staff see {@link InfoModel::$a_staff}.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_staff;
-
-  /**
-   * Timezone abbreviation.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_timezone;
-
-  /**
-   * Key of a user who is making a book.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process\Info;
+
+use WellnessLiving\Core\a\ADateWeekSid;
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Book\Process\ProcessSpaSid;
+use WellnessLiving\Wl\Mode\ModeSid;
+
+/**
+ * Offers functionality for the class booking wizard on the "Class and Location" page.
+ *
+ * When using this endpoint, take into account the {@link ProcessSpaSid::QUIZ} step.
+ */
+class Info54Model extends WlModelAbstract
+{
+  /**
+   * Week days available for recurring booking. Constants of {@link ADateWeekSid} class.
+   *
+   * `null` if recurring booking is not available.
+   *
+   * @get result
+   * @var int[]|null
+   */
+  public $a_day_available;
+
+  /**
+   * The keys of users' activity.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_login_activity;
+
+  /**
+   * Information about the recurring booking:
+   * <dl>
+   *   <dt>
+   *     int[] [<var>a_week</var>]
+   *   </dt>
+   *   <dd>
+   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
+   *     This will be empty if the appointment doesn't repeat weekly.
+   *   </dd>
+   *   <dt>
+   *     string [<var>dl_end</var>]
+   *   </dt>
+   *   <dd>
+   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_occurrence</var>]
+   *   </dt>
+   *   <dd>
+   *     The number of occurrences after which the appointment's repeat cycle stops.
+   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_period</var>
+   *   </dt>
+   *   <dd>
+   *     The frequency of the appointment's repeat cycle.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_period</var>
+   *   </dt>
+   *   <dd>
+   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_month</var>]
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - the appointment repeats monthly on the same date.
+   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
+   *     <tt>null</tt> - the appointment doesn't repeat monthly.
+   *   </dd>
+   * </dl>
+   *
+   * This will be `null` if the booking isn't recurring.
+   *
+   * @post post
+   * @var array|null
+   */
+  public $a_repeat = null;
+
+  /**
+   * A list of assets being booked. Every element has the next structure:
+   * <dl>
+   *   <dt>int <var>i_index</var></dt>
+   *   <dd>Order number of the asset (maybe from 1 to asset quantity).</dd>
+   *   <dt>string <var>k_resource</var></dt>
+   *   <dd>The key of asset.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_resource = [];
+
+  /**
+   * A list of all class sessions that can be booked together. Every element has the next structure:
+   * <dl>
+   *   <dt>
+   *     string[] <var>a_staff</var>
+   *   </dt>
+   *   <dd>
+   *     List of staff names that are leading this session.
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_virtual_location</var>
+   *   </dt>
+   *   <dd>
+   *     List of virtual locations.
+   *   </dd>
+   *   <dt>
+   *     string <var>dt_date</var>
+   *   </dt>
+   *   <dd>
+   *     The date/time when session starts in MySQL format and in GMT.
+   *   </dd>
+   *   <dt>
+   *     boolean <var>is_select</var>
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> if this session should be selected when page is initialized;
+   *     <tt>false</tt> if otherwise.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_wait</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if client is added to a wait list, `false` - to an active list.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_wait_list_unpaid</var>
+   *   </dt>
+   *   <dd>
+   *     Allow clients to join the wait list unpaid.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_class_period</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the session.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_location</var>
+   *   </dt>
+   *   <dd>
+   *     Location key.
+   *   </dd>
+   *   <dt>
+   *     bool <var>m_price</var>
+   *   </dt>
+   *   <dd>
+   *     Price of the session.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_location</var>
+   *   </dt>
+   *   <dd>
+   *     The name of the location where the session occurred.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_start</var>
+   *   </dt>
+   *   <dd>
+   *     The date/time when the session starts in human-readable format.
+   *     Returned in the time zone of the location.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_duration</var>
+   *   </dt>
+   *   <dd>
+   *     String representation of session duration.
+   *
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_session_all;
+
+  /**
+   * List of sessions that can be paid without new purchases.
+   * Such as previously prepaid or free sessions.
+   *
+   * Each its item has the key of following format: <dl>
+   *   <dt>string <var>dt_date</var>::<var>k_class_period</var></dt><dd>Composite key of the array.</dd>
+   * </dl>
+   * and the value of following structure: <dl>
+   *   <dt>string <var>dt_date</var></dt><dd>Session date.</dd>
+   *   <dt>string <var>k_class_period</var></dt><dd>Class period key for the session.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_session_free;
+
+  /**
+   * The selected sessions.
+   *
+   * <b>Keys</b> - The class period keys.
+   * <b>Values</b> - List of date/time when the session occurred in MySQL format and in GMT.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_session_select = [];
+
+  /**
+   * Selected sessions on the waiting list without pay.
+   *
+   * Keys - session IDs.
+   *
+   * Values - index arrays of dates/time when session is occurred. In MySQL format. In GMT.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_session_wait_list_unpaid = [];
+
+  /**
+   * The staff member conducting the session. Every element has the next structure:
+   * <dl>
+   *   <dt>
+   *     array <var>a_logo</var>
+   *   </dt>
+   *     <dd>
+   *     The staff member photo:
+   *     <dl>
+   *       <dt>int <var>i_height</var></dt>
+   *       <dd>The image height.</dd>
+   *       <dt>int <var>i_width</var></dt>
+   *       <dd>The image width.</dd>
+   *       <dt>string <var>s_url</var></dt>
+   *       <dd>The image URL.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>string <var>s_family</var></dt>
+   *   <dd>The first letter of staff member surname.</dd>
+   *   <dt>string <var>s_staff</var></dt>
+   *   <dd>The staff member's name.</dd>
+   *   <dt>string <var>uid</var></dt>
+   *   <dd>UID of the staff member.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_staff;
+
+  /**
+   * The keys of the bookings made.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_visit;
+
+  /**
+   * Determines whether the class/event can be booked at this step or not.
+   * This is an external process control flag.
+   *
+   * @post post
+   * @var bool
+   */
+  public $can_book = true;
+
+  /**
+   * Date when this class session occurrences stop.
+   *
+   * @get result
+   * @var string
+   */
+  public $dl_end;
+
+  /**
+   * Date/time to which session is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_date_gmt = '';
+
+  /**
+   * The date/time of the session the user is booking in MySQL format in the location's timezone.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_date_local;
+
+  /**
+   * `true` if price for the individual session should be hidden, if client has applicable pricing option to pay for this
+   * booking.
+   * `false` if price should be shown always.
+   *
+   * @get result
+   * @var bool
+   */
+  public $hide_price;
+
+  /**
+   * The text of the contract to which the user must agree before book this session.
+   * Not empty if business has contract and if user did not agree to this contract.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_contract;
+
+  /**
+   * Class duration in human-readable format.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_duration;
+
+  /**
+   * The special instructions for the class.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_special;
+
+  /**
+   * Special instructions preview for class.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_special_preview;
+
+  /**
+   * Number of available spots.
+   *
+   * `null` if this information is not available.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $i_available = null;
+
+  /**
+   * Number of booked spots.
+   *
+   * `null` if this information is not available.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $i_book = null;
+
+  /**
+   * The duration of the session in minutes.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_duration;
+
+  /**
+   * Estimated place of reservation on the waiting list.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_wait_spot = 0;
+
+  /**
+   * The mode type. One of the {@link ModeSid} constants.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * Determines if the user has agreed to the liability release.
+   * `true` - if  the user has agreed. Otherwise, this will be.
+   * `false` - if the user hasn't agreed or the agreement isn't required.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_agree = false;
+
+  /**
+   * `true` if recurring booking is available, `false` otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_book_repeat_client;
+
+  /**
+   * `true` if the setting for frequency during class recurring booking will be `never end` by default, `false` otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_book_repeat_no_end_date;
+
+  /**
+   * If client must authorize credit card.
+   *
+   * @post result
+   * @var bool
+   */
+  public $is_card_authorize = false;
+
+  /**
+   * Can client chooses several session per booking.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_event_session = false;
+
+  /**
+   * Can the class/event be booked immediately or not.
+   *
+   * The verification is based on the search for client's promotions and other features of the class/event.
+   * But it does not take into account the presence of other mandatory steps.
+   * Their presence will be indicated by the {@link InfoModel::$is_next} flag.
+   *
+   * @post result
+   * @var bool
+   */
+  public $is_force_book = false;
+
+  /**
+   * `true` if user pressed 'Pay later'.
+   * `false` if user pressed 'Pay now'.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_force_pay_later = false;
+
+  /**
+   * `true` - next steps of the wizard are needed (for example, to purchase something to book the selected session).
+   * `false` - no need for next steps (all that's needed has already been purchased).
+   *
+   * @post result
+   * @var bool
+   */
+  public $is_next;
+
+  /**
+   * `true` if event can be paid with pricing option only.
+   * `false` if full event purchase or single session purchase are allowed.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_promotion_only;
+
+  /**
+   * Whether the class can be paid with single session.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_single_buy;
+
+  /**
+   * Whether the full text of the special instructions fits within the preview length or not.
+   *
+   * @get result
+   * @var bool
+   *
+   * @see InfoModel::$html_special
+   * @see InfoModel::$html_special_preview
+   */
+  public $is_special_preview = false;
+
+  /**
+   * `true` if class is virtual, `false` otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_virtual;
+
+  /**
+   * Key of session which is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * Class period location key.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_location;
+
+  /**
+   * Login promotion to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_login_promotion = '';
+
+  /**
+   * Session pass to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_session_pass = '';
+
+  /**
+   * Price of the session.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_price;
+
+  /**
+   * Whole event cost.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_price_total;
+
+  /**
+   * Event price at an early discount.
+   *
+   * An empty string if there is no discount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_price_total_early;
+
+  /**
+   * The class title.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_class;
+
+  /**
+   * The location address.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_location_address;
+
+  /**
+   * The location title.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_location_title;
+
+  /**
+   * User signature.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_signature = '';
+
+  /**
+   * The time when the session takes place in the location's time zone. In format `hh:mm`.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_time;
+
+  /**
+   * Room where session takes place.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_room;
+
+  /**
+   * Text representation of the list of staffs.
+   * List of staff see {@link InfoModel::$a_staff}.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_staff;
+
+  /**
+   * Timezone abbreviation.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_timezone;
+
+  /**
+   * Key of a user who is making a book.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Info/InfoCanCompleteModel.php b/WellnessLiving/Wl/Book/Process/Info/InfoCanCompleteModel.php
index c45e57ff..0579f229 100644
--- a/WellnessLiving/Wl/Book/Process/Info/InfoCanCompleteModel.php
+++ b/WellnessLiving/Wl/Book/Process/Info/InfoCanCompleteModel.php
@@ -1,108 +1,108 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process\Info;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Checks for `next` and `complete` buttons in the booking process.
- */
-class InfoCanCompleteModel extends WlModelAbstract
-{
-  /**
-   * A list of sessions of an event that can be booked together.
-   *
-   * This is the same as {@link InfoCanCompleteModel::$a_session_select_post}, but limited by query string
-   * length and might fail if the user is booking more than 50 sessions at once. Therefore, using the POST method is preferable.
-   *
-   * @get get
-   * @var array[]
-   * @deprecated Use {@link InfoCanCompleteModel::$a_session_select_post} along with POST call instead.
-   */
-  public $a_session_select = [];
-
-  /**
-   * A list of sessions of an event that can be booked together.
-   *
-   * Every element has the next structure:
-   * <dl>
-   *   <dt>string <var>dt_date</var></dt>
-   *   <dd>The date and time in MySQL format in GMT when the session starts.</dd>
-   *   <dt>bool <var>is_select</var></dt>
-   *   <dd>`true` if this session should be booked, `false` otherwise.</dd>
-   *   <dt>string <var>k_class_period</var></dt>
-   *   <dd>The class period key.</dd>
-   * </dl>
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_session_select_post = [];
-
-  /**
-   * Determines whether users can complete the booking process from the info step.
-   *
-   * @get result
-   * @post result
-   * @var bool
-   */
-  public $can_complete;
-
-  /**
-   * The date and time of the session that the user is booking, returned in MySQL format and in GMT.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_date_gmt = '';
-
-  /**
-   * `true` if price for the individual session should be hidden, if client has applicable pricing option to pay for this
-   * booking.
-   * `false` if price should be shown always.
-   *
-   * @get result
-   * @var bool
-   */
-  public $hide_price = '';
-
-  /**
-   * Key of the business in which the booking is performed.
-   *
-   * @get get
-   * @post get
-   * @var string|null
-   */
-  public $k_business = null;
-
-  /**
-   * The class period ID that the user started to book.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_class_period = '';
-
-  /**
-   * The unique booking process key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $s_id = '';
-
-  /**
-   * The key of a user who is making the booking.
-   * Empty if user is a guest.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process\Info;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Checks for `next` and `complete` buttons in the booking process.
+ */
+class InfoCanCompleteModel extends WlModelAbstract
+{
+  /**
+   * A list of sessions of an event that can be booked together.
+   *
+   * This is the same as {@link InfoCanCompleteModel::$a_session_select_post}, but limited by query string
+   * length and might fail if the user is booking more than 50 sessions at once. Therefore, using the POST method is preferable.
+   *
+   * @get get
+   * @var array[]
+   * @deprecated Use {@link InfoCanCompleteModel::$a_session_select_post} along with POST call instead.
+   */
+  public $a_session_select = [];
+
+  /**
+   * A list of sessions of an event that can be booked together.
+   *
+   * Every element has the next structure:
+   * <dl>
+   *   <dt>string <var>dt_date</var></dt>
+   *   <dd>The date and time in MySQL format in GMT when the session starts.</dd>
+   *   <dt>bool <var>is_select</var></dt>
+   *   <dd>`true` if this session should be booked, `false` otherwise.</dd>
+   *   <dt>string <var>k_class_period</var></dt>
+   *   <dd>The class period key.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_session_select_post = [];
+
+  /**
+   * Determines whether users can complete the booking process from the info step.
+   *
+   * @get result
+   * @post result
+   * @var bool
+   */
+  public $can_complete;
+
+  /**
+   * The date and time of the session that the user is booking, returned in MySQL format and in GMT.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_date_gmt = '';
+
+  /**
+   * `true` if price for the individual session should be hidden, if client has applicable pricing option to pay for this
+   * booking.
+   * `false` if price should be shown always.
+   *
+   * @get result
+   * @var bool
+   */
+  public $hide_price = '';
+
+  /**
+   * Key of the business in which the booking is performed.
+   *
+   * @get get
+   * @post get
+   * @var string|null
+   */
+  public $k_business = null;
+
+  /**
+   * The class period ID that the user started to book.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '';
+
+  /**
+   * The unique booking process key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $s_id = '';
+
+  /**
+   * The key of a user who is making the booking.
+   * Empty if user is a guest.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
index e1fdef2c..d40dca4e 100644
--- a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
@@ -1,408 +1,408 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process\Payment;
-
-use WellnessLiving\Core\a\ADateWeekSid;
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-
-/**
- * Acts as the booking wizard for the "Pay/Billing info" page.
- *
- * This endpoint using captcha check.
- * To pass captcha need study the documentation by captcha API, there you will find that you need to send a captcha for a specific action.
- * For this API an action is {@link BusinessPaymentCaptcha::CID}.
- */
-class PaymentModel extends WlModelAbstract
-{
-  /**
-   * A list of items to be bought. Every element has the next keys:
-   * <dl>
-   *   <dt>
-   *     int <var>id_purchase_item</var>
-   *   </dt>
-   *   <dd>
-   *     The ID of purchase item type. One of {@link WlPurchaseItemSid} constants.
-   *   </dd>
-   *   <dt>
-   *     boolean [<var>is_renew</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> if the item should be set to auto-renew; <tt>false</tt> if otherwise.
-   *     If not set yet, use the default option for this item.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_id</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the purchase item in the database.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_login_prize</var>
-   *   </dt>
-   *   <dd>
-   *     ID of user's prize.
-   *     Not <tt>0</tt> only if user is paying book by prize.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_signature</var>]
-   *   </dt>
-   *   <dd>
-   *     The signature of the Purchase Option contract.
-   *     This won't be set if the Purchase Option doesn't require a contract assignment.
-   *   </dd>
-   * </dl>
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_item = [];
-
-  /**
-   * Keys of the user's activity which correspond to bookings made.
-   * Not empty when the booking process is finished.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_login_activity_book;
-
-  /**
-   * A list of payment sources to pay with.
-   *
-   * Each element has next keys:
-   * <dl>
-   *   <dt>
-   *     array [<var>a_pay_card</var>]
-   *   </dt>
-   *   <dd>
-   *     The payment card information:
-   *     <dl>
-   *       <dt>
-   *         array <var>a_pay_address</var>
-   *       </dt>
-   *       <dd>
-   *         The payment address:
-   *         <dl>
-   *           <dt>boolean <var>is_new</var></dt>
-   *           <dd>Set this value to <tt>1</tt> to add a new payment address or to <tt>0</tt> to use a saved payment address.</dd>
-   *           <dt>string [<var>k_geo_country</var>]</dt>
-   *           <dd>The key of the country used for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>k_geo_region</var>]</dt>
-   *           <dd>The key of the region for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>k_pay_address</var>]</dt>
-   *           <dd>The key of the saved payment address. Specify this to use a saved address.</dd>
-   *           <dt>string [<var>s_city</var>]</dt>
-   *           <dd>The city used for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_name</var>]</dt>
-   *           <dd>The card name. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_phone</var>]</dt>
-   *           <dd>The payment phone. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_postal</var>]</dt>
-   *           <dd>The postal code for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_street1</var>]</dt>
-   *           <dd>The payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_street2</var>]</dt>
-   *           <dd>The optional payment address. Specify this to add a new address.</dd>
-   *         </dl>
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_csc</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card CSC. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_month</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card expiration month. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_year</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card expiration year. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         boolean <var>is_new</var>
-   *       </dt>
-   *       <dd>
-   *         Specify <tt>1</tt> to add a new card, or <tt>0</tt> to use a saved card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>k_pay_bank</var>]
-   *       </dt>
-   *       <dd>
-   *         The key of the credit card. Specify this to use saved card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_comment</var>]
-   *       </dt>
-   *       <dd>
-   *         Optional comment(s). Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_number</var>]
-   *       </dt>
-   *       <dd>
-   *         The card number. Specify this to add a new card.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>f_amount</var>
-   *   </dt>
-   *   <dd>
-   *     The amount of money to withdraw with this payment source.
-   *   </dd>
-   *   <dt>
-   *     boolean [<var>is_hide</var>]
-   *   </dt>
-   *   <dd>
-   *     Determines whether this payment method is hidden.
-   *   </dd>
-   *   <dt>
-   *     boolean [<var>is_success</var>=<tt>false</tt>]
-   *   </dt>
-   *   <dd>
-   *     Identifies whether this source was successfully charged.
-   *   </dd>
-   *   <dt>
-   *     string [<var>m_surcharge</var>]
-   *   </dt>
-   *   <dd>
-   *     The client-side calculated surcharge.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_index</var>]
-   *   </dt>
-   *   <dd>
-   *     The index of this form (optional).
-   *   </dd>
-   *   <dt>
-   *     string <var>sid_pay_method</var>
-   *   </dt>
-   *   <dd>
-   *     The payment method ID.
-   *   </dd>
-   * </dl>
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_pay_form = [];
-
-  /**
-   * List of quiz response keys.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_quiz_response = [];
-
-  /**
-   * Information about the recurring booking:
-   * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
-   *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
-   *   </dd>
-   *   <dt>
-   *     string [<var>dl_end</var>]
-   *   </dt>
-   *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_occurrence</var>]
-   *   </dt>
-   *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_period</var>
-   *   </dt>
-   *   <dd>
-   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
-   * </dl>
-   *
-   * This will be `null` if the booking isn't recurring.
-   *
-   * @post post
-   * @var array|null
-   */
-  public $a_repeat = null;
-
-  /**
-   * A list of assets being booked. Every element has the next keys:
-   * <dl>
-   *   <dt>int <var>i_index</var></dt>
-   *   <dd>The number of asset(s). The actual number is returned for assets with a quantity greater than <tt>1</tt>.</dd>
-   *   <dt>string <var>k_resource</var></dt>
-   *   <dd>The key of the asset.</dd>
-   * </dl>
-   *
-   * @post post
-   * @var array
-   */
-  public $a_resource = [];
-
-  /**
-   * A list of sessions being booked.
-   * <b>Keys</b> - The class period keys.
-   * <b>Values</b> - List of date/time when the session occurred.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_session = [];
-
-  /**
-   * Selected sessions on the waiting list without pay.
-   *
-   * Keys - session IDs.
-   *
-   * Values - index arrays of dates/time when session is occurred. In MySQL format. In GMT.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_session_wait_list_unpaid = [];
-
-  /**
-   * The keys of bookings made.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_visit;
-
-  /**
-   * Determines whether the class/event can be booked at this step or not.
-   * This is an external process control flag.
-   *
-   * @post post
-   * @var bool
-   */
-  public $can_book = true;
-
-  /**
-   * Date/time to which session is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_date_gmt = '';
-
-  /**
-   * The mode type. One of the {@link ModeSid} constants.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * If client must authorize credit card.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_card_authorize = false;
-
-  /**
-   * `true` if user pressed 'Pay later'.
-   * `false` if user pressed 'Pay now'.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_force_pay_later = false;
-
-  /**
-   * Key of session which is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * The keys of the user's activity corresponding to the purchase made. This won't be empty when the booking process is finished.
-   *
-   * @post result
-   * @var string
-   */
-  public $k_login_activity_purchase;
-
-  /**
-   * Login promotion to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_login_promotion = '';
-
-  /**
-   * The installment template key.
-   * This property is optional and it will be `null` if an installment plan doesn't exist for the purchased item.
-   * This will be `0` if an installment plan isn't selected for the purchased item from the list of installment plans.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $k_pay_installment_template;
-
-  /**
-   * Session pass to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_session_pass = '';
-
-  /**
-   * The discount code to be applied to the purchase.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_discount_code = '';
-
-  /**
-   * Key of a user who is making a book.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process\Payment;
+
+use WellnessLiving\Core\a\ADateWeekSid;
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+
+/**
+ * Acts as the booking wizard for the "Pay/Billing info" page.
+ *
+ * This endpoint using captcha check.
+ * To pass captcha need study the documentation by captcha API, there you will find that you need to send a captcha for a specific action.
+ * For this API an action is {@link BusinessPaymentCaptcha::CID}.
+ */
+class PaymentModel extends WlModelAbstract
+{
+  /**
+   * A list of items to be bought. Every element has the next keys:
+   * <dl>
+   *   <dt>
+   *     int <var>id_purchase_item</var>
+   *   </dt>
+   *   <dd>
+   *     The ID of purchase item type. One of {@link WlPurchaseItemSid} constants.
+   *   </dd>
+   *   <dt>
+   *     boolean [<var>is_renew</var>]
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> if the item should be set to auto-renew; <tt>false</tt> if otherwise.
+   *     If not set yet, use the default option for this item.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_id</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the purchase item in the database.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_login_prize</var>
+   *   </dt>
+   *   <dd>
+   *     ID of user's prize.
+   *     Not <tt>0</tt> only if user is paying book by prize.
+   *   </dd>
+   *   <dt>
+   *     string [<var>s_signature</var>]
+   *   </dt>
+   *   <dd>
+   *     The signature of the Purchase Option contract.
+   *     This won't be set if the Purchase Option doesn't require a contract assignment.
+   *   </dd>
+   * </dl>
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_item = [];
+
+  /**
+   * Keys of the user's activity which correspond to bookings made.
+   * Not empty when the booking process is finished.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_login_activity_book;
+
+  /**
+   * A list of payment sources to pay with.
+   *
+   * Each element has next keys:
+   * <dl>
+   *   <dt>
+   *     array [<var>a_pay_card</var>]
+   *   </dt>
+   *   <dd>
+   *     The payment card information:
+   *     <dl>
+   *       <dt>
+   *         array <var>a_pay_address</var>
+   *       </dt>
+   *       <dd>
+   *         The payment address:
+   *         <dl>
+   *           <dt>boolean <var>is_new</var></dt>
+   *           <dd>Set this value to <tt>1</tt> to add a new payment address or to <tt>0</tt> to use a saved payment address.</dd>
+   *           <dt>string [<var>k_geo_country</var>]</dt>
+   *           <dd>The key of the country used for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>k_geo_region</var>]</dt>
+   *           <dd>The key of the region for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>k_pay_address</var>]</dt>
+   *           <dd>The key of the saved payment address. Specify this to use a saved address.</dd>
+   *           <dt>string [<var>s_city</var>]</dt>
+   *           <dd>The city used for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_name</var>]</dt>
+   *           <dd>The card name. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_phone</var>]</dt>
+   *           <dd>The payment phone. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_postal</var>]</dt>
+   *           <dd>The postal code for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_street1</var>]</dt>
+   *           <dd>The payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_street2</var>]</dt>
+   *           <dd>The optional payment address. Specify this to add a new address.</dd>
+   *         </dl>
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_csc</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card CSC. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_month</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card expiration month. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_year</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card expiration year. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         boolean <var>is_new</var>
+   *       </dt>
+   *       <dd>
+   *         Specify <tt>1</tt> to add a new card, or <tt>0</tt> to use a saved card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>k_pay_bank</var>]
+   *       </dt>
+   *       <dd>
+   *         The key of the credit card. Specify this to use saved card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_comment</var>]
+   *       </dt>
+   *       <dd>
+   *         Optional comment(s). Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_number</var>]
+   *       </dt>
+   *       <dd>
+   *         The card number. Specify this to add a new card.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>f_amount</var>
+   *   </dt>
+   *   <dd>
+   *     The amount of money to withdraw with this payment source.
+   *   </dd>
+   *   <dt>
+   *     boolean [<var>is_hide</var>]
+   *   </dt>
+   *   <dd>
+   *     Determines whether this payment method is hidden.
+   *   </dd>
+   *   <dt>
+   *     boolean [<var>is_success</var>=<tt>false</tt>]
+   *   </dt>
+   *   <dd>
+   *     Identifies whether this source was successfully charged.
+   *   </dd>
+   *   <dt>
+   *     string [<var>m_surcharge</var>]
+   *   </dt>
+   *   <dd>
+   *     The client-side calculated surcharge.
+   *   </dd>
+   *   <dt>
+   *     string [<var>s_index</var>]
+   *   </dt>
+   *   <dd>
+   *     The index of this form (optional).
+   *   </dd>
+   *   <dt>
+   *     string <var>sid_pay_method</var>
+   *   </dt>
+   *   <dd>
+   *     The payment method ID.
+   *   </dd>
+   * </dl>
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_pay_form = [];
+
+  /**
+   * List of quiz response keys.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_quiz_response = [];
+
+  /**
+   * Information about the recurring booking:
+   * <dl>
+   *   <dt>
+   *     int[] [<var>a_week</var>]
+   *   </dt>
+   *   <dd>
+   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
+   *     This will be empty if the appointment doesn't repeat weekly.
+   *   </dd>
+   *   <dt>
+   *     string [<var>dl_end</var>]
+   *   </dt>
+   *   <dd>
+   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_occurrence</var>]
+   *   </dt>
+   *   <dd>
+   *     The number of occurrences after which the appointment's repeat cycle stops.
+   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_period</var>
+   *   </dt>
+   *   <dd>
+   *     The frequency of the appointment's repeat cycle.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_period</var>
+   *   </dt>
+   *   <dd>
+   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_month</var>]
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - the appointment repeats monthly on the same date.
+   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
+   *     <tt>null</tt> - the appointment doesn't repeat monthly.
+   *   </dd>
+   * </dl>
+   *
+   * This will be `null` if the booking isn't recurring.
+   *
+   * @post post
+   * @var array|null
+   */
+  public $a_repeat = null;
+
+  /**
+   * A list of assets being booked. Every element has the next keys:
+   * <dl>
+   *   <dt>int <var>i_index</var></dt>
+   *   <dd>The number of asset(s). The actual number is returned for assets with a quantity greater than <tt>1</tt>.</dd>
+   *   <dt>string <var>k_resource</var></dt>
+   *   <dd>The key of the asset.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var array
+   */
+  public $a_resource = [];
+
+  /**
+   * A list of sessions being booked.
+   * <b>Keys</b> - The class period keys.
+   * <b>Values</b> - List of date/time when the session occurred.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_session = [];
+
+  /**
+   * Selected sessions on the waiting list without pay.
+   *
+   * Keys - session IDs.
+   *
+   * Values - index arrays of dates/time when session is occurred. In MySQL format. In GMT.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_session_wait_list_unpaid = [];
+
+  /**
+   * The keys of bookings made.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_visit;
+
+  /**
+   * Determines whether the class/event can be booked at this step or not.
+   * This is an external process control flag.
+   *
+   * @post post
+   * @var bool
+   */
+  public $can_book = true;
+
+  /**
+   * Date/time to which session is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_date_gmt = '';
+
+  /**
+   * The mode type. One of the {@link ModeSid} constants.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * If client must authorize credit card.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_card_authorize = false;
+
+  /**
+   * `true` if user pressed 'Pay later'.
+   * `false` if user pressed 'Pay now'.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_force_pay_later = false;
+
+  /**
+   * Key of session which is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * The keys of the user's activity corresponding to the purchase made. This won't be empty when the booking process is finished.
+   *
+   * @post result
+   * @var string
+   */
+  public $k_login_activity_purchase;
+
+  /**
+   * Login promotion to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_login_promotion = '';
+
+  /**
+   * The installment template key.
+   * This property is optional and it will be `null` if an installment plan doesn't exist for the purchased item.
+   * This will be `0` if an installment plan isn't selected for the purchased item from the list of installment plans.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_pay_installment_template;
+
+  /**
+   * Session pass to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_session_pass = '';
+
+  /**
+   * The discount code to be applied to the purchase.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_discount_code = '';
+
+  /**
+   * Key of a user who is making a book.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Process54Model.php b/WellnessLiving/Wl/Book/Process/Process54Model.php
index be510424..ff27f5b1 100644
--- a/WellnessLiving/Wl/Book/Process/Process54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process54Model.php
@@ -1,270 +1,270 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process;
-
-use WellnessLiving\Core\a\ADateWeekSid;
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Classes\RequirePaySid;
-use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
-use WellnessLiving\Wl\Mode\ModeSid;
-
-/**
- * Performs the booking wizard steps.
- *
- * Include the {@link ProcessSpaSid::QUIZ} step, if needed.
- *
- * @deprecated Use {@link Process59Model} instead.
- */
-class Process54Model extends WlModelAbstract
-{
-  /**
-   * Relationships who clients are allowed to book for.
-   * One of the {@link WlFamilyRelationSid} constants.
-   *
-   * This will be `null` if clients aren't allowed to book for their relationships.
-   *
-   * @depreated Use {@link ProcessModel::$is_family_relation_book} instead. Full list of relatives available, see {@link WlFamilyRelationSid}.
-   * @get result
-   * @var int[]|null
-   */
-  public $a_family_relation_login_allow;
-
-  /**
-   * All the steps to be performed to make a booking. Every element has the next keys:
-   * <dl>
-   *   <dt>
-   *     int <var>id_book_process</var>
-   *   </dt>
-   *   <dd>
-   *     The step ID. One of the {@link ProcessSpaSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_current</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - this item is current.
-   *     <tt>false</tt> - this item isn't current or not set yet.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_path = [];
-
-  /**
-   * Information about the recurring booking:
-   * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
-   *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
-   *   </dd>
-   *   <dt>
-   *     string [<var>dl_end</var>]
-   *   </dt>
-   *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_occurrence</var>]
-   *   </dt>
-   *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_period</var>
-   *   </dt>
-   *   <dd>
-   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
-   * </dl>
-   *
-   * This will be `null` if the booking isn't recurring.
-   *
-   * @post post
-   * @var array|null
-   */
-  public $a_repeat = null;
-
-  /**
-   * Determines whether the class/event can be booked at this step or not.
-   * This is an external process control flag.
-   *
-   * @post post
-   * @var bool
-   */
-  public $can_book = true;
-
-  /**
-   * Date/time to which session is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_date_gmt = '';
-
-  /**
-   * The mode type. One of the {@link ModeSid} constants.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * The purchase rule ID.
-   * One of the {@link RequirePaySid} constants.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_pay_require;
-
-  /**
-   * `true` if this class has age restriction and requires user to specify age. `false` otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_age_require;
-
-  /**
-   * Determines if the client must authorize the credit card.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_card_authorize = false;
-
-  /**
-   * If `true`, the session being booked is an event. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_event;
-
-  /**
-   * Determines whether clients are allowed to book for their relationships without switching profiles.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_family_relation_book;
-
-  /**
-   * `true` if user pressed 'Pay later'.
-   * `false` if user pressed 'Pay now'.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_force_pay_later = false;
-
-  /**
-   * Determines whether the class/event is free (price).
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_free = false;
-
-  /**
-   * `true` if the client has an ach account, `false` otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_have_ach = false;
-
-  /**
-   * If `true`, the client has a credit card. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_have_credit_card = false;
-
-  /**
-   * `true` - the client can select several sessions per booking.
-   *
-   * `false` - the client can't select several sessions.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_session;
-
-  /**
-   * If `true`, the user can be placed on a wait list. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_wait;
-
-  /**
-   * Key of session which is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * The key of the location where the session is booked.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_location;
-
-  /**
-   * Login promotion to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_login_promotion = '';
-
-  /**
-   * Session pass to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_session_pass = '';
-
-  /**
-   * Key of a user who is making a book.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process;
+
+use WellnessLiving\Core\a\ADateWeekSid;
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Classes\RequirePaySid;
+use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
+use WellnessLiving\Wl\Mode\ModeSid;
+
+/**
+ * Performs the booking wizard steps.
+ *
+ * Include the {@link ProcessSpaSid::QUIZ} step, if needed.
+ *
+ * @deprecated Use {@link Process59Model} instead.
+ */
+class Process54Model extends WlModelAbstract
+{
+  /**
+   * Relationships who clients are allowed to book for.
+   * One of the {@link WlFamilyRelationSid} constants.
+   *
+   * This will be `null` if clients aren't allowed to book for their relationships.
+   *
+   * @depreated Use {@link ProcessModel::$is_family_relation_book} instead. Full list of relatives available, see {@link WlFamilyRelationSid}.
+   * @get result
+   * @var int[]|null
+   */
+  public $a_family_relation_login_allow;
+
+  /**
+   * All the steps to be performed to make a booking. Every element has the next keys:
+   * <dl>
+   *   <dt>
+   *     int <var>id_book_process</var>
+   *   </dt>
+   *   <dd>
+   *     The step ID. One of the {@link ProcessSpaSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_current</var>]
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - this item is current.
+   *     <tt>false</tt> - this item isn't current or not set yet.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_path = [];
+
+  /**
+   * Information about the recurring booking:
+   * <dl>
+   *   <dt>
+   *     int[] [<var>a_week</var>]
+   *   </dt>
+   *   <dd>
+   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
+   *     This will be empty if the appointment doesn't repeat weekly.
+   *   </dd>
+   *   <dt>
+   *     string [<var>dl_end</var>]
+   *   </dt>
+   *   <dd>
+   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_occurrence</var>]
+   *   </dt>
+   *   <dd>
+   *     The number of occurrences after which the appointment's repeat cycle stops.
+   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_period</var>
+   *   </dt>
+   *   <dd>
+   *     The frequency of the appointment's repeat cycle.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_period</var>
+   *   </dt>
+   *   <dd>
+   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_month</var>]
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - the appointment repeats monthly on the same date.
+   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
+   *     <tt>null</tt> - the appointment doesn't repeat monthly.
+   *   </dd>
+   * </dl>
+   *
+   * This will be `null` if the booking isn't recurring.
+   *
+   * @post post
+   * @var array|null
+   */
+  public $a_repeat = null;
+
+  /**
+   * Determines whether the class/event can be booked at this step or not.
+   * This is an external process control flag.
+   *
+   * @post post
+   * @var bool
+   */
+  public $can_book = true;
+
+  /**
+   * Date/time to which session is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_date_gmt = '';
+
+  /**
+   * The mode type. One of the {@link ModeSid} constants.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * The purchase rule ID.
+   * One of the {@link RequirePaySid} constants.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_pay_require;
+
+  /**
+   * `true` if this class has age restriction and requires user to specify age. `false` otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_age_require;
+
+  /**
+   * Determines if the client must authorize the credit card.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_card_authorize = false;
+
+  /**
+   * If `true`, the session being booked is an event. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_event;
+
+  /**
+   * Determines whether clients are allowed to book for their relationships without switching profiles.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_family_relation_book;
+
+  /**
+   * `true` if user pressed 'Pay later'.
+   * `false` if user pressed 'Pay now'.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_force_pay_later = false;
+
+  /**
+   * Determines whether the class/event is free (price).
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_free = false;
+
+  /**
+   * `true` if the client has an ach account, `false` otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_have_ach = false;
+
+  /**
+   * If `true`, the client has a credit card. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_have_credit_card = false;
+
+  /**
+   * `true` - the client can select several sessions per booking.
+   *
+   * `false` - the client can't select several sessions.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_session;
+
+  /**
+   * If `true`, the user can be placed on a wait list. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_wait;
+
+  /**
+   * Key of session which is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * The key of the location where the session is booked.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_location;
+
+  /**
+   * Login promotion to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_login_promotion = '';
+
+  /**
+   * Session pass to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_session_pass = '';
+
+  /**
+   * Key of a user who is making a book.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Process59Model.php b/WellnessLiving/Wl/Book/Process/Process59Model.php
index ea28d71b..0d4c8b80 100644
--- a/WellnessLiving/Wl/Book/Process/Process59Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process59Model.php
@@ -1,269 +1,269 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process;
-
-use WellnessLiving\Core\a\ADateWeekSid;
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Classes\RequirePaySid;
-use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
-use WellnessLiving\Wl\Mode\ModeSid;
-
-/**
- * Performs the booking wizard steps.
- *
- * This endpoint includes changes to the list of steps if the service is already booked for the currently selected client,
- * and if {@link ProcessModel::$is_family_relation_book} is set to `true`.
- */
-class Process59Model extends WlModelAbstract
-{
-  /**
-   * Relationships who clients are allowed to book for.
-   * One of the {@link WlFamilyRelationSid} constants.
-   *
-   * This will be `null` if clients aren't allowed to book for their relationships.
-   *
-   * @depreated Use {@link ProcessModel::$is_family_relation_book} instead. Full list of relatives available, see {@link WlFamilyRelationSid}.
-   * @get result
-   * @var int[]|null
-   */
-  public $a_family_relation_login_allow;
-
-  /**
-   * All the steps to be performed to make a booking. Every element has the next keys:
-   * <dl>
-   *   <dt>
-   *     int <var>id_book_process</var>
-   *   </dt>
-   *   <dd>
-   *     The step ID. One of the {@link ProcessSpaSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_current</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - this item is current.
-   *     <tt>false</tt> - this item isn't current or not set yet.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_path = [];
-
-  /**
-   * Information about the recurring booking:
-   * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
-   *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
-   *   </dd>
-   *   <dt>
-   *     string [<var>dl_end</var>]
-   *   </dt>
-   *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_occurrence</var>]
-   *   </dt>
-   *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_period</var>
-   *   </dt>
-   *   <dd>
-   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
-   * </dl>
-   *
-   * This will be `null` if the booking isn't recurring.
-   *
-   * @post post
-   * @var array|null
-   */
-  public $a_repeat = null;
-
-  /**
-   * Determines whether the class/event can be booked at this step or not.
-   * This is an external process control flag.
-   *
-   * @post post
-   * @var bool
-   */
-  public $can_book = true;
-
-  /**
-   * Date/time to which session is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_date_gmt = '';
-
-  /**
-   * The mode type. One of the {@link ModeSid} constants.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * The purchase rule ID.
-   * One of the {@link RequirePaySid} constants.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_pay_require;
-
-  /**
-   * `true` if this class has age restriction and requires user to specify age. `false` otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_age_require;
-
-  /**
-   * Determines if the client must authorize the credit card.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_card_authorize = false;
-
-  /**
-   * If `true`, the session being booked is an event. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_event;
-
-  /**
-   * Determines whether clients are allowed to book for their relationships without switching profiles.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_family_relation_book;
-
-  /**
-   * `true` if user pressed 'Pay later'.
-   * `false` if user pressed 'Pay now'.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_force_pay_later = false;
-
-  /**
-   * Determines whether the class/event is free (price).
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_free = false;
-
-  /**
-   * `true` if the client has an ach account, `false` otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_have_ach = false;
-
-  /**
-   * If `true`, the client has a credit card. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_have_credit_card = false;
-
-  /**
-   * `true` - the client can select several sessions per booking.
-   *
-   * `false` - the client can't select several sessions.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_session;
-
-  /**
-   * If `true`, the user can be placed on a wait list. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_wait;
-
-  /**
-   * Key of session which is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * The key of the location where the session is booked.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_location;
-
-  /**
-   * Login promotion to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_login_promotion = '';
-
-  /**
-   * Session pass to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_session_pass = '';
-
-  /**
-   * Key of a user who is making a book.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process;
+
+use WellnessLiving\Core\a\ADateWeekSid;
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Classes\RequirePaySid;
+use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
+use WellnessLiving\Wl\Mode\ModeSid;
+
+/**
+ * Performs the booking wizard steps.
+ *
+ * This endpoint includes changes to the list of steps if the service is already booked for the currently selected client,
+ * and if {@link ProcessModel::$is_family_relation_book} is set to `true`.
+ */
+class Process59Model extends WlModelAbstract
+{
+  /**
+   * Relationships who clients are allowed to book for.
+   * One of the {@link WlFamilyRelationSid} constants.
+   *
+   * This will be `null` if clients aren't allowed to book for their relationships.
+   *
+   * @depreated Use {@link ProcessModel::$is_family_relation_book} instead. Full list of relatives available, see {@link WlFamilyRelationSid}.
+   * @get result
+   * @var int[]|null
+   */
+  public $a_family_relation_login_allow;
+
+  /**
+   * All the steps to be performed to make a booking. Every element has the next keys:
+   * <dl>
+   *   <dt>
+   *     int <var>id_book_process</var>
+   *   </dt>
+   *   <dd>
+   *     The step ID. One of the {@link ProcessSpaSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_current</var>]
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - this item is current.
+   *     <tt>false</tt> - this item isn't current or not set yet.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_path = [];
+
+  /**
+   * Information about the recurring booking:
+   * <dl>
+   *   <dt>
+   *     int[] [<var>a_week</var>]
+   *   </dt>
+   *   <dd>
+   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
+   *     This will be empty if the appointment doesn't repeat weekly.
+   *   </dd>
+   *   <dt>
+   *     string [<var>dl_end</var>]
+   *   </dt>
+   *   <dd>
+   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_occurrence</var>]
+   *   </dt>
+   *   <dd>
+   *     The number of occurrences after which the appointment's repeat cycle stops.
+   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_period</var>
+   *   </dt>
+   *   <dd>
+   *     The frequency of the appointment's repeat cycle.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_period</var>
+   *   </dt>
+   *   <dd>
+   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_month</var>]
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - the appointment repeats monthly on the same date.
+   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
+   *     <tt>null</tt> - the appointment doesn't repeat monthly.
+   *   </dd>
+   * </dl>
+   *
+   * This will be `null` if the booking isn't recurring.
+   *
+   * @post post
+   * @var array|null
+   */
+  public $a_repeat = null;
+
+  /**
+   * Determines whether the class/event can be booked at this step or not.
+   * This is an external process control flag.
+   *
+   * @post post
+   * @var bool
+   */
+  public $can_book = true;
+
+  /**
+   * Date/time to which session is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_date_gmt = '';
+
+  /**
+   * The mode type. One of the {@link ModeSid} constants.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * The purchase rule ID.
+   * One of the {@link RequirePaySid} constants.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_pay_require;
+
+  /**
+   * `true` if this class has age restriction and requires user to specify age. `false` otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_age_require;
+
+  /**
+   * Determines if the client must authorize the credit card.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_card_authorize = false;
+
+  /**
+   * If `true`, the session being booked is an event. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_event;
+
+  /**
+   * Determines whether clients are allowed to book for their relationships without switching profiles.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_family_relation_book;
+
+  /**
+   * `true` if user pressed 'Pay later'.
+   * `false` if user pressed 'Pay now'.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_force_pay_later = false;
+
+  /**
+   * Determines whether the class/event is free (price).
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_free = false;
+
+  /**
+   * `true` if the client has an ach account, `false` otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_have_ach = false;
+
+  /**
+   * If `true`, the client has a credit card. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_have_credit_card = false;
+
+  /**
+   * `true` - the client can select several sessions per booking.
+   *
+   * `false` - the client can't select several sessions.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_session;
+
+  /**
+   * If `true`, the user can be placed on a wait list. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_wait;
+
+  /**
+   * Key of session which is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * The key of the location where the session is booked.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_location;
+
+  /**
+   * Login promotion to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_login_promotion = '';
+
+  /**
+   * Session pass to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_session_pass = '';
+
+  /**
+   * Key of a user who is making a book.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/ProcessSpaSid.php b/WellnessLiving/Wl/Book/Process/ProcessSpaSid.php
index 765d3c21..80e72e19 100644
--- a/WellnessLiving/Wl/Book/Process/ProcessSpaSid.php
+++ b/WellnessLiving/Wl/Book/Process/ProcessSpaSid.php
@@ -1,102 +1,102 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process;
-
-/**
- * Event booking process sid class
- *
- * Last used ID: 12.
- */
-abstract class ProcessSpaSid
-{
-  /**
-   * Step "Class details".
-   *
-   * Special step - a container for combining other steps.
-   *
-   * This constant has been added to the SID class to match the steps interface in JS.
-   *
-   * Adding a step to the queue is done on the client side (in JS).
-   *
-   * Designed for Client Web View.
-   */
-  const DETAIL = 10;
-
-  /**
-   * Step "Documents".
-   *
-   * Special step - a container for combining other steps.
-   *
-   * This constant has been added to the SID class to match the steps interface in JS
-   *
-   * Adding a step to the queue is done on the client side (in JS).
-   *
-   * The list of steps that can be displayed on:
-   *  * {@link ProcessSpaSid::QUIZ}
-   *  * Purchase options contract
-   *
-   * Designed for Client Web View.
-   */
-  const DOCUMENT = 8;
-
-  /**
-   * Step "Frequency".
-   * It is necessary to select booking frequency.
-   *
-   * Designed for Client Web View.
-   */
-  const FREQUENCY = 9;
-
-  /**
-   * Information about the class.
-   *
-   * In the SPA app, this step combines the following steps:
-   * * {@link ProcessSpaSid::FREQUENCY}
-   * * {@link ProcessSpaSid::SESSION}
-   */
-  const INFO = 2;
-
-  /**
-   * Installment selection.
-   */
-  const INSTALLMENT = 4;
-
-  /**
-   * Sign in, Sign up, fill in all necessary account data.
-   */
-  const PASSPORT = 1;
-
-  /**
-   * Card data and the booking confirmation.
-   */
-  const PAYMENT = 5;
-
-  /**
-   * Quizzes attached to the class.
-   */
-  const QUIZ = 7;
-
-  /**
-   * Booking for.
-   */
-  const RELATION = 12;
-
-  /**
-   * Selection of assets.
-   */
-  const RESOURCE = 6;
-
-  /**
-   * Session selection step for a session event.
-   *
-   * Designed for Client Web View.
-   */
-  const SESSION = 11;
-
-  /**
-   * A list of possible Purchase Options to be bought.
-   */
-  const STORE = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process;
+
+/**
+ * Event booking process sid class
+ *
+ * Last used ID: 12.
+ */
+abstract class ProcessSpaSid
+{
+  /**
+   * Step "Class details".
+   *
+   * Special step - a container for combining other steps.
+   *
+   * This constant has been added to the SID class to match the steps interface in JS.
+   *
+   * Adding a step to the queue is done on the client side (in JS).
+   *
+   * Designed for Client Web View.
+   */
+  const DETAIL = 10;
+
+  /**
+   * Step "Documents".
+   *
+   * Special step - a container for combining other steps.
+   *
+   * This constant has been added to the SID class to match the steps interface in JS
+   *
+   * Adding a step to the queue is done on the client side (in JS).
+   *
+   * The list of steps that can be displayed on:
+   *  * {@link ProcessSpaSid::QUIZ}
+   *  * Purchase options contract
+   *
+   * Designed for Client Web View.
+   */
+  const DOCUMENT = 8;
+
+  /**
+   * Step "Frequency".
+   * It is necessary to select booking frequency.
+   *
+   * Designed for Client Web View.
+   */
+  const FREQUENCY = 9;
+
+  /**
+   * Information about the class.
+   *
+   * In the SPA app, this step combines the following steps:
+   * * {@link ProcessSpaSid::FREQUENCY}
+   * * {@link ProcessSpaSid::SESSION}
+   */
+  const INFO = 2;
+
+  /**
+   * Installment selection.
+   */
+  const INSTALLMENT = 4;
+
+  /**
+   * Sign in, Sign up, fill in all necessary account data.
+   */
+  const PASSPORT = 1;
+
+  /**
+   * Card data and the booking confirmation.
+   */
+  const PAYMENT = 5;
+
+  /**
+   * Quizzes attached to the class.
+   */
+  const QUIZ = 7;
+
+  /**
+   * Booking for.
+   */
+  const RELATION = 12;
+
+  /**
+   * Selection of assets.
+   */
+  const RESOURCE = 6;
+
+  /**
+   * Session selection step for a session event.
+   *
+   * Designed for Client Web View.
+   */
+  const SESSION = 11;
+
+  /**
+   * A list of possible Purchase Options to be bought.
+   */
+  const STORE = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
index b61f1871..6e607ec5 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
@@ -1,556 +1,556 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process\Purchase;
-
-use WellnessLiving\Core\a\ADateWeekSid;
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-use WellnessLiving\Wl\WlProgramCategorySid;
-use WellnessLiving\Wl\WlProgramSid;
-use WellnessLiving\Wl\WlProgramTypeSid;
-
-/**
- * Displays information about Purchase Options that can book specified session(s).
- *
- * Note that the terms "Purchase Option" and "promotion" are used interchangeably.
- */
-class Purchase56Model extends WlModelAbstract
-{
-  /**
-   * Data about the login prize which can be used to pay for service.
-   * <dl>
-   *   <dt>int <var>i_count</var></dt><dd>Login prize remaining quantity.</dd>
-   *   <dt>string <var>k_login_prize</var></dt><dd>Key of login prize.</dd>
-   *   <dt>string <var>text_description</var></dt><dd>User friendly login prize description.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_login_prize = [];
-
-  /**
-   * A list of the client`s login promotions that can be applied to a given service.
-   * Each element has the following fields:
-   * <dl>
-   *   <dt>array <var>a_login_promotion_info</var></dt>
-   *   <dd>
-   *      Information about the Purchase Option with the following information:
-   *      <dl>
-   *        <dt>int <var>i_limit</var></dt>
-   *        <dd>The number of visits the Purchase Option allows the client to make.</dd>
-   *        <dt>int|null <var>i_limit_duration</var></dt>
-   *        <dd>The maximum number of minutes the Purchase Option can be used for.</dd>
-   *        <dt>int <var>i_remain</var></dt>
-   *        <dd>The number of the remaining visits the Purchase Option has left.</dd>
-   *        <dt>int|null <var>i_remain_duration</var></dt>
-   *        <dd>The number of minutes left in the Purchase Option.</dd>
-   *      </dl>
-   *   </dd>
-   *   <dt>string[] <var>a_visit_limit</var></dt>
-   *   <dd>The list of calendar restrictions of the promotion (for example, 4 per week).</dd>
-   *   <dt>array <var>a_restrict</var></dt>
-   *   <dd>Data about the shortest restriction period:
-   *     <dl>
-   *       <dt>int <var>i_limit</var></dt>
-   *       <dd>The limit of visits for the shortest restriction period.</dd>
-   *       <dt>int <var>i_remain</var></dt>
-   *       <dd>The number of remaining visits for the shortest restriction period.</dd>
-   *       <dt>string <var>text_restriction</var></dt>
-   *       <dd>The description of the shortest restriction period (for example "this week" or "for a 4 day period").</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>array[] <var>a_restrict_data</var></dt>
-   *   <dd>Data about all restriction periods given as an array, where each record has the following structure:
-   *     <dl>
-   *       <dt>int <var>i_book</var></dt>
-   *       <dd>The number of future sessions paid using this Purchase Option.</dd>
-   *       <dt>int <var>i_limit</var></dt>
-   *       <dd>The limit of visits for the restriction period.</dd>
-   *       <dt>int <var>i_remain</var></dt>
-   *       <dd>The number of remaining visits for the restriction period.</dd>
-   *       <dt>int <var>i_use</var></dt>
-   *       <dd>The Purchase Option's usage count.</dd>
-   *       <dt>int <var>i_visit_past</var></dt>
-   *       <dd>
-   *         The number of attended sessions before the last renewal.
-   *         This will be `0` if there aren't any sessions before the last renewal or the Purchase Option doesn't auto-renew.
-   *       </dd>
-   *       <dt>string <var>text_restriction</var></dt>
-   *       <dd>The description of restriction period (for example "this week" or "for a 4 day period").</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>int <var>i_limit</var></dt>
-   *   <dd>The number of visits the Purchase Option allows the client to make.</dd>
-   *   <dt>int|null <var>i_limit_duration</var></dt>
-   *   <dd>The maximum number of minutes the Purchase Option can be used for.</dd>
-   *   <dt>int <var>id_program</var></dt>
-   *   <dd>The program ID for Purchase Options. One of the {@link WlProgramSid} constants.</dd>
-   *   <dt>string <var>k_login_promotion</var></dt>
-   *   <dd>The login promotion key.</dd>
-   *   <dt>string <var>s_class_include</var></dt>
-   *   <dd>The list of services provided by this Purchase Option.</dd>
-   *   <dt>string <var>s_description</var></dt>
-   *   <dd>The Purchase Option description.</dd>
-   *   <dt>string <var>s_duration</var></dt>
-   *   <dd>The Purchase Option duration.</dd>
-   *   <dt>string <var>s_title</var></dt>
-   *   <dd>The Purchase Option name.</dd>
-   *   <dt>string <var>text_package_item</var></dt>
-   *   <dd>If this promotion is a package, this field will contain a list of Purchase Options contained in the package.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_login_promotion = [];
-
-  /**
-   * A list of Purchase Options that are available for the session(s) being booked. Keys refer to unique string IDs, and
-   * values refer arrays with the next fields:
-   * <dl>
-   *   <dt>
-   *     array[] <var>a_installment_template</var>.
-   *   </dt>
-   *   <dd>
-   *     A list of installment plans. Every element has the next keys:
-   *     <dl>
-   *       <dt>
-   *         int <var>i_count</var>
-   *       </dt>
-   *       <dd>
-   *          The number of payments.
-   *       </dd>
-   *       <dt>
-   *         int <var>id_duration</var>
-   *       </dt>
-   *       <dd>
-   *          The duration of a single period. One of the {@link ADurationSid} constants.
-   *       </dd>
-   *       <dt>
-   *         int <var>i_period</var>
-   *       </dt>
-   *       <dd>
-   *          The number of periods specified by <var>id_period</var> between individual payments.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_currency</var>
-   *       </dt>
-   *       <dd>
-   *         The payment currency key.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_pay_installment_template</var>
-   *       </dt>
-   *       <dd>
-   *          The key of the installment plan template.
-   *       </dd>
-   *       <dt>
-   *         string <var>m_amount</var>
-   *       </dt>
-   *       <dd>
-   *         The amount of the installment plan.
-   *       </dd>
-   *       <dt>
-   *         string <var>s_duration</var>
-   *       </dt>
-   *       <dd>
-   *         The title of the installment plan.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     array[] [<var>a_visit_limit</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options. A list of limits on booking by the Purchase Option. Every element has the next keys:
-   *     <dl>
-   *       <dt>
-   *         string <var>s_title</var>
-   *       </dt>
-   *       <dd>
-   *         The limit description.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>f_price</var>
-   *   </dt>
-   *   <dd>
-   *     The price.
-   *   </dd>
-   *   <dt>
-   *     string [<var>f_price_early</var>]
-   *   </dt>
-   *   <dd>
-   *     The price for early bookings.
-   *   </dd>
-   *   <dt>
-   *     string <var>html_payment_period</var>
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var> in short form.
-   *   </dd>
-   *   <dt>
-   *     string <var>html_description</var>
-   *   </dt>
-   *   <dd>
-   *     The description, ready to paste in a browser.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_limit</var>]
-   *   </dt>
-   *   <dd>
-   *     The limit of sessions that can be booked by Purchase Options.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_payment_period</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options with the 'membership' program type. The duration of the regular payment interval.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_session</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for purchases of single sessions. The number of sessions booked simultaneously.
-   *   </dd>
-   *   <dt>
-   *     int [<var>id_program_category</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for promotions. The ID of the promotion program category. One of the {@link WlProgramCategorySid} constants.
-   *   </dd>
-   *   <dt>
-   *     int [<var>id_program_type</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for promotions. The ID of the promotion program type. One of the {@link WlProgramTypeSid} constants.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_purchase_item</var>
-   *   </dt>
-   *   <dd>
-   *     The ID of Purchase Option type. One of the {@link WlPurchaseItemSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_contract</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option requires a contract assignment. Otherwise, this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_convert</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option converts to another instance upon expiration. Otherwise, this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_renew</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option is renewable. Otherwise, this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_renew_check</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option is renewable and the "auto-renew" option is turned on by default. Otherwise,
-   *     this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_id</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_login_prize</var>]
-   *   </dt>
-   *   <dd>
-   *     The key of the user's prize that can be used instead a Purchase Option to book the session.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_contract</var>]
-   *   </dt>
-   *   <dd>
-   *     The contract of the Purchase Option. This is only set if <var>is_contract</var> is <tt>true</tt>.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_payment_duration</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var>.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_promotion_convert</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set if <var>is_convert</var> is <tt>true</tt>. The title to use for the new Purchase Option instance upon auto-renewal.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_value</var>
-   *   </dt>
-   *   <dd>
-   *     The unique identifier.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_purchase = [];
-
-  /**
-   * Information about the recurring booking:
-   * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
-   *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
-   *   </dd>
-   *   <dt>
-   *     string [<var>dl_end</var>]
-   *   </dt>
-   *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_occurrence</var>]
-   *   </dt>
-   *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_period</var>
-   *   </dt>
-   *   <dd>
-   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
-   * </dl>
-   *
-   * This will be `null` if the booking isn't recurring.
-   *
-   * @post post
-   * @var array|null
-   */
-  public $a_repeat = null;
-
-  /**
-   * List of redeemable prizes which can be used to pay for service.
-   * Each element has the following fields:
-   * <dl>
-   *   <dt>int <var>i_score</var></dt><dd>Prize price in points.</dd>
-   *   <dt>string <var>k_reward_prize</var></dt><dd>Key of redeemable prize..</dd>
-   *   <dt>string <var>text_description</var></dt><dd>User friendly prize description.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_reward_prize = [];
-
-  /**
-   * The list of sessions being booked.
-   *
-   * Keys refer to class period keys.
-   * And values refer to the List of dates/times when the session occurred.
-   *
-   * @get get
-   * @var array
-   */
-  public $a_session = [];
-
-  /**
-   * The list of session passes that might be used in booking process.
-   *  Each element has the following fields:
-   *  <dl>
-   *    <dt>int <var>i_remain</var></dt>
-   *    <dd>Number of remaining visits on session pass.</dd>
-   *    <dt>int <var>k_session_pass</var></dt>
-   *    <dd>Session pass key.</dd>
-   *    <dt>int <var>id_purchase_item</var></dt>
-   *    <dd>Type of the session pass purchase. One of {@link WlPurchaseItemSid} constants.</dd>
-   *    <dt>int <var>s_title</var></dt>
-   *    <dd>Session pass title.</dd>
-   *  </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_session_pass = [];
-
-  /**
-   * The selected sessions on the wait list that are unpaid.
-   *
-   * Keys refer to session IDs.
-   * And values refer to the index arrays of dates/times when the session occurred (returned in MySQL format and GMT).
-   *
-   * @get get
-   * @var array
-   */
-  public $a_session_wait_list_unpaid = [];
-
-  /**
-   * Determines whether the class/event can be booked at this step or not.
-   * This is an external process control flag.
-   *
-   * @post post
-   * @var bool
-   */
-  public $can_book = true;
-
-  /**
-   * Date/time to which session is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_date_gmt = '';
-
-  /**
-   * The image height in pixels. Specify this value if you need image to be returned in specific size.
-   * The returned image will have the default thumbnail size if this value isn't specified.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_height = 0;
-
-  /**
-   * The image width in pixels. Specify this value if you need image to be returned in specific size.
-   * The returned image will have the default thumbnail size if this value isn't specified.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_width = 0;
-
-  /**
-   * The mode type. One of the {@link ModeSid} constants.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * Determines if the client must authorize the credit card.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_card_authorize = false;
-
-  /**
-   * `true` if user pressed 'Pay later'.
-   * `false` if user pressed 'Pay now'.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_force_pay_later = false;
-
-  /**
-   * Indicates if the drop-in rate should be the default promotion.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_single_default = false;
-
-  /**
-   * The selected sessions.
-   * This won't be empty for session mode only.
-   *
-   * Fields refer to IDs of sessions in the database. Values refer to arrays of dates/times when session occurred, returned in MySQL format and in GMT.
-   *
-   * Serialized with JSON.
-   *
-   * @get get
-   * @var string
-   */
-  public $json_session = '';
-
-  /**
-   * The business key.
-   *
-   * `null` if business key was not passed.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $k_business = null;
-
-  /**
-   * Key of session which is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * Login promotion to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_login_promotion = '';
-
-  /**
-   * The default Purchase Option key.
-   * This will be empty if the class has no default Purchase Option.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_promotion_default = '';
-
-  /**
-   * Session pass to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_session_pass = '';
-
-  /**
-   * Key of a user who is making a book.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process\Purchase;
+
+use WellnessLiving\Core\a\ADateWeekSid;
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+use WellnessLiving\Wl\WlProgramCategorySid;
+use WellnessLiving\Wl\WlProgramSid;
+use WellnessLiving\Wl\WlProgramTypeSid;
+
+/**
+ * Displays information about Purchase Options that can book specified session(s).
+ *
+ * Note that the terms "Purchase Option" and "promotion" are used interchangeably.
+ */
+class Purchase56Model extends WlModelAbstract
+{
+  /**
+   * Data about the login prize which can be used to pay for service.
+   * <dl>
+   *   <dt>int <var>i_count</var></dt><dd>Login prize remaining quantity.</dd>
+   *   <dt>string <var>k_login_prize</var></dt><dd>Key of login prize.</dd>
+   *   <dt>string <var>text_description</var></dt><dd>User friendly login prize description.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_login_prize = [];
+
+  /**
+   * A list of the client`s login promotions that can be applied to a given service.
+   * Each element has the following fields:
+   * <dl>
+   *   <dt>array <var>a_login_promotion_info</var></dt>
+   *   <dd>
+   *      Information about the Purchase Option with the following information:
+   *      <dl>
+   *        <dt>int <var>i_limit</var></dt>
+   *        <dd>The number of visits the Purchase Option allows the client to make.</dd>
+   *        <dt>int|null <var>i_limit_duration</var></dt>
+   *        <dd>The maximum number of minutes the Purchase Option can be used for.</dd>
+   *        <dt>int <var>i_remain</var></dt>
+   *        <dd>The number of the remaining visits the Purchase Option has left.</dd>
+   *        <dt>int|null <var>i_remain_duration</var></dt>
+   *        <dd>The number of minutes left in the Purchase Option.</dd>
+   *      </dl>
+   *   </dd>
+   *   <dt>string[] <var>a_visit_limit</var></dt>
+   *   <dd>The list of calendar restrictions of the promotion (for example, 4 per week).</dd>
+   *   <dt>array <var>a_restrict</var></dt>
+   *   <dd>Data about the shortest restriction period:
+   *     <dl>
+   *       <dt>int <var>i_limit</var></dt>
+   *       <dd>The limit of visits for the shortest restriction period.</dd>
+   *       <dt>int <var>i_remain</var></dt>
+   *       <dd>The number of remaining visits for the shortest restriction period.</dd>
+   *       <dt>string <var>text_restriction</var></dt>
+   *       <dd>The description of the shortest restriction period (for example "this week" or "for a 4 day period").</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>array[] <var>a_restrict_data</var></dt>
+   *   <dd>Data about all restriction periods given as an array, where each record has the following structure:
+   *     <dl>
+   *       <dt>int <var>i_book</var></dt>
+   *       <dd>The number of future sessions paid using this Purchase Option.</dd>
+   *       <dt>int <var>i_limit</var></dt>
+   *       <dd>The limit of visits for the restriction period.</dd>
+   *       <dt>int <var>i_remain</var></dt>
+   *       <dd>The number of remaining visits for the restriction period.</dd>
+   *       <dt>int <var>i_use</var></dt>
+   *       <dd>The Purchase Option's usage count.</dd>
+   *       <dt>int <var>i_visit_past</var></dt>
+   *       <dd>
+   *         The number of attended sessions before the last renewal.
+   *         This will be `0` if there aren't any sessions before the last renewal or the Purchase Option doesn't auto-renew.
+   *       </dd>
+   *       <dt>string <var>text_restriction</var></dt>
+   *       <dd>The description of restriction period (for example "this week" or "for a 4 day period").</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>int <var>i_limit</var></dt>
+   *   <dd>The number of visits the Purchase Option allows the client to make.</dd>
+   *   <dt>int|null <var>i_limit_duration</var></dt>
+   *   <dd>The maximum number of minutes the Purchase Option can be used for.</dd>
+   *   <dt>int <var>id_program</var></dt>
+   *   <dd>The program ID for Purchase Options. One of the {@link WlProgramSid} constants.</dd>
+   *   <dt>string <var>k_login_promotion</var></dt>
+   *   <dd>The login promotion key.</dd>
+   *   <dt>string <var>s_class_include</var></dt>
+   *   <dd>The list of services provided by this Purchase Option.</dd>
+   *   <dt>string <var>s_description</var></dt>
+   *   <dd>The Purchase Option description.</dd>
+   *   <dt>string <var>s_duration</var></dt>
+   *   <dd>The Purchase Option duration.</dd>
+   *   <dt>string <var>s_title</var></dt>
+   *   <dd>The Purchase Option name.</dd>
+   *   <dt>string <var>text_package_item</var></dt>
+   *   <dd>If this promotion is a package, this field will contain a list of Purchase Options contained in the package.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_login_promotion = [];
+
+  /**
+   * A list of Purchase Options that are available for the session(s) being booked. Keys refer to unique string IDs, and
+   * values refer arrays with the next fields:
+   * <dl>
+   *   <dt>
+   *     array[] <var>a_installment_template</var>.
+   *   </dt>
+   *   <dd>
+   *     A list of installment plans. Every element has the next keys:
+   *     <dl>
+   *       <dt>
+   *         int <var>i_count</var>
+   *       </dt>
+   *       <dd>
+   *          The number of payments.
+   *       </dd>
+   *       <dt>
+   *         int <var>id_duration</var>
+   *       </dt>
+   *       <dd>
+   *          The duration of a single period. One of the {@link ADurationSid} constants.
+   *       </dd>
+   *       <dt>
+   *         int <var>i_period</var>
+   *       </dt>
+   *       <dd>
+   *          The number of periods specified by <var>id_period</var> between individual payments.
+   *       </dd>
+   *       <dt>
+   *         string <var>k_currency</var>
+   *       </dt>
+   *       <dd>
+   *         The payment currency key.
+   *       </dd>
+   *       <dt>
+   *         string <var>k_pay_installment_template</var>
+   *       </dt>
+   *       <dd>
+   *          The key of the installment plan template.
+   *       </dd>
+   *       <dt>
+   *         string <var>m_amount</var>
+   *       </dt>
+   *       <dd>
+   *         The amount of the installment plan.
+   *       </dd>
+   *       <dt>
+   *         string <var>s_duration</var>
+   *       </dt>
+   *       <dd>
+   *         The title of the installment plan.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     array[] [<var>a_visit_limit</var>]
+   *   </dt>
+   *   <dd>
+   *     This is only set for Purchase Options. A list of limits on booking by the Purchase Option. Every element has the next keys:
+   *     <dl>
+   *       <dt>
+   *         string <var>s_title</var>
+   *       </dt>
+   *       <dd>
+   *         The limit description.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>f_price</var>
+   *   </dt>
+   *   <dd>
+   *     The price.
+   *   </dd>
+   *   <dt>
+   *     string [<var>f_price_early</var>]
+   *   </dt>
+   *   <dd>
+   *     The price for early bookings.
+   *   </dd>
+   *   <dt>
+   *     string <var>html_payment_period</var>
+   *   </dt>
+   *   <dd>
+   *     This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var> in short form.
+   *   </dd>
+   *   <dt>
+   *     string <var>html_description</var>
+   *   </dt>
+   *   <dd>
+   *     The description, ready to paste in a browser.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_limit</var>]
+   *   </dt>
+   *   <dd>
+   *     The limit of sessions that can be booked by Purchase Options.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_payment_period</var>]
+   *   </dt>
+   *   <dd>
+   *     This is only set for Purchase Options with the 'membership' program type. The duration of the regular payment interval.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_session</var>]
+   *   </dt>
+   *   <dd>
+   *     This is only set for purchases of single sessions. The number of sessions booked simultaneously.
+   *   </dd>
+   *   <dt>
+   *     int [<var>id_program_category</var>]
+   *   </dt>
+   *   <dd>
+   *     This is only set for promotions. The ID of the promotion program category. One of the {@link WlProgramCategorySid} constants.
+   *   </dd>
+   *   <dt>
+   *     int [<var>id_program_type</var>]
+   *   </dt>
+   *   <dd>
+   *     This is only set for promotions. The ID of the promotion program type. One of the {@link WlProgramTypeSid} constants.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_purchase_item</var>
+   *   </dt>
+   *   <dd>
+   *     The ID of Purchase Option type. One of the {@link WlPurchaseItemSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_contract</var>]
+   *   </dt>
+   *   <dd>
+   *     If <tt>true</tt>, the Purchase Option requires a contract assignment. Otherwise, this will be <tt>false</tt>.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_convert</var>]
+   *   </dt>
+   *   <dd>
+   *     If <tt>true</tt>, the Purchase Option converts to another instance upon expiration. Otherwise, this will be <tt>false</tt>.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_renew</var>]
+   *   </dt>
+   *   <dd>
+   *     If <tt>true</tt>, the Purchase Option is renewable. Otherwise, this will be <tt>false</tt>.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_renew_check</var>]
+   *   </dt>
+   *   <dd>
+   *     If <tt>true</tt>, the Purchase Option is renewable and the "auto-renew" option is turned on by default. Otherwise,
+   *     this will be <tt>false</tt>.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_id</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_login_prize</var>]
+   *   </dt>
+   *   <dd>
+   *     The key of the user's prize that can be used instead a Purchase Option to book the session.
+   *   </dd>
+   *   <dt>
+   *     string [<var>s_contract</var>]
+   *   </dt>
+   *   <dd>
+   *     The contract of the Purchase Option. This is only set if <var>is_contract</var> is <tt>true</tt>.
+   *   </dd>
+   *   <dt>
+   *     string [<var>s_payment_duration</var>]
+   *   </dt>
+   *   <dd>
+   *     This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var>.
+   *   </dd>
+   *   <dt>
+   *     string [<var>s_promotion_convert</var>]
+   *   </dt>
+   *   <dd>
+   *     This is only set if <var>is_convert</var> is <tt>true</tt>. The title to use for the new Purchase Option instance upon auto-renewal.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_title</var>
+   *   </dt>
+   *   <dd>
+   *     The title.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_value</var>
+   *   </dt>
+   *   <dd>
+   *     The unique identifier.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_purchase = [];
+
+  /**
+   * Information about the recurring booking:
+   * <dl>
+   *   <dt>
+   *     int[] [<var>a_week</var>]
+   *   </dt>
+   *   <dd>
+   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
+   *     This will be empty if the appointment doesn't repeat weekly.
+   *   </dd>
+   *   <dt>
+   *     string [<var>dl_end</var>]
+   *   </dt>
+   *   <dd>
+   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_occurrence</var>]
+   *   </dt>
+   *   <dd>
+   *     The number of occurrences after which the appointment's repeat cycle stops.
+   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_period</var>
+   *   </dt>
+   *   <dd>
+   *     The frequency of the appointment's repeat cycle.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_period</var>
+   *   </dt>
+   *   <dd>
+   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_month</var>]
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - the appointment repeats monthly on the same date.
+   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
+   *     <tt>null</tt> - the appointment doesn't repeat monthly.
+   *   </dd>
+   * </dl>
+   *
+   * This will be `null` if the booking isn't recurring.
+   *
+   * @post post
+   * @var array|null
+   */
+  public $a_repeat = null;
+
+  /**
+   * List of redeemable prizes which can be used to pay for service.
+   * Each element has the following fields:
+   * <dl>
+   *   <dt>int <var>i_score</var></dt><dd>Prize price in points.</dd>
+   *   <dt>string <var>k_reward_prize</var></dt><dd>Key of redeemable prize..</dd>
+   *   <dt>string <var>text_description</var></dt><dd>User friendly prize description.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_reward_prize = [];
+
+  /**
+   * The list of sessions being booked.
+   *
+   * Keys refer to class period keys.
+   * And values refer to the List of dates/times when the session occurred.
+   *
+   * @get get
+   * @var array
+   */
+  public $a_session = [];
+
+  /**
+   * The list of session passes that might be used in booking process.
+   *  Each element has the following fields:
+   *  <dl>
+   *    <dt>int <var>i_remain</var></dt>
+   *    <dd>Number of remaining visits on session pass.</dd>
+   *    <dt>int <var>k_session_pass</var></dt>
+   *    <dd>Session pass key.</dd>
+   *    <dt>int <var>id_purchase_item</var></dt>
+   *    <dd>Type of the session pass purchase. One of {@link WlPurchaseItemSid} constants.</dd>
+   *    <dt>int <var>s_title</var></dt>
+   *    <dd>Session pass title.</dd>
+   *  </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_session_pass = [];
+
+  /**
+   * The selected sessions on the wait list that are unpaid.
+   *
+   * Keys refer to session IDs.
+   * And values refer to the index arrays of dates/times when the session occurred (returned in MySQL format and GMT).
+   *
+   * @get get
+   * @var array
+   */
+  public $a_session_wait_list_unpaid = [];
+
+  /**
+   * Determines whether the class/event can be booked at this step or not.
+   * This is an external process control flag.
+   *
+   * @post post
+   * @var bool
+   */
+  public $can_book = true;
+
+  /**
+   * Date/time to which session is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_date_gmt = '';
+
+  /**
+   * The image height in pixels. Specify this value if you need image to be returned in specific size.
+   * The returned image will have the default thumbnail size if this value isn't specified.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_height = 0;
+
+  /**
+   * The image width in pixels. Specify this value if you need image to be returned in specific size.
+   * The returned image will have the default thumbnail size if this value isn't specified.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_width = 0;
+
+  /**
+   * The mode type. One of the {@link ModeSid} constants.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * Determines if the client must authorize the credit card.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_card_authorize = false;
+
+  /**
+   * `true` if user pressed 'Pay later'.
+   * `false` if user pressed 'Pay now'.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_force_pay_later = false;
+
+  /**
+   * Indicates if the drop-in rate should be the default promotion.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_single_default = false;
+
+  /**
+   * The selected sessions.
+   * This won't be empty for session mode only.
+   *
+   * Fields refer to IDs of sessions in the database. Values refer to arrays of dates/times when session occurred, returned in MySQL format and in GMT.
+   *
+   * Serialized with JSON.
+   *
+   * @get get
+   * @var string
+   */
+  public $json_session = '';
+
+  /**
+   * The business key.
+   *
+   * `null` if business key was not passed.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_business = null;
+
+  /**
+   * Key of session which is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * Login promotion to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_login_promotion = '';
+
+  /**
+   * The default Purchase Option key.
+   * This will be empty if the class has no default Purchase Option.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_promotion_default = '';
+
+  /**
+   * Session pass to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_session_pass = '';
+
+  /**
+   * Key of a user who is making a book.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementListModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementListModel.php
index 12adb4b3..e5c62a06 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementListModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementListModel.php
@@ -1,119 +1,119 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process\Purchase;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-
-/**
- * Displays a list of purchase items.
- */
-class PurchaseElementListModel extends WlModelAbstract
-{
-  /**
-   * A list of purchase items to get information for. Every element has the next keys:
-   * <dl>
-   *   <dt>int [<var>i_session</var>]</dt>
-   *   <dd>The number of sessions booked simultaneously.</dd>
-   *   <dt>int <var>id_purchase_item</var></dt>
-   *   <dd>The ID of the purchase item type. One of the {@link WlPurchaseItemSid} constants.</dd>
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>The key of the purchase item in the database. The name of the table in the database depends on <var>id_purchase_item</var></dd>
-   *   <dt>string [<var>k_login_prize</var>]</dt>
-   *   <dd>The key of the user's prize.</dd>
-   * </dl>
-   *
-   * @get get
-   * @var array[]
-   */
-  public $a_purchase_item_request = [];
-
-  /**
-   * Detailed information about the amounts for the purchase item list.
-   * Every element has the next keys:
-   * <dl>
-   *   <dt>
-   *     array <var>a_tax</var>
-   *   </dt>
-   *   <dd>
-   *     Information about taxes. The key refers to the tax key, and the value refers to the tax amount.
-   *   </dd>
-   *   <dt>
-   *     string <var>id_purchase_item</var></dt>
-   *   <dd>
-   *     The ID of purchase item type.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_id</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the purchase item in the database.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_cost</var></dt>
-   *   <dd>
-   *     The cost of the purchase item (with taxes).
-   *   </dd>
-   *   <dt>
-   *     string <var>m_discount</var></dt>
-   *   <dd>
-   *     The amount of the whole discount.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_discount_login</var></dt>
-   *   <dd>
-   *     The amount of the discount for the client type.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_price</var></dt>
-   *   <dd>
-   *     The price of the purchase item (with or without taxes, depending on regional standards).</dd>
-   *   <dt>
-   *     string <var>m_tax</var></dt>
-   *   <dd>
-   *     The amount of taxes for the purchase item.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_purchase_item_result;
-
-  /**
-   * The key of the business in which the purchase is made.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The key of the location in which the purchase is made.
-   * This is also the booking process location.
-   *
-   * This will be `null` if not set yet or if the location can't be defined for some reason.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $k_location = null;
-
-  /**
-   * The discount code.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_discount_code = '';
-
-  /**
-   * The key of the user making the purchase.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process\Purchase;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+
+/**
+ * Displays a list of purchase items.
+ */
+class PurchaseElementListModel extends WlModelAbstract
+{
+  /**
+   * A list of purchase items to get information for. Every element has the next keys:
+   * <dl>
+   *   <dt>int [<var>i_session</var>]</dt>
+   *   <dd>The number of sessions booked simultaneously.</dd>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The ID of the purchase item type. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The key of the purchase item in the database. The name of the table in the database depends on <var>id_purchase_item</var></dd>
+   *   <dt>string [<var>k_login_prize</var>]</dt>
+   *   <dd>The key of the user's prize.</dd>
+   * </dl>
+   *
+   * @get get
+   * @var array[]
+   */
+  public $a_purchase_item_request = [];
+
+  /**
+   * Detailed information about the amounts for the purchase item list.
+   * Every element has the next keys:
+   * <dl>
+   *   <dt>
+   *     array <var>a_tax</var>
+   *   </dt>
+   *   <dd>
+   *     Information about taxes. The key refers to the tax key, and the value refers to the tax amount.
+   *   </dd>
+   *   <dt>
+   *     string <var>id_purchase_item</var></dt>
+   *   <dd>
+   *     The ID of purchase item type.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_id</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the purchase item in the database.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_cost</var></dt>
+   *   <dd>
+   *     The cost of the purchase item (with taxes).
+   *   </dd>
+   *   <dt>
+   *     string <var>m_discount</var></dt>
+   *   <dd>
+   *     The amount of the whole discount.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_discount_login</var></dt>
+   *   <dd>
+   *     The amount of the discount for the client type.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_price</var></dt>
+   *   <dd>
+   *     The price of the purchase item (with or without taxes, depending on regional standards).</dd>
+   *   <dt>
+   *     string <var>m_tax</var></dt>
+   *   <dd>
+   *     The amount of taxes for the purchase item.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_purchase_item_result;
+
+  /**
+   * The key of the business in which the purchase is made.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The key of the location in which the purchase is made.
+   * This is also the booking process location.
+   *
+   * This will be `null` if not set yet or if the location can't be defined for some reason.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_location = null;
+
+  /**
+   * The discount code.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_discount_code = '';
+
+  /**
+   * The key of the user making the purchase.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
index e2089452..facfb5f2 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
@@ -1,148 +1,148 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process\Purchase;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-
-/**
- * A model of the purchase item.
- */
-class PurchaseElementModel extends WlModelAbstract
-{
-  /**
-   * A list of taxes for one purchase item.
-   * Keys - tax keys.
-   * Values - tax amount.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_tax;
-
-  /**
-   * The number of sessions which are booked simultaneously.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_session = 0;
-
-  /**
-   * The ID of the purchase item type. One of {@link WlPurchaseItemSid}.
-   *
-   * @get get
-   * @var int
-   */
-  public $id_purchase_item = 0;
-
-  /**
-   * The key of the purchase item in the database.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_id = '0';
-
-  /**
-   * The key of the location in which the purchase is made.
-   * This is also the booking process location.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * The key of the user's prize.
-   * Not empty only if the user wants to make a free visit from the prize.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_login_prize = '0';
-
-  /**
-   * Installment template key.
-   * This property is optional. `null` if installment plan doesn't exist for bought item.
-   * `0` if installment plan doesn't selected for bought item from the list of installment plans.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $k_pay_installment_template = null;
-
-  /**
-   * The cost of one purchase item (with taxes).
-   *
-   * @get result
-   * @var string
-   */
-  public $m_cost;
-
-  /**
-   * The amount of the whole discount of one purchase item.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount;
-
-  /**
-   * Amount of discount for discount code of 1 purchase item.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount_code;
-
-  /**
-   * The discount amount for the client type of one purchase item.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount_login;
-
-  /**
-   * The price of the purchase item (with or without taxes, depending on regional standards).
-   *
-   * @get result
-   * @var string
-   */
-  public $m_price;
-
-  /**
-   * Amount of subtotal for 1 purchase item.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_subtotal;
-
-  /**
-   * The amount of taxes for the one purchase item.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_tax;
-
-  /**
-   * The discount code.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_discount_code = '';
-
-  /**
-   * The key of the current user.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process\Purchase;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+
+/**
+ * A model of the purchase item.
+ */
+class PurchaseElementModel extends WlModelAbstract
+{
+  /**
+   * A list of taxes for one purchase item.
+   * Keys - tax keys.
+   * Values - tax amount.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_tax;
+
+  /**
+   * The number of sessions which are booked simultaneously.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_session = 0;
+
+  /**
+   * The ID of the purchase item type. One of {@link WlPurchaseItemSid}.
+   *
+   * @get get
+   * @var int
+   */
+  public $id_purchase_item = 0;
+
+  /**
+   * The key of the purchase item in the database.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_id = '0';
+
+  /**
+   * The key of the location in which the purchase is made.
+   * This is also the booking process location.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * The key of the user's prize.
+   * Not empty only if the user wants to make a free visit from the prize.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_login_prize = '0';
+
+  /**
+   * Installment template key.
+   * This property is optional. `null` if installment plan doesn't exist for bought item.
+   * `0` if installment plan doesn't selected for bought item from the list of installment plans.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_pay_installment_template = null;
+
+  /**
+   * The cost of one purchase item (with taxes).
+   *
+   * @get result
+   * @var string
+   */
+  public $m_cost;
+
+  /**
+   * The amount of the whole discount of one purchase item.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount;
+
+  /**
+   * Amount of discount for discount code of 1 purchase item.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount_code;
+
+  /**
+   * The discount amount for the client type of one purchase item.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount_login;
+
+  /**
+   * The price of the purchase item (with or without taxes, depending on regional standards).
+   *
+   * @get result
+   * @var string
+   */
+  public $m_price;
+
+  /**
+   * Amount of subtotal for 1 purchase item.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_subtotal;
+
+  /**
+   * The amount of taxes for the one purchase item.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_tax;
+
+  /**
+   * The discount code.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_discount_code = '';
+
+  /**
+   * The key of the current user.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php b/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
index c136f5dc..2a9c5f16 100644
--- a/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
+++ b/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
@@ -1,242 +1,242 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process\Quiz;
-
-use WellnessLiving\Core\a\ADateWeekSid;
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-
-/**
- * Manages quizzes and a selected Purchase Option for a class or event during the booking process.
- *
- * Note that the terms "Purchase Option" and "promotion" are used interchangeably.
- */
-class QuizModel extends WlModelAbstract
-{
-  /**
-   * The user's activity keys.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_login_activity = [];
-
-  /**
-   * The list of purchase items. Each element has the format <tt>[id_purchase_item]::[k_id]</tt>, where: <dl>
-   *  <dt>int <var>id_purchase_item</var></dt>
-   *  <dd>The ID of the purchase item. One of the {@link WlPurchaseItemSid} constants.</dd>
-   *  <dt>string <var>k_id</var></dt>
-   *  <dd>The item key. This depends on <var>id_purchase_item</var> of this array.</dd>
-   * </dl>
-   *
-   * This will be empty if no purchases are made for the booking.
-   *
-   * @get get
-   * @var string[]
-   */
-  public $a_purchase_item = [];
-
-  /**
-   * The list of quizzes. Each element has the next structure:<dl>
-   *  <dt>bool <var>is_require</var></dt>
-   *  <dd>Determines whether the quiz is required.</dd>
-   *  <dt>string <var>k_quiz</var></dt>
-   *  <dd>The quiz key.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_quiz = [];
-
-  /**
-   * The list of quiz response keys.
-   *
-   * Keys refer to quiz keys.
-   * And values refer to response keys.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_quiz_response = [];
-
-  /**
-   * Information about the recurring booking:
-   * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
-   *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
-   *   </dd>
-   *   <dt>
-   *     string [<var>dl_end</var>]
-   *   </dt>
-   *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_occurrence</var>]
-   *   </dt>
-   *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_period</var>
-   *   </dt>
-   *   <dd>
-   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
-   * </dl>
-   *
-   * This will be `null` if the booking isn't recurring.
-   *
-   * @post post
-   * @var array|null
-   */
-  public $a_repeat = null;
-
-  /**
-   * The selected assets.
-   *
-   * Every element has the next keys:
-   * <dl>
-   *   <dt>int <var>i_index</var></dt>
-   *   <dd>The order number of the asset (could be from 1 to the asset quantity).</dd>
-   *   <dt>string <var>k_resource</var></dt>
-   *   <dd>The asset key.</dd>
-   * </dl>
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_resource = [];
-
-  /**
-   * The selected sessions.
-   *
-   * Keys refer to class period keys.
-   * And values refer to the list of dates/times when the session occurred.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_session_select = [];
-
-  /**
-   * The selected sessions on the wait list that are unpaid.
-   *
-   * Keys refer to session IDs.
-   * And values refer to index arrays of dates/times when session occurred (n MySQL format and in GMT).
-   *
-   * @post post
-   * @var array
-   */
-  public $a_session_wait_list_unpaid = [];
-
-  /**
-   * The keys the bookings that have been made.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_visit = [];
-
-  /**
-   * Determines whether the class/event can be booked at this step or not.
-   * This is an external process control flag.
-   *
-   * @post post
-   * @var bool
-   */
-  public $can_book = true;
-
-  /**
-   * Date/time to which session is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_date_gmt = '';
-
-  /**
-   * The mode type. One of the {@link ModeSid} constants.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * `true` if user pressed 'Pay later'.
-   * `false` if user pressed 'Pay now'.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_force_pay_later = false;
-
-  /**
-   * If `true`, the next steps of the booking wizard are required for the purchase or booking. Otherwise, this will be `false`.
-   *
-   * @post result
-   * @var bool
-   */
-  public $is_next;
-
-  /**
-   * Key of session which is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * Login promotion to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_login_promotion = '';
-
-  /**
-   * Session pass to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_session_pass = '';
-
-  /**
-   * Key of a user who is making a book.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process\Quiz;
+
+use WellnessLiving\Core\a\ADateWeekSid;
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+
+/**
+ * Manages quizzes and a selected Purchase Option for a class or event during the booking process.
+ *
+ * Note that the terms "Purchase Option" and "promotion" are used interchangeably.
+ */
+class QuizModel extends WlModelAbstract
+{
+  /**
+   * The user's activity keys.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_login_activity = [];
+
+  /**
+   * The list of purchase items. Each element has the format <tt>[id_purchase_item]::[k_id]</tt>, where: <dl>
+   *  <dt>int <var>id_purchase_item</var></dt>
+   *  <dd>The ID of the purchase item. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *  <dt>string <var>k_id</var></dt>
+   *  <dd>The item key. This depends on <var>id_purchase_item</var> of this array.</dd>
+   * </dl>
+   *
+   * This will be empty if no purchases are made for the booking.
+   *
+   * @get get
+   * @var string[]
+   */
+  public $a_purchase_item = [];
+
+  /**
+   * The list of quizzes. Each element has the next structure:<dl>
+   *  <dt>bool <var>is_require</var></dt>
+   *  <dd>Determines whether the quiz is required.</dd>
+   *  <dt>string <var>k_quiz</var></dt>
+   *  <dd>The quiz key.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_quiz = [];
+
+  /**
+   * The list of quiz response keys.
+   *
+   * Keys refer to quiz keys.
+   * And values refer to response keys.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_quiz_response = [];
+
+  /**
+   * Information about the recurring booking:
+   * <dl>
+   *   <dt>
+   *     int[] [<var>a_week</var>]
+   *   </dt>
+   *   <dd>
+   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
+   *     This will be empty if the appointment doesn't repeat weekly.
+   *   </dd>
+   *   <dt>
+   *     string [<var>dl_end</var>]
+   *   </dt>
+   *   <dd>
+   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_occurrence</var>]
+   *   </dt>
+   *   <dd>
+   *     The number of occurrences after which the appointment's repeat cycle stops.
+   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_period</var>
+   *   </dt>
+   *   <dd>
+   *     The frequency of the appointment's repeat cycle.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_period</var>
+   *   </dt>
+   *   <dd>
+   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_month</var>]
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - the appointment repeats monthly on the same date.
+   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
+   *     <tt>null</tt> - the appointment doesn't repeat monthly.
+   *   </dd>
+   * </dl>
+   *
+   * This will be `null` if the booking isn't recurring.
+   *
+   * @post post
+   * @var array|null
+   */
+  public $a_repeat = null;
+
+  /**
+   * The selected assets.
+   *
+   * Every element has the next keys:
+   * <dl>
+   *   <dt>int <var>i_index</var></dt>
+   *   <dd>The order number of the asset (could be from 1 to the asset quantity).</dd>
+   *   <dt>string <var>k_resource</var></dt>
+   *   <dd>The asset key.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_resource = [];
+
+  /**
+   * The selected sessions.
+   *
+   * Keys refer to class period keys.
+   * And values refer to the list of dates/times when the session occurred.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_session_select = [];
+
+  /**
+   * The selected sessions on the wait list that are unpaid.
+   *
+   * Keys refer to session IDs.
+   * And values refer to index arrays of dates/times when session occurred (n MySQL format and in GMT).
+   *
+   * @post post
+   * @var array
+   */
+  public $a_session_wait_list_unpaid = [];
+
+  /**
+   * The keys the bookings that have been made.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_visit = [];
+
+  /**
+   * Determines whether the class/event can be booked at this step or not.
+   * This is an external process control flag.
+   *
+   * @post post
+   * @var bool
+   */
+  public $can_book = true;
+
+  /**
+   * Date/time to which session is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_date_gmt = '';
+
+  /**
+   * The mode type. One of the {@link ModeSid} constants.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * `true` if user pressed 'Pay later'.
+   * `false` if user pressed 'Pay now'.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_force_pay_later = false;
+
+  /**
+   * If `true`, the next steps of the booking wizard are required for the purchase or booking. Otherwise, this will be `false`.
+   *
+   * @post result
+   * @var bool
+   */
+  public $is_next;
+
+  /**
+   * Key of session which is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * Login promotion to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_login_promotion = '';
+
+  /**
+   * Session pass to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_session_pass = '';
+
+  /**
+   * Key of a user who is making a book.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Relation/RelationModel.php b/WellnessLiving/Wl/Book/Process/Relation/RelationModel.php
index 98f377a1..524bf8b7 100644
--- a/WellnessLiving/Wl/Book/Process/Relation/RelationModel.php
+++ b/WellnessLiving/Wl/Book/Process/Relation/RelationModel.php
@@ -1,144 +1,144 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process\Relation;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
-
-/**
- * Adds a relative during the booking process.
- */
-class RelationModel extends WlModelAbstract
-{
-  /**
-   * The date/time of the session to check for booking availability.
-   *
-   * @get get
-   * @var string
-   */
-  public $dtu_date = '';
-
-  /**
-   * Day of birthday.
-   * `null` if birthday is not entered.
-   *
-   * @post post
-   * @var int|null
-   */
-  public $i_day = null;
-
-  /**
-   * Month of birthday.
-   * `null` if birthday is not entered.
-   *
-   * @post post
-   * @var int|null
-   */
-  public $i_month = null;
-
-  /**
-   * Year of birthday.
-   * `null` if birthday is not entered.
-   *
-   * @post post
-   * @var int|null
-   */
-  public $i_year = null;
-
-  /**
-   * The relation type.
-   * One of the {@link WlFamilyRelationSid} constants.
-   *
-   * @post post
-   * @var int
-   */
-  public $id_relation = 0;
-
-  /**
-   * `true` - the new relative uses the email from <var>uid_from</var>.
-   *
-   * `false` - the new relative has their own email.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_mail_inherit = false;
-
-  /**
-   * `true` - the new relative pays for themself.
-   *
-   * `false` - <var>uid_from</var> pays for the new relative.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_pay_self = false;
-
-  /**
-   * The business where <var>uid_from</var> creates the new relative.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The key of the session to check for booking availability.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * The new relative's email.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_mail = '';
-
-  /**
-   * The new relative's first name.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_name_first = '';
-
-  /**
-   * The new relative's last name.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_name_last = '';
-
-  /**
-   * The newly added relative.
-   *
-   * @post result
-   * @var string
-   */
-  public $uid_create;
-
-  /**
-   * UID of already existed in another business user.
-   *
-   * @post post
-   * @var string
-   */
-  public $uid_existed = '';
-
-  /**
-   * The user who's adding the new relative.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid_from = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process\Relation;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
+
+/**
+ * Adds a relative during the booking process.
+ */
+class RelationModel extends WlModelAbstract
+{
+  /**
+   * The date/time of the session to check for booking availability.
+   *
+   * @get get
+   * @var string
+   */
+  public $dtu_date = '';
+
+  /**
+   * Day of birthday.
+   * `null` if birthday is not entered.
+   *
+   * @post post
+   * @var int|null
+   */
+  public $i_day = null;
+
+  /**
+   * Month of birthday.
+   * `null` if birthday is not entered.
+   *
+   * @post post
+   * @var int|null
+   */
+  public $i_month = null;
+
+  /**
+   * Year of birthday.
+   * `null` if birthday is not entered.
+   *
+   * @post post
+   * @var int|null
+   */
+  public $i_year = null;
+
+  /**
+   * The relation type.
+   * One of the {@link WlFamilyRelationSid} constants.
+   *
+   * @post post
+   * @var int
+   */
+  public $id_relation = 0;
+
+  /**
+   * `true` - the new relative uses the email from <var>uid_from</var>.
+   *
+   * `false` - the new relative has their own email.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_mail_inherit = false;
+
+  /**
+   * `true` - the new relative pays for themself.
+   *
+   * `false` - <var>uid_from</var> pays for the new relative.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_pay_self = false;
+
+  /**
+   * The business where <var>uid_from</var> creates the new relative.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The key of the session to check for booking availability.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * The new relative's email.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_mail = '';
+
+  /**
+   * The new relative's first name.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_name_first = '';
+
+  /**
+   * The new relative's last name.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_name_last = '';
+
+  /**
+   * The newly added relative.
+   *
+   * @post result
+   * @var string
+   */
+  public $uid_create;
+
+  /**
+   * UID of already existed in another business user.
+   *
+   * @post post
+   * @var string
+   */
+  public $uid_existed = '';
+
+  /**
+   * The user who's adding the new relative.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid_from = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php b/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
index aef5e88d..f0a811f1 100644
--- a/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
@@ -1,322 +1,322 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process\Resource;
-
-use WellnessLiving\Core\a\ADateWeekSid;
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Book\Process\ProcessSpaSid;
-use WellnessLiving\Wl\Mode\ModeSid;
-
-/**
- * Selects assets when making a booking.
- *
- * Take note of the {@link ProcessSpaSid::QUIZ} step.
- */
-class Resource54Model extends WlModelAbstract
-{
-  /**
-   * The keys of a user's activity.
-   * This won't be empty only if the session(s) was booked at this step.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_login_activity = [];
-
-  /**
-   * Information about the recurring booking:
-   * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
-   *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
-   *   </dd>
-   *   <dt>
-   *     string [<var>dl_end</var>]
-   *   </dt>
-   *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_occurrence</var>]
-   *   </dt>
-   *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_period</var>
-   *   </dt>
-   *   <dd>
-   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
-   * </dl>
-   *
-   * This will be `null` if the booking isn't recurring.
-   *
-   * @post post
-   * @var array|null
-   */
-  public $a_repeat = null;
-
-  /**
-   * A list of asset categories which are available for specified session. Every element has next keys:
-   * <dl>
-   *   <dt>
-   *     array <var>a_client</var>
-   *   </dt>
-   *   <dd>
-   *     A list of clients who have already occupied assets for this session.
-   *     1st level keys - asset keys; 2nd level keys - asset number.
-   *     For example, if you want to check if 10th asset with key '125' is free,
-   *     you have to check if <tt>a_client['125']['10']</tt> is empty.
-   *   </dd>
-   *   <dt>
-   *     array[] <var>a_resource_list</var>
-   *   </dt>
-   *   <dd>
-   *     A list of available assets. Every element has next keys:
-   *     <dl>
-   *       <dt>
-   *         array <var>a_image</var>
-   *       </dt>
-   *       <dd>
-   *         Asset image data.
-   *       </dd>
-   *       <dt>
-   *         int <var>i_index</var>
-   *       </dt>
-   *       <dd>
-   *         The asset number. Actual for assets with a quantity more than <tt>1</tt>.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_current</var>
-   *       </dt>
-   *       <dd>
-   *         <tt>true</tt> means that this asset is selected by client, <tt>false</tt> - otherwise.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_resource</var>
-   *       </dt>
-   *       <dd>
-   *         The key of the asset in database.
-   *
-   *       </dd>
-   *       <dt>
-   *         string <var>s_resource</var>
-   *       </dt>
-   *       <dd>
-   *         The title of the asset.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     bool <var>has_current</var>
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - has current resource in the list of available assets; <tt>false</tt> - otherwise.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_client_select</var>
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the client selected the resource from the current group; <tt>false</tt> otherwise.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_select</var>
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - has selected resources; <tt>false</tt> - otherwise.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_share</var>
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> resources in this category don't belong to certain users, but to the entire session.
-   *     <tt>false</tt> belong to specific users.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_resource_layout</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the asset layout.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_resource_type</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the asset category.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_resource_type</var>
-   *   </dt>
-   *   <dd>
-   *     The title of the asset category.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_resource_all = [];
-
-  /**
-   * The selected assets. Every element has the next keys:
-   * <dl>
-   *   <dt>int <var>i_index</var></dt>
-   *   <dd>The asset number. Applies only for assets with a quantity greater than <tt>1</tt>.</dd>
-   *   <dt>string <var>k_resource</var></dt>
-   *   <dd>The asset key.</dd>
-   * </dl>
-   *
-   * @post post
-   * @var array
-   */
-  public $a_resource_select = [];
-
-  /**
-   * The selected sessions.
-   * Not empty only for session mode.
-   *
-   * Keys refer to class period keys.
-   * And values refer to a list of the dates/times when the session occurred (returned in MySQL format and in GMT).
-   *
-   * @get get
-   * @post get
-   * @var array
-   */
-  public $a_session = [];
-
-  /**
-   * The selected sessions on the wait list that are unpaid.
-   *
-   * Keys refer to session IDs.
-   * And values refer to index arrays of dates/times when the session occurred (returned in MySQL format and in GMT).
-   *
-   * @post post
-   * @var array
-   */
-  public $a_session_wait_list_unpaid = [];
-
-  /**
-   * The keys of the bookings that have been made.
-   * Not empty only if session(s) was booked on this step.
-   *
-   * @post result
-   * @var string[]
-   */
-  public $a_visit = [];
-
-  /**
-   * Determines whether the class/event can be booked at this step or not.
-   * This is an external process control flag.
-   *
-   * @post post
-   * @var bool
-   */
-  public $can_book = true;
-
-  /**
-   * Date/time to which session is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_date_gmt = '';
-
-  /**
-   * The mode type. One of the {@link ModeSid} constants.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * `true` if user pressed 'Pay later'.
-   * `false` if user pressed 'Pay now'.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_force_pay_later = false;
-
-  /**
-   * `true` - the next steps of the booking wizard are required (for example, to purchase something to book the selected session).
-   * `false` - no further booking steps are required.
-   *
-   * @post result
-   * @var bool
-   */
-  public $is_next = false;
-
-  /**
-   * Selected sessions.
-   * Not empty only for session mode.
-   *
-   * Fields - IDs of sessions in database.
-   * Values - arrays of date/time when session is occurred. In MySQL format. In GMT.
-   *
-   * Serialized with JSON.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $json_session = '';
-
-  /**
-   * Key of session which is booked.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * Login promotion to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_login_promotion = '';
-
-  /**
-   * Session pass to be used to book a class.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_session_pass = '';
-
-  /**
-   * Key of a user who is making a book.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Book\Process\Resource;
+
+use WellnessLiving\Core\a\ADateWeekSid;
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Book\Process\ProcessSpaSid;
+use WellnessLiving\Wl\Mode\ModeSid;
+
+/**
+ * Selects assets when making a booking.
+ *
+ * Take note of the {@link ProcessSpaSid::QUIZ} step.
+ */
+class Resource54Model extends WlModelAbstract
+{
+  /**
+   * The keys of a user's activity.
+   * This won't be empty only if the session(s) was booked at this step.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_login_activity = [];
+
+  /**
+   * Information about the recurring booking:
+   * <dl>
+   *   <dt>
+   *     int[] [<var>a_week</var>]
+   *   </dt>
+   *   <dd>
+   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
+   *     This will be empty if the appointment doesn't repeat weekly.
+   *   </dd>
+   *   <dt>
+   *     string [<var>dl_end</var>]
+   *   </dt>
+   *   <dd>
+   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *   </dd>
+   *   <dt>
+   *     int [<var>i_occurrence</var>]
+   *   </dt>
+   *   <dd>
+   *     The number of occurrences after which the appointment's repeat cycle stops.
+   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_period</var>
+   *   </dt>
+   *   <dd>
+   *     The frequency of the appointment's repeat cycle.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_period</var>
+   *   </dt>
+   *   <dd>
+   *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_month</var>]
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - the appointment repeats monthly on the same date.
+   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
+   *     <tt>null</tt> - the appointment doesn't repeat monthly.
+   *   </dd>
+   * </dl>
+   *
+   * This will be `null` if the booking isn't recurring.
+   *
+   * @post post
+   * @var array|null
+   */
+  public $a_repeat = null;
+
+  /**
+   * A list of asset categories which are available for specified session. Every element has next keys:
+   * <dl>
+   *   <dt>
+   *     array <var>a_client</var>
+   *   </dt>
+   *   <dd>
+   *     A list of clients who have already occupied assets for this session.
+   *     1st level keys - asset keys; 2nd level keys - asset number.
+   *     For example, if you want to check if 10th asset with key '125' is free,
+   *     you have to check if <tt>a_client['125']['10']</tt> is empty.
+   *   </dd>
+   *   <dt>
+   *     array[] <var>a_resource_list</var>
+   *   </dt>
+   *   <dd>
+   *     A list of available assets. Every element has next keys:
+   *     <dl>
+   *       <dt>
+   *         array <var>a_image</var>
+   *       </dt>
+   *       <dd>
+   *         Asset image data.
+   *       </dd>
+   *       <dt>
+   *         int <var>i_index</var>
+   *       </dt>
+   *       <dd>
+   *         The asset number. Actual for assets with a quantity more than <tt>1</tt>.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_current</var>
+   *       </dt>
+   *       <dd>
+   *         <tt>true</tt> means that this asset is selected by client, <tt>false</tt> - otherwise.
+   *       </dd>
+   *       <dt>
+   *         string <var>k_resource</var>
+   *       </dt>
+   *       <dd>
+   *         The key of the asset in database.
+   *
+   *       </dd>
+   *       <dt>
+   *         string <var>s_resource</var>
+   *       </dt>
+   *       <dd>
+   *         The title of the asset.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     bool <var>has_current</var>
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - has current resource in the list of available assets; <tt>false</tt> - otherwise.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_client_select</var>
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - the client selected the resource from the current group; <tt>false</tt> otherwise.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_select</var>
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - has selected resources; <tt>false</tt> - otherwise.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_share</var>
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> resources in this category don't belong to certain users, but to the entire session.
+   *     <tt>false</tt> belong to specific users.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_resource_layout</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the asset layout.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_resource_type</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the asset category.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_resource_type</var>
+   *   </dt>
+   *   <dd>
+   *     The title of the asset category.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_resource_all = [];
+
+  /**
+   * The selected assets. Every element has the next keys:
+   * <dl>
+   *   <dt>int <var>i_index</var></dt>
+   *   <dd>The asset number. Applies only for assets with a quantity greater than <tt>1</tt>.</dd>
+   *   <dt>string <var>k_resource</var></dt>
+   *   <dd>The asset key.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var array
+   */
+  public $a_resource_select = [];
+
+  /**
+   * The selected sessions.
+   * Not empty only for session mode.
+   *
+   * Keys refer to class period keys.
+   * And values refer to a list of the dates/times when the session occurred (returned in MySQL format and in GMT).
+   *
+   * @get get
+   * @post get
+   * @var array
+   */
+  public $a_session = [];
+
+  /**
+   * The selected sessions on the wait list that are unpaid.
+   *
+   * Keys refer to session IDs.
+   * And values refer to index arrays of dates/times when the session occurred (returned in MySQL format and in GMT).
+   *
+   * @post post
+   * @var array
+   */
+  public $a_session_wait_list_unpaid = [];
+
+  /**
+   * The keys of the bookings that have been made.
+   * Not empty only if session(s) was booked on this step.
+   *
+   * @post result
+   * @var string[]
+   */
+  public $a_visit = [];
+
+  /**
+   * Determines whether the class/event can be booked at this step or not.
+   * This is an external process control flag.
+   *
+   * @post post
+   * @var bool
+   */
+  public $can_book = true;
+
+  /**
+   * Date/time to which session is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_date_gmt = '';
+
+  /**
+   * The mode type. One of the {@link ModeSid} constants.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * `true` if user pressed 'Pay later'.
+   * `false` if user pressed 'Pay now'.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_force_pay_later = false;
+
+  /**
+   * `true` - the next steps of the booking wizard are required (for example, to purchase something to book the selected session).
+   * `false` - no further booking steps are required.
+   *
+   * @post result
+   * @var bool
+   */
+  public $is_next = false;
+
+  /**
+   * Selected sessions.
+   * Not empty only for session mode.
+   *
+   * Fields - IDs of sessions in database.
+   * Values - arrays of date/time when session is occurred. In MySQL format. In GMT.
+   *
+   * Serialized with JSON.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $json_session = '';
+
+  /**
+   * Key of session which is booked.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * Login promotion to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_login_promotion = '';
+
+  /**
+   * Session pass to be used to book a class.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_session_pass = '';
+
+  /**
+   * Key of a user who is making a book.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/doc/Questions.md b/WellnessLiving/Wl/Book/Process/doc/Questions.md
index 78c81485..e7c171d0 100644
--- a/WellnessLiving/Wl/Book/Process/doc/Questions.md
+++ b/WellnessLiving/Wl/Book/Process/doc/Questions.md
@@ -1,7 +1,7 @@
-# Question
-I have an event with purchase rule "Clients can pay online or pay when they visit".  
-I POST anny model in module `Wl\Book\Process` to book event without payment.  
-I get error "You can not book this class without payment".  
-How can I book an event without payment?
-# Answer
+# Question
+I have an event with purchase rule "Clients can pay online or pay when they visit".  
+I POST anny model in module `Wl\Book\Process` to book event without payment.  
+I get error "You can not book this class without payment".  
+How can I book an event without payment?
+# Answer
 You have to set `is_force_pay_later` field of your model to `true`.
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Account/BusinessAccountModel.php b/WellnessLiving/Wl/Business/Account/BusinessAccountModel.php
index 9f66143d..bf39ffb3 100644
--- a/WellnessLiving/Wl/Business/Account/BusinessAccountModel.php
+++ b/WellnessLiving/Wl/Business/Account/BusinessAccountModel.php
@@ -1,43 +1,43 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Account;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Gets a list of active businesses.
- *
- * To run this endpoint, a user must be authorized with the `rs.business.view` privilege.
- */
-class BusinessAccountModel extends WlModelAbstract
-{
-  /**
-   * A list of business keys.
-   *
-   * @get result
-   * @var string[]
-   */
-  public $a_business_keys = [];
-
-  /**
-   * `true` returns WellnessLiving customers.
-   *
-   * `false` returns prospects.
-   *
-   * Test and churned businesses are never returned.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_prospects = false;
-
-  /**
-   * Specifies if only businesses having published locations should be returned.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_published = false;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Account;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Gets a list of active businesses.
+ *
+ * To run this endpoint, a user must be authorized with the `rs.business.view` privilege.
+ */
+class BusinessAccountModel extends WlModelAbstract
+{
+  /**
+   * A list of business keys.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_business_keys = [];
+
+  /**
+   * `true` returns WellnessLiving customers.
+   *
+   * `false` returns prospects.
+   *
+   * Test and churned businesses are never returned.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_prospects = false;
+
+  /**
+   * Specifies if only businesses having published locations should be returned.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_published = false;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/AmazonRegion/AmazonRegionModel.php b/WellnessLiving/Wl/Business/AmazonRegion/AmazonRegionModel.php
index b1cf5edf..04ed70ef 100644
--- a/WellnessLiving/Wl/Business/AmazonRegion/AmazonRegionModel.php
+++ b/WellnessLiving/Wl/Business/AmazonRegion/AmazonRegionModel.php
@@ -1,34 +1,34 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\AmazonRegion;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlRegionSid;
-
-/**
- * An endpoint for retrieve region ID for businesses.
- */
-class AmazonRegionModel extends WlModelAbstract
-{
-  /**
-   * List of business key.
-   *
-   * @get get
-   * @var string[]
-   */
-  public $a_business = [];
-
-  /**
-   * List of region IDs for {@link AmazonRegionModel::$a_business}.
-   *
-   * Key - is business key.
-   * Value - is region ID. One of {@link WlRegionSid} constants.
-   *   `0` if this business is form an unknown region.
-   *
-   * @get result
-   * @var int[]
-   */
-  public $a_business_region;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\AmazonRegion;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlRegionSid;
+
+/**
+ * An endpoint for retrieve region ID for businesses.
+ */
+class AmazonRegionModel extends WlModelAbstract
+{
+  /**
+   * List of business key.
+   *
+   * @get get
+   * @var string[]
+   */
+  public $a_business = [];
+
+  /**
+   * List of region IDs for {@link AmazonRegionModel::$a_business}.
+   *
+   * Key - is business key.
+   * Value - is region ID. One of {@link WlRegionSid} constants.
+   *   `0` if this business is form an unknown region.
+   *
+   * @get result
+   * @var int[]
+   */
+  public $a_business_region;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/BusinessAccessModel.php b/WellnessLiving/Wl/Business/BusinessAccessModel.php
index 52691ce6..cad63d5e 100644
--- a/WellnessLiving/Wl/Business/BusinessAccessModel.php
+++ b/WellnessLiving/Wl/Business/BusinessAccessModel.php
@@ -1,112 +1,112 @@
-<?php
-
-namespace WellnessLiving\Wl\Business;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlRegionSid;
-
-/**
- * Returns information about a given staff member's business.
- */
-class BusinessAccessModel extends WlModelAbstract
-{
-  /**
-   * The businesses the staff member belongs to.
-   * Note that this field is here for backwards compatibility.
-   *
-   * @get result
-   * @var string[]
-   */
-  public $a_business = [];
-
-  /**
-   * The list of accessible businesses with their corresponding data. Each value is an array with the next structure:
-   * <dl>
-   *   <dt>int <var>id_region</var></dt>
-   *   <dd>The business region. One of the {@link WlRegionSid} constants. This will be `null` if no regions are currently set.</dd>
-   *   <dt>string <var>k_business</var></dt>
-   *   <dd>The business key.</dd>
-   *   <dt>string <var>text_office_address</var></dt>
-   *   <dd>The business address.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>The business title.</dd>
-   *   <dt>string <var>url_logo</var></dt>
-   *   <dd>The business logo URL. This will be empty if the business hasn't added a logo.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_business_data = [];
-
-  /**
-   * This will be `true` if the API is being used from the backend. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_backend = true;
-
-  /**
-   * The staff member's Facebook ID. This won't be empty if the staff member is logging in with Facebook.
-   * This will be empty if the UID is already known or the staff member is logging in another way.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_facebook_id = '';
-
-  /**
-   * The staff member's Microsoft key.
-   * This won't be empty if the staff member is logging in with Microsoft.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_microsoft_id = '';
-
-  /**
-   * The staff member's Apple authorization code. This won't be empty if the staff member is logging in with Apple.
-   * This will be empty if the UID is already known or the staff member is logging in another way.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_authorization_apple = '';
-
-  /**
-   * The Google Plus user ID. This won't be empty if the staff member is logging in with Google.
-   * This will be empty if the UID is already known or the staff member is logging in another way.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_google_plus = '';
-
-  /**
-   * The staff member's email to determine their UID. This won't be empty if the staff member is logging in with email or with Google.
-   * This will be empty if the UID is already known or the staff member is logging in another way.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_mail = '';
-
-  /**
-   * User key. Empty if user is not logged in, but their authorization data is known.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '';
-
-  /**
-   * The staff member key, determined by their email. This will be empty if the UID isn't empty.
-   *
-   * @get result
-   * @var string
-   */
-  public $uid_mail = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlRegionSid;
+
+/**
+ * Returns information about a given staff member's business.
+ */
+class BusinessAccessModel extends WlModelAbstract
+{
+  /**
+   * The businesses the staff member belongs to.
+   * Note that this field is here for backwards compatibility.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_business = [];
+
+  /**
+   * The list of accessible businesses with their corresponding data. Each value is an array with the next structure:
+   * <dl>
+   *   <dt>int <var>id_region</var></dt>
+   *   <dd>The business region. One of the {@link WlRegionSid} constants. This will be `null` if no regions are currently set.</dd>
+   *   <dt>string <var>k_business</var></dt>
+   *   <dd>The business key.</dd>
+   *   <dt>string <var>text_office_address</var></dt>
+   *   <dd>The business address.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>The business title.</dd>
+   *   <dt>string <var>url_logo</var></dt>
+   *   <dd>The business logo URL. This will be empty if the business hasn't added a logo.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_business_data = [];
+
+  /**
+   * This will be `true` if the API is being used from the backend. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_backend = true;
+
+  /**
+   * The staff member's Facebook ID. This won't be empty if the staff member is logging in with Facebook.
+   * This will be empty if the UID is already known or the staff member is logging in another way.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_facebook_id = '';
+
+  /**
+   * The staff member's Microsoft key.
+   * This won't be empty if the staff member is logging in with Microsoft.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_microsoft_id = '';
+
+  /**
+   * The staff member's Apple authorization code. This won't be empty if the staff member is logging in with Apple.
+   * This will be empty if the UID is already known or the staff member is logging in another way.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_authorization_apple = '';
+
+  /**
+   * The Google Plus user ID. This won't be empty if the staff member is logging in with Google.
+   * This will be empty if the UID is already known or the staff member is logging in another way.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_google_plus = '';
+
+  /**
+   * The staff member's email to determine their UID. This won't be empty if the staff member is logging in with email or with Google.
+   * This will be empty if the UID is already known or the staff member is logging in another way.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_mail = '';
+
+  /**
+   * User key. Empty if user is not logged in, but their authorization data is known.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '';
+
+  /**
+   * The staff member key, determined by their email. This will be empty if the UID isn't empty.
+   *
+   * @get result
+   * @var string
+   */
+  public $uid_mail = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/BusinessCategorySid.php b/WellnessLiving/Wl/Business/BusinessCategorySid.php
index 7d6f92e8..cae33d1a 100644
--- a/WellnessLiving/Wl/Business/BusinessCategorySid.php
+++ b/WellnessLiving/Wl/Business/BusinessCategorySid.php
@@ -1,43 +1,43 @@
-<?php
-
-namespace WellnessLiving\Wl\Business;
-
-/**
- * A list of client booking flow types.
- *
- * Last ID: 6.
- */
-abstract class BusinessCategorySid
-{
-  /**
-   * Dental businesses.
-   */
-  const DENTIST = 4;
-
-  /**
-   * Complementary and alternative medicine.
-   */
-  const MEDICINE_ALTERNATIVE = 5;
-
-  /**
-   * Traditional medicine
-   */
-  const MEDICINE_CLASSIC = 3;
-
-  /**
-   * Musician schools.
-   */
-  const MUSIC = 6;
-
-  /**
-   * Spa saloons.
-   */
-  const SPA = 2;
-
-  /**
-   * Yoga and Fitness studios and gyms.
-   */
-  const SPORT = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business;
+
+/**
+ * A list of client booking flow types.
+ *
+ * Last ID: 6.
+ */
+abstract class BusinessCategorySid
+{
+  /**
+   * Dental businesses.
+   */
+  const DENTIST = 4;
+
+  /**
+   * Complementary and alternative medicine.
+   */
+  const MEDICINE_ALTERNATIVE = 5;
+
+  /**
+   * Traditional medicine
+   */
+  const MEDICINE_CLASSIC = 3;
+
+  /**
+   * Musician schools.
+   */
+  const MUSIC = 6;
+
+  /**
+   * Spa saloons.
+   */
+  const SPA = 2;
+
+  /**
+   * Yoga and Fitness studios and gyms.
+   */
+  const SPORT = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/BusinessModel.php b/WellnessLiving/Wl/Business/BusinessModel.php
index 1869f2e9..5a5c6825 100644
--- a/WellnessLiving/Wl/Business/BusinessModel.php
+++ b/WellnessLiving/Wl/Business/BusinessModel.php
@@ -1,79 +1,79 @@
-<?php
-
-namespace WellnessLiving\Wl\Business;
-
-use WellnessLiving\Core\Locale\LocaleSid;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Creates a new business.
- */
-class BusinessModel extends WlModelAbstract
-{
-  /**
-   * The business locale.
-   *
-   * @post post
-   * @var int
-   * @see LocaleSid
-   */
-  public $id_locale;
-
-  /**
-   * The key of the created business.
-   *
-   * @post result
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The key of the business type.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business_type;
-
-  /**
-   * The city key of the business.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_office_city;
-
-  /**
-   * The address of the business.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_office_address;
-
-  /**
-   * The postal code of the business.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_office_postal;
-
-  /**
-   * The phone number of the business.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_phone;
-
-  /**
-   * The title of the business.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_title;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business;
+
+use WellnessLiving\Core\Locale\LocaleSid;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Creates a new business.
+ */
+class BusinessModel extends WlModelAbstract
+{
+  /**
+   * The business locale.
+   *
+   * @post post
+   * @var int
+   * @see LocaleSid
+   */
+  public $id_locale;
+
+  /**
+   * The key of the created business.
+   *
+   * @post result
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The key of the business type.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business_type;
+
+  /**
+   * The city key of the business.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_office_city;
+
+  /**
+   * The address of the business.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_office_address;
+
+  /**
+   * The postal code of the business.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_office_postal;
+
+  /**
+   * The phone number of the business.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_phone;
+
+  /**
+   * The title of the business.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_title;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/BusinessPaymentCaptcha.php b/WellnessLiving/Wl/Business/BusinessPaymentCaptcha.php
index 6cdfb8ef..e2640230 100644
--- a/WellnessLiving/Wl/Business/BusinessPaymentCaptcha.php
+++ b/WellnessLiving/Wl/Business/BusinessPaymentCaptcha.php
@@ -1,16 +1,16 @@
-<?php
-
-namespace WellnessLiving\Wl\Business;
-
-/**
- * Captcha for payment action.
- */
-class BusinessPaymentCaptcha
-{
-  /**
-   * CID of this class.
-   */
-  const CID = 1064;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business;
+
+/**
+ * Captcha for payment action.
+ */
+class BusinessPaymentCaptcha
+{
+  /**
+   * CID of this class.
+   */
+  const CID = 1064;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Config/BusinessConfigModel.php b/WellnessLiving/Wl/Business/Config/BusinessConfigModel.php
index 483c6aa0..8ad58634 100644
--- a/WellnessLiving/Wl/Business/Config/BusinessConfigModel.php
+++ b/WellnessLiving/Wl/Business/Config/BusinessConfigModel.php
@@ -1,104 +1,104 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Config;
-
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlServiceSid;
-
-/**
- * Manages business configurations for clients, bookings, payments, and related things.
- */
-class BusinessConfigModel extends WlModelAbstract
-{
-  /**
-   * All business policies connected to clients and bookings.
-   *
-   * <dl>
-   *   <dt>int <var>a_wait_service</var></dt>
-   *   <dd>The keys are listed as IDs from {@link WlServiceSid}, and values are flags outlining whether wait listing is allowed.</dd>
-   *   <dt>int <var>i_book_before</var></dt>
-   *   <dd>The minimum hours|days|months before a class can be booked.</dd>
-   *   <dt>int <var>i_book_future</var></dt>
-   *   <dd>The maximum hours|days|months after a class can be booked.</dd>
-   *   <dt>int <var>i_cancel</var></dt>
-   *   <dd>The minimum hours|days|months before a class can be canceled without penalty.</dd>
-   *   <dt>int <var>i_promote</var></dt>
-   *   <dd>The minimum hours|days|months before a class can be promoted from a wait list.</dd>
-   *   <dt>int <var>i_reattempt_count</var></dt>
-   *   <dd>The number of failed auto-payment reattempts.</dd>
-   *   <dt>int <var>id_book_before</var></dt>
-   *   <dd>The hours|days|months from {@link ADurationSid}.</dd>
-   *   <dt>int <var>id_book_future</var></dt>
-   *   <dd>The hours|days|months from {@link ADurationSid}.</dd>
-   *   <dt>int <var>id_cancel</var></dt>
-   *   <dd>The hours|days|months from {@link ADurationSid}.</dd>
-   *   <dt>int <var>id_promote</var></dt>
-   *   <dd>The hours|days|months from {@link ADurationSid}.</dd>
-   *   <dt>bool <var>is_book_inside_active_pay_period</var></dt>
-   *   <dd>
-   *     `true` - clients with Purchase Options are only allowed to book sessions within their current paid period.<br>
-   *     `false` - clients with Purchase Options are only allowed to book sessions during the Purchase Option's duration.
-   *   </dd>
-   *   <dt>int <var>is_disable_promotion</var></dt>
-   *   <dd>
-   *     If `true`, a client's automatic payment fails, their account shouldn't be debited, and their Purchase Option becomes inactive.
-   *     Otherwise, this will be `false` (the default value).
-   *   </dd>
-   *   <dt>bool <var>is_enable_payment_penalty</var></dt>
-   *   <dd>Determines whether to charge a penalty after the final auto-payment attempt.</dd>
-   *   <dt>bool <var>is_enable_payment_reattempt</var></dt>
-   *   <dd>Determines whether to reattempt failed auto-payments.</dd>
-   *   <dt>bool <var>is_enable_staff_ip_restriction</var></dt>
-   *   <dd>Determines whether to restrict which IP addresses staff can login from.</dd>
-   *   <dt>int <var>is_prevent_booking</var></dt>
-   *   <dd>If `true`, booking for a client with negative balance is disabled. Otherwise, this will be `false` (the default value).</dd>
-   *   <dt>bool <var>is_staff_restrict</var></dt>
-   *   <dd>If true, clients can't choose a provider in the appointment wizard. Otherwise, this will be `false`.</dd>
-   *   <dt>bool <var>is_wait</var></dt>
-   *   <dd>Determines whether to enable or disable the wait list.</dd>
-   *   <dt>int <var>k_currency</var></dt>
-   *   <dd>The currency.</dd>
-   *   <dt>int <var>k_timezone</var></dt>
-   *   <dd>The time zone.</dd>
-   *   <dt>string <var>m_payment_penalty</var></dt>
-   *   <dd>The penalty amount to charge after the final auto-payment attempt.</dd>
-   *   <dt>string <var>url_custom</var></dt>
-   *   <dd>The custom URL from Business URLs.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_business_policy;
-
-  /**
-   * Determines whether staff members should select a location at checkout.
-   *
-   * If `true`, staff members should select a location at checkout. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_location_select;
-
-  /**
-   * Determines whether the business has white label setting enabled in the admin settings.
-   *
-   * If `true`, admin settings are enabled. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_white_label = false;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Config;
+
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlServiceSid;
+
+/**
+ * Manages business configurations for clients, bookings, payments, and related things.
+ */
+class BusinessConfigModel extends WlModelAbstract
+{
+  /**
+   * All business policies connected to clients and bookings.
+   *
+   * <dl>
+   *   <dt>int <var>a_wait_service</var></dt>
+   *   <dd>The keys are listed as IDs from {@link WlServiceSid}, and values are flags outlining whether wait listing is allowed.</dd>
+   *   <dt>int <var>i_book_before</var></dt>
+   *   <dd>The minimum hours|days|months before a class can be booked.</dd>
+   *   <dt>int <var>i_book_future</var></dt>
+   *   <dd>The maximum hours|days|months after a class can be booked.</dd>
+   *   <dt>int <var>i_cancel</var></dt>
+   *   <dd>The minimum hours|days|months before a class can be canceled without penalty.</dd>
+   *   <dt>int <var>i_promote</var></dt>
+   *   <dd>The minimum hours|days|months before a class can be promoted from a wait list.</dd>
+   *   <dt>int <var>i_reattempt_count</var></dt>
+   *   <dd>The number of failed auto-payment reattempts.</dd>
+   *   <dt>int <var>id_book_before</var></dt>
+   *   <dd>The hours|days|months from {@link ADurationSid}.</dd>
+   *   <dt>int <var>id_book_future</var></dt>
+   *   <dd>The hours|days|months from {@link ADurationSid}.</dd>
+   *   <dt>int <var>id_cancel</var></dt>
+   *   <dd>The hours|days|months from {@link ADurationSid}.</dd>
+   *   <dt>int <var>id_promote</var></dt>
+   *   <dd>The hours|days|months from {@link ADurationSid}.</dd>
+   *   <dt>bool <var>is_book_inside_active_pay_period</var></dt>
+   *   <dd>
+   *     `true` - clients with Purchase Options are only allowed to book sessions within their current paid period.<br>
+   *     `false` - clients with Purchase Options are only allowed to book sessions during the Purchase Option's duration.
+   *   </dd>
+   *   <dt>int <var>is_disable_promotion</var></dt>
+   *   <dd>
+   *     If `true`, a client's automatic payment fails, their account shouldn't be debited, and their Purchase Option becomes inactive.
+   *     Otherwise, this will be `false` (the default value).
+   *   </dd>
+   *   <dt>bool <var>is_enable_payment_penalty</var></dt>
+   *   <dd>Determines whether to charge a penalty after the final auto-payment attempt.</dd>
+   *   <dt>bool <var>is_enable_payment_reattempt</var></dt>
+   *   <dd>Determines whether to reattempt failed auto-payments.</dd>
+   *   <dt>bool <var>is_enable_staff_ip_restriction</var></dt>
+   *   <dd>Determines whether to restrict which IP addresses staff can login from.</dd>
+   *   <dt>int <var>is_prevent_booking</var></dt>
+   *   <dd>If `true`, booking for a client with negative balance is disabled. Otherwise, this will be `false` (the default value).</dd>
+   *   <dt>bool <var>is_staff_restrict</var></dt>
+   *   <dd>If true, clients can't choose a provider in the appointment wizard. Otherwise, this will be `false`.</dd>
+   *   <dt>bool <var>is_wait</var></dt>
+   *   <dd>Determines whether to enable or disable the wait list.</dd>
+   *   <dt>int <var>k_currency</var></dt>
+   *   <dd>The currency.</dd>
+   *   <dt>int <var>k_timezone</var></dt>
+   *   <dd>The time zone.</dd>
+   *   <dt>string <var>m_payment_penalty</var></dt>
+   *   <dd>The penalty amount to charge after the final auto-payment attempt.</dd>
+   *   <dt>string <var>url_custom</var></dt>
+   *   <dd>The custom URL from Business URLs.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_business_policy;
+
+  /**
+   * Determines whether staff members should select a location at checkout.
+   *
+   * If `true`, staff members should select a location at checkout. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_location_select;
+
+  /**
+   * Determines whether the business has white label setting enabled in the admin settings.
+   *
+   * If `true`, admin settings are enabled. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_white_label = false;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/DataModel.php b/WellnessLiving/Wl/Business/DataModel.php
index 676983b7..dc89269b 100644
--- a/WellnessLiving/Wl/Business/DataModel.php
+++ b/WellnessLiving/Wl/Business/DataModel.php
@@ -1,336 +1,336 @@
-<?php
-
-namespace WellnessLiving\Wl\Business;
-
-use WellnessLiving\Core\Locale\CurrencySid;
-use WellnessLiving\Core\Locale\LocaleSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Service\ServiceSid;
-use WellnessLiving\Wl\WlRankTypeSid;
-use WellnessLiving\Wl\WlRegionSid;
-
-/**
- * Displays information for a specified business.
- */
-class DataModel extends WlModelAbstract
-{
-  /**
-   * A list of all business services and their availability data.
-   * This is presented as an array, where keys are SIDs from {@link ServiceSid} and values are Boolean.
-   * If `true`, at least one service is enabled in the business. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_service_list;
-
-  /**
-   * The list of predefined tips in percentages.
-   *
-   * @get result
-   * @var float[]
-   */
-  public $a_tip_predefine;
-
-  /**
-   * The maximum height of the business image (in pixels).
-   *
-   * @get get
-   * @var int
-   */
-  public $i_logo_height = 100;
-
-  /**
-   * The maximum width of the business image (in pixels).
-   *
-   * @get get
-   * @var int
-   */
-  public $i_logo_width = 220;
-
-  /**
-   * The business category ID of the business.
-   *
-   * @get result
-   * @var int
-   * @see BusinessCategorySid
-   */
-  public $id_category;
-
-  /**
-   * The currency ID of the given business (or the system currency ID if the business didn't pass).
-   *
-   * @get result
-   * @var int
-   * @see CurrencySid
-   */
-  public $id_currency;
-
-  /**
-   * The Locale ID, used to search geo items.
-   *
-   * @get result
-   * @var int
-   * @see LocaleSid
-   */
-  public $id_locale;
-
-  /**
-   * The rank type ID of the business.
-   *
-   * One of the {@link WlRankTypeSid} constants.
-   *
-   * This will be `null` if the business doesn't have a rank type.
-   *
-   * @get result
-   * @var int|null
-   */
-  public $id_rank_type;
-
-  /**
-   * The region ID. This indicates the data center where the information about the business is stored.
-   * One of the {@link WlRegionSid} constants.
-   *
-   * Requests made to different regions can lead to known issues such as responses indicating that the
-   * business (or its elements) doesn't exist. This is because databases on different data centers are
-   * independent. For example, performing a request to the US cluster for a list of classes for an AU
-   * cluster business will return an empty list.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_region;
-
-  /**
-   * Determines whether surcharges to client payments are enabled in the business.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_apply_surcharge = false;
-
-  /**
-   * `true` if business is a franchisor or franchisee.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_franchise = false;
-
-  /**
-   * Determines whether the business has multiple locations (including inactive locations).
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_location_multiple;
-
-  /**
-   * `true` - clients of the business can select a custom time zone in their profile.
-   *
-   * `false` - the location or business time zone is used.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_profile_timezone;
-
-  /**
-   * If `true`, clients can enter the progress log. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_progress_client;
-
-  /**
-   * If `true`, verification of the progress log by a staff member is required. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_progress_verify;
-
-  /**
-   * Determines whether quizzes are available in the business.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_quiz_available = false;
-
-  /**
-   * If `true`, tips are available in the business. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_tip;
-
-  /**
-   * If `true`, the business has the "No tip" option displayed. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_tip_deny;
-
-  /**
-   * If `true`, the client must sign after selecting the tip. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_tip_sign;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The franchisor business key. This will be empty if this business is the franchisor or not in a franchise.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_business_franchisor = '';
-
-  /**
-   * The business key obtained by the security token {@link DataModel::$text_token}.
-   * This can be used on the client side if authorization token should be used instead of the business key
-   * (the business key isn't available).
-   *
-   * @get result
-   * @var string
-   */
-  public $k_business_token;
-
-  /**
-   * The currency key of the given business, or the system currency if the business didn't pass.
-   *
-   * @get result
-   * @var string
-   * @deprecated Use {@link DataModel::$id_currency} instead.
-   */
-  public $k_currency;
-
-  /**
-   * The reply-to email address.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_reply_mail;
-
-  /**
-   * The reply-to business name.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_reply_name;
-
-  /**
-   * The business address.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_office_address;
-
-  /**
-   * The business title.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_title;
-
-  /**
-   * The authorization token.
-   * This may be used instead of {@link DataModel::$k_business} to
-   * identify a business.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_token = '';
-
-  /**
-   * The Facebook page.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_facebook;
-
-  /**
-   * The Google+ page.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_google;
-
-  /**
-   * The Instagram page.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_instagram = '';
-
-  /**
-   * The `LinkedIn` profile.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_linkedin = '';
-
-  /**
-   * The logo URL.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_logo;
-
-  /**
-   * The image stub (in cases where the business logo isn't loaded).
-   *
-   * @get result
-   * @var string
-   */
-  public $url_logo_empty;
-
-  /**
-   * The Twitter page.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_twitter;
-
-  /**
-   * The business website.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_website;
-
-  /**
-   * The YouTube website.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_youtube = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business;
+
+use WellnessLiving\Core\Locale\CurrencySid;
+use WellnessLiving\Core\Locale\LocaleSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Service\ServiceSid;
+use WellnessLiving\Wl\WlRankTypeSid;
+use WellnessLiving\Wl\WlRegionSid;
+
+/**
+ * Displays information for a specified business.
+ */
+class DataModel extends WlModelAbstract
+{
+  /**
+   * A list of all business services and their availability data.
+   * This is presented as an array, where keys are SIDs from {@link ServiceSid} and values are Boolean.
+   * If `true`, at least one service is enabled in the business. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_service_list;
+
+  /**
+   * The list of predefined tips in percentages.
+   *
+   * @get result
+   * @var float[]
+   */
+  public $a_tip_predefine;
+
+  /**
+   * The maximum height of the business image (in pixels).
+   *
+   * @get get
+   * @var int
+   */
+  public $i_logo_height = 100;
+
+  /**
+   * The maximum width of the business image (in pixels).
+   *
+   * @get get
+   * @var int
+   */
+  public $i_logo_width = 220;
+
+  /**
+   * The business category ID of the business.
+   *
+   * @get result
+   * @var int
+   * @see BusinessCategorySid
+   */
+  public $id_category;
+
+  /**
+   * The currency ID of the given business (or the system currency ID if the business didn't pass).
+   *
+   * @get result
+   * @var int
+   * @see CurrencySid
+   */
+  public $id_currency;
+
+  /**
+   * The Locale ID, used to search geo items.
+   *
+   * @get result
+   * @var int
+   * @see LocaleSid
+   */
+  public $id_locale;
+
+  /**
+   * The rank type ID of the business.
+   *
+   * One of the {@link WlRankTypeSid} constants.
+   *
+   * This will be `null` if the business doesn't have a rank type.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $id_rank_type;
+
+  /**
+   * The region ID. This indicates the data center where the information about the business is stored.
+   * One of the {@link WlRegionSid} constants.
+   *
+   * Requests made to different regions can lead to known issues such as responses indicating that the
+   * business (or its elements) doesn't exist. This is because databases on different data centers are
+   * independent. For example, performing a request to the US cluster for a list of classes for an AU
+   * cluster business will return an empty list.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_region;
+
+  /**
+   * Determines whether surcharges to client payments are enabled in the business.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_apply_surcharge = false;
+
+  /**
+   * `true` if business is a franchisor or franchisee.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_franchise = false;
+
+  /**
+   * Determines whether the business has multiple locations (including inactive locations).
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_location_multiple;
+
+  /**
+   * `true` - clients of the business can select a custom time zone in their profile.
+   *
+   * `false` - the location or business time zone is used.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_profile_timezone;
+
+  /**
+   * If `true`, clients can enter the progress log. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_progress_client;
+
+  /**
+   * If `true`, verification of the progress log by a staff member is required. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_progress_verify;
+
+  /**
+   * Determines whether quizzes are available in the business.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_quiz_available = false;
+
+  /**
+   * If `true`, tips are available in the business. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_tip;
+
+  /**
+   * If `true`, the business has the "No tip" option displayed. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_tip_deny;
+
+  /**
+   * If `true`, the client must sign after selecting the tip. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_tip_sign;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The franchisor business key. This will be empty if this business is the franchisor or not in a franchise.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_business_franchisor = '';
+
+  /**
+   * The business key obtained by the security token {@link DataModel::$text_token}.
+   * This can be used on the client side if authorization token should be used instead of the business key
+   * (the business key isn't available).
+   *
+   * @get result
+   * @var string
+   */
+  public $k_business_token;
+
+  /**
+   * The currency key of the given business, or the system currency if the business didn't pass.
+   *
+   * @get result
+   * @var string
+   * @deprecated Use {@link DataModel::$id_currency} instead.
+   */
+  public $k_currency;
+
+  /**
+   * The reply-to email address.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_reply_mail;
+
+  /**
+   * The reply-to business name.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_reply_name;
+
+  /**
+   * The business address.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_office_address;
+
+  /**
+   * The business title.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_title;
+
+  /**
+   * The authorization token.
+   * This may be used instead of {@link DataModel::$k_business} to
+   * identify a business.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_token = '';
+
+  /**
+   * The Facebook page.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_facebook;
+
+  /**
+   * The Google+ page.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_google;
+
+  /**
+   * The Instagram page.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_instagram = '';
+
+  /**
+   * The `LinkedIn` profile.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_linkedin = '';
+
+  /**
+   * The logo URL.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_logo;
+
+  /**
+   * The image stub (in cases where the business logo isn't loaded).
+   *
+   * @get result
+   * @var string
+   */
+  public $url_logo_empty;
+
+  /**
+   * The Twitter page.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_twitter;
+
+  /**
+   * The business website.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_website;
+
+  /**
+   * The YouTube website.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_youtube = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Design/BusinessDesignModel.php b/WellnessLiving/Wl/Business/Design/BusinessDesignModel.php
index 0424e080..52d0e548 100644
--- a/WellnessLiving/Wl/Business/Design/BusinessDesignModel.php
+++ b/WellnessLiving/Wl/Business/Design/BusinessDesignModel.php
@@ -1,80 +1,80 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Design;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Provides business design information.
- */
-class BusinessDesignModel extends WlModelAbstract
-{
-  /**
-   * Design data for a business.
-   *
-   * Contains the following keys:
-   *
-   * <dl>
-   *   <dt>int <var>id_layout</var></dt>
-   *   <dd>Layout ID. For more details, see {@link RsPageFrontendHeaderLayoutSid}.</dd>
-   *   <dt>int <var>id_logo_position</var></dt>
-   *   <dd>Logo position ID. For more details, see {@link RsBusinessDesignLogoPositionSid}.</dd>
-   *   <dt>int <var>id_logo_style</var></dt>
-   *   <dd>Logo style ID. For more details, see {@link RsBusinessDesignLogoStyleSid}.</dd>
-   *   <dt>bool <var>is_attend_self</var></dt>
-   *   <dd>If <tt>true</tt> clients can check-in using the Client Web App and Achieve Web App.</dd>
-   *   <dt>bool <var>is_class_capacity</var></dt>
-   *   <dd>If <tt>true</tt> the capacity and number of clients signed up will be shown.</dd>
-   *   <dt>bool <var>is_class_quick</var></dt>
-   *   <dd>If <tt>true</tt>, the quick class filter will be shown.</dd>
-   *   <dt>bool <var>is_show_name</var></dt>
-   *   <dd>If <tt>true</tt>, the business name will be shown.</dd>
-   *   <dt>string <var>s_color_background</var></dt>
-   *   <dd>Background color of frontend.</dd>
-   *   <dt>string <var>s_color_header</var></dt>
-   *   <dd>Header color of frontend menu.</dd>
-   *   <dt>string <var>s_color_menu_border</var></dt>
-   *   <dd>Border color of frontend menu.</dd>
-   *   <dt>string <var>s_color_menu_element</var></dt>
-   *   <dd>Menu element color</dd>
-   *   <dt>string <var>s_color_menu_hover</var></dt>
-   *   <dd>Hover colour of front end menu.</dd>
-   *   <dt>string <var>s_color_menu_hover_background</var></dt>
-   *   <dd>Background hover color of front end menu.</dd>
-   *   <dt>string <var>s_color_menu_press</var></dt>
-   *   <dd>Press colour of front end menu.</dd>
-   *   <dt>string <var>s_color_submenu</var></dt>
-   *   <dd>Submenu colour of front end menu.</dd>
-   *   <dt>string <var>s_color_submenu_element</var></dt>
-   *   <dd>Submenu element color of front end menu.</dd>
-   *   <dt>string <var>s_color_submenu_hover</var></dt>
-   *   <dd>Hover color of submenu of front end menu</dd>
-   *   <dt>string <var>s_color_submenu_press</var></dt>
-   *   <dd>Press color of submenu in front end menu.</dd>
-   *   <dt>string <var>s_fb_pixel_id</var></dt>
-   *   <dd>Facebook Pixel ID. Used for Facebook analytics tracking. Empty string if tracking is disabled.</dd>
-   *   <dt>string <var>s_ga_tracking_id</var></dt>
-   *   <dd>Google Analytics Tracking ID. Used for Google Analytics tracking. Empty string if tracking is disabled.</dd>
-   *   <dt>string <var>s_gtm_container_id</var></dt>
-   *   <dd>Google Tag Manager Container ID. Used for Google Analytics tracking. Empty string if tracking is disabled.</dd>
-   *   <dt>string <var>s_url_background</var></dt>
-   *   <dd>Path to the background image.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_data;
-
-  /**
-   * Business key to get design data.
-   *
-   * May be <tt>null</tt>. In this case default business design data is returned.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Design;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Provides business design information.
+ */
+class BusinessDesignModel extends WlModelAbstract
+{
+  /**
+   * Design data for a business.
+   *
+   * Contains the following keys:
+   *
+   * <dl>
+   *   <dt>int <var>id_layout</var></dt>
+   *   <dd>Layout ID. For more details, see {@link RsPageFrontendHeaderLayoutSid}.</dd>
+   *   <dt>int <var>id_logo_position</var></dt>
+   *   <dd>Logo position ID. For more details, see {@link RsBusinessDesignLogoPositionSid}.</dd>
+   *   <dt>int <var>id_logo_style</var></dt>
+   *   <dd>Logo style ID. For more details, see {@link RsBusinessDesignLogoStyleSid}.</dd>
+   *   <dt>bool <var>is_attend_self</var></dt>
+   *   <dd>If <tt>true</tt> clients can check-in using the Client Web App and Achieve Web App.</dd>
+   *   <dt>bool <var>is_class_capacity</var></dt>
+   *   <dd>If <tt>true</tt> the capacity and number of clients signed up will be shown.</dd>
+   *   <dt>bool <var>is_class_quick</var></dt>
+   *   <dd>If <tt>true</tt>, the quick class filter will be shown.</dd>
+   *   <dt>bool <var>is_show_name</var></dt>
+   *   <dd>If <tt>true</tt>, the business name will be shown.</dd>
+   *   <dt>string <var>s_color_background</var></dt>
+   *   <dd>Background color of frontend.</dd>
+   *   <dt>string <var>s_color_header</var></dt>
+   *   <dd>Header color of frontend menu.</dd>
+   *   <dt>string <var>s_color_menu_border</var></dt>
+   *   <dd>Border color of frontend menu.</dd>
+   *   <dt>string <var>s_color_menu_element</var></dt>
+   *   <dd>Menu element color</dd>
+   *   <dt>string <var>s_color_menu_hover</var></dt>
+   *   <dd>Hover colour of front end menu.</dd>
+   *   <dt>string <var>s_color_menu_hover_background</var></dt>
+   *   <dd>Background hover color of front end menu.</dd>
+   *   <dt>string <var>s_color_menu_press</var></dt>
+   *   <dd>Press colour of front end menu.</dd>
+   *   <dt>string <var>s_color_submenu</var></dt>
+   *   <dd>Submenu colour of front end menu.</dd>
+   *   <dt>string <var>s_color_submenu_element</var></dt>
+   *   <dd>Submenu element color of front end menu.</dd>
+   *   <dt>string <var>s_color_submenu_hover</var></dt>
+   *   <dd>Hover color of submenu of front end menu</dd>
+   *   <dt>string <var>s_color_submenu_press</var></dt>
+   *   <dd>Press color of submenu in front end menu.</dd>
+   *   <dt>string <var>s_fb_pixel_id</var></dt>
+   *   <dd>Facebook Pixel ID. Used for Facebook analytics tracking. Empty string if tracking is disabled.</dd>
+   *   <dt>string <var>s_ga_tracking_id</var></dt>
+   *   <dd>Google Analytics Tracking ID. Used for Google Analytics tracking. Empty string if tracking is disabled.</dd>
+   *   <dt>string <var>s_gtm_container_id</var></dt>
+   *   <dd>Google Tag Manager Container ID. Used for Google Analytics tracking. Empty string if tracking is disabled.</dd>
+   *   <dt>string <var>s_url_background</var></dt>
+   *   <dd>Path to the background image.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_data;
+
+  /**
+   * Business key to get design data.
+   *
+   * May be <tt>null</tt>. In this case default business design data is returned.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Design/RsBusinessDesignLogoPositionSid.php b/WellnessLiving/Wl/Business/Design/RsBusinessDesignLogoPositionSid.php
index 6c787ac3..5af0d6e9 100644
--- a/WellnessLiving/Wl/Business/Design/RsBusinessDesignLogoPositionSid.php
+++ b/WellnessLiving/Wl/Business/Design/RsBusinessDesignLogoPositionSid.php
@@ -1,26 +1,26 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Design;
-
-/**
- * A position of logo.
- */
-class RsBusinessDesignLogoPositionSid
-{
-  /**
-   * Logo located in the center.
-   */
-  const CENTER = 2;
-
-  /**
-   * Logo located on the left side.
-   */
-  const LEFT = 1;
-
-  /**
-   * Logo located on the right side.
-   */
-  const RIGHT = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Design;
+
+/**
+ * A position of logo.
+ */
+class RsBusinessDesignLogoPositionSid
+{
+  /**
+   * Logo located in the center.
+   */
+  const CENTER = 2;
+
+  /**
+   * Logo located on the left side.
+   */
+  const LEFT = 1;
+
+  /**
+   * Logo located on the right side.
+   */
+  const RIGHT = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Design/RsBusinessDesignLogoStyleSid.php b/WellnessLiving/Wl/Business/Design/RsBusinessDesignLogoStyleSid.php
index 487a9e68..97b006f1 100644
--- a/WellnessLiving/Wl/Business/Design/RsBusinessDesignLogoStyleSid.php
+++ b/WellnessLiving/Wl/Business/Design/RsBusinessDesignLogoStyleSid.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Design;
-
-/**
- * A style of logo.
- */
-class RsBusinessDesignLogoStyleSid
-{
-  /**
-   * Logo is invisible.
-   */
-  const HIDE = 1;
-
-  /**
-   * Logo is a rectangle.
-   */
-  const RECTANGLE = 4;
-
-  /**
-   * Logo is a round.
-   */
-  const ROUND = 3;
-
-  /**
-   * Logo is a square.
-   */
-  const SQUARE = 2;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Design;
+
+/**
+ * A style of logo.
+ */
+class RsBusinessDesignLogoStyleSid
+{
+  /**
+   * Logo is invisible.
+   */
+  const HIDE = 1;
+
+  /**
+   * Logo is a rectangle.
+   */
+  const RECTANGLE = 4;
+
+  /**
+   * Logo is a round.
+   */
+  const ROUND = 3;
+
+  /**
+   * Logo is a square.
+   */
+  const SQUARE = 2;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Design/RsPageFrontendHeaderLayoutSid.php b/WellnessLiving/Wl/Business/Design/RsPageFrontendHeaderLayoutSid.php
index a91accca..a14def56 100644
--- a/WellnessLiving/Wl/Business/Design/RsPageFrontendHeaderLayoutSid.php
+++ b/WellnessLiving/Wl/Business/Design/RsPageFrontendHeaderLayoutSid.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Design;
-
-/**
- * List of layouts for client's header.
- */
-class RsPageFrontendHeaderLayoutSid
-{
-  /**
-   * Logo is under the main menu.
-   */
-  const BOTTOM = 4;
-
-  /**
-   * Logo is in the left corner.
-   */
-  const LEFT = 1;
-
-  /**
-   * Logo is in the right corner.
-   */
-  const RIGHT = 2;
-
-  /**
-   * Logo is above the main menu.
-   */
-  const TOP = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Design;
+
+/**
+ * List of layouts for client's header.
+ */
+class RsPageFrontendHeaderLayoutSid
+{
+  /**
+   * Logo is under the main menu.
+   */
+  const BOTTOM = 4;
+
+  /**
+   * Logo is in the left corner.
+   */
+  const LEFT = 1;
+
+  /**
+   * Logo is in the right corner.
+   */
+  const RIGHT = 2;
+
+  /**
+   * Logo is above the main menu.
+   */
+  const TOP = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php
index ec1b1ef7..c862482b 100644
--- a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php
+++ b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php
@@ -1,41 +1,41 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Franchise\Location;
-
-/**
- * A list tab.
- *
- * Last used ID: 4.
- */
-class BusinessFranchiseLocationFormSid
-{
-  /**
-   * The tab country.
-   *
-   * @title country
-   */
-  const COUNTRY = 1;
-
-  /**
-   * The tab location.
-   *
-   * @title location
-   */
-  const LOCATION = 2;
-
-  /**
-   * The tab region.
-   *
-   * @title region
-   */
-  const REGION = 3;
-
-  /**
-   * The tab state/province.
-   *
-   * @title state/province
-   */
-  const STATE_PROVINCE = 4;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Franchise\Location;
+
+/**
+ * A list tab.
+ *
+ * Last used ID: 4.
+ */
+class BusinessFranchiseLocationFormSid
+{
+  /**
+   * The tab country.
+   *
+   * @title country
+   */
+  const COUNTRY = 1;
+
+  /**
+   * The tab location.
+   *
+   * @title location
+   */
+  const LOCATION = 2;
+
+  /**
+   * The tab region.
+   *
+   * @title region
+   */
+  const REGION = 3;
+
+  /**
+   * The tab state/province.
+   *
+   * @title state/province
+   */
+  const STATE_PROVINCE = 4;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php
index 9415c35c..632addc3 100644
--- a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php
+++ b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php
@@ -1,34 +1,34 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Franchise\Location;
-
-/**
- * Types of the location.
- *
- * Used in the {@link BusinessFranchiseLocationModel}.
- */
-class BusinessFranchiseLocationSid
-{
-  /**
-   * All locations.
-   *
-   * @title All
-   */
-  const ALL = 1;
-
-  /**
-   * Locations without the region.
-   *
-   * @title Without region
-   */
-  const REGION_NO = 2;
-
-  /**
-   * Location with the region.
-   *
-   * @title With region
-   */
-  const REGION_YES = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Franchise\Location;
+
+/**
+ * Types of the location.
+ *
+ * Used in the {@link BusinessFranchiseLocationModel}.
+ */
+class BusinessFranchiseLocationSid
+{
+  /**
+   * All locations.
+   *
+   * @title All
+   */
+  const ALL = 1;
+
+  /**
+   * Locations without the region.
+   *
+   * @title Without region
+   */
+  const REGION_NO = 2;
+
+  /**
+   * Location with the region.
+   *
+   * @title With region
+   */
+  const REGION_YES = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Lead/BusinessLeadModel.php b/WellnessLiving/Wl/Business/Lead/BusinessLeadModel.php
index c92f054e..764ffe09 100644
--- a/WellnessLiving/Wl/Business/Lead/BusinessLeadModel.php
+++ b/WellnessLiving/Wl/Business/Lead/BusinessLeadModel.php
@@ -1,69 +1,69 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Lead;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Creates a new business lead request within the Partner Program.
- */
-class BusinessLeadModel extends WlModelAbstract
-{
-  /**
-   * The business's partner key.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business_partner;
-
-  /**
-   * The business's name.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_business_name;
-
-  /**
-   * The client's full name.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_client_name;
-
-  /**
-   * The client's email.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_email;
-
-  /**
-   * The client's phone number.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_phone;
-
-  /**
-   * The business's partner promo code.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_promo_code;
-
-  /**
-   * The website URL.
-   *
-   * @post post
-   * @var string
-   */
-  public $url_website;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Lead;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Creates a new business lead request within the Partner Program.
+ */
+class BusinessLeadModel extends WlModelAbstract
+{
+  /**
+   * The business's partner key.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business_partner;
+
+  /**
+   * The business's name.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_business_name;
+
+  /**
+   * The client's full name.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_client_name;
+
+  /**
+   * The client's email.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_email;
+
+  /**
+   * The client's phone number.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_phone;
+
+  /**
+   * The business's partner promo code.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_promo_code;
+
+  /**
+   * The website URL.
+   *
+   * @post post
+   * @var string
+   */
+  public $url_website;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Partner/PartnerSettingsModel.php b/WellnessLiving/Wl/Business/Partner/PartnerSettingsModel.php
index 3f69b6c0..ef8ca57a 100644
--- a/WellnessLiving/Wl/Business/Partner/PartnerSettingsModel.php
+++ b/WellnessLiving/Wl/Business/Partner/PartnerSettingsModel.php
@@ -1,88 +1,88 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Partner;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlHomeTourSid;
-
-/**
- * Works with partner settings of the business.
- * This information is entered by a staff member when a client enrolls into Partner Program and uses a custom landing page, which
- * is available by special business URL.
- */
-class PartnerSettingsModel extends WlModelAbstract
-{
-  /**
-   * The homepage tour of the business, which depends on the type.
-   *
-   * @get result
-   * @var int
-   * @see WlHomeTourSid
-   */
-  public $id_business_tour = 0;
-
-  /**
-   * The business key.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The unique code that a business can provide other businesses to tell them about system.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_code = '';
-
-  /**
-   * The first name of the business representative.
-   *
-   * @get result
-   * @var string
-   * @deprecated This field is not used anymore.
-   */
-  public $text_name_first;
-
-  /**
-   * The last name of the business representative.
-   *
-   * @get result
-   * @var string
-   * @deprecated This field is not used anymore.
-   */
-  public $text_name_last;
-
-  /**
-   * The job title of the business representative.
-   *
-   * @get result
-   * @var string
-   * @deprecated This field is not used anymore.
-   */
-  public $text_position;
-
-  /**
-   * The text of the review about the WellnessLiving system.
-   *
-   * @get result
-   * @var string
-   * @deprecated This field is not used anymore.
-   */
-  public $text_review;
-
-  /**
-   * A link to the photo of the business representative.
-   *
-   * `null` in case when image is not uploaded.
-   *
-   * @get result
-   * @var string|null
-   * @deprecated This field is not used anymore.
-   */
-  public $url_photo;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Partner;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlHomeTourSid;
+
+/**
+ * Works with partner settings of the business.
+ * This information is entered by a staff member when a client enrolls into Partner Program and uses a custom landing page, which
+ * is available by special business URL.
+ */
+class PartnerSettingsModel extends WlModelAbstract
+{
+  /**
+   * The homepage tour of the business, which depends on the type.
+   *
+   * @get result
+   * @var int
+   * @see WlHomeTourSid
+   */
+  public $id_business_tour = 0;
+
+  /**
+   * The business key.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The unique code that a business can provide other businesses to tell them about system.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_code = '';
+
+  /**
+   * The first name of the business representative.
+   *
+   * @get result
+   * @var string
+   * @deprecated This field is not used anymore.
+   */
+  public $text_name_first;
+
+  /**
+   * The last name of the business representative.
+   *
+   * @get result
+   * @var string
+   * @deprecated This field is not used anymore.
+   */
+  public $text_name_last;
+
+  /**
+   * The job title of the business representative.
+   *
+   * @get result
+   * @var string
+   * @deprecated This field is not used anymore.
+   */
+  public $text_position;
+
+  /**
+   * The text of the review about the WellnessLiving system.
+   *
+   * @get result
+   * @var string
+   * @deprecated This field is not used anymore.
+   */
+  public $text_review;
+
+  /**
+   * A link to the photo of the business representative.
+   *
+   * `null` in case when image is not uploaded.
+   *
+   * @get result
+   * @var string|null
+   * @deprecated This field is not used anymore.
+   */
+  public $url_photo;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Select/BusinessSelectModel.php b/WellnessLiving/Wl/Business/Select/BusinessSelectModel.php
index 490092f5..1628be3e 100644
--- a/WellnessLiving/Wl/Business/Select/BusinessSelectModel.php
+++ b/WellnessLiving/Wl/Business/Select/BusinessSelectModel.php
@@ -1,74 +1,74 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Select;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Provides the list of business that a staff member may access.
- */
-class BusinessSelectModel extends WlModelAbstract
-{
-  /**
-   * Configuration data used to determine the list of businesses returned. This array has the following keys:
-   * <dl>
-   *   <dt>bool <var>is_role</var></dt>
-   *   <dd>This will be `true` if we are checking for businesses where the user is a staff member.
-   *     This will be `false` if we are checking for businesses where the user is a client.</dd>
-   *   <dt>string <var>[k_business]</var></dt>
-   *   <dd>The business key.</dd>
-   * </dl>
-   *
-   * @get get
-   * @var array
-   */
-  public $a_config = [];
-
-  /**
-   * Business list with additional parameters for a business select HTML component.
-   * This array contains the following keys and values.
-   * <dl>
-   *   <dt>array <var>a_business</var></dt>
-   *   <dd>List of businesses the user can access. It is an array, each value is an array with the following keys:<dl>
-   *     <dt>string <var>k_business</var></dt>
-   *     <dd>The key of the business.</dd>
-   *     <dt>string <var>s_title</var></dt>
-   *     <dd>The name of the business.</dd>
-   *     <dt>bool <var>selected</var></dt>
-   *     <dd>This will be true for the current business.</dd>
-   *   </dl></dd>
-   *   <dt>string <var>is_select</var></dt>
-   *   <dd>This will be `true` if one of the listed businesses is selected.</dd>
-   *   <dt>string <var>name<var></dt>
-   *   <dd>Information for the widget, the name of the key in the list. This should always be `k_business`.</dd>
-   *   <dt>string <var>onchange</var></dt>
-   *   <dd>Information for the widget, what the widget will do on selection.</dd>
-   *   <dt>string <var>s_id</var></dt>
-   *   <dd>Information for the widget, the widget instance ID.</dd>
-   *   <dt>string <var>s_style</var></dt>
-   *   <dd>Information for the widget, any additional CSS to apply.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_select = [];
-
-  /**
-   * Business in which a list of business is requested.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * User who is requesting the list of businesses.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Select;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Provides the list of business that a staff member may access.
+ */
+class BusinessSelectModel extends WlModelAbstract
+{
+  /**
+   * Configuration data used to determine the list of businesses returned. This array has the following keys:
+   * <dl>
+   *   <dt>bool <var>is_role</var></dt>
+   *   <dd>This will be `true` if we are checking for businesses where the user is a staff member.
+   *     This will be `false` if we are checking for businesses where the user is a client.</dd>
+   *   <dt>string <var>[k_business]</var></dt>
+   *   <dd>The business key.</dd>
+   * </dl>
+   *
+   * @get get
+   * @var array
+   */
+  public $a_config = [];
+
+  /**
+   * Business list with additional parameters for a business select HTML component.
+   * This array contains the following keys and values.
+   * <dl>
+   *   <dt>array <var>a_business</var></dt>
+   *   <dd>List of businesses the user can access. It is an array, each value is an array with the following keys:<dl>
+   *     <dt>string <var>k_business</var></dt>
+   *     <dd>The key of the business.</dd>
+   *     <dt>string <var>s_title</var></dt>
+   *     <dd>The name of the business.</dd>
+   *     <dt>bool <var>selected</var></dt>
+   *     <dd>This will be true for the current business.</dd>
+   *   </dl></dd>
+   *   <dt>string <var>is_select</var></dt>
+   *   <dd>This will be `true` if one of the listed businesses is selected.</dd>
+   *   <dt>string <var>name<var></dt>
+   *   <dd>Information for the widget, the name of the key in the list. This should always be `k_business`.</dd>
+   *   <dt>string <var>onchange</var></dt>
+   *   <dd>Information for the widget, what the widget will do on selection.</dd>
+   *   <dt>string <var>s_id</var></dt>
+   *   <dd>Information for the widget, the widget instance ID.</dd>
+   *   <dt>string <var>s_style</var></dt>
+   *   <dd>Information for the widget, any additional CSS to apply.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_select = [];
+
+  /**
+   * Business in which a list of business is requested.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * User who is requesting the list of businesses.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Type/BusinessTypeListModel.php b/WellnessLiving/Wl/Business/Type/BusinessTypeListModel.php
index 907fedaf..c96895ec 100644
--- a/WellnessLiving/Wl/Business/Type/BusinessTypeListModel.php
+++ b/WellnessLiving/Wl/Business/Type/BusinessTypeListModel.php
@@ -1,26 +1,26 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Type;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves a list of business types.
- */
-class BusinessTypeListModel extends WlModelAbstract
-{
-  /**
-   * A list of business types. Each element has the next structure: <dl>
-   *  <dt>string <var>k_business_type</var></dt>
-   *  <dd>The key of business type.</dd>
-   *  <dt>string <var>text_title</var></dt>
-   *  <dd>The title of business type.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_business_type = [];
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\Type;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves a list of business types.
+ */
+class BusinessTypeListModel extends WlModelAbstract
+{
+  /**
+   * A list of business types. Each element has the next structure: <dl>
+   *  <dt>string <var>k_business_type</var></dt>
+   *  <dd>The key of business type.</dd>
+   *  <dt>string <var>text_title</var></dt>
+   *  <dd>The title of business type.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_business_type = [];
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/User/Subscribe/SubscribeModel.php b/WellnessLiving/Wl/Business/User/Subscribe/SubscribeModel.php
index d67c7768..a944d1d7 100644
--- a/WellnessLiving/Wl/Business/User/Subscribe/SubscribeModel.php
+++ b/WellnessLiving/Wl/Business/User/Subscribe/SubscribeModel.php
@@ -1,61 +1,61 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\User\Subscribe;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Manages a user`s subscription in a business.
- */
-class SubscribeModel extends WlModelAbstract
-{
-  /**
-   * Information about the user`s subscription.
-   *
-   * When getting information, `true` indicates the user has an email subscription in the business (`false` otherwise).
-   *
-   * When changing a subscription, `true` subscribes the user in the business. `false` unsubscribes the user in the business.
-   *
-   * This will be `null` if not set yet.
-   *
-   * @get result
-   * @put get
-   * @var bool|null
-   */
-  public $is_subscribe = null;
-
-  /**
-   * Information about the user`s subscription.
-   *
-   * When getting information, `true` indicates the user has an SMS subscription in the business (`false` otherwise).
-   *
-   * When changing a subscription, `true` subscribes the user in the business. `false1 unsubscribes the user in the business.
-   *
-   * This will be `null` if not set yet.
-   *
-   * @get result
-   * @put get
-   * @var bool|null
-   */
-  public $is_subscribe_sms = null;
-
-  /**
-   * The business key used for users to subscribe, unsubscribe, and receive information about the status of the subscription.
-   *
-   * @get get
-   * @put get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The key of the user whose subscription status needs to be checked or switched to subscribed/unsubscribed.
-   *
-   * @get get
-   * @put get
-   * @var string
-   */
-  public $uid;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Business\User\Subscribe;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Manages a user`s subscription in a business.
+ */
+class SubscribeModel extends WlModelAbstract
+{
+  /**
+   * Information about the user`s subscription.
+   *
+   * When getting information, `true` indicates the user has an email subscription in the business (`false` otherwise).
+   *
+   * When changing a subscription, `true` subscribes the user in the business. `false` unsubscribes the user in the business.
+   *
+   * This will be `null` if not set yet.
+   *
+   * @get result
+   * @put get
+   * @var bool|null
+   */
+  public $is_subscribe = null;
+
+  /**
+   * Information about the user`s subscription.
+   *
+   * When getting information, `true` indicates the user has an SMS subscription in the business (`false` otherwise).
+   *
+   * When changing a subscription, `true` subscribes the user in the business. `false1 unsubscribes the user in the business.
+   *
+   * This will be `null` if not set yet.
+   *
+   * @get result
+   * @put get
+   * @var bool|null
+   */
+  public $is_subscribe_sms = null;
+
+  /**
+   * The business key used for users to subscribe, unsubscribe, and receive information about the status of the subscription.
+   *
+   * @get get
+   * @put get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The key of the user whose subscription status needs to be checked or switched to subscribed/unsubscribed.
+   *
+   * @get get
+   * @put get
+   * @var string
+   */
+  public $uid;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/Cart/CartModel.php b/WellnessLiving/Wl/Catalog/Cart/CartModel.php
index 7f3bd3b9..49874770 100644
--- a/WellnessLiving/Wl/Catalog/Cart/CartModel.php
+++ b/WellnessLiving/Wl/Catalog/Cart/CartModel.php
@@ -1,207 +1,207 @@
-<?php
-
-namespace WellnessLiving\Wl\Catalog\Cart;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlSaleSid;
-
-/**
- * Displays information about the cart in the catalog.
- */
-class CartModel extends WlModelAbstract
-{
-  /**
-   * The list of discounts for each item.
-   *
-   * Keys refer to unique item keys, and values refer to discount amounts for the item.
-   *
-   * @get result
-   * @var string[]
-   */
-  public $a_discount_item = [];
-
-  /**
-   * The list of items in the cart.
-   * <dl>
-   *   <dt>int <var>i_quantity</var></dt>
-   *   <dd>The quantity of sale items.</dd>
-   *   <dt>int <var>id_sale</var></dt>
-   *   <dd>The sale item type, one of the {@link WlSaleSid} constants.</dd>
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>The sale item key.</dd>
-   *   <dt>?string [<var>k_login_prize</var>]</dt>
-   *
-   *   <dt>string <var>k_shop_product_option</var></dt>
-   *   <dd>The shop product option. If empty string, the sale item has no options.</dd>
-   * </dl>
-   *
-   * @get get
-   * @var array[]
-   */
-  public $a_item = [];
-
-  /**
-   * List of prizes that can be redeemed and applied to items in the cart.
-   * <dl>
-   *   <dt>string <var>k_reward_prize</var></dt>
-   *
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>Reward prize title.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_prize_propose = [];
-
-  /**
-   * List of cart items to which the selected prize can be applied
-   * <dl>
-   *   <dt>int <var>i_quantity</var></dt>
-   *   <dd>The quantity of sale items.</dd>
-   *   <dt>int <var>id_sale</var></dt>
-   *   <dd>The sale item type, one of the {@link WlSaleSid} constants.</dd>
-   *   <dt>bool <var>is_login_prize_used</var></dt>
-   *   <dd>Whether selected login prize discount applied to item.</dd>
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>The sale item key.</dd>
-   *   <dt>string <var>k_shop_product_option</var></dt>
-   *   <dd>The shop product option. If <tt>null</tt>, the sale item has no options.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_reward_item = [];
-
-  /**
-   * List of login prizes that can be applied to items in the cart.
-   * <dl>
-   *   <dt>string <var>k_login_prize</var></dt>
-   *
-   *   <dt>string <var>text_discount</var></dt>
-   *   <dd>Login prize discount title, for example 'Apply 10% off'.</dd>
-   *   <dt>string <var>text_discount_applied</var></dt>
-   *   <dd>Applied login prize discount title, for example '10% discount'.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>Login prize title.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_reward_propose = [];
-
-  /**
-   * Values derived for individual tax rates.
-   *
-   * Keys refer to tax keys.
-   * And values refer to the amount of tax in the cart.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_tax_list = [];
-
-  /**
-   * Amount of client's reward points.
-   *
-   * @get result
-   * @var int|null
-   */
-  public $i_score;
-
-  /**
-   * The location key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * The login prize key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_login_prize = '0';
-
-  /**
-   * The full discount of the cart.
-   *
-   * If `null`, the discount isn't calculated yet.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $m_discount;
-
-  /**
-   * The total discount amount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount_total;
-
-  /**
-   * The total amount in the catalog cart without tax.
-   *
-   * If `null`, the total amount isn't set yet.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $m_subtotal;
-
-  /**
-   * The tax amount.
-   *
-   * If `null`, the tax amount isn't set yet.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $m_tax;
-
-  /**
-   * The amount of appointment tips.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $m_tip_purchase;
-
-  /**
-   * The total amount in the catalog cart.
-   *
-   * If `null`, the total amount isn't set yet.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $m_total;
-
-  /**
-   * The discount code.
-   *
-   * If `null`, the discount code has been reset.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $text_discount_code = '';
-
-  /**
-   * The user key.
-   *
-   * This will be `0` for guests.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Catalog\Cart;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlSaleSid;
+
+/**
+ * Displays information about the cart in the catalog.
+ */
+class CartModel extends WlModelAbstract
+{
+  /**
+   * The list of discounts for each item.
+   *
+   * Keys refer to unique item keys, and values refer to discount amounts for the item.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_discount_item = [];
+
+  /**
+   * The list of items in the cart.
+   * <dl>
+   *   <dt>int <var>i_quantity</var></dt>
+   *   <dd>The quantity of sale items.</dd>
+   *   <dt>int <var>id_sale</var></dt>
+   *   <dd>The sale item type, one of the {@link WlSaleSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The sale item key.</dd>
+   *   <dt>?string [<var>k_login_prize</var>]</dt>
+   *
+   *   <dt>string <var>k_shop_product_option</var></dt>
+   *   <dd>The shop product option. If empty string, the sale item has no options.</dd>
+   * </dl>
+   *
+   * @get get
+   * @var array[]
+   */
+  public $a_item = [];
+
+  /**
+   * List of prizes that can be redeemed and applied to items in the cart.
+   * <dl>
+   *   <dt>string <var>k_reward_prize</var></dt>
+   *
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>Reward prize title.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_prize_propose = [];
+
+  /**
+   * List of cart items to which the selected prize can be applied
+   * <dl>
+   *   <dt>int <var>i_quantity</var></dt>
+   *   <dd>The quantity of sale items.</dd>
+   *   <dt>int <var>id_sale</var></dt>
+   *   <dd>The sale item type, one of the {@link WlSaleSid} constants.</dd>
+   *   <dt>bool <var>is_login_prize_used</var></dt>
+   *   <dd>Whether selected login prize discount applied to item.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The sale item key.</dd>
+   *   <dt>string <var>k_shop_product_option</var></dt>
+   *   <dd>The shop product option. If <tt>null</tt>, the sale item has no options.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_reward_item = [];
+
+  /**
+   * List of login prizes that can be applied to items in the cart.
+   * <dl>
+   *   <dt>string <var>k_login_prize</var></dt>
+   *
+   *   <dt>string <var>text_discount</var></dt>
+   *   <dd>Login prize discount title, for example 'Apply 10% off'.</dd>
+   *   <dt>string <var>text_discount_applied</var></dt>
+   *   <dd>Applied login prize discount title, for example '10% discount'.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>Login prize title.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_reward_propose = [];
+
+  /**
+   * Values derived for individual tax rates.
+   *
+   * Keys refer to tax keys.
+   * And values refer to the amount of tax in the cart.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_tax_list = [];
+
+  /**
+   * Amount of client's reward points.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $i_score;
+
+  /**
+   * The location key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * The login prize key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_login_prize = '0';
+
+  /**
+   * The full discount of the cart.
+   *
+   * If `null`, the discount isn't calculated yet.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_discount;
+
+  /**
+   * The total discount amount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount_total;
+
+  /**
+   * The total amount in the catalog cart without tax.
+   *
+   * If `null`, the total amount isn't set yet.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_subtotal;
+
+  /**
+   * The tax amount.
+   *
+   * If `null`, the tax amount isn't set yet.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_tax;
+
+  /**
+   * The amount of appointment tips.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_tip_purchase;
+
+  /**
+   * The total amount in the catalog cart.
+   *
+   * If `null`, the total amount isn't set yet.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_total;
+
+  /**
+   * The discount code.
+   *
+   * If `null`, the discount code has been reset.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $text_discount_code = '';
+
+  /**
+   * The user key.
+   *
+   * This will be `0` for guests.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/Cart/LimitQuantityModel.php b/WellnessLiving/Wl/Catalog/Cart/LimitQuantityModel.php
index 39e3a91b..a644e61f 100644
--- a/WellnessLiving/Wl/Catalog/Cart/LimitQuantityModel.php
+++ b/WellnessLiving/Wl/Catalog/Cart/LimitQuantityModel.php
@@ -1,99 +1,99 @@
-<?php
-
-namespace WellnessLiving\Wl\Catalog\Cart;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlSaleSid;
-
-/**
- * Displays information about the quantity limit when a promotion (Purchase Option) is added to the cart.
- */
-class LimitQuantityModel extends WlModelAbstract
-{
-  /**
-   * The cart items list with the next structure: <dl>
-   *   <dt>int <var>i_quantity</var></dt>
-   *   <dd>The quantity of sale items.</dd>
-   *   <dt>int <var>id_sale</var></dt>
-   *   <dd>The sale item type. One of the {@link WlSaleSid} constants.</dd>
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>The sale item ID.</dd>
-   *   <dt>string <var>k_shop_product_option</var></dt>
-   *   <dd>The shop product option. <tt>null</tt> if the sale item has no options.</dd>
-   * </dl>
-   *
-   * @get get
-   * @var array[]
-   */
-  public $a_item = [];
-
-  /**
-   * The quantity if promotions have already been purchased by the current user.
-   *
-   * If `true`, the quantity exceeded. Otherwise, this will be `false`.
-   *
-   * This will be `null` if not set yet, there's no limit quantity, or the limit quantity isn't exceeded.
-   *
-   * @get result
-   * @var int|null
-   */
-  public $i_purchase_already = null;
-
-  /**
-   * The current quantity of a promotion with the quantity limit in the cart.
-   *
-   * This will be `null` if not set yet, there's no limit quantity, or the limit quantity isn't exceeded.
-   *
-   * @get result
-   * @var int|null
-   */
-  public $i_purchase_current = null;
-
-  /**
-   * The quantity limit of the promotion.
-   *
-   * This will be `null` if not set yet or if there's no limit quantity.
-   *
-   * @get result
-   * @var int|null
-   */
-  public $i_quantity_limit = null;
-
-  /**
-   * Determines whether the limit quantity has been exceeded.
-   *
-   * If `true`, the limit quantity has been exceeded. Otherwise, this will be `false`.
-   *
-   * This will be `null` if not set yet.
-   *
-   * @get result
-   * @var bool|null
-   */
-  public $is_limit_exceeded = null;
-
-  /**
-   * The business in which the purchase will be made.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The promotion key to add to the cart.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_promotion = '0';
-
-  /**
-   * The user key.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Catalog\Cart;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlSaleSid;
+
+/**
+ * Displays information about the quantity limit when a promotion (Purchase Option) is added to the cart.
+ */
+class LimitQuantityModel extends WlModelAbstract
+{
+  /**
+   * The cart items list with the next structure: <dl>
+   *   <dt>int <var>i_quantity</var></dt>
+   *   <dd>The quantity of sale items.</dd>
+   *   <dt>int <var>id_sale</var></dt>
+   *   <dd>The sale item type. One of the {@link WlSaleSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The sale item ID.</dd>
+   *   <dt>string <var>k_shop_product_option</var></dt>
+   *   <dd>The shop product option. <tt>null</tt> if the sale item has no options.</dd>
+   * </dl>
+   *
+   * @get get
+   * @var array[]
+   */
+  public $a_item = [];
+
+  /**
+   * The quantity if promotions have already been purchased by the current user.
+   *
+   * If `true`, the quantity exceeded. Otherwise, this will be `false`.
+   *
+   * This will be `null` if not set yet, there's no limit quantity, or the limit quantity isn't exceeded.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $i_purchase_already = null;
+
+  /**
+   * The current quantity of a promotion with the quantity limit in the cart.
+   *
+   * This will be `null` if not set yet, there's no limit quantity, or the limit quantity isn't exceeded.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $i_purchase_current = null;
+
+  /**
+   * The quantity limit of the promotion.
+   *
+   * This will be `null` if not set yet or if there's no limit quantity.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $i_quantity_limit = null;
+
+  /**
+   * Determines whether the limit quantity has been exceeded.
+   *
+   * If `true`, the limit quantity has been exceeded. Otherwise, this will be `false`.
+   *
+   * This will be `null` if not set yet.
+   *
+   * @get result
+   * @var bool|null
+   */
+  public $is_limit_exceeded = null;
+
+  /**
+   * The business in which the purchase will be made.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The promotion key to add to the cart.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_promotion = '0';
+
+  /**
+   * The user key.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php b/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php
index 3b881ee0..eaaada7e 100644
--- a/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php
+++ b/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php
@@ -1,597 +1,597 @@
-<?php
-
-namespace WellnessLiving\Wl\Catalog\CatalogList;
-
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Catalog\PurchaseOptionViewSid;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-use WellnessLiving\Wl\WlSaleSid;
-
-/**
- * Displays information about a certain item in the store.
- *
- * When using this endpoint, note that the terms "promotion" and "Purchase Option" refer to the same thing.
- */
-class ElementModel extends WlModelAbstract
-{
-  /**
-   * The age restriction configuration.
-   *
-   * Age restrictions for an item apply when they're configured for a specific item and the API is requested from the backend
-   * or when age restriction are public.
-   *
-   * <dl>
-   *   <dt>int|null <var>i_age_from</var></dt>
-   *   <dd>The minimum age permitted for the event. This will be `null` if a minimum age isn't set or available.</dd>
-   *   <dt>int|null <var>i_age_to</var></dt>
-   *   <dd>The maximum age permitted for the event. This will be `null` if a maximum age isn't set or available.</dd>
-   *   <dt>bool <var>is_age_public</var></dt>
-   *   <dd>If `true`, age restrictions are public and available. Otherwise, this will be `false` if they're hidden.
-   *     When restrictions are hidden and the current user isn't a staff member, the age range will be empty.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_age_restriction;
-
-  /**
-   * Additional information specific for the item.
-   *
-   * The structure may be different depending on the item category.
-   * <dl>
-   *   <dt>
-   *     bool <var>is_renew_public</var>
-   *   </dt>
-   *   <dd>
-   *     This applies only for promotions.
-   *     <tt>true</tt> - clients can set promotion auto-renew.<br>
-   *     <tt>false</tt> - clients can't set promotion auto-renew.
-   *   </dd>
-   * </dl>
-   *
-   * Consider the following examples:
-   * * For a product, this contains inventory information.
-   * * For a gift card, this contains possible amounts.
-   * * For a session pass/membership/package, this contains information about start and stop dates.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_data;
-
-  /**
-   * Information about the discount code:
-   * <dl>
-   *   <dt>string <var>f_amount</var></dt>
-   *   <dd>The fixed amount of the discount.</dd>
-   *   <dt>float <var>f_percent</var></dt>
-   *   <dd>The percentage amount of the discount.</dd>
-   *   <dt>int <var>i_limit</var></dt>
-   *   <dt>string <var>k_discount_code</var></dt>
-   *   <dd>The discount code key.</dd>
-   *   <dt>string <var>s_discount_code</var></dt>
-   *   <dd>The discount code value.</dd>
-   * </dl>
-   *
-   * @get get
-   * @var array
-   */
-  public $a_discount_code = [];
-
-  /**
-   * Image information:
-   * <dl>
-   *   <dt>
-   *     int <var>i_height</var>
-   *   </dt>
-   *   <dd>
-   *     The height in pixels.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_width</var>
-   *   </dt>
-   *   <dd>
-   *     The width in pixels.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_empty</var>
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the item has no image (in this case, ignore the other keys of this array).<br>
-   *     <tt>false</tt> - the item has an image.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_url</var>
-   *   </dt>
-   *   <dd>
-   *     The image URL.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   * @deprecated This property is deprecated as it does not support multiple images.
-   *  Use {@link ElementModel::$a_image_list} instead.
-   */
-  public $a_image;
-
-  /**
-   * List of images.
-   * Keys are index and value is below information: <dl>
-   *   <dt>
-   *     int <var>i_height</var>
-   *   </dt>
-   *   <dd>
-   *     The height in pixels.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_width</var>
-   *   </dt>
-   *   <dd>
-   *     The width in pixels.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_empty</var>
-   *   </dt>
-   *   <dd>
-   *     `true` - item has no image (in this case ignore other keys of this array).
-   *     `false` - item has an image.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_url</var>
-   *   </dt>
-   *   <dd>
-   *     The image URL.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_image_list = [];
-
-  /**
-   * A list of installment plans. Each element has the following next keys:
-   * <dl>
-   *   <dt>
-   *     int <var>i_count</var>
-   *   </dt>
-   *   <dd>
-   *      The number of payments.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_duration</var>
-   *   </dt>
-   *   <dd>
-   *      The duration of a single period. One of the {@link ADurationSid} constants.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *      The number of periods specified by <var>id_period</var> between individual payments.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_currency</var>
-   *   </dt>
-   *   <dd>
-   *     The payment currency Key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_pay_installment_template</var>
-   *   </dt>
-   *   <dd>
-   *      The key of the installment plan template.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_amount</var>
-   *   </dt>
-   *   <dd>
-   *     The amount of the installment plan.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The title of the installment plan.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_installment_template;
-
-  /**
-   * The list of information pertaining to the specified item.
-   * <dl>
-   *   <dt>array <var>a_data</var></dt>
-   *   <dd>Contains additional data for the sale item.</dd>
-   *
-   *   <dt>array <var>a_image</var></dt>
-   *   <dd>Contains information about one image connected to a sale item.</dd>
-   *
-   *   <dt>array <var>a_tax</var></dt>
-   *   <dd>Contains information about taxes.</dd>
-   *
-   *   <dt>string <var>id_purchase_option_view</var></dt>
-   *   <dd>The Purchase Option view type. One of the {@link PurchaseOptionViewSid} constants.</dd>
-   *
-   *   <dt>string <var>m_discount_code</var></dt>
-   *   <dd>The discount code amount.</dd>
-   *
-   *   <dt>string <var>m_discount_login</var></dt>
-   *   <dd>The discount amount for the client type.</dd>
-   *
-   *   <dt>string <var>s_comment</var></dt>
-   *   <dd>Additional information about the sale item. For example, information about 'introductory offer'.</dd>
-   *
-   *   <dt>string <var>s_price</var></dt>
-   *   <dd>The price of the sale item in a human-readable format.</dd>
-   *
-   *   <dt>string <var>s_sale</var></dt>
-   *   <dd>The category title of the sale item.</dd>
-   *
-   *   <dt>string <var>s_title</var></dt>
-   *   <dd>The title of the sale item.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_item;
-
-  /**
-   * The list of items grouped by sale categories on the store page.
-   * Keys refer to sale IDs from {@link WlSaleSid}, and values refer to data to identify an item:<dl>
-   *   <dt>int <var>id_sale</var></dt>
-   *   <dd>The item category ID. One of the {@link WlSaleSid} constants.</dd>
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>The primary key of item.</dd>
-   *   <dt>string <var>k_shop_product_option</var></dt>
-   *   <dd>The product option or <tt>0</tt> for any other cases.</dd>
-   * </dl>
-   *
-   * @get get
-   * @var array[]
-   */
-  public $a_sale_id_group = [];
-
-  /**
-   * A list of the item's taxes.
-   * Keys refer tax keys, and values refer to the amount of tax.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_tax;
-
-  /**
-   * The client prorate date.
-   *
-   * This will be `null` in cases where the client prorate date hasn't passed.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $dl_client_prorate = null;
-
-  /**
-   * The price of the sale item.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $f_price;
-
-  /**
-   * The price of the sale item, including tax.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $f_price_include;
-
-  /**
-   * The retail price of the product. This will be empty if this isn't a product.
-   *
-   * @get result
-   * @var string
-   */
-  public $f_price_retail_product = '';
-
-  /**
-   * Full price of event. This will be empty if this isn't an event.
-   *
-   * @get result
-   * @var string
-   */
-  public $f_price_total_enrollment = '';
-
-  /**
-   * The tax amount.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $f_tax;
-
-  /**
-   * The sale item description.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $html_description;
-
-  /**
-   * Special instructions for the sale item.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $html_special;
-
-  /**
-   * The image height in pixels. Specify this value if you need the image to be returned in a specific size.
-   * The returned image will have default thumbnail size if this value isn't specified.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_height = 0;
-
-  /**
-   * The image width in pixels. Specify this value if you need the image to be returned in a specific size.
-   * The returned image will have default thumbnail size if this value isn't specified.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_width = 0;
-
-  /**
-   * The promotion image height in pixels. Specify this value if you need the image to be returned in a specific size.
-   * The returned image will have default thumbnail size if this value isn't specified.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_promotion_image_height = 0;
-
-  /**
-   * The promotion image width in pixels. Specify this value if you need the image to be returned in a specific size.
-   * The returned image will have default thumbnail size if this value isn't specified.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_promotion_image_width = 0;
-
-  /**
-   * The purchase item category ID.
-   * One of the {@link WlPurchaseItemSid} constants.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_purchase_item;
-
-  /**
-   * The ID of the item view category. One of the {@link PurchaseOptionViewSid} constants.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_purchase_option_view;
-
-  /**
-   * The ID of item category.
-   * One of the {@link WlSaleSid} constants.
-   *
-   * @get get,result
-   * @var int
-   */
-  public $id_sale = 0;
-
-  /**
-   * Determines whether the API is called in the backend mode.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_backend = false;
-
-  /**
-   * If `true`, the item requires a contract. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_contract;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The item key.
-   *
-   * @get get,result
-   * @var string
-   */
-  public $k_id = 0;
-
-  /**
-   * The location key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * The product option key.
-   *
-   * This will be `null` if not set yet.
-   *
-   * @get get,result
-   * @var string|null
-   */
-  public $k_shop_product_option = '';
-
-  /**
-   * The discount amount for a discount code.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount_code;
-
-  /**
-   * The discount amount for a user's type.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount_login;
-
-  /**
-   * The price on the price tag.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_price;
-
-  /**
-   * The price, including taxes.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_price_include;
-
-  /**
-   * The tax amount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_tax;
-
-  /**
-   * Additional comment(s).
-   * For example, information about 'introductory offer'.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_comment;
-
-  /**
-   * The price of the sale item in a human-readable format.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $s_price;
-
-  /**
-   * The category title of the sale item.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $s_sale;
-
-  /**
-   * The sale item title.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $s_title;
-
-  /**
-   * A list of goods to get information for. Every element must contain the next keys:
-   * <dl>
-   *   <dt>int <var>id_sale</var></dt>
-   *   <dd>The ID of the item category. One of the {@link WlSaleSid} constants.</dd>
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>The item key.</dd>
-   *   <dt>string <var>k_shop_product_option</var></dt>
-   *   <dd>The product option key. This will be <tt>0</tt> if the item isn't a product.</dd>
-   * </dl>
-   * Note that this must be serialized via JSON.
-   *
-   * If this field is specified, don't specify any of the following fields:
-   * * {@link ElementModel::$id_sale}
-   * * {@link ElementModel::$k_id}
-   * * {@link ElementModel::$k_shop_product_option}
-   *
-   * This will be `null` to get information for only one item.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $text_item = null;
-
-  /**
-   * The price on the price tag, with the currency sign.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_price;
-
-  /**
-   * The title of the item category.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_sale;
-
-  /**
-   * The item title.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_title;
-
-  /**
-   * The UID of a customer (user) for whom the purchase is made. This is used in the backend to calculate discounts.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid_customer = '';
-
-  /**
-   * A detailed description.
-   *
-   * @get result
-   * @var string|null
-   * @deprecated Use `html_description`.
-   */
-  public $xml_description;
-
-  /**
-   * Special instructions.
-   *
-   * @get result
-   * @var string|null
-   * @deprecated Use `html_special`.
-   */
-  public $xml_special;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Catalog\CatalogList;
+
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Catalog\PurchaseOptionViewSid;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+use WellnessLiving\Wl\WlSaleSid;
+
+/**
+ * Displays information about a certain item in the store.
+ *
+ * When using this endpoint, note that the terms "promotion" and "Purchase Option" refer to the same thing.
+ */
+class ElementModel extends WlModelAbstract
+{
+  /**
+   * The age restriction configuration.
+   *
+   * Age restrictions for an item apply when they're configured for a specific item and the API is requested from the backend
+   * or when age restriction are public.
+   *
+   * <dl>
+   *   <dt>int|null <var>i_age_from</var></dt>
+   *   <dd>The minimum age permitted for the event. This will be `null` if a minimum age isn't set or available.</dd>
+   *   <dt>int|null <var>i_age_to</var></dt>
+   *   <dd>The maximum age permitted for the event. This will be `null` if a maximum age isn't set or available.</dd>
+   *   <dt>bool <var>is_age_public</var></dt>
+   *   <dd>If `true`, age restrictions are public and available. Otherwise, this will be `false` if they're hidden.
+   *     When restrictions are hidden and the current user isn't a staff member, the age range will be empty.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_age_restriction;
+
+  /**
+   * Additional information specific for the item.
+   *
+   * The structure may be different depending on the item category.
+   * <dl>
+   *   <dt>
+   *     bool <var>is_renew_public</var>
+   *   </dt>
+   *   <dd>
+   *     This applies only for promotions.
+   *     <tt>true</tt> - clients can set promotion auto-renew.<br>
+   *     <tt>false</tt> - clients can't set promotion auto-renew.
+   *   </dd>
+   * </dl>
+   *
+   * Consider the following examples:
+   * * For a product, this contains inventory information.
+   * * For a gift card, this contains possible amounts.
+   * * For a session pass/membership/package, this contains information about start and stop dates.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_data;
+
+  /**
+   * Information about the discount code:
+   * <dl>
+   *   <dt>string <var>f_amount</var></dt>
+   *   <dd>The fixed amount of the discount.</dd>
+   *   <dt>float <var>f_percent</var></dt>
+   *   <dd>The percentage amount of the discount.</dd>
+   *   <dt>int <var>i_limit</var></dt>
+   *   <dt>string <var>k_discount_code</var></dt>
+   *   <dd>The discount code key.</dd>
+   *   <dt>string <var>s_discount_code</var></dt>
+   *   <dd>The discount code value.</dd>
+   * </dl>
+   *
+   * @get get
+   * @var array
+   */
+  public $a_discount_code = [];
+
+  /**
+   * Image information:
+   * <dl>
+   *   <dt>
+   *     int <var>i_height</var>
+   *   </dt>
+   *   <dd>
+   *     The height in pixels.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_width</var>
+   *   </dt>
+   *   <dd>
+   *     The width in pixels.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_empty</var>
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - the item has no image (in this case, ignore the other keys of this array).<br>
+   *     <tt>false</tt> - the item has an image.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_url</var>
+   *   </dt>
+   *   <dd>
+   *     The image URL.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   * @deprecated This property is deprecated as it does not support multiple images.
+   *  Use {@link ElementModel::$a_image_list} instead.
+   */
+  public $a_image;
+
+  /**
+   * List of images.
+   * Keys are index and value is below information: <dl>
+   *   <dt>
+   *     int <var>i_height</var>
+   *   </dt>
+   *   <dd>
+   *     The height in pixels.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_width</var>
+   *   </dt>
+   *   <dd>
+   *     The width in pixels.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_empty</var>
+   *   </dt>
+   *   <dd>
+   *     `true` - item has no image (in this case ignore other keys of this array).
+   *     `false` - item has an image.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_url</var>
+   *   </dt>
+   *   <dd>
+   *     The image URL.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_image_list = [];
+
+  /**
+   * A list of installment plans. Each element has the following next keys:
+   * <dl>
+   *   <dt>
+   *     int <var>i_count</var>
+   *   </dt>
+   *   <dd>
+   *      The number of payments.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_duration</var>
+   *   </dt>
+   *   <dd>
+   *      The duration of a single period. One of the {@link ADurationSid} constants.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_period</var>
+   *   </dt>
+   *   <dd>
+   *      The number of periods specified by <var>id_period</var> between individual payments.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_currency</var>
+   *   </dt>
+   *   <dd>
+   *     The payment currency Key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_pay_installment_template</var>
+   *   </dt>
+   *   <dd>
+   *      The key of the installment plan template.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_amount</var>
+   *   </dt>
+   *   <dd>
+   *     The amount of the installment plan.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The title of the installment plan.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_installment_template;
+
+  /**
+   * The list of information pertaining to the specified item.
+   * <dl>
+   *   <dt>array <var>a_data</var></dt>
+   *   <dd>Contains additional data for the sale item.</dd>
+   *
+   *   <dt>array <var>a_image</var></dt>
+   *   <dd>Contains information about one image connected to a sale item.</dd>
+   *
+   *   <dt>array <var>a_tax</var></dt>
+   *   <dd>Contains information about taxes.</dd>
+   *
+   *   <dt>string <var>id_purchase_option_view</var></dt>
+   *   <dd>The Purchase Option view type. One of the {@link PurchaseOptionViewSid} constants.</dd>
+   *
+   *   <dt>string <var>m_discount_code</var></dt>
+   *   <dd>The discount code amount.</dd>
+   *
+   *   <dt>string <var>m_discount_login</var></dt>
+   *   <dd>The discount amount for the client type.</dd>
+   *
+   *   <dt>string <var>s_comment</var></dt>
+   *   <dd>Additional information about the sale item. For example, information about 'introductory offer'.</dd>
+   *
+   *   <dt>string <var>s_price</var></dt>
+   *   <dd>The price of the sale item in a human-readable format.</dd>
+   *
+   *   <dt>string <var>s_sale</var></dt>
+   *   <dd>The category title of the sale item.</dd>
+   *
+   *   <dt>string <var>s_title</var></dt>
+   *   <dd>The title of the sale item.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_item;
+
+  /**
+   * The list of items grouped by sale categories on the store page.
+   * Keys refer to sale IDs from {@link WlSaleSid}, and values refer to data to identify an item:<dl>
+   *   <dt>int <var>id_sale</var></dt>
+   *   <dd>The item category ID. One of the {@link WlSaleSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The primary key of item.</dd>
+   *   <dt>string <var>k_shop_product_option</var></dt>
+   *   <dd>The product option or <tt>0</tt> for any other cases.</dd>
+   * </dl>
+   *
+   * @get get
+   * @var array[]
+   */
+  public $a_sale_id_group = [];
+
+  /**
+   * A list of the item's taxes.
+   * Keys refer tax keys, and values refer to the amount of tax.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_tax;
+
+  /**
+   * The client prorate date.
+   *
+   * This will be `null` in cases where the client prorate date hasn't passed.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $dl_client_prorate = null;
+
+  /**
+   * The price of the sale item.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $f_price;
+
+  /**
+   * The price of the sale item, including tax.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $f_price_include;
+
+  /**
+   * The retail price of the product. This will be empty if this isn't a product.
+   *
+   * @get result
+   * @var string
+   */
+  public $f_price_retail_product = '';
+
+  /**
+   * Full price of event. This will be empty if this isn't an event.
+   *
+   * @get result
+   * @var string
+   */
+  public $f_price_total_enrollment = '';
+
+  /**
+   * The tax amount.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $f_tax;
+
+  /**
+   * The sale item description.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $html_description;
+
+  /**
+   * Special instructions for the sale item.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $html_special;
+
+  /**
+   * The image height in pixels. Specify this value if you need the image to be returned in a specific size.
+   * The returned image will have default thumbnail size if this value isn't specified.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_height = 0;
+
+  /**
+   * The image width in pixels. Specify this value if you need the image to be returned in a specific size.
+   * The returned image will have default thumbnail size if this value isn't specified.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_width = 0;
+
+  /**
+   * The promotion image height in pixels. Specify this value if you need the image to be returned in a specific size.
+   * The returned image will have default thumbnail size if this value isn't specified.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_promotion_image_height = 0;
+
+  /**
+   * The promotion image width in pixels. Specify this value if you need the image to be returned in a specific size.
+   * The returned image will have default thumbnail size if this value isn't specified.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_promotion_image_width = 0;
+
+  /**
+   * The purchase item category ID.
+   * One of the {@link WlPurchaseItemSid} constants.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_purchase_item;
+
+  /**
+   * The ID of the item view category. One of the {@link PurchaseOptionViewSid} constants.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_purchase_option_view;
+
+  /**
+   * The ID of item category.
+   * One of the {@link WlSaleSid} constants.
+   *
+   * @get get,result
+   * @var int
+   */
+  public $id_sale = 0;
+
+  /**
+   * Determines whether the API is called in the backend mode.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_backend = false;
+
+  /**
+   * If `true`, the item requires a contract. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_contract;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The item key.
+   *
+   * @get get,result
+   * @var string
+   */
+  public $k_id = 0;
+
+  /**
+   * The location key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * The product option key.
+   *
+   * This will be `null` if not set yet.
+   *
+   * @get get,result
+   * @var string|null
+   */
+  public $k_shop_product_option = '';
+
+  /**
+   * The discount amount for a discount code.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount_code;
+
+  /**
+   * The discount amount for a user's type.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount_login;
+
+  /**
+   * The price on the price tag.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_price;
+
+  /**
+   * The price, including taxes.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_price_include;
+
+  /**
+   * The tax amount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_tax;
+
+  /**
+   * Additional comment(s).
+   * For example, information about 'introductory offer'.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_comment;
+
+  /**
+   * The price of the sale item in a human-readable format.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $s_price;
+
+  /**
+   * The category title of the sale item.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $s_sale;
+
+  /**
+   * The sale item title.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $s_title;
+
+  /**
+   * A list of goods to get information for. Every element must contain the next keys:
+   * <dl>
+   *   <dt>int <var>id_sale</var></dt>
+   *   <dd>The ID of the item category. One of the {@link WlSaleSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The item key.</dd>
+   *   <dt>string <var>k_shop_product_option</var></dt>
+   *   <dd>The product option key. This will be <tt>0</tt> if the item isn't a product.</dd>
+   * </dl>
+   * Note that this must be serialized via JSON.
+   *
+   * If this field is specified, don't specify any of the following fields:
+   * * {@link ElementModel::$id_sale}
+   * * {@link ElementModel::$k_id}
+   * * {@link ElementModel::$k_shop_product_option}
+   *
+   * This will be `null` to get information for only one item.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $text_item = null;
+
+  /**
+   * The price on the price tag, with the currency sign.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_price;
+
+  /**
+   * The title of the item category.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_sale;
+
+  /**
+   * The item title.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_title;
+
+  /**
+   * The UID of a customer (user) for whom the purchase is made. This is used in the backend to calculate discounts.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid_customer = '';
+
+  /**
+   * A detailed description.
+   *
+   * @get result
+   * @var string|null
+   * @deprecated Use `html_description`.
+   */
+  public $xml_description;
+
+  /**
+   * Special instructions.
+   *
+   * @get result
+   * @var string|null
+   * @deprecated Use `html_special`.
+   */
+  public $xml_special;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/CatalogList/ListModel.php b/WellnessLiving/Wl/Catalog/CatalogList/ListModel.php
index b64dae27..59b6bcc8 100644
--- a/WellnessLiving/Wl/Catalog/CatalogList/ListModel.php
+++ b/WellnessLiving/Wl/Catalog/CatalogList/ListModel.php
@@ -1,56 +1,56 @@
-<?php
-
-namespace WellnessLiving\Wl\Catalog\CatalogList;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Displays information about store items.
- */
-class ListModel extends WlModelAbstract
-{
-  /**
-   * The list of all sale items.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_product;
-
-  /**
-   * The list of products to show with duplicates.
-   *
-   * Products have their own order within every shop category, and they can be related to several categories.
-   * As a design decision, products are sorted in the backend using duplicates for every category.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_product_duplicate;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The key of a location.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * The key of user.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Catalog\CatalogList;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Displays information about store items.
+ */
+class ListModel extends WlModelAbstract
+{
+  /**
+   * The list of all sale items.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_product;
+
+  /**
+   * The list of products to show with duplicates.
+   *
+   * Products have their own order within every shop category, and they can be related to several categories.
+   * As a design decision, products are sorted in the backend using duplicates for every category.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_product_duplicate;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The key of a location.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * The key of user.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
index ab60964e..d297ee29 100644
--- a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
@@ -1,536 +1,536 @@
-<?php
-
-namespace WellnessLiving\Wl\Catalog\Payment;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
-use WellnessLiving\Wl\Insurance\Catalog\ProgramListModel;
-use WellnessLiving\Wl\Insurance\Enrollment\Field\EnrollmentFieldListModel;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-use WellnessLiving\Wl\WlSaleSid;
-
-/**
- * Purchases an item and performs the payment in the store.
- *
- * This endpoint uses a CAPTCHA check. To pass the CAPTCHA, consult the CAPTCHA API documentation.
- * The documentation specifies that a captcha must be sent for a specific action.
- *
- * For this API an action is {@link BusinessPaymentCaptcha::CID}.
- */
-class PaymentModel extends WlModelAbstract
-{
-  /**
-   * The staff commission earned for this purchase. If this isn't empty, it has the next fields: <dl>
-   *   <dt>string <var>k_staff</var></dt>
-   *   <dd>The staff key.</dd>
-   *   <dt>string <var>k_staff_pay</var></dt>
-   *   <dd>The payment schema key.</dd>
-   * </dl>
-   *
-   * @post get
-   * @var array
-   */
-  public $a_commission = [];
-
-  /**
-   * The list of items in the cart.
-   *
-   * This parameter is required.
-   *
-   * Every element must have the following keys:
-   * <dl>
-   *   <dt>
-   *     array [<var>a_config</var>]
-   *   </dt>
-   *   <dd>
-   *     Additional configuration information. This may contain the next keys:
-   *     <dl>
-   *       <dt>
-   *         array [<var>a_quick_gift</var>]
-   *       </dt>
-   *       <dd>
-   *         A list of components to be added to the client. For quick gift cards only: <dl>
-   *         <dt>int <var>i_count</var></dt>
-   *         <dd>The quantity of elements.</dd>
-   *         <dt>int <var>id_purchase_item</var></dt>
-   *         <dd>The purchase type of the element. One of the {@link WlPurchaseItemSid} constants.</dd>
-   *         <dt>string <var>k_id</var></dt>
-   *         <dd>The primary key of the element, depending on the element type.</dd></dl>
-   *       </dd>
-   *       <dt>
-   *         array [<var>a_uid_share</var>]
-   *       </dt>
-   *       <dd>
-   *         An array of UIDs representing the client's relatives that share the Purchase Option.
-   *       </dd>
-   *       <dt>
-   *         array [<var>a_wellness_program</var>]
-   *       </dt>
-   *       <dd>
-   *          "Wellness Program" fields.
-   *
-   *          <var>k_wellness_program</var> must be passed along with this array. See the description below.
-   *
-   *          <dl>
-   *            <dt>array <var>a_account</var></dt>
-   *            <dd>See {@link EnrollmentFieldListModel::$a_account} for a full description.</dd>
-   *            <dt>array <var>a_field</var></dt>
-   *            <dd>See {@link EnrollmentFieldListModel::$a_field} for a full description.</dd>
-   *          </dl>
-   *
-   *          It's recommended to validate the fields using the POST method of the {@link EnrollmentFieldListModel} model.
-   *       </dd>
-   *       <dt>
-   *         string [<var>dt_prorate</var>]
-   *       </dt>
-   *       <dd>
-   *         The prorate date, used only for memberships.
-   *       </dd>
-   *       <dt>
-   *         string [<var>dt_send_local</var>]
-   *       </dt>
-   *       <dd>
-   *         The date when the gift card will be sent. This is only used for gift cards.
-   *       </dd>
-   *       <dt>
-   *         string [<var>dt_start</var>]
-   *       </dt>
-   *       <dd>
-   *         The start date, used only for memberships.
-   *       </dd>
-   *       <dt>
-   *         bool [<var>is_pay_when_start</var>]
-   *       </dt>
-   *       <dd>
-   *         If `true`, the client won't be charged for this item until its start date. Otherwise, this will be `false`.
-   *         The Purchase Option must have a specified start date.
-   *       </dd>
-   *       <dt>
-   *         bool [<var>is_prorate</var>]
-   *       </dt>
-   *       <dd>
-   *         If this is set to `1`, this purchase will use the prorate rule. Otherwise, set this to `0`. This is only used for memberships.
-   *       </dd>
-   *       <dt>
-   *         bool [<var>is_prorate_fix</var>]
-   *       </dt>
-   *       <dd>
-   *         If this is set to `1`, the custom prorate amount will be used. Otherwise, set this to `0`. This is only used for memberships.
-   *       </dd>
-   *       <dt>
-   *         bool [<var>is_prorate_only</var>]
-   *       </dt>
-   *       <dd>
-   *         If this is set to `1`, this purchase is prorate only. Otherwise, set this to `0`. This is only used for memberships.
-   *       </dd>
-   *       <dt>
-   *         bool [<var>is_renew</var>]
-   *       </dt>
-   *       <dd>
-   *         If this is set to `1`, auto-renew will be enabled for the item. Otherwise, set this to `0`. This is only used for memberships.
-   *       </dd>
-   *       <dt>
-   *         string [<var>k_appointment</var>]
-   *       </dt>
-   *       <dd>
-   *         The appointment key, used only for appointment add-ons.
-   *       </dd>
-   *       <dt>
-   *         string [<var>k_coupon_amount</var>]
-   *       </dt>
-   *       <dd>
-   *         The key of the gift card amount, used only for gift cards.
-   *       </dd>
-   *       <dt>
-   *         string [<var>k_staff</var>]
-   *       </dt>
-   *       <dt>
-   *         string [<var>k_wellness_program</var>]
-   *       </dt>
-   *       <dd>
-   *          The "Wellness Program" key. Set this for the insurance membership promotion.
-   *
-   *          <var>a_wellness_program</var> array must be passed along with the key. See the array description above.
-   *
-   *          <p>Use the following models to work with this type of promotion:</p>
-   *          <ul>
-   *            <li>{@link ProgramListModel} to obtain list of active programs.</li>
-   *            <li>{@link EnrollmentFieldListModel} to get and validate fields for a given program.</li>
-   *          </ul>
-   *       </dd>
-   *       <dd>
-   *         The staff member key, used only for appointment tips.
-   *       </dd>
-   *       <dt>
-   *         string [<var>m_prorate_custom</var>]
-   *       </dt>
-   *       <dd>
-   *         The custom prorate price, used only memberships only. This is only used if <var>is_prorate_fix</var> is <tt>true</tt>.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_code</var>]
-   *       </dt>
-   *       <dd>
-   *         The gift card code. This is required for gift cards.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_image</var>]
-   *       </dt>
-   *       <dd>
-   *         The key of the image for the gift card. If empty, the business's first gift card image will be used. Specify this only for gift cards.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_mail</var>]
-   *       </dt>
-   *       <dd>
-   *         The gift card receiver email. This is required for gift cards.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_recipient</var>]
-   *       </dt>
-   *       <dd>
-   *         The gift card receiver name. This is required for gift cards.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_sender</var>]
-   *       </dt>
-   *       <dd>
-   *         The gift card sender name. This is required for gift cards.
-   *       </dd>
-   *       <dt>
-   *         string <var>[uid_to]</var>
-   *       </dt>
-   *       <dd>
-   *         Specifies the recipient of a transfer Purchase Option.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     array[] [<var>a_tax_custom</var>]
-   *   </dt>
-   *   <dd>
-   *     Customer taxes (optional). Every element must contain the following keys:
-   *     <dl><dt>string <var>f_tax</var></dt><dd>The tax amount.</dd>
-   *     <dt>string <var>k_tax</var></dt><dd>The tax key.</dd></dl>
-   *   </dd>
-   *   <dt>
-   *     string [<var>html_contract</var>]
-   *   </dt>
-   *   <dd>
-   *     The contract text. This is only required for items that require contract signing.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_quantity</var>
-   *   </dt>
-   *   <dd>
-   *     The item quantity.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_sale</var>
-   *   </dt>
-   *   <dd>
-   *     The item type ID. One of the {@link WlSaleSid} constants.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_id</var>
-   *   </dt>
-   *   <dd>
-   *     The item key.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_shop_product_option</var>]
-   *   </dt>
-   *   <dd>
-   *     The product option key, required only for products.
-   *   </dd>
-   *   <dt>
-   *     string [<var>m_price_custom</var>]
-   *   </dt>
-   *   <dd>
-   *     The custom price (optional).
-   *   </dd>
-   *   <dt>
-   *     string <var>[s_signature]</var>
-   *   </dt>
-   *   <dd>
-   *     The client signature, used for items that require a signed contract.
-   *   </dd>
-   * </dl>
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_item = [];
-
-  /**
-   * A list of payment sources to pay with.
-   *
-   * Each element has next keys:
-   * <dl>
-   *   <dt>
-   *     array [<var>a_pay_card</var>]
-   *   </dt>
-   *   <dd>
-   *     The payment card information:
-   *     <dl>
-   *       <dt>
-   *         array <var>a_pay_address</var>
-   *       </dt>
-   *       <dd>
-   *         The payment address:
-   *         <dl>
-   *           <dt>boolean <var>is_new</var></dt>
-   *           <dd>Set this value to <tt>1</tt> to add a new payment address or to <tt>0</tt> to use a saved payment address.</dd>
-   *           <dt>string [<var>k_geo_country</var>]</dt>
-   *           <dd>The key of the country used for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>k_geo_region</var>]</dt>
-   *           <dd>The key of the region for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>k_pay_address</var>]</dt>
-   *           <dd>The key of the saved payment address. Specify this to use a saved address.</dd>
-   *           <dt>string [<var>s_city</var>]</dt>
-   *           <dd>The city used for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_name</var>]</dt>
-   *           <dd>The card name. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_phone</var>]</dt>
-   *           <dd>The payment phone. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_postal</var>]</dt>
-   *           <dd>The postal code for the payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_street1</var>]</dt>
-   *           <dd>The payment address. Specify this to add a new address.</dd>
-   *           <dt>string [<var>s_street2</var>]</dt>
-   *           <dd>The optional payment address. Specify this to add a new address.</dd>
-   *         </dl>
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_csc</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card CSC. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_month</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card expiration month. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         int [<var>i_year</var>]
-   *       </dt>
-   *       <dd>
-   *         The credit card expiration year. Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         boolean <var>is_new</var>
-   *       </dt>
-   *       <dd>
-   *         Specify <tt>1</tt> to add a new card, or <tt>0</tt> to use a saved card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>k_pay_bank</var>]
-   *       </dt>
-   *       <dd>
-   *         The key of the credit card. Specify this to use saved card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_comment</var>]
-   *       </dt>
-   *       <dd>
-   *         Optional comment(s). Specify this to add a new card.
-   *       </dd>
-   *       <dt>
-   *         string [<var>s_number</var>]
-   *       </dt>
-   *       <dd>
-   *         The card number. Specify this to add a new card.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>f_amount</var>
-   *   </dt>
-   *   <dd>
-   *     The amount of money to withdraw with this payment source.
-   *   </dd>
-   *   <dt>
-   *     boolean [<var>is_hide</var>]
-   *   </dt>
-   *   <dd>
-   *     Determines whether this payment method is hidden.
-   *   </dd>
-   *   <dt>
-   *     boolean [<var>is_success</var>=<tt>false</tt>]
-   *   </dt>
-   *   <dd>
-   *     Identifies whether this source was successfully charged.
-   *   </dd>
-   *   <dt>
-   *     string [<var>m_surcharge</var>]
-   *   </dt>
-   *   <dd>
-   *     The client-side calculated surcharge.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_index</var>]
-   *   </dt>
-   *   <dd>
-   *     The index of this form (optional).
-   *   </dd>
-   *   <dt>
-   *     string <var>sid_pay_method</var>
-   *   </dt>
-   *   <dd>
-   *     The payment method ID.
-   *   </dd>
-   * </dl>
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_pay_form = [];
-
-  /**
-   * The list of quiz response keys.
-   * Keys refer to quiz keys.
-   * And values refer to responses.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_quiz_response = [];
-
-  /**
-   * The percentage discount (optional).
-   *
-   * @post post
-   * @var float
-   */
-  public $f_discount_percent = 0;
-
-  /**
-   * The WellnessLiving mode type (required). One of the {@link ModeSid} constants.
-   *
-   * @post get
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * Determines if the payment owner is an anonymous user (optional).
-   *
-   * @post get
-   * @var bool
-   */
-  public $is_guest = false;
-
-  /**
-   * Specify this if operations are performed by the staff member (optional).
-   *
-   * @post get
-   * @var bool
-   */
-  public $is_staff = false;
-
-  /**
-   * The business key (required).
-   *
-   * @post get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The location key (required).
-   *
-   * @post get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * The key of login activity.
-   *
-   * This will be `null` if not set yet.
-   *
-   * @post result
-   * @var string|null
-   */
-  public $k_login_activity = null;
-
-  /**
-   * The installment template key (optional).
-   * This will be `null` if the installment plan doesn't exist or isn't set for the purchased item.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_pay_installment_template;
-
-  /**
-   * The purchase key created during payment.
-   *
-   * @post result
-   * @var string
-   */
-  public $k_purchase;
-
-  /**
-   * The visit key to be paid (optional).
-   *
-   * @post post
-   * @var string
-   */
-  public $k_visit = '0';
-
-  /**
-   * The amount to discount (optional).
-   *
-   * @post post
-   * @var string
-   */
-  public $m_discount_flat = '0';
-
-  /**
-   * The manual surcharge amount.
-   *
-   * An empty string represents an automatic surcharge amount.
-   *
-   * @post post
-   * @var string
-   */
-  public $m_surcharge;
-
-  /**
-   * The tip amount (optional).
-   *
-   * @post post
-   * @var string
-   */
-  public $m_tip = '0';
-
-  /**
-   * The discount code (optional).
-   *
-   * @post post
-   * @var string
-   */
-  public $text_discount_code = '';
-
-  /**
-   * The custom receipt note.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_receipt_note = '';
-
-  /**
-   * The user's key (required).
-   *
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Catalog\Payment;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
+use WellnessLiving\Wl\Insurance\Catalog\ProgramListModel;
+use WellnessLiving\Wl\Insurance\Enrollment\Field\EnrollmentFieldListModel;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+use WellnessLiving\Wl\WlSaleSid;
+
+/**
+ * Purchases an item and performs the payment in the store.
+ *
+ * This endpoint uses a CAPTCHA check. To pass the CAPTCHA, consult the CAPTCHA API documentation.
+ * The documentation specifies that a captcha must be sent for a specific action.
+ *
+ * For this API an action is {@link BusinessPaymentCaptcha::CID}.
+ */
+class PaymentModel extends WlModelAbstract
+{
+  /**
+   * The staff commission earned for this purchase. If this isn't empty, it has the next fields: <dl>
+   *   <dt>string <var>k_staff</var></dt>
+   *   <dd>The staff key.</dd>
+   *   <dt>string <var>k_staff_pay</var></dt>
+   *   <dd>The payment schema key.</dd>
+   * </dl>
+   *
+   * @post get
+   * @var array
+   */
+  public $a_commission = [];
+
+  /**
+   * The list of items in the cart.
+   *
+   * This parameter is required.
+   *
+   * Every element must have the following keys:
+   * <dl>
+   *   <dt>
+   *     array [<var>a_config</var>]
+   *   </dt>
+   *   <dd>
+   *     Additional configuration information. This may contain the next keys:
+   *     <dl>
+   *       <dt>
+   *         array [<var>a_quick_gift</var>]
+   *       </dt>
+   *       <dd>
+   *         A list of components to be added to the client. For quick gift cards only: <dl>
+   *         <dt>int <var>i_count</var></dt>
+   *         <dd>The quantity of elements.</dd>
+   *         <dt>int <var>id_purchase_item</var></dt>
+   *         <dd>The purchase type of the element. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *         <dt>string <var>k_id</var></dt>
+   *         <dd>The primary key of the element, depending on the element type.</dd></dl>
+   *       </dd>
+   *       <dt>
+   *         array [<var>a_uid_share</var>]
+   *       </dt>
+   *       <dd>
+   *         An array of UIDs representing the client's relatives that share the Purchase Option.
+   *       </dd>
+   *       <dt>
+   *         array [<var>a_wellness_program</var>]
+   *       </dt>
+   *       <dd>
+   *          "Wellness Program" fields.
+   *
+   *          <var>k_wellness_program</var> must be passed along with this array. See the description below.
+   *
+   *          <dl>
+   *            <dt>array <var>a_account</var></dt>
+   *            <dd>See {@link EnrollmentFieldListModel::$a_account} for a full description.</dd>
+   *            <dt>array <var>a_field</var></dt>
+   *            <dd>See {@link EnrollmentFieldListModel::$a_field} for a full description.</dd>
+   *          </dl>
+   *
+   *          It's recommended to validate the fields using the POST method of the {@link EnrollmentFieldListModel} model.
+   *       </dd>
+   *       <dt>
+   *         string [<var>dt_prorate</var>]
+   *       </dt>
+   *       <dd>
+   *         The prorate date, used only for memberships.
+   *       </dd>
+   *       <dt>
+   *         string [<var>dt_send_local</var>]
+   *       </dt>
+   *       <dd>
+   *         The date when the gift card will be sent. This is only used for gift cards.
+   *       </dd>
+   *       <dt>
+   *         string [<var>dt_start</var>]
+   *       </dt>
+   *       <dd>
+   *         The start date, used only for memberships.
+   *       </dd>
+   *       <dt>
+   *         bool [<var>is_pay_when_start</var>]
+   *       </dt>
+   *       <dd>
+   *         If `true`, the client won't be charged for this item until its start date. Otherwise, this will be `false`.
+   *         The Purchase Option must have a specified start date.
+   *       </dd>
+   *       <dt>
+   *         bool [<var>is_prorate</var>]
+   *       </dt>
+   *       <dd>
+   *         If this is set to `1`, this purchase will use the prorate rule. Otherwise, set this to `0`. This is only used for memberships.
+   *       </dd>
+   *       <dt>
+   *         bool [<var>is_prorate_fix</var>]
+   *       </dt>
+   *       <dd>
+   *         If this is set to `1`, the custom prorate amount will be used. Otherwise, set this to `0`. This is only used for memberships.
+   *       </dd>
+   *       <dt>
+   *         bool [<var>is_prorate_only</var>]
+   *       </dt>
+   *       <dd>
+   *         If this is set to `1`, this purchase is prorate only. Otherwise, set this to `0`. This is only used for memberships.
+   *       </dd>
+   *       <dt>
+   *         bool [<var>is_renew</var>]
+   *       </dt>
+   *       <dd>
+   *         If this is set to `1`, auto-renew will be enabled for the item. Otherwise, set this to `0`. This is only used for memberships.
+   *       </dd>
+   *       <dt>
+   *         string [<var>k_appointment</var>]
+   *       </dt>
+   *       <dd>
+   *         The appointment key, used only for appointment add-ons.
+   *       </dd>
+   *       <dt>
+   *         string [<var>k_coupon_amount</var>]
+   *       </dt>
+   *       <dd>
+   *         The key of the gift card amount, used only for gift cards.
+   *       </dd>
+   *       <dt>
+   *         string [<var>k_staff</var>]
+   *       </dt>
+   *       <dt>
+   *         string [<var>k_wellness_program</var>]
+   *       </dt>
+   *       <dd>
+   *          The "Wellness Program" key. Set this for the insurance membership promotion.
+   *
+   *          <var>a_wellness_program</var> array must be passed along with the key. See the array description above.
+   *
+   *          <p>Use the following models to work with this type of promotion:</p>
+   *          <ul>
+   *            <li>{@link ProgramListModel} to obtain list of active programs.</li>
+   *            <li>{@link EnrollmentFieldListModel} to get and validate fields for a given program.</li>
+   *          </ul>
+   *       </dd>
+   *       <dd>
+   *         The staff member key, used only for appointment tips.
+   *       </dd>
+   *       <dt>
+   *         string [<var>m_prorate_custom</var>]
+   *       </dt>
+   *       <dd>
+   *         The custom prorate price, used only memberships only. This is only used if <var>is_prorate_fix</var> is <tt>true</tt>.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_code</var>]
+   *       </dt>
+   *       <dd>
+   *         The gift card code. This is required for gift cards.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_image</var>]
+   *       </dt>
+   *       <dd>
+   *         The key of the image for the gift card. If empty, the business's first gift card image will be used. Specify this only for gift cards.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_mail</var>]
+   *       </dt>
+   *       <dd>
+   *         The gift card receiver email. This is required for gift cards.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_recipient</var>]
+   *       </dt>
+   *       <dd>
+   *         The gift card receiver name. This is required for gift cards.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_sender</var>]
+   *       </dt>
+   *       <dd>
+   *         The gift card sender name. This is required for gift cards.
+   *       </dd>
+   *       <dt>
+   *         string <var>[uid_to]</var>
+   *       </dt>
+   *       <dd>
+   *         Specifies the recipient of a transfer Purchase Option.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     array[] [<var>a_tax_custom</var>]
+   *   </dt>
+   *   <dd>
+   *     Customer taxes (optional). Every element must contain the following keys:
+   *     <dl><dt>string <var>f_tax</var></dt><dd>The tax amount.</dd>
+   *     <dt>string <var>k_tax</var></dt><dd>The tax key.</dd></dl>
+   *   </dd>
+   *   <dt>
+   *     string [<var>html_contract</var>]
+   *   </dt>
+   *   <dd>
+   *     The contract text. This is only required for items that require contract signing.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_quantity</var>
+   *   </dt>
+   *   <dd>
+   *     The item quantity.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_sale</var>
+   *   </dt>
+   *   <dd>
+   *     The item type ID. One of the {@link WlSaleSid} constants.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_id</var>
+   *   </dt>
+   *   <dd>
+   *     The item key.
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_shop_product_option</var>]
+   *   </dt>
+   *   <dd>
+   *     The product option key, required only for products.
+   *   </dd>
+   *   <dt>
+   *     string [<var>m_price_custom</var>]
+   *   </dt>
+   *   <dd>
+   *     The custom price (optional).
+   *   </dd>
+   *   <dt>
+   *     string <var>[s_signature]</var>
+   *   </dt>
+   *   <dd>
+   *     The client signature, used for items that require a signed contract.
+   *   </dd>
+   * </dl>
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_item = [];
+
+  /**
+   * A list of payment sources to pay with.
+   *
+   * Each element has next keys:
+   * <dl>
+   *   <dt>
+   *     array [<var>a_pay_card</var>]
+   *   </dt>
+   *   <dd>
+   *     The payment card information:
+   *     <dl>
+   *       <dt>
+   *         array <var>a_pay_address</var>
+   *       </dt>
+   *       <dd>
+   *         The payment address:
+   *         <dl>
+   *           <dt>boolean <var>is_new</var></dt>
+   *           <dd>Set this value to <tt>1</tt> to add a new payment address or to <tt>0</tt> to use a saved payment address.</dd>
+   *           <dt>string [<var>k_geo_country</var>]</dt>
+   *           <dd>The key of the country used for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>k_geo_region</var>]</dt>
+   *           <dd>The key of the region for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>k_pay_address</var>]</dt>
+   *           <dd>The key of the saved payment address. Specify this to use a saved address.</dd>
+   *           <dt>string [<var>s_city</var>]</dt>
+   *           <dd>The city used for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_name</var>]</dt>
+   *           <dd>The card name. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_phone</var>]</dt>
+   *           <dd>The payment phone. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_postal</var>]</dt>
+   *           <dd>The postal code for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_street1</var>]</dt>
+   *           <dd>The payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_street2</var>]</dt>
+   *           <dd>The optional payment address. Specify this to add a new address.</dd>
+   *         </dl>
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_csc</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card CSC. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_month</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card expiration month. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_year</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card expiration year. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         boolean <var>is_new</var>
+   *       </dt>
+   *       <dd>
+   *         Specify <tt>1</tt> to add a new card, or <tt>0</tt> to use a saved card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>k_pay_bank</var>]
+   *       </dt>
+   *       <dd>
+   *         The key of the credit card. Specify this to use saved card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_comment</var>]
+   *       </dt>
+   *       <dd>
+   *         Optional comment(s). Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_number</var>]
+   *       </dt>
+   *       <dd>
+   *         The card number. Specify this to add a new card.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>f_amount</var>
+   *   </dt>
+   *   <dd>
+   *     The amount of money to withdraw with this payment source.
+   *   </dd>
+   *   <dt>
+   *     boolean [<var>is_hide</var>]
+   *   </dt>
+   *   <dd>
+   *     Determines whether this payment method is hidden.
+   *   </dd>
+   *   <dt>
+   *     boolean [<var>is_success</var>=<tt>false</tt>]
+   *   </dt>
+   *   <dd>
+   *     Identifies whether this source was successfully charged.
+   *   </dd>
+   *   <dt>
+   *     string [<var>m_surcharge</var>]
+   *   </dt>
+   *   <dd>
+   *     The client-side calculated surcharge.
+   *   </dd>
+   *   <dt>
+   *     string [<var>s_index</var>]
+   *   </dt>
+   *   <dd>
+   *     The index of this form (optional).
+   *   </dd>
+   *   <dt>
+   *     string <var>sid_pay_method</var>
+   *   </dt>
+   *   <dd>
+   *     The payment method ID.
+   *   </dd>
+   * </dl>
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_pay_form = [];
+
+  /**
+   * The list of quiz response keys.
+   * Keys refer to quiz keys.
+   * And values refer to responses.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_quiz_response = [];
+
+  /**
+   * The percentage discount (optional).
+   *
+   * @post post
+   * @var float
+   */
+  public $f_discount_percent = 0;
+
+  /**
+   * The WellnessLiving mode type (required). One of the {@link ModeSid} constants.
+   *
+   * @post get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * Determines if the payment owner is an anonymous user (optional).
+   *
+   * @post get
+   * @var bool
+   */
+  public $is_guest = false;
+
+  /**
+   * Specify this if operations are performed by the staff member (optional).
+   *
+   * @post get
+   * @var bool
+   */
+  public $is_staff = false;
+
+  /**
+   * The business key (required).
+   *
+   * @post get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The location key (required).
+   *
+   * @post get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * The key of login activity.
+   *
+   * This will be `null` if not set yet.
+   *
+   * @post result
+   * @var string|null
+   */
+  public $k_login_activity = null;
+
+  /**
+   * The installment template key (optional).
+   * This will be `null` if the installment plan doesn't exist or isn't set for the purchased item.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_pay_installment_template;
+
+  /**
+   * The purchase key created during payment.
+   *
+   * @post result
+   * @var string
+   */
+  public $k_purchase;
+
+  /**
+   * The visit key to be paid (optional).
+   *
+   * @post post
+   * @var string
+   */
+  public $k_visit = '0';
+
+  /**
+   * The amount to discount (optional).
+   *
+   * @post post
+   * @var string
+   */
+  public $m_discount_flat = '0';
+
+  /**
+   * The manual surcharge amount.
+   *
+   * An empty string represents an automatic surcharge amount.
+   *
+   * @post post
+   * @var string
+   */
+  public $m_surcharge;
+
+  /**
+   * The tip amount (optional).
+   *
+   * @post post
+   * @var string
+   */
+  public $m_tip = '0';
+
+  /**
+   * The discount code (optional).
+   *
+   * @post post
+   * @var string
+   */
+  public $text_discount_code = '';
+
+  /**
+   * The custom receipt note.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_receipt_note = '';
+
+  /**
+   * The user's key (required).
+   *
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php b/WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php
index a9c1322a..cfa4b579 100644
--- a/WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php
+++ b/WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php
@@ -1,65 +1,65 @@
-<?php
-
-namespace WellnessLiving\Wl\Catalog;
-
-use WellnessLiving\Wl\WlProgramSid;
-
-/**
- * A list of Purchase Option view types.
- *
- * Last ID: 9.
- */
-class PurchaseOptionViewSid
-{
-  /**
-   * A single appointment reservation.
-   */
-  const APPOINTMENT = 1;
-
-  /**
-   * A single class reservation.
-   */
-  const CLASS_PERIOD = 2;
-
-  /**
-   * A gift card.
-   */
-  const COUPON = 3;
-
-  /**
-   * Enrollments. Classes where flag event is <tt>true</tt>.
-   */
-  const ENROLLMENT = 4;
-
-  /**
-   * Promotions with programs:
-   * * {@link WlProgramSid::ACCOUNT_MEMBERSHIP};
-   * * {@link WlProgramSid::CLASS_MEMBERSHIP};
-   * * {@link WlProgramSid::RESOURCE_MEMBERSHIP};
-   * * {@link WlProgramSid::SERVICE_MEMBERSHIP};
-   * * {@link WlProgramSid::VISIT_MEMBERSHIP}.
-   */
-  const MEMBERSHIP = 8;
-
-  /**
-   * Promotions with program {@link WlProgramSid::PACKAGE}.
-   */
-  const PACKAGE = 5;
-
-  /**
-   * Products (such as water, t-shirts, etc.).
-   */
-  const PRODUCT = 6;
-
-  /**
-   * Session passes.
-   */
-  const PROMOTION = 7;
-
-  /**
-   * Products available for quick buy.
-   */
-  const QUICK_BUY = 9;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Catalog;
+
+use WellnessLiving\Wl\WlProgramSid;
+
+/**
+ * A list of Purchase Option view types.
+ *
+ * Last ID: 9.
+ */
+class PurchaseOptionViewSid
+{
+  /**
+   * A single appointment reservation.
+   */
+  const APPOINTMENT = 1;
+
+  /**
+   * A single class reservation.
+   */
+  const CLASS_PERIOD = 2;
+
+  /**
+   * A gift card.
+   */
+  const COUPON = 3;
+
+  /**
+   * Enrollments. Classes where flag event is <tt>true</tt>.
+   */
+  const ENROLLMENT = 4;
+
+  /**
+   * Promotions with programs:
+   * * {@link WlProgramSid::ACCOUNT_MEMBERSHIP};
+   * * {@link WlProgramSid::CLASS_MEMBERSHIP};
+   * * {@link WlProgramSid::RESOURCE_MEMBERSHIP};
+   * * {@link WlProgramSid::SERVICE_MEMBERSHIP};
+   * * {@link WlProgramSid::VISIT_MEMBERSHIP}.
+   */
+  const MEMBERSHIP = 8;
+
+  /**
+   * Promotions with program {@link WlProgramSid::PACKAGE}.
+   */
+  const PACKAGE = 5;
+
+  /**
+   * Products (such as water, t-shirts, etc.).
+   */
+  const PRODUCT = 6;
+
+  /**
+   * Session passes.
+   */
+  const PROMOTION = 7;
+
+  /**
+   * Products available for quick buy.
+   */
+  const QUICK_BUY = 9;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/StaffApp/CatalogCart/CatalogCartModel.php b/WellnessLiving/Wl/Catalog/StaffApp/CatalogCart/CatalogCartModel.php
index cb42bd20..f76fdb75 100644
--- a/WellnessLiving/Wl/Catalog/StaffApp/CatalogCart/CatalogCartModel.php
+++ b/WellnessLiving/Wl/Catalog/StaffApp/CatalogCart/CatalogCartModel.php
@@ -1,276 +1,276 @@
-<?php
-
-namespace WellnessLiving\Wl\Catalog\StaffApp\CatalogCart;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlSaleSid;
-
-/**
- * Calculates price data for a sale item.
- *
- * Note that the terms "promotion" and "Purchase Option" refer to the same thing.
- */
-class CatalogCartModel extends WlModelAbstract
-{
-  /**
-   * A list of available discount codes with the next structure:
-   * <dl>
-   *   <dt>bool <var>is_select</var></dt>
-   *   <dd>`true` if this code is selected currently, `false` otherwise.</dd>
-   *   <dt>string <var>k_discount_code</var></dt>
-   *   <dd>Discount code key.</dd>
-   *   <dt>string <var>text_discount_code</var></dt>
-   *   <dd>Value of the code that can be used to get discount.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>Name of the code.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_discount_code = [];
-
-  /**
-   * The list of cart items with the next structure:
-   * <dl>
-   *   <dt>array [<var>a_config</var>]</dt>
-   *   <dd>
-   *     The list of purchase item additional options:
-   *     <dl>
-   *       <dt>string [<var>f_price</var>]</dt>
-   *       <dd>The custom price.</dd>
-   *       <dt>string [<var>dt_prorate</var>]</dt>
-   *       <dd>The prorate date. This should be passed when <var>is_prorate</var>=<tt>true</tt>.</dd>
-   *       <dt>string [<var>dt_start</var>]</dt>
-   *       <dd>The promotion start date.</dd>
-   *       <dt>bool [<var>is_prorate</var>]</dt>
-   *       <dd>Determines whether to prorate the first payment.</dd>
-   *       <dt>bool [<var>is_prorate_fix</var>]</dt>
-   *       <dd>Determines if the client should pay for the first period now.</dd>
-   *       <dt>bool [<var>is_prorate_only</var>]</dt>
-   *       <dd>Determines whether the selected option 'pay prorate amount only' should only include the prorate amount.</dd>
-   *       <dt>string [<var>m_custom</var>]</dt>
-   *       <dd>The custom price of the gift card.</dd>
-   *       <dt>string [<var>dt_send_local</var>]</dt>
-   *       <dd>The date when the gift card email must be sent.</dd>
-   *       <dt>bool <var>is_mail</var></dt>
-   *       <dd>If <tt>true</tt>, the gift card will be sent via email. Otherwise, <tt>false</tt> if the gift card will be printed.</dd>
-   *       <dt>string [<var>s_mail</var>]</dt>
-   *       <dd>The recipient's email.</dd>
-   *       <dt>string [<var>s_message</var>]</dt>
-   *       <dd>The message.</dd>
-   *       <dt>string <var>s_recipient</var></dt>
-   *       <dd>The recipient's name.</dd>
-   *       <dt>string <var>s_sender</var></dt>
-   *       <dd>The sender's name.</dd>
-   *       <dt>string <var>m_prorate_custom</var></dt>
-   *       <dd>The amount of money for the prorate period. This should only be passed in the case of manual entry.</dd>
-   *       <dt>string <var>k_coupon</var></dt>
-   *       <dd>The coupon key.</dd>
-   *       <dt>string <var>k_coupon_amount</var></dt>
-   *       <dd>The coupon amount key.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>array [<var>a_tax_custom</var>]</dt>
-   *   <dd>
-   *     Information about taxes. If not passed, no custom taxes have been applied to the sale item.
-   *     If a record is present, the tax is custom using the next structure:
-   *     <dl>
-   *       <dt>string <var>f_tax</var></dt>
-   *       <dd>The tax amount.</dd>
-   *       <dt>string <var>k_tax</var></dt>
-   *       <dd>The tax keys.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>int [<var>f_discount_percent</var>]</dt>
-   *   <dd>The discount percentage, applied to the current item.</dd>
-   *   <dt>int <var>i_quantity</var></dt>
-   *   <dd>The quantity of sale items.</dd>
-   *   <dt>int <var>id_sale</var></dt>
-   *   <dd>The sale item type. One of the {@link WlSaleSid} constants.</dd>
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>The sale item key.</dd>
-   *   <dt>string <var>k_shop_product_option</var></dt>
-   *   <dd>
-   *     The store product option key. This will be <tt>null</tt> if the sale item has no options.
-   *
-   *   </dd>
-   *   <dt>string [<var>m_discount_fix</var>]</dt>
-   *   <dd>The fixed price discount, applied to the current item.</dd>
-   *   <dt>string [<var>m_price_custom</var>]</dt>
-   *   <dd>The custom price of the sale item. If not passed, no custom price has been applied to the sale item.</dd>
-   * </dl>
-   *
-   * @get get
-   * @var array[]
-   */
-  public $a_item = [];
-
-  /**
-   * The discount as a percentage.
-   *
-   * @get get
-   * @var float
-   */
-  public $f_discount_percent = 0;
-
-  /**
-   * If `true`, every item is checked at the cart. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_check_cart_item = false;
-
-  /**
-   * Determines whether the business applied a commission at checkout.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_commission = false;
-
-  /**
-   * Determines, how staff sees discount codes in Store.
-   * `true` as select field, `false` as input field.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_discount_code_mode_select = false;
-
-  /**
-   * Determines whether to display custom receipt notes at checkout.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_receipt_note = false;
-
-  /**
-   * The business key.
-   *
-   * This field isn't used directly, but described for correct JavaScript auto-generation.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The business location key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location = '';
-
-  /**
-   * The discount amount in dollars, excluding tax.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount;
-
-  /**
-   * The manual discount amount in dollars, excluding tax.
-   * Staff members can set this amount when making a sale.
-   *
-   * @get get
-   * @var string
-   */
-  public $m_discount_flat = '';
-
-  /**
-   * The discount amount applied to the cart's total amount, including taxes.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount_total;
-
-  /**
-   * The subtotal amount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_subtotal;
-
-  /**
-   * The amount of tax.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_tax;
-
-  /**
-   * The amount of tips.
-   *
-   * @get get
-   * @var string
-   */
-  public $m_tip = '';
-
-  /**
-   * The amount of appointment tips.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_tip_purchase;
-
-  /**
-   * The cart's total amount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_total;
-
-  /**
-   * The discount code.
-   *
-   * This will be `null` if not set yet.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $text_discount_code = null;
-
-  /**
-   * The discount code's error message.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_error_code;
-
-  /**
-   * The custom receipt note's text.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_receipt_note = '';
-
-  /**
-   * The key of the current user.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid_current;
-
-  /**
-   * The key of the user who performed the purchase.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid_customer = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Catalog\StaffApp\CatalogCart;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlSaleSid;
+
+/**
+ * Calculates price data for a sale item.
+ *
+ * Note that the terms "promotion" and "Purchase Option" refer to the same thing.
+ */
+class CatalogCartModel extends WlModelAbstract
+{
+  /**
+   * A list of available discount codes with the next structure:
+   * <dl>
+   *   <dt>bool <var>is_select</var></dt>
+   *   <dd>`true` if this code is selected currently, `false` otherwise.</dd>
+   *   <dt>string <var>k_discount_code</var></dt>
+   *   <dd>Discount code key.</dd>
+   *   <dt>string <var>text_discount_code</var></dt>
+   *   <dd>Value of the code that can be used to get discount.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>Name of the code.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_discount_code = [];
+
+  /**
+   * The list of cart items with the next structure:
+   * <dl>
+   *   <dt>array [<var>a_config</var>]</dt>
+   *   <dd>
+   *     The list of purchase item additional options:
+   *     <dl>
+   *       <dt>string [<var>f_price</var>]</dt>
+   *       <dd>The custom price.</dd>
+   *       <dt>string [<var>dt_prorate</var>]</dt>
+   *       <dd>The prorate date. This should be passed when <var>is_prorate</var>=<tt>true</tt>.</dd>
+   *       <dt>string [<var>dt_start</var>]</dt>
+   *       <dd>The promotion start date.</dd>
+   *       <dt>bool [<var>is_prorate</var>]</dt>
+   *       <dd>Determines whether to prorate the first payment.</dd>
+   *       <dt>bool [<var>is_prorate_fix</var>]</dt>
+   *       <dd>Determines if the client should pay for the first period now.</dd>
+   *       <dt>bool [<var>is_prorate_only</var>]</dt>
+   *       <dd>Determines whether the selected option 'pay prorate amount only' should only include the prorate amount.</dd>
+   *       <dt>string [<var>m_custom</var>]</dt>
+   *       <dd>The custom price of the gift card.</dd>
+   *       <dt>string [<var>dt_send_local</var>]</dt>
+   *       <dd>The date when the gift card email must be sent.</dd>
+   *       <dt>bool <var>is_mail</var></dt>
+   *       <dd>If <tt>true</tt>, the gift card will be sent via email. Otherwise, <tt>false</tt> if the gift card will be printed.</dd>
+   *       <dt>string [<var>s_mail</var>]</dt>
+   *       <dd>The recipient's email.</dd>
+   *       <dt>string [<var>s_message</var>]</dt>
+   *       <dd>The message.</dd>
+   *       <dt>string <var>s_recipient</var></dt>
+   *       <dd>The recipient's name.</dd>
+   *       <dt>string <var>s_sender</var></dt>
+   *       <dd>The sender's name.</dd>
+   *       <dt>string <var>m_prorate_custom</var></dt>
+   *       <dd>The amount of money for the prorate period. This should only be passed in the case of manual entry.</dd>
+   *       <dt>string <var>k_coupon</var></dt>
+   *       <dd>The coupon key.</dd>
+   *       <dt>string <var>k_coupon_amount</var></dt>
+   *       <dd>The coupon amount key.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>array [<var>a_tax_custom</var>]</dt>
+   *   <dd>
+   *     Information about taxes. If not passed, no custom taxes have been applied to the sale item.
+   *     If a record is present, the tax is custom using the next structure:
+   *     <dl>
+   *       <dt>string <var>f_tax</var></dt>
+   *       <dd>The tax amount.</dd>
+   *       <dt>string <var>k_tax</var></dt>
+   *       <dd>The tax keys.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>int [<var>f_discount_percent</var>]</dt>
+   *   <dd>The discount percentage, applied to the current item.</dd>
+   *   <dt>int <var>i_quantity</var></dt>
+   *   <dd>The quantity of sale items.</dd>
+   *   <dt>int <var>id_sale</var></dt>
+   *   <dd>The sale item type. One of the {@link WlSaleSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The sale item key.</dd>
+   *   <dt>string <var>k_shop_product_option</var></dt>
+   *   <dd>
+   *     The store product option key. This will be <tt>null</tt> if the sale item has no options.
+   *
+   *   </dd>
+   *   <dt>string [<var>m_discount_fix</var>]</dt>
+   *   <dd>The fixed price discount, applied to the current item.</dd>
+   *   <dt>string [<var>m_price_custom</var>]</dt>
+   *   <dd>The custom price of the sale item. If not passed, no custom price has been applied to the sale item.</dd>
+   * </dl>
+   *
+   * @get get
+   * @var array[]
+   */
+  public $a_item = [];
+
+  /**
+   * The discount as a percentage.
+   *
+   * @get get
+   * @var float
+   */
+  public $f_discount_percent = 0;
+
+  /**
+   * If `true`, every item is checked at the cart. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_check_cart_item = false;
+
+  /**
+   * Determines whether the business applied a commission at checkout.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_commission = false;
+
+  /**
+   * Determines, how staff sees discount codes in Store.
+   * `true` as select field, `false` as input field.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_discount_code_mode_select = false;
+
+  /**
+   * Determines whether to display custom receipt notes at checkout.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_receipt_note = false;
+
+  /**
+   * The business key.
+   *
+   * This field isn't used directly, but described for correct JavaScript auto-generation.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The business location key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '';
+
+  /**
+   * The discount amount in dollars, excluding tax.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount;
+
+  /**
+   * The manual discount amount in dollars, excluding tax.
+   * Staff members can set this amount when making a sale.
+   *
+   * @get get
+   * @var string
+   */
+  public $m_discount_flat = '';
+
+  /**
+   * The discount amount applied to the cart's total amount, including taxes.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount_total;
+
+  /**
+   * The subtotal amount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_subtotal;
+
+  /**
+   * The amount of tax.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_tax;
+
+  /**
+   * The amount of tips.
+   *
+   * @get get
+   * @var string
+   */
+  public $m_tip = '';
+
+  /**
+   * The amount of appointment tips.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_tip_purchase;
+
+  /**
+   * The cart's total amount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_total;
+
+  /**
+   * The discount code.
+   *
+   * This will be `null` if not set yet.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $text_discount_code = null;
+
+  /**
+   * The discount code's error message.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_error_code;
+
+  /**
+   * The custom receipt note's text.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_receipt_note = '';
+
+  /**
+   * The key of the current user.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid_current;
+
+  /**
+   * The key of the user who performed the purchase.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid_customer = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Classes/ClassList/BookListModel.php b/WellnessLiving/Wl/Classes/ClassList/BookListModel.php
index 1a38e67a..2728ba8c 100644
--- a/WellnessLiving/Wl/Classes/ClassList/BookListModel.php
+++ b/WellnessLiving/Wl/Classes/ClassList/BookListModel.php
@@ -1,75 +1,75 @@
-<?php
-
-namespace WellnessLiving\Wl\Classes\ClassList;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * An endpoint to get all the classes for a location.
- */
-class BookListModel extends WlModelAbstract
-{
-  /**
-   * The class list. Every element has the following structure:
-   * <dl>
-   *   <dt>array <var>a_class_tab</var></dt>
-   *   <dd>The list of tab keys for the class.</dd>
-   *
-   *   <dt>string <var>dtu_book_date</var></dt>
-   *   <dd>The book date of an event in UTC date/time format. Can be empty string if user cannot book the event.</dd>
-   *
-   *   <dt>bool <var>is_active</var></dt>
-   *   <dd>This will be <tt>true</tt> if the class is active. Otherwise, this will be <tt>false</tt>.</dd>
-   *
-   *   <dt>bool <var>is_event</var></dt>
-   *   <dd>This will be <tt>true</tt> for events. Otherwise, this will be <tt>false</tt> for classes.</dd>
-   *
-   *   <dt>sting <var>k_class</var></dt>
-   *   <dd>The class key.</dd>
-   *
-   *   <dt>sting <var>k_enrollment_block</var></dt>
-   *   <dd>The enrollment block key.</dd>
-   *
-   *   <dt>string <var>m_price_total</var></dt>
-   *   <dd>The total price for an event.</dd>
-   *
-   *   <dt>sting <var>text_description</var></dt>
-   *   <dd>The class description.</dd>
-   *
-   *   <dt>sting <var>text_title</var></dt>
-   *   <dd>The class name.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_class;
-
-  /**
-   * The image height in pixels. Specify this value if you need the image to be returned in a specific size.
-   * If this value isn't specified, the returned image will have default thumbnail size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_height = 0;
-
-  /**
-   * The image width in pixels. Specify this value if you need the image to be returned in a specific size.
-   * If this value isn't specified, the returned image will have default thumbnail size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_width = 0;
-
-  /**
-   * The location key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Classes\ClassList;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * An endpoint to get all the classes for a location.
+ */
+class BookListModel extends WlModelAbstract
+{
+  /**
+   * The class list. Every element has the following structure:
+   * <dl>
+   *   <dt>array <var>a_class_tab</var></dt>
+   *   <dd>The list of tab keys for the class.</dd>
+   *
+   *   <dt>string <var>dtu_book_date</var></dt>
+   *   <dd>The book date of an event in UTC date/time format. Can be empty string if user cannot book the event.</dd>
+   *
+   *   <dt>bool <var>is_active</var></dt>
+   *   <dd>This will be <tt>true</tt> if the class is active. Otherwise, this will be <tt>false</tt>.</dd>
+   *
+   *   <dt>bool <var>is_event</var></dt>
+   *   <dd>This will be <tt>true</tt> for events. Otherwise, this will be <tt>false</tt> for classes.</dd>
+   *
+   *   <dt>sting <var>k_class</var></dt>
+   *   <dd>The class key.</dd>
+   *
+   *   <dt>sting <var>k_enrollment_block</var></dt>
+   *   <dd>The enrollment block key.</dd>
+   *
+   *   <dt>string <var>m_price_total</var></dt>
+   *   <dd>The total price for an event.</dd>
+   *
+   *   <dt>sting <var>text_description</var></dt>
+   *   <dd>The class description.</dd>
+   *
+   *   <dt>sting <var>text_title</var></dt>
+   *   <dd>The class name.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_class;
+
+  /**
+   * The image height in pixels. Specify this value if you need the image to be returned in a specific size.
+   * If this value isn't specified, the returned image will have default thumbnail size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_height = 0;
+
+  /**
+   * The image width in pixels. Specify this value if you need the image to be returned in a specific size.
+   * If this value isn't specified, the returned image will have default thumbnail size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_width = 0;
+
+  /**
+   * The location key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Classes/ClassView/ElementModel.php b/WellnessLiving/Wl/Classes/ClassView/ElementModel.php
index e89b5ecc..d69cd369 100644
--- a/WellnessLiving/Wl/Classes/ClassView/ElementModel.php
+++ b/WellnessLiving/Wl/Classes/ClassView/ElementModel.php
@@ -1,169 +1,169 @@
-<?php
-
-namespace WellnessLiving\Wl\Classes\ClassView;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves information about a class element.
- */
-class ElementModel extends WlModelAbstract
-{
-  /**
-   * Displays information about the class schedule(s). Each element has the next structure:
-   * <dl>
-   *   <dt>array <var>a_schedule</var></dt>
-   *   <dd>A list of class schedules. Each element has the next structure:
-   *     <dl>
-   *       <dt>array <var>a_repeat</var></dt>
-   *       <dd>Schedule repeat options:
-   *         <dl>
-   *           <dt>int <var>i_repeat</var></dt>
-   *           <dd>A count of the periods specified in <var>id_repeat</var>.</dd>
-   *           <dt>int <var>id_repeat</var></dt>
-   *           <dd>The measuring unit of <var>i_repeat</var>.</dd>
-   *           </dl>
-   *       </dd>
-   *       <dt>string[] <var>a_staff_key</var></dt>
-   *       <dd>A list of staff member keys that provide sessions for this schedule.</dd>
-   *       <dt>string <var>dl_end</var></dt>
-   *       <dd>
-   *         The end date of the schedule in the location's time zone.
-   *         This will be empty or zero if the schedule is ongoing.
-   *       </dd>
-   *       <dt>string <var>dl_start</var></dt>
-   *       <dd>The start date of the schedule in location's time zone.</dd>
-   *       <dt>int <var>i_day</var></dt>
-   *       <dd>The day of the week, where the class schedule exists, starting with 1 for Monday and ending with 7 for Sunday.</dd>
-   *       <dt>int <var>i_duration</var></dt>
-   *       <dd>The duration of the schedule sessions in minutes.</dd>
-   *       <dt>int <var>is_cancel</var></dt>
-   *       <dd>Defines whether the schedule canceled or not.</dd>
-   *       <dt>string <var>k_location</var></dt>
-   *       <dd>The location key of the schedule.</dd>
-   *       <dt>string <var>m_price</var></dt>
-   *       <dd>The price of a single session of the schedule.</dd>
-   *       <dt>string <var>text_time</var></dt>
-   *       <dd>The time of the session in the following format: `[start_time] - [end_time]` in the locale's time zone.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>array <var>a_config</var></dt>
-   *   <dd>Class-specific business policies. This will be <tt>null</tt> in cases when the business policy is used.</dd>
-   *   <dt>array <var>a_search_tag</var></dt>
-   *   <dd>Tags for quick search.</dd>
-   *   <dt>array <var>a_visits_required</var></dt>
-   *   <dd>Information about visits that should be reviewed prior to visiting this class/event.</dd>
-   *   <dt>bool|null <var>has_own_image</var></dt>
-   *   <dd>
-   *     This field will be `true` if the image used for the class is an image uploaded in the class setup.
-   *     If an image isn't uploaded in the class setup, but there's at least one image in Setup->Locations image slider,
-   *     this field will be `false`.
-   *     This field will be `null` if the class image isn't uploaded, and there are no images in location slider.
-   *     In such cases, an empty image is used.
-   *   </dd>
-   *   <dt>string <var>html_description</var></dt>
-   *   <dd>The browser-safe description.</dd>
-   *   <dt>string <var>html_special_instruction</var></dt>
-   *   <dd>Special instructions safe to be inserted to a browser.</dd>
-   *   <dt>int <var>i_age_from</var></dt>
-   *   <dd>The minimum age restriction.</dd>
-   *   <dt>int <var>i_age_to</var></dt>
-   *   <dd>The maximum age restriction.</dd>
-   *   <dt>bool <var>is_age_public</var></dt>
-   *   <dd>Determines whether age restriction exist and should be taken into account prior to booking this class/event.</dd>
-   *   <dt>bool <var>is_bookable</var></dt>
-   *   <dd>Determines whether clients can book the class or event online.</dd>w
-   *   <dt>bool <var>is_online_private</var></dt>
-   *   <dd>
-   *     `true` - show classes only for clients who can book online.
-   *     `false` - show classes for all clients.
-   *   </dd>
-   *   <dt>bool <var>is_promotion_client</var></dt>
-   *   <dd>Determines whether clients of the business can see a list of applicable Purchase Options.</dd>
-   *   <dt>bool <var>is_promotion_only</var></dt>
-   *   <dd>Determines whether the item can be booked only using promotions.</dd>
-   *   <dt>bool <var>is_promotion_staff</var></dt>
-   *   <dd>Determines whether staff members of the business can see a list of applicable Purchase Options.</dd>
-   *   <dt>bool <var>is_single_buy</var></dt>
-   *   <dd>
-   *     Determines whether the item can be paid with Drop In or not.
-   *     If it can be paid with Drop In, then `m_price` shows the price for one visit.
-   *     If this is `0`, it means the class is free.
-   *   </dd>
-   *   <dt>bool <var>is_virtual</var></dt>
-   *   <dd>Determines whether the item is virtual.</dd>
-   *   <dt>bool <var>is_event</var></dt>
-   *   <dd>
-   *     Determines whether the item is an event or class instance. If `true`, the item is an event instance.
-   *     Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>string <var>k_class</var></dt>
-   *   <dd>The class key.</dd>
-   *   <dt>string <var>m_price</var></dt>
-   *   <dd>Drop In price, if the class allows payment for one visit.</dd>
-   *   <dt>bool <var>show_special_instructions</var></dt>
-   *   <dd>
-   *     This will be `true` if special instructions can be public.
-   *     Otherwise, this will be `false` if they should only be shown to the clients who booked the class.
-   *   </dd>
-   *   <dt>string <var>xml_description</var></dt>
-   *   <dd>The item description.</dd>
-   *   <dt>string <var>xml_special_instruction</var></dt>
-   *   <dd>The item's special instructions.</dd>
-   *   <dt>string <var>url_image</var></dt>
-   *   <dd>The URL link to the item image.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_class_list = [];
-
-  /**
-   * The image height in pixels. Specify this value if you need the image to be returned in a specific size.
-   * If this value isn't specified, the returned image will have default thumbnail size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_height = 0;
-
-  /**
-   * The image width in pixels. Specify this value if you need the image to be returned in a specific size.
-   * If this value isn't specified, the returned image will have default thumbnail size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_width = 0;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The class key used to get information for a specific class.
-   *
-   * An empty value returns information for all classes of the business.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_class = '';
-
-  /**
-   * Defines if canceled schedules should be included in the result.
-   *
-   * If `true`, canceled schedules will be shown. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @var bool
-   */
-  public $show_cancelled = false;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Classes\ClassView;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves information about a class element.
+ */
+class ElementModel extends WlModelAbstract
+{
+  /**
+   * Displays information about the class schedule(s). Each element has the next structure:
+   * <dl>
+   *   <dt>array <var>a_schedule</var></dt>
+   *   <dd>A list of class schedules. Each element has the next structure:
+   *     <dl>
+   *       <dt>array <var>a_repeat</var></dt>
+   *       <dd>Schedule repeat options:
+   *         <dl>
+   *           <dt>int <var>i_repeat</var></dt>
+   *           <dd>A count of the periods specified in <var>id_repeat</var>.</dd>
+   *           <dt>int <var>id_repeat</var></dt>
+   *           <dd>The measuring unit of <var>i_repeat</var>.</dd>
+   *           </dl>
+   *       </dd>
+   *       <dt>string[] <var>a_staff_key</var></dt>
+   *       <dd>A list of staff member keys that provide sessions for this schedule.</dd>
+   *       <dt>string <var>dl_end</var></dt>
+   *       <dd>
+   *         The end date of the schedule in the location's time zone.
+   *         This will be empty or zero if the schedule is ongoing.
+   *       </dd>
+   *       <dt>string <var>dl_start</var></dt>
+   *       <dd>The start date of the schedule in location's time zone.</dd>
+   *       <dt>int <var>i_day</var></dt>
+   *       <dd>The day of the week, where the class schedule exists, starting with 1 for Monday and ending with 7 for Sunday.</dd>
+   *       <dt>int <var>i_duration</var></dt>
+   *       <dd>The duration of the schedule sessions in minutes.</dd>
+   *       <dt>int <var>is_cancel</var></dt>
+   *       <dd>Defines whether the schedule canceled or not.</dd>
+   *       <dt>string <var>k_location</var></dt>
+   *       <dd>The location key of the schedule.</dd>
+   *       <dt>string <var>m_price</var></dt>
+   *       <dd>The price of a single session of the schedule.</dd>
+   *       <dt>string <var>text_time</var></dt>
+   *       <dd>The time of the session in the following format: `[start_time] - [end_time]` in the locale's time zone.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>array <var>a_config</var></dt>
+   *   <dd>Class-specific business policies. This will be <tt>null</tt> in cases when the business policy is used.</dd>
+   *   <dt>array <var>a_search_tag</var></dt>
+   *   <dd>Tags for quick search.</dd>
+   *   <dt>array <var>a_visits_required</var></dt>
+   *   <dd>Information about visits that should be reviewed prior to visiting this class/event.</dd>
+   *   <dt>bool|null <var>has_own_image</var></dt>
+   *   <dd>
+   *     This field will be `true` if the image used for the class is an image uploaded in the class setup.
+   *     If an image isn't uploaded in the class setup, but there's at least one image in Setup->Locations image slider,
+   *     this field will be `false`.
+   *     This field will be `null` if the class image isn't uploaded, and there are no images in location slider.
+   *     In such cases, an empty image is used.
+   *   </dd>
+   *   <dt>string <var>html_description</var></dt>
+   *   <dd>The browser-safe description.</dd>
+   *   <dt>string <var>html_special_instruction</var></dt>
+   *   <dd>Special instructions safe to be inserted to a browser.</dd>
+   *   <dt>int <var>i_age_from</var></dt>
+   *   <dd>The minimum age restriction.</dd>
+   *   <dt>int <var>i_age_to</var></dt>
+   *   <dd>The maximum age restriction.</dd>
+   *   <dt>bool <var>is_age_public</var></dt>
+   *   <dd>Determines whether age restriction exist and should be taken into account prior to booking this class/event.</dd>
+   *   <dt>bool <var>is_bookable</var></dt>
+   *   <dd>Determines whether clients can book the class or event online.</dd>w
+   *   <dt>bool <var>is_online_private</var></dt>
+   *   <dd>
+   *     `true` - show classes only for clients who can book online.
+   *     `false` - show classes for all clients.
+   *   </dd>
+   *   <dt>bool <var>is_promotion_client</var></dt>
+   *   <dd>Determines whether clients of the business can see a list of applicable Purchase Options.</dd>
+   *   <dt>bool <var>is_promotion_only</var></dt>
+   *   <dd>Determines whether the item can be booked only using promotions.</dd>
+   *   <dt>bool <var>is_promotion_staff</var></dt>
+   *   <dd>Determines whether staff members of the business can see a list of applicable Purchase Options.</dd>
+   *   <dt>bool <var>is_single_buy</var></dt>
+   *   <dd>
+   *     Determines whether the item can be paid with Drop In or not.
+   *     If it can be paid with Drop In, then `m_price` shows the price for one visit.
+   *     If this is `0`, it means the class is free.
+   *   </dd>
+   *   <dt>bool <var>is_virtual</var></dt>
+   *   <dd>Determines whether the item is virtual.</dd>
+   *   <dt>bool <var>is_event</var></dt>
+   *   <dd>
+   *     Determines whether the item is an event or class instance. If `true`, the item is an event instance.
+   *     Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>string <var>k_class</var></dt>
+   *   <dd>The class key.</dd>
+   *   <dt>string <var>m_price</var></dt>
+   *   <dd>Drop In price, if the class allows payment for one visit.</dd>
+   *   <dt>bool <var>show_special_instructions</var></dt>
+   *   <dd>
+   *     This will be `true` if special instructions can be public.
+   *     Otherwise, this will be `false` if they should only be shown to the clients who booked the class.
+   *   </dd>
+   *   <dt>string <var>xml_description</var></dt>
+   *   <dd>The item description.</dd>
+   *   <dt>string <var>xml_special_instruction</var></dt>
+   *   <dd>The item's special instructions.</dd>
+   *   <dt>string <var>url_image</var></dt>
+   *   <dd>The URL link to the item image.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_class_list = [];
+
+  /**
+   * The image height in pixels. Specify this value if you need the image to be returned in a specific size.
+   * If this value isn't specified, the returned image will have default thumbnail size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_height = 0;
+
+  /**
+   * The image width in pixels. Specify this value if you need the image to be returned in a specific size.
+   * If this value isn't specified, the returned image will have default thumbnail size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_width = 0;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The class key used to get information for a specific class.
+   *
+   * An empty value returns information for all classes of the business.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_class = '';
+
+  /**
+   * Defines if canceled schedules should be included in the result.
+   *
+   * If `true`, canceled schedules will be shown. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @var bool
+   */
+  public $show_cancelled = false;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Classes/Period/Modify/ModifyModel.php b/WellnessLiving/Wl/Classes/Period/Modify/ModifyModel.php
index e85333d9..b0d79027 100644
--- a/WellnessLiving/Wl/Classes/Period/Modify/ModifyModel.php
+++ b/WellnessLiving/Wl/Classes/Period/Modify/ModifyModel.php
@@ -1,129 +1,129 @@
-<?php
-
-namespace WellnessLiving\Wl\Classes\Period\Modify;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlClassModifyActionSid;
-use WellnessLiving\Wl\WlClassModifyModeSid;
-
-/**
- * Modifies the master model.
- */
-class ModifyModel extends WlModelAbstract
-{
-  /**
-   * Step information, depending on the steps.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_get;
-
-  /**
-   * The list of data to save.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_set = [];
-
-  /**
-   * The end date, returned in MySQL format and the local time.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_end = '';
-
-  /**
-   * The start date, returned in MySQL format and the local time.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_start = '';
-
-  /**
-   * The class modify step type. One of the {@link WlClassModifyActionSid} constants.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_class_modify_action = 0;
-
-  /**
-   * The modify mode type. One of the {@link WlClassModifyModeSid} constants.
-   *
-   * @get get
-   * @post get
-   * @var int
-   */
-  public $id_class_modify_mode = 0;
-
-  /**
-   * The class modify action type. One of the {@link WlClassModifyModeSid} constants.
-   *
-   * @get get
-   * @post get,result
-   * @var int
-   */
-  public $id_step = 0;
-
-  /**
-   * The step direction.
-   *
-   * `true` - step forward.
-   *
-   * `false` - step back.
-   *
-   * After each step, this variable sets to the default position.
-   * By default, the step direction is forward.
-   *
-   * @get get
-   * @post get,result
-   * @var bool|null
-   */
-  public $is_back = false;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The class ID.
-   *
-   * @post result
-   * @var string|null
-   */
-  public $k_class;
-
-  /**
-   * The class period key.
-   *
-   * This will be empty if not set yet.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_class_period = '';
-
-  /**
-   * The unique hash string.
-   *
-   * @get get
-   * @post get,result
-   * @var string
-   */
-  public $s_id = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Classes\Period\Modify;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlClassModifyActionSid;
+use WellnessLiving\Wl\WlClassModifyModeSid;
+
+/**
+ * Modifies the master model.
+ */
+class ModifyModel extends WlModelAbstract
+{
+  /**
+   * Step information, depending on the steps.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_get;
+
+  /**
+   * The list of data to save.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_set = [];
+
+  /**
+   * The end date, returned in MySQL format and the local time.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_end = '';
+
+  /**
+   * The start date, returned in MySQL format and the local time.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_start = '';
+
+  /**
+   * The class modify step type. One of the {@link WlClassModifyActionSid} constants.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_class_modify_action = 0;
+
+  /**
+   * The modify mode type. One of the {@link WlClassModifyModeSid} constants.
+   *
+   * @get get
+   * @post get
+   * @var int
+   */
+  public $id_class_modify_mode = 0;
+
+  /**
+   * The class modify action type. One of the {@link WlClassModifyModeSid} constants.
+   *
+   * @get get
+   * @post get,result
+   * @var int
+   */
+  public $id_step = 0;
+
+  /**
+   * The step direction.
+   *
+   * `true` - step forward.
+   *
+   * `false` - step back.
+   *
+   * After each step, this variable sets to the default position.
+   * By default, the step direction is forward.
+   *
+   * @get get
+   * @post get,result
+   * @var bool|null
+   */
+  public $is_back = false;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The class ID.
+   *
+   * @post result
+   * @var string|null
+   */
+  public $k_class;
+
+  /**
+   * The class period key.
+   *
+   * This will be empty if not set yet.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '';
+
+  /**
+   * The unique hash string.
+   *
+   * @get get
+   * @post get,result
+   * @var string
+   */
+  public $s_id = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Classes/Promotion/ClassPromotionModel.php b/WellnessLiving/Wl/Classes/Promotion/ClassPromotionModel.php
index 09681c13..c75f1dfa 100644
--- a/WellnessLiving/Wl/Classes/Promotion/ClassPromotionModel.php
+++ b/WellnessLiving/Wl/Classes/Promotion/ClassPromotionModel.php
@@ -1,89 +1,89 @@
-<?php
-
-namespace WellnessLiving\Wl\Classes\Promotion;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlProgramSid;
-
-/**
- * Returns a list of promotions that can pay for a business's classes or events.
- */
-class ClassPromotionModel extends WlModelAbstract
-{
-  /**
-   * Promotion data with the following structure:<dl>
-   *   <dt>string <var>k_promotion</var></dt>
-   *   <dd>The promotion key.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>The title of the promotion.</dd>
-   *   <dt>int <var>id_program</var></dt>
-   *   <dd>One of the {@link WlProgramSid} constants.</dd>
-   *   <dt>bool <var>is_select</var></dt>
-   *   <dd><tt>true</tt> if the promotion is related to the class or event, <tt>false</tt> otherwise.</dd>
-   * </dl>.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_promotion = [];
-
-  /**
-   * Determines whether the class is an event or not.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_event = false;
-
-  /**
-   * `true` - the login type or group restrictions are ignored and all pricing options will be returned. This will
-   * require staff or admin access level.
-   *
-   * `false` - the API should return only pricing options, which are available for the current user.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_login_type_ignore = false;
-
-  /**
-   * `true` - promotions should only be returned if they're related to the given class or event.
-   *
-   * `false` - all promotions should be returned, even if they aren't related to the given class or event.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_related_only = false;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The class key.
-   *
-   * This refers to the class or event with which you want to connect the promotions. This will be `null` or `0` if you
-   * need to return a list of promotions for an uncreated class or event.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $k_class = null;
-
-  /**
-   * The default promotion key.
-   *
-   * This will be `null` if `k_class` wasn't provided, or if the class has no default promotion.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $k_promotion_default = null;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Classes\Promotion;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlProgramSid;
+
+/**
+ * Returns a list of promotions that can pay for a business's classes or events.
+ */
+class ClassPromotionModel extends WlModelAbstract
+{
+  /**
+   * Promotion data with the following structure:<dl>
+   *   <dt>string <var>k_promotion</var></dt>
+   *   <dd>The promotion key.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>The title of the promotion.</dd>
+   *   <dt>int <var>id_program</var></dt>
+   *   <dd>One of the {@link WlProgramSid} constants.</dd>
+   *   <dt>bool <var>is_select</var></dt>
+   *   <dd><tt>true</tt> if the promotion is related to the class or event, <tt>false</tt> otherwise.</dd>
+   * </dl>.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_promotion = [];
+
+  /**
+   * Determines whether the class is an event or not.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_event = false;
+
+  /**
+   * `true` - the login type or group restrictions are ignored and all pricing options will be returned. This will
+   * require staff or admin access level.
+   *
+   * `false` - the API should return only pricing options, which are available for the current user.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_login_type_ignore = false;
+
+  /**
+   * `true` - promotions should only be returned if they're related to the given class or event.
+   *
+   * `false` - all promotions should be returned, even if they aren't related to the given class or event.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_related_only = false;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The class key.
+   *
+   * This refers to the class or event with which you want to connect the promotions. This will be `null` or `0` if you
+   * need to return a list of promotions for an uncreated class or event.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_class = null;
+
+  /**
+   * The default promotion key.
+   *
+   * This will be `null` if `k_class` wasn't provided, or if the class has no default promotion.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $k_promotion_default = null;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Classes/Tab/TabSid.php b/WellnessLiving/Wl/Classes/Tab/TabSid.php
index c1089d63..910613d4 100644
--- a/WellnessLiving/Wl/Classes/Tab/TabSid.php
+++ b/WellnessLiving/Wl/Classes/Tab/TabSid.php
@@ -1,33 +1,33 @@
-<?php
-
-namespace WellnessLiving\Wl\Classes\Tab;
-
-/**
- * List of class tab objects.
- *
- * Last ID: 6.
- */
-abstract class TabSid
-{
-  /**
-   * Enrolments.
-   */
-  const ENROLLMENT = 2;
-
-  /**
-   * Bookable Assets.
-   */
-  const RESOURCE = 4;
-
-  /**
-   * Appointments.
-   */
-  const SERVICE = 3;
-
-  /**
-   * Classes.
-   */
-  const TRAINING = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Classes\Tab;
+
+/**
+ * List of class tab objects.
+ *
+ * Last ID: 6.
+ */
+abstract class TabSid
+{
+  /**
+   * Enrolments.
+   */
+  const ENROLLMENT = 2;
+
+  /**
+   * Bookable Assets.
+   */
+  const RESOURCE = 4;
+
+  /**
+   * Appointments.
+   */
+  const SERVICE = 3;
+
+  /**
+   * Classes.
+   */
+  const TRAINING = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Collector/DebtListModel.php b/WellnessLiving/Wl/Collector/DebtListModel.php
index bfcf0b20..97bc1c88 100644
--- a/WellnessLiving/Wl/Collector/DebtListModel.php
+++ b/WellnessLiving/Wl/Collector/DebtListModel.php
@@ -1,124 +1,124 @@
-<?php
-
-namespace WellnessLiving\Wl\Collector;
-
-use WellnessLiving\Core\Locale\CurrencySid;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Returns list of debts added within the previous month.
- */
-class DebtListModel extends WlModelAbstract
-{
-  /**
-   * A list of debts for the given business added within the previous month.
-   *
-   * Each value is an array with the next structure:
-   * <dl>
-   *   <dt>string <var>dl_client_birth</var></dt>
-   *   <dd>The birth date of the debtor client.</dd>
-   *   <dt>string <var>dtu_client_since</var></dt>
-   *   <dd>The date and time in UTC from which the debtor client is a member of the business.</dd>
-   *   <dt>string <var>dtu_due</var></dt>
-   *   <dd>The date and time in UTC of the last payment on the debtor client's account.</dd>
-   *   <dt>string <var>dtu_add</var></dt>
-   *   <dd>The date and time in UTC when the client was added to the list of debtors.</dd>
-   *   <dt>string <var>dtu_cease</var></dt>
-   *   <dd>The date and time in UTC when the debt was fully ceased.</dd>
-   *   <dt>int <var>id_currency</var></dt>
-   *   <dd>The debt currency ID. One of {@link CurrencySid} constants.</dd>
-   *   <dt>string <var>k_business</var></dt>
-   *   <dd>The business key where the debt occurred.</dd>
-   *   <dt>string <var>k_collector_debt</var></dt>
-   *   <dd>The debt key, which should be used for debt payment.</dd>
-   *   <dt>string <var>k_pay_transaction_debt</var></dt>
-   *   <dd>The transaction key after which the debt occurred.</dd>
-   *   <dt>string <var>k_pay_transaction_last</var></dt>
-   *   <dd>The last transaction key on account after the debt occurred.</dd>
-   *   <dt>string <var>m_amount_debt</var></dt>
-   *   <dd>The initial amount of the debt.</dd>
-   *   <dt>string <var>m_amount_paid</var></dt>
-   *   <dd>The amount paid for debt.</dd>
-   *   <dt>string <var>text_business_title</var></dt>
-   *   <dd>The title of the business.</dd>
-   *   <dt>string <var>text_client_name</var></dt>
-   *   <dd>The full name of the debtor client.</dd>
-   *   <dt>string <var>text_client_address</var></dt>
-   *   <dd>The address of the debtor client.</dd>
-   *   <dt>string <var>text_client_mail</var></dt>
-   *   <dd>The email address of the debtor client.</dd>
-   *   <dt>string <var>text_client_phone</var></dt>
-   *   <dd>The phone number of the debtor client.</dd>
-   *   <dt>string <var>text_client_zip</var></dt>
-   *   <dd>The ZIP code of the debtor client.</dd>
-   *   <dt>string <var>text_skip</var></dt>
-   *   <dd>The notification message sent when the debt payment is missed.</dd>
-   *   <dt>string <var>uid</var></dt>
-   *   <dd>The user key of the debt owner.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_debt = [];
-
-  /**
-   * Date before which debts should be returned.
-   *
-   * If set, this is the end of the date window. Only debts added before or on this date will be shown.
-   *
-   * If left `null` and {@link DebtListModel::$dl_start} has been specified, only debts added after the start date will be returned.
-   * If left `null` and {@link DebtListModel::$dl_start} is also `null`, this will return debts from the previous month.
-   *
+<?php
+
+namespace WellnessLiving\Wl\Collector;
+
+use WellnessLiving\Core\Locale\CurrencySid;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns list of debts added within the previous month.
+ */
+class DebtListModel extends WlModelAbstract
+{
+  /**
+   * A list of debts for the given business added within the previous month.
+   *
+   * Each value is an array with the next structure:
+   * <dl>
+   *   <dt>string <var>dl_client_birth</var></dt>
+   *   <dd>The birth date of the debtor client.</dd>
+   *   <dt>string <var>dtu_client_since</var></dt>
+   *   <dd>The date and time in UTC from which the debtor client is a member of the business.</dd>
+   *   <dt>string <var>dtu_due</var></dt>
+   *   <dd>The date and time in UTC of the last payment on the debtor client's account.</dd>
+   *   <dt>string <var>dtu_add</var></dt>
+   *   <dd>The date and time in UTC when the client was added to the list of debtors.</dd>
+   *   <dt>string <var>dtu_cease</var></dt>
+   *   <dd>The date and time in UTC when the debt was fully ceased.</dd>
+   *   <dt>int <var>id_currency</var></dt>
+   *   <dd>The debt currency ID. One of {@link CurrencySid} constants.</dd>
+   *   <dt>string <var>k_business</var></dt>
+   *   <dd>The business key where the debt occurred.</dd>
+   *   <dt>string <var>k_collector_debt</var></dt>
+   *   <dd>The debt key, which should be used for debt payment.</dd>
+   *   <dt>string <var>k_pay_transaction_debt</var></dt>
+   *   <dd>The transaction key after which the debt occurred.</dd>
+   *   <dt>string <var>k_pay_transaction_last</var></dt>
+   *   <dd>The last transaction key on account after the debt occurred.</dd>
+   *   <dt>string <var>m_amount_debt</var></dt>
+   *   <dd>The initial amount of the debt.</dd>
+   *   <dt>string <var>m_amount_paid</var></dt>
+   *   <dd>The amount paid for debt.</dd>
+   *   <dt>string <var>text_business_title</var></dt>
+   *   <dd>The title of the business.</dd>
+   *   <dt>string <var>text_client_name</var></dt>
+   *   <dd>The full name of the debtor client.</dd>
+   *   <dt>string <var>text_client_address</var></dt>
+   *   <dd>The address of the debtor client.</dd>
+   *   <dt>string <var>text_client_mail</var></dt>
+   *   <dd>The email address of the debtor client.</dd>
+   *   <dt>string <var>text_client_phone</var></dt>
+   *   <dd>The phone number of the debtor client.</dd>
+   *   <dt>string <var>text_client_zip</var></dt>
+   *   <dd>The ZIP code of the debtor client.</dd>
+   *   <dt>string <var>text_skip</var></dt>
+   *   <dd>The notification message sent when the debt payment is missed.</dd>
+   *   <dt>string <var>uid</var></dt>
+   *   <dd>The user key of the debt owner.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_debt = [];
+
+  /**
+   * Date before which debts should be returned.
+   *
+   * If set, this is the end of the date window. Only debts added before or on this date will be shown.
+   *
+   * If left `null` and {@link DebtListModel::$dl_start} has been specified, only debts added after the start date will be returned.
+   * If left `null` and {@link DebtListModel::$dl_start} is also `null`, this will return debts from the previous month.
+   *
    * @get get
    * @var string|null
-   */
-  public $dl_end = null;
-
-  /**
-   * Date since which debts should be returned.
-   *
-   * If set, this is the start of the date window. Only debts added on or after this date will be shown.
-   *
-   * If left `null` and {@link DebtListModel::$dl_end} has been specified will return debts added since the beginning of time.
-   * If left `null` and {@link DebtListModel::$dl_end} is also `null`, this will return debts from the previous month.
-   *
+   */
+  public $dl_end = null;
+
+  /**
+   * Date since which debts should be returned.
+   *
+   * If set, this is the start of the date window. Only debts added on or after this date will be shown.
+   *
+   * If left `null` and {@link DebtListModel::$dl_end} has been specified will return debts added since the beginning of time.
+   * If left `null` and {@link DebtListModel::$dl_end} is also `null`, this will return debts from the previous month.
+   *
    * @get get
    * @var string|null
-   */
-  public $dl_start = null;
-
-  /**
-   * Defines whether new debts should be returned or only previously sent debts.
-   *
-   * If `true` then return new debts only.
-   * If `false` then return previously sent debts only.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_request_debt = false;
-
-  /**
-   * Defines whether debts for test or real business should be returned.
-   *
-   * If `true`, debts from test businesses will be returned. Otherwise, this will be `false` if only
-   * debts from real businesses will be returned.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_test = false;
-
-  /**
-   * The business key for which debts should be returned.
-   *
-   * Use `null` if debt payments from all businesses should be returned.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $k_business = '';
-}
-
+   */
+  public $dl_start = null;
+
+  /**
+   * Defines whether new debts should be returned or only previously sent debts.
+   *
+   * If `true` then return new debts only.
+   * If `false` then return previously sent debts only.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_request_debt = false;
+
+  /**
+   * Defines whether debts for test or real business should be returned.
+   *
+   * If `true`, debts from test businesses will be returned. Otherwise, this will be `false` if only
+   * debts from real businesses will be returned.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_test = false;
+
+  /**
+   * The business key for which debts should be returned.
+   *
+   * Use `null` if debt payments from all businesses should be returned.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_business = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Collector/DebtPayModel.php b/WellnessLiving/Wl/Collector/DebtPayModel.php
index 910787e9..3865460a 100644
--- a/WellnessLiving/Wl/Collector/DebtPayModel.php
+++ b/WellnessLiving/Wl/Collector/DebtPayModel.php
@@ -1,77 +1,77 @@
-<?php
-
-namespace WellnessLiving\Wl\Collector;
-
-use WellnessLiving\Core\Locale\CurrencySid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlPayMethodSid;
-
-/**
- * Registers a debt payment that was performed beyond Wellnessliving, with a specified credit amount applied to a client's account balance.
- */
-class DebtPayModel extends WlModelAbstract
-{
-  /**
-   * The currency of the payment.
-   * One of {@link CurrencySid} constants.
-   *
-   * Important! The currency must coincide with currency of the debt that was sent to collections.
-   *
-   * @post get
-   * @var int
-   */
-  public $id_currency = 0;
-
-  /**
-   * The payment method ID.
-   * One of {@link WlPayMethodSid} constants.
-   *
-   * `null` if the payment method is unknown. In such cases, {@link WlPayMethodSid::CASH} would be used.
-   *
-   * @post post
-   * @var int|null
-   */
-  public $id_pay_method = null;
-
-  /**
-   * The key of the business from which the debt originates.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The debt key towards which the payment was performed.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_collector_debt = '';
-
-  /**
-   * The transaction key generated to register the payment.
-   *
-   * @post result
-   * @var string
-   */
-  public $k_pay_transaction = '';
-
-  /**
-   * The amount of money that's been paid towards the debt.
-   *
-   * @post post
-   * @var string
-   */
-  public $m_amount = '';
-
-  /**
-   * The key of the user with the debt.
-   *
-   * @post get
-   * @var string
-   */
-  public $uid = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Collector;
+
+use WellnessLiving\Core\Locale\CurrencySid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlPayMethodSid;
+
+/**
+ * Registers a debt payment that was performed beyond Wellnessliving, with a specified credit amount applied to a client's account balance.
+ */
+class DebtPayModel extends WlModelAbstract
+{
+  /**
+   * The currency of the payment.
+   * One of {@link CurrencySid} constants.
+   *
+   * Important! The currency must coincide with currency of the debt that was sent to collections.
+   *
+   * @post get
+   * @var int
+   */
+  public $id_currency = 0;
+
+  /**
+   * The payment method ID.
+   * One of {@link WlPayMethodSid} constants.
+   *
+   * `null` if the payment method is unknown. In such cases, {@link WlPayMethodSid::CASH} would be used.
+   *
+   * @post post
+   * @var int|null
+   */
+  public $id_pay_method = null;
+
+  /**
+   * The key of the business from which the debt originates.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The debt key towards which the payment was performed.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_collector_debt = '';
+
+  /**
+   * The transaction key generated to register the payment.
+   *
+   * @post result
+   * @var string
+   */
+  public $k_pay_transaction = '';
+
+  /**
+   * The amount of money that's been paid towards the debt.
+   *
+   * @post post
+   * @var string
+   */
+  public $m_amount = '';
+
+  /**
+   * The key of the user with the debt.
+   *
+   * @post get
+   * @var string
+   */
+  public $uid = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Collector/DebtTransactionModel.php b/WellnessLiving/Wl/Collector/DebtTransactionModel.php
index d533eb11..28ce7a28 100644
--- a/WellnessLiving/Wl/Collector/DebtTransactionModel.php
+++ b/WellnessLiving/Wl/Collector/DebtTransactionModel.php
@@ -1,89 +1,89 @@
-<?php
-
-namespace WellnessLiving\Wl\Collector;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlPayMethodSid;
-
-/**
- * Returns a list of payments for debts added within the previous day.
- */
-class DebtTransactionModel extends WlModelAbstract
-{
-  /**
-   * A list of debt payments for a given business added within the previous day.
-   *
-   * Each value is an array with next structure:
-   * <dl>
-   *   <dt>string <var>dtu_pay</var></dt>
-   *   <dd>The date and time in UTC of the payment transaction.</dd>
-   *   <dt>string <var>m_pay_amount</var></dt>
-   *   <dd>The amount of the payment's transaction.</dd>
-   *   <dt>int <var>id_pay_method</var></dt>
-   *   <dd>The payment method ID that was used for the payment. One of {@link WlPayMethodSid} constants.</dd>
-   *   <dt>bool <var>is_pay_collections</var></dt>
-   *   <dd>Defines whether the payment was performed via a third party service.
-   *     `true` if the payment was performed via a third party service and this transaction is
-   *     responsible for an account credit transaction for that payment. See {@link DebtPayModel}.
-   *     `false` if the payment was performed within the Wellnessliving system.
-   *   </dd>
-   *   <dt>bool <var>is_debt_paid</var></dt>
-   *   <dd>
-   *     Defines whether the initial debt to which this related transaction is fully paid.
-   *     `true` if the debt is fully paid.
-   *     `false` if the debt is partially paid.
-   *   </dd>
-   *   <dt>string <var>text_client_name</var></dt>
-   *   <dd>The full name of the debtor client for whom the payment transaction was performed.</dd>
-   *   <dt>string <var>uid</var></dt>
-   *   <dd>The UID of the debtor client for whom the payment transaction was performed.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_transaction = [];
-
-  /**
-   * If set, this is the end of the date window. Only debt payments added before or on this date will be shown.
-   *
-   * If left `null` and {@link DebtTransactionModel::$dl_start} has been specified only debt payments added after the start date will be returned.
-   * If left `null` and {@link DebtTransactionModel::$dl_start} is also `null`, this will return debt payments from the previous month.
-   *
+<?php
+
+namespace WellnessLiving\Wl\Collector;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlPayMethodSid;
+
+/**
+ * Returns a list of payments for debts added within the previous day.
+ */
+class DebtTransactionModel extends WlModelAbstract
+{
+  /**
+   * A list of debt payments for a given business added within the previous day.
+   *
+   * Each value is an array with next structure:
+   * <dl>
+   *   <dt>string <var>dtu_pay</var></dt>
+   *   <dd>The date and time in UTC of the payment transaction.</dd>
+   *   <dt>string <var>m_pay_amount</var></dt>
+   *   <dd>The amount of the payment's transaction.</dd>
+   *   <dt>int <var>id_pay_method</var></dt>
+   *   <dd>The payment method ID that was used for the payment. One of {@link WlPayMethodSid} constants.</dd>
+   *   <dt>bool <var>is_pay_collections</var></dt>
+   *   <dd>Defines whether the payment was performed via a third party service.
+   *     `true` if the payment was performed via a third party service and this transaction is
+   *     responsible for an account credit transaction for that payment. See {@link DebtPayModel}.
+   *     `false` if the payment was performed within the Wellnessliving system.
+   *   </dd>
+   *   <dt>bool <var>is_debt_paid</var></dt>
+   *   <dd>
+   *     Defines whether the initial debt to which this related transaction is fully paid.
+   *     `true` if the debt is fully paid.
+   *     `false` if the debt is partially paid.
+   *   </dd>
+   *   <dt>string <var>text_client_name</var></dt>
+   *   <dd>The full name of the debtor client for whom the payment transaction was performed.</dd>
+   *   <dt>string <var>uid</var></dt>
+   *   <dd>The UID of the debtor client for whom the payment transaction was performed.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_transaction = [];
+
+  /**
+   * If set, this is the end of the date window. Only debt payments added before or on this date will be shown.
+   *
+   * If left `null` and {@link DebtTransactionModel::$dl_start} has been specified only debt payments added after the start date will be returned.
+   * If left `null` and {@link DebtTransactionModel::$dl_start} is also `null`, this will return debt payments from the previous month.
+   *
    * @get get
    * @var string|null
-   */
-  public $dl_end = null;
-
-  /**
-   * If set, this is the start of the date window. Only debt payments added on or after this date will be shown.
-   *
-   * If left `null` and {@link DebtTransactionModel::$dl_end} has been specified, this will return debt payments since the beginning of time.
-   * If left `null` and {@link DebtTransactionModel::$dl_end} is also `null`, this will return debt payments from the previous month.
-   *
+   */
+  public $dl_end = null;
+
+  /**
+   * If set, this is the start of the date window. Only debt payments added on or after this date will be shown.
+   *
+   * If left `null` and {@link DebtTransactionModel::$dl_end} has been specified, this will return debt payments since the beginning of time.
+   * If left `null` and {@link DebtTransactionModel::$dl_end} is also `null`, this will return debt payments from the previous month.
+   *
    * @get get
    * @var string|null
-   */
-  public $dl_start = null;
-
-  /**
-   * If `true`, debt payments from test businesses will be returned. Otherwise, this will be `false` if only
-   * debt payments from real businesses will be returned.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_test = false;
-
-  /**
-   * The business key for which debt payments should be returned.
-   *
-   * Use `null` if debt payments from all businesses should be returned.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $k_business = '';
-}
-
+   */
+  public $dl_start = null;
+
+  /**
+   * If `true`, debt payments from test businesses will be returned. Otherwise, this will be `false` if only
+   * debt payments from real businesses will be returned.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_test = false;
+
+  /**
+   * The business key for which debt payments should be returned.
+   *
+   * Use `null` if debt payments from all businesses should be returned.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_business = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Coupon/CouponList/ListModel.php b/WellnessLiving/Wl/Coupon/CouponList/ListModel.php
index 4db08532..11dc7ba8 100644
--- a/WellnessLiving/Wl/Coupon/CouponList/ListModel.php
+++ b/WellnessLiving/Wl/Coupon/CouponList/ListModel.php
@@ -1,83 +1,83 @@
-<?php
-
-namespace WellnessLiving\Wl\Coupon\CouponList;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Coupon\WlTypeSid;
-
-/**
- * Retrieves a list of gift cards.
- */
-class ListModel extends WlModelAbstract
-{
-  /**
-   * A list of gift cards. Every element has the following keys:
-   * <dl>
-   *   <dt>
-   *     int <var>id_type</var>
-   *   </dt>
-   *   <dd>
-   *     The type of coupon. One of {@link WlTypeSid} constants.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_coupon</var>
-   *   </dt>
-   *   <dd>
-   *     The gift card key.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title of the gift card.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_coupon;
-
-  /**
-   * Class table ID.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_table;
-
-  /**
-   * Whether to return franchisee-created coupons (if business is franchisor).
-   * <tt>true</tt> to include franchisee-created coupons.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_franchise = false;
-
-  /**
-   * `true` to get only gift cards available for current user; `false` to get all gift cards.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_frontend = false;
-
-  /**
-   * A flag to include disabled items in the query result
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_inactive_include = false;
-
-  /**
-   * The business key to retrieve a list of all the gift cards in a business.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Coupon\CouponList;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Coupon\WlTypeSid;
+
+/**
+ * Retrieves a list of gift cards.
+ */
+class ListModel extends WlModelAbstract
+{
+  /**
+   * A list of gift cards. Every element has the following keys:
+   * <dl>
+   *   <dt>
+   *     int <var>id_type</var>
+   *   </dt>
+   *   <dd>
+   *     The type of coupon. One of {@link WlTypeSid} constants.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_coupon</var>
+   *   </dt>
+   *   <dd>
+   *     The gift card key.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     The title of the gift card.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_coupon;
+
+  /**
+   * Class table ID.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_table;
+
+  /**
+   * Whether to return franchisee-created coupons (if business is franchisor).
+   * <tt>true</tt> to include franchisee-created coupons.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_franchise = false;
+
+  /**
+   * `true` to get only gift cards available for current user; `false` to get all gift cards.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_frontend = false;
+
+  /**
+   * A flag to include disabled items in the query result
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_inactive_include = false;
+
+  /**
+   * The business key to retrieve a list of all the gift cards in a business.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php b/WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php
index fd6a7ede..e641bdfe 100644
--- a/WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php
+++ b/WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php
@@ -1,28 +1,28 @@
-<?php
-
-namespace WellnessLiving\Wl\Coupon;
-
-/**
- * Purchase restrictions.
- *
- * Last used ID: 3.
- */
-class PurchaseRestrictionSid
-{
-  /**
-   * Purchase option available for all clients.
-   */
-  const ALL = 1;
-
-  /**
-   * Purchase option introductory offer, available for new clients only.
-   */
-  const INTRODUCTORY = 2;
-
-  /**
-   * Purchase option available for clients with special login type or member group.
-   */
-  const TYPE = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Coupon;
+
+/**
+ * Purchase restrictions.
+ *
+ * Last used ID: 3.
+ */
+class PurchaseRestrictionSid
+{
+  /**
+   * Purchase option available for all clients.
+   */
+  const ALL = 1;
+
+  /**
+   * Purchase option introductory offer, available for new clients only.
+   */
+  const INTRODUCTORY = 2;
+
+  /**
+   * Purchase option available for clients with special login type or member group.
+   */
+  const TYPE = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Coupon/WlTypeSid.php b/WellnessLiving/Wl/Coupon/WlTypeSid.php
index fe3dc366..2629340d 100644
--- a/WellnessLiving/Wl/Coupon/WlTypeSid.php
+++ b/WellnessLiving/Wl/Coupon/WlTypeSid.php
@@ -1,30 +1,30 @@
-<?php
-
-namespace WellnessLiving\Wl\Coupon;
-
-/**
- * List of possible types of Gift Cards.
- */
-class WlTypeSid
-{
-  /**
-   * Amount Gift Card.
-   * Only one card of this type can be created in one business.
-   */
-  const AMOUNT = 2;
-
-  /**
-   * Product Gift Card.
-   * Many cards of this type can be created in one business.
-   * Each card contains list of products.
-   */
-  const COMPONENT = 1;
-
-  /**
-   * Quick Gift Card.
-   * Only one card of this type can be created in one business.
-   */
-  const QUICK = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Coupon;
+
+/**
+ * List of possible types of Gift Cards.
+ */
+class WlTypeSid
+{
+  /**
+   * Amount Gift Card.
+   * Only one card of this type can be created in one business.
+   */
+  const AMOUNT = 2;
+
+  /**
+   * Product Gift Card.
+   * Many cards of this type can be created in one business.
+   * Each card contains list of products.
+   */
+  const COMPONENT = 1;
+
+  /**
+   * Quick Gift Card.
+   * Only one card of this type can be created in one business.
+   */
+  const QUICK = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php b/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
index fb147f14..118db739 100644
--- a/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
+++ b/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
@@ -1,602 +1,602 @@
-<?php
-
-namespace WellnessLiving\Wl\Event\Book\EventView;
-
-use WellnessLiving\Core\a\AGenderSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Business\Config\BusinessConfigModel;
-use WellnessLiving\Wl\Virtual\VirtualProviderSid;
-
-/**
- * Retrieves information about an event element.
- */
-class ElementModel extends WlModelAbstract
-{
-  /**
-   * Displays information about age restrictions for this event.
-   *
-   * An empty array if there are no age restrictions.
-   *
-   * <dl>
-   *   <dt>int|null <var>i_age_from</var></dt>
-   *   <dd>The minimum age for participation in the event. `null` if there's no minimum age set or information isn't available.</dd>
-   *   <dt>int|null <var>i_age_to</var></dt>
-   *   <dd>The age limit for participation in the event. `null` if there's no age limit set or information isn't available.</dd>
-   *   <dt>bool <var>is_age_public</var></dt>
-   *   <dd>`true` if age restrictions are public and available, `false` if they're hidden.
-   *     When restrictions are hidden and the current user isn't a staff member, the age range will be empty.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_age_restrictions = [];
-
-  /**
-   * Retrieves information about an event item.
-   *
-   * Received only if {@link ElementModel::$k_event} has been specified. In this case other fields aren't receivers.
-   *
-   * <dl>
-   *   <dt>string <var>dt_date</var></dt>
-   *   <dd>Date/time when session starts. In UTC.</dd>
-   *   <dt>string <var>k_class_period</var></dt>
-   *   <dd>Class session primary keys.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_book_available;
-
-  /**
-   * Displays all business policies connected to clients and bookings.
-   *
-   * Contains the same structure as the {@link BusinessConfigModel::$a_business_policy} property.
-   *
-   * If policies are overwritten for a certain event, the impacted event's policies will be in this result.
-   * Otherwise, the result will display the business policies.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_business_policy;
-
-  /**
-   * The logo of event.
-   * <dl>
-   *   <dt>int [<var>i_height</var>]</dt>
-   *   <dd>Is returned only if staff has photo. Image height.</dd>
-   *   <dt>int [<var>i_width</var>]</dt>
-   *   <dd>Is returned only if staff has photo. Image width.</dd>
-   *   <dt>int [<var>id_gender</var>] </dt>
-   *   <dd>Is returned only if staff does not have photo. ID of staff gender. One of {@link AGenderSid} constants.</dd>
-   *   <dt>string [<var>url_logo</var>]</dt>
-   *   <dd>Is returned only if staff has photo. URL to image.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_class_logo;
-
-  /**
-   * The list of keys from class tab.+
-   *
-   * @get result
-   * @var string[]
-   */
-  public $a_class_tab;
-
-  /**
-   * Displays information for a bulk of events.
-   *
-   * Received only if {@link ElementModel::$s_event} has been specified. In this case, other fields aren't receivers.
-   *
-   * The event keys of this array.
-   * Values of this array and sub arrays with keys that correspond to all fields in this table that may be received.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_event;
-
-  /**
-   * A list of event sessions. Every element has the following next keys:
-   * <dl>
-   *   <dt>
-   *     array <var>a_day</var>
-   *   </dt>
-   *   <dd>
-   *     A list of days of the week when the session has occurred.
-   *     Keys - a number corresponding to a day of the week (0 - Sunday, 6 - Saturday). The value is always <tt>true</tt>.
-   *   </dd>
-   *   <dt>array <var>a_repeat</var></dt>
-   *   <dd>
-   *     Repeat periodicity instructions.
-   *     <dl>
-   *       <dt>int <var>i_repeat</var></dt>
-   *       <dd>Count of the periods which specified in <var>id_repeat</var>.</dd>
-   *       <dt>int <var>id_repeat</var></dt>
-   *       <dd>Measuring unit of <var>i_repeat</var> (week, month, year).</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     array[] <var>a_staff</var>
-   *   </dt>
-   *   <dd>
-   *     A list of staff members who conduct the session. Every element has the following next keys:
-   *     <dl>
-   *       <dt>string <var>k_staff</var></dt>
-   *       <dd>The staff member key.</dd>
-   *       <dt>string <var>s_name</var></dt>
-   *       <dd>The staff member name.</dd>
-   *       <dt>string <var>s_surname</var></dt>
-   *       <dd>The first letter of staff member's surname.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string[] <var>a_virtual_location</var>
-   *   </dt>
-   *   <dd>
-   *     List of virtual locations.
-   *   </dd>
-   *   <dt>
-   *     string <var>dt_end</var>
-   *   </dt>
-   *   <dd>
-   *     The end date of the session.
-   *     The local date without time.
-   *   </dd>
-   *   <dt>
-   *     string <var>dt_start</var>
-   *   </dt>
-   *   <dd>
-   *     The start date of the session.
-   *     The local date without time.
-   *   </dd>
-   *   <dt>
-   *     bool <var>hide_location</var>
-   *   </dt>
-   *   <dd>
-   *     `true` if the location should be hidden in the event details. Hide if the event is virtual or if the business
-   *     only has one location. `false` otherwise.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_capacity</var>
-   *   </dt>
-   *   <dd>
-   *     The class capacity.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The duration of the class in seconds.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_virtual</var>
-   *   </dt>
-   *   <dd>
-   *     This will be `true` if the session is not held in person but offered remotely. If will be `false` otherwise.
-   *   </dd>
-   *   <dt>
-   *     string <var>f_price</var>
-   *   </dt>
-   *   <dd>
-   *     The price of the session, if it can be purchased separately.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_class_period</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the class period.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_location</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the location where the session is held.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_location</var>
-   *   </dt>
-   *   <dd>
-   *     The location title.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_time</var>
-   *   </dt>
-   *   <dd>
-   *     The time when session occurred.
-   *     A textual representation of the start and end time of a session. Example: <tt>10:00 am - 11:00 am</tt>
-   *   </dd>
-   *   <dt>
-   *     string <var>s_timezone</var>
-   *   </dt>
-   *   <dd>
-   *     The name of the timezone in which the session is held.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_schedule;
-
-  /**
-   * Photos of staff members. Keys are the keys of staff members. The values are the following:
-   * <dl>
-   *   <dt>int <var>i_height</var></dt>
-   *   <dd>Image height.</dd>
-   *   <dt>int <var>i_width</var></dt>
-   *   <dd>Image width.</dd>
-   *   <dt>string <var>uid</var></dt>
-   *   <dd>Key of the user.</dd>
-   *   <dt>string <var>url_logo</var></dt>
-   *   <dd>URL to image.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_staff_logo;
-
-  /**
-   * A list of classes and events that clients should attend before this one.
-   *
-   * <dl>
-   *   <dt>int <var>i_count</var></dt>
-   *   <dd>The number of visits.</dd>
-   *   <dt>bool <var>is_event</var></dt>
-   *   <dd>`true` if this is an event, `false` if this is a class.</dd>
-   *   <dt>string <var>k_class</var></dt>
-   *   <dd>The key of the class or event.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>The name of the class or event.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_visits_required;
-
-  /**
-   * The last available date for booking.
-   * If this is set and {@link ElementModel::$dl_book_available_start} is a set list of
-   *   sessions available for booking, {@link ElementModel::$a_book_available}
-   *   should match given date range.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $dl_book_available_end = null;
-
-  /**
-   * The first available date for booking.
-   * If this is set and {@link ElementModel::$dl_book_available_end} is a set list of
-   *   sessions available for booking {@link ElementModel::$a_book_available}
-   *   should match given date range.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $dl_book_available_start = null;
-
-  /**
-   * That date that should be used to go to the booking wizard.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $dt_book_date;
-
-  /**
-   * The early registration date of the event.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $dt_early;
-
-  /**
-   * The end date of the event.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_end;
-
-  /**
-   * The start date of the event.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_start;
-
-  /**
-   * Whether event will be hidden in the White Label mobile application.
-   * <tt>true</tt> means that event will not be displayed, <tt>false</tt> otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $hide_application;
-
-  /**
-   * The description of the event.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $html_description;
-
-  /**
-   * Special instruction for the event.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_special;
-
-  /**
-   * Image height in pixels. Please specify this value if you need image to be returned in specific size.
-   * In case this value is not specified returned image will have default thumbnail size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_height = 0;
-
-  /**
-   * Image width in pixels. Please specify this value if you need image to be returned in specific size.
-   * In case this value is not specified returned image will have default thumbnail size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_width = 0;
-
-  /**
-   * The session count.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_session;
-
-  /**
-   * Staff image height in pixels. Please specify this value if you need image to be returned in specific size.
-   * In case this value is not specified returned image will have default thumbnail size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_staff_image_height = 0;
-
-  /**
-   * Staff image width in pixels. Please specify this value if you need image to be returned in specific size.
-   * In case this value is not specified returned image will have default thumbnail size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_staff_image_width = 0;
-
-  /**
-   * The virtual provider ID. One of the {@link VirtualProviderSid} constants.
-   *
-   * `null` if an in-person event.
-   *
-   * @get result
-   * @var int|null
-   */
-  public $id_virtual_provider;
-
-  /**
-   * Whether the event is age restricted.
-   * `true` if the event is age restricted, `false` if the event is not.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_age_restrict = false;
-
-  /**
-   * `true` if the event availability was checked; `false` if the event has too many sessions and calculating
-   *  the availability of each one takes a lot of time.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_availability_checked;
-
-  /**
-   * <tt>true</tt> if the event is already booked; <tt>false</tt> if the event isn't booked.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_book;
-
-  /**
-   * `true` If the event is bookable; `false` if the event isn't bookable.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_bookable;
-
-  /**
-   * `true` if there are no free spots in the event; booking is available only into the wait list.
-   * `false` otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_full;
-
-  /**
-   * `true` if the event can be paid with a Purchase Option only.
-   * `false` if full event purchases or single session purchases are permitted.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_promotion_only;
-
-  /**
-   * `true` if clients, when they book event, which has been started, can pay only for the sessions in the future.
-   * `false` if clients, when they book event, has to pay for the entire event and number of left in the future sessions
-   * does not matter.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_prorate;
-
-  /**
-   * `true` if schedule should be grouped by location time and staff,
-   * `false` if all schedule elements should be independent.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_schedule_group = false;
-
-  /**
-   * Determines whether this event allows paying for a single session.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_single_session_buy;
-
-  /**
-   * <tt>true</tt> -if event is virtual; <tt>false</tt> - otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_virtual;
-
-  /**
-   * The ID of the session which should be used to go to the booking wizard.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_book_class_period;
-
-  /**
-   * Key of a business.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $k_business = null;
-
-  /**
-   * The event key.
-   * You can specify {@link ElementModel::$s_event} instead to get information for a bulk of events.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_event = '0';
-
-  /**
-   * The price of a single session of the event.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_price;
-
-  /**
-   * The price of the all sessions of the event.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_price_total;
-
-  /**
-   * Price of the full event, should be used as full price while {@link ElementModel::$dt_early} is actual.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $m_price_total_early;
-
-  /**
-   * The reason why the event can't be booked.
-   * Empty if {@link ElementModel::$k_book_class_period} isn't empty.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_deny_reason;
-
-  /**
-   * A list of event keys serialized with JSON.
-   * Specify instead of {@link ElementModel::$k_event} to get information for a bulk of events.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_event = '';
-
-  /**
-   * The title of the event.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $s_title;
-
-  /**
-   * End date of the event in user-friendly format.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_end;
-
-  /**
-   * Start date of the event in user-friendly format.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_start;
-
-  /**
-   * The user key.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-
-  /**
-   * Link to the start of the booking wizard to book the closed session from this event or the entire event.
-   *
-   * Can be `null` if there is no available for booking sessions.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $url_book = null;
-
-  /**
-   * The description of the event.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $xml_description;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Event\Book\EventView;
+
+use WellnessLiving\Core\a\AGenderSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Business\Config\BusinessConfigModel;
+use WellnessLiving\Wl\Virtual\VirtualProviderSid;
+
+/**
+ * Retrieves information about an event element.
+ */
+class ElementModel extends WlModelAbstract
+{
+  /**
+   * Displays information about age restrictions for this event.
+   *
+   * An empty array if there are no age restrictions.
+   *
+   * <dl>
+   *   <dt>int|null <var>i_age_from</var></dt>
+   *   <dd>The minimum age for participation in the event. `null` if there's no minimum age set or information isn't available.</dd>
+   *   <dt>int|null <var>i_age_to</var></dt>
+   *   <dd>The age limit for participation in the event. `null` if there's no age limit set or information isn't available.</dd>
+   *   <dt>bool <var>is_age_public</var></dt>
+   *   <dd>`true` if age restrictions are public and available, `false` if they're hidden.
+   *     When restrictions are hidden and the current user isn't a staff member, the age range will be empty.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_age_restrictions = [];
+
+  /**
+   * Retrieves information about an event item.
+   *
+   * Received only if {@link ElementModel::$k_event} has been specified. In this case other fields aren't receivers.
+   *
+   * <dl>
+   *   <dt>string <var>dt_date</var></dt>
+   *   <dd>Date/time when session starts. In UTC.</dd>
+   *   <dt>string <var>k_class_period</var></dt>
+   *   <dd>Class session primary keys.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_book_available;
+
+  /**
+   * Displays all business policies connected to clients and bookings.
+   *
+   * Contains the same structure as the {@link BusinessConfigModel::$a_business_policy} property.
+   *
+   * If policies are overwritten for a certain event, the impacted event's policies will be in this result.
+   * Otherwise, the result will display the business policies.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_business_policy;
+
+  /**
+   * The logo of event.
+   * <dl>
+   *   <dt>int [<var>i_height</var>]</dt>
+   *   <dd>Is returned only if staff has photo. Image height.</dd>
+   *   <dt>int [<var>i_width</var>]</dt>
+   *   <dd>Is returned only if staff has photo. Image width.</dd>
+   *   <dt>int [<var>id_gender</var>] </dt>
+   *   <dd>Is returned only if staff does not have photo. ID of staff gender. One of {@link AGenderSid} constants.</dd>
+   *   <dt>string [<var>url_logo</var>]</dt>
+   *   <dd>Is returned only if staff has photo. URL to image.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_class_logo;
+
+  /**
+   * The list of keys from class tab.+
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_class_tab;
+
+  /**
+   * Displays information for a bulk of events.
+   *
+   * Received only if {@link ElementModel::$s_event} has been specified. In this case, other fields aren't receivers.
+   *
+   * The event keys of this array.
+   * Values of this array and sub arrays with keys that correspond to all fields in this table that may be received.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_event;
+
+  /**
+   * A list of event sessions. Every element has the following next keys:
+   * <dl>
+   *   <dt>
+   *     array <var>a_day</var>
+   *   </dt>
+   *   <dd>
+   *     A list of days of the week when the session has occurred.
+   *     Keys - a number corresponding to a day of the week (0 - Sunday, 6 - Saturday). The value is always <tt>true</tt>.
+   *   </dd>
+   *   <dt>array <var>a_repeat</var></dt>
+   *   <dd>
+   *     Repeat periodicity instructions.
+   *     <dl>
+   *       <dt>int <var>i_repeat</var></dt>
+   *       <dd>Count of the periods which specified in <var>id_repeat</var>.</dd>
+   *       <dt>int <var>id_repeat</var></dt>
+   *       <dd>Measuring unit of <var>i_repeat</var> (week, month, year).</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     array[] <var>a_staff</var>
+   *   </dt>
+   *   <dd>
+   *     A list of staff members who conduct the session. Every element has the following next keys:
+   *     <dl>
+   *       <dt>string <var>k_staff</var></dt>
+   *       <dd>The staff member key.</dd>
+   *       <dt>string <var>s_name</var></dt>
+   *       <dd>The staff member name.</dd>
+   *       <dt>string <var>s_surname</var></dt>
+   *       <dd>The first letter of staff member's surname.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_virtual_location</var>
+   *   </dt>
+   *   <dd>
+   *     List of virtual locations.
+   *   </dd>
+   *   <dt>
+   *     string <var>dt_end</var>
+   *   </dt>
+   *   <dd>
+   *     The end date of the session.
+   *     The local date without time.
+   *   </dd>
+   *   <dt>
+   *     string <var>dt_start</var>
+   *   </dt>
+   *   <dd>
+   *     The start date of the session.
+   *     The local date without time.
+   *   </dd>
+   *   <dt>
+   *     bool <var>hide_location</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if the location should be hidden in the event details. Hide if the event is virtual or if the business
+   *     only has one location. `false` otherwise.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_capacity</var>
+   *   </dt>
+   *   <dd>
+   *     The class capacity.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The duration of the class in seconds.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_virtual</var>
+   *   </dt>
+   *   <dd>
+   *     This will be `true` if the session is not held in person but offered remotely. If will be `false` otherwise.
+   *   </dd>
+   *   <dt>
+   *     string <var>f_price</var>
+   *   </dt>
+   *   <dd>
+   *     The price of the session, if it can be purchased separately.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_class_period</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the class period.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_location</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the location where the session is held.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_location</var>
+   *   </dt>
+   *   <dd>
+   *     The location title.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_time</var>
+   *   </dt>
+   *   <dd>
+   *     The time when session occurred.
+   *     A textual representation of the start and end time of a session. Example: <tt>10:00 am - 11:00 am</tt>
+   *   </dd>
+   *   <dt>
+   *     string <var>s_timezone</var>
+   *   </dt>
+   *   <dd>
+   *     The name of the timezone in which the session is held.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_schedule;
+
+  /**
+   * Photos of staff members. Keys are the keys of staff members. The values are the following:
+   * <dl>
+   *   <dt>int <var>i_height</var></dt>
+   *   <dd>Image height.</dd>
+   *   <dt>int <var>i_width</var></dt>
+   *   <dd>Image width.</dd>
+   *   <dt>string <var>uid</var></dt>
+   *   <dd>Key of the user.</dd>
+   *   <dt>string <var>url_logo</var></dt>
+   *   <dd>URL to image.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_staff_logo;
+
+  /**
+   * A list of classes and events that clients should attend before this one.
+   *
+   * <dl>
+   *   <dt>int <var>i_count</var></dt>
+   *   <dd>The number of visits.</dd>
+   *   <dt>bool <var>is_event</var></dt>
+   *   <dd>`true` if this is an event, `false` if this is a class.</dd>
+   *   <dt>string <var>k_class</var></dt>
+   *   <dd>The key of the class or event.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>The name of the class or event.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_visits_required;
+
+  /**
+   * The last available date for booking.
+   * If this is set and {@link ElementModel::$dl_book_available_start} is a set list of
+   *   sessions available for booking, {@link ElementModel::$a_book_available}
+   *   should match given date range.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $dl_book_available_end = null;
+
+  /**
+   * The first available date for booking.
+   * If this is set and {@link ElementModel::$dl_book_available_end} is a set list of
+   *   sessions available for booking {@link ElementModel::$a_book_available}
+   *   should match given date range.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $dl_book_available_start = null;
+
+  /**
+   * That date that should be used to go to the booking wizard.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $dt_book_date;
+
+  /**
+   * The early registration date of the event.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $dt_early;
+
+  /**
+   * The end date of the event.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_end;
+
+  /**
+   * The start date of the event.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_start;
+
+  /**
+   * Whether event will be hidden in the White Label mobile application.
+   * <tt>true</tt> means that event will not be displayed, <tt>false</tt> otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $hide_application;
+
+  /**
+   * The description of the event.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $html_description;
+
+  /**
+   * Special instruction for the event.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_special;
+
+  /**
+   * Image height in pixels. Please specify this value if you need image to be returned in specific size.
+   * In case this value is not specified returned image will have default thumbnail size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_height = 0;
+
+  /**
+   * Image width in pixels. Please specify this value if you need image to be returned in specific size.
+   * In case this value is not specified returned image will have default thumbnail size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_width = 0;
+
+  /**
+   * The session count.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_session;
+
+  /**
+   * Staff image height in pixels. Please specify this value if you need image to be returned in specific size.
+   * In case this value is not specified returned image will have default thumbnail size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_staff_image_height = 0;
+
+  /**
+   * Staff image width in pixels. Please specify this value if you need image to be returned in specific size.
+   * In case this value is not specified returned image will have default thumbnail size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_staff_image_width = 0;
+
+  /**
+   * The virtual provider ID. One of the {@link VirtualProviderSid} constants.
+   *
+   * `null` if an in-person event.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $id_virtual_provider;
+
+  /**
+   * Whether the event is age restricted.
+   * `true` if the event is age restricted, `false` if the event is not.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_age_restrict = false;
+
+  /**
+   * `true` if the event availability was checked; `false` if the event has too many sessions and calculating
+   *  the availability of each one takes a lot of time.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_availability_checked;
+
+  /**
+   * <tt>true</tt> if the event is already booked; <tt>false</tt> if the event isn't booked.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_book;
+
+  /**
+   * `true` If the event is bookable; `false` if the event isn't bookable.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_bookable;
+
+  /**
+   * `true` if there are no free spots in the event; booking is available only into the wait list.
+   * `false` otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_full;
+
+  /**
+   * `true` if the event can be paid with a Purchase Option only.
+   * `false` if full event purchases or single session purchases are permitted.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_promotion_only;
+
+  /**
+   * `true` if clients, when they book event, which has been started, can pay only for the sessions in the future.
+   * `false` if clients, when they book event, has to pay for the entire event and number of left in the future sessions
+   * does not matter.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_prorate;
+
+  /**
+   * `true` if schedule should be grouped by location time and staff,
+   * `false` if all schedule elements should be independent.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_schedule_group = false;
+
+  /**
+   * Determines whether this event allows paying for a single session.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_single_session_buy;
+
+  /**
+   * <tt>true</tt> -if event is virtual; <tt>false</tt> - otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_virtual;
+
+  /**
+   * The ID of the session which should be used to go to the booking wizard.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_book_class_period;
+
+  /**
+   * Key of a business.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_business = null;
+
+  /**
+   * The event key.
+   * You can specify {@link ElementModel::$s_event} instead to get information for a bulk of events.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_event = '0';
+
+  /**
+   * The price of a single session of the event.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_price;
+
+  /**
+   * The price of the all sessions of the event.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_price_total;
+
+  /**
+   * Price of the full event, should be used as full price while {@link ElementModel::$dt_early} is actual.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_price_total_early;
+
+  /**
+   * The reason why the event can't be booked.
+   * Empty if {@link ElementModel::$k_book_class_period} isn't empty.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_deny_reason;
+
+  /**
+   * A list of event keys serialized with JSON.
+   * Specify instead of {@link ElementModel::$k_event} to get information for a bulk of events.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_event = '';
+
+  /**
+   * The title of the event.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $s_title;
+
+  /**
+   * End date of the event in user-friendly format.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_end;
+
+  /**
+   * Start date of the event in user-friendly format.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_start;
+
+  /**
+   * The user key.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+
+  /**
+   * Link to the start of the booking wizard to book the closed session from this event or the entire event.
+   *
+   * Can be `null` if there is no available for booking sessions.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $url_book = null;
+
+  /**
+   * The description of the event.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $xml_description;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Event/EventCancelWholeModel.php b/WellnessLiving/Wl/Event/EventCancelWholeModel.php
index 2772d6b7..fcbd9d44 100644
--- a/WellnessLiving/Wl/Event/EventCancelWholeModel.php
+++ b/WellnessLiving/Wl/Event/EventCancelWholeModel.php
@@ -1,37 +1,37 @@
-<?php
-
-namespace WellnessLiving\Wl\Event;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Cancels a whole event booked by a client.
- */
-class EventCancelWholeModel extends WlModelAbstract
-{
-  /**
-   * Key of the business in which the class resides.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * An event key.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_class = '0';
-
-  /**
-   * A user key.
-   *
-   * @post post
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Event;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Cancels a whole event booked by a client.
+ */
+class EventCancelWholeModel extends WlModelAbstract
+{
+  /**
+   * Key of the business in which the class resides.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * An event key.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_class = '0';
+
+  /**
+   * A user key.
+   *
+   * @post post
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Event/EventListModel.php b/WellnessLiving/Wl/Event/EventListModel.php
index 746d3bb7..d07366db 100644
--- a/WellnessLiving/Wl/Event/EventListModel.php
+++ b/WellnessLiving/Wl/Event/EventListModel.php
@@ -1,351 +1,363 @@
-<?php
-
-namespace WellnessLiving\Wl\Event;
-
-use WellnessLiving\Core\Drive\DriveTypeSid;
-use WellnessLiving\Core\a\ADateWeekSid;
-use WellnessLiving\Core\a\AFlagSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlScheduleTimeSid;
-
-/**
- * Retrieves a list of events that fit the given filter parameters.
- */
-class EventListModel extends WlModelAbstract
-{
-  /**
-   * List of class keys applied by filter.
-   *
-   * @get get
-   * @var string[]|null
-   */
-  public $a_class_filter = null;
-
-  /**
-   * List of day the week applied by filter {@link ADateWeekSid}.
-   *
-   * @get get
-   * @var string[]|null
-   */
-  public $a_day = null;
-
-  /**
-   * List of enrollment blocks keys applied by filter.
-   *
-   * @get get
-   * @var string[]|null
-   */
-  public $a_enrollment_block_filter = null;
-
-  /**
-   * List of available enrollment blocks correspond to requested parameters.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_enrollment_block_list = [];
-
-  /**
-   * A list of events corresponding to requested parameters. Each event will have the following keys: <dl>
-   *   <dt>array <var>a_class_tab</var></dt>
-   *   <dd>The list of class tab keys that contain this event.</dd>
-   *   <dt>array <var>a_logo</var></dt>
-   *   <dd>Information about the event's logo. It will contain the following keys:
-   *   <dl>
-   *     <dt>int <var>i_height</var></dt>
-   *     <dd>The image height.</dd>
-   *     <dt>int <var>i_height_src</var></dt>
-   *     <dd>The source image's height.</dd>
-   *     <dt>int <var>i_rotate</var></dt>
-   *     <dd>The angle which image was rotated compared to the original.</dd>
-   *     <dt>int <var>i_width</var></dt>
-   *     <dd>The image width.</dd>
-   *     <dt>int <var>i_width_src</var></dt>
-   *     <dd>The source image's width.</dd>
-   *     <dt>int <var>id_type_src</var></dt>
-   *     <dd>The image type ID. One of the {@link DriveTypeSid} constants.</dd>
-   *     <dt>bool <var>is_resize</var></dt>
-   *     <dd>This will be `true` if the image has been resized. `false` otherwise.</dd>
-   *     <dt>bool <var>is_old</var></dt>
-   *     <dd>This will be `true` if the image is old. `false` otherwise.</dd>
-   *     <dt>string <var>s_url</var></dt>
-   *     <dd>The URL to the image.</dd>
-   *     <dt>string <var>url-view</var></dt>
-   *     <dd>The URL to the image.</dd>
-   *     <dt>string <var>url-thumbnail</var></dt>
-   *     <dd>The URL to the image's thumbnail.</dd>
-   *   </dl>
-   *   </dd>
-   *   <dt>array <var>a_schedule</var></dt>
-   *   <dd>Information about the event's schedule. It is a list of instances, each instance will contain the following keys:
-   *   <dl>
-   *     <dt>array <var>a_day</var></dt>
-   *     <dd>The days when the event is scheduled (0 - Sunday, 6 - Saturday).</dd>
-   *     <dt>array <var>a_staff_member</var></dt>
-   *     <dd>Information about the staff member(s) conducting the event. This is a list of staff, each element is an array
-   *     with the following keys
-   *       <dl>
-   *         <dt>string <var>k_staff_member</var></dt>
-   *         <dd>The staff member key.</dd>
-   *         <dt>string <var>text_business_role</var></dt>
-   *         <dd>The name of the staff member's business role.</dd>
-   *         <dt>string <var>text_mail</var></dt>
-   *         <dd>The staff member's email address.</dd>
-   *         <dt>string <var>text_name_first</var></dt>
-   *         <dd>The staff member's first name.</dd>
-   *         <dt>string <var>text_name_full</var></dt>
-   *         <dd>The staff member's full name.</dd>
-   *         <dt>string <var>text_name_last</var></dt>
-   *         <dd>The staff member's last name.</dd>
-   *         <dt>string <var>uid</var></dt>
-   *         <dd>The staff member's user key.</dd>
-   *       </dl>
-   *     </dd>
-   *     <dt>string <var>dl_end</var></dt>
-   *     <dd>The ending date of the event series.</dd>
-   *     <dt>string <var>dl_start</var></dt>
-   *     <dd>The starting date of the event series.</dd>
-   *     <dt>bool <var>is_day</var></dt>
-   *     <dd>This will be `true` if the event starts and ends on the same day.</dd>
-   *     <dt>string <var>k_class_period</var></dt>
-   *     <dd>The class period key.</dd>
-   *     <dt>string <var>k_location</var></dt>
-   *     <dd>The location key.</dd>
-   *     <dt>string <var>text_location</var></dt>
-   *     <dd>The name of the location.</dd>
-   *     <dt>string <var>text_time</var></dt>
-   *     <dd>The human readable version of the event time.</dd>
-   *   </dl>
-   *   </dd>
-   *   <dt>array <var>a_search_tag</var></dt>
-   *   <dd>The list of search tags for this event.</dd>
-   *   <dt>bool <var>can_cancel</var></dt>
-   *   <dd>Whether the current user can cancel already booked event.</dd>
-   *   <dt>string <var>dl_early</var></dt>
-   *   <dd>The early cancel date</dd>
-   *   <dt>string <var>dl_end</var></dt>
-   *   <dd>The ending date of the event.</dd>
-   *   <dt>string <var>dl_start</var></dt>
-   *   <dd>The starting date of the event.</dd>
-   *   <dt>string <var>dtu_session</var></dt>
-   *   <dd>Date of the closest session of the event.</dd>
-   *   <dt>int <var>i_session_all</var></dt>
-   *   <dd>Number of all sessions in the event.</dd>
-   *   <dt>int <var>i_session_future</var></dt>
-   *   <dd>Number of all sessions in the future.</dd>
-   *   <dt>int <var>i_session_past</var></dt>
-   *   <dd>Number of all sessions in the past.</dd>
-   *   <dt>bool <var>is_age_restrict</var></dt>
-   *   <dd>`true` if the event is age restricted, `false` if the event is not.</dd>
-   *   <dt>bool <var>is_block</var></dt>
-   *   <dd>`true` if the event is a block event, `false` if the event is not.</dd>
-   *   <dt>bool <var>is_bookable</var></dt>
-   *   <dd>`true` if the event is can be booked by the current user, `false` if the event is not.</dd>
-   *   <dt>bool <var>is_booked</var></dt>
-   *   <dd>`true` if the user has booked the event, `false` if the event is not.</dd>
-   *   <dt>bool <var>is_closed</var></dt>
-   *   <dd>`true` if booking the event is closed, `false` if the event is not.</dd>
-   *   <dt>bool <var>is_full</var></dt>
-   *   <dd>`true` if the event is full, `false` if the event is not.</dd>
-   *   <dt>bool <var>is_online</var></dt>
-   *   <dd>`true` if the event is available online, `false` if the event is not.</dd>
-   *   <dt>bool <var>is_online_private</var></dt>
-   *   <dd>`true` if the event is online and private, `false` if the event is not.</dd>
-   *   <dt>bool <var>is_open</var></dt>
-   *   <dd>`true` if the event is open to be booked, `false` if the event is not.</dd>
-   *   <dt>bool <var>is_prorate</var></dt>
-   *   <dd>`true` if the event is prorated, `false` if the event is not.</dd>
-   *   <dt>bool <var>is_virtual</var></dt>
-   *   <dd>`true` if the event is only held virtually, `false` if the event is not.</dd>
-   *   <dt>string <var>k_class</var></dt>
-   *   <dd>The class key.</dd>
-   *   <dt>string <var>k_class_period</var></dt>
-   *   <dd>The class period key.</dd>
-   *   <dt>string <var>k_enrollment_block</var></dt>
-   *   <dd>The enrollment block key.</dd>
-   *   <dt>string <var>k_location</var></dt>
-   *   <dd>The location key.</dd>
-   *   <dt>string <var>m_price_total</var></dt>
-   *   <dd>The total price of booking a session.</dd>
-   *   <dt>string <var>m_price_total_early</var></dt>
-   *   <dd>The total price if booked early.</dd>
-   *   <dt>string <var>text_age_restrict</var></dt>
-   *   <dd>The age description.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>The name of the event.</dd>
-   *   <dt>string <var>url_book</var></dt>
-   *   <dd>The direct booking url.</dd>
-   *   <dt>string <var>xml_description</var></dt>
-   *   <dd>The description of the event.</dd>
-   * </dl>
-   *
+<?php
+
+namespace WellnessLiving\Wl\Event;
+
+use WellnessLiving\Core\Drive\DriveTypeSid;
+use WellnessLiving\Core\Sid\YesNoSid;
+use WellnessLiving\Core\a\ADateWeekSid;
+use WellnessLiving\Core\a\AFlagSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlScheduleTimeSid;
+
+/**
+ * Retrieves a list of events that fit the given filter parameters.
+ */
+class EventListModel extends WlModelAbstract
+{
+  /**
+   * List of class keys applied by filter.
+   *
+   * @get get
+   * @var string[]|null
+   */
+  public $a_class_filter = null;
+
+  /**
+   * List of day the week applied by filter {@link ADateWeekSid}.
+   *
+   * @get get
+   * @var string[]|null
+   */
+  public $a_day = null;
+
+  /**
+   * List of enrollment blocks keys applied by filter.
+   *
+   * @get get
+   * @var string[]|null
+   */
+  public $a_enrollment_block_filter = null;
+
+  /**
+   * List of available enrollment blocks correspond to requested parameters.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_enrollment_block_list = [];
+
+  /**
+   * A list of events corresponding to requested parameters. Each event will have the following keys: <dl>
+   *   <dt>array <var>a_class_tab</var></dt>
+   *   <dd>The list of class tab keys that contain this event.</dd>
+   *   <dt>array <var>a_logo</var></dt>
+   *   <dd>Information about the event's logo. It will contain the following keys:
+   *   <dl>
+   *     <dt>int <var>i_height</var></dt>
+   *     <dd>The image height.</dd>
+   *     <dt>int <var>i_height_src</var></dt>
+   *     <dd>The source image's height.</dd>
+   *     <dt>int <var>i_rotate</var></dt>
+   *     <dd>The angle which image was rotated compared to the original.</dd>
+   *     <dt>int <var>i_width</var></dt>
+   *     <dd>The image width.</dd>
+   *     <dt>int <var>i_width_src</var></dt>
+   *     <dd>The source image's width.</dd>
+   *     <dt>int <var>id_type_src</var></dt>
+   *     <dd>The image type ID. One of the {@link DriveTypeSid} constants.</dd>
+   *     <dt>bool <var>is_resize</var></dt>
+   *     <dd>This will be `true` if the image has been resized. `false` otherwise.</dd>
+   *     <dt>bool <var>is_old</var></dt>
+   *     <dd>This will be `true` if the image is old. `false` otherwise.</dd>
+   *     <dt>string <var>s_url</var></dt>
+   *     <dd>The URL to the image.</dd>
+   *     <dt>string <var>url-view</var></dt>
+   *     <dd>The URL to the image.</dd>
+   *     <dt>string <var>url-thumbnail</var></dt>
+   *     <dd>The URL to the image's thumbnail.</dd>
+   *   </dl>
+   *   </dd>
+   *   <dt>array <var>a_schedule</var></dt>
+   *   <dd>Information about the event's schedule. It is a list of instances, each instance will contain the following keys:
+   *   <dl>
+   *     <dt>array <var>a_day</var></dt>
+   *     <dd>The days when the event is scheduled (0 - Sunday, 6 - Saturday).</dd>
+   *     <dt>array <var>a_staff_member</var></dt>
+   *     <dd>Information about the staff member(s) conducting the event. This is a list of staff, each element is an array
+   *     with the following keys
+   *       <dl>
+   *         <dt>string <var>k_staff_member</var></dt>
+   *         <dd>The staff member key.</dd>
+   *         <dt>string <var>text_business_role</var></dt>
+   *         <dd>The name of the staff member's business role.</dd>
+   *         <dt>string <var>text_mail</var></dt>
+   *         <dd>The staff member's email address.</dd>
+   *         <dt>string <var>text_name_first</var></dt>
+   *         <dd>The staff member's first name.</dd>
+   *         <dt>string <var>text_name_full</var></dt>
+   *         <dd>The staff member's full name.</dd>
+   *         <dt>string <var>text_name_last</var></dt>
+   *         <dd>The staff member's last name.</dd>
+   *         <dt>string <var>uid</var></dt>
+   *         <dd>The staff member's user key.</dd>
+   *       </dl>
+   *     </dd>
+   *     <dt>string <var>dl_end</var></dt>
+   *     <dd>The ending date of the event series.</dd>
+   *     <dt>string <var>dl_start</var></dt>
+   *     <dd>The starting date of the event series.</dd>
+   *     <dt>bool <var>is_day</var></dt>
+   *     <dd>This will be `true` if the event starts and ends on the same day.</dd>
+   *     <dt>string <var>k_class_period</var></dt>
+   *     <dd>The class period key.</dd>
+   *     <dt>string <var>k_location</var></dt>
+   *     <dd>The location key.</dd>
+   *     <dt>string <var>text_location</var></dt>
+   *     <dd>The name of the location.</dd>
+   *     <dt>string <var>text_time</var></dt>
+   *     <dd>The human readable version of the event time.</dd>
+   *   </dl>
+   *   </dd>
+   *   <dt>array <var>a_search_tag</var></dt>
+   *   <dd>The list of search tags for this event.</dd>
+   *   <dt>bool <var>can_cancel</var></dt>
+   *   <dd>Whether the current user can cancel already booked event.</dd>
+   *   <dt>string <var>dl_early</var></dt>
+   *   <dd>The early cancel date</dd>
+   *   <dt>string <var>dl_end</var></dt>
+   *   <dd>The ending date of the event.</dd>
+   *   <dt>string <var>dl_start</var></dt>
+   *   <dd>The starting date of the event.</dd>
+   *   <dt>string <var>dtu_session</var></dt>
+   *   <dd>Date of the closest session of the event.</dd>
+   *   <dt>int <var>i_session_all</var></dt>
+   *   <dd>Number of all sessions in the event.</dd>
+   *   <dt>int <var>i_session_future</var></dt>
+   *   <dd>Number of all sessions in the future.</dd>
+   *   <dt>int <var>i_session_past</var></dt>
+   *   <dd>Number of all sessions in the past.</dd>
+   *   <dt>bool <var>is_age_restrict</var></dt>
+   *   <dd>`true` if the event is age restricted, `false` if the event is not.</dd>
+   *   <dt>bool <var>is_block</var></dt>
+   *   <dd>`true` if the event is a block event, `false` if the event is not.</dd>
+   *   <dt>bool <var>is_bookable</var></dt>
+   *   <dd>`true` if the event is can be booked by the current user, `false` if the event is not.</dd>
+   *   <dt>bool <var>is_booked</var></dt>
+   *   <dd>`true` if the user has booked the event, `false` if the event is not.</dd>
+   *   <dt>bool <var>is_closed</var></dt>
+   *   <dd>`true` if booking the event is closed, `false` if the event is not.</dd>
+   *   <dt>bool <var>is_full</var></dt>
+   *   <dd>`true` if the event is full, `false` if the event is not.</dd>
+   *   <dt>bool <var>is_online</var></dt>
+   *   <dd>`true` if the event is available online, `false` if the event is not.</dd>
+   *   <dt>bool <var>is_online_private</var></dt>
+   *   <dd>`true` if the event is online and private, `false` if the event is not.</dd>
+   *   <dt>bool <var>is_open</var></dt>
+   *   <dd>`true` if the event is open to be booked, `false` if the event is not.</dd>
+   *   <dt>bool <var>is_prorate</var></dt>
+   *   <dd>`true` if the event is prorated, `false` if the event is not.</dd>
+   *   <dt>bool <var>is_virtual</var></dt>
+   *   <dd>`true` if the event is only held virtually, `false` if the event is not.</dd>
+   *   <dt>string <var>k_class</var></dt>
+   *   <dd>The class key.</dd>
+   *   <dt>string <var>k_class_period</var></dt>
+   *   <dd>The class period key.</dd>
+   *   <dt>string <var>k_enrollment_block</var></dt>
+   *   <dd>The enrollment block key.</dd>
+   *   <dt>string <var>k_location</var></dt>
+   *   <dd>The location key.</dd>
+   *   <dt>string <var>m_price_total</var></dt>
+   *   <dd>The total price of booking a session.</dd>
+   *   <dt>string <var>m_price_total_early</var></dt>
+   *   <dd>The total price if booked early.</dd>
+   *   <dt>string <var>text_age_restrict</var></dt>
+   *   <dd>The age description.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>The name of the event.</dd>
+   *   <dt>string <var>url_book</var></dt>
+   *   <dd>The direct booking url.</dd>
+   *   <dt>string <var>xml_description</var></dt>
+   *   <dd>The description of the event.</dd>
+   * </dl>
+   *
    * @get result
    * @var array[]
-   */
-  public $a_event_list = [];
-
-  /**
-   * List of location keys applied by filter.
-   *
-   * @get get
-   * @var string[]|null
-   */
-  public $a_location = null;
-
-  /**
-   * List of staff keys applied by filter.
-   *
-   * @get get
-   * @var string[]|null
-   */
-  public $a_staff = null;
-
-  /**
-   * List of time day applied by filter {@link WlScheduleTimeSid}.
-   *
-   * @get get
-   * @var string[]|null
-   */
-  public $a_time = null;
-
-  /**
-   * The end date of the range from which a list of events should be retrieved.
-   *
-   * <tt>null</tt> if the range has no end date.
-   *
-   * @get get
-   * @var string
-   */
-  public $dl_end;
-
-  /**
-   * The start date of the range from which a list of events should be retrieved.
-   *
-   * <tt>null</tt> if the range has no start date.
-   *
-   * @get get
-   * @var string
-   */
-  public $dl_start;
-
-  /**
-   * Defines how the event availability flag filter should be applied.
-   *
-   * One of {@link AFlagSid} constants.
-   *
-   * * {@link AFlagSid::ON} to show only available events.
-   * * {@link AFlagSid::OFF} to show only unavailable events.
-   * * {@link AFlagSid::ALL} to show all events (available and unavailable).
-   *
-   * @get get
-   * @var int
-   */
-  public $id_flag = 3;
-
-  /**
-   * Determines whether the endpoint is used for backend mode.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_backend;
-
-  /**
-   * Model cache reset flag.
-   *
-   * @put post
-   * @var bool
-   */
-  public $is_cache_reset = false;
-
-  /**
-   * `true` to show even event restricted by booking policies; `false` to show available events only.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_ignore_requirement = false;
-
-  /**
-   * Determines whether you need to retrieve a list of event sessions regardless of the tab specified in {@link EventListModel::$k_class_tab}.
-   *
-   * * <tt>true</tt> - retrieves a list regardless of the specified tab.
-   * * <tt>false</tt> - retrieves a list only for the specific tab.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_tab_all = false;
-
-  /**
-   * The event business key to retrieve a list of all event sessions in business.
-   *
-   * Required if {@link EventListModel::$k_location} isn't specified.
-   *
-   * @get get
-   * @put get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The event class key to retrieve a list of all event sessions of a specific class.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_class;
-
-  /**
-   * The class tab key to retrieve a list of event sessions from a specific tab only.
-   * An empty value to retrieve a list of event sessions that don't belong to any tab.
-   *
-   * Will be ignored in next cases:
-   * * {@link EventListModel::$k_skin} specified.
-   * * {@link EventListModel::$is_tab_all} is <tt>true</tt>.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_class_tab;
-
-  /**
-   * The event location key to retrieve a list of all event sessions in a specific location.
-   *
-   * Required if {@link EventListModel::$k_business} isn't specified.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location;
-
-  /**
-   * The skin key if an event list is used for widget mode.
-   *
-   * {@link EventListModel::$k_class_tab} will be ignored for widget mode.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_skin;
-
-  /**
-   * Search string to filter events by name.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_search = '';
-
-  /**
-   * The user key.
-   * Required to apply specific user rules such as age restrictions.
-   *
-   * @get get
-   * @put get
-   * @var string
-   */
-  public $uid;
-}
-
+   */
+  public $a_event_list = [];
+
+  /**
+   * List of location keys applied by filter.
+   *
+   * @get get
+   * @var string[]|null
+   */
+  public $a_location = null;
+
+  /**
+   * List of staff keys applied by filter.
+   *
+   * @get get
+   * @var string[]|null
+   */
+  public $a_staff = null;
+
+  /**
+   * List of time day applied by filter {@link WlScheduleTimeSid}.
+   *
+   * @get get
+   * @var string[]|null
+   */
+  public $a_time = null;
+
+  /**
+   * List of IDs to include/exclude virtual events.
+   * If the only ID is {@link YesNoSid::YES}, only virtual events are included.
+   * If the only ID is {@link YesNoSid::NO}, only in-person events are included.
+   * Otherwise, no filtering is done.
+   *
+   * @get get
+   * @var string[]|null
+   */
+  public $a_virtual = null;
+
+  /**
+   * The end date of the range from which a list of events should be retrieved.
+   *
+   * <tt>null</tt> if the range has no end date.
+   *
+   * @get get
+   * @var string
+   */
+  public $dl_end;
+
+  /**
+   * The start date of the range from which a list of events should be retrieved.
+   *
+   * <tt>null</tt> if the range has no start date.
+   *
+   * @get get
+   * @var string
+   */
+  public $dl_start;
+
+  /**
+   * Defines how the event availability flag filter should be applied.
+   *
+   * One of {@link AFlagSid} constants.
+   *
+   * * {@link AFlagSid::ON} to show only available events.
+   * * {@link AFlagSid::OFF} to show only unavailable events.
+   * * {@link AFlagSid::ALL} to show all events (available and unavailable).
+   *
+   * @get get
+   * @var int
+   */
+  public $id_flag = 3;
+
+  /**
+   * Determines whether the endpoint is used for backend mode.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_backend;
+
+  /**
+   * Model cache reset flag.
+   *
+   * @put post
+   * @var bool
+   */
+  public $is_cache_reset = false;
+
+  /**
+   * `true` to show even event restricted by booking policies; `false` to show available events only.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_ignore_requirement = false;
+
+  /**
+   * Determines whether you need to retrieve a list of event sessions regardless of the tab specified in {@link EventListModel::$k_class_tab}.
+   *
+   * * <tt>true</tt> - retrieves a list regardless of the specified tab.
+   * * <tt>false</tt> - retrieves a list only for the specific tab.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_tab_all = false;
+
+  /**
+   * The event business key to retrieve a list of all event sessions in business.
+   *
+   * Required if {@link EventListModel::$k_location} isn't specified.
+   *
+   * @get get
+   * @put get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The event class key to retrieve a list of all event sessions of a specific class.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_class;
+
+  /**
+   * The class tab key to retrieve a list of event sessions from a specific tab only.
+   * An empty value to retrieve a list of event sessions that don't belong to any tab.
+   *
+   * Will be ignored in next cases:
+   * * {@link EventListModel::$k_skin} specified.
+   * * {@link EventListModel::$is_tab_all} is <tt>true</tt>.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_class_tab;
+
+  /**
+   * The event location key to retrieve a list of all event sessions in a specific location.
+   *
+   * Required if {@link EventListModel::$k_business} isn't specified.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location;
+
+  /**
+   * The skin key if an event list is used for widget mode.
+   *
+   * {@link EventListModel::$k_class_tab} will be ignored for widget mode.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_skin;
+
+  /**
+   * Search string to filter events by name.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_search = '';
+
+  /**
+   * The user key.
+   * Required to apply specific user rules such as age restrictions.
+   *
+   * @get get
+   * @put get
+   * @var string
+   */
+  public $uid;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Facebook/Login/FacebookLoginModel.php b/WellnessLiving/Wl/Facebook/Login/FacebookLoginModel.php
index 5ce13324..19c124dc 100644
--- a/WellnessLiving/Wl/Facebook/Login/FacebookLoginModel.php
+++ b/WellnessLiving/Wl/Facebook/Login/FacebookLoginModel.php
@@ -1,39 +1,39 @@
-<?php
-
-namespace WellnessLiving\Wl\Facebook\Login;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * An endpoint that performs authorization actions with Facebook.
- */
-class FacebookLoginModel extends WlModelAbstract
-{
-  /**
-   * Business in which authorization is performed.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The application ID.
-   *
-   * This will be `null` if the application is being used to make the request.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $s_application = null;
-
-  /**
-   * The Facebook token.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_token = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Facebook\Login;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * An endpoint that performs authorization actions with Facebook.
+ */
+class FacebookLoginModel extends WlModelAbstract
+{
+  /**
+   * Business in which authorization is performed.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The application ID.
+   *
+   * This will be `null` if the application is being used to make the request.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_application = null;
+
+  /**
+   * The Facebook token.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_token = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Facility/WlFacilitySid.php b/WellnessLiving/Wl/Facility/WlFacilitySid.php
index f292c048..b47e78af 100644
--- a/WellnessLiving/Wl/Facility/WlFacilitySid.php
+++ b/WellnessLiving/Wl/Facility/WlFacilitySid.php
@@ -1,14 +1,14 @@
-<?php
-
-namespace WellnessLiving\Wl\Facility;
-
-/**
- * @deprecated As of 2023-09-11.
- *
- * Use class {@link \WellnessLiving\Wl\WlFacilitySid} instead.
- */
-class WlFacilitySid extends \WellnessLiving\Wl\WlFacilitySid
-{
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Facility;
+
+/**
+ * @deprecated As of 2023-09-11.
+ *
+ * Use class {@link \WellnessLiving\Wl\WlFacilitySid} instead.
+ */
+class WlFacilitySid extends \WellnessLiving\Wl\WlFacilitySid
+{
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Family/Relation/RelationModel.php b/WellnessLiving/Wl/Family/Relation/RelationModel.php
index eea7db09..0de2cdbc 100644
--- a/WellnessLiving/Wl/Family/Relation/RelationModel.php
+++ b/WellnessLiving/Wl/Family/Relation/RelationModel.php
@@ -1,77 +1,77 @@
-<?php
-
-namespace WellnessLiving\Wl\Family\Relation;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Returns data about a user's relationships.
- */
-class RelationModel extends WlModelAbstract
-{
-  /**
-   * The new relationship to be added to user, specified with {@link RelationModel::$uid}:
-   * <dl>
-   *   <dt>int <var>id_family_relation</var></dt>
-   *   <dd>The relationship type. One of the {@link WlFamilyRelationSid} constants.</dd>
-   *   <dt>string <var>uid</var></dt>
-   *   <dd>The related user's key.</dd>
-   * </dl>
-   *
-   * @post post
-   * @var array
-   */
-  public $a_new = [];
-
-  /**
-   * Information about the user's relationships. Every element has the following fields:
-   * <dl>
-   *   <dt>int <var>id_family_relation</var></dt>
-   *   <dd>The relationship type. One of the {@link WlFamilyRelationSid} constants.</dd>
-   *   <dt>int <var>id_family_relation_reverse</var></dt>
-   *   <dd>The type of reciprocated relationship. One of the {@link WlFamilyRelationSid} constants.</dd>
-   *   <dt>string <var>text_name</var></dt>
-   *   <dd>The name of the relation.</dd>
-   *   <dt>string <var>text_name_first</var></dt>
-   *   <dd>The first name of the relation.</dd>
-   *   <dt>string <var>uid</var></dt>
-   *   <dd>The key of the related user.</dd>
-   * </dl>
-   *
-   * @delete result
-   * @get result
-   * @post result
-   * @var array[]
-   */
-  public $a_relation;
-
-  /**
-   * The business key.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The key of the user whose relationships are being assessed.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-
-  /**
-   * The key of the related user who {@link RelationModel::$uid} must be removed.
-   *
-   * @delete get
-   * @var string
-   */
-  public $uid_delete = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Family\Relation;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns data about a user's relationships.
+ */
+class RelationModel extends WlModelAbstract
+{
+  /**
+   * The new relationship to be added to user, specified with {@link RelationModel::$uid}:
+   * <dl>
+   *   <dt>int <var>id_family_relation</var></dt>
+   *   <dd>The relationship type. One of the {@link WlFamilyRelationSid} constants.</dd>
+   *   <dt>string <var>uid</var></dt>
+   *   <dd>The related user's key.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var array
+   */
+  public $a_new = [];
+
+  /**
+   * Information about the user's relationships. Every element has the following fields:
+   * <dl>
+   *   <dt>int <var>id_family_relation</var></dt>
+   *   <dd>The relationship type. One of the {@link WlFamilyRelationSid} constants.</dd>
+   *   <dt>int <var>id_family_relation_reverse</var></dt>
+   *   <dd>The type of reciprocated relationship. One of the {@link WlFamilyRelationSid} constants.</dd>
+   *   <dt>string <var>text_name</var></dt>
+   *   <dd>The name of the relation.</dd>
+   *   <dt>string <var>text_name_first</var></dt>
+   *   <dd>The first name of the relation.</dd>
+   *   <dt>string <var>uid</var></dt>
+   *   <dd>The key of the related user.</dd>
+   * </dl>
+   *
+   * @delete result
+   * @get result
+   * @post result
+   * @var array[]
+   */
+  public $a_relation;
+
+  /**
+   * The business key.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The key of the user whose relationships are being assessed.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+
+  /**
+   * The key of the related user who {@link RelationModel::$uid} must be removed.
+   *
+   * @delete get
+   * @var string
+   */
+  public $uid_delete = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php b/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php
index c55829b8..1a3a28b1 100644
--- a/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php
+++ b/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php
@@ -1,48 +1,48 @@
-<?php
-
-namespace WellnessLiving\Wl\Family\Relation;
-
-/**
- * Relation type between two relatives.
- *
- * Last used ID: 7.
- */
-class WlFamilyRelationSid
-{
-  /**
-   * Child of the parent.
-   */
-  const CHILD = 5;
-
-  /**
-   * Friend.
-   */
-  const FRIEND = 2;
-
-  /**
-   * Guardian.
-   */
-  const GUARDIAN = 7;
-
-  /**
-   * Not specified custom relationship.
-   */
-  const OTHER = 6;
-
-  /**
-   * Parent of the child.
-   */
-  const PARENT = 3;
-
-  /**
-   * Sibling. A brother or sister.
-   */
-  const SIBLING = 4;
-
-  /**
-   * Spouse. A husband or wife.
-   */
-  const SPOUSE = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Family\Relation;
+
+/**
+ * Relation type between two relatives.
+ *
+ * Last used ID: 7.
+ */
+class WlFamilyRelationSid
+{
+  /**
+   * Child of the parent.
+   */
+  const CHILD = 5;
+
+  /**
+   * Friend.
+   */
+  const FRIEND = 2;
+
+  /**
+   * Guardian.
+   */
+  const GUARDIAN = 7;
+
+  /**
+   * Not specified custom relationship.
+   */
+  const OTHER = 6;
+
+  /**
+   * Parent of the child.
+   */
+  const PARENT = 3;
+
+  /**
+   * Sibling. A brother or sister.
+   */
+  const SIBLING = 4;
+
+  /**
+   * Spouse. A husband or wife.
+   */
+  const SPOUSE = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Fitbuilder/MessageModel.php b/WellnessLiving/Wl/Fitbuilder/MessageModel.php
deleted file mode 100644
index 53f9833e..00000000
--- a/WellnessLiving/Wl/Fitbuilder/MessageModel.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Fitbuilder;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Point to get messenger information from Fitbuilder.
- */
-class MessageModel extends WlModelAbstract
-{
-  /**
-   * Messenger information.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_data = [];
-
-  /**
-   * Messenger channel key.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_channel = '';
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Google/Login/GoogleLoginModel.php b/WellnessLiving/Wl/Google/Login/GoogleLoginModel.php
index 0d38e895..099ce7e8 100644
--- a/WellnessLiving/Wl/Google/Login/GoogleLoginModel.php
+++ b/WellnessLiving/Wl/Google/Login/GoogleLoginModel.php
@@ -1,39 +1,39 @@
-<?php
-
-namespace WellnessLiving\Wl\Google\Login;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * An endpoint that performs authorization actions with Google.
- */
-class GoogleLoginModel extends WlModelAbstract
-{
-  /**
-   * Business in which authorization is performed.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The application ID.
-   *
-   * This will be `null` for application use, which makes the request. Use the application credential from
-   *
-   * @post post
-   * @var string|null
-   */
-  public $s_application = null;
-
-  /**
-   * The Google server authorization code.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_code = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Google\Login;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * An endpoint that performs authorization actions with Google.
+ */
+class GoogleLoginModel extends WlModelAbstract
+{
+  /**
+   * Business in which authorization is performed.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The application ID.
+   *
+   * This will be `null` for application use, which makes the request. Use the application credential from
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_application = null;
+
+  /**
+   * The Google server authorization code.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_code = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Gym/Visit/VisitAddModel.php b/WellnessLiving/Wl/Gym/Visit/VisitAddModel.php
index 3ef79de3..d4632c41 100644
--- a/WellnessLiving/Wl/Gym/Visit/VisitAddModel.php
+++ b/WellnessLiving/Wl/Gym/Visit/VisitAddModel.php
@@ -1,80 +1,80 @@
-<?php
-
-namespace WellnessLiving\Wl\Gym\Visit;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * An endpoint for adding a gym visit.
- */
-class VisitAddModel extends WlModelAbstract
-{
-  /**
-   * The time of the visit, in the location's timezone. An array with the following fields:
-   * <dl>
-   *   <dt>int <var>i_hour</var></dt>
-   *   <dd>The hour component.</dd>
-   *   <dt>int <var>i_minute</var></dt>
-   *   <dd>The minute component.</dd>
-   *   <dt>bool <var>is_am</var></dt>
-   *   <dd>If `true` the visit is in the AM. If `false` it is in the PM.</dd>
-   * </dl>
-   *
-   * @post post
-   * @var array
-   */
-  public $a_time = [];
-
-  /**
-   * The date of visit, without a time component in MySQL format. Date is based on the timezone of the location.
-   *
-   * @post post
-   * @var string
-   */
-  public $dt_date;
-
-  /**
-   * Determines whether payment is required for the visit.
-   *
-   * `true` if payment is needed for the visit.
-   * `false` if visit should be not pay.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_pay;
-
-  /**
-   * The business key.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The location key.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_location;
-
-  /**
-   * The key of the user making the gym visit.
-   *
-   * @post get
-   * @var string
-   */
-  public $uid;
-
-  /**
-   * Url to the business catalog with items that can be used to pay for the visit.
-   *
-   * @post result
-   * @var string
-   */
-  public $url_catalog;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Gym\Visit;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * An endpoint for adding a gym visit.
+ */
+class VisitAddModel extends WlModelAbstract
+{
+  /**
+   * The time of the visit, in the location's timezone. An array with the following fields:
+   * <dl>
+   *   <dt>int <var>i_hour</var></dt>
+   *   <dd>The hour component.</dd>
+   *   <dt>int <var>i_minute</var></dt>
+   *   <dd>The minute component.</dd>
+   *   <dt>bool <var>is_am</var></dt>
+   *   <dd>If `true` the visit is in the AM. If `false` it is in the PM.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var array
+   */
+  public $a_time = [];
+
+  /**
+   * The date of visit, without a time component in MySQL format. Date is based on the timezone of the location.
+   *
+   * @post post
+   * @var string
+   */
+  public $dt_date;
+
+  /**
+   * Determines whether payment is required for the visit.
+   *
+   * `true` if payment is needed for the visit.
+   * `false` if visit should be not pay.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_pay;
+
+  /**
+   * The business key.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The location key.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_location;
+
+  /**
+   * The key of the user making the gym visit.
+   *
+   * @post get
+   * @var string
+   */
+  public $uid;
+
+  /**
+   * Url to the business catalog with items that can be used to pay for the visit.
+   *
+   * @post result
+   * @var string
+   */
+  public $url_catalog;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Holiday/BulkBusinessHolidayModel.php b/WellnessLiving/Wl/Holiday/BulkBusinessHolidayModel.php
index aebd9515..4ea672fe 100644
--- a/WellnessLiving/Wl/Holiday/BulkBusinessHolidayModel.php
+++ b/WellnessLiving/Wl/Holiday/BulkBusinessHolidayModel.php
@@ -1,61 +1,61 @@
-<?php
-
-namespace WellnessLiving\Wl\Holiday;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * An endpoint displaying information about all location/business holidays for a given business.
- */
-class BulkBusinessHolidayModel extends WlModelAbstract
-{
-  /**
-   * An array consisting of the business's closed day data for all locations by holiday keys {@link HolidayModel::$dl_work}.
-   *
-   * List of holidays. Values are arrays of holidays as follows:
-   * <dl>
-   *   <dt>array <var>a_class</var></dt>
-   *   <dd>A list of affected classes. Keys are class keys.</dd>
-   *   <dt>array <var>a_class_only</var></dt>
-   *   <dd>A list of affected classes. Keys are class keys.</dd>
-   *   <dt>array <var>a_event_only</var></dt>
-   *   <dd>A list of affected events. Keys are event keys.</dd>
-   *   <dt>array <var>a_service</var></dt>
-   *   <dd>A list of affected services. Keys are service keys.</dd>
-   *   <dt>string <var>dt_end</var></dt>
-   *   <dd>The end date of the holiday.</dd>
-   *   <dt>string <var>dt_start</var></dt>
-   *   <dd>The start date of the holiday.</dd>
-   *   <dt>int <var>is_class_all</var></dt>
-   *   <dd>'1' if all classes are selected to cancel, '0' if otherwise.</dd>
-   *   <dt>int <var>is_event_all</var></dt>
-   *   <dd>'1' if all events are selected to cancel, '0' if otherwise.</dd>
-   *   <dt>int <var>is_service_all</var></dt>
-   *   <dd>'1' if all services are selected to cancel, '0' if otherwise.</dd>
-   *   <dt>int <var>k_business</var></dt>
-   *   <dd>The business key.</dd>
-   *   <dt>int <var>k_holiday</var></dt>
-   *   <dd>The holiday key.</dd>
-   *   <dt>int <var>k_location</var></dt>
-   *   <dd>The location key.</dd>
-   *   <dt>int <var>k_market</var></dt>
-   *   <dd>The market key.</dd>
-   *   <dt>string <var>s_title</var></dt>
-   *   <dd>The name of the holiday.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_business_holidays;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Holiday;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * An endpoint displaying information about all location/business holidays for a given business.
+ */
+class BulkBusinessHolidayModel extends WlModelAbstract
+{
+  /**
+   * An array consisting of the business's closed day data for all locations by holiday keys {@link HolidayModel::$dl_work}.
+   *
+   * List of holidays. Values are arrays of holidays as follows:
+   * <dl>
+   *   <dt>array <var>a_class</var></dt>
+   *   <dd>A list of affected classes. Keys are class keys.</dd>
+   *   <dt>array <var>a_class_only</var></dt>
+   *   <dd>A list of affected classes. Keys are class keys.</dd>
+   *   <dt>array <var>a_event_only</var></dt>
+   *   <dd>A list of affected events. Keys are event keys.</dd>
+   *   <dt>array <var>a_service</var></dt>
+   *   <dd>A list of affected services. Keys are service keys.</dd>
+   *   <dt>string <var>dt_end</var></dt>
+   *   <dd>The end date of the holiday.</dd>
+   *   <dt>string <var>dt_start</var></dt>
+   *   <dd>The start date of the holiday.</dd>
+   *   <dt>int <var>is_class_all</var></dt>
+   *   <dd>'1' if all classes are selected to cancel, '0' if otherwise.</dd>
+   *   <dt>int <var>is_event_all</var></dt>
+   *   <dd>'1' if all events are selected to cancel, '0' if otherwise.</dd>
+   *   <dt>int <var>is_service_all</var></dt>
+   *   <dd>'1' if all services are selected to cancel, '0' if otherwise.</dd>
+   *   <dt>int <var>k_business</var></dt>
+   *   <dd>The business key.</dd>
+   *   <dt>int <var>k_holiday</var></dt>
+   *   <dd>The holiday key.</dd>
+   *   <dt>int <var>k_location</var></dt>
+   *   <dd>The location key.</dd>
+   *   <dt>int <var>k_market</var></dt>
+   *   <dd>The market key.</dd>
+   *   <dt>string <var>s_title</var></dt>
+   *   <dd>The name of the holiday.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_business_holidays;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Holiday/HolidayModel.php b/WellnessLiving/Wl/Holiday/HolidayModel.php
index ec1a6da8..e61796b5 100644
--- a/WellnessLiving/Wl/Holiday/HolidayModel.php
+++ b/WellnessLiving/Wl/Holiday/HolidayModel.php
@@ -1,54 +1,54 @@
-<?php
-
-namespace WellnessLiving\Wl\Holiday;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * An endpoint displaying information about locations' business holidays.
- */
-class HolidayModel extends WlModelAbstract
-{
-  /**
-   * A list of the location's closed day titles by location keys on the date {@link HolidayModel::$dl_work}.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_location_holiday;
-
-  /**
-   * The date working hours are required for.
-   * Set in the business's timezone.
-   *
-   * @get get
-   * @var string
-   */
-  public $dl_work = '';
-
-  /**
-   * <tt>true</tt> if the business has a closed day on the date {@link HolidayModel::$dl_work}, <tt>false</tt> if otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_business_holiday;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The message used for the business's closed day on the date {@link HolidayModel::$dl_work}.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_business_title = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Holiday;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * An endpoint displaying information about locations' business holidays.
+ */
+class HolidayModel extends WlModelAbstract
+{
+  /**
+   * A list of the location's closed day titles by location keys on the date {@link HolidayModel::$dl_work}.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_location_holiday;
+
+  /**
+   * The date working hours are required for.
+   * Set in the business's timezone.
+   *
+   * @get get
+   * @var string
+   */
+  public $dl_work = '';
+
+  /**
+   * <tt>true</tt> if the business has a closed day on the date {@link HolidayModel::$dl_work}, <tt>false</tt> if otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_business_holiday;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The message used for the business's closed day on the date {@link HolidayModel::$dl_work}.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_business_title = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Insurance/Catalog/ProgramListModel.php b/WellnessLiving/Wl/Insurance/Catalog/ProgramListModel.php
index c0710146..c74dfd4a 100644
--- a/WellnessLiving/Wl/Insurance/Catalog/ProgramListModel.php
+++ b/WellnessLiving/Wl/Insurance/Catalog/ProgramListModel.php
@@ -1,53 +1,53 @@
-<?php
-
-namespace WellnessLiving\Wl\Insurance\Catalog;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves a list of programs' information.
- */
-class ProgramListModel extends WlModelAbstract
-{
-  /**
-   * A List of active programs.
-   * Every element has next keys:
-   *
-   * <dl>
-   *   <dt>string <var>k_wellness_program</var></dt>
-   *   <dd>The insurance key.</dd>
-   *   <dt>string <var>m_price</var></dt>
-   *   <dd>The Purchase Option price.</dd>
-   *   <dt>string <var>text_insurance_organization</var></dt>
-   *   <dd>The insurance organization name.</dd>
-   *   <dt>string <var>text_partner</var></dt>
-   *   <dd>The insurance partner name.</dd>
-   *   <dt>string <var>text_program</var></dt>
-   *   <dd>The insurance name.</dd>
-   *   <dt>string <var>url_insurance_detail</var></dt>
-   *   <dd>The insurance organization URL.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_wellness_program;
-
-  /**
-   * The key of the franchisee business.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The key of the promotion.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_promotion = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Insurance\Catalog;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves a list of programs' information.
+ */
+class ProgramListModel extends WlModelAbstract
+{
+  /**
+   * A List of active programs.
+   * Every element has next keys:
+   *
+   * <dl>
+   *   <dt>string <var>k_wellness_program</var></dt>
+   *   <dd>The insurance key.</dd>
+   *   <dt>string <var>m_price</var></dt>
+   *   <dd>The Purchase Option price.</dd>
+   *   <dt>string <var>text_insurance_organization</var></dt>
+   *   <dd>The insurance organization name.</dd>
+   *   <dt>string <var>text_partner</var></dt>
+   *   <dd>The insurance partner name.</dd>
+   *   <dt>string <var>text_program</var></dt>
+   *   <dd>The insurance name.</dd>
+   *   <dt>string <var>url_insurance_detail</var></dt>
+   *   <dd>The insurance organization URL.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_wellness_program;
+
+  /**
+   * The key of the franchisee business.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The key of the promotion.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_promotion = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Insurance/Enrollment/Field/EnrollmentFieldListModel.php b/WellnessLiving/Wl/Insurance/Enrollment/Field/EnrollmentFieldListModel.php
index 63b9d77c..5637a18e 100644
--- a/WellnessLiving/Wl/Insurance/Enrollment/Field/EnrollmentFieldListModel.php
+++ b/WellnessLiving/Wl/Insurance/Enrollment/Field/EnrollmentFieldListModel.php
@@ -1,117 +1,117 @@
-<?php
-
-namespace WellnessLiving\Wl\Insurance\Enrollment\Field;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves and validates a list of insurance partner fields.
- *
- * Use the GET method to load a list of required fields.
- *
- * Use the POST method to validate the fields before sending them to the payment API.
- */
-class EnrollmentFieldListModel extends WlModelAbstract
-{
-  /**
-   * Reimbursement account information.
-   *
-   * Keys - field name.
-   * Values - value entered by user.
-   *
-   * @post post
-   * @put post
-   * @var array
-   */
-  public $a_account = [];
-
-  /**
-   * List of fields that the user has filled in for enrollment.
-   *
-   * Keys refer specifically to field keys.
-   * Values refer specifically to values entered by the user.
-   *
-   * @post post
-   * @put post
-   * @var array
-   */
-  public $a_field = [];
-
-  /**
-   * The partner field list.
-   * <dl>
-   *  <dt>array <var>a_account</var></dt>
-   *  <dd>
-   *    The list of reimbursement account fields.
-   *    If the program doesn't require reimbursement, this list will be empty.
-   *    The description of the list of fields is similar to the <var>a_field</var>.
-   *  </dd>
-   *  <dt>array <var>a_field</var></dt>
-   *  <dd>
-   *    The partner field info.
-   *    <dl>
-   *      <dt>array <var>a_config</var></dt>
-   *      <dd>
-   *        Additional information about the field.
-   *        <dl>
-   *          <dt>array <var>a_option</var></dt>
-   *          <dd>A set of options for the dropdown list. The key is the title and the value is the value of the list item.</dd>
-   *          <dt>string <var>text_type</var></dt>
-   *          <dd>The type of text field.</dd>
-   *        </dl>
-   *      </dd>
-   *
-   *      <dt>int <var>i_length</var></dt>
-   *      <dd>The length of the field.</dd>
-   *
-   *      <dt>bool <var>is_disable</var></dt>
-   *      <dd>Determines whether this field is enabled.</dd>
-   *
-   *      <dt>bool <var>is_required</var></dt>
-   *      <dd>Determines whether this field is required.</dd>
-   *
-   *      <dt>string <var>k_field</var></dt>
-   *      <dd>The field key.</dd>
-   *
-   *      <dt>string <var>s_regular</var></dt>
-   *      <dd>The regular expression validation for the field.</dd>
-   *
-   *      <dt>string <var>text_display_name</var></dt>
-   *      <dd>The label text for the field.</dd>
-   *
-   *      <dt>string <var>text_error_message</var></dt>
-   *      <dd>The error message if the value in field isn't valid.</dd>
-   *
-   *      <dt>string <var>text_field_name</var></dt>
-   *      <dd>The name of the field.</dd>
-   *    </dl>
-   *  </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_field_list;
-
-  /**
-   * The key of the business in which the enrollment is performed.
-   *
-   * @get get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * "Wellness Program" key.
-   *
-   * @get get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $k_wellness_program = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Insurance\Enrollment\Field;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves and validates a list of insurance partner fields.
+ *
+ * Use the GET method to load a list of required fields.
+ *
+ * Use the POST method to validate the fields before sending them to the payment API.
+ */
+class EnrollmentFieldListModel extends WlModelAbstract
+{
+  /**
+   * Reimbursement account information.
+   *
+   * Keys - field name.
+   * Values - value entered by user.
+   *
+   * @post post
+   * @put post
+   * @var array
+   */
+  public $a_account = [];
+
+  /**
+   * List of fields that the user has filled in for enrollment.
+   *
+   * Keys refer specifically to field keys.
+   * Values refer specifically to values entered by the user.
+   *
+   * @post post
+   * @put post
+   * @var array
+   */
+  public $a_field = [];
+
+  /**
+   * The partner field list.
+   * <dl>
+   *  <dt>array <var>a_account</var></dt>
+   *  <dd>
+   *    The list of reimbursement account fields.
+   *    If the program doesn't require reimbursement, this list will be empty.
+   *    The description of the list of fields is similar to the <var>a_field</var>.
+   *  </dd>
+   *  <dt>array <var>a_field</var></dt>
+   *  <dd>
+   *    The partner field info.
+   *    <dl>
+   *      <dt>array <var>a_config</var></dt>
+   *      <dd>
+   *        Additional information about the field.
+   *        <dl>
+   *          <dt>array <var>a_option</var></dt>
+   *          <dd>A set of options for the dropdown list. The key is the title and the value is the value of the list item.</dd>
+   *          <dt>string <var>text_type</var></dt>
+   *          <dd>The type of text field.</dd>
+   *        </dl>
+   *      </dd>
+   *
+   *      <dt>int <var>i_length</var></dt>
+   *      <dd>The length of the field.</dd>
+   *
+   *      <dt>bool <var>is_disable</var></dt>
+   *      <dd>Determines whether this field is enabled.</dd>
+   *
+   *      <dt>bool <var>is_required</var></dt>
+   *      <dd>Determines whether this field is required.</dd>
+   *
+   *      <dt>string <var>k_field</var></dt>
+   *      <dd>The field key.</dd>
+   *
+   *      <dt>string <var>s_regular</var></dt>
+   *      <dd>The regular expression validation for the field.</dd>
+   *
+   *      <dt>string <var>text_display_name</var></dt>
+   *      <dd>The label text for the field.</dd>
+   *
+   *      <dt>string <var>text_error_message</var></dt>
+   *      <dd>The error message if the value in field isn't valid.</dd>
+   *
+   *      <dt>string <var>text_field_name</var></dt>
+   *      <dd>The name of the field.</dd>
+   *    </dl>
+   *  </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_field_list;
+
+  /**
+   * The key of the business in which the enrollment is performed.
+   *
+   * @get get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * "Wellness Program" key.
+   *
+   * @get get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $k_wellness_program = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php b/WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php
index 8b66ad30..9a98ae14 100644
--- a/WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php
+++ b/WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php
@@ -1,21 +1,21 @@
-<?php
-
-namespace WellnessLiving\Wl\Integration\Autymate;
-
-/**
- * List of modes used to access Autymate.
- */
-class AutymateAccessModeSid
-{
-  /**
-   * Access Autymate to create an initial enrollment.
-   */
-  const ENROLL = 1;
-
-  /**
-   * Access Autymate to view the dashboard.
-   */
-  const VIEW = 2;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Integration\Autymate;
+
+/**
+ * List of modes used to access Autymate.
+ */
+class AutymateAccessModeSid
+{
+  /**
+   * Access Autymate to create an initial enrollment.
+   */
+  const ENROLL = 1;
+
+  /**
+   * Access Autymate to view the dashboard.
+   */
+  const VIEW = 2;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php b/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php
index 8ecefc19..36494170 100644
--- a/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php
+++ b/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php
@@ -1,57 +1,57 @@
-<?php
-
-namespace WellnessLiving\Wl\Integration\Autymate;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Checks or changes the status of Autymate enrollments.
- */
-class AutymateActivateModel extends WlModelAbstract
-{
-  /**
-   * The mode of the request.
-   *
-   * One of {@link AutymateAccessModeSid} constants.
-   *
-   * @get get
-   * @var int
-   */
-  public $id_mode = 1;
-
-  /**
-   * The new status of the enrollment. If `0`, the current status is returned.
-   *
-   * One of {@link AutymateStatusSid} constants.
-   *
-   * @get get,result
-   * @var int
-   */
-  public $id_status = 0;
-
-  /**
-   * The key of the business.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The randomly generated 32 character string used to authenticate Autymate requests for the business.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_guid = '';
-
-  /**
-   * The user key.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Integration\Autymate;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Checks or changes the status of Autymate enrollments.
+ */
+class AutymateActivateModel extends WlModelAbstract
+{
+  /**
+   * The mode of the request.
+   *
+   * One of {@link AutymateAccessModeSid} constants.
+   *
+   * @get get
+   * @var int
+   */
+  public $id_mode = 1;
+
+  /**
+   * The new status of the enrollment. If `0`, the current status is returned.
+   *
+   * One of {@link AutymateStatusSid} constants.
+   *
+   * @get get,result
+   * @var int
+   */
+  public $id_status = 0;
+
+  /**
+   * The key of the business.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The randomly generated 32 character string used to authenticate Autymate requests for the business.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_guid = '';
+
+  /**
+   * The user key.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php b/WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php
index 6cf701aa..f200aea4 100644
--- a/WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php
+++ b/WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php
@@ -1,21 +1,21 @@
-<?php
-
-namespace WellnessLiving\Wl\Integration\Autymate;
-
-/**
- * List of statuses of an Autymate enrollment notification.
- */
-class AutymateStatusSid
-{
-  /**
-   * Autymation enrollment is active.
-   */
-  const ACTIVE = 1;
-
-  /**
-   * Autymation enrollment is no longer active.
-   */
-  const INACTIVE = 2;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Integration\Autymate;
+
+/**
+ * List of statuses of an Autymate enrollment notification.
+ */
+class AutymateStatusSid
+{
+  /**
+   * Autymation enrollment is active.
+   */
+  const ACTIVE = 1;
+
+  /**
+   * Autymation enrollment is no longer active.
+   */
+  const INACTIVE = 2;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Integration/Autymate/ReportModel.php b/WellnessLiving/Wl/Integration/Autymate/ReportModel.php
index 968c621b..ebfa7798 100644
--- a/WellnessLiving/Wl/Integration/Autymate/ReportModel.php
+++ b/WellnessLiving/Wl/Integration/Autymate/ReportModel.php
@@ -1,167 +1,167 @@
-<?php
-
-namespace WellnessLiving\Wl\Integration\Autymate;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Report\Generator\ReportGeneratorStatusSid;
-use WellnessLiving\Wl\WlPayMethodSid;
-
-/**
- * Retrieves all daily transactions for a business using the All Transactions report endpoint.
- *
- * This endpoint is a streamlined interface and adds additional columns to the report for Autymate.
- * Autymate will have one user to access all businesses, this user will require the wl.integration.autymate.report privilege.
- */
-class ReportModel extends WlModelAbstract
-{
-  /**
-   * The list of fields in this report.
-   *
-   * This array is effectively a title row for table that is returned in {@link ReportModel::$a_row}.
-   *
-   * @get result
-   * @var string[]
-   */
-  public $a_field = [];
-
-  /**
-   * List of payment methods to filter out in the report.
-   * Each element is one of the {@link WlPayMethodSid} constants.
-   *
-   * @get get
-   * @var int[]
-   */
-  public $a_pay_method_remove = [
-    7,
-  ];
-
-  /**
-   * The report data.
-   *
-   * This is an indexed array in which one row is an indexed array also.
-   *
-   * Indexes of the columns correspond to columns in {@link ReportModel::$a_field}.
-   *
-   * @get result
-   * @var string[][]
-   */
-  public $a_row = [];
-
-  /**
-   * The warning list of the report, if applicable.
-   *
-   * @get result
-   * @var string[]
-   */
-  public $a_warning = [];
-
-  /**
-   * The date in local time to retrieve transactions for.
-   *
-   * @get get
-   * @var string
-   */
-  public $dl_date = '';
-
-  /**
-   * The date and time when this report has completed generation.
-   *
-   * `null` if generation of this report isn't completed.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $dtu_complete;
-
-  /**
-   * The date and time when this report was put in the generation queue.
-   *
-   * Effectively, this is the time when a user clicked to view this report or the report for this day was first called.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $dtu_queue;
-
-  /**
-   * The date and time when generation of this report was started.
-   *
-   * `null` if generation of this report hasn't started.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $dtu_start;
-
-  /**
-   * The page of the report, starting from 0.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_page = 0;
-
-  /**
-   * The status of the report.
-   *
-   * One of the {@link ReportGeneratorStatusSid} constants.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_report_status = 0;
-
-  /**
-   * If <tt>true</tt> then there are more report rows to get. Otherwise, <tt>false</tt> if all rows have been sent.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_more = false;
-
-  /**
-   * Determines whether this report should be refreshed.
-   *
-   * `true` to refresh this report if it's already generated.
-   * Refreshing of the report may not be queried while report is being generated.
-   *
-   * `false` to only return contents of the report.
-   * If report isn't yet generated, it automatically starts the generation in the background.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_refresh = false;
-
-  /**
-   * Determines whether this report is complete. If this report is accessed on the current day, or is returning
-   * a result that was cached on the current day it could be incomplete as not all the transactions for the day
-   * are present.
-   *
-   * If `true` then this report will be complete.
-   *
-   * If `false` then this report could be incomplete.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_report_complete = false;
-
-  /**
-   * The key of the business for which the report must be generated.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The randomly generated 32 character string used to authenticate requests.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_guid = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Integration\Autymate;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Report\Generator\ReportGeneratorStatusSid;
+use WellnessLiving\Wl\WlPayMethodSid;
+
+/**
+ * Retrieves all daily transactions for a business using the All Transactions report endpoint.
+ *
+ * This endpoint is a streamlined interface and adds additional columns to the report for Autymate.
+ * Autymate will have one user to access all businesses, this user will require the wl.integration.autymate.report privilege.
+ */
+class ReportModel extends WlModelAbstract
+{
+  /**
+   * The list of fields in this report.
+   *
+   * This array is effectively a title row for table that is returned in {@link ReportModel::$a_row}.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_field = [];
+
+  /**
+   * List of payment methods to filter out in the report.
+   * Each element is one of the {@link WlPayMethodSid} constants.
+   *
+   * @get get
+   * @var int[]
+   */
+  public $a_pay_method_remove = [
+    7,
+  ];
+
+  /**
+   * The report data.
+   *
+   * This is an indexed array in which one row is an indexed array also.
+   *
+   * Indexes of the columns correspond to columns in {@link ReportModel::$a_field}.
+   *
+   * @get result
+   * @var string[][]
+   */
+  public $a_row = [];
+
+  /**
+   * The warning list of the report, if applicable.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_warning = [];
+
+  /**
+   * The date in local time to retrieve transactions for.
+   *
+   * @get get
+   * @var string
+   */
+  public $dl_date = '';
+
+  /**
+   * The date and time when this report has completed generation.
+   *
+   * `null` if generation of this report isn't completed.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $dtu_complete;
+
+  /**
+   * The date and time when this report was put in the generation queue.
+   *
+   * Effectively, this is the time when a user clicked to view this report or the report for this day was first called.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $dtu_queue;
+
+  /**
+   * The date and time when generation of this report was started.
+   *
+   * `null` if generation of this report hasn't started.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $dtu_start;
+
+  /**
+   * The page of the report, starting from 0.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_page = 0;
+
+  /**
+   * The status of the report.
+   *
+   * One of the {@link ReportGeneratorStatusSid} constants.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_report_status = 0;
+
+  /**
+   * If <tt>true</tt> then there are more report rows to get. Otherwise, <tt>false</tt> if all rows have been sent.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_more = false;
+
+  /**
+   * Determines whether this report should be refreshed.
+   *
+   * `true` to refresh this report if it's already generated.
+   * Refreshing of the report may not be queried while report is being generated.
+   *
+   * `false` to only return contents of the report.
+   * If report isn't yet generated, it automatically starts the generation in the background.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_refresh = false;
+
+  /**
+   * Determines whether this report is complete. If this report is accessed on the current day, or is returning
+   * a result that was cached on the current day it could be incomplete as not all the transactions for the day
+   * are present.
+   *
+   * If `true` then this report will be complete.
+   *
+   * If `false` then this report could be incomplete.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_report_complete = false;
+
+  /**
+   * The key of the business for which the report must be generated.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The randomly generated 32 character string used to authenticate requests.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_guid = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Integration/Curves/CurvesFranchiseLocationModel.php b/WellnessLiving/Wl/Integration/Curves/CurvesFranchiseLocationModel.php
index 88ef4ad3..9100a0a5 100644
--- a/WellnessLiving/Wl/Integration/Curves/CurvesFranchiseLocationModel.php
+++ b/WellnessLiving/Wl/Integration/Curves/CurvesFranchiseLocationModel.php
@@ -1,214 +1,214 @@
-<?php
-
-namespace WellnessLiving\Wl\Integration\Curves;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Report\WlReportSid;
-
-/**
- * Gets information for enterprise locations.
- */
-class CurvesFranchiseLocationModel extends WlModelAbstract
-{
-  /**
-   * The city list. Each element has next structure:
-   * <dl>
-   *   <dt>
-   *     string <var>k_city</var>
-   *   </dt>
-   *   <dd>
-   *     City key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_country</var>
-   *   </dt>
-   *   <dd>
-   *     Country key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_state</var>
-   *   </dt>
-   *   <dd>
-   *     State key.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     City title.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_city_list = null;
-
-  /**
-   * The country list. Each element has next structure:
-   * <dl>
-   *   <dt>
-   *     string <var>k_country</var>
-   *   </dt>
-   *   <dd>
-   *     Country key.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     Country title.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_country_list = null;
-
-  /**
-   * The location list. Each element has the next structure:
-   * <dl>
-   *   <dt>
-   *     string <var>k_city</var>
-   *   </dt>
-   *   <dd>
-   *     City key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_country</var>
-   *   </dt>
-   *   <dd>
-   *     Country key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_location</var>
-   *   </dt>
-   *   <dd>
-   *     Location key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_region</var>
-   *   </dt>
-   *   <dd>
-   *     Franchise region key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_state</var>
-   *   </dt>
-   *   <dd>
-   *     State key.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     Location title.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_location_list = null;
-
-  /**
-   * The region list. Each element has the next structure:
-   * <dl>
-   *   <dt>
-   *     string <var>k_region</var>
-   *   </dt>
-   *   <dd>
-   *     Franchise region key.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     Franchise region title.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_region_list = null;
-
-  /**
-   * The state list. Each element has the next structure:
-   * <dl>
-   *   <dt>
-   *     string <var>k_country</var>
-   *   </dt>
-   *   <dd>
-   *     Country key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_state</var>
-   *   </dt>
-   *   <dd>
-   *     State key.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     State title.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_state_list = null;
-
-  /**
-   * Determines which locations should be returned.
-   *
-   * @get get
-   * @var int
-   */
-  public $id_business_franchise_location = null;
-
-  /**
-   * Determines the report for which data should be returned.
-   *
-   * One of the {@link WlReportSid} constants.
-   *
-   * If `null`, the report isn't set.
-   *
-   * @get get
-   * @var int
-   */
-  public $id_report = null;
-
-  /**
-   * Determines whether to include churned/removed locations.
-   *
-   * If `true`, all locations are listed (regardless of their status).
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_include_churn = false;
-
-  /**
-   * Determines whether to include locations marked to not be displayed on franchisor website.
-   *
-   * If `true`, all locations are listed (regardless of this setting).
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_include_non_api = false;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = null;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Integration\Curves;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Report\WlReportSid;
+
+/**
+ * Gets information for enterprise locations.
+ */
+class CurvesFranchiseLocationModel extends WlModelAbstract
+{
+  /**
+   * The city list. Each element has next structure:
+   * <dl>
+   *   <dt>
+   *     string <var>k_city</var>
+   *   </dt>
+   *   <dd>
+   *     City key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_country</var>
+   *   </dt>
+   *   <dd>
+   *     Country key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_state</var>
+   *   </dt>
+   *   <dd>
+   *     State key.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     City title.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_city_list = null;
+
+  /**
+   * The country list. Each element has next structure:
+   * <dl>
+   *   <dt>
+   *     string <var>k_country</var>
+   *   </dt>
+   *   <dd>
+   *     Country key.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     Country title.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_country_list = null;
+
+  /**
+   * The location list. Each element has the next structure:
+   * <dl>
+   *   <dt>
+   *     string <var>k_city</var>
+   *   </dt>
+   *   <dd>
+   *     City key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_country</var>
+   *   </dt>
+   *   <dd>
+   *     Country key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_location</var>
+   *   </dt>
+   *   <dd>
+   *     Location key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_region</var>
+   *   </dt>
+   *   <dd>
+   *     Franchise region key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_state</var>
+   *   </dt>
+   *   <dd>
+   *     State key.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     Location title.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_location_list = null;
+
+  /**
+   * The region list. Each element has the next structure:
+   * <dl>
+   *   <dt>
+   *     string <var>k_region</var>
+   *   </dt>
+   *   <dd>
+   *     Franchise region key.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     Franchise region title.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_region_list = null;
+
+  /**
+   * The state list. Each element has the next structure:
+   * <dl>
+   *   <dt>
+   *     string <var>k_country</var>
+   *   </dt>
+   *   <dd>
+   *     Country key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_state</var>
+   *   </dt>
+   *   <dd>
+   *     State key.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     State title.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_state_list = null;
+
+  /**
+   * Determines which locations should be returned.
+   *
+   * @get get
+   * @var int
+   */
+  public $id_business_franchise_location = null;
+
+  /**
+   * Determines the report for which data should be returned.
+   *
+   * One of the {@link WlReportSid} constants.
+   *
+   * If `null`, the report isn't set.
+   *
+   * @get get
+   * @var int
+   */
+  public $id_report = null;
+
+  /**
+   * Determines whether to include churned/removed locations.
+   *
+   * If `true`, all locations are listed (regardless of their status).
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_include_churn = false;
+
+  /**
+   * Determines whether to include locations marked to not be displayed on franchisor website.
+   *
+   * If `true`, all locations are listed (regardless of this setting).
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_include_non_api = false;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = null;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Integration/DragonFly/AccessModel.php b/WellnessLiving/Wl/Integration/DragonFly/AccessModel.php
index cbbfbb82..545ef96d 100644
--- a/WellnessLiving/Wl/Integration/DragonFly/AccessModel.php
+++ b/WellnessLiving/Wl/Integration/DragonFly/AccessModel.php
@@ -1,50 +1,50 @@
-<?php
-
-namespace WellnessLiving\Wl\Integration\DragonFly;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Checks if a user can access a physical location.
- */
-class AccessModel extends WlModelAbstract
-{
-  /**
-   * Whether the specified user can access the location.
-   * `true` if the specified member can access the location.
-   * `false` if they can not.
-   *
-   * @get result
-   * @var bool
-   */
-  public $can_access = false;
-
-  /**
-   * The location key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location = '';
-
-  /**
-   * The member ID.
-   * Member ID is intended to work with barcode scanners.
-   * If this is specified the user key does not need to be set.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_member = '';
-
-  /**
-   * The user key.
-   * This should be specified if the member ID is not set or not known.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Integration\DragonFly;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Checks if a user can access a physical location.
+ */
+class AccessModel extends WlModelAbstract
+{
+  /**
+   * Whether the specified user can access the location.
+   * `true` if the specified member can access the location.
+   * `false` if they can not.
+   *
+   * @get result
+   * @var bool
+   */
+  public $can_access = false;
+
+  /**
+   * The location key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '';
+
+  /**
+   * The member ID.
+   * Member ID is intended to work with barcode scanners.
+   * If this is specified the user key does not need to be set.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_member = '';
+
+  /**
+   * The user key.
+   * This should be specified if the member ID is not set or not known.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Integration/Saml/SamlUserDeactivationModel.php b/WellnessLiving/Wl/Integration/Saml/SamlUserDeactivationModel.php
index a41d7899..8a608c80 100644
--- a/WellnessLiving/Wl/Integration/Saml/SamlUserDeactivationModel.php
+++ b/WellnessLiving/Wl/Integration/Saml/SamlUserDeactivationModel.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Wl\Integration\Saml;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves user statuses in the business.
- */
-class SamlUserDeactivationModel extends WlModelAbstract
-{
-  /**
-   * A list of SAML identifiers.
-   *
-   * @post post
-   * @var string[]
-   */
-  public $a_id;
-
-  /**
-   * The key of the SAML identifier.
-   *
-   * This value is `true` if an active user is found in the business, `false` if otherwise.
-   *
-   * @post result
-   * @var bool[]
-   */
-  public $a_result;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Integration\Saml;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves user statuses in the business.
+ */
+class SamlUserDeactivationModel extends WlModelAbstract
+{
+  /**
+   * A list of SAML identifiers.
+   *
+   * @post post
+   * @var string[]
+   */
+  public $a_id;
+
+  /**
+   * The key of the SAML identifier.
+   *
+   * This value is `true` if an active user is found in the business, `false` if otherwise.
+   *
+   * @post result
+   * @var bool[]
+   */
+  public $a_result;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Lead/LeadCaptcha.php b/WellnessLiving/Wl/Lead/LeadCaptcha.php
index 16b30699..4b506dd3 100644
--- a/WellnessLiving/Wl/Lead/LeadCaptcha.php
+++ b/WellnessLiving/Wl/Lead/LeadCaptcha.php
@@ -1,16 +1,16 @@
-<?php
-
-namespace WellnessLiving\Wl\Lead;
-
-/**
- * Captcha for "Lead Capture Widget".
- */
-class LeadCaptcha
-{
-  /**
-   * CID of this captcha.
-   */
-  const CID = 1072;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Lead;
+
+/**
+ * Captcha for "Lead Capture Widget".
+ */
+class LeadCaptcha
+{
+  /**
+   * CID of this captcha.
+   */
+  const CID = 1072;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Lead/LeadModel.php b/WellnessLiving/Wl/Lead/LeadModel.php
index e2272a5d..72ca5fd0 100644
--- a/WellnessLiving/Wl/Lead/LeadModel.php
+++ b/WellnessLiving/Wl/Lead/LeadModel.php
@@ -1,165 +1,165 @@
-<?php
-
-namespace WellnessLiving\Wl\Lead;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Field\WlFieldGeneralSid;
-use WellnessLiving\Wl\Field\WlFieldTypeSid;
-
-/**
- * Gets information from the Lead Capture widget and saves a new user’s information.
- *
- * A user can be added to a second business by adding them first as a lead. If your business uses Enterprise Cloud,
- * there may be a restriction where clients can only be members in one enterprise location (travellers in all
- * other enterprise locations).
- *
- * This endpoint using captcha check.
- *  To pass captcha need study the documentation by captcha API, there you will find that you need to send a captcha for a specific action.
- *  For this API an action is {@link LeadCaptcha::CID}.
- */
-class LeadModel extends WlModelAbstract
-{
-  /**
-   * A list of fields containing the lead information.
-   * The keys are the field keys and values are field values.
-   *
-   * If field key is `Address` field key, value may be an array or string.
-   * Can be a string if only address field is used. Will be an array if city and postal code are used,
-   * with the following keys:
-   *
-   * <dl>
-   * <dt>string <var>text_address</var></dt>
-   * <dd>Address.</dd>
-   * <dt>string <var>k_city</var></dt>
-   * <dd>City key.</dd>
-   * <dt>string <var>text_postal</var></dt>
-   * <dd>Postal code.</dd>
-   * </dl>
-   *
-   * @post post
-   * @var string[]
-   */
-  public $a_field_data = [];
-
-  /**
-   * A list of profile fields in the business. Every element has the following keys:
-   * <dl>
-   *   <dt>
-   *      array[] <var>a_item</var>
-   *   </dt>
-   *   <dd>
-   *     A list of possible options for an HTML select field. This value is only used if this field is an HTML select.
-   *     Every element has the following keys:
-   *     <dl>
-   *       <dt>string <var>s_id</var></dt>
-   *       <dd>The option ID.</dd>
-   *       <dt>string <var>text_title</var></dt>
-   *       <dd>The option title.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     int <var>id_field_general</var>
-   *   </dt>
-   *   <dd>
-   *     The type of the general field. This is one of the {@link WlFieldGeneralSid}.
-   *     This value is only set if the field is one of the general fields.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_field_type</var>
-   *   </dt>
-   *   <dd>
-   *     The field type. This is one of the {@link WlFieldTypeSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_require</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, then the field is mandatory. If `false`, then the field isn't mandatory.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_field</var>
-   *   </dt>
-   *   <dd>
-   *     The field key.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_field</var>
-   *   </dt>
-   *   <dd>
-   *     The field title.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_field_list;
-
-  /**
-   * The skin configuration:
-   * <dl>
-   *   <dt>array <var>a_style</var></dt><dd>The general style settings.</dd>
-   *   <dt>array <var>background</var></dt><dd>The background settings.</dd>
-   *   <dt>array <var>field-font</var></dt><dd>The font settings.</dd>
-   *   <dt>array <var>header-text</var></dt><dd>The header settings.</dd>
-   *   <dt>array <var>info-show</var></dt><dd>The information settings.</dd>
-   *   <dt>array <var>submit-background</var></dt><dd>The settings for the submit button background.</dd>
-   *   <dt>array <var>submit-font</var></dt><dd>The settings for the submit button font.</dd>
-   *   <dt>array <var>submit-text</var></dt><dd>The settings for the submit button text.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_skin;
-
-  /**
-   * The key of business to which the new user must be captured.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The key of the widget skin. If left empty, then the default skin is used.
-   * This will be the Lead Capture widget skin with "Use this widget for the Add Lead form" selected.
-   * If your business doesn't have a skin selected, this endpoint will default to the system-wide default,
-   * which may lack fields your business requires when adding a lead or a client.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_skin = '0';
-
-  /**
-   * The characters entered by the lead for the captcha test.
-   * This isn't necessary if the GET method returned an empty {@link LeadModel::$url_captcha}.
-   * This field isn't necessary if the GET method returned an empty {@link LeadModel::$url_captcha}.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_captcha = '';
-
-  /**
-   * The key of the new user.
-   *
-   * @post result
-   * @var string
-   */
-  public $uid;
-
-  /**
-   * The URL to load the image with a captcha test.
-   * This string is empty if it's not necessary to pass a captcha test.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_captcha;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Lead;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Field\WlFieldGeneralSid;
+use WellnessLiving\Wl\Field\WlFieldTypeSid;
+
+/**
+ * Gets information from the Lead Capture widget and saves a new user’s information.
+ *
+ * A user can be added to a second business by adding them first as a lead. If your business uses Enterprise Cloud,
+ * there may be a restriction where clients can only be members in one enterprise location (travellers in all
+ * other enterprise locations).
+ *
+ * This endpoint using captcha check.
+ *  To pass captcha need study the documentation by captcha API, there you will find that you need to send a captcha for a specific action.
+ *  For this API an action is {@link LeadCaptcha::CID}.
+ */
+class LeadModel extends WlModelAbstract
+{
+  /**
+   * A list of fields containing the lead information.
+   * The keys are the field keys and values are field values.
+   *
+   * If field key is `Address` field key, value may be an array or string.
+   * Can be a string if only address field is used. Will be an array if city and postal code are used,
+   * with the following keys:
+   *
+   * <dl>
+   * <dt>string <var>text_address</var></dt>
+   * <dd>Address.</dd>
+   * <dt>string <var>k_city</var></dt>
+   * <dd>City key.</dd>
+   * <dt>string <var>text_postal</var></dt>
+   * <dd>Postal code.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var string[]
+   */
+  public $a_field_data = [];
+
+  /**
+   * A list of profile fields in the business. Every element has the following keys:
+   * <dl>
+   *   <dt>
+   *      array[] <var>a_item</var>
+   *   </dt>
+   *   <dd>
+   *     A list of possible options for an HTML select field. This value is only used if this field is an HTML select.
+   *     Every element has the following keys:
+   *     <dl>
+   *       <dt>string <var>s_id</var></dt>
+   *       <dd>The option ID.</dd>
+   *       <dt>string <var>text_title</var></dt>
+   *       <dd>The option title.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     int <var>id_field_general</var>
+   *   </dt>
+   *   <dd>
+   *     The type of the general field. This is one of the {@link WlFieldGeneralSid}.
+   *     This value is only set if the field is one of the general fields.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_field_type</var>
+   *   </dt>
+   *   <dd>
+   *     The field type. This is one of the {@link WlFieldTypeSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_require</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, then the field is mandatory. If `false`, then the field isn't mandatory.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_field</var>
+   *   </dt>
+   *   <dd>
+   *     The field key.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_field</var>
+   *   </dt>
+   *   <dd>
+   *     The field title.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_field_list;
+
+  /**
+   * The skin configuration:
+   * <dl>
+   *   <dt>array <var>a_style</var></dt><dd>The general style settings.</dd>
+   *   <dt>array <var>background</var></dt><dd>The background settings.</dd>
+   *   <dt>array <var>field-font</var></dt><dd>The font settings.</dd>
+   *   <dt>array <var>header-text</var></dt><dd>The header settings.</dd>
+   *   <dt>array <var>info-show</var></dt><dd>The information settings.</dd>
+   *   <dt>array <var>submit-background</var></dt><dd>The settings for the submit button background.</dd>
+   *   <dt>array <var>submit-font</var></dt><dd>The settings for the submit button font.</dd>
+   *   <dt>array <var>submit-text</var></dt><dd>The settings for the submit button text.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_skin;
+
+  /**
+   * The key of business to which the new user must be captured.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The key of the widget skin. If left empty, then the default skin is used.
+   * This will be the Lead Capture widget skin with "Use this widget for the Add Lead form" selected.
+   * If your business doesn't have a skin selected, this endpoint will default to the system-wide default,
+   * which may lack fields your business requires when adding a lead or a client.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_skin = '0';
+
+  /**
+   * The characters entered by the lead for the captcha test.
+   * This isn't necessary if the GET method returned an empty {@link LeadModel::$url_captcha}.
+   * This field isn't necessary if the GET method returned an empty {@link LeadModel::$url_captcha}.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_captcha = '';
+
+  /**
+   * The key of the new user.
+   *
+   * @post result
+   * @var string
+   */
+  public $uid;
+
+  /**
+   * The URL to load the image with a captcha test.
+   * This string is empty if it's not necessary to pass a captcha test.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_captcha;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Location/Flag/FlagModel.php b/WellnessLiving/Wl/Location/Flag/FlagModel.php
index 50910904..927176b0 100644
--- a/WellnessLiving/Wl/Location/Flag/FlagModel.php
+++ b/WellnessLiving/Wl/Location/Flag/FlagModel.php
@@ -1,63 +1,63 @@
-<?php
-
-namespace WellnessLiving\Wl\Location\Flag;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves information if a user is flagged in a location.
- */
-class FlagModel extends WlModelAbstract
-{
-  /**
-   * Array with structure:<dl>
-   *   <dt>string <var>uid</var></dt>
-   *   <dd>Key is passport login ID.</dd>
-   *   <dt>bool <var>is_flag</var></dt>
-   *   <dd>Value: <tt>true</tt> if user is flagged; <tt>false</tt> otherwise.</dd>
-   * </dl>
-   * <tt>null</tt> until loaded or when <var>a_uid</var> was not set.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_flag;
-
-  /**
-   * User keys.
-   * <tt>null</tt> if not set.
-   *
-   * @get get
-   * @var string[]|null
-   */
-  public $a_uid;
-
-  /**
-   * <tt>true</tt> if the user is flagged, <tt>false</tt> if otherwise.
-   *
-   * <tt>null</tt> until loaded or when {@link FlagModel::$a_uid} was not set.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_flag;
-
-  /**
-   * The location key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location;
-
-  /**
-   * The user's key.
-   * <tt>null</tt> if not set.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $uid;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Location\Flag;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves information if a user is flagged in a location.
+ */
+class FlagModel extends WlModelAbstract
+{
+  /**
+   * Array with structure:<dl>
+   *   <dt>string <var>uid</var></dt>
+   *   <dd>Key is passport login ID.</dd>
+   *   <dt>bool <var>is_flag</var></dt>
+   *   <dd>Value: <tt>true</tt> if user is flagged; <tt>false</tt> otherwise.</dd>
+   * </dl>
+   * <tt>null</tt> until loaded or when <var>a_uid</var> was not set.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_flag;
+
+  /**
+   * User keys.
+   * <tt>null</tt> if not set.
+   *
+   * @get get
+   * @var string[]|null
+   */
+  public $a_uid;
+
+  /**
+   * <tt>true</tt> if the user is flagged, <tt>false</tt> if otherwise.
+   *
+   * <tt>null</tt> until loaded or when {@link FlagModel::$a_uid} was not set.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_flag;
+
+  /**
+   * The location key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location;
+
+  /**
+   * The user's key.
+   * <tt>null</tt> if not set.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $uid;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Location/ListBulkModel.php b/WellnessLiving/Wl/Location/ListBulkModel.php
index cc5858d6..67104517 100644
--- a/WellnessLiving/Wl/Location/ListBulkModel.php
+++ b/WellnessLiving/Wl/Location/ListBulkModel.php
@@ -1,124 +1,124 @@
-<?php
-
-namespace WellnessLiving\Wl\Location;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Location\View\ViewModel;
-use WellnessLiving\Wl\WlProjectSid;
-
-/**
- * Gets all locations for a list of businesses.
- *
- * This can be used to get all locations from all businesses. When using this endpoint, note that it will return
- * a list of all locations in the system, potentially using substantial system resources. Using this endpoint can
- * potentially result in larger API calls than average calls made for other endpoints.
- */
-class ListBulkModel extends WlModelAbstract
-{
-  /**
-   * Short-form information about locations.
-   *
-   * Keys refer to location primary keys. Values refer to sub-arrays with the next keys:
-   * <dl>
-   *   <dt>
-   *     float <var>f_latitude</var>
-   *   </dt>
-   *   <dd>
-   *     The latitude coordinate.
-   *   </dd>
-   *   <dt>
-   *     float <var>f_longitude</var>
-   *   </dt>
-   *   <dd>
-   *     The longitude coordinate.
-   *   </dd>
-   *   <dt>
-   *     float <var>f_rate</var>
-   *   </dt>
-   *   <dd>
-   *     The location rate.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_order</var>
-   *   </dt>
-   *   <dd>
-   *     The order number.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_business</var>
-   *   </dt>
-   *   <dd>
-   *     The business's primary key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_location</var>
-   *   </dt>
-   *   <dd>
-   *     The location's primary key.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_title</var>
-   *   </dt>
-   *   <dd>
-   *     The location title.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_address</var>
-   *   </dt>
-   *   <dd>
-   *     The full location address.
-   *   </dd>
-   *   <dt>
-   *     string [<var>url_logo</var>]
-   *   </dt>
-   *   <dd>
-   *     The location logo.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_location;
-
-  /**
-   * A list of models with full information about each location.
-   *
-   * Every element is an object of the {@link ViewModel}.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_location_full = [];
-
-  /**
-   * The ID of the directory if locations should be filtered by enabling directory integration.
-   *
-   * `0` if a directory filter isn't required.
-   *
-   * @get get
-   * @var int
-   * @see WlProjectSid
-   */
-  public $id_directory = 0;
-
-  /**
-   * A list of businesses. Business primary keys are serialized with JSON.
-   *
-   * Empty string if you need all locations in the system.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_business = '';
-
-  /**
-   * A list of locations. Location primary keys are serialized with JSON.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_location = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Location;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Location\View\ViewModel;
+use WellnessLiving\Wl\WlProjectSid;
+
+/**
+ * Gets all locations for a list of businesses.
+ *
+ * This can be used to get all locations from all businesses. When using this endpoint, note that it will return
+ * a list of all locations in the system, potentially using substantial system resources. Using this endpoint can
+ * potentially result in larger API calls than average calls made for other endpoints.
+ */
+class ListBulkModel extends WlModelAbstract
+{
+  /**
+   * Short-form information about locations.
+   *
+   * Keys refer to location primary keys. Values refer to sub-arrays with the next keys:
+   * <dl>
+   *   <dt>
+   *     float <var>f_latitude</var>
+   *   </dt>
+   *   <dd>
+   *     The latitude coordinate.
+   *   </dd>
+   *   <dt>
+   *     float <var>f_longitude</var>
+   *   </dt>
+   *   <dd>
+   *     The longitude coordinate.
+   *   </dd>
+   *   <dt>
+   *     float <var>f_rate</var>
+   *   </dt>
+   *   <dd>
+   *     The location rate.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_order</var>
+   *   </dt>
+   *   <dd>
+   *     The order number.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_business</var>
+   *   </dt>
+   *   <dd>
+   *     The business's primary key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_location</var>
+   *   </dt>
+   *   <dd>
+   *     The location's primary key.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_title</var>
+   *   </dt>
+   *   <dd>
+   *     The location title.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_address</var>
+   *   </dt>
+   *   <dd>
+   *     The full location address.
+   *   </dd>
+   *   <dt>
+   *     string [<var>url_logo</var>]
+   *   </dt>
+   *   <dd>
+   *     The location logo.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_location;
+
+  /**
+   * A list of models with full information about each location.
+   *
+   * Every element is an object of the {@link ViewModel}.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_location_full = [];
+
+  /**
+   * The ID of the directory if locations should be filtered by enabling directory integration.
+   *
+   * `0` if a directory filter isn't required.
+   *
+   * @get get
+   * @var int
+   * @see WlProjectSid
+   */
+  public $id_directory = 0;
+
+  /**
+   * A list of businesses. Business primary keys are serialized with JSON.
+   *
+   * Empty string if you need all locations in the system.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_business = '';
+
+  /**
+   * A list of locations. Location primary keys are serialized with JSON.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_location = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Location/LocationModel.php b/WellnessLiving/Wl/Location/LocationModel.php
index e7033f0e..ed17aa91 100644
--- a/WellnessLiving/Wl/Location/LocationModel.php
+++ b/WellnessLiving/Wl/Location/LocationModel.php
@@ -1,98 +1,98 @@
-<?php
-
-namespace WellnessLiving\Wl\Location;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Creates a new location in the business or edits a specified location.
- * Access to this endpoint is logged with specified permissions.
- * It can also be accessed by guests during the registration process for new businesses.
- *
- * Field <tt>k_business</tt> is required.
- * Other fields are optionally if the location should be edited. This means if a field is not specified it is not be changed.
- * If <tt>k_location</tt> is not specified that new location will be created. In this case <tt>k_city</tt>,
- * <tt>text_address</tt> and <tt>text_title</tt> are required.
- */
-class LocationModel extends WlModelAbstract
-{
-  /**
-   * The key of the business.
-   * This field is required.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The key of the city.
-   * This field is required for creating a new location.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $k_city;
-
-  /**
-   * The key of the location.
-   * This will be `null` if it's being used to create a new location.
-   *
-   * @post post,result
-   * @var string|null
-   */
-  public $k_location;
-
-  /**
-   * The key of the time zone.
-   * This field is optional.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $k_timezone;
-
-  /**
-   * The address of the location.
-   * This field is required for creating a new location.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_address;
-
-  /**
-   * The mail address.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_email;
-
-  /**
-   * The phone number.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_phone;
-
-  /**
-   * The postal code.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_postal;
-
-  /**
-   * The title of the location.
-   * This field is required for creating a new location.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_title;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Location;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Creates a new location in the business or edits a specified location.
+ * Access to this endpoint is logged with specified permissions.
+ * It can also be accessed by guests during the registration process for new businesses.
+ *
+ * Field <tt>k_business</tt> is required.
+ * Other fields are optionally if the location should be edited. This means if a field is not specified it is not be changed.
+ * If <tt>k_location</tt> is not specified that new location will be created. In this case <tt>k_city</tt>,
+ * <tt>text_address</tt> and <tt>text_title</tt> are required.
+ */
+class LocationModel extends WlModelAbstract
+{
+  /**
+   * The key of the business.
+   * This field is required.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The key of the city.
+   * This field is required for creating a new location.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_city;
+
+  /**
+   * The key of the location.
+   * This will be `null` if it's being used to create a new location.
+   *
+   * @post post,result
+   * @var string|null
+   */
+  public $k_location;
+
+  /**
+   * The key of the time zone.
+   * This field is optional.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_timezone;
+
+  /**
+   * The address of the location.
+   * This field is required for creating a new location.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_address;
+
+  /**
+   * The mail address.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_email;
+
+  /**
+   * The phone number.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_phone;
+
+  /**
+   * The postal code.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_postal;
+
+  /**
+   * The title of the location.
+   * This field is required for creating a new location.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_title;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Location/WorkTime/LocationWorkTimeModel.php b/WellnessLiving/Wl/Location/WorkTime/LocationWorkTimeModel.php
index 4ac21f0c..671b223f 100644
--- a/WellnessLiving/Wl/Location/WorkTime/LocationWorkTimeModel.php
+++ b/WellnessLiving/Wl/Location/WorkTime/LocationWorkTimeModel.php
@@ -1,49 +1,49 @@
-<?php
-
-namespace WellnessLiving\Wl\Location\WorkTime;
-
-use WellnessLiving\Core\a\ADateWeekSid;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Saves working hours for a specified location.
- *
- * Note that to run this endpoint, an authenticated user with specified permissions is required.
- */
-class LocationWorkTimeModel extends WlModelAbstract
-{
-  /**
-   * The list of the location's business hours. Each element has the next structure:<dl>
-   *   <dt>int <var>i_day</var></dt>
-   *   <dd>The day of the week, from Monday (1) to Sunday (7). One of the{@link ADateWeekSid} constants.</dd>
-   *   <dt>string <var>t_end</var></dt>
-   *   <dd>The end time of work, formatted as HH:MM.</dd>
-   *   <dt>string <var>t_start</var></dt>
-   *   <dd>The start time of work, formatted as HH:MM</dd>
-   * </dl>
-   *
-   * Note that the days of the week that aren't represented in this list will be saved as non-working days.
-   *
-   * @post post
-   * @var array[]
-   */
-  public $a_work_time = [];
-
-  /**
-   * The business key.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The location key.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_location;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Location\WorkTime;
+
+use WellnessLiving\Core\a\ADateWeekSid;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Saves working hours for a specified location.
+ *
+ * Note that to run this endpoint, an authenticated user with specified permissions is required.
+ */
+class LocationWorkTimeModel extends WlModelAbstract
+{
+  /**
+   * The list of the location's business hours. Each element has the next structure:<dl>
+   *   <dt>int <var>i_day</var></dt>
+   *   <dd>The day of the week, from Monday (1) to Sunday (7). One of the{@link ADateWeekSid} constants.</dd>
+   *   <dt>string <var>t_end</var></dt>
+   *   <dd>The end time of work, formatted as HH:MM.</dd>
+   *   <dt>string <var>t_start</var></dt>
+   *   <dd>The start time of work, formatted as HH:MM</dd>
+   * </dl>
+   *
+   * Note that the days of the week that aren't represented in this list will be saved as non-working days.
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_work_time = [];
+
+  /**
+   * The business key.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The location key.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_location;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Agree/AgreeModel.php b/WellnessLiving/Wl/Login/Agree/AgreeModel.php
index d5d0ecdb..952f906c 100644
--- a/WellnessLiving/Wl/Login/Agree/AgreeModel.php
+++ b/WellnessLiving/Wl/Login/Agree/AgreeModel.php
@@ -1,57 +1,57 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Agree;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Saves the user's agreement to the online waiver.
- */
-class AgreeModel extends WlModelAbstract
-{
-  /**
-   * Formatted text of business liability release. Not empty if business has liability release and if user did not agree to this liability release.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_contract = '';
-
-  /**
-   * <tt>false</tt> if user has not agreed to use Electronic Signatures,
-   * <tt>true</tt> if user has agreed to use Electronic Signatures,
-   * <tt>null</tt> otherwise.
-   *
-   * @post post
-   * @var bool|null
-   */
-  public $is_agree = null;
-
-  /**
-   * The key of business.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The base64-encoded user's signature image from the signature pad as a PNG file.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_signature = '';
-
-  /**
-   * The user's key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Agree;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Saves the user's agreement to the online waiver.
+ */
+class AgreeModel extends WlModelAbstract
+{
+  /**
+   * Formatted text of business liability release. Not empty if business has liability release and if user did not agree to this liability release.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_contract = '';
+
+  /**
+   * <tt>false</tt> if user has not agreed to use Electronic Signatures,
+   * <tt>true</tt> if user has agreed to use Electronic Signatures,
+   * <tt>null</tt> otherwise.
+   *
+   * @post post
+   * @var bool|null
+   */
+  public $is_agree = null;
+
+  /**
+   * The key of business.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The base64-encoded user's signature image from the signature pad as a PNG file.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_signature = '';
+
+  /**
+   * The user's key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php b/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php
index 7ce90c14..33a82447 100644
--- a/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php
@@ -1,216 +1,216 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Attendance\Add;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Login\Attendance\AddOptionSid;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Visit\WlVisitSid;
-
-/**
- * Adds a client to an attendance list.
- * This endpoint can also be used to get a list of Purchase Options suitable to pay for the session in question.
- */
-class AddModel extends WlModelAbstract
-{
-  /**
-   * Any of the client memberships that can be used to pay for the session.
-   * Every element is an array with the following keys:
-   * <dl>
-   *   <dt>
-   *     string <var>k_login_promotion</var>
-   *   </dt>
-   *   <dd>
-   *     The login promotion key, available to pay for the session.
-   *
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title of the login promotion.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_login_promotion;
-
-  /**
-   * Any user's session passes that can be used to pay for the session.
-   * Every element is an array with the following keys:
-   * <dl>
-   *   <dt>
-   *     string <var>k_session_pass</var>
-   *   </dt>
-   *   <dd>
-   *     The session pass key, available to pay for the session.
-   *
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title of the session pass.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_session_pass;
-
-  /**
-   * The start date and time of the class in GMT and MySQL format.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_date_global = '';
-
-  /**
-   * Determines how the payment was handled for the session.
-   * One of the {@link AddOptionSid} constants.
-   *
-   * @post post
-   * @var int
-   */
-  public $id_add_option = 0;
-
-  /**
-   * Determines how the session was booked.
-   * One of the {@link ModeSid} constants.
-   * We recommend using the `WEB_BACKEND` value.
-   *
-   * @post post
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * The status of the visit.
-   * One of the {@link WlVisitSid} constants.
-   *
-   * @post result
-   * @var int
-   */
-  public $id_visit;
-
-  /**
-   * Defines whether only single session can be booked for block event.
-   *
-   * <tt>true</tt> Only current session of the block event will be booked in a case if staff event has appropriate setting to do this action.
-   *   In this case this session will be considered as session out of event block.
-   * <tt>false</tt> all available event sessions will be booked.
-   *   In this case session will be considered as part of event block.
-   *
-   * @post get
-   * @var bool
-   */
-  public $is_event_single = false;
-
-  /**
-   * If `true`, the session is free with no methods of payment. If `false`, the session can be paid for.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_free;
-
-  /**
-   * If `true`, the visit was automatically paid for in any available way during the booking.
-   * If `false`, the visit wasn't automatically paid for.
-   *
-   * @post result
-   * @var bool
-   */
-  public $is_paid;
-
-  /**
-   * Key of the business in which the request must be processed.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The class period key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * The key of the user's promotion to be used for booking.
-   * If empty, use any suitable user's promotion.
-   *
-   * @get result
-   * @post post
-   * @var string
-   */
-  public $k_login_promotion = '0';
-
-  /**
-   * The key of a session pass that can be used for a single session payment.
-   * If no such payment is available, `0` will be returned.
-   *
-   * @get result
-   * @post post
-   * @var string
-   */
-  public $k_session_pass = '0';
-
-  /**
-   * The key of the booked visit. This will be set on success.
-   * This value will be needed if the session still needs to be paid for.
-   *
-   * @post result
-   * @var string
-   */
-  public $k_visit;
-
-  /**
-   * The price of the session, including any taxes and discounts.
-   *
-   * If `null`, the price of the session hasn't been loaded yet.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $m_price;
-
-  /**
-   * The user's account balance if they were charged the {@link AddModel::$m_price} amount.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $m_rest;
-
-  /**
-   * The client user key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid_client = '0';
-
-  /**
-   * The URL link to the store to allow for the payment of the visit.
-   *
-   * This link is for web only.
-   *
-   * @post result
-   * @var string
-   */
-  public $url_store;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Attendance\Add;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Login\Attendance\AddOptionSid;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Visit\WlVisitSid;
+
+/**
+ * Adds a client to an attendance list.
+ * This endpoint can also be used to get a list of Purchase Options suitable to pay for the session in question.
+ */
+class AddModel extends WlModelAbstract
+{
+  /**
+   * Any of the client memberships that can be used to pay for the session.
+   * Every element is an array with the following keys:
+   * <dl>
+   *   <dt>
+   *     string <var>k_login_promotion</var>
+   *   </dt>
+   *   <dd>
+   *     The login promotion key, available to pay for the session.
+   *
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     The title of the login promotion.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_login_promotion;
+
+  /**
+   * Any user's session passes that can be used to pay for the session.
+   * Every element is an array with the following keys:
+   * <dl>
+   *   <dt>
+   *     string <var>k_session_pass</var>
+   *   </dt>
+   *   <dd>
+   *     The session pass key, available to pay for the session.
+   *
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     The title of the session pass.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_session_pass;
+
+  /**
+   * The start date and time of the class in GMT and MySQL format.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_date_global = '';
+
+  /**
+   * Determines how the payment was handled for the session.
+   * One of the {@link AddOptionSid} constants.
+   *
+   * @post post
+   * @var int
+   */
+  public $id_add_option = 0;
+
+  /**
+   * Determines how the session was booked.
+   * One of the {@link ModeSid} constants.
+   * We recommend using the `WEB_BACKEND` value.
+   *
+   * @post post
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * The status of the visit.
+   * One of the {@link WlVisitSid} constants.
+   *
+   * @post result
+   * @var int
+   */
+  public $id_visit;
+
+  /**
+   * Defines whether only single session can be booked for block event.
+   *
+   * <tt>true</tt> Only current session of the block event will be booked in a case if staff event has appropriate setting to do this action.
+   *   In this case this session will be considered as session out of event block.
+   * <tt>false</tt> all available event sessions will be booked.
+   *   In this case session will be considered as part of event block.
+   *
+   * @post get
+   * @var bool
+   */
+  public $is_event_single = false;
+
+  /**
+   * If `true`, the session is free with no methods of payment. If `false`, the session can be paid for.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_free;
+
+  /**
+   * If `true`, the visit was automatically paid for in any available way during the booking.
+   * If `false`, the visit wasn't automatically paid for.
+   *
+   * @post result
+   * @var bool
+   */
+  public $is_paid;
+
+  /**
+   * Key of the business in which the request must be processed.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The class period key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * The key of the user's promotion to be used for booking.
+   * If empty, use any suitable user's promotion.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $k_login_promotion = '0';
+
+  /**
+   * The key of a session pass that can be used for a single session payment.
+   * If no such payment is available, `0` will be returned.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $k_session_pass = '0';
+
+  /**
+   * The key of the booked visit. This will be set on success.
+   * This value will be needed if the session still needs to be paid for.
+   *
+   * @post result
+   * @var string
+   */
+  public $k_visit;
+
+  /**
+   * The price of the session, including any taxes and discounts.
+   *
+   * If `null`, the price of the session hasn't been loaded yet.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_price;
+
+  /**
+   * The user's account balance if they were charged the {@link AddModel::$m_price} amount.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_rest;
+
+  /**
+   * The client user key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid_client = '0';
+
+  /**
+   * The URL link to the store to allow for the payment of the visit.
+   *
+   * This link is for web only.
+   *
+   * @post result
+   * @var string
+   */
+  public $url_store;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Attendance/AddOptionSid.php b/WellnessLiving/Wl/Login/Attendance/AddOptionSid.php
index b4865b38..629a8b1c 100644
--- a/WellnessLiving/Wl/Login/Attendance/AddOptionSid.php
+++ b/WellnessLiving/Wl/Login/Attendance/AddOptionSid.php
@@ -1,26 +1,26 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Attendance;
-
-/**
- * List of options to add client to attendance list.
- */
-class AddOptionSid
-{
-  /**
-   * Add client to attendance list and charge his account.
-   */
-  const DEBIT = 2;
-
-  /**
-   * Add client to attendance list and pay now.
-   */
-  const PAY = 3;
-
-  /**
-   * Add client to attendance list without payment.
-   */
-  const UNPAID = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Attendance;
+
+/**
+ * List of options to add client to attendance list.
+ */
+class AddOptionSid
+{
+  /**
+   * Add client to attendance list and charge his account.
+   */
+  const DEBIT = 2;
+
+  /**
+   * Add client to attendance list and pay now.
+   */
+  const PAY = 3;
+
+  /**
+   * Add client to attendance list without payment.
+   */
+  const UNPAID = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
index 8540ed0e..2e8ee902 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
@@ -1,321 +1,321 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Attendance;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Schedule\Page\WlVisitNoteSid;
-use WellnessLiving\Wl\WlServiceSid;
-
-/**
- * Displays information for certain sessions.
- */
-class AttendanceInfoByTokenModel extends WlModelAbstract
-{
-  /**
-   * Additional visit information about this appointment. Empty array if it's not an appointment:
-   * <dl>
-   *   <dt>bool <var>is_deny</var></dt>
-   *   <dd>`true` means that appointment was requested and denied by the staff.</dd>
-   *   <dt>bool <var>is_notify_request_accept</var></dt>
-   *   <dd>`true` means that the client will receive a notification, if appointment will be confirmed by the staff.</dd>
-   *   <dt>bool <var>is_notify_request_deny</var></dt>
-   *   <dd>`true` means that the client will receive a notification, if appointment will be denied by the staff.</dd>
-   *   <dt>bool <var>is_request</var></dt>
-   *   <dd>`true` means that appointment was requested, but not confirmed by the staff.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_appointment_visit_info = [];
-
-  /**
-   * Service logo information:
-   * <dl>
-   *   <dt>
-   *     bool <var>is_empty</var>
-   *   </dt>
-   *   <dd>
-   *     Whether service image is empty.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_url</var>
-   *   </dt>
-   *   <dd>
-   *     Url link to image.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_logo = null;
-
-  /**
-   * Assets which are bound to this session.
-   *
-   * @get result
-   * @var string[]
-   */
-  public $a_resource = null;
-
-  /**
-   * Asset layouts of session:
-   * <dl>
-   *   <dt>
-   *     array <var>a_client</var>
-   *   </dt>
-   *   <dd>
-   *     List of clients who occupy assets of class.
-   *     It is a double nesting array.
-   *     Keys - primary keys of assets. Sub keys - asset index.
-   *     Values - sub array with keys:
-   *     <dl><dt>string <var>text_client</var></dt><dd>User's name.</dd>
-   *     <dt>string <var>uid</var></dt><dd>User's primary key.</dd></dl>
-   *   </dd>
-   *   <dt>
-   *     string[] <var>a_resource_available</var>
-   *   </dt>
-   *   <dd>
-   *     Key of asset.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_resource_layout</var>
-   *   </dt>
-   *   <dd>
-   *     Key of layout.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_resource_type</var>
-   *   </dt>
-   *   <dd>
-   *     Title of asset category.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_resource_layout = null;
-
-  /**
-   * List of staff members who provide service:
-   * <dl>
-   *   <dt>
-   *     array <var>a_logo</var>
-   *   </dt>
-   *   <dd>
-   *     Data of staff member's photo. Empty if staff has no photo. Otherwise contains next keys:
-   *     <dl>
-   *       <dt>
-   *         int <var>i_height</var>
-   *       </dt>
-   *       <dd>
-   *         Height in pixels.
-   *       </dd>
-   *       <dt>
-   *         int <var>i_width</var>
-   *       </dt>
-   *       <dd>
-   *         Width in pixels.
-   *       </dd>
-   *       <dt>
-   *         string <var>url_logo</var>
-   *       </dt>
-   *       <dd>
-   *         Image URL.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>k_staff</var>
-   *   </dt>
-   *   <dd>
-   *     Staff key.
-   *   </dd>
-   *   <dt>
-   *     string <var>html_firstname</var>
-   *   </dt>
-   *   <dd>
-   *     Staff member's first name.
-   *   </dd>
-   *   <dt>
-   *     string <var>html_lastname</var>
-   *   </dt>
-   *   <dd>
-   *     Staff member's last name.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_staff = null;
-
-  /**
-   * Confirmation date+time of appointment in MySQL format. If client never confirmed, will be zero date + time.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_confirm = '';
-
-  /**
-   * Start date of ste session in MySQL format in GMT.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_date_global = null;
-
-  /**
-   * Start date of the class in MySQL format in local time.
-   *
-   * @get get
-   * @var string
-   */
-  public $dt_date_local = '';
-
-  /**
-   * Date and time in UTC when the visit is promoted from wait list to active list.
-   * Not empty for appointments.
-   *
-   * @get result
-   * @var string
-   */
-  public $dtu_wait_promote = '';
-
-  /**
-   * Whether notes added to visit.
-   *
-   * @get result
-   * @var bool
-   */
-  public $has_note = null;
-
-  /**
-   * Type of note. One of {@link WlVisitNoteSid} constants. <tt>false</tt> if notes not allowed.
-   *
-   * @get result
-   * @var int|false
-   */
-  public $id_note = null;
-
-  /**
-   * Service type, one of {@link WlServiceSid}.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_service = null;
-
-  /**
-   * Whether this service be carried out in Zoom.
-   * <tt>true</tt> - If the service can be carried out in Zoom.
-   * <tt>false</tt> - otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_start_virtual_service = false;
-
-  /**
-   * ID of appointment to get information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_appointment = '0';
-
-  /**
-   * ID of business to get information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * Not empty if service is class or event reservation.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_class = null;
-
-  /**
-   * ID of class period to get information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * Location identifier.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_location = null;
-
-  /**
-   * Resource identifier.
-   * Not empty if service is asset reservation.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_resource = null;
-
-  /**
-   * Service identifier.
-   * Not empty if service is appointment reservation.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_service = null;
-
-  /**
-   * Location name.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_location = null;
-
-  /**
-   * Time when service starts in format <tt>8:00AM</tt>.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_time_end = null;
-
-  /**
-   * Start time of the session in format '9:30AM'.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_time_start = null;
-
-  /**
-   * Title of the appointment.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_title = null;
-
-  /**
-   * The security token.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_token = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Attendance;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Schedule\Page\WlVisitNoteSid;
+use WellnessLiving\Wl\WlServiceSid;
+
+/**
+ * Displays information for certain sessions.
+ */
+class AttendanceInfoByTokenModel extends WlModelAbstract
+{
+  /**
+   * Additional visit information about this appointment. Empty array if it's not an appointment:
+   * <dl>
+   *   <dt>bool <var>is_deny</var></dt>
+   *   <dd>`true` means that appointment was requested and denied by the staff.</dd>
+   *   <dt>bool <var>is_notify_request_accept</var></dt>
+   *   <dd>`true` means that the client will receive a notification, if appointment will be confirmed by the staff.</dd>
+   *   <dt>bool <var>is_notify_request_deny</var></dt>
+   *   <dd>`true` means that the client will receive a notification, if appointment will be denied by the staff.</dd>
+   *   <dt>bool <var>is_request</var></dt>
+   *   <dd>`true` means that appointment was requested, but not confirmed by the staff.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_appointment_visit_info = [];
+
+  /**
+   * Service logo information:
+   * <dl>
+   *   <dt>
+   *     bool <var>is_empty</var>
+   *   </dt>
+   *   <dd>
+   *     Whether service image is empty.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_url</var>
+   *   </dt>
+   *   <dd>
+   *     Url link to image.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_logo = null;
+
+  /**
+   * Assets which are bound to this session.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_resource = null;
+
+  /**
+   * Asset layouts of session:
+   * <dl>
+   *   <dt>
+   *     array <var>a_client</var>
+   *   </dt>
+   *   <dd>
+   *     List of clients who occupy assets of class.
+   *     It is a double nesting array.
+   *     Keys - primary keys of assets. Sub keys - asset index.
+   *     Values - sub array with keys:
+   *     <dl><dt>string <var>text_client</var></dt><dd>User's name.</dd>
+   *     <dt>string <var>uid</var></dt><dd>User's primary key.</dd></dl>
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_resource_available</var>
+   *   </dt>
+   *   <dd>
+   *     Key of asset.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_resource_layout</var>
+   *   </dt>
+   *   <dd>
+   *     Key of layout.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_resource_type</var>
+   *   </dt>
+   *   <dd>
+   *     Title of asset category.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_resource_layout = null;
+
+  /**
+   * List of staff members who provide service:
+   * <dl>
+   *   <dt>
+   *     array <var>a_logo</var>
+   *   </dt>
+   *   <dd>
+   *     Data of staff member's photo. Empty if staff has no photo. Otherwise contains next keys:
+   *     <dl>
+   *       <dt>
+   *         int <var>i_height</var>
+   *       </dt>
+   *       <dd>
+   *         Height in pixels.
+   *       </dd>
+   *       <dt>
+   *         int <var>i_width</var>
+   *       </dt>
+   *       <dd>
+   *         Width in pixels.
+   *       </dd>
+   *       <dt>
+   *         string <var>url_logo</var>
+   *       </dt>
+   *       <dd>
+   *         Image URL.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>k_staff</var>
+   *   </dt>
+   *   <dd>
+   *     Staff key.
+   *   </dd>
+   *   <dt>
+   *     string <var>html_firstname</var>
+   *   </dt>
+   *   <dd>
+   *     Staff member's first name.
+   *   </dd>
+   *   <dt>
+   *     string <var>html_lastname</var>
+   *   </dt>
+   *   <dd>
+   *     Staff member's last name.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_staff = null;
+
+  /**
+   * Confirmation date+time of appointment in MySQL format. If client never confirmed, will be zero date + time.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_confirm = '';
+
+  /**
+   * Start date of ste session in MySQL format in GMT.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_date_global = null;
+
+  /**
+   * Start date of the class in MySQL format in local time.
+   *
+   * @get get
+   * @var string
+   */
+  public $dt_date_local = '';
+
+  /**
+   * Date and time in UTC when the visit is promoted from wait list to active list.
+   * Not empty for appointments.
+   *
+   * @get result
+   * @var string
+   */
+  public $dtu_wait_promote = '';
+
+  /**
+   * Whether notes added to visit.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_note = null;
+
+  /**
+   * Type of note. One of {@link WlVisitNoteSid} constants. <tt>false</tt> if notes not allowed.
+   *
+   * @get result
+   * @var int|false
+   */
+  public $id_note = null;
+
+  /**
+   * Service type, one of {@link WlServiceSid}.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_service = null;
+
+  /**
+   * Whether this service be carried out in Zoom.
+   * <tt>true</tt> - If the service can be carried out in Zoom.
+   * <tt>false</tt> - otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_start_virtual_service = false;
+
+  /**
+   * ID of appointment to get information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_appointment = '0';
+
+  /**
+   * ID of business to get information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * Not empty if service is class or event reservation.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_class = null;
+
+  /**
+   * ID of class period to get information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * Location identifier.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_location = null;
+
+  /**
+   * Resource identifier.
+   * Not empty if service is asset reservation.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_resource = null;
+
+  /**
+   * Service identifier.
+   * Not empty if service is appointment reservation.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_service = null;
+
+  /**
+   * Location name.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_location = null;
+
+  /**
+   * Time when service starts in format <tt>8:00AM</tt>.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_time_end = null;
+
+  /**
+   * Start time of the session in format '9:30AM'.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_time_start = null;
+
+  /**
+   * Title of the appointment.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_title = null;
+
+  /**
+   * The security token.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_token = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php
index 6ef2d84b..bd9d9df9 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php
@@ -1,280 +1,280 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Attendance;
-
-use WellnessLiving\Core\a\AGenderSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Visit\WlVisitSid;
-use WellnessLiving\Wl\WlProgramSid;
-
-/**
- * An endpoint that displays attendance list data.
- * Version of {@link AttendanceListModel} for access validation by security token.
- */
-class AttendanceListByTokenModel extends WlModelAbstract
-{
-  /**
-   * The list of clients in the active attendance list who haven't confirmed or canceled.
-   * Each element is an array with the following fields:
-   * <dl>
-   *   <dt>array <var>a_photo</var></dt>
-   *   <dd>
-   *     Information about the user's photo. The information returned has the following structure:
-   *     <dl>
-   *       <dt>int <var>i_height</var></dt>
-   *       <dd>The height of the photo.</dd>
-   *       <dt>int <var>i_width</var></dt>
-   *       <dd>The width of the photo.</dd>
-   *       <dt>string <var>is_empty</var></dt>
-   *       <dd>This will be <tt>true</tt> if a photo hasn't been set yet.</dd>
-   *       <dt>string <var>s_url</var></dt>
-   *       <dd>The URL of the photo.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>array <var>a_progress</var></dt>
-   *   <dd>Information about a user's current progress. By default, this information isn't sent.</dd>
-   *   <dt>array <var>a_quiz</var></dt>
-   *   <dd>Quiz information that concerns current visit.</dd>
-   *   <dt>array <var>a_resource</var></dt>
-   *   <dd>A list of information for any associated resources for this visit.</dd>
-   *   <dt>array <var>a_wait_confirm</var></dt>
-   *   <dd>The list of visit keys for clients on the wait list.</dd>
-   *   <dt>array <var>a_wearable</var></dt>
-   *   <dd>A list of information pertaining to the client's wearables.</dd>
-   *   <dt>bool <var>can_profile</var></dt>
-   *   <dd>If <tt>true</tt>, the current user can access this client profile.</dd>
-   *   <dt>string <var>dt_book</var></dt>
-   *   <dd>The date the session was booked, in UTC.</dd>
-   *   <dt>string <var>dt_date</var></dt>
-   *   <dd>The date of the session, in UTC.</dd>
-   *   <dt>string <var>dt_expire</var></dt>
-   *   <dd>The date the Purchase Option that was used will expire, in UTC.</dd>
-   *   <dt>string <var>dt_register</var></dt>
-   *   <dd>The date the client checked in for the visit, in UTC.</dd>
-   *   <dt>string <var>html_age</var></dt>
-   *   <dd>The client age.</dd>
-   *   <dt>string <var>html_book_by</var></dt>
-   *   <dd>The name of the person who booked this visit.</dd>
-   *   <dt>string <var>html_gender_class</var></dt>
-   *   <dd>The name of the icon to show under gender in the class attendance list.</dd>
-   *   <dt>string <var>html_member</var></dt>
-   *   <dd>The client's member ID, if set.</dd>
-   *   <dt>string <var>html_tooltip_book_by</var></dt>
-   *   <dd>When and where this visit was booked, along with who booked it.</dd>
-   *   <dt>int <var>i</var></dt>
-   *   <dd>The default place in the list to show this client. This is a deprecated copy of the <tt>i_order</tt> field.</dd>
-   *   <dt>int <var>i_left</var></dt>
-   *   <dd>The number of visits left on this Purchase Option. This will be <tt>NULL</tt> if there's no limit.</dd>
-   *   <dt>int <var>i_order</var></dt>
-   *   <dd>The default place in the list to show this client.</dd>
-   *   <dt>int <var>i_total</var></dt>
-   *   <dd>The total visits available from this Purchase Option.</dd>
-   *   <dt>int <var>id_gender</var></dt>
-   *   <dd>The gender ID of the client. One of the {@link AGenderSid} constants.</dd>
-   *   <dt>int <var>id_pass_prospect</var></dt>
-   *   <dd>If this visit was paid for by an external system, this ID will be set. Otherwise, it will be <tt>0</tt>.</dd>
-   *   <dt>int <var>id_program</var></dt>
-   *   <dd>The program ID of the Purchase Option. One of the {@link WlProgramSid} constants.</dd>
-   *   <dt>int <var>id_visit</var></dt>
-   *   <dd>The status of the visit. One of the {@link WlVisitSid} constants.</dd>
-   *   <dt>bool <var>is_attend</var></dt>
-   *   <dd>This will be <tt>true</tt> if the client has attended the visit.</dd>
-   *   <dt>bool <var>is_duration_pass</var></dt>
-   *   <dd>This will be <tt>true</tt> if the Purchase Option used is a duration pass.</dd>
-   *   <dt>bool <var>is_deposit</var></dt>
-   *   <dd>This will be <tt>true</tt> if the client has paid a deposit for the visit.</dd>
-   *   <dt>bool <var>is_early</var></dt>
-   *   <dd>This will be <tt>true</tt> if the client has canceled the visit early, incurring no penalty.
-   *     This will be <tt>false</tt> if canceled late or if not canceled at all.
-   *   </dd>
-   *   <dt>bool <var>is_free</var></dt>
-   *   <dd>This will be <tt>true</tt> if the visit is free.</dd>
-   *   <dt>bool <var>is_hidden</var></dt>
-   *   <dd>This will be <tt>true</tt> if details on this visit should be hidden from staff members.</dd>
-   *   <dt>bool <var>is_penalty</var></dt>
-   *   <dd>This will be <tt>true</tt> if this visit was cancelled late and a penalty is applied.</dd>
-   *   <dt>bool <var>is_promotion_first</var></dt>
-   *   <dd>This will be <tt>true</tt> if this was the first visit for the Purchase Option used.</dd>
-   *   <dt>bool <var>is_promotion_last</var></dt>
-   *   <dd>This will be <tt>true</tt> if this was the latest visit for the Purchase Option used.</dd>
-   *   <dt>bool <var>is_unlimited</var></dt>
-   *   <dd>This will be <tt>true</tt> if the Purchase Option used has no usage limits.</dd>
-   *   <dt>bool <var>is_visit</var></dt>
-   *   <dd>This will be <tt>true</tt> if this visit is still considered valid.
-   *     If visit was removed by the system or a staff member, this will be <tt>false</tt>.</dd>
-   *   <dt>bool <var>is_wait</var></dt>
-   *   <dd>This will be <tt>true</tt> if the visit is on the waiting list.</dd>
-   *   <dt>bool <var>is_wait_confirm</var></dt>
-   *   <dd>This will be <tt>true</tt> if the visit is awaiting confirmation.</dd>
-   *   <dt>bool <var>is_wait_priority</var></dt>
-   *   <dd>This will be <tt>true</tt> if the visit has priority on the wait list.</dd>
-   *   <dt>string <var>k_location</var></dt>
-   *   <dd>The key of the location.</dd>
-   *   <dt>string <var>k_login_promotion</var></dt>
-   *   <dd>The key of the client's Purchase Option.</dd>
-   *   <dt>string <var>k_visit</var></dt>
-   *   <dd>The key of the visit.</dd>
-   *   <dt>array <var>[o_purchase_item]</var></dt>
-   *   <dd>The purchase used to pay for the session.</dd>
-   *   <dt>string <var>s_expire</var></dt>
-   *   <dd>The expiry information for the Purchase Option. This field is deprecated, use the text_ version instead.</dd>
-   *   <dt>string <var>s_firstname</var></dt>
-   *   <dd>The client's first name. This field is deprecated, use the text_ version instead.</dd>
-   *   <dt>string <var>s_lastname</var></dt>
-   *   <dd>The client's last name. This field is deprecated, use the text_ version instead.</dd>
-   *   <dt>string <var>s_note</var></dt>
-   *   <dd>Any notes tied to the client. This field is deprecated, use the text_ version instead.</dd>
-   *   <dt>string <var>s_promotion</var></dt>
-   *   <dd>The description of the type of Purchase Option. This field is deprecated, use the text_ version instead.</dd>
-   *   <dt>string <var>text_expire</var></dt>
-   *   <dd>The expiry information for the Purchase Option.</dd>
-   *   <dt>string <var>text_firstname</var></dt>
-   *   <dd>The client first name.</dd>
-   *   <dt>string <var>text_lastname</var></dt>
-   *   <dd>The client last name.</dd>
-   *   <dt>string <var>text_note</var></dt>
-   *   <dd>Any notes tied to the client.</dd>
-   *   <dt>string <var>text_promotion</var></dt>
-   *   <dd>The description of the type of Purchase Option.</dd>
-   *   <dt>string <var>text_restrict_title</var></dt>
-   *   <dd>The Purchase Option restriction description. It can be empty string when the Purchase Option has no restrictions.</dd>
-   *   <dt>string <var>text_visit_status_class</var></dt>
-   *   <dd>The class visit status.</dd>
-   *   <dt>string <var>text_visit_status_icon</var></dt>
-   *   <dd>The icon to use for the class visit status.</dd>
-   *   <dt>string <var>text_wearable</var></dt>
-   *   <dd>The wearable device ID.</dd>
-   *   <dt>string <var>uid</var></dt>
-   *   <dd>The client user key.</dd>
-   *   <dt>string <var>uid_book</var></dt>
-   *   <dd>
-   *     The key of the user who made the booking.
-   *     If differing from <tt>uid</tt>, the booking could have been made by a staff or family member.
-   *   </dd>
-   *   <dt>string <var>url-cancel</var></dt>
-   *   <dd>The URL that can be used to cancel the visit.</dd>
-   *   <dt>string <var>url-cancel-admin</var></dt>
-   *   <dd>The URL that can be used by an admin to cancel the visit.</dd>
-   *   <dt>string <var>url-login-view</var></dt>
-   *   <dd>The URL that for the user's page.</dd>
-   *   <dt>string <var>url-mail</var></dt>
-   *   <dd>The URL to a page for sending an email to the client.</dd>
-   *   <dt>string <var>url-profile</var></dt>
-   *   <dd>The URL that for the client's profile.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_list_active = null;
-
-  /**
-   * The list of clients who have confirmed their attendance.
-   * Has the same structure as {@link AttendanceListModel::$a_list_active} property.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_list_confirm = null;
-
-  /**
-   * The list of clients who are on the wait list.
-   * Has the same structure as {@link AttendanceListModel::$a_list_active} property.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_list_wait = null;
-
-  /**
-   * The local date of the class or event session.
-   *
-   * @get get
-   * @var string
-   */
-  public $dt_date_local = '';
-
-  /**
-   * The maximum capacity of the class or event session.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_capacity = null;
-
-  /**
-   * Count client on the attendance.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_client = null;
-
-  /**
-   * The maximum number of clients on wait list of the class or event session.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_wait_list_limit;
-
-  /**
-   * If <tt>true</tt>, then return the purchase used to pay for session.
-   * Otherwise <tt>false</tt>, do not return any purchase information.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_purchase_info_return = false;
-
-  /**
-   * `true` to use class/event specific wait list limit, `false` to use the limit from default policies.
-   * `false` for appointments.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_wait_list_limit;
-
-  /**
-   * The appointment key. Not used if requesting information for a class or event session.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_appointment = '0';
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The class period key. Not used if requesting information for an appointment.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * The Location key.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_location = null;
-
-  /**
-   * The security token.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_token = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Attendance;
+
+use WellnessLiving\Core\a\AGenderSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Visit\WlVisitSid;
+use WellnessLiving\Wl\WlProgramSid;
+
+/**
+ * An endpoint that displays attendance list data.
+ * Version of {@link AttendanceListModel} for access validation by security token.
+ */
+class AttendanceListByTokenModel extends WlModelAbstract
+{
+  /**
+   * The list of clients in the active attendance list who haven't confirmed or canceled.
+   * Each element is an array with the following fields:
+   * <dl>
+   *   <dt>array <var>a_photo</var></dt>
+   *   <dd>
+   *     Information about the user's photo. The information returned has the following structure:
+   *     <dl>
+   *       <dt>int <var>i_height</var></dt>
+   *       <dd>The height of the photo.</dd>
+   *       <dt>int <var>i_width</var></dt>
+   *       <dd>The width of the photo.</dd>
+   *       <dt>string <var>is_empty</var></dt>
+   *       <dd>This will be <tt>true</tt> if a photo hasn't been set yet.</dd>
+   *       <dt>string <var>s_url</var></dt>
+   *       <dd>The URL of the photo.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>array <var>a_progress</var></dt>
+   *   <dd>Information about a user's current progress. By default, this information isn't sent.</dd>
+   *   <dt>array <var>a_quiz</var></dt>
+   *   <dd>Quiz information that concerns current visit.</dd>
+   *   <dt>array <var>a_resource</var></dt>
+   *   <dd>A list of information for any associated resources for this visit.</dd>
+   *   <dt>array <var>a_wait_confirm</var></dt>
+   *   <dd>The list of visit keys for clients on the wait list.</dd>
+   *   <dt>array <var>a_wearable</var></dt>
+   *   <dd>A list of information pertaining to the client's wearables.</dd>
+   *   <dt>bool <var>can_profile</var></dt>
+   *   <dd>If <tt>true</tt>, the current user can access this client profile.</dd>
+   *   <dt>string <var>dt_book</var></dt>
+   *   <dd>The date the session was booked, in UTC.</dd>
+   *   <dt>string <var>dt_date</var></dt>
+   *   <dd>The date of the session, in UTC.</dd>
+   *   <dt>string <var>dt_expire</var></dt>
+   *   <dd>The date the Purchase Option that was used will expire, in UTC.</dd>
+   *   <dt>string <var>dt_register</var></dt>
+   *   <dd>The date the client checked in for the visit, in UTC.</dd>
+   *   <dt>string <var>html_age</var></dt>
+   *   <dd>The client age.</dd>
+   *   <dt>string <var>html_book_by</var></dt>
+   *   <dd>The name of the person who booked this visit.</dd>
+   *   <dt>string <var>html_gender_class</var></dt>
+   *   <dd>The name of the icon to show under gender in the class attendance list.</dd>
+   *   <dt>string <var>html_member</var></dt>
+   *   <dd>The client's member ID, if set.</dd>
+   *   <dt>string <var>html_tooltip_book_by</var></dt>
+   *   <dd>When and where this visit was booked, along with who booked it.</dd>
+   *   <dt>int <var>i</var></dt>
+   *   <dd>The default place in the list to show this client. This is a deprecated copy of the <tt>i_order</tt> field.</dd>
+   *   <dt>int <var>i_left</var></dt>
+   *   <dd>The number of visits left on this Purchase Option. This will be <tt>NULL</tt> if there's no limit.</dd>
+   *   <dt>int <var>i_order</var></dt>
+   *   <dd>The default place in the list to show this client.</dd>
+   *   <dt>int <var>i_total</var></dt>
+   *   <dd>The total visits available from this Purchase Option.</dd>
+   *   <dt>int <var>id_gender</var></dt>
+   *   <dd>The gender ID of the client. One of the {@link AGenderSid} constants.</dd>
+   *   <dt>int <var>id_pass_prospect</var></dt>
+   *   <dd>If this visit was paid for by an external system, this ID will be set. Otherwise, it will be <tt>0</tt>.</dd>
+   *   <dt>int <var>id_program</var></dt>
+   *   <dd>The program ID of the Purchase Option. One of the {@link WlProgramSid} constants.</dd>
+   *   <dt>int <var>id_visit</var></dt>
+   *   <dd>The status of the visit. One of the {@link WlVisitSid} constants.</dd>
+   *   <dt>bool <var>is_attend</var></dt>
+   *   <dd>This will be <tt>true</tt> if the client has attended the visit.</dd>
+   *   <dt>bool <var>is_duration_pass</var></dt>
+   *   <dd>This will be <tt>true</tt> if the Purchase Option used is a duration pass.</dd>
+   *   <dt>bool <var>is_deposit</var></dt>
+   *   <dd>This will be <tt>true</tt> if the client has paid a deposit for the visit.</dd>
+   *   <dt>bool <var>is_early</var></dt>
+   *   <dd>This will be <tt>true</tt> if the client has canceled the visit early, incurring no penalty.
+   *     This will be <tt>false</tt> if canceled late or if not canceled at all.
+   *   </dd>
+   *   <dt>bool <var>is_free</var></dt>
+   *   <dd>This will be <tt>true</tt> if the visit is free.</dd>
+   *   <dt>bool <var>is_hidden</var></dt>
+   *   <dd>This will be <tt>true</tt> if details on this visit should be hidden from staff members.</dd>
+   *   <dt>bool <var>is_penalty</var></dt>
+   *   <dd>This will be <tt>true</tt> if this visit was cancelled late and a penalty is applied.</dd>
+   *   <dt>bool <var>is_promotion_first</var></dt>
+   *   <dd>This will be <tt>true</tt> if this was the first visit for the Purchase Option used.</dd>
+   *   <dt>bool <var>is_promotion_last</var></dt>
+   *   <dd>This will be <tt>true</tt> if this was the latest visit for the Purchase Option used.</dd>
+   *   <dt>bool <var>is_unlimited</var></dt>
+   *   <dd>This will be <tt>true</tt> if the Purchase Option used has no usage limits.</dd>
+   *   <dt>bool <var>is_visit</var></dt>
+   *   <dd>This will be <tt>true</tt> if this visit is still considered valid.
+   *     If visit was removed by the system or a staff member, this will be <tt>false</tt>.</dd>
+   *   <dt>bool <var>is_wait</var></dt>
+   *   <dd>This will be <tt>true</tt> if the visit is on the waiting list.</dd>
+   *   <dt>bool <var>is_wait_confirm</var></dt>
+   *   <dd>This will be <tt>true</tt> if the visit is awaiting confirmation.</dd>
+   *   <dt>bool <var>is_wait_priority</var></dt>
+   *   <dd>This will be <tt>true</tt> if the visit has priority on the wait list.</dd>
+   *   <dt>string <var>k_location</var></dt>
+   *   <dd>The key of the location.</dd>
+   *   <dt>string <var>k_login_promotion</var></dt>
+   *   <dd>The key of the client's Purchase Option.</dd>
+   *   <dt>string <var>k_visit</var></dt>
+   *   <dd>The key of the visit.</dd>
+   *   <dt>array <var>[o_purchase_item]</var></dt>
+   *   <dd>The purchase used to pay for the session.</dd>
+   *   <dt>string <var>s_expire</var></dt>
+   *   <dd>The expiry information for the Purchase Option. This field is deprecated, use the text_ version instead.</dd>
+   *   <dt>string <var>s_firstname</var></dt>
+   *   <dd>The client's first name. This field is deprecated, use the text_ version instead.</dd>
+   *   <dt>string <var>s_lastname</var></dt>
+   *   <dd>The client's last name. This field is deprecated, use the text_ version instead.</dd>
+   *   <dt>string <var>s_note</var></dt>
+   *   <dd>Any notes tied to the client. This field is deprecated, use the text_ version instead.</dd>
+   *   <dt>string <var>s_promotion</var></dt>
+   *   <dd>The description of the type of Purchase Option. This field is deprecated, use the text_ version instead.</dd>
+   *   <dt>string <var>text_expire</var></dt>
+   *   <dd>The expiry information for the Purchase Option.</dd>
+   *   <dt>string <var>text_firstname</var></dt>
+   *   <dd>The client first name.</dd>
+   *   <dt>string <var>text_lastname</var></dt>
+   *   <dd>The client last name.</dd>
+   *   <dt>string <var>text_note</var></dt>
+   *   <dd>Any notes tied to the client.</dd>
+   *   <dt>string <var>text_promotion</var></dt>
+   *   <dd>The description of the type of Purchase Option.</dd>
+   *   <dt>string <var>text_restrict_title</var></dt>
+   *   <dd>The Purchase Option restriction description. It can be empty string when the Purchase Option has no restrictions.</dd>
+   *   <dt>string <var>text_visit_status_class</var></dt>
+   *   <dd>The class visit status.</dd>
+   *   <dt>string <var>text_visit_status_icon</var></dt>
+   *   <dd>The icon to use for the class visit status.</dd>
+   *   <dt>string <var>text_wearable</var></dt>
+   *   <dd>The wearable device ID.</dd>
+   *   <dt>string <var>uid</var></dt>
+   *   <dd>The client user key.</dd>
+   *   <dt>string <var>uid_book</var></dt>
+   *   <dd>
+   *     The key of the user who made the booking.
+   *     If differing from <tt>uid</tt>, the booking could have been made by a staff or family member.
+   *   </dd>
+   *   <dt>string <var>url-cancel</var></dt>
+   *   <dd>The URL that can be used to cancel the visit.</dd>
+   *   <dt>string <var>url-cancel-admin</var></dt>
+   *   <dd>The URL that can be used by an admin to cancel the visit.</dd>
+   *   <dt>string <var>url-login-view</var></dt>
+   *   <dd>The URL that for the user's page.</dd>
+   *   <dt>string <var>url-mail</var></dt>
+   *   <dd>The URL to a page for sending an email to the client.</dd>
+   *   <dt>string <var>url-profile</var></dt>
+   *   <dd>The URL that for the client's profile.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_list_active = null;
+
+  /**
+   * The list of clients who have confirmed their attendance.
+   * Has the same structure as {@link AttendanceListModel::$a_list_active} property.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_list_confirm = null;
+
+  /**
+   * The list of clients who are on the wait list.
+   * Has the same structure as {@link AttendanceListModel::$a_list_active} property.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_list_wait = null;
+
+  /**
+   * The local date of the class or event session.
+   *
+   * @get get
+   * @var string
+   */
+  public $dt_date_local = '';
+
+  /**
+   * The maximum capacity of the class or event session.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_capacity = null;
+
+  /**
+   * Count client on the attendance.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_client = null;
+
+  /**
+   * The maximum number of clients on wait list of the class or event session.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_wait_list_limit;
+
+  /**
+   * If <tt>true</tt>, then return the purchase used to pay for session.
+   * Otherwise <tt>false</tt>, do not return any purchase information.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_purchase_info_return = false;
+
+  /**
+   * `true` to use class/event specific wait list limit, `false` to use the limit from default policies.
+   * `false` for appointments.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_wait_list_limit;
+
+  /**
+   * The appointment key. Not used if requesting information for a class or event session.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_appointment = '0';
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The class period key. Not used if requesting information for an appointment.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * The Location key.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_location = null;
+
+  /**
+   * The security token.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_token = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php
index 2eda9a31..14157c9e 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php
@@ -1,271 +1,271 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Attendance;
-
-use WellnessLiving\Core\a\AGenderSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Visit\WlVisitSid;
-use WellnessLiving\Wl\WlProgramSid;
-
-/**
- * Retrieves information about clients attending a class, appointment, or event session.
- */
-class AttendanceListModel extends WlModelAbstract
-{
-  /**
-   * The list of clients in the active attendance list who haven't confirmed or canceled.
-   * Each element is an array with the following fields:
-   * <dl>
-   *   <dt>array <var>a_photo</var></dt>
-   *   <dd>
-   *     Information about the user's photo. The information returned has the following structure:
-   *     <dl>
-   *       <dt>int <var>i_height</var></dt>
-   *       <dd>The height of the photo.</dd>
-   *       <dt>int <var>i_width</var></dt>
-   *       <dd>The width of the photo.</dd>
-   *       <dt>string <var>is_empty</var></dt>
-   *       <dd>This will be <tt>true</tt> if a photo hasn't been set yet.</dd>
-   *       <dt>string <var>s_url</var></dt>
-   *       <dd>The URL of the photo.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>array <var>a_progress</var></dt>
-   *   <dd>Information about a user's current progress. By default, this information isn't sent.</dd>
-   *   <dt>array <var>a_quiz</var></dt>
-   *   <dd>Quiz information that concerns current visit.</dd>
-   *   <dt>array <var>a_resource</var></dt>
-   *   <dd>A list of information for any associated resources for this visit.</dd>
-   *   <dt>array <var>a_wait_confirm</var></dt>
-   *   <dd>The list of visit keys for clients on the wait list.</dd>
-   *   <dt>array <var>a_wearable</var></dt>
-   *   <dd>A list of information pertaining to the client's wearables.</dd>
-   *   <dt>bool <var>can_profile</var></dt>
-   *   <dd>If <tt>true</tt>, the current user can access this client profile.</dd>
-   *   <dt>string <var>dt_book</var></dt>
-   *   <dd>The date the session was booked, in UTC.</dd>
-   *   <dt>string <var>dt_date</var></dt>
-   *   <dd>The date of the session, in UTC.</dd>
-   *   <dt>string <var>dt_expire</var></dt>
-   *   <dd>The date the Purchase Option that was used will expire, in UTC.</dd>
-   *   <dt>string <var>dt_register</var></dt>
-   *   <dd>The date the client checked in for the visit, in UTC.</dd>
-   *   <dt>string <var>html_age</var></dt>
-   *   <dd>The client age.</dd>
-   *   <dt>string <var>html_book_by</var></dt>
-   *   <dd>The name of the person who booked this visit.</dd>
-   *   <dt>string <var>html_gender_class</var></dt>
-   *   <dd>The name of the icon to show under gender in the class attendance list.</dd>
-   *   <dt>string <var>html_member</var></dt>
-   *   <dd>The client's member ID, if set.</dd>
-   *   <dt>string <var>html_tooltip_book_by</var></dt>
-   *   <dd>When and where this visit was booked, along with who booked it.</dd>
-   *   <dt>int <var>i</var></dt>
-   *   <dd>The default place in the list to show this client. This is a deprecated copy of the <tt>i_order</tt> field.</dd>
-   *   <dt>int <var>i_left</var></dt>
-   *   <dd>The number of visits left on this Purchase Option. This will be <tt>NULL</tt> if there's no limit.</dd>
-   *   <dt>int <var>i_order</var></dt>
-   *   <dd>The default place in the list to show this client.</dd>
-   *   <dt>int <var>i_total</var></dt>
-   *   <dd>The total visits available from this Purchase Option.</dd>
-   *   <dt>int <var>id_gender</var></dt>
-   *   <dd>The gender ID of the client. One of the {@link AGenderSid} constants.</dd>
-   *   <dt>int <var>id_pass_prospect</var></dt>
-   *   <dd>If this visit was paid for by an external system, this ID will be set. Otherwise, it will be <tt>0</tt>.</dd>
-   *   <dt>int <var>id_program</var></dt>
-   *   <dd>The program ID of the Purchase Option. One of the {@link WlProgramSid} constants.</dd>
-   *   <dt>int <var>id_visit</var></dt>
-   *   <dd>The status of the visit. One of the {@link WlVisitSid} constants.</dd>
-   *   <dt>bool <var>is_attend</var></dt>
-   *   <dd>This will be <tt>true</tt> if the client has attended the visit.</dd>
-   *   <dt>bool <var>is_duration_pass</var></dt>
-   *   <dd>This will be <tt>true</tt> if the Purchase Option used is a duration pass.</dd>
-   *   <dt>bool <var>is_deposit</var></dt>
-   *   <dd>This will be <tt>true</tt> if the client has paid a deposit for the visit.</dd>
-   *   <dt>bool <var>is_early</var></dt>
-   *   <dd>This will be <tt>true</tt> if the client has canceled the visit early, incurring no penalty.
-   *     This will be <tt>false</tt> if canceled late or if not canceled at all.
-   *   </dd>
-   *   <dt>bool <var>is_free</var></dt>
-   *   <dd>This will be <tt>true</tt> if the visit is free.</dd>
-   *   <dt>bool <var>is_hidden</var></dt>
-   *   <dd>This will be <tt>true</tt> if details on this visit should be hidden from staff members.</dd>
-   *   <dt>bool <var>is_penalty</var></dt>
-   *   <dd>This will be <tt>true</tt> if this visit was cancelled late and a penalty is applied.</dd>
-   *   <dt>bool <var>is_promotion_first</var></dt>
-   *   <dd>This will be <tt>true</tt> if this was the first visit for the Purchase Option used.</dd>
-   *   <dt>bool <var>is_promotion_last</var></dt>
-   *   <dd>This will be <tt>true</tt> if this was the latest visit for the Purchase Option used.</dd>
-   *   <dt>bool <var>is_unlimited</var></dt>
-   *   <dd>This will be <tt>true</tt> if the Purchase Option used has no usage limits.</dd>
-   *   <dt>bool <var>is_visit</var></dt>
-   *   <dd>This will be <tt>true</tt> if this visit is still considered valid.
-   *     If visit was removed by the system or a staff member, this will be <tt>false</tt>.</dd>
-   *   <dt>bool <var>is_wait</var></dt>
-   *   <dd>This will be <tt>true</tt> if the visit is on the waiting list.</dd>
-   *   <dt>bool <var>is_wait_confirm</var></dt>
-   *   <dd>This will be <tt>true</tt> if the visit is awaiting confirmation.</dd>
-   *   <dt>bool <var>is_wait_priority</var></dt>
-   *   <dd>This will be <tt>true</tt> if the visit has priority on the wait list.</dd>
-   *   <dt>string <var>k_location</var></dt>
-   *   <dd>The key of the location.</dd>
-   *   <dt>string <var>k_login_promotion</var></dt>
-   *   <dd>The key of the client's Purchase Option.</dd>
-   *   <dt>string <var>k_visit</var></dt>
-   *   <dd>The key of the visit.</dd>
-   *   <dt>array <var>[o_purchase_item]</var></dt>
-   *   <dd>The purchase used to pay for the session.</dd>
-   *   <dt>string <var>s_expire</var></dt>
-   *   <dd>The expiry information for the Purchase Option. This field is deprecated, use the text_ version instead.</dd>
-   *   <dt>string <var>s_firstname</var></dt>
-   *   <dd>The client's first name. This field is deprecated, use the text_ version instead.</dd>
-   *   <dt>string <var>s_lastname</var></dt>
-   *   <dd>The client's last name. This field is deprecated, use the text_ version instead.</dd>
-   *   <dt>string <var>s_note</var></dt>
-   *   <dd>Any notes tied to the client. This field is deprecated, use the text_ version instead.</dd>
-   *   <dt>string <var>s_promotion</var></dt>
-   *   <dd>The description of the type of Purchase Option. This field is deprecated, use the text_ version instead.</dd>
-   *   <dt>string <var>text_expire</var></dt>
-   *   <dd>The expiry information for the Purchase Option.</dd>
-   *   <dt>string <var>text_firstname</var></dt>
-   *   <dd>The client first name.</dd>
-   *   <dt>string <var>text_lastname</var></dt>
-   *   <dd>The client last name.</dd>
-   *   <dt>string <var>text_note</var></dt>
-   *   <dd>Any notes tied to the client.</dd>
-   *   <dt>string <var>text_promotion</var></dt>
-   *   <dd>The description of the type of Purchase Option.</dd>
-   *   <dt>string <var>text_restrict_title</var></dt>
-   *   <dd>The Purchase Option restriction description. It can be empty string when the Purchase Option has no restrictions.</dd>
-   *   <dt>string <var>text_visit_status_class</var></dt>
-   *   <dd>The class visit status.</dd>
-   *   <dt>string <var>text_visit_status_icon</var></dt>
-   *   <dd>The icon to use for the class visit status.</dd>
-   *   <dt>string <var>text_wearable</var></dt>
-   *   <dd>The wearable device ID.</dd>
-   *   <dt>string <var>uid</var></dt>
-   *   <dd>The client user key.</dd>
-   *   <dt>string <var>uid_book</var></dt>
-   *   <dd>
-   *     The key of the user who made the booking.
-   *     If differing from <tt>uid</tt>, the booking could have been made by a staff or family member.
-   *   </dd>
-   *   <dt>string <var>url-cancel</var></dt>
-   *   <dd>The URL that can be used to cancel the visit.</dd>
-   *   <dt>string <var>url-cancel-admin</var></dt>
-   *   <dd>The URL that can be used by an admin to cancel the visit.</dd>
-   *   <dt>string <var>url-login-view</var></dt>
-   *   <dd>The URL that for the user's page.</dd>
-   *   <dt>string <var>url-mail</var></dt>
-   *   <dd>The URL to a page for sending an email to the client.</dd>
-   *   <dt>string <var>url-profile</var></dt>
-   *   <dd>The URL that for the client's profile.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_list_active;
-
-  /**
-   * The list of clients who have confirmed their attendance.
-   * Has the same structure as {@link AttendanceListModel::$a_list_active} property.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_list_confirm;
-
-  /**
-   * The list of clients who are on the wait list.
-   * Has the same structure as {@link AttendanceListModel::$a_list_active} property.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_list_wait;
-
-  /**
-   * The local date of the class or event session.
-   *
-   * @get get
-   * @var string
-   */
-  public $dt_date_local = '';
-
-  /**
-   * The maximum capacity of the class or event session.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_capacity;
-
-  /**
-   * Count client on the attendance.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_client;
-
-  /**
-   * The maximum number of clients on wait list of the class or event session.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_wait_list_limit;
-
-  /**
-   * If <tt>true</tt>, then return the purchase used to pay for session.
-   * Otherwise <tt>false</tt>, do not return any purchase information.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_purchase_info_return = false;
-
-  /**
-   * `true` to use class/event specific wait list limit, `false` to use the limit from default policies.
-   * `false` for appointments.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_wait_list_limit;
-
-  /**
-   * The appointment key. Not used if requesting information for a class or event session.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_appointment = '0';
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The class period key. Not used if requesting information for an appointment.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * The Location key.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_location;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Attendance;
+
+use WellnessLiving\Core\a\AGenderSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Visit\WlVisitSid;
+use WellnessLiving\Wl\WlProgramSid;
+
+/**
+ * Retrieves information about clients attending a class, appointment, or event session.
+ */
+class AttendanceListModel extends WlModelAbstract
+{
+  /**
+   * The list of clients in the active attendance list who haven't confirmed or canceled.
+   * Each element is an array with the following fields:
+   * <dl>
+   *   <dt>array <var>a_photo</var></dt>
+   *   <dd>
+   *     Information about the user's photo. The information returned has the following structure:
+   *     <dl>
+   *       <dt>int <var>i_height</var></dt>
+   *       <dd>The height of the photo.</dd>
+   *       <dt>int <var>i_width</var></dt>
+   *       <dd>The width of the photo.</dd>
+   *       <dt>string <var>is_empty</var></dt>
+   *       <dd>This will be <tt>true</tt> if a photo hasn't been set yet.</dd>
+   *       <dt>string <var>s_url</var></dt>
+   *       <dd>The URL of the photo.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>array <var>a_progress</var></dt>
+   *   <dd>Information about a user's current progress. By default, this information isn't sent.</dd>
+   *   <dt>array <var>a_quiz</var></dt>
+   *   <dd>Quiz information that concerns current visit.</dd>
+   *   <dt>array <var>a_resource</var></dt>
+   *   <dd>A list of information for any associated resources for this visit.</dd>
+   *   <dt>array <var>a_wait_confirm</var></dt>
+   *   <dd>The list of visit keys for clients on the wait list.</dd>
+   *   <dt>array <var>a_wearable</var></dt>
+   *   <dd>A list of information pertaining to the client's wearables.</dd>
+   *   <dt>bool <var>can_profile</var></dt>
+   *   <dd>If <tt>true</tt>, the current user can access this client profile.</dd>
+   *   <dt>string <var>dt_book</var></dt>
+   *   <dd>The date the session was booked, in UTC.</dd>
+   *   <dt>string <var>dt_date</var></dt>
+   *   <dd>The date of the session, in UTC.</dd>
+   *   <dt>string <var>dt_expire</var></dt>
+   *   <dd>The date the Purchase Option that was used will expire, in UTC.</dd>
+   *   <dt>string <var>dt_register</var></dt>
+   *   <dd>The date the client checked in for the visit, in UTC.</dd>
+   *   <dt>string <var>html_age</var></dt>
+   *   <dd>The client age.</dd>
+   *   <dt>string <var>html_book_by</var></dt>
+   *   <dd>The name of the person who booked this visit.</dd>
+   *   <dt>string <var>html_gender_class</var></dt>
+   *   <dd>The name of the icon to show under gender in the class attendance list.</dd>
+   *   <dt>string <var>html_member</var></dt>
+   *   <dd>The client's member ID, if set.</dd>
+   *   <dt>string <var>html_tooltip_book_by</var></dt>
+   *   <dd>When and where this visit was booked, along with who booked it.</dd>
+   *   <dt>int <var>i</var></dt>
+   *   <dd>The default place in the list to show this client. This is a deprecated copy of the <tt>i_order</tt> field.</dd>
+   *   <dt>int <var>i_left</var></dt>
+   *   <dd>The number of visits left on this Purchase Option. This will be <tt>NULL</tt> if there's no limit.</dd>
+   *   <dt>int <var>i_order</var></dt>
+   *   <dd>The default place in the list to show this client.</dd>
+   *   <dt>int <var>i_total</var></dt>
+   *   <dd>The total visits available from this Purchase Option.</dd>
+   *   <dt>int <var>id_gender</var></dt>
+   *   <dd>The gender ID of the client. One of the {@link AGenderSid} constants.</dd>
+   *   <dt>int <var>id_pass_prospect</var></dt>
+   *   <dd>If this visit was paid for by an external system, this ID will be set. Otherwise, it will be <tt>0</tt>.</dd>
+   *   <dt>int <var>id_program</var></dt>
+   *   <dd>The program ID of the Purchase Option. One of the {@link WlProgramSid} constants.</dd>
+   *   <dt>int <var>id_visit</var></dt>
+   *   <dd>The status of the visit. One of the {@link WlVisitSid} constants.</dd>
+   *   <dt>bool <var>is_attend</var></dt>
+   *   <dd>This will be <tt>true</tt> if the client has attended the visit.</dd>
+   *   <dt>bool <var>is_duration_pass</var></dt>
+   *   <dd>This will be <tt>true</tt> if the Purchase Option used is a duration pass.</dd>
+   *   <dt>bool <var>is_deposit</var></dt>
+   *   <dd>This will be <tt>true</tt> if the client has paid a deposit for the visit.</dd>
+   *   <dt>bool <var>is_early</var></dt>
+   *   <dd>This will be <tt>true</tt> if the client has canceled the visit early, incurring no penalty.
+   *     This will be <tt>false</tt> if canceled late or if not canceled at all.
+   *   </dd>
+   *   <dt>bool <var>is_free</var></dt>
+   *   <dd>This will be <tt>true</tt> if the visit is free.</dd>
+   *   <dt>bool <var>is_hidden</var></dt>
+   *   <dd>This will be <tt>true</tt> if details on this visit should be hidden from staff members.</dd>
+   *   <dt>bool <var>is_penalty</var></dt>
+   *   <dd>This will be <tt>true</tt> if this visit was cancelled late and a penalty is applied.</dd>
+   *   <dt>bool <var>is_promotion_first</var></dt>
+   *   <dd>This will be <tt>true</tt> if this was the first visit for the Purchase Option used.</dd>
+   *   <dt>bool <var>is_promotion_last</var></dt>
+   *   <dd>This will be <tt>true</tt> if this was the latest visit for the Purchase Option used.</dd>
+   *   <dt>bool <var>is_unlimited</var></dt>
+   *   <dd>This will be <tt>true</tt> if the Purchase Option used has no usage limits.</dd>
+   *   <dt>bool <var>is_visit</var></dt>
+   *   <dd>This will be <tt>true</tt> if this visit is still considered valid.
+   *     If visit was removed by the system or a staff member, this will be <tt>false</tt>.</dd>
+   *   <dt>bool <var>is_wait</var></dt>
+   *   <dd>This will be <tt>true</tt> if the visit is on the waiting list.</dd>
+   *   <dt>bool <var>is_wait_confirm</var></dt>
+   *   <dd>This will be <tt>true</tt> if the visit is awaiting confirmation.</dd>
+   *   <dt>bool <var>is_wait_priority</var></dt>
+   *   <dd>This will be <tt>true</tt> if the visit has priority on the wait list.</dd>
+   *   <dt>string <var>k_location</var></dt>
+   *   <dd>The key of the location.</dd>
+   *   <dt>string <var>k_login_promotion</var></dt>
+   *   <dd>The key of the client's Purchase Option.</dd>
+   *   <dt>string <var>k_visit</var></dt>
+   *   <dd>The key of the visit.</dd>
+   *   <dt>array <var>[o_purchase_item]</var></dt>
+   *   <dd>The purchase used to pay for the session.</dd>
+   *   <dt>string <var>s_expire</var></dt>
+   *   <dd>The expiry information for the Purchase Option. This field is deprecated, use the text_ version instead.</dd>
+   *   <dt>string <var>s_firstname</var></dt>
+   *   <dd>The client's first name. This field is deprecated, use the text_ version instead.</dd>
+   *   <dt>string <var>s_lastname</var></dt>
+   *   <dd>The client's last name. This field is deprecated, use the text_ version instead.</dd>
+   *   <dt>string <var>s_note</var></dt>
+   *   <dd>Any notes tied to the client. This field is deprecated, use the text_ version instead.</dd>
+   *   <dt>string <var>s_promotion</var></dt>
+   *   <dd>The description of the type of Purchase Option. This field is deprecated, use the text_ version instead.</dd>
+   *   <dt>string <var>text_expire</var></dt>
+   *   <dd>The expiry information for the Purchase Option.</dd>
+   *   <dt>string <var>text_firstname</var></dt>
+   *   <dd>The client first name.</dd>
+   *   <dt>string <var>text_lastname</var></dt>
+   *   <dd>The client last name.</dd>
+   *   <dt>string <var>text_note</var></dt>
+   *   <dd>Any notes tied to the client.</dd>
+   *   <dt>string <var>text_promotion</var></dt>
+   *   <dd>The description of the type of Purchase Option.</dd>
+   *   <dt>string <var>text_restrict_title</var></dt>
+   *   <dd>The Purchase Option restriction description. It can be empty string when the Purchase Option has no restrictions.</dd>
+   *   <dt>string <var>text_visit_status_class</var></dt>
+   *   <dd>The class visit status.</dd>
+   *   <dt>string <var>text_visit_status_icon</var></dt>
+   *   <dd>The icon to use for the class visit status.</dd>
+   *   <dt>string <var>text_wearable</var></dt>
+   *   <dd>The wearable device ID.</dd>
+   *   <dt>string <var>uid</var></dt>
+   *   <dd>The client user key.</dd>
+   *   <dt>string <var>uid_book</var></dt>
+   *   <dd>
+   *     The key of the user who made the booking.
+   *     If differing from <tt>uid</tt>, the booking could have been made by a staff or family member.
+   *   </dd>
+   *   <dt>string <var>url-cancel</var></dt>
+   *   <dd>The URL that can be used to cancel the visit.</dd>
+   *   <dt>string <var>url-cancel-admin</var></dt>
+   *   <dd>The URL that can be used by an admin to cancel the visit.</dd>
+   *   <dt>string <var>url-login-view</var></dt>
+   *   <dd>The URL that for the user's page.</dd>
+   *   <dt>string <var>url-mail</var></dt>
+   *   <dd>The URL to a page for sending an email to the client.</dd>
+   *   <dt>string <var>url-profile</var></dt>
+   *   <dd>The URL that for the client's profile.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_list_active;
+
+  /**
+   * The list of clients who have confirmed their attendance.
+   * Has the same structure as {@link AttendanceListModel::$a_list_active} property.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_list_confirm;
+
+  /**
+   * The list of clients who are on the wait list.
+   * Has the same structure as {@link AttendanceListModel::$a_list_active} property.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_list_wait;
+
+  /**
+   * The local date of the class or event session.
+   *
+   * @get get
+   * @var string
+   */
+  public $dt_date_local = '';
+
+  /**
+   * The maximum capacity of the class or event session.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_capacity;
+
+  /**
+   * Count client on the attendance.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_client;
+
+  /**
+   * The maximum number of clients on wait list of the class or event session.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_wait_list_limit;
+
+  /**
+   * If <tt>true</tt>, then return the purchase used to pay for session.
+   * Otherwise <tt>false</tt>, do not return any purchase information.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_purchase_info_return = false;
+
+  /**
+   * `true` to use class/event specific wait list limit, `false` to use the limit from default policies.
+   * `false` for appointments.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_wait_list_limit;
+
+  /**
+   * The appointment key. Not used if requesting information for a class or event session.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_appointment = '0';
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The class period key. Not used if requesting information for an appointment.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * The Location key.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_location;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Coupon/CouponModel.php b/WellnessLiving/Wl/Login/Coupon/CouponModel.php
index e32be12f..dfed7259 100644
--- a/WellnessLiving/Wl/Login/Coupon/CouponModel.php
+++ b/WellnessLiving/Wl/Login/Coupon/CouponModel.php
@@ -1,46 +1,46 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Coupon;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves information about a gift card (also referred to as the coupon code).
- */
-class CouponModel extends WlModelAbstract
-{
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The gift card reference number for this specific user. WellnessLiving uses this reference number for managing
-   * gift cards in the system.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_login_coupon;
-
-  /**
-   * The gift card amount.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_amount;
-
-  /**
-   * The gift card.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_code;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Coupon;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves information about a gift card (also referred to as the coupon code).
+ */
+class CouponModel extends WlModelAbstract
+{
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The gift card reference number for this specific user. WellnessLiving uses this reference number for managing
+   * gift cards in the system.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_login_coupon;
+
+  /**
+   * The gift card amount.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_amount;
+
+  /**
+   * The gift card.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_code;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Mail/MailUseModel.php b/WellnessLiving/Wl/Login/Mail/MailUseModel.php
index ad062f31..e2d6c6b1 100644
--- a/WellnessLiving/Wl/Login/Mail/MailUseModel.php
+++ b/WellnessLiving/Wl/Login/Mail/MailUseModel.php
@@ -1,38 +1,38 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Mail;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * An endpoint to check if an email address is used by member of a business.
- */
-class MailUseModel extends WlModelAbstract
-{
-  /**
-   * If <tt>true</tt>, the user with the specified email address exists in specified business. Otherwise, this will
-   * be <tt>false</tt>.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_exists;
-
-  /**
-   * The business for which the email address search is being performed.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The email address to check for.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_mail;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Mail;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * An endpoint to check if an email address is used by member of a business.
+ */
+class MailUseModel extends WlModelAbstract
+{
+  /**
+   * If <tt>true</tt>, the user with the specified email address exists in specified business. Otherwise, this will
+   * be <tt>false</tt>.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_exists;
+
+  /**
+   * The business for which the email address search is being performed.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The email address to check for.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_mail;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Member/MemberModel.php b/WellnessLiving/Wl/Login/Member/MemberModel.php
index bec9e11a..1f1ae180 100644
--- a/WellnessLiving/Wl/Login/Member/MemberModel.php
+++ b/WellnessLiving/Wl/Login/Member/MemberModel.php
@@ -1,68 +1,68 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Member;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Displays information about members of businesses.
- */
-class MemberModel extends WlModelAbstract
-{
-  /**
-   * A list of businesses where the client is present. Every element is an array with the following keys:
-   * <dl>
-   *   <dt>
-   *     bool <var>can_enter</var>
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> if user is allowed to sign in into this business; <tt>false</tt> otherwise.
-   *
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_franchisee</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, then the business is a franchisee. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_franchisor</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, then the business is a franchisor. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_business</var>
-   *   </dt>
-   *   <dd>
-   *     The business key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_business_franchisor</var>
-   *   </dt>
-   *   <dd>
-   *     The business key of the Enterprise Headquarters account (if applicable).
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title of the business.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_business;
-
-  /**
-   * The user's key.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Member;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Displays information about members of businesses.
+ */
+class MemberModel extends WlModelAbstract
+{
+  /**
+   * A list of businesses where the client is present. Every element is an array with the following keys:
+   * <dl>
+   *   <dt>
+   *     bool <var>can_enter</var>
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> if user is allowed to sign in into this business; <tt>false</tt> otherwise.
+   *
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_franchisee</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, then the business is a franchisee. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_franchisor</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, then the business is a franchisor. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_business</var>
+   *   </dt>
+   *   <dd>
+   *     The business key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_business_franchisor</var>
+   *   </dt>
+   *   <dd>
+   *     The business key of the Enterprise Headquarters account (if applicable).
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     The title of the business.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_business;
+
+  /**
+   * The user's key.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Member/MemberValidateModel.php b/WellnessLiving/Wl/Login/Member/MemberValidateModel.php
index 627ff057..77be264d 100644
--- a/WellnessLiving/Wl/Login/Member/MemberValidateModel.php
+++ b/WellnessLiving/Wl/Login/Member/MemberValidateModel.php
@@ -1,102 +1,102 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Member;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Checking whether there is something that prevents the user from using the business.
- */
-class MemberValidateModel extends WlModelAbstract
-{
-  /**
-   * List of fields if the user has empty profile fields, which are required for booking.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_empty_fields_booking = [];
-
-  /**
-   * List of fields if the user has empty profile fields, which are required for registration.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_empty_fields_registration = [];
-
-  /**
-   * `true` If the user has credit cards on profile, otherwise `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $has_credit_card = false;
-
-  /**
-   * `true` if the user has an outstanding contract, otherwise `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $has_outstanding_contract = false;
-
-  /**
-   * `true` If the user has an outstanding waiver for the business, otherwise `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $has_outstanding_waiver = false;
-
-  /**
-   * `true` If the user has pending registration quizzes to complete, otherwise `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $has_pending_quizzes = false;
-
-  /**
-   * `true` If the user has to provide credit card details before booking, otherwise `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_booking_require_card = false;
-
-  /**
-   * `true` If the user has to provide credit card details to finish their registration, otherwise `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_register_require_card = false;
-
-  /**
-   * Key of the business.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * Home user`s location.
-   * `null` if user has not home location.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $k_location = null;
-
-  /**
-   * The user's key.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Member;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Checking whether there is something that prevents the user from using the business.
+ */
+class MemberValidateModel extends WlModelAbstract
+{
+  /**
+   * List of fields if the user has empty profile fields, which are required for booking.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_empty_fields_booking = [];
+
+  /**
+   * List of fields if the user has empty profile fields, which are required for registration.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_empty_fields_registration = [];
+
+  /**
+   * `true` If the user has credit cards on profile, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_credit_card = false;
+
+  /**
+   * `true` if the user has an outstanding contract, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_outstanding_contract = false;
+
+  /**
+   * `true` If the user has an outstanding waiver for the business, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_outstanding_waiver = false;
+
+  /**
+   * `true` If the user has pending registration quizzes to complete, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_pending_quizzes = false;
+
+  /**
+   * `true` If the user has to provide credit card details before booking, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_booking_require_card = false;
+
+  /**
+   * `true` If the user has to provide credit card details to finish their registration, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_register_require_card = false;
+
+  /**
+   * Key of the business.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * Home user`s location.
+   * `null` if user has not home location.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $k_location = null;
+
+  /**
+   * The user's key.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Permission/PermissionModel.php b/WellnessLiving/Wl/Login/Permission/PermissionModel.php
index 42ca91d9..6f21984d 100644
--- a/WellnessLiving/Wl/Login/Permission/PermissionModel.php
+++ b/WellnessLiving/Wl/Login/Permission/PermissionModel.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Permission;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Makes a purchased promotion auto-renewable.
- *
- * The POST method makes the promotion auto-renewable based on the {@link PermissionModel::$is_renew} parameter.
- */
-class PermissionModel extends WlModelAbstract
-{
-  /**
-   * If `true`, the purchased promotion has been made auto-renewable. Otherwise, this will be `false`.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_renew = false;
-
-  /**
-   * The key of the purchased promotion.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_login_promotion = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Permission;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Makes a purchased promotion auto-renewable.
+ *
+ * The POST method makes the promotion auto-renewable based on the {@link PermissionModel::$is_renew} parameter.
+ */
+class PermissionModel extends WlModelAbstract
+{
+  /**
+   * If `true`, the purchased promotion has been made auto-renewable. Otherwise, this will be `false`.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_renew = false;
+
+  /**
+   * The key of the purchased promotion.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_login_promotion = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php b/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php
index d37e904a..1390052c 100644
--- a/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php
+++ b/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php
@@ -1,194 +1,194 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Promotion\Convert;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Promotion\Convert\PromotionConvertSid;
-use WellnessLiving\Wl\WlProgramSid;
-
-/**
- * Receives convertable Purchase Option data and promotion conversions.
- *
- * The DELETE method will remove the conversion and reset the date.
- * The GET method will return a list of promotions available at the business.
- * The POST method can be used to change what the Purchase Option should convert to and when to convert it.
- */
-class ConvertModel extends WlModelAbstract
-{
-  /**
-   * Promotion data containing the following structure:<dl>
-   *   <dt>string <var>k_promotion</var></dt>
-   *   <dd>The promotion key.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>The title of the promotion.</dd>
-   *   <dt>int <var>id_program</var></dt>
-   *   <dd>One of {@link WlProgramSid} constants.</dd>
-   *   <dt>bool <var>is_select</var></dt>
-   *   <dd>If <tt>true</tt>, the promotion is related to the service. Otherwise, this will be <tt>false</tt>.</dd>
-   * </dl>.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_promotion;
-
-  /**
-   * The conversion date, in the local time zone.
-   *
-   * @post get
-   * @var string
-   */
-  public $dl_convert = '';
-
-  /**
-   * The last date on what conversion can be scheduled.
-   *
-   * @get result
-   * @var string
-   */
-  public $dl_convert_max = '';
-
-  /**
-   * The first date on what conversion can be scheduled.
-   *
-   * @get result
-   * @var string
-   */
-  public $dl_convert_min = '';
-
-  /**
-   * Local date, when hold ends, if PO is on hold right now.
-   * Empty if PO is not on hold, or hold is endless.
-   *
-   * @get result
-   * @var string
-   */
-  public $dl_hold_end = '';
-
-  /**
-   * Local date, when hold starts, if PO is on hold right now.
-   * Empty if PO is not on hold.
-   *
-   * @get result
-   * @var string
-   */
-  public $dl_hold_start = '';
-
-  /**
-   * The conversion ID. One of the {@link PromotionConvertSid} constants.
-   *
-   * @get result
-   * @post get
-   * @var string
-   */
-  public $id_convert = null;
-
-  /**
-   * When conversion should be done. One of the {@link ConvertWhenSid} constants.
-   *
-   * `null` if it's not set yet.
-   *
-   * @get result
-   * @post get
-   * @var int|null
-   */
-  public $id_convert_when = null;
-
-  /**
-   * Determines whether the conversion request is new or editing an existing conversion.
-   *
-   * If `true`, the conversion exists. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_edit = false;
-
-  /**
-   * `true` if PO is going to be renewed and not converted.
-   * `false` if PO is going to expire or to convert.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_renew = false;
-
-  /**
-   * The business key.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The login promotion key.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_login_promotion = '';
-
-  /**
-   * The promotion key the given promotion will be converted to.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_promotion_to = '';
-
-  /**
-   * The existing conversion date, returned as a string for the datepicker.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_date_convert = '';
-
-  /**
-   * The current date, returned as a string.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_date_now = '';
-
-  /**
-   * The Purchase Option title.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_title = '';
-
-  /**
-   * Expiration date in string user-friendly format.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_date_expire = '';
-
-  /**
-   * Next payment date in string user-friendly format.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_date_payment = '';
-
-  /**
-   * The note for the promotion conversion.
-   *
-   * @get result
-   * @post get
-   * @var string|null
-   */
-  public $text_note = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Promotion\Convert;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Promotion\Convert\PromotionConvertSid;
+use WellnessLiving\Wl\WlProgramSid;
+
+/**
+ * Receives convertable Purchase Option data and promotion conversions.
+ *
+ * The DELETE method will remove the conversion and reset the date.
+ * The GET method will return a list of promotions available at the business.
+ * The POST method can be used to change what the Purchase Option should convert to and when to convert it.
+ */
+class ConvertModel extends WlModelAbstract
+{
+  /**
+   * Promotion data containing the following structure:<dl>
+   *   <dt>string <var>k_promotion</var></dt>
+   *   <dd>The promotion key.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>The title of the promotion.</dd>
+   *   <dt>int <var>id_program</var></dt>
+   *   <dd>One of {@link WlProgramSid} constants.</dd>
+   *   <dt>bool <var>is_select</var></dt>
+   *   <dd>If <tt>true</tt>, the promotion is related to the service. Otherwise, this will be <tt>false</tt>.</dd>
+   * </dl>.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_promotion;
+
+  /**
+   * The conversion date, in the local time zone.
+   *
+   * @post get
+   * @var string
+   */
+  public $dl_convert = '';
+
+  /**
+   * The last date on what conversion can be scheduled.
+   *
+   * @get result
+   * @var string
+   */
+  public $dl_convert_max = '';
+
+  /**
+   * The first date on what conversion can be scheduled.
+   *
+   * @get result
+   * @var string
+   */
+  public $dl_convert_min = '';
+
+  /**
+   * Local date, when hold ends, if PO is on hold right now.
+   * Empty if PO is not on hold, or hold is endless.
+   *
+   * @get result
+   * @var string
+   */
+  public $dl_hold_end = '';
+
+  /**
+   * Local date, when hold starts, if PO is on hold right now.
+   * Empty if PO is not on hold.
+   *
+   * @get result
+   * @var string
+   */
+  public $dl_hold_start = '';
+
+  /**
+   * The conversion ID. One of the {@link PromotionConvertSid} constants.
+   *
+   * @get result
+   * @post get
+   * @var string
+   */
+  public $id_convert = null;
+
+  /**
+   * When conversion should be done. One of the {@link ConvertWhenSid} constants.
+   *
+   * `null` if it's not set yet.
+   *
+   * @get result
+   * @post get
+   * @var int|null
+   */
+  public $id_convert_when = null;
+
+  /**
+   * Determines whether the conversion request is new or editing an existing conversion.
+   *
+   * If `true`, the conversion exists. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_edit = false;
+
+  /**
+   * `true` if PO is going to be renewed and not converted.
+   * `false` if PO is going to expire or to convert.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_renew = false;
+
+  /**
+   * The business key.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The login promotion key.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_login_promotion = '';
+
+  /**
+   * The promotion key the given promotion will be converted to.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_promotion_to = '';
+
+  /**
+   * The existing conversion date, returned as a string for the datepicker.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_date_convert = '';
+
+  /**
+   * The current date, returned as a string.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_date_now = '';
+
+  /**
+   * The Purchase Option title.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_title = '';
+
+  /**
+   * Expiration date in string user-friendly format.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_date_expire = '';
+
+  /**
+   * Next payment date in string user-friendly format.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_date_payment = '';
+
+  /**
+   * The note for the promotion conversion.
+   *
+   * @get result
+   * @post get
+   * @var string|null
+   */
+  public $text_note = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php b/WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php
index a218d31e..e55e29cb 100644
--- a/WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php
+++ b/WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Promotion\Convert;
-
-/**
- * Different types of conversion behavior: when and how it should be converted.
- */
-class ConvertWhenSid
-{
-  /**
-   * Purchase Option converts one day after the scheduled expiration date and the client is charged for the new purchase option.
-   */
-  const EXPIRATION_PAID = 1;
-
-  /**
-   * Purchase Option converts now and the client is not charged for the new Purchase Option.
-   */
-  const NOW_FREE = 2;
-
-  /**
-   * Purchase Option converts now and the client is changed for the new Purchase Option.
-   */
-  const NOW_PAID = 3;
-
-  /**
-   * Purchase Option converts on the specified date and the client is charged for the new Purchase Option.
-   */
-  const SCHEDULE_PAID = 4;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Promotion\Convert;
+
+/**
+ * Different types of conversion behavior: when and how it should be converted.
+ */
+class ConvertWhenSid
+{
+  /**
+   * Purchase Option converts one day after the scheduled expiration date and the client is charged for the new purchase option.
+   */
+  const EXPIRATION_PAID = 1;
+
+  /**
+   * Purchase Option converts now and the client is not charged for the new Purchase Option.
+   */
+  const NOW_FREE = 2;
+
+  /**
+   * Purchase Option converts now and the client is changed for the new Purchase Option.
+   */
+  const NOW_PAID = 3;
+
+  /**
+   * Purchase Option converts on the specified date and the client is charged for the new Purchase Option.
+   */
+  const SCHEDULE_PAID = 4;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Promotion/PromotionPayPauseModel.php b/WellnessLiving/Wl/Login/Promotion/PromotionPayPauseModel.php
index a72fc94c..ce38adf5 100644
--- a/WellnessLiving/Wl/Login/Promotion/PromotionPayPauseModel.php
+++ b/WellnessLiving/Wl/Login/Promotion/PromotionPayPauseModel.php
@@ -1,142 +1,142 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Promotion;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Manages or retrieves information about holds on Purchase Options.
- *
- * The DELETE method can remove a hold.
- * The GET method only returns information about active holds.
- * The POST method can create or edit a hold.
- * The PUT method can edit a hold.
- */
-class PromotionPayPauseModel extends WlModelAbstract
-{
-  /**
-   * List of all promotion payment pause periods. Each element has next structure:<dl>
-   *   <dt>string|null <var>dl_create</var></dt>
-   *   <dd>Date when this hold period was created. <tt>null</tt> for old records.</dd>
-   *   <dt>string <var>dl_end</var></dt>
-   *   <dd>
-   *     Ending date of the pause (inclusively - this date is paused).
-   *     This field contains zero date for promotions placed on hold indefinitely.
-   *   </dd>
-   *   <dt>string <var>dl_start</var></dt>
-   *   <dd>Starting date of the pause (inclusively - this date is paused).</dd>
-   *   <dt>int|null <var>i_hold_day</var></dt>
-   *   <dd>Duration of the hold in days. <tt>null</tt> if the hold is ongoing.</dd>
-   *   <dt>bool <var>is_past</var></dt>
-   *   <dd>Whether the hold is in past.</dd>
-   *   <dt>string <var>k_promotion_pay_pause</var></dt>
-   *   <dd>Key of the hold period.</dd>
-   *   <dt>string|null <var>text_note</var></dt>
-   *   <dd>Additional notes.</dd>
-   *   <dt>string|null <var>text_user_create</var></dt>
-   *   <dd>Full name of a user that has created hold period. <tt>null</tt> for old records.</dd>
-   *   <dt>string|null <var>uid_create</var></dt>
-   *   <dd>Key of a user that has created hold period. <tt>null</tt> for old records.</dd>
-   * </dl>
-   *
-   * <tt>null</tt> if {@link PromotionPayPauseModel::$is_list} is false.
-   *
-   * @get result
-   * @var array[]|null
-   */
-  public $a_pay_pause_list = null;
-
-  /**
-   * The end date of the current hold, in the local time zone.
-   * This can be set to a special value to make the period indefinite until further action.
-   *
-   * `null` if it shouldn't be updated.
-   *
-   * @get get,result
-   * @post get
-   * @put get
-   * @var string|null
-   */
-  public $dt_end = null;
-
-  /**
-   * The start date of the current hold, in the local time zone.
-   *
-   * `null` if it shouldn't be updated.
-   *
-   * @get get,result
-   * @post get
-   * @put get
-   * @var string|null
-   */
-  public $dt_start = null;
-
-  /**
-   * Whether need to get all pause periods for the login promotion.
-   * If <tt>true</tt> then {@link PromotionPayPauseModel::$a_pay_pause_list} will be returned.
-   * If <tt>false</tt> then information about specified {@link PromotionPayPauseModel::$k_promotion_pay_pause} or
-   * currently active pause period will be returned ({@link PromotionPayPauseModel::$dt_start},
-   * {@link PromotionPayPauseModel::$dt_end} and {@link PromotionPayPauseModel::$text_note}).
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_list = false;
-
-  /**
-   * Key of business to which currently handled pause period or login promotion belongs.
-   *
-   * <tt>null</tt> if not initialized.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @put get
-   * @var string|null
-   */
-  public $k_business = null;
-
-  /**
-   * The Purchase Option key. If this key is used, a new hold will be created. The endpoint will return a `start-cross`
-   * status code if a hold is already in place.
-   *
-   * Ignored if {@link PromotionPayPauseModel::$k_promotion_pay_pause} is provided.
-   *
-   * `null` if not yet initialized.
-   *
-   * @delete get
-   * @get get,result
-   * @post get
-   * @var string|null
-   */
-  public $k_login_promotion = null;
-
-  /**
-   * The promotion payment hold key. If this key is used, it will edit an existing hold.
-   * This key will be empty if there's no active hold in place or if a scheduled hold isn't in effect.
-   *
-   * `null` if not yet initialized or if the request is based on {@link PromotionPayPauseModel::$k_login_promotion}.
-   *
-   * @delete get
-   * @get get,result
-   * @post get,result
-   * @put get,result
-   * @var string|null
-   */
-  public $k_promotion_pay_pause = null;
-
-  /**
-   * Additional notes for the promotion payment pause period.
-   * Leave this field as `null` if the note shouldn't be updated.
-   *
-   * `null` if it shouldn't be updated.
-   *
-   * @get result
-   * @post post
-   * @put post
-   * @var string|null
-   */
-  public $text_note = null;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Promotion;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Manages or retrieves information about holds on Purchase Options.
+ *
+ * The DELETE method can remove a hold.
+ * The GET method only returns information about active holds.
+ * The POST method can create or edit a hold.
+ * The PUT method can edit a hold.
+ */
+class PromotionPayPauseModel extends WlModelAbstract
+{
+  /**
+   * List of all promotion payment pause periods. Each element has next structure:<dl>
+   *   <dt>string|null <var>dl_create</var></dt>
+   *   <dd>Date when this hold period was created. <tt>null</tt> for old records.</dd>
+   *   <dt>string <var>dl_end</var></dt>
+   *   <dd>
+   *     Ending date of the pause (inclusively - this date is paused).
+   *     This field contains zero date for promotions placed on hold indefinitely.
+   *   </dd>
+   *   <dt>string <var>dl_start</var></dt>
+   *   <dd>Starting date of the pause (inclusively - this date is paused).</dd>
+   *   <dt>int|null <var>i_hold_day</var></dt>
+   *   <dd>Duration of the hold in days. <tt>null</tt> if the hold is ongoing.</dd>
+   *   <dt>bool <var>is_past</var></dt>
+   *   <dd>Whether the hold is in past.</dd>
+   *   <dt>string <var>k_promotion_pay_pause</var></dt>
+   *   <dd>Key of the hold period.</dd>
+   *   <dt>string|null <var>text_note</var></dt>
+   *   <dd>Additional notes.</dd>
+   *   <dt>string|null <var>text_user_create</var></dt>
+   *   <dd>Full name of a user that has created hold period. <tt>null</tt> for old records.</dd>
+   *   <dt>string|null <var>uid_create</var></dt>
+   *   <dd>Key of a user that has created hold period. <tt>null</tt> for old records.</dd>
+   * </dl>
+   *
+   * <tt>null</tt> if {@link PromotionPayPauseModel::$is_list} is false.
+   *
+   * @get result
+   * @var array[]|null
+   */
+  public $a_pay_pause_list = null;
+
+  /**
+   * The end date of the current hold, in the local time zone.
+   * This can be set to a special value to make the period indefinite until further action.
+   *
+   * `null` if it shouldn't be updated.
+   *
+   * @get get,result
+   * @post get
+   * @put get
+   * @var string|null
+   */
+  public $dt_end = null;
+
+  /**
+   * The start date of the current hold, in the local time zone.
+   *
+   * `null` if it shouldn't be updated.
+   *
+   * @get get,result
+   * @post get
+   * @put get
+   * @var string|null
+   */
+  public $dt_start = null;
+
+  /**
+   * Whether need to get all pause periods for the login promotion.
+   * If <tt>true</tt> then {@link PromotionPayPauseModel::$a_pay_pause_list} will be returned.
+   * If <tt>false</tt> then information about specified {@link PromotionPayPauseModel::$k_promotion_pay_pause} or
+   * currently active pause period will be returned ({@link PromotionPayPauseModel::$dt_start},
+   * {@link PromotionPayPauseModel::$dt_end} and {@link PromotionPayPauseModel::$text_note}).
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_list = false;
+
+  /**
+   * Key of business to which currently handled pause period or login promotion belongs.
+   *
+   * <tt>null</tt> if not initialized.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @put get
+   * @var string|null
+   */
+  public $k_business = null;
+
+  /**
+   * The Purchase Option key. If this key is used, a new hold will be created. The endpoint will return a `start-cross`
+   * status code if a hold is already in place.
+   *
+   * Ignored if {@link PromotionPayPauseModel::$k_promotion_pay_pause} is provided.
+   *
+   * `null` if not yet initialized.
+   *
+   * @delete get
+   * @get get,result
+   * @post get
+   * @var string|null
+   */
+  public $k_login_promotion = null;
+
+  /**
+   * The promotion payment hold key. If this key is used, it will edit an existing hold.
+   * This key will be empty if there's no active hold in place or if a scheduled hold isn't in effect.
+   *
+   * `null` if not yet initialized or if the request is based on {@link PromotionPayPauseModel::$k_login_promotion}.
+   *
+   * @delete get
+   * @get get,result
+   * @post get,result
+   * @put get,result
+   * @var string|null
+   */
+  public $k_promotion_pay_pause = null;
+
+  /**
+   * Additional notes for the promotion payment pause period.
+   * Leave this field as `null` if the note shouldn't be updated.
+   *
+   * `null` if it shouldn't be updated.
+   *
+   * @get result
+   * @post post
+   * @put post
+   * @var string|null
+   */
+  public $text_note = null;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Type/SystemSid.php b/WellnessLiving/Wl/Login/Type/SystemSid.php
index f316461f..21ac6bf5 100644
--- a/WellnessLiving/Wl/Login/Type/SystemSid.php
+++ b/WellnessLiving/Wl/Login/Type/SystemSid.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Type;
-
-/**
- * System default client/member types.
- *
- * If user purchases any membership it becomes member.
- * If user purchases any pass it becomes client.
- *
- * Last ID: 3.
- */
-class SystemSid
-{
-  /**
-   * Active client or member.
-   */
-  const ACTIVE = 1;
-
-  /**
-   * Inactive client or member.
-   */
-  const INACTIVE = 2;
-
-  /**
-   * Newcomer, who has not bought anything that can make him a regular client of the business.
-   */
-  const PROSPECT = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Login\Type;
+
+/**
+ * System default client/member types.
+ *
+ * If user purchases any membership it becomes member.
+ * If user purchases any pass it becomes client.
+ *
+ * Last ID: 3.
+ */
+class SystemSid
+{
+  /**
+   * Active client or member.
+   */
+  const ACTIVE = 1;
+
+  /**
+   * Inactive client or member.
+   */
+  const INACTIVE = 2;
+
+  /**
+   * Newcomer, who has not bought anything that can make him a regular client of the business.
+   */
+  const PROSPECT = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Mail/SendMailModel.php b/WellnessLiving/Wl/Mail/SendMailModel.php
index f5b16173..e8aed96d 100644
--- a/WellnessLiving/Wl/Mail/SendMailModel.php
+++ b/WellnessLiving/Wl/Mail/SendMailModel.php
@@ -1,77 +1,77 @@
-<?php
-
-namespace WellnessLiving\Wl\Mail;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Can be used to send email messages.
- */
-class SendMailModel extends WlModelAbstract
-{
-  /**
-   * The business key.
-   *
-   * @post get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The business's mailing address.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_business_mail = '';
-
-  /**
-   * The business name.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_business_name = '';
-
-  /**
-   * The business's reply.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_business_reply = '';
-
-  /**
-   * The campaign name.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_campaign = '';
-
-  /**
-   * The message recipient's address.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_mail = '';
-
-  /**
-   * The message's subject line.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_subject = '';
-
-  /**
-   * The message content.
-   *
-   * @post post
-   * @var string
-   */
-  public $z_html = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Mail;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Can be used to send email messages.
+ */
+class SendMailModel extends WlModelAbstract
+{
+  /**
+   * The business key.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The business's mailing address.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_business_mail = '';
+
+  /**
+   * The business name.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_business_name = '';
+
+  /**
+   * The business's reply.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_business_reply = '';
+
+  /**
+   * The campaign name.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_campaign = '';
+
+  /**
+   * The message recipient's address.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_mail = '';
+
+  /**
+   * The message's subject line.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_subject = '';
+
+  /**
+   * The message content.
+   *
+   * @post post
+   * @var string
+   */
+  public $z_html = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Member/Group/GroupList/ListModel.php b/WellnessLiving/Wl/Member/Group/GroupList/ListModel.php
index c1c4c211..3b98bb8d 100644
--- a/WellnessLiving/Wl/Member/Group/GroupList/ListModel.php
+++ b/WellnessLiving/Wl/Member/Group/GroupList/ListModel.php
@@ -1,88 +1,88 @@
-<?php
-
-namespace WellnessLiving\Wl\Member\Group\GroupList;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Member groups list.
- */
-class ListModel extends WlModelAbstract
-{
-  /**
-   * Member groups list:
-   * <dl>
-   *   <dt>
-   *     string <var>k_member_group</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the member group.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     The name of the member group.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_member_group;
-
-  /**
-   * List of groups to be deleted.
-   *
-   * @delete post
-   * @var array
-   */
-  public $a_member_group_delete = [];
-
-  /**
-   * List of groups in the order in which they will be saved.
-   *
-   * @put post
-   * @var array
-   */
-  public $a_member_group_order = [];
-
-  /**
-   * List of groups for filtering groups of business.
-   *
-   * `null` in the case when need to return all groups of business.
-   *
-   * @get get
-   * @var array|null
-   */
-  public $a_member_group_select = null;
-
-  /**
-   * Whether include "Isaac Churn Risk" group.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_churn_risk = false;
-
-  /**
-   * Whether include a list of members of groups.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_return_members = false;
-
-  /**
-   * The business key.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $k_business = null;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Member\Group\GroupList;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Member groups list.
+ */
+class ListModel extends WlModelAbstract
+{
+  /**
+   * Member groups list:
+   * <dl>
+   *   <dt>
+   *     string <var>k_member_group</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the member group.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     The name of the member group.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_member_group;
+
+  /**
+   * List of groups to be deleted.
+   *
+   * @delete post
+   * @var array
+   */
+  public $a_member_group_delete = [];
+
+  /**
+   * List of groups in the order in which they will be saved.
+   *
+   * @put post
+   * @var array
+   */
+  public $a_member_group_order = [];
+
+  /**
+   * List of groups for filtering groups of business.
+   *
+   * `null` in the case when need to return all groups of business.
+   *
+   * @get get
+   * @var array|null
+   */
+  public $a_member_group_select = null;
+
+  /**
+   * Whether include "Isaac Churn Risk" group.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_churn_risk = false;
+
+  /**
+   * Whether include a list of members of groups.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_return_members = false;
+
+  /**
+   * The business key.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $k_business = null;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Member/Purchase/MemberByPromotionModel.php b/WellnessLiving/Wl/Member/Purchase/MemberByPromotionModel.php
index 5a4319e9..75a7bb3c 100644
--- a/WellnessLiving/Wl/Member/Purchase/MemberByPromotionModel.php
+++ b/WellnessLiving/Wl/Member/Purchase/MemberByPromotionModel.php
@@ -1,71 +1,71 @@
-<?php
-
-namespace WellnessLiving\Wl\Member\Purchase;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Returns a list of active clients with the given Purchase Options.
- *
- * This endpoint returns only active clients using active Purchase Options from the given list.
- *
- * Does not return clients, to which currently signed-in user does not have access to.
- */
-class MemberByPromotionModel extends WlModelAbstract
-{
-  /**
-   * The list of active clients with the given Purchase Options.
-   *
-   * <dl>
-   *   <dt>array[] <var>a_purchase_options</var></dt>
-   *   <dd>
-   *     The list of active Purchase Options. Each element has:
-   *
-   *     <dl>
-   *       <dt>string|null <var>dl_end</var></dt>
-   *       <dd>The date in the location time zone when the Purchase Option expires.
-   *           This will be `null` if the Purchase Option doesn't expire.</dd>
-   *       <dt>string <var>dtu_purchase</var></dt>
-   *       <dd>The global date and time when the Purchase Option was sold.</dd>
-   *       <dt>string|null <var>dl_start</var></dt>
-   *       <dd>The date in location's time zone when the Purchase Option starts.
-   *           This will be `null` if not defined yet. For example, if the starting date is the date of the first visit
-   *           and there haven't been any visits yet.</dd>
-   *       <dt>string|null <var>dl_terminate</var></dt>
-   *       <dd>The date in location time zone when the Purchase Option will be terminated.
-   *           This will be `null` if the Purchase Option isn't scheduled to be terminated.</dd>
-   *       <dt>string <var>k_promotion</var></dt>
-   *       <dd>The key of the Purchase Option.</dd>
-   *     </dl>
-   *   </dd>
-   *
-   *   <dt>string <var>uid</var></dt>
-   *   <dd>The key of the client.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_clients = [];
-
-  /**
-   * The key of the business for which to get a list of clients.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The comma-separated list of the Purchase Option keys.
-   * Only active clients with at least one active Purchase Option from this list will be returned.
-   *
-   * For example: '324,123,11,556'
-   *
-   * @get get
-   * @var string
-   */
-  public $s_promotion_keys = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Member\Purchase;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns a list of active clients with the given Purchase Options.
+ *
+ * This endpoint returns only active clients using active Purchase Options from the given list.
+ *
+ * Does not return clients, to which currently signed-in user does not have access to.
+ */
+class MemberByPromotionModel extends WlModelAbstract
+{
+  /**
+   * The list of active clients with the given Purchase Options.
+   *
+   * <dl>
+   *   <dt>array[] <var>a_purchase_options</var></dt>
+   *   <dd>
+   *     The list of active Purchase Options. Each element has:
+   *
+   *     <dl>
+   *       <dt>string|null <var>dl_end</var></dt>
+   *       <dd>The date in the location time zone when the Purchase Option expires.
+   *           This will be `null` if the Purchase Option doesn't expire.</dd>
+   *       <dt>string <var>dtu_purchase</var></dt>
+   *       <dd>The global date and time when the Purchase Option was sold.</dd>
+   *       <dt>string|null <var>dl_start</var></dt>
+   *       <dd>The date in location's time zone when the Purchase Option starts.
+   *           This will be `null` if not defined yet. For example, if the starting date is the date of the first visit
+   *           and there haven't been any visits yet.</dd>
+   *       <dt>string|null <var>dl_terminate</var></dt>
+   *       <dd>The date in location time zone when the Purchase Option will be terminated.
+   *           This will be `null` if the Purchase Option isn't scheduled to be terminated.</dd>
+   *       <dt>string <var>k_promotion</var></dt>
+   *       <dd>The key of the Purchase Option.</dd>
+   *     </dl>
+   *   </dd>
+   *
+   *   <dt>string <var>uid</var></dt>
+   *   <dd>The key of the client.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_clients = [];
+
+  /**
+   * The key of the business for which to get a list of clients.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The comma-separated list of the Purchase Option keys.
+   * Only active clients with at least one active Purchase Option from this list will be returned.
+   *
+   * For example: '324,123,11,556'
+   *
+   * @get get
+   * @var string
+   */
+  public $s_promotion_keys = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Microsoft/Login/MicrosoftLoginModel.php b/WellnessLiving/Wl/Microsoft/Login/MicrosoftLoginModel.php
index 02bb814d..7518343c 100644
--- a/WellnessLiving/Wl/Microsoft/Login/MicrosoftLoginModel.php
+++ b/WellnessLiving/Wl/Microsoft/Login/MicrosoftLoginModel.php
@@ -1,88 +1,88 @@
-<?php
-
-namespace WellnessLiving\Wl\Microsoft\Login;
-
-use WellnessLiving\Social\Microsoft\LoginModel;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * An endpoint that performs authorization actions with Microsoft.
- */
-class MicrosoftLoginModel extends WlModelAbstract
-{
-  /**
-   * If `true`, the user has a bound Microsoft account. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_exists = false;
-
-  /**
-   * If authorization is performed in a third-party application, set this flag in case of authorization errors.
-   *
-   * @post get
-   * @var bool
-   */
-  public $is_external = false;
-
-  /**
-   * Business in which authorization is performed.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The authorization code that the app requested.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_code = '';
-
-  /**
-   * If a state parameter is included in the request, the same value should appear in the response.
-   * The app should verify that the state values in the request and response are identical.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_state = '';
-
-  /**
-   * The client for whom the Microsoft account will be unlinked.
-   *
-   * @delete get
-   * @get get
-   * @var string
-   */
-  public $uid = '';
-
-  /**
-   * The Microsoft OAuth 2.0 authorization link.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_login = '';
-
-  /**
-   * The Redirect URI for external applications.
-   * The link to the page on which Microsoft will return the result after authorization.
-   *
-   * * All possible links must be registered in the Microsoft application used for authorization.
-   * * WARNING: Do not use this link for a direct redirect. This will present a vulnerability.
-   *
-   * * A {@link LoginModel::$url_login} link will be generated along with this redirect URI.
-   * * When checking the received {@link LoginModel::$s_code} from Microsoft.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $url_redirect = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Microsoft\Login;
+
+use WellnessLiving\Social\Microsoft\LoginModel;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * An endpoint that performs authorization actions with Microsoft.
+ */
+class MicrosoftLoginModel extends WlModelAbstract
+{
+  /**
+   * If `true`, the user has a bound Microsoft account. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_exists = false;
+
+  /**
+   * If authorization is performed in a third-party application, set this flag in case of authorization errors.
+   *
+   * @post get
+   * @var bool
+   */
+  public $is_external = false;
+
+  /**
+   * Business in which authorization is performed.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The authorization code that the app requested.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_code = '';
+
+  /**
+   * If a state parameter is included in the request, the same value should appear in the response.
+   * The app should verify that the state values in the request and response are identical.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_state = '';
+
+  /**
+   * The client for whom the Microsoft account will be unlinked.
+   *
+   * @delete get
+   * @get get
+   * @var string
+   */
+  public $uid = '';
+
+  /**
+   * The Microsoft OAuth 2.0 authorization link.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_login = '';
+
+  /**
+   * The Redirect URI for external applications.
+   * The link to the page on which Microsoft will return the result after authorization.
+   *
+   * * All possible links must be registered in the Microsoft application used for authorization.
+   * * WARNING: Do not use this link for a direct redirect. This will present a vulnerability.
+   *
+   * * A {@link LoginModel::$url_login} link will be generated along with this redirect URI.
+   * * When checking the received {@link LoginModel::$s_code} from Microsoft.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $url_redirect = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Mode/ModeSid.php b/WellnessLiving/Wl/Mode/ModeSid.php
index d13f5f41..b0c585f0 100644
--- a/WellnessLiving/Wl/Mode/ModeSid.php
+++ b/WellnessLiving/Wl/Mode/ModeSid.php
@@ -1,135 +1,135 @@
-<?php
-
-namespace WellnessLiving\Wl\Mode;
-
-/**
- * The source of visit.
- *
- * Last used ID: 25.
- */
-class ModeSid
-{
-  /**
-   * Registered through <tt>Azure</tt>.
-   */
-  const AZURE = 21;
-
-  /**
-   * Visit has been created by <tt>CENTRED</tt>.
-   */
-  const CENTRED = 23;
-
-  /**
-   * Visit has been created by <tt>ClassPass</tt>.
-   */
-  const CLASSPASS_BOOKING = 8;
-
-  /**
-   * Debt paid via collections.
-   */
-  const COLLECTIONS = 22;
-
-  /**
-   * Action made via email.
-   */
-  const EMAIL = 18;
-
-  /**
-   * Indicating that the source is Facebook.
-   */
-  const FACEBOOK = 20;
-
-  /**
-   * Indicating that the source is Google.
-   */
-  const GOOGLE = 19;
-
-  /**
-   * Visit has been created by Google Booking Service.
-   */
-  const GOOGLE_BOOKING = 7;
-
-  /**
-   * Visit has been created by <tt>GymPass</tt>.
-   */
-  const GYMPASS_BOOKING = 14;
-
-  /**
-   * Visit was created during import.
-   */
-  const IMPORT = 5;
-
-  /**
-   * Action made via microsite.
-   *
-   * It is also names as directory listing.
-   */
-  const MICROSITE = 12;
-
-  /**
-   * Indicating that the source is Microsoft.
-   */
-  const MICROSOFT = 24;
-
-  /**
-   * Client booked session on My Presence Site.
-   */
-  const MY_PRESENCE_SITE = 13;
-
-  /**
-   * Action made via SMS.
-   */
-  const SMS = 17;
-
-  /**
-   * Staff booked session from spa backend.
-   */
-  const SPA_BACKEND = 4;
-
-  /**
-   * Client booked session from spa frontend.
-   */
-  const SPA_FRONTEND = 3;
-
-  /**
-   * Created by system.
-   */
-  const SYSTEM = 10;
-
-  /**
-   * Means that we did not define mode.
-   */
-  const UNDEFINED = 6;
-
-  /**
-   * Client booked session from Attendance Web App.
-   */
-  const WEB_APP_ATTENDANCE = 16;
-
-  /**
-   * Client checked-in for the session through Check-In Web App.
-   */
-  const WEB_APP_CHECK_IN = 15;
-
-  /**
-   * Staff booked session for client from website backend.
-   */
-  const WEB_BACKEND = 2;
-
-  /**
-   * Client booked session from website frontend.
-   */
-  const WEB_FRONTEND = 1;
-
-  /**
-   * Action made via widget (purchase, book etc).
-   */
-  const WIDGET = 11;
-
-  /**
-   * Action from Zapier.
-   */
-  const ZAPIER = 25;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Mode;
+
+/**
+ * The source of visit.
+ *
+ * Last used ID: 25.
+ */
+class ModeSid
+{
+  /**
+   * Registered through <tt>Azure</tt>.
+   */
+  const AZURE = 21;
+
+  /**
+   * Visit has been created by <tt>CENTRED</tt>.
+   */
+  const CENTRED = 23;
+
+  /**
+   * Visit has been created by <tt>ClassPass</tt>.
+   */
+  const CLASSPASS_BOOKING = 8;
+
+  /**
+   * Debt paid via collections.
+   */
+  const COLLECTIONS = 22;
+
+  /**
+   * Action made via email.
+   */
+  const EMAIL = 18;
+
+  /**
+   * Indicating that the source is Facebook.
+   */
+  const FACEBOOK = 20;
+
+  /**
+   * Indicating that the source is Google.
+   */
+  const GOOGLE = 19;
+
+  /**
+   * Visit has been created by Google Booking Service.
+   */
+  const GOOGLE_BOOKING = 7;
+
+  /**
+   * Visit has been created by <tt>GymPass</tt>.
+   */
+  const GYMPASS_BOOKING = 14;
+
+  /**
+   * Visit was created during import.
+   */
+  const IMPORT = 5;
+
+  /**
+   * Action made via microsite.
+   *
+   * It is also names as directory listing.
+   */
+  const MICROSITE = 12;
+
+  /**
+   * Indicating that the source is Microsoft.
+   */
+  const MICROSOFT = 24;
+
+  /**
+   * Client booked session on My Presence Site.
+   */
+  const MY_PRESENCE_SITE = 13;
+
+  /**
+   * Action made via SMS.
+   */
+  const SMS = 17;
+
+  /**
+   * Staff booked session from spa backend.
+   */
+  const SPA_BACKEND = 4;
+
+  /**
+   * Client booked session from spa frontend.
+   */
+  const SPA_FRONTEND = 3;
+
+  /**
+   * Created by system.
+   */
+  const SYSTEM = 10;
+
+  /**
+   * Means that we did not define mode.
+   */
+  const UNDEFINED = 6;
+
+  /**
+   * Client booked session from Attendance Web App.
+   */
+  const WEB_APP_ATTENDANCE = 16;
+
+  /**
+   * Client checked-in for the session through Check-In Web App.
+   */
+  const WEB_APP_CHECK_IN = 15;
+
+  /**
+   * Staff booked session for client from website backend.
+   */
+  const WEB_BACKEND = 2;
+
+  /**
+   * Client booked session from website frontend.
+   */
+  const WEB_FRONTEND = 1;
+
+  /**
+   * Action made via widget (purchase, book etc).
+   */
+  const WIDGET = 11;
+
+  /**
+   * Action from Zapier.
+   */
+  const ZAPIER = 25;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Notification/Send/NotificationSendModel.php b/WellnessLiving/Wl/Notification/Send/NotificationSendModel.php
index 9945f719..6737b885 100644
--- a/WellnessLiving/Wl/Notification/Send/NotificationSendModel.php
+++ b/WellnessLiving/Wl/Notification/Send/NotificationSendModel.php
@@ -1,71 +1,71 @@
-<?php
-
-namespace WellnessLiving\Wl\Notification\Send;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * An endpoint that allows to send notifications to users of the certain business or location.
- *
- * This endpoint is available only for user with a special privilege. If you want to use this endpoint, contact
- * with WellnessLiving support first.
- */
-class NotificationSendModel extends WlModelAbstract
-{
-  /**
-   * Custom array with information which can be used to generate notification.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_data = [];
-
-  /**
-   * Date and time in UTC, when notification should be sent. Empty string means to send immediately.
-   *
-   * If date and time are set, it should be reasonable. If it's too far in the future, API returns an error.
-   *
-   * @post post
-   * @var string
-   */
-  public $dtu_send = '';
-
-  /**
-   * ID of the notification.
-   *
-   * Contact with WellnessLiving support to get the list of available notifications.
-   *
-   * @post post
-   * @var int
-   */
-  public $id_notification = 0;
-
-  /**
-   * Key of the business where notification should be sent.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * Key of the location.
-   * If it's not empty, only clients from this location will get notification.
-   * `null` to not limit recipients with a certain location.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $k_location = null;
-
-  /**
-   * List of UIDs joined with comma, if notification should be sent to certain recipients.
-   * Empty string means to send to all clients of the business or location with proper subscription level.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_uid = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Notification\Send;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * An endpoint that allows to send notifications to users of the certain business or location.
+ *
+ * This endpoint is available only for user with a special privilege. If you want to use this endpoint, contact
+ * with WellnessLiving support first.
+ */
+class NotificationSendModel extends WlModelAbstract
+{
+  /**
+   * Custom array with information which can be used to generate notification.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_data = [];
+
+  /**
+   * Date and time in UTC, when notification should be sent. Empty string means to send immediately.
+   *
+   * If date and time are set, it should be reasonable. If it's too far in the future, API returns an error.
+   *
+   * @post post
+   * @var string
+   */
+  public $dtu_send = '';
+
+  /**
+   * ID of the notification.
+   *
+   * Contact with WellnessLiving support to get the list of available notifications.
+   *
+   * @post post
+   * @var int
+   */
+  public $id_notification = 0;
+
+  /**
+   * Key of the business where notification should be sent.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * Key of the location.
+   * If it's not empty, only clients from this location will get notification.
+   * `null` to not limit recipients with a certain location.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_location = null;
+
+  /**
+   * List of UIDs joined with comma, if notification should be sent to certain recipients.
+   * Empty string means to send to all clients of the business or location with proper subscription level.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_uid = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Account/AccountModel.php b/WellnessLiving/Wl/Pay/Account/AccountModel.php
index 79b919a8..d23498ee 100644
--- a/WellnessLiving/Wl/Pay/Account/AccountModel.php
+++ b/WellnessLiving/Wl/Pay/Account/AccountModel.php
@@ -1,96 +1,96 @@
-<?php
-
-namespace WellnessLiving\Wl\Pay\Account;
-
-use WellnessLiving\Core\Locale\CurrencySid;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Displays information about user's accounts.
- */
-class AccountModel extends WlModelAbstract
-{
-  /**
-   * A list of the user's accounts.
-   *
-   * Keys are account keys. This could be `0` if the user has no accounts in the currency of the given business.
-   * Values are account data: <dl>
-   *   <dt>
-   *     int <var>id_currency</var>
-   *   </dt>
-   *   <dd>
-   *     Currency ID. One of {@link CurrencySid} constant.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_currency</var>
-   *   </dt>
-   *   <dd>
-   *     Key of account currency.
-   *   </dd>
-   *   <dt>
-   *     string|null <var>k_pay_account</var>
-   *   </dt>
-   *   <dd>
-   *     ID of payment account. <tt>null</tt> if this is a user account based on system payment method.
-   *   </dd>
-   *   <dt>
-   *     string|null <var>k_pay_method</var>
-   *   </dt>
-   *   <dd>
-   *     ID of custom payment method. <tt>null</tt> if this is a user account based on system payment method.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_rest</var>
-   *   </dt>
-   *   <dd>
-   *     Account balance.
-   *   </dd>
-   *   <dt>
-   *     string|null <var>s_method</var>
-   *   </dt>
-   *   <dd>
-   *     Name of a custom payment method. <tt>null</tt> if this is a user account based on system payment method.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_account;
-
-  /**
-   * A list of accounts that is not created for this user yet.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_account_nx;
-
-  /**
-   * If `true`, information for the account's owner is returned. Clients can be configured to pay for a relative's
-   * expenses. For example, a parent can pay for their child.
-   * Otherwise, `false` to indicate information strictly for the specified user is returned.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_owner = false;
-
-  /**
-   * The key of the business to show information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The key of the user to show information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Pay\Account;
+
+use WellnessLiving\Core\Locale\CurrencySid;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Displays information about user's accounts.
+ */
+class AccountModel extends WlModelAbstract
+{
+  /**
+   * A list of the user's accounts.
+   *
+   * Keys are account keys. This could be `0` if the user has no accounts in the currency of the given business.
+   * Values are account data: <dl>
+   *   <dt>
+   *     int <var>id_currency</var>
+   *   </dt>
+   *   <dd>
+   *     Currency ID. One of {@link CurrencySid} constant.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_currency</var>
+   *   </dt>
+   *   <dd>
+   *     Key of account currency.
+   *   </dd>
+   *   <dt>
+   *     string|null <var>k_pay_account</var>
+   *   </dt>
+   *   <dd>
+   *     ID of payment account. <tt>null</tt> if this is a user account based on system payment method.
+   *   </dd>
+   *   <dt>
+   *     string|null <var>k_pay_method</var>
+   *   </dt>
+   *   <dd>
+   *     ID of custom payment method. <tt>null</tt> if this is a user account based on system payment method.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_rest</var>
+   *   </dt>
+   *   <dd>
+   *     Account balance.
+   *   </dd>
+   *   <dt>
+   *     string|null <var>s_method</var>
+   *   </dt>
+   *   <dd>
+   *     Name of a custom payment method. <tt>null</tt> if this is a user account based on system payment method.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_account;
+
+  /**
+   * A list of accounts that is not created for this user yet.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_account_nx;
+
+  /**
+   * If `true`, information for the account's owner is returned. Clients can be configured to pay for a relative's
+   * expenses. For example, a parent can pay for their child.
+   * Otherwise, `false` to indicate information strictly for the specified user is returned.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_owner = false;
+
+  /**
+   * The key of the business to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The key of the user to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Address/AddressModel.php b/WellnessLiving/Wl/Pay/Address/AddressModel.php
index b886c6bc..33deb3d2 100644
--- a/WellnessLiving/Wl/Pay/Address/AddressModel.php
+++ b/WellnessLiving/Wl/Pay/Address/AddressModel.php
@@ -1,49 +1,49 @@
-<?php
-
-namespace WellnessLiving\Wl\Pay\Address;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlPayOwnerSid;
-
-/**
- * Gets information about a user's payment addresses.
- */
-class AddressModel extends WlModelAbstract
-{
-  /**
-   * The payee's address information.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_pay_address;
-
-  /**
-   * The ID of the payment owner type.
-   * One of {@link WlPayOwnerSid} constants.
-   *
-   * @get get
-   * @var int
-   */
-  public $id_pay_owner = 0;
-
-  /**
-   * Business key, where the payment is performed.
-   * <tt>null</tt> if pay owner is not user.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = null;
-
-  /**
-   * The primary key of a payment owner.
-   * This could be the business of the user depending on a {@link AddressModel::$id_pay_owner} value.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_id = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Pay\Address;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlPayOwnerSid;
+
+/**
+ * Gets information about a user's payment addresses.
+ */
+class AddressModel extends WlModelAbstract
+{
+  /**
+   * The payee's address information.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_pay_address;
+
+  /**
+   * The ID of the payment owner type.
+   * One of {@link WlPayOwnerSid} constants.
+   *
+   * @get get
+   * @var int
+   */
+  public $id_pay_owner = 0;
+
+  /**
+   * Business key, where the payment is performed.
+   * <tt>null</tt> if pay owner is not user.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = null;
+
+  /**
+   * The primary key of a payment owner.
+   * This could be the business of the user depending on a {@link AddressModel::$id_pay_owner} value.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_id = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php b/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
index 29ec32cf..b517a226 100644
--- a/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
+++ b/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
@@ -1,178 +1,198 @@
-<?php
-
-namespace WellnessLiving\Wl\Pay\Form;
-
-use WellnessLiving\Core\Locale\LocaleSid;
-use WellnessLiving\Core\a\ACardSystemSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlPayMethodSid;
-use WellnessLiving\Wl\WlPayProcessorSid;
-
-/**
- * Gets information about payment environments.
- */
-class EnvironmentModel extends WlModelAbstract
-{
-  /**
-   * A list of supported bank card systems.
-   * Keys refer to card types based on card numbers (see {@link ACardSystemSid}),
-   * and values are IDs of card systems (one of {@link ACardSystemSid} constants).
-   *
-   * @get result
-   * @var array
-   */
-  public $a_card_system;
-
-  /**
-   * A list of payment methods enabled for staff members. The ID is one of {@link WlPayMethodSid} constants.
-   * The value is always `true`.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_method_staff;
-
-  /**
-   * A list of all payment methods that can be used within this business.
-   * This array is sorted in the order in which payment methods should be shown to the user.
-   * Each element of the array has the following structure:
-   * <dl>
-   *   <dt>int <var>id_pay_method</var></dt>
-   *   <dd>The ID of type of payment method. One of {@link WlPayMethodSid} constants.</dd>
-   *   <dt>bool [<var>is_client</var>]</dt>
-   *   <dd>Determines whether this method is available for clients. This field is only returned for custom payment methods.</dd>
-   *   <dt>string|null <var>k_pay_method</var></dt>
-   *   <dd>
-   *     The key of the custom payment method.
-   *     This will be `null` if this payment method isn't customized.
-   *
-   *   </dd>
-   *   <dt>string [<var>s_method</var>]</dt>
-   *   <dd>The name of payment method. This field is only returned for custom payment methods.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_method_support;
-
-  /**
-   * The configuration array that's sent to mobile card reader plugin.
-   * The structure of this array depends on the payment processor being used.
-   *
-   * @get result
-   * @var array|null
-   */
-  public $a_mobile_config;
-
-  /**
-   * Represents information about payment processors.
-   *
-   * Keys are payment methods IDs, one of {@link WlPayMethodSid} constants.
-   *
-   * Value is the following array: <dl>
-   *   <dt>array|null <var>a_public_keys</var></dt>
-   *   <dd>
-   *     Public keys configured for this payment processor.
-   *
-   *     `null` if this payment processor does not support public keys.
-   *   </dd>
-   *   <dt>int <var>id_pay_processor</var></dt>
-   *   <dd>ID of the payment processor. One of {@link WlPayProcessorSid} constants.</dd>
-   *   <dt>string <var>k_business_merchant</var></dt>
-   *   <dd>Key of the business merchant.</dd>
-   * </dl>
-   *
-   * `null` if no processors are set up.
-   *
-   * @get result
-   * @var array[]|null
-   */
-  public $a_pay_processor = null;
-
-  /**
-   * Local date with time now in current location {@link EnvironmentModel::$k_location}
-   * or business {@link EnvironmentModel::$k_business} if not set location.
-   *
-   * @get result
-   * @var string
-   */
-  public $dl_now;
-
-  /**
-   * The percentage of the payment amount to additionally withdraw as a surcharge.
-   *
-   * This will be `null` if the percentage surcharge amount shouldn't be withdrawn.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $f_surcharge = null;
-
-  /**
-   * The locale ID of the business.
-   *
-   * @get result
-   * @var int|null
-   * @see LocaleSid
-   */
-  public $id_locale;
-
-  /**
-   * Determines whether newly added payment sources should be saved. This will be `true` if payment sources should be saved,
-   * `false` if otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_save_source;
-
-  /**
-   * Whether tips are accepted.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_tip = false;
-
-  /**
-   * The key of the business to retrieve payment information for.
-   *
-   * This will be `0` if not set yet.
-   * An empty string or `null` if payments are performed with the WellnessLiving system merchant.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The key of the currency to retrieve payment information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_currency = '0';
-
-  /**
-   * The key of the location to retrieve payment information for.
-   *
-   * This will be `0` if not set yet.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location = '0';
-
-  /**
-   * The fixed surcharge amount to withdraw from all payment sources that support surcharges.
-   *
-   * This will be `null` if the fixed surcharge amount shouldn't be withdrawn.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $m_surcharge = null;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Pay\Form;
+
+use WellnessLiving\Core\Locale\LocaleSid;
+use WellnessLiving\Core\a\ACardSystemSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlPayMethodSid;
+use WellnessLiving\Wl\WlPayProcessorSid;
+
+/**
+ * Gets information about payment environments.
+ */
+class EnvironmentModel extends WlModelAbstract
+{
+  /**
+   * A list of supported bank card systems.
+   * Keys refer to card types based on card numbers (see {@link ACardSystemSid}),
+   * and values are IDs of card systems (one of {@link ACardSystemSid} constants).
+   *
+   * @get result
+   * @var array
+   */
+  public $a_card_system;
+
+  /**
+   * A list of payment methods enabled for staff members. The ID is one of {@link WlPayMethodSid} constants.
+   * The value is always `true`.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_method_staff;
+
+  /**
+   * A list of all payment methods that can be used within this business.
+   * This array is sorted in the order in which payment methods should be shown to the user.
+   * Each element of the array has the following structure:
+   * <dl>
+   *   <dt>int <var>id_pay_method</var></dt>
+   *   <dd>The ID of type of payment method. One of {@link WlPayMethodSid} constants.</dd>
+   *   <dt>bool [<var>is_client</var>]</dt>
+   *   <dd>Determines whether this method is available for clients. This field is only returned for custom payment methods.</dd>
+   *   <dt>string|null <var>k_pay_method</var></dt>
+   *   <dd>
+   *     The key of the custom payment method.
+   *     This will be `null` if this payment method isn't customized.
+   *
+   *   </dd>
+   *   <dt>string [<var>s_method</var>]</dt>
+   *   <dd>The name of payment method. This field is only returned for custom payment methods.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_method_support;
+
+  /**
+   * The configuration array that's sent to mobile card reader plugin.
+   * The structure of this array depends on the payment processor being used.
+   *
+   * @get result
+   * @var array|null
+   */
+  public $a_mobile_config;
+
+  /**
+   * Represents information about payment processors.
+   *
+   * Keys are payment methods IDs, one of {@link WlPayMethodSid} constants.
+   *
+   * Value is the following array: <dl>
+   *   <dt>array|null <var>a_public_keys</var></dt>
+   *   <dd>
+   *     Public keys configured for this payment processor.
+   *
+   *     `null` if this payment processor does not support public keys.
+   *   </dd>
+   *   <dt>int <var>id_pay_processor</var></dt>
+   *   <dd>ID of the payment processor. One of {@link WlPayProcessorSid} constants.</dd>
+   *   <dt>string <var>k_business_merchant</var></dt>
+   *   <dd>Key of the business merchant.</dd>
+   * </dl>
+   *
+   * `null` if no processors are set up.
+   *
+   * @get result
+   * @var array[]|null
+   */
+  public $a_pay_processor = null;
+
+  /**
+   * Local date with time now in current location {@link EnvironmentModel::$k_location}
+   * or business {@link EnvironmentModel::$k_business} if not set location.
+   *
+   * @get result
+   * @var string
+   */
+  public $dl_now;
+
+  /**
+   * Surcharge amount for payment with card represented as a percent of transaction amount.
+   *
+   * This will be `null` if the percentage surcharge amount shouldn't be withdrawn.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $f_surcharge = null;
+
+  /**
+   * Surcharge amount for payment with ACH represented as a percent of transaction amount.
+   *
+   * This will be `null` if the percentage surcharge amount shouldn't be withdrawn.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $f_surcharge_ach = null;
+
+  /**
+   * The locale ID of the business.
+   *
+   * @get result
+   * @var int|null
+   * @see LocaleSid
+   */
+  public $id_locale;
+
+  /**
+   * Determines whether newly added payment sources should be saved. This will be `true` if payment sources should be saved,
+   * `false` if otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_save_source;
+
+  /**
+   * Whether tips are accepted.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_tip = false;
+
+  /**
+   * The key of the business to retrieve payment information for.
+   *
+   * This will be `0` if not set yet.
+   * An empty string or `null` if payments are performed with the WellnessLiving system merchant.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The key of the currency to retrieve payment information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_currency = '0';
+
+  /**
+   * The key of the location to retrieve payment information for.
+   *
+   * This will be `0` if not set yet.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '0';
+
+  /**
+   * Surcharge amount for payment with card represented as a fixed amount.
+   *
+   * This will be `null` if the fixed surcharge amount shouldn't be withdrawn.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_surcharge = null;
+
+  /**
+   * Surcharge amount for payment with ACH represented as a fixed amount.
+   *
+   * This will be `null` if the fixed surcharge amount shouldn't be withdrawn.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_surcharge_ach = null;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Method/ListModel.php b/WellnessLiving/Wl/Pay/Method/ListModel.php
index 59f44939..eb2e38ab 100644
--- a/WellnessLiving/Wl/Pay/Method/ListModel.php
+++ b/WellnessLiving/Wl/Pay/Method/ListModel.php
@@ -1,75 +1,75 @@
-<?php
-
-namespace WellnessLiving\Wl\Pay\Method;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlPayMethodSid;
-
-/**
- * An endpoint containing a model to get the list of payment methods.
- */
-class ListModel extends WlModelAbstract
-{
-  /**
-   * A list of payment methods:
-   * <dl>
-   *   <dt>
-   *     int <var>id_pay_method</var>
-   *   </dt>
-   *   <dd>
-   *     The payment method type ID. One of {@link WlPayMethodSid} constants.
-   *   </dd>
-   *   <dt>
-   *     string|null <var>k_pay_method</var>
-   *   </dt>
-   *   <dd>
-   *     Payment method key.
-   *     May be <tt>null</tt> if it is a system payment method.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_title</var>
-   *   </dt>
-   *   <dd>
-   *     The payment method name.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_pay_method;
-
-  /**
-   * Whether only active payment methods should be returned.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_active = true;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * Whether payment method {@link WlPayMethodSid::ACCOUNT_MANUAL} should be included in response.
-   *
-   * @get get
-   * @var bool
-   */
-  public $show_manual = false;
-
-  /**
-   * The key of a user to show information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Pay\Method;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlPayMethodSid;
+
+/**
+ * An endpoint containing a model to get the list of payment methods.
+ */
+class ListModel extends WlModelAbstract
+{
+  /**
+   * A list of payment methods:
+   * <dl>
+   *   <dt>
+   *     int <var>id_pay_method</var>
+   *   </dt>
+   *   <dd>
+   *     The payment method type ID. One of {@link WlPayMethodSid} constants.
+   *   </dd>
+   *   <dt>
+   *     string|null <var>k_pay_method</var>
+   *   </dt>
+   *   <dd>
+   *     Payment method key.
+   *     May be <tt>null</tt> if it is a system payment method.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_title</var>
+   *   </dt>
+   *   <dd>
+   *     The payment method name.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_pay_method;
+
+  /**
+   * Whether only active payment methods should be returned.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_active = true;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * Whether payment method {@link WlPayMethodSid::ACCOUNT_MANUAL} should be included in response.
+   *
+   * @get get
+   * @var bool
+   */
+  public $show_manual = false;
+
+  /**
+   * The key of a user to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Transaction/Report/TransactionAllPaymentModel.php b/WellnessLiving/Wl/Pay/Transaction/Report/TransactionAllPaymentModel.php
index 8e8bfddb..6d776353 100644
--- a/WellnessLiving/Wl/Pay/Transaction/Report/TransactionAllPaymentModel.php
+++ b/WellnessLiving/Wl/Pay/Transaction/Report/TransactionAllPaymentModel.php
@@ -1,147 +1,147 @@
-<?php
-
-namespace WellnessLiving\Wl\Pay\Transaction\Report;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Report\Generator\ReportGeneratorStatusSid;
-
-/**
- * Can retrieve information from the All Transactions Report.
- */
-class TransactionAllPaymentModel extends WlModelAbstract
-{
-  /**
-   * A list of fields in the report.
-   *
-   * This array is effectively a title row for the table returned in {@link TransactionAllPaymentModel::$a_row}.
-   *
-   * @get result
-   * @var string[]
-   */
-  public $a_field = [];
-
-  /**
-   * The report data.
-   *
-   * This is an indexed array in which one row is also an indexed array.
-   *
-   * Indexes of the columns correspond to the columns in {@link TransactionAllPaymentModel::$a_field}.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_row = [];
-
-  /**
-   * The warning list of the report.
-   *
-   * @get result
-   * @var string[]
-   */
-  public $a_warning = [];
-
-  /**
-   * The end date in local time to retrieve transactions for.
-   *
-   * @get get
-   * @var string
-   */
-  public $dl_date_end = '';
-
-  /**
-   * The end date in local time to retrieve transactions for.
-   *
-   * @get get
-   * @var string
-   */
-  public $dl_date_start = '';
-
-  /**
-   * The date and time if the report has completed generation. Otherwise, this will be `null`.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $dtu_complete = null;
-
-  /**
-   * The date and time if this report has been put in the generation queue. Otherwise, this will be `null`.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $dtu_queue = null;
-
-  /**
-   * The date and time if generation of this report has started. Otherwise, this will be `null`.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $dtu_start = null;
-
-  /**
-   * The page of the report, starting from 0.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_page = 0;
-
-  /**
-   * The report status.
-   *
-   * One of {@link ReportGeneratorStatusSid} constants.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_report_status = 0;
-
-  /**
-   * Determines whether to show more rows in the report.
-   *
-   * If `true`, there are more report rows to get. Otherwise, `false` to indicate that all rows in the report have
-   * already been retrieved.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_more = false;
-
-  /**
-   * Determines whether the report should be refreshed.
-   *
-   * If `true`, this report should be refreshed. A report refresh can't be requested while the report is being generated.
-   * Otherwise, `false` to only return contents of the report.
-   *
-   * If the report hasn't yet been generated, it will automatically start generating in the background.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_refresh = false;
-
-  /**
-   * Determines whether the report is complete.
-   *
-   * If the report is accessed on the current day, or is returning a result that was cached on the current day, it could
-   * be incomplete as not all the transactions for the day are present.
-   *
-   * If `true`, the report has been completed. Otherwise, `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_report_complete = false;
-
-  /**
-   * The key of the business for which report should be generated.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Pay\Transaction\Report;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Report\Generator\ReportGeneratorStatusSid;
+
+/**
+ * Can retrieve information from the All Transactions Report.
+ */
+class TransactionAllPaymentModel extends WlModelAbstract
+{
+  /**
+   * A list of fields in the report.
+   *
+   * This array is effectively a title row for the table returned in {@link TransactionAllPaymentModel::$a_row}.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_field = [];
+
+  /**
+   * The report data.
+   *
+   * This is an indexed array in which one row is also an indexed array.
+   *
+   * Indexes of the columns correspond to the columns in {@link TransactionAllPaymentModel::$a_field}.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_row = [];
+
+  /**
+   * The warning list of the report.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_warning = [];
+
+  /**
+   * The end date in local time to retrieve transactions for.
+   *
+   * @get get
+   * @var string
+   */
+  public $dl_date_end = '';
+
+  /**
+   * The end date in local time to retrieve transactions for.
+   *
+   * @get get
+   * @var string
+   */
+  public $dl_date_start = '';
+
+  /**
+   * The date and time if the report has completed generation. Otherwise, this will be `null`.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $dtu_complete = null;
+
+  /**
+   * The date and time if this report has been put in the generation queue. Otherwise, this will be `null`.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $dtu_queue = null;
+
+  /**
+   * The date and time if generation of this report has started. Otherwise, this will be `null`.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $dtu_start = null;
+
+  /**
+   * The page of the report, starting from 0.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_page = 0;
+
+  /**
+   * The report status.
+   *
+   * One of {@link ReportGeneratorStatusSid} constants.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_report_status = 0;
+
+  /**
+   * Determines whether to show more rows in the report.
+   *
+   * If `true`, there are more report rows to get. Otherwise, `false` to indicate that all rows in the report have
+   * already been retrieved.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_more = false;
+
+  /**
+   * Determines whether the report should be refreshed.
+   *
+   * If `true`, this report should be refreshed. A report refresh can't be requested while the report is being generated.
+   * Otherwise, `false` to only return contents of the report.
+   *
+   * If the report hasn't yet been generated, it will automatically start generating in the background.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_refresh = false;
+
+  /**
+   * Determines whether the report is complete.
+   *
+   * If the report is accessed on the current day, or is returning a result that was cached on the current day, it could
+   * be incomplete as not all the transactions for the day are present.
+   *
+   * If `true`, the report has been completed. Otherwise, `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_report_complete = false;
+
+  /**
+   * The key of the business for which report should be generated.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Transaction/WlPayTransactionStatusSid.php b/WellnessLiving/Wl/Pay/Transaction/WlPayTransactionStatusSid.php
index e2e931ec..658a7d81 100644
--- a/WellnessLiving/Wl/Pay/Transaction/WlPayTransactionStatusSid.php
+++ b/WellnessLiving/Wl/Pay/Transaction/WlPayTransactionStatusSid.php
@@ -1,136 +1,136 @@
-<?php
-
-namespace WellnessLiving\Wl\Pay\Transaction;
-
-/**
- * Transaction statuses.
- *
- * Last used ID: 15.
- *
- * @
- */
-abstract class WlPayTransactionStatusSid
-{
-  /**
-   * The authorization or store transaction is being performed now.
-   */
-  const AUTHORIZE_ACTIVE = 8;
-
-  /**
-   * Authorization or store transaction is completed with errors.
-   */
-  const AUTHORIZE_ERROR = 10;
-
-  /**
-   * Authorization or store transaction is completed successfully.
-   */
-  const AUTHORIZE_OK = 9;
-
-  /**
-   * The transaction is being performed now.
-   */
-  const PURCHASE_ACTIVE = 1;
-
-  /**
-   * Transaction is completed with errors.
-   */
-  const PURCHASE_ERROR = 3;
-
-  /**
-   * Transaction is completed successfully, but the purchase wasn't finished (failed by a temporary error).
-   *
-   * **Important note** Used only for indexation data for the reports.
-   */
-  const PURCHASE_FAILED = 15;
-
-  /**
-   * Transaction is completed successfully.
-   */
-  const PURCHASE_OK = 2;
-
-  /**
-   * Transaction is completed successfully, but should be hidden from reports.
-   *
-   * This status is set only in specific cases during import.
-   */
-  const PURCHASE_OK_HIDDEN = 14;
-
-  /**
-   * We are waiting when financial institution (e.g. bank) will process our transaction. For example, cheques or bank
-   * account transactions can be processed not immediately but after some time (e.g. 3-4 days).
-   */
-  const PURCHASE_WAIT = 11;
-
-  /**
-   * Transaction is being refunded now, and previous status was successful payment.
-   */
-  const REFUND_ACTIVE = 5;
-
-  /**
-   * Transaction is being refunded now.
-   *
-   * Exactly the same as {@link WlPayTransactionStatusSid::REFUND_ACTIVE}, but set if previous status was
-   * {@link WlPayTransactionStatusSid::PURCHASE_WAIT}. In a case of error during refund, this status is changed to
-   * {@link WlPayTransactionStatusSid::PURCHASE_WAIT}.
-   */
-  const REFUND_ACTIVE_WAIT = 13;
-
-  /**
-   * Refund operation has failed.
-   *
-   * This status should be treated exactly like {@link WlPayTransactionStatusSid::PURCHASE_OK}: we've received money
-   * successfully, and did not refund or void transaction.
-   *
-   * The difference is that we've tried to refund a successful transaction.
-   *
-   * **Important note** If a transaction is refunded partially, it will stay in
-   * {@link WlPayTransactionStatusSid::REFUND_PARTIAL} even after an unsuccessful attempt to refund more.
-   */
-  const REFUND_ERROR = 6;
-
-  /**
-   * Transaction was refunded fully.
-   *
-   * Note that in contrast to REFUND_PARTIAL, there are no items stored in <tt>rs_pay_transaction_refund</tt> table for
-   * transactions in REFUND_FULL status.
-   *
-   * @see WlPayTransactionStatusSid::REFUND_PARTIAL
-   */
-  const REFUND_FULL = 4;
-
-  /**
-   * Transaction was refunded partially.
-   *
-   * This status is set when there is an amount in a transaction that is not refunded.
-   *
-   * @see WlPayTransactionStatusSid::REFUND_FULL
-   */
-  const REFUND_PARTIAL = 7;
-
-  /**
-   * Transaction was refunded fully and purchase has been cancelled.
-   *
-   * Void is a type of refund with set of limits. The main difference between refund and void is, that during refund we
-   * can cancel transaction before it was settled or we can return money that we have already got. During void of the
-   * transaction we cannot return money, we can only cancel transaction if it has not been settled yet.
-   *
-   * This is important because returning of the money is connected to the bank commissions and cancelling the
-   * transaction is a free option. That's why this is two different ways to cancel purchase.
-   *
-   * The voided transaction is a transaction that never exists. This also means that purchase that is connected to the
-   * voided transaction should be always erased.
-   *
-   * Voiding transaction has sets of limits:<ul>
-   *   <li>transaction should not be settled;</li>
-   *   <li>transaction should not be from internal account balance;</li>
-   *   <li>transaction should be single in the purchase.</li>
-   * </ul>
-   *
-   * @link https://wellnessliving.atlassian.net/browse/WL-2122
-   * @see WlPayTransactionStatusSid::REFUND_FULL
-   * @see WlPayTransactionStatusSid::REFUND_PARTIAL
-   */
-  const VOID = 12;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Pay\Transaction;
+
+/**
+ * Transaction statuses.
+ *
+ * Last used ID: 15.
+ *
+ * @
+ */
+abstract class WlPayTransactionStatusSid
+{
+  /**
+   * The authorization or store transaction is being performed now.
+   */
+  const AUTHORIZE_ACTIVE = 8;
+
+  /**
+   * Authorization or store transaction is completed with errors.
+   */
+  const AUTHORIZE_ERROR = 10;
+
+  /**
+   * Authorization or store transaction is completed successfully.
+   */
+  const AUTHORIZE_OK = 9;
+
+  /**
+   * The transaction is being performed now.
+   */
+  const PURCHASE_ACTIVE = 1;
+
+  /**
+   * Transaction is completed with errors.
+   */
+  const PURCHASE_ERROR = 3;
+
+  /**
+   * Transaction is completed successfully, but the purchase wasn't finished (failed by a temporary error).
+   *
+   * **Important note** Used only for indexation data for the reports.
+   */
+  const PURCHASE_FAILED = 15;
+
+  /**
+   * Transaction is completed successfully.
+   */
+  const PURCHASE_OK = 2;
+
+  /**
+   * Transaction is completed successfully, but should be hidden from reports.
+   *
+   * This status is set only in specific cases during import.
+   */
+  const PURCHASE_OK_HIDDEN = 14;
+
+  /**
+   * We are waiting when financial institution (e.g. bank) will process our transaction. For example, cheques or bank
+   * account transactions can be processed not immediately but after some time (e.g. 3-4 days).
+   */
+  const PURCHASE_WAIT = 11;
+
+  /**
+   * Transaction is being refunded now, and previous status was successful payment.
+   */
+  const REFUND_ACTIVE = 5;
+
+  /**
+   * Transaction is being refunded now.
+   *
+   * Exactly the same as {@link WlPayTransactionStatusSid::REFUND_ACTIVE}, but set if previous status was
+   * {@link WlPayTransactionStatusSid::PURCHASE_WAIT}. In a case of error during refund, this status is changed to
+   * {@link WlPayTransactionStatusSid::PURCHASE_WAIT}.
+   */
+  const REFUND_ACTIVE_WAIT = 13;
+
+  /**
+   * Refund operation has failed.
+   *
+   * This status should be treated exactly like {@link WlPayTransactionStatusSid::PURCHASE_OK}: we've received money
+   * successfully, and did not refund or void transaction.
+   *
+   * The difference is that we've tried to refund a successful transaction.
+   *
+   * **Important note** If a transaction is refunded partially, it will stay in
+   * {@link WlPayTransactionStatusSid::REFUND_PARTIAL} even after an unsuccessful attempt to refund more.
+   */
+  const REFUND_ERROR = 6;
+
+  /**
+   * Transaction was refunded fully.
+   *
+   * Note that in contrast to REFUND_PARTIAL, there are no items stored in <tt>rs_pay_transaction_refund</tt> table for
+   * transactions in REFUND_FULL status.
+   *
+   * @see WlPayTransactionStatusSid::REFUND_PARTIAL
+   */
+  const REFUND_FULL = 4;
+
+  /**
+   * Transaction was refunded partially.
+   *
+   * This status is set when there is an amount in a transaction that is not refunded.
+   *
+   * @see WlPayTransactionStatusSid::REFUND_FULL
+   */
+  const REFUND_PARTIAL = 7;
+
+  /**
+   * Transaction was refunded fully and purchase has been cancelled.
+   *
+   * Void is a type of refund with set of limits. The main difference between refund and void is, that during refund we
+   * can cancel transaction before it was settled or we can return money that we have already got. During void of the
+   * transaction we cannot return money, we can only cancel transaction if it has not been settled yet.
+   *
+   * This is important because returning of the money is connected to the bank commissions and cancelling the
+   * transaction is a free option. That's why this is two different ways to cancel purchase.
+   *
+   * The voided transaction is a transaction that never exists. This also means that purchase that is connected to the
+   * voided transaction should be always erased.
+   *
+   * Voiding transaction has sets of limits:<ul>
+   *   <li>transaction should not be settled;</li>
+   *   <li>transaction should not be from internal account balance;</li>
+   *   <li>transaction should be single in the purchase.</li>
+   * </ul>
+   *
+   * @link https://wellnessliving.atlassian.net/browse/WL-2122
+   * @see WlPayTransactionStatusSid::REFUND_FULL
+   * @see WlPayTransactionStatusSid::REFUND_PARTIAL
+   */
+  const VOID = 12;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/Alert/AlertModel.php b/WellnessLiving/Wl/Profile/Alert/AlertModel.php
index 7fe4b8f0..9bb421a9 100644
--- a/WellnessLiving/Wl/Profile/Alert/AlertModel.php
+++ b/WellnessLiving/Wl/Profile/Alert/AlertModel.php
@@ -1,117 +1,117 @@
-<?php
-
-namespace WellnessLiving\Wl\Profile\Alert;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlProfileNoteSid;
-
-/**
- * Retrieves information about client alert messages.
- */
-class AlertModel extends WlModelAbstract
-{
-  /**
-   * A list of alerts. Every element is an array with the following keys:
-   * <dl>
-   *   <dt>
-   *     string|null <var>dt_date</var>
-   *   </dt>
-   *   <dd>
-   *     The date and time in MySQL format in local time when the alert was last modified.
-   *     This will be `null` if the date isn't available for this alert.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_today</var>
-   *   </dt>
-   *   <dd>
-   *     This will be `true` if the alert was added today. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_profile_note</var>
-   *   </dt>
-   *   <dd>
-   *     ID of alert type. One of {@link WlProfileNoteSid} constants.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_pay_account</var>]
-   *   </dt>
-   *   <dd>
-   *     The key of the client's account.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_purchase_item</var>]
-   *   </dt>
-   *   <dd>
-   *     The key of the purchase item.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_text</var>
-   *   </dt>
-   *   <dd>
-   *     The alert's text.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_alert;
-
-  /**
-   * A list of warnings. Every element is an array with the following keys:
-   * <dl>
-   *   <dt>
-   *     string[] <var>a_location_flag</var>
-   *   </dt>
-   *   <dd>
-   *
-   *   </dd>
-   *   <dt>
-   *     bool <var>dt_date</var>
-   *   </dt>
-   *   <dd>
-   *     The date and time in MySQL format in local time when the warning was last modified.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_flag</var>
-   *   </dt>
-   *   <dd>
-   *     This will be `true` if the client is flagged. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_today</var>
-   *   </dt>
-   *   <dd>
-   *     This will be `true` if the warning was added today. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_text</var>
-   *   </dt>
-   *   <dd>
-   *     The text of the warning.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_warning;
-
-  /**
-   * The key of the business.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The key of the user to show information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Profile\Alert;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlProfileNoteSid;
+
+/**
+ * Retrieves information about client alert messages.
+ */
+class AlertModel extends WlModelAbstract
+{
+  /**
+   * A list of alerts. Every element is an array with the following keys:
+   * <dl>
+   *   <dt>
+   *     string|null <var>dt_date</var>
+   *   </dt>
+   *   <dd>
+   *     The date and time in MySQL format in local time when the alert was last modified.
+   *     This will be `null` if the date isn't available for this alert.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_today</var>
+   *   </dt>
+   *   <dd>
+   *     This will be `true` if the alert was added today. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_profile_note</var>
+   *   </dt>
+   *   <dd>
+   *     ID of alert type. One of {@link WlProfileNoteSid} constants.
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_pay_account</var>]
+   *   </dt>
+   *   <dd>
+   *     The key of the client's account.
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_purchase_item</var>]
+   *   </dt>
+   *   <dd>
+   *     The key of the purchase item.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_text</var>
+   *   </dt>
+   *   <dd>
+   *     The alert's text.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_alert;
+
+  /**
+   * A list of warnings. Every element is an array with the following keys:
+   * <dl>
+   *   <dt>
+   *     string[] <var>a_location_flag</var>
+   *   </dt>
+   *   <dd>
+   *
+   *   </dd>
+   *   <dt>
+   *     bool <var>dt_date</var>
+   *   </dt>
+   *   <dd>
+   *     The date and time in MySQL format in local time when the warning was last modified.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_flag</var>
+   *   </dt>
+   *   <dd>
+   *     This will be `true` if the client is flagged. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_today</var>
+   *   </dt>
+   *   <dd>
+   *     This will be `true` if the warning was added today. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_text</var>
+   *   </dt>
+   *   <dd>
+   *     The text of the warning.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_warning;
+
+  /**
+   * The key of the business.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The key of the user to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/Edit/CreateModel.php b/WellnessLiving/Wl/Profile/Edit/CreateModel.php
index 08091875..8279529d 100644
--- a/WellnessLiving/Wl/Profile/Edit/CreateModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/CreateModel.php
@@ -1,54 +1,54 @@
-<?php
-
-namespace WellnessLiving\Wl\Profile\Edit;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Creates user account for the given email address if email address does not already exist.
- * checks if a user's email address is already used or changes a user’s login email address.
- */
-class CreateModel extends WlModelAbstract
-{
-  /**
-   * The key of the business where you're creating new user.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * First name of the user.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_firstname = '';
-
-  /**
-   * Last name of the user.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_lastname = '';
-
-  /**
-   * Email of the user.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_mail = '';
-
-  /**
-   * The key of the user added.
-   *
-   * @post result
-   * @var string
-   */
-  public $uid = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Profile\Edit;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Creates user account for the given email address if email address does not already exist.
+ * checks if a user's email address is already used or changes a user’s login email address.
+ */
+class CreateModel extends WlModelAbstract
+{
+  /**
+   * The key of the business where you're creating new user.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * First name of the user.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_firstname = '';
+
+  /**
+   * Last name of the user.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_lastname = '';
+
+  /**
+   * Email of the user.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_mail = '';
+
+  /**
+   * The key of the user added.
+   *
+   * @post result
+   * @var string
+   */
+  public $uid = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
index 0f7b5abb..64fb64c7 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
@@ -1,264 +1,264 @@
-<?php
-
-namespace WellnessLiving\Wl\Profile\Edit;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Field\WlFieldGeneralSid;
-use WellnessLiving\Wl\Field\WlFieldTypeSid;
-use WellnessLiving\Wl\Profile\RegisterSourceSid;
-
-/**
- * An endpoint that displays client profile information.
- * Version of {@link EditModel} for access validation by security token.
- */
-class EditByTokenModel extends WlModelAbstract
-{
-  /**
-   * A list of fields to change. Values are the new field values. Specific values depend on an individual field type.
-   * Some fields may be strings while others are arrays. If a composite field is changed, all fields should be specified
-   * (for example, if you change your address, you'll need to specify the city). Keys are the `k_field` values.
-   *
-   * @put post
-   * @var array
-   */
-  public $a_change = [];
-
-  /**
-   * List of errors.
-   * `null` if there was no mistake.
-   *
-   * @get result
-   * @post result
-   * @var array|null
-   */
-  public $a_error_list = null;
-
-  /**
-   * Family relation data for new created user.
-   *
-   * `null` if family relation is not required.
-   *
-   * @post post
-   * @var array|null
-   */
-  public $a_family_relation = null;
-
-  /**
-   * Information for user's photo.
-   * It is necessary to save simultaneously user and photo in staff member mode.
-   *
-   * Attention!
-   * Data from this field is taken directly from a POST somewhere in the depths of the photo upload.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_image_upload = [];
-
-  /**
-   * A copy of the {@link EditModel::$a_change}.
-   * This is used for POST requests when creating a new user.
-   *
-   * @post post
-   * @var array
-   */
-  public $a_new = [];
-
-  /**
-   * An array contained with information about phone inheritance.
-   * The array has the following structure:
-   * <dl>
-   *   <dt>bool [<var>is_phone_inherit</var>]</dt>
-   *   <dd>Indicates weather to inherit phone numbers from relative or not. `1` if phone inheritance is needed, '0' otherwise.</dd>
-   *   <dt>string <var>uid_relative</var></dt>
-   *   <dd>User key of relative.</dd>
-   * </dl>
-   *
-   * @get result
-   * @post post
-   * @put post
-   * @var array[]
-   */
-  public $a_phone_inherit = [];
-
-  /**
-   * The values and structure of all fields. Array keys are field IDs (`k_field`).
-   * Array values are the field values. The array has the following structure:
-   * <dl>
-   *   <dt>int [<var>id_field_general</var>]</dt>
-   *   <dd>
-   *     The ID of a system field. One of the {@link WlFieldGeneralSid} constants.
-   *     This value is only defined if <var>id_field_type</var>={@link WlFieldTypeSid::GENERAL}.
-   *   </dd>
-   *   <dt>bool <var>is_require</var></dt>
-   *   <dd>Indicates whether the value of this field is required. This will be `1` if required or `0` if the field is optional.</dd>
-   *   <dt>int <var>id_field_type</var></dt>
-   *   <dd>The type of field. One of the {@link WlFieldTypeSid} constants.</dd>
-   *   <dt>string <var>k_field</var></dt>
-   *   <dd>The field ID (<var>k_field</var>). A copy of the key of this array element.</dd>
-   *   <dt>string <var>s_title</var></dt>
-   *   <dd>The title of the field.</dd>
-   *   <dt>mixed <var>x_value</var></dt>
-   *   <dd>The value of the field. This value is defined by individual fields.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_structure;
-
-  /**
-   * Registration source ID.
-   * One of {@link RegisterSourceSid} constants.
-   *
-   * Used only to register new clients.
-   * * If the client is already authorized, the field value will not be used.
-   * * If the client is not authorized and no value is set, {@link RegisterSourceSid::SELF} will be used.
-   *
-   * @get get
-   * @post get
-   * @put get
-   * @var int|null
-   */
-  public $id_register_source = null;
-
-  /**
-   * Indicates whether to display the full profile edit form or the short version.
-   * This is assumed to be used only in user registration mode.
-   *
-   * @get result
-   * @post get
-   * @var bool
-   */
-  public $is_short = 0;
-
-  /**
-   * This will be `true` to sign in a created user. Otherwise, this will be `false`.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_sing_in = false;
-
-  /**
-   * Indicates whether to display the form as a user or as a staff member.
-   * Staff members may have access to different fields than the user.
-   *
-   * @get get
-   * @post get
-   * @put get
-   * @var bool
-   */
-  public $is_staff = false;
-
-  /**
-   * The key of the business you're editing.
-   *
-   * An empty value will return the system-wide fields.
-   *
-   * @get get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * Exception class name.
-   * `null` if there was no mistake.
-   *
-   * @get result
-   * @post result
-   * @var string|null
-   */
-  public $s_class = null;
-
-  /**
-   * Code of the error.
-   * `null` if there was no mistake.
-   *
-   * @field code
-   * @get result
-   * @post result
-   * @var string|null
-   */
-  public $s_code = null;
-
-  /**
-   * Status of the request.
-   * `null` if there was no mistake.
-   *
-   * @field status
-   * @post result
-   * @var string|null
-   */
-  public $s_status = null;
-
-  /**
-   * Compound key delimited wit a colon. First part is business key, where selected client exists.
-   * Second part - uid of already existed user we want to add.
-   * Empty if non-existent client is being added.
-   *
-   * @post get
-   * @var string
-   */
-  public $text_business_uid_key = '';
-
-  /**
-   * Error message.
-   * `null` if there was no mistake.
-   *
-   * @field message
-   * @get result
-   * @post result
-   * @var string|null
-   */
-  public $text_message = null;
-
-  /**
-   * The password to be set for a new user.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_password = '';
-
-  /**
-   * The security token.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_token = '';
-
-  /**
-   * The key of the user to edit.
-   *
-   * If empty, an empty form will be displayed to add a new user.
-   *
-   * @get get
-   * @post get,result
-   * @put get
-   * @var string
-   */
-  public $uid = '';
-
-  /**
-   * The UID of an existing user in another business to add to the current business.
-   *
-   * @post get
-   * @var string
-   */
-  public $uid_existed = '';
-
-  /**
-   * UID of the user, whose email was inherited by the existing client we want to add.
-   * Empty if non-existent user is being added or user to add is the one, whose email is inherited.
-   *
-   * @post get
-   * @var string
-   */
-  public $uid_relative_key = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Profile\Edit;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Field\WlFieldGeneralSid;
+use WellnessLiving\Wl\Field\WlFieldTypeSid;
+use WellnessLiving\Wl\Profile\RegisterSourceSid;
+
+/**
+ * An endpoint that displays client profile information.
+ * Version of {@link EditModel} for access validation by security token.
+ */
+class EditByTokenModel extends WlModelAbstract
+{
+  /**
+   * A list of fields to change. Values are the new field values. Specific values depend on an individual field type.
+   * Some fields may be strings while others are arrays. If a composite field is changed, all fields should be specified
+   * (for example, if you change your address, you'll need to specify the city). Keys are the `k_field` values.
+   *
+   * @put post
+   * @var array
+   */
+  public $a_change = [];
+
+  /**
+   * List of errors.
+   * `null` if there was no mistake.
+   *
+   * @get result
+   * @post result
+   * @var array|null
+   */
+  public $a_error_list = null;
+
+  /**
+   * Family relation data for new created user.
+   *
+   * `null` if family relation is not required.
+   *
+   * @post post
+   * @var array|null
+   */
+  public $a_family_relation = null;
+
+  /**
+   * Information for user's photo.
+   * It is necessary to save simultaneously user and photo in staff member mode.
+   *
+   * Attention!
+   * Data from this field is taken directly from a POST somewhere in the depths of the photo upload.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_image_upload = [];
+
+  /**
+   * A copy of the {@link EditModel::$a_change}.
+   * This is used for POST requests when creating a new user.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_new = [];
+
+  /**
+   * An array contained with information about phone inheritance.
+   * The array has the following structure:
+   * <dl>
+   *   <dt>bool [<var>is_phone_inherit</var>]</dt>
+   *   <dd>Indicates weather to inherit phone numbers from relative or not. `1` if phone inheritance is needed, '0' otherwise.</dd>
+   *   <dt>string <var>uid_relative</var></dt>
+   *   <dd>User key of relative.</dd>
+   * </dl>
+   *
+   * @get result
+   * @post post
+   * @put post
+   * @var array[]
+   */
+  public $a_phone_inherit = [];
+
+  /**
+   * The values and structure of all fields. Array keys are field IDs (`k_field`).
+   * Array values are the field values. The array has the following structure:
+   * <dl>
+   *   <dt>int [<var>id_field_general</var>]</dt>
+   *   <dd>
+   *     The ID of a system field. One of the {@link WlFieldGeneralSid} constants.
+   *     This value is only defined if <var>id_field_type</var>={@link WlFieldTypeSid::GENERAL}.
+   *   </dd>
+   *   <dt>bool <var>is_require</var></dt>
+   *   <dd>Indicates whether the value of this field is required. This will be `1` if required or `0` if the field is optional.</dd>
+   *   <dt>int <var>id_field_type</var></dt>
+   *   <dd>The type of field. One of the {@link WlFieldTypeSid} constants.</dd>
+   *   <dt>string <var>k_field</var></dt>
+   *   <dd>The field ID (<var>k_field</var>). A copy of the key of this array element.</dd>
+   *   <dt>string <var>s_title</var></dt>
+   *   <dd>The title of the field.</dd>
+   *   <dt>mixed <var>x_value</var></dt>
+   *   <dd>The value of the field. This value is defined by individual fields.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_structure;
+
+  /**
+   * Registration source ID.
+   * One of {@link RegisterSourceSid} constants.
+   *
+   * Used only to register new clients.
+   * * If the client is already authorized, the field value will not be used.
+   * * If the client is not authorized and no value is set, {@link RegisterSourceSid::SELF} will be used.
+   *
+   * @get get
+   * @post get
+   * @put get
+   * @var int|null
+   */
+  public $id_register_source = null;
+
+  /**
+   * Indicates whether to display the full profile edit form or the short version.
+   * This is assumed to be used only in user registration mode.
+   *
+   * @get result
+   * @post get
+   * @var bool
+   */
+  public $is_short = 0;
+
+  /**
+   * This will be `true` to sign in a created user. Otherwise, this will be `false`.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_sing_in = false;
+
+  /**
+   * Indicates whether to display the form as a user or as a staff member.
+   * Staff members may have access to different fields than the user.
+   *
+   * @get get
+   * @post get
+   * @put get
+   * @var bool
+   */
+  public $is_staff = false;
+
+  /**
+   * The key of the business you're editing.
+   *
+   * An empty value will return the system-wide fields.
+   *
+   * @get get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * Exception class name.
+   * `null` if there was no mistake.
+   *
+   * @get result
+   * @post result
+   * @var string|null
+   */
+  public $s_class = null;
+
+  /**
+   * Code of the error.
+   * `null` if there was no mistake.
+   *
+   * @field code
+   * @get result
+   * @post result
+   * @var string|null
+   */
+  public $s_code = null;
+
+  /**
+   * Status of the request.
+   * `null` if there was no mistake.
+   *
+   * @field status
+   * @post result
+   * @var string|null
+   */
+  public $s_status = null;
+
+  /**
+   * Compound key delimited wit a colon. First part is business key, where selected client exists.
+   * Second part - uid of already existed user we want to add.
+   * Empty if non-existent client is being added.
+   *
+   * @post get
+   * @var string
+   */
+  public $text_business_uid_key = '';
+
+  /**
+   * Error message.
+   * `null` if there was no mistake.
+   *
+   * @field message
+   * @get result
+   * @post result
+   * @var string|null
+   */
+  public $text_message = null;
+
+  /**
+   * The password to be set for a new user.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_password = '';
+
+  /**
+   * The security token.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_token = '';
+
+  /**
+   * The key of the user to edit.
+   *
+   * If empty, an empty form will be displayed to add a new user.
+   *
+   * @get get
+   * @post get,result
+   * @put get
+   * @var string
+   */
+  public $uid = '';
+
+  /**
+   * The UID of an existing user in another business to add to the current business.
+   *
+   * @post get
+   * @var string
+   */
+  public $uid_existed = '';
+
+  /**
+   * UID of the user, whose email was inherited by the existing client we want to add.
+   * Empty if non-existent user is being added or user to add is the one, whose email is inherited.
+   *
+   * @post get
+   * @var string
+   */
+  public $uid_relative_key = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/Edit/EditPasswordModel.php b/WellnessLiving/Wl/Profile/Edit/EditPasswordModel.php
index 616b8684..93019488 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditPasswordModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditPasswordModel.php
@@ -1,63 +1,63 @@
-<?php
-
-namespace WellnessLiving\Wl\Profile\Edit;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Model to change user's password.
- */
-class EditPasswordModel extends WlModelAbstract
-{
-  /**
-   * Checks if the current password is required or not to update the password.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_old_password_required = true;
-
-  /**
-   * The key ID of business where actions take place.
-   *
-   * Business is necessary for mail sending only.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The confirmation of new password.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_password_confirm = '';
-
-  /**
-   * The new password.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_password_new = '';
-
-  /**
-   * The old password.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_password_old = '';
-
-  /**
-   * The user key.
-   *
-   * @post post
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Profile\Edit;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Model to change user's password.
+ */
+class EditPasswordModel extends WlModelAbstract
+{
+  /**
+   * Checks if the current password is required or not to update the password.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_old_password_required = true;
+
+  /**
+   * The key ID of business where actions take place.
+   *
+   * Business is necessary for mail sending only.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The confirmation of new password.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_password_confirm = '';
+
+  /**
+   * The new password.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_password_new = '';
+
+  /**
+   * The old password.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_password_old = '';
+
+  /**
+   * The user key.
+   *
+   * @post post
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php b/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
index 7fd864b8..581806e2 100644
--- a/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
+++ b/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
@@ -1,108 +1,108 @@
-<?php
-
-namespace WellnessLiving\Wl\Profile\Form\Response;
-
-use WellnessLiving\Core\Quiz\ResponseStatusSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Quiz\Response\SourceSid;
-
-/**
- * Retrieves a list of a user's quiz responses.
- */
-class ResponseListModel extends WlModelAbstract
-{
-  /**
-   * The list of uncompleted quiz responses. Each element has the next structure: <dl>
-   *  <dt>string <var>dtl_date</var></dt>
-   *  <dd>The date of the request to fill out a quiz form.</dd>
-   *  <dt>int <var>id_source</var></dt>
-   *  <dd>The place where the request to fill out a quiz form occurred. One of the {@link SourceSid} constants.</dd>
-   *  <dt>bool <var>is_private</var></dt>
-   *  <dd>
-   *    Determines whether the form can be viewed by staff member only after confirmation.
-   *    `true` - the form can be viewed only after confirmation.
-   *    `false` - the form can always be viewed.
-   *  </dd>
-   *  <dt>string <var>k_quiz</var></dt>
-   *  <dd>The quiz key.</dd>
-   *  <dt>string <var>k_quiz_login</var></dt>
-   *  <dd>The key of the request.</dd>
-   *  <dt>string|null <var>k_quiz_response</var></dt>
-   *  <dd>
-   *    Key of the response.
-   *    Not `null` in case when response in draft status.
-   *  </dd>
-   *  <dt>string <var>text_title</var></dt>
-   *  <dd>The quiz title.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_quiz_login = [];
-
-  /**
-   * The list of completed quiz responses. Each element has the next structure: <dl>
-   *  <dt>string <var>dtl_date</var></dt>
-   *  <dd>The date of the request to fill out a quiz form.</dd>
-   *  <dt>int <var>id_source</var></dt>
-   *  <dd>The place where the request to fill out the quiz form occurred. One of the {@link SourceSid} constants.</dd>
-   *  <dt>int <var>id_status</var></dt>
-   *  <dd>Status of the response. One of {@link ResponseStatusSid} constants.</dd>
-   *  <dt>bool <var>is_private</var></dt>
-   *  <dd>
-   *    Determines whether the form can be viewed by staff member only after confirmation.
-   *    `true` - the form can be viewed only after confirmation.
-   *    `false` - the form can always be viewed.
-   *  </dd>
-   *  <dt>string <var>k_quiz</var></dt>
-   *  <dd>The quiz key.</dd>
-   *  <dt>string <var>k_quiz_login</var></dt>
-   *  <dd>The quiz response key.</dd>
-   *  <dt>string|null <var>text_amend_date</var></dt>
-   *  <dd>
-   *    Date when response amended.
-   *    `null` if response was not edited.
-   *  </dd>
-   *  <dt>string|null <var>text_amend_user</var></dt>
-   *  <dd>
-   *    Name of the user who amend the response.
-   *    `null` if response was not edited.
-   *  </dd>
-   *  <dt>string <var>text_title</var></dt>
-   *  <dd>The quiz title.</dd>
-   *  <dt>string <var>text_user</var></dt>
-   *  <dd>Name of user who complete response or start a draft.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_quiz_response = [];
-
-  /**
-   * This will be `true` if the API is being used from the backend. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_backend = false;
-
-  /**
-   * The key of the business to show information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The key of the user to show information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Profile\Form\Response;
+
+use WellnessLiving\Core\Quiz\ResponseStatusSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Quiz\Response\SourceSid;
+
+/**
+ * Retrieves a list of a user's quiz responses.
+ */
+class ResponseListModel extends WlModelAbstract
+{
+  /**
+   * The list of uncompleted quiz responses. Each element has the next structure: <dl>
+   *  <dt>string <var>dtl_date</var></dt>
+   *  <dd>The date of the request to fill out a quiz form.</dd>
+   *  <dt>int <var>id_source</var></dt>
+   *  <dd>The place where the request to fill out a quiz form occurred. One of the {@link SourceSid} constants.</dd>
+   *  <dt>bool <var>is_private</var></dt>
+   *  <dd>
+   *    Determines whether the form can be viewed by staff member only after confirmation.
+   *    `true` - the form can be viewed only after confirmation.
+   *    `false` - the form can always be viewed.
+   *  </dd>
+   *  <dt>string <var>k_quiz</var></dt>
+   *  <dd>The quiz key.</dd>
+   *  <dt>string <var>k_quiz_login</var></dt>
+   *  <dd>The key of the request.</dd>
+   *  <dt>string|null <var>k_quiz_response</var></dt>
+   *  <dd>
+   *    Key of the response.
+   *    Not `null` in case when response in draft status.
+   *  </dd>
+   *  <dt>string <var>text_title</var></dt>
+   *  <dd>The quiz title.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_quiz_login = [];
+
+  /**
+   * The list of completed quiz responses. Each element has the next structure: <dl>
+   *  <dt>string <var>dtl_date</var></dt>
+   *  <dd>The date of the request to fill out a quiz form.</dd>
+   *  <dt>int <var>id_source</var></dt>
+   *  <dd>The place where the request to fill out the quiz form occurred. One of the {@link SourceSid} constants.</dd>
+   *  <dt>int <var>id_status</var></dt>
+   *  <dd>Status of the response. One of {@link ResponseStatusSid} constants.</dd>
+   *  <dt>bool <var>is_private</var></dt>
+   *  <dd>
+   *    Determines whether the form can be viewed by staff member only after confirmation.
+   *    `true` - the form can be viewed only after confirmation.
+   *    `false` - the form can always be viewed.
+   *  </dd>
+   *  <dt>string <var>k_quiz</var></dt>
+   *  <dd>The quiz key.</dd>
+   *  <dt>string <var>k_quiz_login</var></dt>
+   *  <dd>The quiz response key.</dd>
+   *  <dt>string|null <var>text_amend_date</var></dt>
+   *  <dd>
+   *    Date when response amended.
+   *    `null` if response was not edited.
+   *  </dd>
+   *  <dt>string|null <var>text_amend_user</var></dt>
+   *  <dd>
+   *    Name of the user who amend the response.
+   *    `null` if response was not edited.
+   *  </dd>
+   *  <dt>string <var>text_title</var></dt>
+   *  <dd>The quiz title.</dd>
+   *  <dt>string <var>text_user</var></dt>
+   *  <dd>Name of user who complete response or start a draft.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_quiz_response = [];
+
+  /**
+   * This will be `true` if the API is being used from the backend. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_backend = false;
+
+  /**
+   * The key of the business to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The key of the user to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php b/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php
index 3e30f722..88bcef4e 100644
--- a/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php
+++ b/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php
@@ -1,810 +1,810 @@
-<?php
-
-namespace WellnessLiving\Wl\Profile\PurchaseList;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-use WellnessLiving\Wl\WlActivationSid;
-use WellnessLiving\Wl\WlCommissionTypeSid;
-use WellnessLiving\Wl\WlDurationTypeSid;
-use WellnessLiving\Wl\WlProgramTypeSid;
-use WellnessLiving\Wl\WlSaleSid;
-
-/**
- * Gets the details of a specified purchase.
- *
- * This endpoint may require different IDs to be specified for different types of purchases. The IDs required for a
- * specific item will be the same IDs returned from the {@link PurchaseListModel} endpoint.
- */
-class PurchaseListElementModel extends WlModelAbstract
-{
-  /**
-   * A list of components. This won't be empty if this purchase element is a package. Every element has keys:
-   * <dl>
-   *   <dt>
-   *     string [<var>k_enrollment_book</var>]
-   *   </dt>
-   *   <dd>
-   *     The booking enrollment key.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_login_product</var>]
-   *   </dt>
-   *   <dd>
-   *     The key referencing the product a user purchased.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_login_promotion</var>]
-   *   </dt>
-   *   <dd>
-   *     The key of a user's Purchase Option.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_session_pass</var>]
-   *   </dt>
-   *   <dd>
-   *     The key of a user's session pass.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_component;
-
-  /**
-   * An array containing information about the image of the purchased item. Every element has the following keys:
-   * <dl>
-   *   <dt>
-   *     int <var>i_height</var>
-   *   </dt>
-   *   <dd>
-   *     The height of the image.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_width</var>
-   *   </dt>
-   *   <dd>
-   *     The width of the image.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_empty</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, then the purchased item doesn't have an image. If `false`, then the item has an image.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_logo;
-
-  /**
-   * This field is used only for promotions. It contains restrictions that will apply to bookings made with
-   * this promotion. Every element has the following keys:
-   * <dl>
-   *   <dt>
-   *     int <var>i_limit</var>
-   *   </dt>
-   *   <dd>
-   *     The number of sessions that may be booked during this period.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_remain</var>
-   *   </dt>
-   *   <dd>
-   *     The number of sessions that remain available.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_date</var>
-   *   </dt>
-   *   <dd>
-   *     The name of the period type.
-   *   </dd>
-   * </dl>This will be an empty array for other purchased items.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_restrict;
-
-  /**
-   * The list of taxes paid for the purchased item. Every element has the following fields:
-   * <dl>
-   *   <dt>
-   *     string <var>f_tax_discount</var>
-   *   </dt>
-   *   <dd>
-   *     The amount of tax.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_tax</var>
-   *   </dt>
-   *   <dd>
-   *     The name of the tax.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_tax;
-
-  /**
-   * This is `true` only if the purchased item is a promotion and the user can control the renewal of the promotion.
-   * Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $can_renew;
-
-  /**
-   * The expiration date of the promotion. This is used only if the purchased item is a promotion.
-   *
-   * @get result
-   * @var string
-   */
-  public $dl_end;
-
-  /**
-   * The local date of the purchase in MySQL format.
-   *
-   * @get result
-   * @var string
-   */
-  public $dl_purchase;
-
-  /**
-   * The local date in MySQL format when mail about purchasing was sent (or will be sent) to the user.
-   * This won't be empty only for gift cards.
-   *
-   * @get result
-   * @var string
-   */
-  public $dl_send;
-
-  /**
-   * The start date of the promotion. This is used only if the purchased item is a promotion.
-   *
-   * @get result
-   * @var string
-   */
-  public $dl_start;
-
-  /**
-   * The end date of the promotion hold. This is used only for promotions on hold.
-   * This value may be empty if the hold is eternal.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_hold_end;
-
-  /**
-   * The start date of the promotion hold. This is used only for promotions on hold.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_hold_start;
-
-  /**
-   * The purchase date of the purchased item. This is given in UTC in MySQL format.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_purchase;
-
-  /**
-   * The date in MySQL format when gift card was redeemed. This won't be empty only for gift cards.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_redeem;
-
-  /**
-   * The percentage value of the discount for the client type. This will be empty if a discount wasn't applied.
-   *
-   * @get result
-   * @var float
-   */
-  public $f_discount_login_type_percent;
-
-  /**
-   * The description of the purchased item.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_description;
-
-  /**
-   * The number of sessions remaining for a promotion. This value is used only for promotions. This value will be `0` if
-   * the purchased item isn't a promotion or if there are no remaining sessions.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_book;
-
-  /**
-   * Displays the number of minutes of sessions that were booked by this promotion. This isn't `0` only for promotions.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_book_duration;
-
-  /**
-   * The number of purchased items bought at the time of purchase.
-   * This will be `0` for purchase items obtained via a redemption code or as a result of an import.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_buy;
-
-  /**
-   * The percentage value of the discount given by a reward prize. This will be `0` if a discount wasn't applied.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_discount_count;
-
-  /**
-   * The duration of the promotion. The measurement unit is <var>id_duration</var>. This field is only added for promotions.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_duration;
-
-  /**
-   * Image Height in pixels. Please specify this value if you need purchase image to be returned in specific size.
-   * In case this value is not specified returned image will have default purchase size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_height = 0;
-
-  /**
-   * Image Width in pixels. Please specify this value if you need purchase image to be returned in specific size.
-   * In case this value is not specified returned image will have default purchase size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_width = 0;
-
-  /**
-   * The number of bookings left with this promotion. This value is used only for non-sequential promotions.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_left;
-
-  /**
-   * The number of visits that can be made with this promotion. This value is used only for promotions.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_limit;
-
-  /**
-   * The interval duration of the regular payments. This value is used only for membership-type promotions.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_payment_period;
-
-  /**
-   * The number of remaining bookings for the promotion. This is used only for promotions.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_remain;
-
-  /**
-   * The number of minutes remaining for the promotion.
-   * This is used only for promotions that work with a limited number of minutes.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_remain_duration;
-
-  /**
-   * Displays how many times promotion was updated. This isn't `0` only for promotions.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_renew;
-
-  /**
-   * The number of visits that were attended for the promotion. This is used only for promotions.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_use;
-
-  /**
-   * The number of minutes the user has already used with this purchase of this promotion. This isn't `0` only for promotions.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_use_duration;
-
-  /**
-   * The activation mode. One of the {@link WlActivationSid} constants. This field is only added for promotions.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_activation;
-
-  /**
-   * The type of discount given via a reward prize. One of the {@link WlCommissionTypeSid} constants. This will be empty
-   * if this discount wasn't applied.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_discount_commission_type;
-
-  /**
-   * The type of duration for the promotion. This is used only for membership-type promotions. This determines
-   * whether the promotion lasts indefinitely, has a fixed duration, or ends on a specific date. The measurement unit
-   * for key <var>i_payment_period</var>. One of the {@link WlDurationTypeSid} constants.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_duration;
-
-  /**
-   * The ID of the promotion program. This is used only for promotions.
-   * The measurement unit for key <var>i_payment_period</var>. The ID of promotion program type.
-   * One of the {@link WlProgramTypeSid} constants.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_program_type;
-
-  /**
-   * The ID of the purchase item type. The measurement unit for key <var>i_payment_period</var>.
-   * The ID of purchase item type. One of the {@link WlPurchaseItemSid} constants.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_purchase_item;
-
-  /**
-   * The ID of the sale category. One of the constants {@link WlSaleSid}.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_sale;
-
-  /**
-   * If `true`, then the purchase item is active. If `false`, then the purchase item isn't active.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_active;
-
-  /**
-   * Whether the purchase item is asset.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_asset;
-
-  /**
-   * If `true`, then the purchased item is a component of another purchase item, as is the case of a package.
-   * If `false`, then the purchased item isn't a component of another purchase item.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_component;
-
-  /**
-   * If `true`, then this promotion will be converted to a different promotion after it expires. If `false`, then the
-   * promotion won't be converted to a different promotion after it expires. This can only be true for certain
-   * promotions.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_convert;
-
-  /**
-   * This is `true` only if the purchased item is a promotion that has expired. Otherwise, this will be `false`
-   * in all other cases.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_expire;
-
-  /**
-   * This is `true` only if the purchased item is a promotion and has been placed on hold.
-   * Otherwise, this is `false` in all other cases.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_hold;
-
-  /**
-   * If `true`, then the usage of this purchased item is disabled.
-   * If `false`, then the usage of this purchased item is enabled.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_limit;
-
-  /**
-   * If `true`, then the discount was applied for the member type.
-   * If `false`, then the discount was applied for the pass holder type.
-   * If `null`, then the discount was applied for the prospect type. This won't be `null` only if a discount based
-   * on a client type was applied.
-   *
-   * @get result
-   * @var bool|null
-   */
-  public $is_login_type_member;
-
-  /**
-   * If `true`, then the gift card email notification will be sent to the receiver. This is `true` only if the
-   * purchased item is a gift card. Otherwise, this will be `false` in all other cases.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_mail;
-
-  /**
-   * If `true`, then the gift card email notification has been sent. This can only be `true` if the purchased item
-   * is a gift card. Otherwise, this will be `false` in all other cases.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_past;
-
-  /**
-   * This is `true` if the gift card has been redeemed.
-   * This can only be `true` if the purchased item is a gift card. Otherwise, this will be `false` in all other cases.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_redeem;
-
-  /**
-   * This is `true` if the promotion is auto-renewable. This can only be `true` if the purchased item is a promotion.
-   * Otherwise, this will be `false` in all other cases.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_renew;
-
-  /**
-   * This is `true` if the promotion has been transferred. This can only be true if the purchased item is a promotion.
-   * This is `false` if the promotion hasn't been transferred or in all other cases.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_transfer;
-
-  /**
-   * The ID of the redemption code used to obtain the item. This should be specified only for items obtained via
-   * redemption code (not for ordinary purchases or for purchased promotions without purchases).
-   * This will be `null` if not set yet.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_code = '0';
-
-  /**
-   * The key of the redemption code. This value will not be `0` if the purchased item is obtained via a redemption
-   * code or if it's a component of a package obtained via a redemption code.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_code_result;
-
-  /**
-   * The key of the currency used to make the purchase.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_currency;
-
-  /**
-   * The key of an entirely booked event. This must be specified if the purchased item is a whole event
-   * and part of a package.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_enrollment_book = '0';
-
-  /**
-   * The key of the item. This can correspond to one of many values depending on {@link PurchaseListElementModel::$id_sale}.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_id = '0';
-
-  /**
-   * The key of a purchased product. This must be specified if the purchased item is a product and part of a package.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_login_product = '0';
-
-  /**
-   * The key of the user's promotion. This should only be specified for promotions given without a purchase.
-   * This isn't for ordinary purchases or for promotions obtained via redemption codes. This will be `null` if not set yet.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_login_promotion = '0';
-
-  /**
-   * The key of the purchased promotion. This won't be `0` only for promotions.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_login_promotion_result;
-
-  /**
-   * The key of the purchased item. This should be specified only for ordinary purchases
-   * and not for purchases obtained via redemption codes or as a result of an old import.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_purchase_item = '0';
-
-  /**
-   * The key of the whole purchase, including the given purchased item.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_purchase_result;
-
-  /**
-   * The ID of the makeup session used to attend an event.
-   *
-   * This must be specified if the purchase item is a component of a package and a whole event booking.
-   * And only for items which aren't components of package.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_session_pass = '0';
-
-  /**
-   * The cost of the purchased item.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_cost_item;
-
-  /**
-   * The total cost of the purchase, including taxes and fees.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_cost_total;
-
-  /**
-   * The amount of the discount via prize. This will be empty if this discount wasn't applied.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount_amount;
-
-  /**
-   * The amount of the discount for the client type. This value will be empty if the discount wasn't applied.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount_login_type_amount;
-
-  /**
-   * The amount of the manual discount. This will be empty if this discount wasn't applied.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_discount_manual;
-
-  /**
-   * The amount to pay for each payment period. This is used only for promotions with the membership program type.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_period_price;
-
-  /**
-   * The source price of item.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_price;
-
-  /**
-   * The amount refunded. This will be `0` if there are no refunds.
-   *
-   * @get result
-   * @var string
-   */
-  public $m_refund;
-
-  /**
-   * The redemption code. This value is used only if the purchase is bought via a redemption code.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_code;
-
-  /**
-   * The code to redeem the gift card. This isn't empty only for gift cards.
-   *
-   * This can be auto-generated or custom (entered manually by the staff member during purchase).
-   * The max length is 20 characters, including numbers and letters.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_gift_code;
-
-  /**
-   * The name of gift recipient. This isn't empty only for gift cards.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_gift_recipient;
-
-  /**
-   * The name of the staff member who disabled the usage of the purchased item.
-   * This will be empty if the purchased item is enabled.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_limit_actor;
-
-  /**
-   * The email address to which the gift card was sent. This is used only for gift cards.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_mail;
-
-  /**
-   * The test of the message sent to the gift card recipient. This is used only for gift cards.
-   * This will be empty if an email notification shouldn't be sent.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_message;
-
-  /**
-   * The name of the user who paid for this purchase.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_payer;
-
-  /**
-   * The title of the converted promotion. This value is used only for promotions that must be converted to another
-   * promotion after expiration.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_promotion_convert;
-
-  /**
-   * The purchase ID number as it appears on the receipt. This value will also include the leading 0s for the ID number.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_purchase;
-
-  /**
-   * The name of the user who paid for this purchase.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_recipient;
-
-  /**
-   * The name of the sender. This value is used only for gift cards.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_sender;
-
-  /**
-   * The name of the purchased item.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_title;
-
-  /**
-   * The string ID of the purchased item. This ID may be used to change the view of the purchased item.
-   *
-   * @get result
-   * @var string
-   */
-  public $sid_value;
-
-  /**
-   * The key of the user who paid for this purchase.
-   *
-   * @get result
-   * @var string
-   */
-  public $uid_payer;
-
-  /**
-   * The key of the user who paid for this purchase.
-   *
-   * @get result
-   * @var string
-   */
-  public $uid_recipient;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Profile\PurchaseList;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+use WellnessLiving\Wl\WlActivationSid;
+use WellnessLiving\Wl\WlCommissionTypeSid;
+use WellnessLiving\Wl\WlDurationTypeSid;
+use WellnessLiving\Wl\WlProgramTypeSid;
+use WellnessLiving\Wl\WlSaleSid;
+
+/**
+ * Gets the details of a specified purchase.
+ *
+ * This endpoint may require different IDs to be specified for different types of purchases. The IDs required for a
+ * specific item will be the same IDs returned from the {@link PurchaseListModel} endpoint.
+ */
+class PurchaseListElementModel extends WlModelAbstract
+{
+  /**
+   * A list of components. This won't be empty if this purchase element is a package. Every element has keys:
+   * <dl>
+   *   <dt>
+   *     string [<var>k_enrollment_book</var>]
+   *   </dt>
+   *   <dd>
+   *     The booking enrollment key.
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_login_product</var>]
+   *   </dt>
+   *   <dd>
+   *     The key referencing the product a user purchased.
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_login_promotion</var>]
+   *   </dt>
+   *   <dd>
+   *     The key of a user's Purchase Option.
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_session_pass</var>]
+   *   </dt>
+   *   <dd>
+   *     The key of a user's session pass.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_component;
+
+  /**
+   * An array containing information about the image of the purchased item. Every element has the following keys:
+   * <dl>
+   *   <dt>
+   *     int <var>i_height</var>
+   *   </dt>
+   *   <dd>
+   *     The height of the image.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_width</var>
+   *   </dt>
+   *   <dd>
+   *     The width of the image.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_empty</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, then the purchased item doesn't have an image. If `false`, then the item has an image.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_logo;
+
+  /**
+   * This field is used only for promotions. It contains restrictions that will apply to bookings made with
+   * this promotion. Every element has the following keys:
+   * <dl>
+   *   <dt>
+   *     int <var>i_limit</var>
+   *   </dt>
+   *   <dd>
+   *     The number of sessions that may be booked during this period.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_remain</var>
+   *   </dt>
+   *   <dd>
+   *     The number of sessions that remain available.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_date</var>
+   *   </dt>
+   *   <dd>
+   *     The name of the period type.
+   *   </dd>
+   * </dl>This will be an empty array for other purchased items.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_restrict;
+
+  /**
+   * The list of taxes paid for the purchased item. Every element has the following fields:
+   * <dl>
+   *   <dt>
+   *     string <var>f_tax_discount</var>
+   *   </dt>
+   *   <dd>
+   *     The amount of tax.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_tax</var>
+   *   </dt>
+   *   <dd>
+   *     The name of the tax.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_tax;
+
+  /**
+   * This is `true` only if the purchased item is a promotion and the user can control the renewal of the promotion.
+   * Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $can_renew;
+
+  /**
+   * The expiration date of the promotion. This is used only if the purchased item is a promotion.
+   *
+   * @get result
+   * @var string
+   */
+  public $dl_end;
+
+  /**
+   * The local date of the purchase in MySQL format.
+   *
+   * @get result
+   * @var string
+   */
+  public $dl_purchase;
+
+  /**
+   * The local date in MySQL format when mail about purchasing was sent (or will be sent) to the user.
+   * This won't be empty only for gift cards.
+   *
+   * @get result
+   * @var string
+   */
+  public $dl_send;
+
+  /**
+   * The start date of the promotion. This is used only if the purchased item is a promotion.
+   *
+   * @get result
+   * @var string
+   */
+  public $dl_start;
+
+  /**
+   * The end date of the promotion hold. This is used only for promotions on hold.
+   * This value may be empty if the hold is eternal.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_hold_end;
+
+  /**
+   * The start date of the promotion hold. This is used only for promotions on hold.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_hold_start;
+
+  /**
+   * The purchase date of the purchased item. This is given in UTC in MySQL format.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_purchase;
+
+  /**
+   * The date in MySQL format when gift card was redeemed. This won't be empty only for gift cards.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_redeem;
+
+  /**
+   * The percentage value of the discount for the client type. This will be empty if a discount wasn't applied.
+   *
+   * @get result
+   * @var float
+   */
+  public $f_discount_login_type_percent;
+
+  /**
+   * The description of the purchased item.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_description;
+
+  /**
+   * The number of sessions remaining for a promotion. This value is used only for promotions. This value will be `0` if
+   * the purchased item isn't a promotion or if there are no remaining sessions.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_book;
+
+  /**
+   * Displays the number of minutes of sessions that were booked by this promotion. This isn't `0` only for promotions.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_book_duration;
+
+  /**
+   * The number of purchased items bought at the time of purchase.
+   * This will be `0` for purchase items obtained via a redemption code or as a result of an import.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_buy;
+
+  /**
+   * The percentage value of the discount given by a reward prize. This will be `0` if a discount wasn't applied.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_discount_count;
+
+  /**
+   * The duration of the promotion. The measurement unit is <var>id_duration</var>. This field is only added for promotions.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_duration;
+
+  /**
+   * Image Height in pixels. Please specify this value if you need purchase image to be returned in specific size.
+   * In case this value is not specified returned image will have default purchase size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_height = 0;
+
+  /**
+   * Image Width in pixels. Please specify this value if you need purchase image to be returned in specific size.
+   * In case this value is not specified returned image will have default purchase size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_width = 0;
+
+  /**
+   * The number of bookings left with this promotion. This value is used only for non-sequential promotions.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_left;
+
+  /**
+   * The number of visits that can be made with this promotion. This value is used only for promotions.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_limit;
+
+  /**
+   * The interval duration of the regular payments. This value is used only for membership-type promotions.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_payment_period;
+
+  /**
+   * The number of remaining bookings for the promotion. This is used only for promotions.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_remain;
+
+  /**
+   * The number of minutes remaining for the promotion.
+   * This is used only for promotions that work with a limited number of minutes.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_remain_duration;
+
+  /**
+   * Displays how many times promotion was updated. This isn't `0` only for promotions.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_renew;
+
+  /**
+   * The number of visits that were attended for the promotion. This is used only for promotions.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_use;
+
+  /**
+   * The number of minutes the user has already used with this purchase of this promotion. This isn't `0` only for promotions.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_use_duration;
+
+  /**
+   * The activation mode. One of the {@link WlActivationSid} constants. This field is only added for promotions.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_activation;
+
+  /**
+   * The type of discount given via a reward prize. One of the {@link WlCommissionTypeSid} constants. This will be empty
+   * if this discount wasn't applied.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_discount_commission_type;
+
+  /**
+   * The type of duration for the promotion. This is used only for membership-type promotions. This determines
+   * whether the promotion lasts indefinitely, has a fixed duration, or ends on a specific date. The measurement unit
+   * for key <var>i_payment_period</var>. One of the {@link WlDurationTypeSid} constants.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_duration;
+
+  /**
+   * The ID of the promotion program. This is used only for promotions.
+   * The measurement unit for key <var>i_payment_period</var>. The ID of promotion program type.
+   * One of the {@link WlProgramTypeSid} constants.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_program_type;
+
+  /**
+   * The ID of the purchase item type. The measurement unit for key <var>i_payment_period</var>.
+   * The ID of purchase item type. One of the {@link WlPurchaseItemSid} constants.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_purchase_item;
+
+  /**
+   * The ID of the sale category. One of the constants {@link WlSaleSid}.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_sale;
+
+  /**
+   * If `true`, then the purchase item is active. If `false`, then the purchase item isn't active.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_active;
+
+  /**
+   * Whether the purchase item is asset.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_asset;
+
+  /**
+   * If `true`, then the purchased item is a component of another purchase item, as is the case of a package.
+   * If `false`, then the purchased item isn't a component of another purchase item.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_component;
+
+  /**
+   * If `true`, then this promotion will be converted to a different promotion after it expires. If `false`, then the
+   * promotion won't be converted to a different promotion after it expires. This can only be true for certain
+   * promotions.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_convert;
+
+  /**
+   * This is `true` only if the purchased item is a promotion that has expired. Otherwise, this will be `false`
+   * in all other cases.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_expire;
+
+  /**
+   * This is `true` only if the purchased item is a promotion and has been placed on hold.
+   * Otherwise, this is `false` in all other cases.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_hold;
+
+  /**
+   * If `true`, then the usage of this purchased item is disabled.
+   * If `false`, then the usage of this purchased item is enabled.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_limit;
+
+  /**
+   * If `true`, then the discount was applied for the member type.
+   * If `false`, then the discount was applied for the pass holder type.
+   * If `null`, then the discount was applied for the prospect type. This won't be `null` only if a discount based
+   * on a client type was applied.
+   *
+   * @get result
+   * @var bool|null
+   */
+  public $is_login_type_member;
+
+  /**
+   * If `true`, then the gift card email notification will be sent to the receiver. This is `true` only if the
+   * purchased item is a gift card. Otherwise, this will be `false` in all other cases.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_mail;
+
+  /**
+   * If `true`, then the gift card email notification has been sent. This can only be `true` if the purchased item
+   * is a gift card. Otherwise, this will be `false` in all other cases.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_past;
+
+  /**
+   * This is `true` if the gift card has been redeemed.
+   * This can only be `true` if the purchased item is a gift card. Otherwise, this will be `false` in all other cases.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_redeem;
+
+  /**
+   * This is `true` if the promotion is auto-renewable. This can only be `true` if the purchased item is a promotion.
+   * Otherwise, this will be `false` in all other cases.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_renew;
+
+  /**
+   * This is `true` if the promotion has been transferred. This can only be true if the purchased item is a promotion.
+   * This is `false` if the promotion hasn't been transferred or in all other cases.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_transfer;
+
+  /**
+   * The ID of the redemption code used to obtain the item. This should be specified only for items obtained via
+   * redemption code (not for ordinary purchases or for purchased promotions without purchases).
+   * This will be `null` if not set yet.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_code = '0';
+
+  /**
+   * The key of the redemption code. This value will not be `0` if the purchased item is obtained via a redemption
+   * code or if it's a component of a package obtained via a redemption code.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_code_result;
+
+  /**
+   * The key of the currency used to make the purchase.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_currency;
+
+  /**
+   * The key of an entirely booked event. This must be specified if the purchased item is a whole event
+   * and part of a package.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_enrollment_book = '0';
+
+  /**
+   * The key of the item. This can correspond to one of many values depending on {@link PurchaseListElementModel::$id_sale}.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_id = '0';
+
+  /**
+   * The key of a purchased product. This must be specified if the purchased item is a product and part of a package.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_login_product = '0';
+
+  /**
+   * The key of the user's promotion. This should only be specified for promotions given without a purchase.
+   * This isn't for ordinary purchases or for promotions obtained via redemption codes. This will be `null` if not set yet.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_login_promotion = '0';
+
+  /**
+   * The key of the purchased promotion. This won't be `0` only for promotions.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_login_promotion_result;
+
+  /**
+   * The key of the purchased item. This should be specified only for ordinary purchases
+   * and not for purchases obtained via redemption codes or as a result of an old import.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_purchase_item = '0';
+
+  /**
+   * The key of the whole purchase, including the given purchased item.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_purchase_result;
+
+  /**
+   * The ID of the makeup session used to attend an event.
+   *
+   * This must be specified if the purchase item is a component of a package and a whole event booking.
+   * And only for items which aren't components of package.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_session_pass = '0';
+
+  /**
+   * The cost of the purchased item.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_cost_item;
+
+  /**
+   * The total cost of the purchase, including taxes and fees.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_cost_total;
+
+  /**
+   * The amount of the discount via prize. This will be empty if this discount wasn't applied.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount_amount;
+
+  /**
+   * The amount of the discount for the client type. This value will be empty if the discount wasn't applied.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount_login_type_amount;
+
+  /**
+   * The amount of the manual discount. This will be empty if this discount wasn't applied.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_discount_manual;
+
+  /**
+   * The amount to pay for each payment period. This is used only for promotions with the membership program type.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_period_price;
+
+  /**
+   * The source price of item.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_price;
+
+  /**
+   * The amount refunded. This will be `0` if there are no refunds.
+   *
+   * @get result
+   * @var string
+   */
+  public $m_refund;
+
+  /**
+   * The redemption code. This value is used only if the purchase is bought via a redemption code.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_code;
+
+  /**
+   * The code to redeem the gift card. This isn't empty only for gift cards.
+   *
+   * This can be auto-generated or custom (entered manually by the staff member during purchase).
+   * The max length is 20 characters, including numbers and letters.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_gift_code;
+
+  /**
+   * The name of gift recipient. This isn't empty only for gift cards.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_gift_recipient;
+
+  /**
+   * The name of the staff member who disabled the usage of the purchased item.
+   * This will be empty if the purchased item is enabled.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_limit_actor;
+
+  /**
+   * The email address to which the gift card was sent. This is used only for gift cards.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_mail;
+
+  /**
+   * The test of the message sent to the gift card recipient. This is used only for gift cards.
+   * This will be empty if an email notification shouldn't be sent.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_message;
+
+  /**
+   * The name of the user who paid for this purchase.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_payer;
+
+  /**
+   * The title of the converted promotion. This value is used only for promotions that must be converted to another
+   * promotion after expiration.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_promotion_convert;
+
+  /**
+   * The purchase ID number as it appears on the receipt. This value will also include the leading 0s for the ID number.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_purchase;
+
+  /**
+   * The name of the user who paid for this purchase.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_recipient;
+
+  /**
+   * The name of the sender. This value is used only for gift cards.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_sender;
+
+  /**
+   * The name of the purchased item.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_title;
+
+  /**
+   * The string ID of the purchased item. This ID may be used to change the view of the purchased item.
+   *
+   * @get result
+   * @var string
+   */
+  public $sid_value;
+
+  /**
+   * The key of the user who paid for this purchase.
+   *
+   * @get result
+   * @var string
+   */
+  public $uid_payer;
+
+  /**
+   * The key of the user who paid for this purchase.
+   *
+   * @get result
+   * @var string
+   */
+  public $uid_recipient;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListModel.php b/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListModel.php
index 520c47c9..5cc9e094 100644
--- a/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListModel.php
+++ b/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListModel.php
@@ -1,164 +1,164 @@
-<?php
-
-namespace WellnessLiving\Wl\Profile\PurchaseList;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-use WellnessLiving\Wl\WlSaleSid;
-
-/**
- * Gets a list of purchases for a user.
- */
-class PurchaseListModel extends WlModelAbstract
-{
-  /**
-   * A list of purchased items. Every element contains a sub-array with the following fields:
-   * <dl>
-   *   <dt>
-   *     bool[] <var>a_active</var>
-   *   </dt>
-   *   <dd>
-   *     The value of <var>a_purchase['is_active']</var>. For packages, this also contains the values of <var>a_purchase['is_active']</var> of every component.
-   *   </dd>
-   *   <dt>
-   *     int[] <var>a_sale</var>
-   *   </dt>
-   *   <dd>
-   *     The value of <var>a_purchase['id_sale']</var>. For packages, this also contains the values of <var>a_purchase['id_sale']</var> of every component.
-   *   </dd>
-   *   <dt>
-   *     string <var>dt_add</var>
-   *   </dt>
-   *   <dd>
-   *     The date that the purchase was added.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_purchase_item</var>
-   *   </dt>
-   *   <dd>
-   *     The ID of the purchase type. One of the constants {@link WlPurchaseItemSid}.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_sale</var>
-   *   </dt>
-   *   <dd>
-   *     The ID of the sale category in the store. One of the constants {@link WlSaleSid}.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_active</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, then the purchase item is active. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_component</var>]
-   *   </dt>
-   *   <dd>
-   *     If `true`, then the purchase item is a package component. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_appointment</var>
-   *   </dt>
-   *   <dd>
-   *     Appointment key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_code</var>
-   *   </dt>
-   *   <dd>
-   *     The redemption code key that was used to make a purchase.
-   *     This is used only if <var>k_login_promotion</var> and <var>k_purchase</var> are empty.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_enrollment_book</var>]
-   *   </dt>
-   *   <dd>
-   *     The key of an event that requires clients to book every session at once.
-   *     This is used only if the event is part of a package.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_id</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the purchase type referring to different types of keys depending on the value of <var>id_sale</var>.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_login_product</var>]
-   *   </dt>
-   *   <dd>
-   *     The key of the purchased product.
-   *     This is used only if the event is part of a package.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_login_promotion</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the user's existing purchase options.
-   *     This is used only if `k_code` and `k_purchase` are empty.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_purchase</var>
-   *   </dt>
-   *   <dd>
-   *     The key of a purchase where no special case rules are in effect.
-   *     This is used only used if `k_code` is empty.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_purchase_item</var>
-   *   </dt>
-   *   <dd>
-   *     The key of a purchase item where no special case rules are in effect.
-   *     This is used only if <var>k_code</var> is empty.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_service</var>
-   *   </dt>
-   *   <dd>
-   *     Service key.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_session_pass</var>]
-   *   </dt>
-   *   <dd>
-   *     In certain cases a session can be canceled and makeup sessions can be granted to a client in lieu of
-   *     other compensation. This is the key of one of the makeup sessions used to attend an event. This is also
-   *     present for a repeat purchase of an event.
-   *
-   *   </dd>
-   *   <dt>
-   *     string <var>s_title</var>
-   *   </dt>
-   *   <dd>
-   *     The name of the purchase item.
-   *   </dd>
-   *   <dt>
-   *     string <var>uid</var>
-   *   </dt>
-   *   <dd>
-   *     The ID of the purchase owner.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_purchase;
-
-  /**
-   * The key of a business to show information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The key of a user to show information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Profile\PurchaseList;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+use WellnessLiving\Wl\WlSaleSid;
+
+/**
+ * Gets a list of purchases for a user.
+ */
+class PurchaseListModel extends WlModelAbstract
+{
+  /**
+   * A list of purchased items. Every element contains a sub-array with the following fields:
+   * <dl>
+   *   <dt>
+   *     bool[] <var>a_active</var>
+   *   </dt>
+   *   <dd>
+   *     The value of <var>a_purchase['is_active']</var>. For packages, this also contains the values of <var>a_purchase['is_active']</var> of every component.
+   *   </dd>
+   *   <dt>
+   *     int[] <var>a_sale</var>
+   *   </dt>
+   *   <dd>
+   *     The value of <var>a_purchase['id_sale']</var>. For packages, this also contains the values of <var>a_purchase['id_sale']</var> of every component.
+   *   </dd>
+   *   <dt>
+   *     string <var>dt_add</var>
+   *   </dt>
+   *   <dd>
+   *     The date that the purchase was added.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_purchase_item</var>
+   *   </dt>
+   *   <dd>
+   *     The ID of the purchase type. One of the constants {@link WlPurchaseItemSid}.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_sale</var>
+   *   </dt>
+   *   <dd>
+   *     The ID of the sale category in the store. One of the constants {@link WlSaleSid}.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_active</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, then the purchase item is active. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     bool [<var>is_component</var>]
+   *   </dt>
+   *   <dd>
+   *     If `true`, then the purchase item is a package component. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_appointment</var>
+   *   </dt>
+   *   <dd>
+   *     Appointment key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_code</var>
+   *   </dt>
+   *   <dd>
+   *     The redemption code key that was used to make a purchase.
+   *     This is used only if <var>k_login_promotion</var> and <var>k_purchase</var> are empty.
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_enrollment_book</var>]
+   *   </dt>
+   *   <dd>
+   *     The key of an event that requires clients to book every session at once.
+   *     This is used only if the event is part of a package.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_id</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the purchase type referring to different types of keys depending on the value of <var>id_sale</var>.
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_login_product</var>]
+   *   </dt>
+   *   <dd>
+   *     The key of the purchased product.
+   *     This is used only if the event is part of a package.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_login_promotion</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the user's existing purchase options.
+   *     This is used only if `k_code` and `k_purchase` are empty.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_purchase</var>
+   *   </dt>
+   *   <dd>
+   *     The key of a purchase where no special case rules are in effect.
+   *     This is used only used if `k_code` is empty.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_purchase_item</var>
+   *   </dt>
+   *   <dd>
+   *     The key of a purchase item where no special case rules are in effect.
+   *     This is used only if <var>k_code</var> is empty.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_service</var>
+   *   </dt>
+   *   <dd>
+   *     Service key.
+   *   </dd>
+   *   <dt>
+   *     string [<var>k_session_pass</var>]
+   *   </dt>
+   *   <dd>
+   *     In certain cases a session can be canceled and makeup sessions can be granted to a client in lieu of
+   *     other compensation. This is the key of one of the makeup sessions used to attend an event. This is also
+   *     present for a repeat purchase of an event.
+   *
+   *   </dd>
+   *   <dt>
+   *     string <var>s_title</var>
+   *   </dt>
+   *   <dd>
+   *     The name of the purchase item.
+   *   </dd>
+   *   <dt>
+   *     string <var>uid</var>
+   *   </dt>
+   *   <dd>
+   *     The ID of the purchase owner.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_purchase;
+
+  /**
+   * The key of a business to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The key of a user to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/RegisterSourceSid.php b/WellnessLiving/Wl/Profile/RegisterSourceSid.php
index 5b4388f1..afa4d848 100644
--- a/WellnessLiving/Wl/Profile/RegisterSourceSid.php
+++ b/WellnessLiving/Wl/Profile/RegisterSourceSid.php
@@ -1,28 +1,28 @@
-<?php
-
-namespace WellnessLiving\Wl\Profile;
-
-/**
- * List of sources from where the user registers.
- */
-class RegisterSourceSid
-{
-  /**
-   * Source when user register during purchase or booking.
-   *
-   * <b>
-   *  Don't use for edit existing user profile.
-   *  Used only to register new clients during booking or purchase.
-   * </b>
-   */
-  const BOOKING_AND_PURCHASE = 1;
-
-  /**
-   * Source when user register on self registration web app, self registration web app URL etc.
-   *
-   * <b>Don't use for edit existing user profile.</b>
-   */
-  const SELF = 2;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Profile;
+
+/**
+ * List of sources from where the user registers.
+ */
+class RegisterSourceSid
+{
+  /**
+   * Source when user register during purchase or booking.
+   *
+   * <b>
+   *  Don't use for edit existing user profile.
+   *  Used only to register new clients during booking or purchase.
+   * </b>
+   */
+  const BOOKING_AND_PURCHASE = 1;
+
+  /**
+   * Source when user register on self registration web app, self registration web app URL etc.
+   *
+   * <b>Don't use for edit existing user profile.</b>
+   */
+  const SELF = 2;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/Setting/SettingModel.php b/WellnessLiving/Wl/Profile/Setting/SettingModel.php
index 73ddbbdb..b187ec4a 100644
--- a/WellnessLiving/Wl/Profile/Setting/SettingModel.php
+++ b/WellnessLiving/Wl/Profile/Setting/SettingModel.php
@@ -1,95 +1,95 @@
-<?php
-
-namespace WellnessLiving\Wl\Profile\Setting;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves the user’s notification settings.
- *
- * Alternatively, this endpoint can be used to change a user’s notification settings.
- */
-class SettingModel extends WlModelAbstract
-{
-  /**
-   * Determines whether email notifications related to purchases, contracts, and other activity in a client's account are enabled.
-   *
-   * @get result
-   * @post post
-   * @var bool
-   */
-  public $is_account_management_email = true;
-
-  /**
-   * Determines whether SMS notifications related to purchases, contracts, and other activity in a client's account are enabled.
-   *
-   * @get result
-   * @post post
-   * @var bool
-   */
-  public $is_account_management_sms = true;
-
-  /**
-   * Determines whether email notifications related to news and updates from the business regarding their services, availability, and promotions are enabled.
-   *
-   * @get result
-   * @post post
-   * @var bool
-   */
-  public $is_news_and_updates_email = true;
-
-  /**
-   * Whether sms notifications related to news and updates from the business regarding their services, availability and promotions are enabled.
-   *
-   * @get result
-   * @post post
-   * @var bool
-   */
-  public $is_news_and_updates_sms = true;
-
-  /**
-   * Determines whether email notifications related to the services a client has booked are enabled.
-   *
-   * @get result
-   * @post post
-   * @var bool
-   */
-  public $is_schedule_and_reminders_email = true;
-
-  /**
-   * Determines whether SMS notifications related to the services a client has booked are enabled.
-   *
-   * @get result
-   * @post post
-   * @var bool
-   */
-  public $is_schedule_and_reminders_sms = true;
-
-  /**
-   * The key of the business to show information for.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * SID of language code.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_language = '';
-
-  /**
-   * The key of the user to show information for.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Profile\Setting;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves the user’s notification settings.
+ *
+ * Alternatively, this endpoint can be used to change a user’s notification settings.
+ */
+class SettingModel extends WlModelAbstract
+{
+  /**
+   * Determines whether email notifications related to purchases, contracts, and other activity in a client's account are enabled.
+   *
+   * @get result
+   * @post post
+   * @var bool
+   */
+  public $is_account_management_email = true;
+
+  /**
+   * Determines whether SMS notifications related to purchases, contracts, and other activity in a client's account are enabled.
+   *
+   * @get result
+   * @post post
+   * @var bool
+   */
+  public $is_account_management_sms = true;
+
+  /**
+   * Determines whether email notifications related to news and updates from the business regarding their services, availability, and promotions are enabled.
+   *
+   * @get result
+   * @post post
+   * @var bool
+   */
+  public $is_news_and_updates_email = true;
+
+  /**
+   * Whether sms notifications related to news and updates from the business regarding their services, availability and promotions are enabled.
+   *
+   * @get result
+   * @post post
+   * @var bool
+   */
+  public $is_news_and_updates_sms = true;
+
+  /**
+   * Determines whether email notifications related to the services a client has booked are enabled.
+   *
+   * @get result
+   * @post post
+   * @var bool
+   */
+  public $is_schedule_and_reminders_email = true;
+
+  /**
+   * Determines whether SMS notifications related to the services a client has booked are enabled.
+   *
+   * @get result
+   * @post post
+   * @var bool
+   */
+  public $is_schedule_and_reminders_sms = true;
+
+  /**
+   * The key of the business to show information for.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * SID of language code.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_language = '';
+
+  /**
+   * The key of the user to show information for.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/Term/TermModel.php b/WellnessLiving/Wl/Profile/Term/TermModel.php
index 16c6e44d..cc90758a 100644
--- a/WellnessLiving/Wl/Profile/Term/TermModel.php
+++ b/WellnessLiving/Wl/Profile/Term/TermModel.php
@@ -1,89 +1,89 @@
-<?php
-
-namespace WellnessLiving\Wl\Profile\Term;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Displays information about online waiver.
- */
-class TermModel extends WlModelAbstract
-{
-  /**
-   * The date/time of the waiver confirmation.
-   * <tt>null</tt> if waiver is not confirmed.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $dt_agree;
-
-  /**
-   * The text of the online waiver.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_contract;
-
-  /**
-   * Age of minor which documents can be signed by parent or legal guardian.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_minor_age;
-
-  /**
-   * The IP address from which the confirmation was carried out.
-   * <tt>null</tt> if waiver is not confirmed.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $ip_agree;
-
-  /**
-   * Flag of successful saving agreement.
-   * <tt>true</tt> if agreement was sign up successful <tt>false</tt> - otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_agree;
-
-  /**
-   * The key of the current business.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The user's name.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_name;
-
-  /**
-   * The key of the user to show information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-
-  /**
-   * The URL to the image with the client's signature.
-   * <tt>false</tt> if waiver is not confirmed.
-   *
-   * @get result
-   * @var string|false
-   */
-  public $url_signature;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Profile\Term;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Displays information about online waiver.
+ */
+class TermModel extends WlModelAbstract
+{
+  /**
+   * The date/time of the waiver confirmation.
+   * <tt>null</tt> if waiver is not confirmed.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $dt_agree;
+
+  /**
+   * The text of the online waiver.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_contract;
+
+  /**
+   * Age of minor which documents can be signed by parent or legal guardian.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_minor_age;
+
+  /**
+   * The IP address from which the confirmation was carried out.
+   * <tt>null</tt> if waiver is not confirmed.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $ip_agree;
+
+  /**
+   * Flag of successful saving agreement.
+   * <tt>true</tt> if agreement was sign up successful <tt>false</tt> - otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_agree;
+
+  /**
+   * The key of the current business.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The user's name.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_name;
+
+  /**
+   * The key of the user to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+
+  /**
+   * The URL to the image with the client's signature.
+   * <tt>false</tt> if waiver is not confirmed.
+   *
+   * @get result
+   * @var string|false
+   */
+  public $url_signature;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php b/WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php
index 850a9243..aaf7da69 100644
--- a/WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php
+++ b/WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php
@@ -1,28 +1,28 @@
-<?php
-
-namespace WellnessLiving\Wl\Promotion\Convert;
-
-/**
- * List of options to convert promotion.
- *
- * Last used ID: 3.
- */
-class PromotionConvertSid
-{
-  /**
-   * Promotion conversion downgraded.
-   */
-  const DOWNGRADE = 1;
-
-  /**
-   * Type of the promotion conversion.
-   */
-  const EQUAL_VALUE = 2;
-
-  /**
-   * Promotion conversion upgraded.
-   */
-  const UPGRADE = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Promotion\Convert;
+
+/**
+ * List of options to convert promotion.
+ *
+ * Last used ID: 3.
+ */
+class PromotionConvertSid
+{
+  /**
+   * Promotion conversion downgraded.
+   */
+  const DOWNGRADE = 1;
+
+  /**
+   * Type of the promotion conversion.
+   */
+  const EQUAL_VALUE = 2;
+
+  /**
+   * Promotion conversion upgraded.
+   */
+  const UPGRADE = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php b/WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php
index c8c018ad..3f9fc4b2 100644
--- a/WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php
+++ b/WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php
@@ -1,21 +1,21 @@
-<?php
-
-namespace WellnessLiving\Wl\Promotion\Edit\Limit\Cycle;
-
-/**
- * Attendance Restriction cycle type.
- */
-class Sid
-{
-  /**
-   * Attendance Restriction is applied at the start of the calendar cycle.
-   */
-  const CALENDAR = 1;
-
-  /**
-   * Attendance Restriction is applied at the start of the payment cycle.
-   */
-  const PAYMENT = 2;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Promotion\Edit\Limit\Cycle;
+
+/**
+ * Attendance Restriction cycle type.
+ */
+class Sid
+{
+  /**
+   * Attendance Restriction is applied at the start of the calendar cycle.
+   */
+  const CALENDAR = 1;
+
+  /**
+   * Attendance Restriction is applied at the start of the payment cycle.
+   */
+  const PAYMENT = 2;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php b/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php
index dedfb8ed..5e1b6225 100644
--- a/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php
+++ b/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php
@@ -1,309 +1,309 @@
-<?php
-
-namespace WellnessLiving\Wl\Promotion\Index;
-
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Event\EventListModel;
-use WellnessLiving\Wl\Promotion\Edit\Limit\Cycle\Sid;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
-use WellnessLiving\Wl\WlDurationTypeSid;
-use WellnessLiving\Wl\WlProgramCategorySid;
-use WellnessLiving\Wl\WlProgramSid;
-use WellnessLiving\Wl\WlProgramTypeSid;
-
-/**
- * Gets a list of introductory promotion offers of a specified type available at a given location.
- */
-class PromotionIndexModel extends WlModelAbstract
-{
-  /**
-   * A list of introductory promotion offers available at the location.
-   * Every element is an array with the following keys:
-   * <dl>
-   *   <dt>
-   *     array <var>a_access</var>
-   *   </dt>
-   *   <dd>
-   *     Information about services that can be attended with this pass or membership.
-   *     <dl>
-   *       <dt>array[] <var>a_class</var></dt>
-   *       <dd>
-   *         A list of available classes. Each element has the key `k_class`, where the primary key of the class can be found.
-   *
-   *       </dd>
-   *       <dt>array[] <var>a_event</var></dt>
-   *       <dd>
-   *         A list of available events. Each element has the key `k_class`, where the primary key of the event can be found.
-   *
-   *       </dd>
-   *       <dt>array[] <var>a_resource</var></dt>
-   *       <dd>
-   *         A list of available assets. Each element has the key `k_resource`, where the primary key of the asset can be found.
-   *
-   *       </dd>
-   *       <dt>array[] <var>a_service</var></dt>
-   *       <dd>
-   *         A list of available appointment types. Each element has the key `k_service`, where the primary key of the
-   *         appointment type can be found.
-   *
-   *       </dd>
-   *       <dt>bool <var>is_class_all</var></dt>
-   *       <dd>If `true`, any class in the business can be visited with this Purchase Option. If `false`, only selected classes can be visited.
-   *         Selected classes can be found in the list of available classes and events.</dd>
-   *       <dt>bool <var>is_event_all</var></dt>
-   *       <dd>If `true`, if any event in the business can be visited with this Purchase Option. If `false`, if only selected events can be visited.
-   *         Selected events can be found in the list of available classes and events.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     array[] <var>a_component</var>
-   *   </dt>
-   *   <dd>
-   *     A list of components included in the Purchase Option if this Purchase Option is a package.
-   *     If it's not a package, the list will be always empty.
-   *     If it's a package, the list can still be empty if all its components were deactivated.
-   *     This means that this array can't be used to determine whether this is a package or not (check `id_program` or `id_program_type`
-   *     value instead).
-   *     There can be three types of components: events, Purchase Options, and products.
-   *     Some fields can be different depending on type of the component, but each element of the array includes:
-   *     <dl>
-   *       <dt>int <var>id_purchase_item</var></dt>
-   *       <dd>The type of the component. This can only be {@link WlPurchaseItemSid::ENROLLMENT},
-   *          {@link WlPurchaseItemSid::PROMOTION} or {@link WlPurchaseItemSid::PRODUCT}.</dd>
-   *       <dt>string <var>k_id</var></dt>
-   *       <dd>
-   *         The primary key of the component in the related table. This depends on the type of the component.
-   *         The key of the event for {@link WlPurchaseItemSid::ENROLLMENT}, the key of the Purchase Option for the
-   *         {@link WlPurchaseItemSid::PROMOTION}, the key of the product option for the {@link WlPurchaseItemSid::PRODUCT}.
-   *         Full information about events can be taken from the {@link EventListModel}. Purchase Options from the {@link PromotionIndexModel}.
-   *         Full information about products are not available at this moment though API.
-   *       </dd>
-   *       <dt>int <var>i_quantity</var></dt>
-   *       <dd>The quantity. If empty, it means the quantity is 1.</dd>
-   *       <dt>string <var>text_title</var></dt>
-   *       <dd>The name of the component.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     array <var>a_image</var>
-   *   </dt>
-   *   <dd>
-   *     This will be an empty array if the Purchase Option doesn't have image.
-   *     Otherwise, this will display the following information about the Purchase Option image:
-   *     <dl>
-   *       <dt>string <var>i_height</var></dt>
-   *       <dd>The height of the image.</dd>
-   *       <dt>string <var>i_width</var></dt>
-   *       <dd>The width of the image.</dd>
-   *       <dt>string <var>url-thumbnail</var></dt>
-   *       <dd>The link to the image.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     array <var>a_visit_limit</var>
-   *   </dt>
-   *   <dd>
-   *     Attendance restrictions, if available. If unavailable, this will be an empty array. Every element has a key, which is a type of
-   *     the time period {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH},
-   *     {@link ADurationSid::YEAR}.
-   *     The values are:
-   *     <dl>
-   *       <dt>int <var>i_limit</var></dt>
-   *       <dd>The quantity of sessions every <var>i_period</var>.</dd>
-   *       <dt>int <var>i_period</var></dt>
-   *       <dd>The duration of the time period. This depends on a key of <var>a_visit_limit</var> array.</dd>
-   *       <dt>int <var>i_roll_over_cap</var></dt>
-   *       <dd>The limit number of rollover sessions.</dd>
-   *       <dt>int <var>i_roll_over_expire</var></dt>
-   *       <dd>The duration of the time period after which rolled over session will expire.</dd>
-   *       <dt>int <var>id_roll_over_expire</var></dt>
-   *       <dd>
-   *         The type of <var>i_roll_over_expire</var> {@link ADurationSid::DAY}, {@link ADurationSid::WEEK},
-   *         {@link ADurationSid::MONTH}, {@link ADurationSid::YEAR}.
-   *       </dd>
-   *       <dt>int <var>id_limit_cycle</var></dt>
-   *       <dd>The type of the limit cycle {@link Sid}.</dd>
-   *       <dt>bool <var>is_reconcile_visit</var></dt>
-   *       <dd>Determines whether to reconcile unpaid sessions on restrictions reset.</dd>
-   *       <dt>bool <var>is_roll_over_expire</var></dt>
-   *       <dd>Determines if the rolled over session is expired.</dd>
-   *       <dt>bool <var>is_roll_over_renew</var></dt>
-   *       <dd>Determines whether to rollover sessions upon auto-renew.</dd>
-   *       <dt>bool <var>is_rollup</var></dt>
-   *       <dd>Determines Whether to rollover sessions.</dd>
-   *       <dt>bool <var>is_visit_conversion</var></dt>
-   *       <dd>Determines whether to convert remaining visits.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>dl_expire</var>
-   *   </dt>
-   *   <dd>
-   *     The local expiration date. This is the last day of the Purchase Option's active status.
-   *     This is used only for the 'Expires on a certain date' duration type. Otherwise, this should be ignored.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The number of periods for the "Period" duration type.
-   *     For example, if the duration of the Purchase Option is 12 months, this field will be 12.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_limit</var>
-   *   </dt>
-   *   <dd>
-   *     The number of visits that the owner of the Purchase Option can use.
-   *     This will be `0` if the Purchase Option has unlimited visits.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_limit_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The maximum number of minutes or hours depending on <var>id_limit_duration</var> that the current promotion can be used in.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_limit_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The type of <var>i_limit_duration</var> {@link ADurationSid::MINUTE} or {@link ADurationSid::HOUR}.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The type of periods for the duration type "Period".
-   *     For example, if the duration of the Purchase Option is 12 months, this field will be the ID of the month.
-   *     See all the possible options here: {@link ADurationSid}.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_duration_type</var>
-   *   </dt>
-   *   <dd>
-   *     The type of the duration. This can be "Without End", "Expires on a certain date", "Period".
-   *     See more information here: {@link WlDurationTypeSid}.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_program</var>
-   *   </dt>
-   *   <dd>
-   *     The type of the Purchase Option. The <var>id_program</var> relates to only one <var>id_program_type</var> and one
-   *     <var>id_program_category</var>.
-   *     See more information here: {@link WlProgramSid}.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_program_category</var>
-   *   </dt>
-   *   <dd>
-   *     The category of the program for promotions. The <var>id_program_category</var> relates to more than one
-   *     <var>id_program</var>.
-   *     See more information here: {@link WlProgramCategorySid}.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_program_type</var>
-   *   </dt>
-   *   <dd>
-   *     The ID of the promotion program type. The <var>id_program_type</var> relates to more than one <var>id_program</var>.
-   *     See more information here: {@link WlProgramTypeSid}.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_direct_buy_only</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, the pricing option can be sold only by direct link. This means it shouldn't be shown in the store or
-   *     explorer. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_introductory</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, this promotion is for introductory clients. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_online</var>
-   *   </dt>
-   *   <dd>
-   *     If `true` this promotion is available for online purchase. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_promotion</var>
-   *   </dt>
-   *   <dd>
-   *     The promotion key.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_price</var>
-   *   </dt>
-   *   <dd>
-   *     The price.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_description</var>
-   *   </dt>
-   *   <dd>
-   *     The description.
-   *   </dd>
-   *   <dt>
-   *     int <var>text_program</var>
-   *   </dt>
-   *   <dd>
-   *     The localized promotion program name corresponding to the value of <var>id_program</var>.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title.
-   *   </dd>
-   *   <dt>
-   *     string <var>url_buy</var>
-   *   </dt>
-   *   <dd>
-   *     The direct URL to the promotion purchase page.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_promotion;
-
-  /**
-   * Image height in pixels. Please specify this value if you need image to be returned in specific size.
-   * In case this value is not specified returned image will have default size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_height = 0;
-
-  /**
-   * Image width in pixels. Please specify this value if you need image to be returned in specific size.
-   * In case this value is not specified returned image will have default size.
-   *
-   * @get get
-   * @var int
-   */
-  public $i_image_width = 0;
-
-  /**
-   * The program type ID, which will be one of the {@link WlProgramTypeSid} constants.
-   *
-   * `0` to not filter Purchase Options with type of the Purchase Option.
-   *
-   * @get get
-   * @var int
-   */
-  public $id_program_type = 0;
-
-  /**
-   * The location key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Promotion\Index;
+
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Event\EventListModel;
+use WellnessLiving\Wl\Promotion\Edit\Limit\Cycle\Sid;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
+use WellnessLiving\Wl\WlDurationTypeSid;
+use WellnessLiving\Wl\WlProgramCategorySid;
+use WellnessLiving\Wl\WlProgramSid;
+use WellnessLiving\Wl\WlProgramTypeSid;
+
+/**
+ * Gets a list of introductory promotion offers of a specified type available at a given location.
+ */
+class PromotionIndexModel extends WlModelAbstract
+{
+  /**
+   * A list of introductory promotion offers available at the location.
+   * Every element is an array with the following keys:
+   * <dl>
+   *   <dt>
+   *     array <var>a_access</var>
+   *   </dt>
+   *   <dd>
+   *     Information about services that can be attended with this pass or membership.
+   *     <dl>
+   *       <dt>array[] <var>a_class</var></dt>
+   *       <dd>
+   *         A list of available classes. Each element has the key `k_class`, where the primary key of the class can be found.
+   *
+   *       </dd>
+   *       <dt>array[] <var>a_event</var></dt>
+   *       <dd>
+   *         A list of available events. Each element has the key `k_class`, where the primary key of the event can be found.
+   *
+   *       </dd>
+   *       <dt>array[] <var>a_resource</var></dt>
+   *       <dd>
+   *         A list of available assets. Each element has the key `k_resource`, where the primary key of the asset can be found.
+   *
+   *       </dd>
+   *       <dt>array[] <var>a_service</var></dt>
+   *       <dd>
+   *         A list of available appointment types. Each element has the key `k_service`, where the primary key of the
+   *         appointment type can be found.
+   *
+   *       </dd>
+   *       <dt>bool <var>is_class_all</var></dt>
+   *       <dd>If `true`, any class in the business can be visited with this Purchase Option. If `false`, only selected classes can be visited.
+   *         Selected classes can be found in the list of available classes and events.</dd>
+   *       <dt>bool <var>is_event_all</var></dt>
+   *       <dd>If `true`, if any event in the business can be visited with this Purchase Option. If `false`, if only selected events can be visited.
+   *         Selected events can be found in the list of available classes and events.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     array[] <var>a_component</var>
+   *   </dt>
+   *   <dd>
+   *     A list of components included in the Purchase Option if this Purchase Option is a package.
+   *     If it's not a package, the list will be always empty.
+   *     If it's a package, the list can still be empty if all its components were deactivated.
+   *     This means that this array can't be used to determine whether this is a package or not (check `id_program` or `id_program_type`
+   *     value instead).
+   *     There can be three types of components: events, Purchase Options, and products.
+   *     Some fields can be different depending on type of the component, but each element of the array includes:
+   *     <dl>
+   *       <dt>int <var>id_purchase_item</var></dt>
+   *       <dd>The type of the component. This can only be {@link WlPurchaseItemSid::ENROLLMENT},
+   *          {@link WlPurchaseItemSid::PROMOTION} or {@link WlPurchaseItemSid::PRODUCT}.</dd>
+   *       <dt>string <var>k_id</var></dt>
+   *       <dd>
+   *         The primary key of the component in the related table. This depends on the type of the component.
+   *         The key of the event for {@link WlPurchaseItemSid::ENROLLMENT}, the key of the Purchase Option for the
+   *         {@link WlPurchaseItemSid::PROMOTION}, the key of the product option for the {@link WlPurchaseItemSid::PRODUCT}.
+   *         Full information about events can be taken from the {@link EventListModel}. Purchase Options from the {@link PromotionIndexModel}.
+   *         Full information about products are not available at this moment though API.
+   *       </dd>
+   *       <dt>int <var>i_quantity</var></dt>
+   *       <dd>The quantity. If empty, it means the quantity is 1.</dd>
+   *       <dt>string <var>text_title</var></dt>
+   *       <dd>The name of the component.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     array <var>a_image</var>
+   *   </dt>
+   *   <dd>
+   *     This will be an empty array if the Purchase Option doesn't have image.
+   *     Otherwise, this will display the following information about the Purchase Option image:
+   *     <dl>
+   *       <dt>string <var>i_height</var></dt>
+   *       <dd>The height of the image.</dd>
+   *       <dt>string <var>i_width</var></dt>
+   *       <dd>The width of the image.</dd>
+   *       <dt>string <var>url-thumbnail</var></dt>
+   *       <dd>The link to the image.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     array <var>a_visit_limit</var>
+   *   </dt>
+   *   <dd>
+   *     Attendance restrictions, if available. If unavailable, this will be an empty array. Every element has a key, which is a type of
+   *     the time period {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH},
+   *     {@link ADurationSid::YEAR}.
+   *     The values are:
+   *     <dl>
+   *       <dt>int <var>i_limit</var></dt>
+   *       <dd>The quantity of sessions every <var>i_period</var>.</dd>
+   *       <dt>int <var>i_period</var></dt>
+   *       <dd>The duration of the time period. This depends on a key of <var>a_visit_limit</var> array.</dd>
+   *       <dt>int <var>i_roll_over_cap</var></dt>
+   *       <dd>The limit number of rollover sessions.</dd>
+   *       <dt>int <var>i_roll_over_expire</var></dt>
+   *       <dd>The duration of the time period after which rolled over session will expire.</dd>
+   *       <dt>int <var>id_roll_over_expire</var></dt>
+   *       <dd>
+   *         The type of <var>i_roll_over_expire</var> {@link ADurationSid::DAY}, {@link ADurationSid::WEEK},
+   *         {@link ADurationSid::MONTH}, {@link ADurationSid::YEAR}.
+   *       </dd>
+   *       <dt>int <var>id_limit_cycle</var></dt>
+   *       <dd>The type of the limit cycle {@link Sid}.</dd>
+   *       <dt>bool <var>is_reconcile_visit</var></dt>
+   *       <dd>Determines whether to reconcile unpaid sessions on restrictions reset.</dd>
+   *       <dt>bool <var>is_roll_over_expire</var></dt>
+   *       <dd>Determines if the rolled over session is expired.</dd>
+   *       <dt>bool <var>is_roll_over_renew</var></dt>
+   *       <dd>Determines whether to rollover sessions upon auto-renew.</dd>
+   *       <dt>bool <var>is_rollup</var></dt>
+   *       <dd>Determines Whether to rollover sessions.</dd>
+   *       <dt>bool <var>is_visit_conversion</var></dt>
+   *       <dd>Determines whether to convert remaining visits.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>dl_expire</var>
+   *   </dt>
+   *   <dd>
+   *     The local expiration date. This is the last day of the Purchase Option's active status.
+   *     This is used only for the 'Expires on a certain date' duration type. Otherwise, this should be ignored.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The number of periods for the "Period" duration type.
+   *     For example, if the duration of the Purchase Option is 12 months, this field will be 12.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_limit</var>
+   *   </dt>
+   *   <dd>
+   *     The number of visits that the owner of the Purchase Option can use.
+   *     This will be `0` if the Purchase Option has unlimited visits.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_limit_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The maximum number of minutes or hours depending on <var>id_limit_duration</var> that the current promotion can be used in.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_limit_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The type of <var>i_limit_duration</var> {@link ADurationSid::MINUTE} or {@link ADurationSid::HOUR}.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The type of periods for the duration type "Period".
+   *     For example, if the duration of the Purchase Option is 12 months, this field will be the ID of the month.
+   *     See all the possible options here: {@link ADurationSid}.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_duration_type</var>
+   *   </dt>
+   *   <dd>
+   *     The type of the duration. This can be "Without End", "Expires on a certain date", "Period".
+   *     See more information here: {@link WlDurationTypeSid}.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_program</var>
+   *   </dt>
+   *   <dd>
+   *     The type of the Purchase Option. The <var>id_program</var> relates to only one <var>id_program_type</var> and one
+   *     <var>id_program_category</var>.
+   *     See more information here: {@link WlProgramSid}.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_program_category</var>
+   *   </dt>
+   *   <dd>
+   *     The category of the program for promotions. The <var>id_program_category</var> relates to more than one
+   *     <var>id_program</var>.
+   *     See more information here: {@link WlProgramCategorySid}.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_program_type</var>
+   *   </dt>
+   *   <dd>
+   *     The ID of the promotion program type. The <var>id_program_type</var> relates to more than one <var>id_program</var>.
+   *     See more information here: {@link WlProgramTypeSid}.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_direct_buy_only</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, the pricing option can be sold only by direct link. This means it shouldn't be shown in the store or
+   *     explorer. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_introductory</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, this promotion is for introductory clients. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_online</var>
+   *   </dt>
+   *   <dd>
+   *     If `true` this promotion is available for online purchase. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_promotion</var>
+   *   </dt>
+   *   <dd>
+   *     The promotion key.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_price</var>
+   *   </dt>
+   *   <dd>
+   *     The price.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_description</var>
+   *   </dt>
+   *   <dd>
+   *     The description.
+   *   </dd>
+   *   <dt>
+   *     int <var>text_program</var>
+   *   </dt>
+   *   <dd>
+   *     The localized promotion program name corresponding to the value of <var>id_program</var>.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     The title.
+   *   </dd>
+   *   <dt>
+   *     string <var>url_buy</var>
+   *   </dt>
+   *   <dd>
+   *     The direct URL to the promotion purchase page.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_promotion;
+
+  /**
+   * Image height in pixels. Please specify this value if you need image to be returned in specific size.
+   * In case this value is not specified returned image will have default size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_height = 0;
+
+  /**
+   * Image width in pixels. Please specify this value if you need image to be returned in specific size.
+   * In case this value is not specified returned image will have default size.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_image_width = 0;
+
+  /**
+   * The program type ID, which will be one of the {@link WlProgramTypeSid} constants.
+   *
+   * `0` to not filter Purchase Options with type of the Purchase Option.
+   *
+   * @get get
+   * @var int
+   */
+  public $id_program_type = 0;
+
+  /**
+   * The location key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Promotion/PromotionListModel.php b/WellnessLiving/Wl/Promotion/PromotionListModel.php
index 22e8bf5c..0f4822de 100644
--- a/WellnessLiving/Wl/Promotion/PromotionListModel.php
+++ b/WellnessLiving/Wl/Promotion/PromotionListModel.php
@@ -1,59 +1,59 @@
-<?php
-
-namespace WellnessLiving\Wl\Promotion;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlProgramSid;
-
-/**
- * Gets a promotion list of the specified business.
- */
-class PromotionListModel extends WlModelAbstract
-{
-  /**
-   * A list of promotions.
-   * <dl>
-   *   <dt>
-   *     int <var>id_program</var>
-   *   </dt>
-   *   <dd>
-   *     The promotion program. One of the {@link WlProgramSid} constants.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_promotion</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the promotion.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title of the promotion.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_promotion;
-
-  /**
-   * Determines whether to return promotions created by Enterprise Locations (for Enterprise Cloud businesses only).
-   * If `true`, promotions created by Enterprise Locations are included. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_franchise = false;
-
-  /**
-   * The business key used to get the promotions.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Promotion;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlProgramSid;
+
+/**
+ * Gets a promotion list of the specified business.
+ */
+class PromotionListModel extends WlModelAbstract
+{
+  /**
+   * A list of promotions.
+   * <dl>
+   *   <dt>
+   *     int <var>id_program</var>
+   *   </dt>
+   *   <dd>
+   *     The promotion program. One of the {@link WlProgramSid} constants.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_promotion</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the promotion.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     The title of the promotion.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_promotion;
+
+  /**
+   * Determines whether to return promotions created by Enterprise Locations (for Enterprise Cloud businesses only).
+   * If `true`, promotions created by Enterprise Locations are included. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_franchise = false;
+
+  /**
+   * The business key used to get the promotions.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Promotion/PromotionModel.php b/WellnessLiving/Wl/Promotion/PromotionModel.php
index cc405413..7ad49756 100644
--- a/WellnessLiving/Wl/Promotion/PromotionModel.php
+++ b/WellnessLiving/Wl/Promotion/PromotionModel.php
@@ -1,165 +1,165 @@
-<?php
-
-namespace WellnessLiving\Wl\Promotion;
-
-use WellnessLiving\Core\a\ADurationSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlDurationTypeSid;
-use WellnessLiving\Wl\WlProgramSid;
-
-/**
- * Gets promotions for the specified business and promotion keys.
- */
-class PromotionModel extends WlModelAbstract
-{
-  /**
-   * Promotion information.
-   * <dl>
-   *   <dt>
-   *     array <var>a_access</var>
-   *   </dt>
-   *   <dd>
-   *     Information about services that can be attended with this pass or membership.
-   *     <dl>
-   *       <dt>array[] <var>a_class</var></dt>
-   *       <dd>A list of available classes.</dd>
-   *       <dt>array[] <var>a_event</var></dt>
-   *       <dd>A list of available events.</dd>
-   *       <dt>array[] <var>a_resource</var></dt>
-   *       <dd>A list of available assets.</dd>
-   *       <dt>array[] <var>a_service</var></dt>
-   *       <dd>A list of available appointment types.</dd>
-   *       <dt>bool <var>is_class_all</var></dt>
-   *       <dd>This will be `true` if any class in the business can be visited with this Purchase Option. Otherwise, this
-   *         will be `false` if only selected classes can be visited with this Purchase Option. Selected classes can be found
-   *         in the list of available classes and events.</dd>
-   *       <dt>bool <var>is_event_all</var></dt>
-   *       <dd>This will be `true` if any event in the business can be visited with this Purchase Option. Otherwise, this
-   *         will be `false` if only selected events can be visited with this Purchase Option. Selected events can be found
-   *         in the list of available classes and events.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     array <var>a_image</var>
-   *   </dt>
-   *   <dd>
-   *     Information about Purchase Option image. This will be an empty array if the Purchase Option doesn't have an image.
-   *     <dl>
-   *       <dt>string <var>i_height</var></dt>
-   *       <dd>The height of the image.</dd>
-   *       <dt>string <var>i_width</var></dt>
-   *       <dd>The width of the image.</dd>
-   *       <dt>string <var>url-thumbnail</var></dt>
-   *       <dd>The link to the image.</dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>dl_expire</var>
-   *   </dt>
-   *   <dd>
-   *     The local expiration date. This is the last day when the Purchase Option is active.
-   *     This is used only when the 'Expires on a certain date' duration type is set.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The number of periods for the 'Period' duration type.
-   *     For example, if the duration of the Purchase Option is 12 months, this field will be 12.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_limit</var>
-   *   </dt>
-   *   <dd>
-   *     The number of visits that the owner can use for the Purchase Option.
-   *     This will be `0` if the Purchase Option allows for unlimited visits.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The type of period for the 'Period' duration type.
-   *     For example, if the duration of the Purchase Option is 12 months, this field will display the ID of the month.
-   *     For all possible options, see {@link ADurationSid}.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_duration_type</var>
-   *   </dt>
-   *   <dd>
-   *     The duration type. Possible duration types can be 'Without End', 'Expires on a certain date', 'Period'.
-   *     For more information, see {@link WlDurationTypeSid}.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_program</var>
-   *   </dt>
-   *   <dd>
-   *     The Purchase Option type.
-   *     For more information, see {@link WlProgramSid}.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_introductory</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, this promotion is for introductory clients. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_online</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, this promotion is available for online purchase. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_promotion</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the promotion.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_price</var>
-   *   </dt>
-   *   <dd>
-   *     The price.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_description</var>
-   *   </dt>
-   *   <dd>
-   *     The description of the Purchase Option.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title of the Purchase Option.
-   *   </dd>
-   *   <dt>
-   *     string <var>url_buy</var>
-   *   </dt>
-   *   <dd>
-   *     The direct URL to the promotion purchase page.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_promotion;
-
-  /**
-   * The key of the business.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The key of the promotion.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_promotion = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Promotion;
+
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlDurationTypeSid;
+use WellnessLiving\Wl\WlProgramSid;
+
+/**
+ * Gets promotions for the specified business and promotion keys.
+ */
+class PromotionModel extends WlModelAbstract
+{
+  /**
+   * Promotion information.
+   * <dl>
+   *   <dt>
+   *     array <var>a_access</var>
+   *   </dt>
+   *   <dd>
+   *     Information about services that can be attended with this pass or membership.
+   *     <dl>
+   *       <dt>array[] <var>a_class</var></dt>
+   *       <dd>A list of available classes.</dd>
+   *       <dt>array[] <var>a_event</var></dt>
+   *       <dd>A list of available events.</dd>
+   *       <dt>array[] <var>a_resource</var></dt>
+   *       <dd>A list of available assets.</dd>
+   *       <dt>array[] <var>a_service</var></dt>
+   *       <dd>A list of available appointment types.</dd>
+   *       <dt>bool <var>is_class_all</var></dt>
+   *       <dd>This will be `true` if any class in the business can be visited with this Purchase Option. Otherwise, this
+   *         will be `false` if only selected classes can be visited with this Purchase Option. Selected classes can be found
+   *         in the list of available classes and events.</dd>
+   *       <dt>bool <var>is_event_all</var></dt>
+   *       <dd>This will be `true` if any event in the business can be visited with this Purchase Option. Otherwise, this
+   *         will be `false` if only selected events can be visited with this Purchase Option. Selected events can be found
+   *         in the list of available classes and events.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     array <var>a_image</var>
+   *   </dt>
+   *   <dd>
+   *     Information about Purchase Option image. This will be an empty array if the Purchase Option doesn't have an image.
+   *     <dl>
+   *       <dt>string <var>i_height</var></dt>
+   *       <dd>The height of the image.</dd>
+   *       <dt>string <var>i_width</var></dt>
+   *       <dd>The width of the image.</dd>
+   *       <dt>string <var>url-thumbnail</var></dt>
+   *       <dd>The link to the image.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>dl_expire</var>
+   *   </dt>
+   *   <dd>
+   *     The local expiration date. This is the last day when the Purchase Option is active.
+   *     This is used only when the 'Expires on a certain date' duration type is set.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The number of periods for the 'Period' duration type.
+   *     For example, if the duration of the Purchase Option is 12 months, this field will be 12.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_limit</var>
+   *   </dt>
+   *   <dd>
+   *     The number of visits that the owner can use for the Purchase Option.
+   *     This will be `0` if the Purchase Option allows for unlimited visits.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The type of period for the 'Period' duration type.
+   *     For example, if the duration of the Purchase Option is 12 months, this field will display the ID of the month.
+   *     For all possible options, see {@link ADurationSid}.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_duration_type</var>
+   *   </dt>
+   *   <dd>
+   *     The duration type. Possible duration types can be 'Without End', 'Expires on a certain date', 'Period'.
+   *     For more information, see {@link WlDurationTypeSid}.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_program</var>
+   *   </dt>
+   *   <dd>
+   *     The Purchase Option type.
+   *     For more information, see {@link WlProgramSid}.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_introductory</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, this promotion is for introductory clients. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_online</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, this promotion is available for online purchase. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_promotion</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the promotion.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_price</var>
+   *   </dt>
+   *   <dd>
+   *     The price.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_description</var>
+   *   </dt>
+   *   <dd>
+   *     The description of the Purchase Option.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     The title of the Purchase Option.
+   *   </dd>
+   *   <dt>
+   *     string <var>url_buy</var>
+   *   </dt>
+   *   <dd>
+   *     The direct URL to the promotion purchase page.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_promotion;
+
+  /**
+   * The key of the business.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The key of the promotion.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_promotion = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Purchase/Mail/PurchaseMailModel.php b/WellnessLiving/Wl/Purchase/Mail/PurchaseMailModel.php
index 4ec5a5ee..340b5c9f 100644
--- a/WellnessLiving/Wl/Purchase/Mail/PurchaseMailModel.php
+++ b/WellnessLiving/Wl/Purchase/Mail/PurchaseMailModel.php
@@ -1,29 +1,29 @@
-<?php
-
-namespace WellnessLiving\Wl\Purchase\Mail;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Emails a receipt for a purchase.
- */
-class PurchaseMailModel extends WlModelAbstract
-{
-  /**
-   * Determines whether mail sending should be forced.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_send_force = false;
-
-  /**
-   * The key of the purchase.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_purchase = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Purchase\Mail;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Emails a receipt for a purchase.
+ */
+class PurchaseMailModel extends WlModelAbstract
+{
+  /**
+   * Determines whether mail sending should be forced.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_send_force = false;
+
+  /**
+   * The key of the purchase.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_purchase = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php b/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
index 71cdc972..9459a75c 100644
--- a/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
+++ b/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
@@ -1,425 +1,425 @@
-<?php
-
-namespace WellnessLiving\Wl\Purchase\Receipt;
-
-use WellnessLiving\Core\a\ACardSystemSid;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Returns receipt data of certain purchase.
- */
-class PurchaseReceiptModel extends WlModelAbstract
-{
-  /**
-   * Information about the account balance for a user's account after payment for the purchase. Every element has the following keys:
-   * <dl>
-   *   <dt>
-   *     string <var>m_amount</var>
-   *   </dt>
-   *   <dd>
-   *     The account balance on the user's account.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_currency</var>
-   *   </dt>
-   *   <dd>
-   *     The currency of the amount.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_method</var>
-   *   </dt>
-   *   <dd>
-   *     The payment method title.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_account_rest;
-
-  /**
-   * Information about the business.
-   * <dl>
-   *   <dt>
-   *     array <var>a_logo</var>
-   *   </dt>
-   *   <dd>
-   *     The business logo.
-   *     <dl>
-   *       <dt>
-   *         int <var>i_height</var>
-   *       </dt>
-   *       <dd>
-   *         The image height.
-   *       </dd>
-   *       <dt>
-   *         int <var>i_width</var>
-   *       </dt>
-   *       <dd>
-   *         The image width.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_empty</var>
-   *       </dt>
-   *       <dd>
-   *         This will be `true` if the image is empty. Otherwise, this will be `false`.
-   *       </dd>
-   *       <dt>
-   *         string <var>text_url</var>
-   *       </dt>
-   *       <dd>
-   *         The URL of the image.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>text_address</var>
-   *   </dt>
-   *   <dd>
-   *     The business's address.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_mail</var>
-   *   </dt>
-   *   <dd>
-   *     The business's email address.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_phone</var>
-   *   </dt>
-   *   <dd>
-   *     The business's phone number.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     The business name.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_business;
-
-  /**
-   * Payment transaction information. Every element has the following keys:
-   * <dl>
-   *   <dt>
-   *     string <var>text_card_number</var>
-   *   </dt>
-   *   <dd>
-   *     The card or account number.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_card_system</var>
-   *   </dt>
-   *   <dd>
-   *     The card system name from {@link ACardSystemSid}.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     The payment account title. This will be 'Account number' for ACH, 'Card' for all other cases.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_card;
-
-  /**
-   * Information about the customer.
-   * <dl>
-   *   <dt>
-   *     string <var>text_address</var>
-   *   </dt>
-   *   <dd>
-   *     The customer's address.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_mail</var>
-   *   </dt>
-   *   <dd>
-   *     The customer's email address.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_name</var>
-   *   </dt>
-   *   <dd>
-   *     The customer's name.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_phone</var>
-   *   </dt>
-   *   <dd>
-   *     The customer's phone number.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_customer;
-
-  /**
-   * A list of payment methods for the current purchase. Every element has the following keys:
-   * <dl>
-   *   <dt>
-   *     string <var>m_amount</var>
-   *   </dt>
-   *   <dd>
-   *     The amount of the payment.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_currency</var>
-   *   </dt>
-   *   <dd>
-   *     The currency of the amount.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_pay_method</var>
-   *   </dt>
-   *   <dd>
-   *     The payment method title.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_pay_method;
-
-  /**
-   * Complete information about price information for the purchase.
-   * <dl>
-   *   <dt>
-   *     string <var>m_discount</var>
-   *   </dt>
-   *   <dd>
-   *     The discount amount.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_discount_code</var>
-   *   </dt>
-   *   <dd>
-   *     The discount amount for a discount code.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_sum</var>
-   *   </dt>
-   *   <dd>
-   *     The subtotal amount (the sum of the prices).
-   *   </dd>
-   *   <dt>
-   *     string <var>m_tax</var>
-   *   </dt>
-   *   <dd>
-   *     The amount of taxes.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_tip</var>
-   *   </dt>
-   *   <dd>
-   *     The amount of tips.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_total</var>
-   *   </dt>
-   *   <dd>
-   *     The total amount.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_currency</var>
-   *   </dt>
-   *   <dd>
-   *     The currency of the purchase.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_discount_code</var>
-   *   </dt>
-   *   <dd>
-   *     The discount code applied to the purchase.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_price;
-
-  /**
-   * A list of purchase items. Every element has the following keys:
-   * <dl>
-   *   <dt>
-   *     array <var>a_logo</var>
-   *   </dt>
-   *   <dd>
-   *     The purchase item logo.
-   *     <dl>
-   *       <dt>
-   *         int <var>i_height</var>
-   *       </dt>
-   *       <dd>
-   *         The image height.
-   *       </dd>
-   *       <dt>
-   *         int <var>i_width</var>
-   *       </dt>
-   *       <dd>
-   *         The image width.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_empty</var>
-   *       </dt>
-   *       <dd>
-   *         Determines whether the image is empty.
-   *       </dd>
-   *       <dt>
-   *         string <var>text_url</var>
-   *       </dt>
-   *       <dd>
-   *         The URL of the image.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     int <var>i_count</var>
-   *   </dt>
-   *   <dd>
-   *     The number of items in the purchase.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_purchase_item</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the purchase item.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_price</var>
-   *   </dt>
-   *   <dd>
-   *     The price of the single item.
-   *   </dd>
-   *   <dt>
-   *     string <var>m_price_total</var>
-   *   </dt>
-   *   <dd>
-   *     The price of all items.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_category</var>
-   *   </dt>
-   *   <dd>
-   *     The type of the item (for example, a pass or membership).
-   *   </dd>
-   *   <dt>
-   *     string <var>text_currency</var>
-   *   </dt>
-   *   <dd>
-   *     The currency of the price.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_info</var>
-   *   </dt>
-   *   <dd>
-   *     Additional information about the purchase item.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_title</var>
-   *   </dt>
-   *   <dd>
-   *     The name of the purchase item.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_description</var>
-   *   </dt>
-   *   <dd>
-   *     The description of the purchase item.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_purchase_item;
-
-  /**
-   * The local date of the purchase in MySQL format.
-   *
-   * @get result
-   * @var string
-   */
-  public $dtl_purchase;
-
-  /**
-   * Determines whether the payment contained a signature.
-   *
-   * @get result
-   * @var bool
-   */
-  public $has_signature;
-
-  /**
-   * HTML representation of the purchase receipt.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_receipt;
-
-  /**
-   * Whether the print receipt URL requires authentication. If `true`, the URL contains a token that temporarily
-   * allows access to the print receipt without a login. `false` otherwise.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_url_public = false;
-
-  /**
-   * The key of the purchase.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $k_purchase = null;
-
-  /**
-   * The normalized purchase ID.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_purchase_id;
-
-  /**
-   * The receipt text set in the store settings.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_receipt;
-
-  /**
-   * The URL for printing on a normal printer.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_print;
-
-  /**
-   * The URL for printing on a receipt printer.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_print_receipt;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Purchase\Receipt;
+
+use WellnessLiving\Core\a\ACardSystemSid;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns receipt data of certain purchase.
+ */
+class PurchaseReceiptModel extends WlModelAbstract
+{
+  /**
+   * Information about the account balance for a user's account after payment for the purchase. Every element has the following keys:
+   * <dl>
+   *   <dt>
+   *     string <var>m_amount</var>
+   *   </dt>
+   *   <dd>
+   *     The account balance on the user's account.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_currency</var>
+   *   </dt>
+   *   <dd>
+   *     The currency of the amount.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_method</var>
+   *   </dt>
+   *   <dd>
+   *     The payment method title.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_account_rest;
+
+  /**
+   * Information about the business.
+   * <dl>
+   *   <dt>
+   *     array <var>a_logo</var>
+   *   </dt>
+   *   <dd>
+   *     The business logo.
+   *     <dl>
+   *       <dt>
+   *         int <var>i_height</var>
+   *       </dt>
+   *       <dd>
+   *         The image height.
+   *       </dd>
+   *       <dt>
+   *         int <var>i_width</var>
+   *       </dt>
+   *       <dd>
+   *         The image width.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_empty</var>
+   *       </dt>
+   *       <dd>
+   *         This will be `true` if the image is empty. Otherwise, this will be `false`.
+   *       </dd>
+   *       <dt>
+   *         string <var>text_url</var>
+   *       </dt>
+   *       <dd>
+   *         The URL of the image.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>text_address</var>
+   *   </dt>
+   *   <dd>
+   *     The business's address.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_mail</var>
+   *   </dt>
+   *   <dd>
+   *     The business's email address.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_phone</var>
+   *   </dt>
+   *   <dd>
+   *     The business's phone number.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     The business name.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_business;
+
+  /**
+   * Payment transaction information. Every element has the following keys:
+   * <dl>
+   *   <dt>
+   *     string <var>text_card_number</var>
+   *   </dt>
+   *   <dd>
+   *     The card or account number.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_card_system</var>
+   *   </dt>
+   *   <dd>
+   *     The card system name from {@link ACardSystemSid}.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     The payment account title. This will be 'Account number' for ACH, 'Card' for all other cases.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_card;
+
+  /**
+   * Information about the customer.
+   * <dl>
+   *   <dt>
+   *     string <var>text_address</var>
+   *   </dt>
+   *   <dd>
+   *     The customer's address.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_mail</var>
+   *   </dt>
+   *   <dd>
+   *     The customer's email address.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_name</var>
+   *   </dt>
+   *   <dd>
+   *     The customer's name.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_phone</var>
+   *   </dt>
+   *   <dd>
+   *     The customer's phone number.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_customer;
+
+  /**
+   * A list of payment methods for the current purchase. Every element has the following keys:
+   * <dl>
+   *   <dt>
+   *     string <var>m_amount</var>
+   *   </dt>
+   *   <dd>
+   *     The amount of the payment.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_currency</var>
+   *   </dt>
+   *   <dd>
+   *     The currency of the amount.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_pay_method</var>
+   *   </dt>
+   *   <dd>
+   *     The payment method title.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_pay_method;
+
+  /**
+   * Complete information about price information for the purchase.
+   * <dl>
+   *   <dt>
+   *     string <var>m_discount</var>
+   *   </dt>
+   *   <dd>
+   *     The discount amount.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_discount_code</var>
+   *   </dt>
+   *   <dd>
+   *     The discount amount for a discount code.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_sum</var>
+   *   </dt>
+   *   <dd>
+   *     The subtotal amount (the sum of the prices).
+   *   </dd>
+   *   <dt>
+   *     string <var>m_tax</var>
+   *   </dt>
+   *   <dd>
+   *     The amount of taxes.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_tip</var>
+   *   </dt>
+   *   <dd>
+   *     The amount of tips.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_total</var>
+   *   </dt>
+   *   <dd>
+   *     The total amount.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_currency</var>
+   *   </dt>
+   *   <dd>
+   *     The currency of the purchase.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_discount_code</var>
+   *   </dt>
+   *   <dd>
+   *     The discount code applied to the purchase.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_price;
+
+  /**
+   * A list of purchase items. Every element has the following keys:
+   * <dl>
+   *   <dt>
+   *     array <var>a_logo</var>
+   *   </dt>
+   *   <dd>
+   *     The purchase item logo.
+   *     <dl>
+   *       <dt>
+   *         int <var>i_height</var>
+   *       </dt>
+   *       <dd>
+   *         The image height.
+   *       </dd>
+   *       <dt>
+   *         int <var>i_width</var>
+   *       </dt>
+   *       <dd>
+   *         The image width.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_empty</var>
+   *       </dt>
+   *       <dd>
+   *         Determines whether the image is empty.
+   *       </dd>
+   *       <dt>
+   *         string <var>text_url</var>
+   *       </dt>
+   *       <dd>
+   *         The URL of the image.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     int <var>i_count</var>
+   *   </dt>
+   *   <dd>
+   *     The number of items in the purchase.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_purchase_item</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the purchase item.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_price</var>
+   *   </dt>
+   *   <dd>
+   *     The price of the single item.
+   *   </dd>
+   *   <dt>
+   *     string <var>m_price_total</var>
+   *   </dt>
+   *   <dd>
+   *     The price of all items.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_category</var>
+   *   </dt>
+   *   <dd>
+   *     The type of the item (for example, a pass or membership).
+   *   </dd>
+   *   <dt>
+   *     string <var>text_currency</var>
+   *   </dt>
+   *   <dd>
+   *     The currency of the price.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_info</var>
+   *   </dt>
+   *   <dd>
+   *     Additional information about the purchase item.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_title</var>
+   *   </dt>
+   *   <dd>
+   *     The name of the purchase item.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_description</var>
+   *   </dt>
+   *   <dd>
+   *     The description of the purchase item.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_purchase_item;
+
+  /**
+   * The local date of the purchase in MySQL format.
+   *
+   * @get result
+   * @var string
+   */
+  public $dtl_purchase;
+
+  /**
+   * Determines whether the payment contained a signature.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_signature;
+
+  /**
+   * HTML representation of the purchase receipt.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_receipt;
+
+  /**
+   * Whether the print receipt URL requires authentication. If `true`, the URL contains a token that temporarily
+   * allows access to the print receipt without a login. `false` otherwise.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_url_public = false;
+
+  /**
+   * The key of the purchase.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_purchase = null;
+
+  /**
+   * The normalized purchase ID.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_purchase_id;
+
+  /**
+   * The receipt text set in the store settings.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_receipt;
+
+  /**
+   * The URL for printing on a normal printer.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_print;
+
+  /**
+   * The URL for printing on a receipt printer.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_print_receipt;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Purchase/Share/PurchaseShareModel.php b/WellnessLiving/Wl/Purchase/Share/PurchaseShareModel.php
index 7322fb7f..4a138a63 100644
--- a/WellnessLiving/Wl/Purchase/Share/PurchaseShareModel.php
+++ b/WellnessLiving/Wl/Purchase/Share/PurchaseShareModel.php
@@ -1,38 +1,38 @@
-<?php
-
-namespace WellnessLiving\Wl\Purchase\Share;
-
-use WellnessLiving\Core\a\ASocialSid;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Shares a purchase to a specified social network.
- */
-class PurchaseShareModel extends WlModelAbstract
-{
-  /**
-   * The social network. One of the {@link ASocialSid} constants.
-   *
-   * @post post
-   * @var int
-   */
-  public $id_social;
-
-  /**
-   * The key of the purchase.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_purchase;
-
-  /**
-   * The URL to the sharing page.
-   *
-   * @post result
-   * @var string
-   */
-  public $url_share;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Purchase\Share;
+
+use WellnessLiving\Core\a\ASocialSid;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Shares a purchase to a specified social network.
+ */
+class PurchaseShareModel extends WlModelAbstract
+{
+  /**
+   * The social network. One of the {@link ASocialSid} constants.
+   *
+   * @post post
+   * @var int
+   */
+  public $id_social;
+
+  /**
+   * The key of the purchase.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_purchase;
+
+  /**
+   * The URL to the sharing page.
+   *
+   * @post result
+   * @var string
+   */
+  public $url_share;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index e1d55823..5b15ac44 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -1,138 +1,138 @@
-<?php
-
-namespace WellnessLiving\Wl\Quiz;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Manages a single quiz.
- */
-class QuizElementModel extends WlModelAbstract
-{
-  /**
-   * List of quiz elements.
-   *
-   * Order of the element in array corresponds to order of elements on the form.
-   *
-   * @get result
-   * @post post
-   * @var array
-   */
-  public $a_element = [];
-
-  /**
-   * Quiz settings.
-   *
-   * @get result
-   * @post post
-   * @put result
-   * @var array
-   */
-  public $a_setting = [];
-
-  /**
-   * Whether user has privileges to amend form.
-   *
-   * @get result
-   * @var bool
-   */
-  public $can_amend = false;
-
-  /**
-   * Checks whether unauthorized user should be permitted to operate with form and make a response.
-   * In general all quizzes should have users in response but it some cases such as registration process
-   *  user might not exist yet, and we need ability to ignore check for user existence.
-   * `true` - add possibility load form and accept response for non-registered user, `false` otherwise.
-   *
-   * @get get
-   * @post get
-   * @var bool
-   */
-  public $can_anonymous = false;
-
-  /**
-   * Number of responses for specific quiz.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_responses = 0;
-
-  /**
-   * Quiz active status.
-   *
-   * `true` if quiz is active.
-   * `false` if quiz is not active.
-   *
-   * @get result
-   * @post post
-   * @put post
-   * @var bool
-   */
-  public $is_active = true;
-
-  /**
-   * List of quiz elements in json format.
-   *
-   * Order of the element in array corresponds to order of elements on the form.
-   *
-   * @post post
-   * @var string
-   */
-  public $json_element = '';
-
-  /**
-   * Business key within which quiz is managed.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * Quiz key.
-   *
-   * @delete get
-   * @get get
-   * @post get,result
-   * @put get
-   * @var string
-   */
-  public $k_quiz = '';
-
-  /**
-   * Quiz login key.
-   *
-   * @delete get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $k_quiz_login = '';
-
-  /**
-   * Whether to show numbering of the form elements that supports numbering.
-   *
-   * `true` to show numbering on the form for elements that supports numbering.
-   * `false` to not show numbering.
-   *
-   * @get result
-   * @post post
-   * @var bool
-   */
-  public $show_numbering = true;
-
-  /**
-   * Quiz form title.
-   *
-   * @get result
-   * @post post
-   * @var string
-   */
-  public $text_title = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Quiz;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Manages a single quiz.
+ */
+class QuizElementModel extends WlModelAbstract
+{
+  /**
+   * List of quiz elements.
+   *
+   * Order of the element in array corresponds to order of elements on the form.
+   *
+   * @get result
+   * @post post
+   * @var array
+   */
+  public $a_element = [];
+
+  /**
+   * Quiz settings.
+   *
+   * @get result
+   * @post post
+   * @put result
+   * @var array
+   */
+  public $a_setting = [];
+
+  /**
+   * Whether user has privileges to amend form.
+   *
+   * @get result
+   * @var bool
+   */
+  public $can_amend = false;
+
+  /**
+   * Checks whether unauthorized user should be permitted to operate with form and make a response.
+   * In general all quizzes should have users in response but it some cases such as registration process
+   *  user might not exist yet, and we need ability to ignore check for user existence.
+   * `true` - add possibility load form and accept response for non-registered user, `false` otherwise.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $can_anonymous = false;
+
+  /**
+   * Number of responses for specific quiz.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_responses = 0;
+
+  /**
+   * Quiz active status.
+   *
+   * `true` if quiz is active.
+   * `false` if quiz is not active.
+   *
+   * @get result
+   * @post post
+   * @put post
+   * @var bool
+   */
+  public $is_active = true;
+
+  /**
+   * List of quiz elements in json format.
+   *
+   * Order of the element in array corresponds to order of elements on the form.
+   *
+   * @post post
+   * @var string
+   */
+  public $json_element = '';
+
+  /**
+   * Business key within which quiz is managed.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * Quiz key.
+   *
+   * @delete get
+   * @get get
+   * @post get,result
+   * @put get
+   * @var string
+   */
+  public $k_quiz = '';
+
+  /**
+   * Quiz login key.
+   *
+   * @delete get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $k_quiz_login = '';
+
+  /**
+   * Whether to show numbering of the form elements that supports numbering.
+   *
+   * `true` to show numbering on the form for elements that supports numbering.
+   * `false` to not show numbering.
+   *
+   * @get result
+   * @post post
+   * @var bool
+   */
+  public $show_numbering = true;
+
+  /**
+   * Quiz form title.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $text_title = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Quiz/Response/QuizResponse.php b/WellnessLiving/Wl/Quiz/Response/QuizResponse.php
index b9c96aea..d31d6ccc 100644
--- a/WellnessLiving/Wl/Quiz/Response/QuizResponse.php
+++ b/WellnessLiving/Wl/Quiz/Response/QuizResponse.php
@@ -1,16 +1,16 @@
-<?php
-
-namespace WellnessLiving\Wl\Quiz\Response;
-
-/**
- * A class for quiz responses.
- */
-class QuizResponse
-{
-  /**
-   * The special value if the quiz is skipped during the booking or purchase process.
-   */
-  const RESPONSE_SKIP = 'skip';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Quiz\Response;
+
+/**
+ * A class for quiz responses.
+ */
+class QuizResponse
+{
+  /**
+   * The special value if the quiz is skipped during the booking or purchase process.
+   */
+  const RESPONSE_SKIP = 'skip';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Quiz/Response/SourceSid.php b/WellnessLiving/Wl/Quiz/Response/SourceSid.php
index ff66e42b..78620d49 100644
--- a/WellnessLiving/Wl/Quiz/Response/SourceSid.php
+++ b/WellnessLiving/Wl/Quiz/Response/SourceSid.php
@@ -1,45 +1,45 @@
-<?php
-
-namespace WellnessLiving\Wl\Quiz\Response;
-
-/**
- * List of sources where quiz response can be generated.
- *
- * Last used ID: 6
- */
-class SourceSid
-{
-  /**
-   * Quiz response received during booking process.
-   */
-  const BOOKING = 2;
-
-  /**
-   * Quiz response was imported.
-   */
-  const IMPORT = 6;
-
-  /**
-   * Quiz response received by direct link.
-   */
-  const LINK = 1;
-
-  /**
-   * Quiz response received by direct link.
-   *
-   * @title Studio
-   */
-  const MANUAL = 5;
-
-  /**
-   * Quiz response received during purchase process.
-   */
-  const PURCHASE = 4;
-
-  /**
-   * Quiz response received during registration process.
-   */
-  const REGISTRATION = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Quiz\Response;
+
+/**
+ * List of sources where quiz response can be generated.
+ *
+ * Last used ID: 6
+ */
+class SourceSid
+{
+  /**
+   * Quiz response received during booking process.
+   */
+  const BOOKING = 2;
+
+  /**
+   * Quiz response was imported.
+   */
+  const IMPORT = 6;
+
+  /**
+   * Quiz response received by direct link.
+   */
+  const LINK = 1;
+
+  /**
+   * Quiz response received by direct link.
+   *
+   * @title Studio
+   */
+  const MANUAL = 5;
+
+  /**
+   * Quiz response received during purchase process.
+   */
+  const PURCHASE = 4;
+
+  /**
+   * Quiz response received during registration process.
+   */
+  const REGISTRATION = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Reception/Application/MemberInfoColorSid.php b/WellnessLiving/Wl/Reception/Application/MemberInfoColorSid.php
index 96c11411..d0127a95 100644
--- a/WellnessLiving/Wl/Reception/Application/MemberInfoColorSid.php
+++ b/WellnessLiving/Wl/Reception/Application/MemberInfoColorSid.php
@@ -1,36 +1,36 @@
-<?php
-
-namespace WellnessLiving\Wl\Reception\Application;
-
-/**
- * Define colors of notice messages.
- *
- * Describes the connotation behind messages. An available balance notice has a positive connotation and should be
- * displayed in a different color from notices of an expiring credit card or pass, which are negative.
- *
- * Last ID: 4.
- */
-abstract class MemberInfoColorSid
-{
-  /**
-   * Default for neutral, informative messages. Displayed in blue.
-   */
-  const BLUE = 1;
-
-  /**
-   * Positive messages. Displayed in green.
-   */
-  const GREEN = 2;
-
-  /**
-   * Mild negative messages to warn the user. Displayed in orange.
-   */
-  const ORANGE = 3;
-
-  /**
-   * Negative messages with strong importance or urgency. Displayed in red.
-   */
-  const RED = 4;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Reception\Application;
+
+/**
+ * Define colors of notice messages.
+ *
+ * Describes the connotation behind messages. An available balance notice has a positive connotation and should be
+ * displayed in a different color from notices of an expiring credit card or pass, which are negative.
+ *
+ * Last ID: 4.
+ */
+abstract class MemberInfoColorSid
+{
+  /**
+   * Default for neutral, informative messages. Displayed in blue.
+   */
+  const BLUE = 1;
+
+  /**
+   * Positive messages. Displayed in green.
+   */
+  const GREEN = 2;
+
+  /**
+   * Mild negative messages to warn the user. Displayed in orange.
+   */
+  const ORANGE = 3;
+
+  /**
+   * Negative messages with strong importance or urgency. Displayed in red.
+   */
+  const RED = 4;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Reception/Application/MemberInfoIconSid.php b/WellnessLiving/Wl/Reception/Application/MemberInfoIconSid.php
index f42a19f4..00b61965 100644
--- a/WellnessLiving/Wl/Reception/Application/MemberInfoIconSid.php
+++ b/WellnessLiving/Wl/Reception/Application/MemberInfoIconSid.php
@@ -1,63 +1,63 @@
-<?php
-
-namespace WellnessLiving\Wl\Reception\Application;
-
-/**
- * Define types of icons for notice messages.
- *
- * Last ID: 10.
- */
-class MemberInfoIconSid
-{
-  /**
-   * Icon of an award ribbon. For celebration of an occasion (e.g. a client's first visit).
-   */
-  const AWARD = 1;
-
-  /**
-   * Icon of a birthday cake. For birthday messages.
-   */
-  const CAKE = 2;
-
-  /**
-   * Icon of a signed contract.
-   */
-  const CONTRACT = 3;
-
-  /**
-   * Icon of a document with a slash. For the unsigned waiver message.
-   */
-  const DOCUMENT_SLASH = 4;
-
-  /**
-   * Icon of dollar sign. For messages relating to personal balance and amounts due.
-   */
-  const DOLLAR = 5;
-
-  /**
-   * Icon of a dumbbell. For messages relating to visits.
-   */
-  const DUMBBELL = 6;
-
-  /**
-   * Icon of a form.
-   */
-  const FORM = 7;
-
-  /**
-   * Icon of an "i". Used for general informative messages.
-   */
-  const INFO = 8;
-
-  /**
-   * Icon of an "x". For messages communicating some important or urgent issue for the user.
-   */
-  const PROBLEM = 9;
-
-  /**
-   * Icon of an exclamation mark. For messages communicating a mild issue or cautioning the user.
-   */
-  const WARNING = 10;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Reception\Application;
+
+/**
+ * Define types of icons for notice messages.
+ *
+ * Last ID: 10.
+ */
+class MemberInfoIconSid
+{
+  /**
+   * Icon of an award ribbon. For celebration of an occasion (e.g. a client's first visit).
+   */
+  const AWARD = 1;
+
+  /**
+   * Icon of a birthday cake. For birthday messages.
+   */
+  const CAKE = 2;
+
+  /**
+   * Icon of a signed contract.
+   */
+  const CONTRACT = 3;
+
+  /**
+   * Icon of a document with a slash. For the unsigned waiver message.
+   */
+  const DOCUMENT_SLASH = 4;
+
+  /**
+   * Icon of dollar sign. For messages relating to personal balance and amounts due.
+   */
+  const DOLLAR = 5;
+
+  /**
+   * Icon of a dumbbell. For messages relating to visits.
+   */
+  const DUMBBELL = 6;
+
+  /**
+   * Icon of a form.
+   */
+  const FORM = 7;
+
+  /**
+   * Icon of an "i". Used for general informative messages.
+   */
+  const INFO = 8;
+
+  /**
+   * Icon of an "x". For messages communicating some important or urgent issue for the user.
+   */
+  const PROBLEM = 9;
+
+  /**
+   * Icon of an exclamation mark. For messages communicating a mild issue or cautioning the user.
+   */
+  const WARNING = 10;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Reception/Application/MemberInfoModel.php b/WellnessLiving/Wl/Reception/Application/MemberInfoModel.php
index c3c09e7d..6d695a39 100644
--- a/WellnessLiving/Wl/Reception/Application/MemberInfoModel.php
+++ b/WellnessLiving/Wl/Reception/Application/MemberInfoModel.php
@@ -1,197 +1,197 @@
-<?php
-
-namespace WellnessLiving\Wl\Reception\Application;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Returns information about user for self check in application.
- */
-class MemberInfoModel extends WlModelAbstract
-{
-  /**
-   * Additional member data or `null` if any data can be shown.
-   *
-   * @get result
-   * @var array|null
-   */
-  public $a_info = null;
-
-  /**
-   * The options presented in the web app.
-   *
-   * The items are generated this way due to JavaScript limitations around translated messages.
-   *
-   * <dl>
-   *   <dt>string <var>id_color</var></dt>
-   *   <dd>
-   *     ID of color the notice is displayed in.
-   *     One of {@link MemberInfoColorSid} constants.
-   *   </dd>
-   *   <dt>string <var>id_icon</var></dt>
-   *   <dd>
-   *     ID of icon that accompanies the message.
-   *     One of {@link MemberInfoIconSid} constants.
-   *   </dd>
-   *   <dt>string <var>text_class</var></dt>
-   *   <dd>Name of the class for styles.</dd>
-   *   <dt>string <var>text_message</var></dt>
-   *   <dd>Plain message for info box.</dd>
-   *   <dt>string <var>html_message</var></dt>
-   *   <dd>Message for info box.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_items = [];
-
-  /**
-   * List of users data.
-   * Keys - users primary keys.
-   * Keys refer to clients' primary keys, and values refer to clients' data.
-   * If `null`, data for a single client is being requested.
-   *
-   * @get result
-   * @var array|null
-   */
-  public $a_result_list = null;
-
-  /**
-   * Primary keys of users whose information must be returned.
-   *
-   * `null` if data of a single user is requested.
-   *
-   * @get get
-   * @var string[]|null
-   */
-  public $a_uid = null;
-
-  /**
-   * Date of the session, if we show it on the appointment info window or on the attendance list.
-   *
-   * @get get
-   * @var string
-   */
-  public $dt_date = '';
-
-  /**
-   * `true` - if API is being used from backend, `false` - otherwise.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_backend = false;
-
-  /**
-   * If you need to return additional information set to `true` or `false` if not.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_full = false;
-
-  /**
-   * If `true`, the client is a traveler. Otherwise, this will be `false`.
-   * This will be `null` in cases when the client is a walk-in. Or when {@link MemberInfoModel::$is_full} is `false`.
-   *
-   * @get result
-   * @var bool|null
-   */
-  public $is_traveller = null;
-
-  /**
-   * The business ID required to access client information.
-   *
-   * Specify this as `0` to retrieve the system-wide version of the information.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The location where the Self Check-In Web App is running.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_location = '';
-
-  /**
-   * ID of the visit, if we show icons on the attendance list and information that depends on visit is required.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_visit = '';
-
-  /**
-   * The member ID.
-   *
-   * If `null`, the specified client isn't a member of the specified business.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $s_member = null;
-
-  /**
-   * Key of the Check In application.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_secret = '';
-
-  /**
-   * A list of icons with additional information about the business member.
-   * If empty, all available icons will be displayed.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_show = '';
-
-  /**
-   * First user's name.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_first_name = '';
-
-  /**
-   * Full user's name.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_fullname = '';
-
-  /**
-   * ID of a user to retrieve member information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '';
-
-  /**
-   * URL to barcode image.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_barcode;
-
-  /**
-   * URL to email.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_email = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Reception\Application;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns information about user for self check in application.
+ */
+class MemberInfoModel extends WlModelAbstract
+{
+  /**
+   * Additional member data or `null` if any data can be shown.
+   *
+   * @get result
+   * @var array|null
+   */
+  public $a_info = null;
+
+  /**
+   * The options presented in the web app.
+   *
+   * The items are generated this way due to JavaScript limitations around translated messages.
+   *
+   * <dl>
+   *   <dt>string <var>id_color</var></dt>
+   *   <dd>
+   *     ID of color the notice is displayed in.
+   *     One of {@link MemberInfoColorSid} constants.
+   *   </dd>
+   *   <dt>string <var>id_icon</var></dt>
+   *   <dd>
+   *     ID of icon that accompanies the message.
+   *     One of {@link MemberInfoIconSid} constants.
+   *   </dd>
+   *   <dt>string <var>text_class</var></dt>
+   *   <dd>Name of the class for styles.</dd>
+   *   <dt>string <var>text_message</var></dt>
+   *   <dd>Plain message for info box.</dd>
+   *   <dt>string <var>html_message</var></dt>
+   *   <dd>Message for info box.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_items = [];
+
+  /**
+   * List of users data.
+   * Keys - users primary keys.
+   * Keys refer to clients' primary keys, and values refer to clients' data.
+   * If `null`, data for a single client is being requested.
+   *
+   * @get result
+   * @var array|null
+   */
+  public $a_result_list = null;
+
+  /**
+   * Primary keys of users whose information must be returned.
+   *
+   * `null` if data of a single user is requested.
+   *
+   * @get get
+   * @var string[]|null
+   */
+  public $a_uid = null;
+
+  /**
+   * Date of the session, if we show it on the appointment info window or on the attendance list.
+   *
+   * @get get
+   * @var string
+   */
+  public $dt_date = '';
+
+  /**
+   * `true` - if API is being used from backend, `false` - otherwise.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_backend = false;
+
+  /**
+   * If you need to return additional information set to `true` or `false` if not.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_full = false;
+
+  /**
+   * If `true`, the client is a traveler. Otherwise, this will be `false`.
+   * This will be `null` in cases when the client is a walk-in. Or when {@link MemberInfoModel::$is_full} is `false`.
+   *
+   * @get result
+   * @var bool|null
+   */
+  public $is_traveller = null;
+
+  /**
+   * The business ID required to access client information.
+   *
+   * Specify this as `0` to retrieve the system-wide version of the information.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The location where the Self Check-In Web App is running.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '';
+
+  /**
+   * ID of the visit, if we show icons on the attendance list and information that depends on visit is required.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_visit = '';
+
+  /**
+   * The member ID.
+   *
+   * If `null`, the specified client isn't a member of the specified business.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $s_member = null;
+
+  /**
+   * Key of the Check In application.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_secret = '';
+
+  /**
+   * A list of icons with additional information about the business member.
+   * If empty, all available icons will be displayed.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_show = '';
+
+  /**
+   * First user's name.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_first_name = '';
+
+  /**
+   * Full user's name.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_fullname = '';
+
+  /**
+   * ID of a user to retrieve member information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '';
+
+  /**
+   * URL to barcode image.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_barcode;
+
+  /**
+   * URL to email.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_email = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Reception/Application/ReceptionScheduleModel.php b/WellnessLiving/Wl/Reception/Application/ReceptionScheduleModel.php
index 939ea5cc..62baa114 100644
--- a/WellnessLiving/Wl/Reception/Application/ReceptionScheduleModel.php
+++ b/WellnessLiving/Wl/Reception/Application/ReceptionScheduleModel.php
@@ -1,235 +1,235 @@
-<?php
-
-namespace WellnessLiving\Wl\Reception\Application;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Service\ServiceSid;
-use WellnessLiving\Wl\WlProgramTypeSid;
-
-/**
- * Shows the schedule for the check-in process.
- *
- * Returns the HTML code that is normally presented for the check-in process.
- */
-class ReceptionScheduleModel extends WlModelAbstract
-{
-  /**
-   * A list of sessions to display with the following fields:
-   * <dl>
-   *   <dt>array <var>a_resources_shared</var></dt>
-   *   <dd>A list of shared resources containing:<dl>
-   *       <dt>string <var>k_resource</var></dt><dd>The resource key.</dd>
-   *       <dt>string <var>s_title</var></dt><dd>The resource title.</dd>
-   *   </dl></dd>
-   *   <dt>array <var>a_staff_all</var></dt>
-   *   <dd>A list of staff members instructing the service, containing:<dl>
-   *       <dt>string <var>s_name_full</var></dt><dd>The staff member's full name.</dd>
-   *   </dl></dd>
-   *   <dt>string <var>dtu_date</var></dt>
-   *   <dd>The session date.</dd>
-   *   <dt>string <var>html_class_js</var></dt>
-   *   <dd>The name of the HTML class that JavaScript uses to display the icon, depending on the service type.</dd>
-   *   <dt>int <var>i_duration</var></dt>
-   *   <dd>The session duration in minutes.</dd>
-   *   <dt>int <var>id_service</var></dt>
-   *   <dd>Service ID. One of the {@link ServiceSid} constants.</dd>
-   *   <dt>bool <var>is_auto</var></dt>
-   *   <dd>If `true`, the session can be checked in automatically. Otherwise, this will be `false`.</dd>
-   *   <dt>bool <var>is_book</var></dt>
-   *   <dd>If `true`, the client should be notified that the visit is booked. Otherwise, this will be `false`.</dd>
-   *   <dt>bool <var>is_wait</var></dt>
-   *   <dd>If `true`, the client should be notified that they're on the wait list. Otherwise, this will be `false`.</dd>
-   *   <dt>string|null <var>k_appointment</var></dt>
-   *   <dd>The appointment key. If `null`, this isn't an appointment.</dd>
-   *   <dt>string|null <var>k_class_period</var></dt>
-   *   <dd>The class period key. If `null`, this isn't a class or event.</dd>
-   *   <dt>string|null <var>k_visit</var></dt>
-   *   <dd>The visit key if the session has been checked in. Otherwise, this will be `null`.</dd>
-   *   <dt>string <var>s_class</var></dt>
-   *   <dd>The service name.</dd>
-   *   <dt>string <var>s_duration</var></dt>
-   *   <dd>The session duration, formatted by the business configuration.</dd>
-   *   <dt>string <var>s_time</var></dt>
-   *   <dd>The time the session takes place.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_class = [];
-
-  /**
-   * Data for the confirmation screen with the following fields:
-   * <dl>
-   *   <dt>array <var>a_payment</var></dt>
-   *   <dd>Data for the promotion payment informational card. Each element contains:<dl>
-   *     <dt>array <var>a_restrict</var></dt>
-   *     <dd>Calendar restrictions. A duration pass will only have elements if a restriction has been met. This contains: <dl>
-   *       <dt>int <var>i_limit</var></dt><dd>The count of possible visits.</dd>
-   *       <dt>int <var>i_remain</var></dt><dd>The count of remaining visits.</dd>
-   *       <dt>bool <var>s_date</var></dt><dd>The calendar period name.</dd>
-   *     </dl></dd>
-   *     <dt>bool <var>has_visit_past</var></dt>
-   *     <dd>If `true`, the promotion was renewed in the past. Otherwise, this will be `false`.</dd>
-   *     <dt>bool <var>hide_visit_additional_info</var></dt>
-   *     <dd>If `true`, additional info should be excluded. Otherwise, this will be `false`.</dd>
-   *     <dt>int <var>i_book</var></dt><dd>The count of upcoming uses of the promotion.</dd>
-   *     <dt>int <var>i_book_duration</var></dt>
-   *     <dd>
-   *       Number of minutes used for upcoming visits.
-   *       Has sense only for promotions of program type {@link WlProgramTypeSid::DURATION}.
-   *     </dd>
-   *     <dt>int <var>i_limit</var></dt><dd>The promotion's visit count limit.</dd>
-   *     <dt>int <var>i_remain</var></dt><dd>The remaining count of visits.</dd>
-   *     <dt>int <var>i_remain_duration</var></dt>
-   *     <dd>
-   *       Number of minutes left in this promotion.
-   *       Has sense only for promotions of program type {@link WlProgramTypeSid::DURATION}.
-   *     </dd>
-   *     <dt>int <var>i_use</var></dt><dd>Count of held uses in the pass.</dd>
-   *     <dt>int <var>i_use_duration</var></dt>
-   *     <dd>
-   *       Number of minutes used for past visits by this promotion.
-   *       Has sense only for promotions of program type {@link WlProgramTypeSid::DURATION}.
-   *     </dd>
-   *     <dt>int <var>i_visit_past</var></dt>
-   *     <dd>
-   *       The count of attended sessions before the last renewal.
-   *       If `0`, there were no sessions before last renewal or the promotion doesn't auto-renew.
-   *     </dd>
-   *     <dt>int <var>id_program_type</var></dt><dd>The promotion's program type ID.</dd>
-   *     <dt>bool <var>is_last_use</var></dt>
-   *     <dd>If `true`, the promotion has a usage limit and no remaining visits. Otherwise, this will be `false`.</dd>
-   *     <dt>bool <var>is_package</var></dt><dd>If `true`, the promotion is a package. Otherwise, this will be `false`.</dd>
-   *     <dt>bool <var>is_restrict_multiply</var></dt>
-   *     <dd>If `true`, there's more than one calendar restriction on the pass. Otherwise, this will be `false`.</dd>
-   *     <dt>string <var>k_login_promotion</var></dt>
-   *     <dd>The login promotion key.</dd>
-   *     <dt>string <var>s_remain_measure</var></dt><dd>The formatted remaining duration on the promotion.</dd>
-   *     <dt>bool <var>show_remain</var></dt>
-   *     <dd>If `true`, there's a rollover on the pass with calendar restrictions. Otherwise, this will be `false`.</dd>
-   *     <dt>string <var>sid_program_type</var></dt><dd>The promotion's program type SID.</dd>
-   *   </dl></dd>
-   *   <dt>array <var>a_resources_not_shared</var></dt>
-   *   <dd>The list of assets reserved individually at the time of booking containing:<dl>
-   *       <dt>int <var>i_index</var></dt><dd>The busy resource index.</dd>
-   *       <dt>string <var>s_title</var></dt><dd>The resource name.</dd>
-   *   </dl></dd>
-   *   <dt>string <var>dl_renew</var></dt>
-   *   <dd>The promotion renewal date in local time.</dd>
-   *   <dt>int <var>i_visits</var></dt>
-   *   <dd>The total workouts attended.</dd>
-   *   <dt>string <var>s_expire</var></dt>
-   *   <dd>The short format of the promotion expiration date.</dd>
-   *   <dt>string <var>s_payment</var></dt>
-   *   <dd>The payment method used to book (free, unpaid, single buy, or promotion name).</dd>
-   *   <dt>string <var>s_renew</var></dt>
-   *   <dd>The short format of the promotion renewal date.</dd>
-   *   <dt>string <var>show_visits</var></dt>
-   *   <dd>Determines whether to show the client's total workouts attended on the confirmation screen.</dd>
-   * </dl>
-   *
-   * @post result
-   * @var array
-   */
-  public $a_confirmation_data = [];
-
-  /**
-   * All types of services that appear in the schedule.
-   * Keys are constants from {@link ServiceSid}. Values are the HTML classes associated with that service.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_schedule_class_all;
-
-  /**
-   * The date and time of the visit in UTC and MySQL format.
-   *
-   * @post post
-   * @var string
-   */
-  public $dtu_date = '';
-
-  /**
-   * The confirmation template to be shown in the Self Check-In Web App for the selected user.
-   *
-   * @post result
-   * @var string
-   */
-  public $html_confirmation = '';
-
-  /**
-   * The schedule to be shown in the Self Check-In Web App for the selected user.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_schedule = '';
-
-  /**
-   * The key of the appointment to check in.
-   *
-   * If `null`, this is class visit or gym visit.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $k_appointment = null;
-
-  /**
-   * The business key, where the Self Check-In Web App is started.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The key of the class schedule to check in.
-   *
-   * If `null`, this is an appointment visit or gym visit.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $k_class_period = null;
-
-  /**
-   * The location key, where the Self Check-In Web App is started.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_location = '';
-
-  /**
-   * The visit key, which was added or checked in.
-   *
-   * @post result
-   * @var string
-   */
-  public $k_visit = '';
-
-  /**
-   * The key of the Self Check-In Web App.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $s_secret = '';
-
-  /**
-   * The key of the user to show the schedule for.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Reception\Application;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Service\ServiceSid;
+use WellnessLiving\Wl\WlProgramTypeSid;
+
+/**
+ * Shows the schedule for the check-in process.
+ *
+ * Returns the HTML code that is normally presented for the check-in process.
+ */
+class ReceptionScheduleModel extends WlModelAbstract
+{
+  /**
+   * A list of sessions to display with the following fields:
+   * <dl>
+   *   <dt>array <var>a_resources_shared</var></dt>
+   *   <dd>A list of shared resources containing:<dl>
+   *       <dt>string <var>k_resource</var></dt><dd>The resource key.</dd>
+   *       <dt>string <var>s_title</var></dt><dd>The resource title.</dd>
+   *   </dl></dd>
+   *   <dt>array <var>a_staff_all</var></dt>
+   *   <dd>A list of staff members instructing the service, containing:<dl>
+   *       <dt>string <var>s_name_full</var></dt><dd>The staff member's full name.</dd>
+   *   </dl></dd>
+   *   <dt>string <var>dtu_date</var></dt>
+   *   <dd>The session date.</dd>
+   *   <dt>string <var>html_class_js</var></dt>
+   *   <dd>The name of the HTML class that JavaScript uses to display the icon, depending on the service type.</dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>The session duration in minutes.</dd>
+   *   <dt>int <var>id_service</var></dt>
+   *   <dd>Service ID. One of the {@link ServiceSid} constants.</dd>
+   *   <dt>bool <var>is_auto</var></dt>
+   *   <dd>If `true`, the session can be checked in automatically. Otherwise, this will be `false`.</dd>
+   *   <dt>bool <var>is_book</var></dt>
+   *   <dd>If `true`, the client should be notified that the visit is booked. Otherwise, this will be `false`.</dd>
+   *   <dt>bool <var>is_wait</var></dt>
+   *   <dd>If `true`, the client should be notified that they're on the wait list. Otherwise, this will be `false`.</dd>
+   *   <dt>string|null <var>k_appointment</var></dt>
+   *   <dd>The appointment key. If `null`, this isn't an appointment.</dd>
+   *   <dt>string|null <var>k_class_period</var></dt>
+   *   <dd>The class period key. If `null`, this isn't a class or event.</dd>
+   *   <dt>string|null <var>k_visit</var></dt>
+   *   <dd>The visit key if the session has been checked in. Otherwise, this will be `null`.</dd>
+   *   <dt>string <var>s_class</var></dt>
+   *   <dd>The service name.</dd>
+   *   <dt>string <var>s_duration</var></dt>
+   *   <dd>The session duration, formatted by the business configuration.</dd>
+   *   <dt>string <var>s_time</var></dt>
+   *   <dd>The time the session takes place.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_class = [];
+
+  /**
+   * Data for the confirmation screen with the following fields:
+   * <dl>
+   *   <dt>array <var>a_payment</var></dt>
+   *   <dd>Data for the promotion payment informational card. Each element contains:<dl>
+   *     <dt>array <var>a_restrict</var></dt>
+   *     <dd>Calendar restrictions. A duration pass will only have elements if a restriction has been met. This contains: <dl>
+   *       <dt>int <var>i_limit</var></dt><dd>The count of possible visits.</dd>
+   *       <dt>int <var>i_remain</var></dt><dd>The count of remaining visits.</dd>
+   *       <dt>bool <var>s_date</var></dt><dd>The calendar period name.</dd>
+   *     </dl></dd>
+   *     <dt>bool <var>has_visit_past</var></dt>
+   *     <dd>If `true`, the promotion was renewed in the past. Otherwise, this will be `false`.</dd>
+   *     <dt>bool <var>hide_visit_additional_info</var></dt>
+   *     <dd>If `true`, additional info should be excluded. Otherwise, this will be `false`.</dd>
+   *     <dt>int <var>i_book</var></dt><dd>The count of upcoming uses of the promotion.</dd>
+   *     <dt>int <var>i_book_duration</var></dt>
+   *     <dd>
+   *       Number of minutes used for upcoming visits.
+   *       Has sense only for promotions of program type {@link WlProgramTypeSid::DURATION}.
+   *     </dd>
+   *     <dt>int <var>i_limit</var></dt><dd>The promotion's visit count limit.</dd>
+   *     <dt>int <var>i_remain</var></dt><dd>The remaining count of visits.</dd>
+   *     <dt>int <var>i_remain_duration</var></dt>
+   *     <dd>
+   *       Number of minutes left in this promotion.
+   *       Has sense only for promotions of program type {@link WlProgramTypeSid::DURATION}.
+   *     </dd>
+   *     <dt>int <var>i_use</var></dt><dd>Count of held uses in the pass.</dd>
+   *     <dt>int <var>i_use_duration</var></dt>
+   *     <dd>
+   *       Number of minutes used for past visits by this promotion.
+   *       Has sense only for promotions of program type {@link WlProgramTypeSid::DURATION}.
+   *     </dd>
+   *     <dt>int <var>i_visit_past</var></dt>
+   *     <dd>
+   *       The count of attended sessions before the last renewal.
+   *       If `0`, there were no sessions before last renewal or the promotion doesn't auto-renew.
+   *     </dd>
+   *     <dt>int <var>id_program_type</var></dt><dd>The promotion's program type ID.</dd>
+   *     <dt>bool <var>is_last_use</var></dt>
+   *     <dd>If `true`, the promotion has a usage limit and no remaining visits. Otherwise, this will be `false`.</dd>
+   *     <dt>bool <var>is_package</var></dt><dd>If `true`, the promotion is a package. Otherwise, this will be `false`.</dd>
+   *     <dt>bool <var>is_restrict_multiply</var></dt>
+   *     <dd>If `true`, there's more than one calendar restriction on the pass. Otherwise, this will be `false`.</dd>
+   *     <dt>string <var>k_login_promotion</var></dt>
+   *     <dd>The login promotion key.</dd>
+   *     <dt>string <var>s_remain_measure</var></dt><dd>The formatted remaining duration on the promotion.</dd>
+   *     <dt>bool <var>show_remain</var></dt>
+   *     <dd>If `true`, there's a rollover on the pass with calendar restrictions. Otherwise, this will be `false`.</dd>
+   *     <dt>string <var>sid_program_type</var></dt><dd>The promotion's program type SID.</dd>
+   *   </dl></dd>
+   *   <dt>array <var>a_resources_not_shared</var></dt>
+   *   <dd>The list of assets reserved individually at the time of booking containing:<dl>
+   *       <dt>int <var>i_index</var></dt><dd>The busy resource index.</dd>
+   *       <dt>string <var>s_title</var></dt><dd>The resource name.</dd>
+   *   </dl></dd>
+   *   <dt>string <var>dl_renew</var></dt>
+   *   <dd>The promotion renewal date in local time.</dd>
+   *   <dt>int <var>i_visits</var></dt>
+   *   <dd>The total workouts attended.</dd>
+   *   <dt>string <var>s_expire</var></dt>
+   *   <dd>The short format of the promotion expiration date.</dd>
+   *   <dt>string <var>s_payment</var></dt>
+   *   <dd>The payment method used to book (free, unpaid, single buy, or promotion name).</dd>
+   *   <dt>string <var>s_renew</var></dt>
+   *   <dd>The short format of the promotion renewal date.</dd>
+   *   <dt>string <var>show_visits</var></dt>
+   *   <dd>Determines whether to show the client's total workouts attended on the confirmation screen.</dd>
+   * </dl>
+   *
+   * @post result
+   * @var array
+   */
+  public $a_confirmation_data = [];
+
+  /**
+   * All types of services that appear in the schedule.
+   * Keys are constants from {@link ServiceSid}. Values are the HTML classes associated with that service.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_schedule_class_all;
+
+  /**
+   * The date and time of the visit in UTC and MySQL format.
+   *
+   * @post post
+   * @var string
+   */
+  public $dtu_date = '';
+
+  /**
+   * The confirmation template to be shown in the Self Check-In Web App for the selected user.
+   *
+   * @post result
+   * @var string
+   */
+  public $html_confirmation = '';
+
+  /**
+   * The schedule to be shown in the Self Check-In Web App for the selected user.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_schedule = '';
+
+  /**
+   * The key of the appointment to check in.
+   *
+   * If `null`, this is class visit or gym visit.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_appointment = null;
+
+  /**
+   * The business key, where the Self Check-In Web App is started.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The key of the class schedule to check in.
+   *
+   * If `null`, this is an appointment visit or gym visit.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_class_period = null;
+
+  /**
+   * The location key, where the Self Check-In Web App is started.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_location = '';
+
+  /**
+   * The visit key, which was added or checked in.
+   *
+   * @post result
+   * @var string
+   */
+  public $k_visit = '';
+
+  /**
+   * The key of the Self Check-In Web App.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $s_secret = '';
+
+  /**
+   * The key of the user to show the schedule for.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Report/Generator/ReportGeneratorStatusSid.php b/WellnessLiving/Wl/Report/Generator/ReportGeneratorStatusSid.php
index e2a418a2..ab0aa322 100644
--- a/WellnessLiving/Wl/Report/Generator/ReportGeneratorStatusSid.php
+++ b/WellnessLiving/Wl/Report/Generator/ReportGeneratorStatusSid.php
@@ -1,88 +1,88 @@
-<?php
-
-namespace WellnessLiving\Wl\Report\Generator;
-
-/**
- * Lists statuses of reports from point of view of its generation.
- */
-class ReportGeneratorStatusSid
-{
-  /**
-   * Report is in an inconsistent state.
-   *
-   * There was an aborted operation which means this report is available partially.
-   *
-   * The following transitions are possible:
-   *
-   * * `ABORTED` => `DELETING` when a background task finds that this report is old and should be deleted.
-   *
-   * * `ABORTED` => `QUEUED` if user clicks to regenerate this report
-   */
-  const ABORTED = 6;
-
-  /**
-   * Current operation is being aborted now.
-   *
-   * The following transitions are possible:
-   *
-   * * `ABORTING` => `ABORTED` when current operation completes.
-   *   This transition is performed in two places: before the beginning of the actual generation,
-   *   and after completion of the generation.
-   */
-  const ABORTING = 5;
-
-  /**
-   * This report is being deleted now.
-   *
-   * The following transitions are possible:
-   *
-   * * `DELETING` => (report does not exist anymore) when deletion of this report completes.
-   */
-  const DELETING = 4;
-
-  /**
-   * This report is being generated now.
-   *
-   * This status is set when report is generated from zero point.
-   * This status basically means that not all partition of the report present.
-   * It also means that all partitions that exist have the newest values.
-   *
-   * All new reports are created in this status.
-   *
-   * The following transitions are possible:
-   *
-   * * `GENERATING` => `ABORTING` when generation of this report aborted by user.
-   * * `GENERATING` => `READY` when generation of this report completes.
-   *   This transition is performed when generation completes successfully.
-   */
-  const GENERATING = 2;
-
-  /**
-   * Generation of this report is queued.
-   * It will start automatically when generation of other reports completes.
-   *
-   * The following transitions are possible:
-   *
-   * * `QUEUED` => (report does not exist anymore) If generation of this report was aborted while no data was generated.
-   * * `QUEUED` => `ABORTED` If generation of this report was aborted while there is data from previous generation of
-   *    this report.
-   *
-   *    This transition also occurs if a report stayed in the queue more than the set duration and
-   *    there is some data left from the previous generation of this report.
-   * * `QUEUED` => `GENERATING` when there is a free thread slot to start generation of this report immediately.
-   */
-  const QUEUED = 1;
-
-  /**
-   * Generation of this report is now completed.
-   *
-   * The following transitions are possible:
-   *
-   * * `READY` => `DELETING` when a background tasks identifies that this report is old and starts deleting it.
-   *
-   * * `READY` => `QUEUED` when user clicks to regenerate this report
-   */
-  const READY = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Report\Generator;
+
+/**
+ * Lists statuses of reports from point of view of its generation.
+ */
+class ReportGeneratorStatusSid
+{
+  /**
+   * Report is in an inconsistent state.
+   *
+   * There was an aborted operation which means this report is available partially.
+   *
+   * The following transitions are possible:
+   *
+   * * `ABORTED` => `DELETING` when a background task finds that this report is old and should be deleted.
+   *
+   * * `ABORTED` => `QUEUED` if user clicks to regenerate this report
+   */
+  const ABORTED = 6;
+
+  /**
+   * Current operation is being aborted now.
+   *
+   * The following transitions are possible:
+   *
+   * * `ABORTING` => `ABORTED` when current operation completes.
+   *   This transition is performed in two places: before the beginning of the actual generation,
+   *   and after completion of the generation.
+   */
+  const ABORTING = 5;
+
+  /**
+   * This report is being deleted now.
+   *
+   * The following transitions are possible:
+   *
+   * * `DELETING` => (report does not exist anymore) when deletion of this report completes.
+   */
+  const DELETING = 4;
+
+  /**
+   * This report is being generated now.
+   *
+   * This status is set when report is generated from zero point.
+   * This status basically means that not all partition of the report present.
+   * It also means that all partitions that exist have the newest values.
+   *
+   * All new reports are created in this status.
+   *
+   * The following transitions are possible:
+   *
+   * * `GENERATING` => `ABORTING` when generation of this report aborted by user.
+   * * `GENERATING` => `READY` when generation of this report completes.
+   *   This transition is performed when generation completes successfully.
+   */
+  const GENERATING = 2;
+
+  /**
+   * Generation of this report is queued.
+   * It will start automatically when generation of other reports completes.
+   *
+   * The following transitions are possible:
+   *
+   * * `QUEUED` => (report does not exist anymore) If generation of this report was aborted while no data was generated.
+   * * `QUEUED` => `ABORTED` If generation of this report was aborted while there is data from previous generation of
+   *    this report.
+   *
+   *    This transition also occurs if a report stayed in the queue more than the set duration and
+   *    there is some data left from the previous generation of this report.
+   * * `QUEUED` => `GENERATING` when there is a free thread slot to start generation of this report immediately.
+   */
+  const QUEUED = 1;
+
+  /**
+   * Generation of this report is now completed.
+   *
+   * The following transitions are possible:
+   *
+   * * `READY` => `DELETING` when a background tasks identifies that this report is old and starts deleting it.
+   *
+   * * `READY` => `QUEUED` when user clicks to regenerate this report
+   */
+  const READY = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Resource/Image/ImageIconSid.php b/WellnessLiving/Wl/Resource/Image/ImageIconSid.php
index 99608ef1..5208f6f4 100644
--- a/WellnessLiving/Wl/Resource/Image/ImageIconSid.php
+++ b/WellnessLiving/Wl/Resource/Image/ImageIconSid.php
@@ -1,158 +1,158 @@
-<?php
-
-namespace WellnessLiving\Wl\Resource\Image;
-
-/**
- * Predefined icons for assets.
- *
- * Last used ID: 29.
- */
-class ImageIconSid
-{
-  /**
-   * Training bench.
-   */
-  const BENCH = 1;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_1 = 2;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_2 = 3;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_3 = 4;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_4 = 5;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_5 = 6;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_6 = 7;
-
-  /**
-   * Boot.
-   */
-  const BOOT = 8;
-
-  /**
-   * Door.
-   */
-  const DOOR = 9;
-
-  /**
-   * Fan.
-   */
-  const FAN_1 = 10;
-
-  /**
-   * Fan.
-   */
-  const FAN_2 = 11;
-
-  /**
-   * Man.
-   */
-  const MAN = 12;
-
-  /**
-   * Mat.
-   */
-  const MAT = 13;
-
-  /**
-   * Mirror.
-   */
-  const MIRROR = 14;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_1 = 15;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_2 = 16;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_3 = 17;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_4 = 18;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_5 = 19;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_6 = 20;
-
-  /**
-   * Boxing punch.
-   */
-  const PUNCH_1 = 21;
-
-  /**
-   * Boxing punch.
-   */
-  const PUNCH_2 = 22;
-
-  /**
-   * Rectangle.
-   */
-  const RECTANGLE = 23;
-
-  /**
-   * Loudspeaker.
-   */
-  const SPEAKER = 24;
-
-  /**
-   * Treadmill.
-   */
-  const TREADMILL_1 = 25;
-
-  /**
-   * Treadmill.
-   */
-  const TREADMILL_2 = 26;
-
-  /**
-   * TV.
-   */
-  const TV = 27;
-
-  /**
-   * Twines.
-   */
-  const TWINE = 28;
-
-  /**
-   * Weight.
-   */
-  const WEIGHT = 29;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Resource\Image;
+
+/**
+ * Predefined icons for assets.
+ *
+ * Last used ID: 29.
+ */
+class ImageIconSid
+{
+  /**
+   * Training bench.
+   */
+  const BENCH = 1;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_1 = 2;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_2 = 3;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_3 = 4;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_4 = 5;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_5 = 6;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_6 = 7;
+
+  /**
+   * Boot.
+   */
+  const BOOT = 8;
+
+  /**
+   * Door.
+   */
+  const DOOR = 9;
+
+  /**
+   * Fan.
+   */
+  const FAN_1 = 10;
+
+  /**
+   * Fan.
+   */
+  const FAN_2 = 11;
+
+  /**
+   * Man.
+   */
+  const MAN = 12;
+
+  /**
+   * Mat.
+   */
+  const MAT = 13;
+
+  /**
+   * Mirror.
+   */
+  const MIRROR = 14;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_1 = 15;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_2 = 16;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_3 = 17;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_4 = 18;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_5 = 19;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_6 = 20;
+
+  /**
+   * Boxing punch.
+   */
+  const PUNCH_1 = 21;
+
+  /**
+   * Boxing punch.
+   */
+  const PUNCH_2 = 22;
+
+  /**
+   * Rectangle.
+   */
+  const RECTANGLE = 23;
+
+  /**
+   * Loudspeaker.
+   */
+  const SPEAKER = 24;
+
+  /**
+   * Treadmill.
+   */
+  const TREADMILL_1 = 25;
+
+  /**
+   * Treadmill.
+   */
+  const TREADMILL_2 = 26;
+
+  /**
+   * TV.
+   */
+  const TV = 27;
+
+  /**
+   * Twines.
+   */
+  const TWINE = 28;
+
+  /**
+   * Weight.
+   */
+  const WEIGHT = 29;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Resource/Image/ImageShapeSid.php b/WellnessLiving/Wl/Resource/Image/ImageShapeSid.php
index 8d56b809..7d85e73a 100644
--- a/WellnessLiving/Wl/Resource/Image/ImageShapeSid.php
+++ b/WellnessLiving/Wl/Resource/Image/ImageShapeSid.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Wl\Resource\Image;
-
-/**
- * The kinds of shapes that can be used as an assets' images.
- */
-class ImageShapeSid
-{
-  /**
-   * Circle.
-   */
-  const CIRCLE = 1;
-
-  /**
-   * Rectangle.
-   */
-  const RECTANGLE = 2;
-
-  /**
-   * Square.
-   */
-  const SQUARE = 3;
-
-  /**
-   * Triangle.
-   */
-  const TRIANGLE = 4;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Resource\Image;
+
+/**
+ * The kinds of shapes that can be used as an assets' images.
+ */
+class ImageShapeSid
+{
+  /**
+   * Circle.
+   */
+  const CIRCLE = 1;
+
+  /**
+   * Rectangle.
+   */
+  const RECTANGLE = 2;
+
+  /**
+   * Square.
+   */
+  const SQUARE = 3;
+
+  /**
+   * Triangle.
+   */
+  const TRIANGLE = 4;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Resource/Layout/LayoutModel.php b/WellnessLiving/Wl/Resource/Layout/LayoutModel.php
index bf140e58..b79f8bab 100644
--- a/WellnessLiving/Wl/Resource/Layout/LayoutModel.php
+++ b/WellnessLiving/Wl/Resource/Layout/LayoutModel.php
@@ -1,258 +1,258 @@
-<?php
-
-namespace WellnessLiving\Wl\Resource\Layout;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Resource\Image\ImageIconSid;
-
-/**
- * Displays information about an asset layout.
- */
-class LayoutModel extends WlModelAbstract
-{
-  /**
-   * The list of assets. Every element contains the following keys:
-   * <dl>
-   *   <dt>
-   *     array <var>a_image</var>
-   *   </dt>
-   *   <dd>
-   *     The asset's appearance information.
-   *
-   *   </dd>
-   *   <dt>
-   *     int <var>i_cell_x</var>
-   *   </dt>
-   *   <dd>
-   *     The vertical cell number. Not empty if assets are snapped to grid.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_cell_y</var>
-   *   </dt>
-   *   <dd>
-   *     The horizontal cell number. Not empty if assets are snapped to grid.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_left</var>
-   *   </dt>
-   *   <dd>
-   *     The horizontal offset in pixels. Not empty if assets aren't snapped to grid.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_top</var>
-   *   </dt>
-   *   <dd>
-   *     The vertical offset in pixels. Not empty if assets aren't snapped to grid.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_index</var>
-   *   </dt>
-   *   <dd>
-   *     Asset number.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_resource</var>
-   *   </dt>
-   *   <dd>
-   *     The asset key.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_name</var>
-   *   </dt>
-   *   <dd>
-   *     Asset name.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_title</var>
-   *   </dt>
-   *   <dd>
-   *     The asset title.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_resource;
-
-  /**
-   * A list of custom shapes. Every element is an array with the following keys:
-   * <dl>
-   *   <dt>
-   *     float <var>f_height</var>
-   *   </dt>
-   *   <dd>
-   *     The height for the shape {@link LayoutShapeSid::RECTANGLE}. Empty for other shapes.
-   *   </dd>
-   *   <dt>
-   *     float <var>f_width</var>
-   *   </dt>
-   *   <dd>
-   *     The width for the shape {@link LayoutShapeSid::RECTANGLE}. Empty for other shapes.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_degree_from</var>
-   *   </dt>
-   *   <dd>
-   *     The start angle for the shape {@link LayoutShapeSid::PIE}. Empty for other shapes.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_degree_to</var>
-   *   </dt>
-   *   <dd>
-   *     The start angle for shape {@link LayoutShapeSid::PIE}. Empty for other shapes.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_left</var>
-   *   </dt>
-   *   <dd>
-   *     The position of the shape by horizontal axis.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_radius</var>
-   *   </dt>
-   *   <dd>
-   *     The radius for shapes {@link LayoutShapeSid::PIE} and
-   *     {@link LayoutShapeSid::CIRCLE}. Empty for other shapes.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_top</var>
-   *   </dt>
-   *   <dd>
-   *     The position of the shape by vertical axis.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_resource_layout_shape</var>
-   *   </dt>
-   *   <dd>
-   *     The shape type ID. One of the {@link LayoutShapeSid} constants.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_resource_layout_shape</var>
-   *   </dt>
-   *   <dd>
-   *     The shape key.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_color_background</var>
-   *   </dt>
-   *   <dd>
-   *     The shape's background color.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_color_foreground</var>
-   *   </dt>
-   *   <dd>
-   *     The shape's foreground color.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_text</var>
-   *   </dt>
-   *   <dd>
-   *     The shape's title.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_shape_custom;
-
-  /**
-   * A list of shapes and icons. Every element is an array with the following keys:
-   * <dl>
-   *   <dt>
-   *     int <var>i_cell_x</var>
-   *   </dt>
-   *   <dd>
-   *     The cell number, positioned by the horizontal axis. Empty if grid is turned off.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_cell_y</var>
-   *   </dt>
-   *   <dd>
-   *     The cell number, positioned by the vertical axis. Empty if grid is turned off.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_left</var>
-   *   </dt>
-   *   <dd>
-   *     The horizontal position in pixels. Empty if grid is turned on.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_top</var>
-   *   </dt>
-   *   <dd>
-   *     The vertical position in pixels. Empty if grid is turned on.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_shape_icon</var>
-   *   </dt>
-   *   <dd>
-   *     The icon ID. One of the {@link ImageIconSid} constants.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_shape_icon;
-
-  /**
-   * The grid size.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_grid;
-
-  /**
-   * This will be `true` if snap to grid is enabled. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_grid;
-
-  /**
-   * The key of the layout.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_resource_layout = '0';
-
-  /**
-   * The key of the asset category.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_resource_type;
-
-  /**
-   * The color for active assets. Hex encoding with prefix `#`.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_color_active;
-
-  /**
-   * This will be `true` if asset names are displayed. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $show_name;
-
-  /**
-   * This will be `true` if asset numbers are displayed. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $show_number;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Resource\Layout;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Resource\Image\ImageIconSid;
+
+/**
+ * Displays information about an asset layout.
+ */
+class LayoutModel extends WlModelAbstract
+{
+  /**
+   * The list of assets. Every element contains the following keys:
+   * <dl>
+   *   <dt>
+   *     array <var>a_image</var>
+   *   </dt>
+   *   <dd>
+   *     The asset's appearance information.
+   *
+   *   </dd>
+   *   <dt>
+   *     int <var>i_cell_x</var>
+   *   </dt>
+   *   <dd>
+   *     The vertical cell number. Not empty if assets are snapped to grid.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_cell_y</var>
+   *   </dt>
+   *   <dd>
+   *     The horizontal cell number. Not empty if assets are snapped to grid.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_left</var>
+   *   </dt>
+   *   <dd>
+   *     The horizontal offset in pixels. Not empty if assets aren't snapped to grid.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_top</var>
+   *   </dt>
+   *   <dd>
+   *     The vertical offset in pixels. Not empty if assets aren't snapped to grid.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_index</var>
+   *   </dt>
+   *   <dd>
+   *     Asset number.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_resource</var>
+   *   </dt>
+   *   <dd>
+   *     The asset key.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_name</var>
+   *   </dt>
+   *   <dd>
+   *     Asset name.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_title</var>
+   *   </dt>
+   *   <dd>
+   *     The asset title.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_resource;
+
+  /**
+   * A list of custom shapes. Every element is an array with the following keys:
+   * <dl>
+   *   <dt>
+   *     float <var>f_height</var>
+   *   </dt>
+   *   <dd>
+   *     The height for the shape {@link LayoutShapeSid::RECTANGLE}. Empty for other shapes.
+   *   </dd>
+   *   <dt>
+   *     float <var>f_width</var>
+   *   </dt>
+   *   <dd>
+   *     The width for the shape {@link LayoutShapeSid::RECTANGLE}. Empty for other shapes.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_degree_from</var>
+   *   </dt>
+   *   <dd>
+   *     The start angle for the shape {@link LayoutShapeSid::PIE}. Empty for other shapes.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_degree_to</var>
+   *   </dt>
+   *   <dd>
+   *     The start angle for shape {@link LayoutShapeSid::PIE}. Empty for other shapes.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_left</var>
+   *   </dt>
+   *   <dd>
+   *     The position of the shape by horizontal axis.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_radius</var>
+   *   </dt>
+   *   <dd>
+   *     The radius for shapes {@link LayoutShapeSid::PIE} and
+   *     {@link LayoutShapeSid::CIRCLE}. Empty for other shapes.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_top</var>
+   *   </dt>
+   *   <dd>
+   *     The position of the shape by vertical axis.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_resource_layout_shape</var>
+   *   </dt>
+   *   <dd>
+   *     The shape type ID. One of the {@link LayoutShapeSid} constants.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_resource_layout_shape</var>
+   *   </dt>
+   *   <dd>
+   *     The shape key.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_color_background</var>
+   *   </dt>
+   *   <dd>
+   *     The shape's background color.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_color_foreground</var>
+   *   </dt>
+   *   <dd>
+   *     The shape's foreground color.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_text</var>
+   *   </dt>
+   *   <dd>
+   *     The shape's title.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_shape_custom;
+
+  /**
+   * A list of shapes and icons. Every element is an array with the following keys:
+   * <dl>
+   *   <dt>
+   *     int <var>i_cell_x</var>
+   *   </dt>
+   *   <dd>
+   *     The cell number, positioned by the horizontal axis. Empty if grid is turned off.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_cell_y</var>
+   *   </dt>
+   *   <dd>
+   *     The cell number, positioned by the vertical axis. Empty if grid is turned off.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_left</var>
+   *   </dt>
+   *   <dd>
+   *     The horizontal position in pixels. Empty if grid is turned on.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_top</var>
+   *   </dt>
+   *   <dd>
+   *     The vertical position in pixels. Empty if grid is turned on.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_shape_icon</var>
+   *   </dt>
+   *   <dd>
+   *     The icon ID. One of the {@link ImageIconSid} constants.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_shape_icon;
+
+  /**
+   * The grid size.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_grid;
+
+  /**
+   * This will be `true` if snap to grid is enabled. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_grid;
+
+  /**
+   * The key of the layout.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_resource_layout = '0';
+
+  /**
+   * The key of the asset category.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_resource_type;
+
+  /**
+   * The color for active assets. Hex encoding with prefix `#`.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_color_active;
+
+  /**
+   * This will be `true` if asset names are displayed. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $show_name;
+
+  /**
+   * This will be `true` if asset numbers are displayed. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $show_number;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php b/WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php
index bcc171fa..e88644b2 100644
--- a/WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php
+++ b/WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php
@@ -1,26 +1,26 @@
-<?php
-
-namespace WellnessLiving\Wl\Resource\Layout;
-
-/**
- * Types of the shapes.
- */
-class LayoutShapeSid
-{
-  /**
-   * Circles.
-   */
-  const CIRCLE = 2;
-
-  /**
-   * Pies.
-   */
-  const PIE = 3;
-
-  /**
-   * Rectangles and squares.
-   */
-  const RECTANGLE = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Resource\Layout;
+
+/**
+ * Types of the shapes.
+ */
+class LayoutShapeSid
+{
+  /**
+   * Circles.
+   */
+  const CIRCLE = 2;
+
+  /**
+   * Pies.
+   */
+  const PIE = 3;
+
+  /**
+   * Rectangles and squares.
+   */
+  const RECTANGLE = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Review/ReviewCaptcha.php b/WellnessLiving/Wl/Review/ReviewCaptcha.php
index 2124a40b..ecdf8f5a 100644
--- a/WellnessLiving/Wl/Review/ReviewCaptcha.php
+++ b/WellnessLiving/Wl/Review/ReviewCaptcha.php
@@ -1,16 +1,16 @@
-<?php
-
-namespace WellnessLiving\Wl\Review;
-
-/**
- * Captcha for post review.
- */
-class ReviewCaptcha
-{
-  /**
-   * CID of this class.
-   */
-  const CID = 1066;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Review;
+
+/**
+ * Captcha for post review.
+ */
+class ReviewCaptcha
+{
+  /**
+   * CID of this class.
+   */
+  const CID = 1066;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Review/ReviewFeatureModel.php b/WellnessLiving/Wl/Review/ReviewFeatureModel.php
index 454de668..07c149ce 100644
--- a/WellnessLiving/Wl/Review/ReviewFeatureModel.php
+++ b/WellnessLiving/Wl/Review/ReviewFeatureModel.php
@@ -1,37 +1,37 @@
-<?php
-
-namespace WellnessLiving\Wl\Review;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Changes the status of a featured review.
- */
-class ReviewFeatureModel extends WlModelAbstract
-{
-  /**
-   * Determines if the review is featured.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_featured = true;
-
-  /**
-   * The business key.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The review key.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_review = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Review;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Changes the status of a featured review.
+ */
+class ReviewFeatureModel extends WlModelAbstract
+{
+  /**
+   * Determines if the review is featured.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_featured = true;
+
+  /**
+   * The business key.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The review key.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_review = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Review/ReviewList/ReviewElementModel.php b/WellnessLiving/Wl/Review/ReviewList/ReviewElementModel.php
index e6595291..9d2af407 100644
--- a/WellnessLiving/Wl/Review/ReviewList/ReviewElementModel.php
+++ b/WellnessLiving/Wl/Review/ReviewList/ReviewElementModel.php
@@ -1,128 +1,128 @@
-<?php
-
-namespace WellnessLiving\Wl\Review\ReviewList;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Returns information about a review.
- */
-class ReviewElementModel extends WlModelAbstract
-{
-  /**
-   * Review data:
-   * <dl>
-   *   <dt>
-   *     string <var>dt_add</var>
-   *   </dt>
-   *   <dd>
-   *     Date when review was added by user.
-   *   </dd>
-   *   <dt>
-   *     float <var>f_rate</var>
-   *   </dt>
-   *   <dd>
-   *     Review rate.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_review_status</var>
-   *   </dt>
-   *   <dd>
-   *     Status of the Review
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_featured</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, the review is featured. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_verify</var>
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> if review is verified, <tt>false</tt> otherwise.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_firstname</var>
-   *   </dt>
-   *   <dd>
-   *     Client's first name who added review.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_lastname</var>
-   *   </dt>
-   *   <dd>
-   *     Client's last name who added review.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_reply</var>
-   *   </dt>
-   *   <dd>
-   *     Staff reply. Can be empty.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_review</var>
-   *   </dt>
-   *   <dd>
-   *     Review text.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_business_name</var>
-   *   </dt>
-   *   <dd>
-   *     Business name
-   *   </dd>
-   *   <dt>
-   *     string <var>text_response</var>
-   *   </dt>
-   *   <dd>
-   *     Word "response".
-   *   </dd>
-   *   <dt>
-   *     string <var>uid</var>
-   *   </dt>
-   *   <dd>
-   *     User key.
-   *   </dd>
-   *   <dt>
-   *     string <var>url_logo</var>
-   *   </dt>
-   *   <dd>
-   *     User logo.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_review = [];
-
-  /**
-   * The key of the business to which the review belongs.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The review key.
-   *
-   * @delete get
-   * @get get
-   * @var string
-   */
-  public $k_review = '0';
-
-  /**
-   * The user key.
-   *
-   * May be empty in the case of a guest.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Review\ReviewList;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns information about a review.
+ */
+class ReviewElementModel extends WlModelAbstract
+{
+  /**
+   * Review data:
+   * <dl>
+   *   <dt>
+   *     string <var>dt_add</var>
+   *   </dt>
+   *   <dd>
+   *     Date when review was added by user.
+   *   </dd>
+   *   <dt>
+   *     float <var>f_rate</var>
+   *   </dt>
+   *   <dd>
+   *     Review rate.
+   *   </dd>
+   *   <dt>
+   *     int <var>id_review_status</var>
+   *   </dt>
+   *   <dd>
+   *     Status of the Review
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_featured</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, the review is featured. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_verify</var>
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> if review is verified, <tt>false</tt> otherwise.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_firstname</var>
+   *   </dt>
+   *   <dd>
+   *     Client's first name who added review.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_lastname</var>
+   *   </dt>
+   *   <dd>
+   *     Client's last name who added review.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_reply</var>
+   *   </dt>
+   *   <dd>
+   *     Staff reply. Can be empty.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_review</var>
+   *   </dt>
+   *   <dd>
+   *     Review text.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_business_name</var>
+   *   </dt>
+   *   <dd>
+   *     Business name
+   *   </dd>
+   *   <dt>
+   *     string <var>text_response</var>
+   *   </dt>
+   *   <dd>
+   *     Word "response".
+   *   </dd>
+   *   <dt>
+   *     string <var>uid</var>
+   *   </dt>
+   *   <dd>
+   *     User key.
+   *   </dd>
+   *   <dt>
+   *     string <var>url_logo</var>
+   *   </dt>
+   *   <dd>
+   *     User logo.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_review = [];
+
+  /**
+   * The key of the business to which the review belongs.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The review key.
+   *
+   * @delete get
+   * @get get
+   * @var string
+   */
+  public $k_review = '0';
+
+  /**
+   * The user key.
+   *
+   * May be empty in the case of a guest.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php b/WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php
index b0d6ab5d..abcc67f1 100644
--- a/WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php
+++ b/WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Wl\Review\ReviewList;
-
-/**
- * List of possible order for gets review.
- */
-class ReviewOrderSid
-{
-  /**
-   * Ascending sort review by date.
-   */
-  const LATEST = 1;
-
-  /**
-   * Ascending sort review by date.
-   */
-  const NEGATIVE = 3;
-
-  /**
-   * Descending sort review by date.
-   */
-  const OLDEST = 4;
-
-  /**
-   * Descending sort review by date.
-   */
-  const POSITIVE = 2;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Review\ReviewList;
+
+/**
+ * List of possible order for gets review.
+ */
+class ReviewOrderSid
+{
+  /**
+   * Ascending sort review by date.
+   */
+  const LATEST = 1;
+
+  /**
+   * Ascending sort review by date.
+   */
+  const NEGATIVE = 3;
+
+  /**
+   * Descending sort review by date.
+   */
+  const OLDEST = 4;
+
+  /**
+   * Descending sort review by date.
+   */
+  const POSITIVE = 2;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Review/ReviewReplyModel.php b/WellnessLiving/Wl/Review/ReviewReplyModel.php
index 85ebf4d2..1b485783 100644
--- a/WellnessLiving/Wl/Review/ReviewReplyModel.php
+++ b/WellnessLiving/Wl/Review/ReviewReplyModel.php
@@ -1,53 +1,53 @@
-<?php
-
-namespace WellnessLiving\Wl\Review;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlReviewStatusSid;
-
-/**
- * Adds a review reply.
- */
-class ReviewReplyModel extends WlModelAbstract
-{
-  /**
-   * Status of the Review. One of {@link WlReviewStatusSid} constants.
-   *
-   * `null` until passed to the api when admin replies to the review.
-   *
-   * @post post
-   * @var int|null
-   */
-  public $id_review_status = null;
-
-  /**
-   * Key of the business to which the review belongs.
-   *
-   * Empty string to defined business automatically, based on value of <tt>k_review</tt>.
-   *
-   * Although this value may be empty, this behavior is deprecated and will be removed in the future.
-   * You MUST pass key of the business always.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The review key.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_review;
-
-  /**
-   * The reply text for review.
-   *
-   * @post post
-   * @var string
-   */
-  public $text_reply;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Review;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlReviewStatusSid;
+
+/**
+ * Adds a review reply.
+ */
+class ReviewReplyModel extends WlModelAbstract
+{
+  /**
+   * Status of the Review. One of {@link WlReviewStatusSid} constants.
+   *
+   * `null` until passed to the api when admin replies to the review.
+   *
+   * @post post
+   * @var int|null
+   */
+  public $id_review_status = null;
+
+  /**
+   * Key of the business to which the review belongs.
+   *
+   * Empty string to defined business automatically, based on value of <tt>k_review</tt>.
+   *
+   * Although this value may be empty, this behavior is deprecated and will be removed in the future.
+   * You MUST pass key of the business always.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The review key.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_review;
+
+  /**
+   * The reply text for review.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_reply;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/ClassList/ClassListModel.php b/WellnessLiving/Wl/Schedule/ClassList/ClassListModel.php
index 1fd85a3e..48e1b04d 100644
--- a/WellnessLiving/Wl/Schedule/ClassList/ClassListModel.php
+++ b/WellnessLiving/Wl/Schedule/ClassList/ClassListModel.php
@@ -1,256 +1,256 @@
-<?php
-
-namespace WellnessLiving\Wl\Schedule\ClassList;
-
-use WellnessLiving\Core\a\ADateWeekSid;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves a list of classes and class information for a Class Tab.
- */
-class ClassListModel extends WlModelAbstract
-{
-  /**
-   * Keys are dates of the days inside requested date range, when there is at least one class in the business.
-   * If, locations are sent as a parameter, then at least one class in the given locations.
-   *
-   * Values are empty arrays for now. This is done to make possible to add some information about certain dates, if we need this.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_calendar = [];
-
-  /**
-   * The list of location keys to filter results.
-   * If it's empty, schedule for all locations will be returned.
-   * All given locations should be from the same business, which is sent in {@link ClassListModel::$k_business}.
-   *
-   * @get get
-   * @var string[]
-   */
-  public $a_location = [];
-
-  /**
-   * A list of classes sessions starting with the date {@link ClassListModel::$dt_date}
-   * and in the 62 days ahead (or up to {@link ClassListModel::$dt_end}).
-   * Every element has the following keys:
-   * <dl>
-   *   <dt>
-   *     string[] <var>a_class_tab</var>
-   *   </dt>
-   *   <dd>
-   *     Keys of class tab.
-   *   </dd>
-   *   <dt>
-   *     string[] <var>a_staff</var>
-   *   </dt>
-   *   <dd>
-   *     The list of staff keys for the staff member conducting the session.
-   *
-   *   </dd>
-   *   <dt>
-   *     string[] <var>a_virtual_location</var>
-   *   </dt>
-   *   <dd>
-   *     The list of virtual locations keys. Each value is a location key.
-   *
-   *   </dd>
-   *   <dt>
-   *     string <var>dt_date</var>
-   *   </dt>
-   *   <dd>
-   *     The date/time of the session start in UTC.
-   *   </dd>
-   *   <dt>
-   *     string <var>dt_time</var>
-   *   </dt>
-   *   <dd>
-   *     The time of the session start in the local time zone.
-   *   </dd>
-   *   <dt>
-   *     string <var>dtl_date</var>
-   *   </dt>
-   *   <dd>
-   *     The date/time of session start in the location's time zone.
-   *   </dd>
-   *   <dt>
-   *     bool <var>hide_application</var>
-   *   </dt>
-   *   <dd>
-   *      Specifies whether the class will be hidden in the White Label Achieve Client App. If `true`, it means that the
-   *      class won't be displayed. Otherwise, this will be `false` to indicate that the class will be displayed.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_day</var>
-   *   </dt>
-   *   <dd>
-   *     The day of the week when session is occurred. Constant from {@link ADateWeekSid}.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The duration of the session in minutes.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_cancel</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, this class period was canceled. Otherwise, this will be `false`.
-   *   </dd>
-   *    <dt>
-   *      bool <var>is_event</var>
-   *    </dt>
-   *    <dd>
-   *      If `true`, this is an event. Otherwise, this will be `false`.
-   *    </dd>
-   *   <dt>
-   *     bool <var>is_virtual</var>
-   *   </dt>
-   *   <dd>
-   *     If `true`, this class is virtual. Otherwise, this will be `false`.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_class</var>
-   *   </dt>
-   *   <dd>
-   *     The class key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_class_period</var>
-   *   </dt>
-   *   <dd>
-   *     The class period key.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_location</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the session's location.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title of the session.
-   *   </dd>
-   *   <dt>
-   *     string <var>url_book</var>
-   *   </dt>
-   *   <dd>
-   *     The direct link to start booking on the WellnessLiving website.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_session;
-
-  /**
-   * The list start date in UTC and in MySQL format.
-   *
-   * @get get
-   * @var string
-   */
-  public $dt_date = '';
-
-  /**
-   * The list end date in UTC and in MySQL format.
-   *
-   * @get get
-   * @var string
-   */
-  public $dt_end = '';
-
-  /**
-   * `true` means to not generate {@link ClassListModel::$a_session} result.
-   * Can be used, if you do not need full information about existing classes and result in {@link ClassListModel::$a_calendar} is enough.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_response_short = false;
-
-  /**
-   * If `true`, sessions from every class tab are returned. If `false`, use the
-   * {@link ClassListModel::$k_class_tab} value.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_tab_all = false;
-
-  /**
-   * If `true`, the list of sessions contains sessions from different time zones. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_timezone_different;
-
-  /**
-   * If `true`, there exists at least one virtual service by a specified
-   * {@link ClassListModel::$k_business} and {@link ClassListModel::$k_class_tab},
-   * Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_virtual_service;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The category tab key.
-   *
-   * This will be `null` if not set yet.
-   * This will be ignored if {@link ClassListModel::$is_tab_all} is `true`.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_class_tab = '0';
-
-  /**
-   * The list of staff members to filter.
-   * A comma seperated list of staff keys.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_staff = '';
-
-  /**
-   * If `true`, canceled sessions will be returned. If `false`, canceled sessions won't be returned.
-   *
-   * @get get
-   * @var bool
-   */
-  public $show_cancel = false;
-
-  /**
-   * If `true`, events are also returned. If `false`, only classes are returned.
-   *
-   * @get get
-   * @var bool
-   */
-  public $show_event = false;
-
-  /**
-   * The user key.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Schedule\ClassList;
+
+use WellnessLiving\Core\a\ADateWeekSid;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves a list of classes and class information for a Class Tab.
+ */
+class ClassListModel extends WlModelAbstract
+{
+  /**
+   * Keys are dates of the days inside requested date range, when there is at least one class in the business.
+   * If, locations are sent as a parameter, then at least one class in the given locations.
+   *
+   * Values are empty arrays for now. This is done to make possible to add some information about certain dates, if we need this.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_calendar = [];
+
+  /**
+   * The list of location keys to filter results.
+   * If it's empty, schedule for all locations will be returned.
+   * All given locations should be from the same business, which is sent in {@link ClassListModel::$k_business}.
+   *
+   * @get get
+   * @var string[]
+   */
+  public $a_location = [];
+
+  /**
+   * A list of classes sessions starting with the date {@link ClassListModel::$dt_date}
+   * and in the 62 days ahead (or up to {@link ClassListModel::$dt_end}).
+   * Every element has the following keys:
+   * <dl>
+   *   <dt>
+   *     string[] <var>a_class_tab</var>
+   *   </dt>
+   *   <dd>
+   *     Keys of class tab.
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_staff</var>
+   *   </dt>
+   *   <dd>
+   *     The list of staff keys for the staff member conducting the session.
+   *
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_virtual_location</var>
+   *   </dt>
+   *   <dd>
+   *     The list of virtual locations keys. Each value is a location key.
+   *
+   *   </dd>
+   *   <dt>
+   *     string <var>dt_date</var>
+   *   </dt>
+   *   <dd>
+   *     The date/time of the session start in UTC.
+   *   </dd>
+   *   <dt>
+   *     string <var>dt_time</var>
+   *   </dt>
+   *   <dd>
+   *     The time of the session start in the local time zone.
+   *   </dd>
+   *   <dt>
+   *     string <var>dtl_date</var>
+   *   </dt>
+   *   <dd>
+   *     The date/time of session start in the location's time zone.
+   *   </dd>
+   *   <dt>
+   *     bool <var>hide_application</var>
+   *   </dt>
+   *   <dd>
+   *      Specifies whether the class will be hidden in the White Label Achieve Client App. If `true`, it means that the
+   *      class won't be displayed. Otherwise, this will be `false` to indicate that the class will be displayed.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_day</var>
+   *   </dt>
+   *   <dd>
+   *     The day of the week when session is occurred. Constant from {@link ADateWeekSid}.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The duration of the session in minutes.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_cancel</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, this class period was canceled. Otherwise, this will be `false`.
+   *   </dd>
+   *    <dt>
+   *      bool <var>is_event</var>
+   *    </dt>
+   *    <dd>
+   *      If `true`, this is an event. Otherwise, this will be `false`.
+   *    </dd>
+   *   <dt>
+   *     bool <var>is_virtual</var>
+   *   </dt>
+   *   <dd>
+   *     If `true`, this class is virtual. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_class</var>
+   *   </dt>
+   *   <dd>
+   *     The class key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_class_period</var>
+   *   </dt>
+   *   <dd>
+   *     The class period key.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_location</var>
+   *   </dt>
+   *   <dd>
+   *     The key of the session's location.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_title</var>
+   *   </dt>
+   *   <dd>
+   *     The title of the session.
+   *   </dd>
+   *   <dt>
+   *     string <var>url_book</var>
+   *   </dt>
+   *   <dd>
+   *     The direct link to start booking on the WellnessLiving website.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_session;
+
+  /**
+   * The list start date in UTC and in MySQL format.
+   *
+   * @get get
+   * @var string
+   */
+  public $dt_date = '';
+
+  /**
+   * The list end date in UTC and in MySQL format.
+   *
+   * @get get
+   * @var string
+   */
+  public $dt_end = '';
+
+  /**
+   * `true` means to not generate {@link ClassListModel::$a_session} result.
+   * Can be used, if you do not need full information about existing classes and result in {@link ClassListModel::$a_calendar} is enough.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_response_short = false;
+
+  /**
+   * If `true`, sessions from every class tab are returned. If `false`, use the
+   * {@link ClassListModel::$k_class_tab} value.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_tab_all = false;
+
+  /**
+   * If `true`, the list of sessions contains sessions from different time zones. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_timezone_different;
+
+  /**
+   * If `true`, there exists at least one virtual service by a specified
+   * {@link ClassListModel::$k_business} and {@link ClassListModel::$k_class_tab},
+   * Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_virtual_service;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The category tab key.
+   *
+   * This will be `null` if not set yet.
+   * This will be ignored if {@link ClassListModel::$is_tab_all} is `true`.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_class_tab = '0';
+
+  /**
+   * The list of staff members to filter.
+   * A comma seperated list of staff keys.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_staff = '';
+
+  /**
+   * If `true`, canceled sessions will be returned. If `false`, canceled sessions won't be returned.
+   *
+   * @get get
+   * @var bool
+   */
+  public $show_cancel = false;
+
+  /**
+   * If `true`, events are also returned. If `false`, only classes are returned.
+   *
+   * @get get
+   * @var bool
+   */
+  public $show_event = false;
+
+  /**
+   * The user key.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/ClassView/ClassViewModel.php b/WellnessLiving/Wl/Schedule/ClassView/ClassViewModel.php
index 488ed6ea..1cee4069 100644
--- a/WellnessLiving/Wl/Schedule/ClassView/ClassViewModel.php
+++ b/WellnessLiving/Wl/Schedule/ClassView/ClassViewModel.php
@@ -1,235 +1,235 @@
-<?php
-
-namespace WellnessLiving\Wl\Schedule\ClassView;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Schedule\ClassList\ClassListModel;
-
-/**
- * Gets information about a specified class session.
- *
- * A class listing can be retrieved from the {@link ClassListModel} endpoint.
- */
-class ClassViewModel extends WlModelAbstract
-{
-  /**
-   * Asset list data.
-   *
-   * @get result
-   * @post result
-   * @var array[]|null
-   */
-  public $a_asset;
-
-  /**
-   * Detailed information about the class. When loaded, it contains the following fields:
-   * <dl>
-   *   <dt>array <var>a_image</var></dt>
-   *   <dd>Information describing a class image.<dl>
-   *     <dt>int <var>i_height</var></dt>
-   *     <dd>The image height.</dd>
-   *     <dt>int <var>i_width</var></dt>
-   *     <dd>The image width.</dd>
-   *     <dt>bool <var>is_empty</var></dt>
-   *     <dd>This will be `true` if there's no image and a default is used.</dd>
-   *     <dt>bool|null <var>is_own</var></dt>
-   *     <dd>This field will be `true` if the image used for the class is an image uploaded in class setup. If the image is
-   *     not uploaded in the class setup, but there is at least one image in Setup->Locations image slider,
-   *     this field will be `false`. `null` if class image is not uploaded, and there are no images in location slider,
-   *     in this case empty image is used.</dd>
-   *     <dt>string <var>s_url</var></dt>
-   *     <dd>The URL link to the image.</dd>
-   *   </dl></dd>
-   *   <dt>int[] <var>a_tag</var></dt>
-   *   <dd>A list of tags that can be used to describe the class in the catalog.</dd>
-   *   <dt>bool <var>can_book</var></dt>
-   *   <dd>Determines whether the current client can book this class.</dd>
-   *   <dt>string <var>dt_date_global</var></dt>
-   *   <dd>The session date/time in UTC.</dd>
-   *   <dt>string <var>dt_date_local</var></dt>
-   *   <dd>The start date in the local time zone.</dd>
-   *   <dt>string <var>html_deny_reason</var></dt>
-   *   <dd>The reason why the client can't book this class.
-   *     This will be set only if <var>can_book</var> is `false`.</dd>
-   *   <dt>string <var>html_description</var></dt>
-   *   <dd>The class description.</dd>
-   *   <dt>string <var>html_special</var></dt>
-   *   <dd>The special instructions.</dd>
-   *   <dt>int|null <var>i_age_from</var></dt>
-   *   <dd>The lower bound of age permitted in the class. This will be `null` there's no age limit set.</dd>
-   *   <dt>int|null <var>i_age_to</var></dt>
-   *   <dd>The upper bound of age permitted in the class. This will be `null` there's no age limit.</dd>
-   *   <dt>int <var>i_book</var></dt>
-   *   <dd>The count of booked visits.</dd>
-   *   <dt>int <var>i_capacity</var></dt>
-   *   <dd>The class capacity.</dd>
-   *   <dt>int <var>i_duration</var></dt>
-   *   <dd>The class duration in minutes.</dd>
-   *   <dt>
-   *     int <var>id_deny_reason</var>
-   *   </dt>
-   *   <dd>
-   *     ID of deny reason. One of {@link DenyReasonSid} constants.
-   *   </dd>
-   *   <dt>bool <var>is_book</var></dt>
-   *   <dd>This will be `true` if the current class was booked by the current client.</dd>
-   *   <dt>bool <var>is_cancel</var></dt>
-   *   <dd>This will be `true` if the class period was canceled. Otherwise, this will be `false`.</dd>
-   *   <dt>bool <var>is_promotion_only</var></dt>
-   *   <dd>This will be `true` if this class can only be paid for using a Purchase Option. Otherwise, this will be `false`.</dd>
-   *   <dt>bool <var>is_wait_list</var></dt>
-   *   <dd>This will be `true` if user is only on the wait list. Otherwise, this will be `false`.</dd>
-   *   <dt>bool <var>is_wait_list_enabled</var></dt>
-   *   <dd>This will be `true` if the wait list is enabled for this class. Otherwise, this will be `false`.</dd>
-   *   <dt>string <var>m_price</var></dt>
-   *   <dd>The session price.</dd>
-   *   <dt>bool <var>hide_price</var></dt>
-   *   <dd>Hide individual price of the class session, if client has applicable pricing option.</dd>
-   *   <dt>string <var>s_duration</var></dt>
-   *   <dd>The class duration in a human readable format.</dd>
-   *   <dt>string <var>s_title</var></dt>
-   *   <dd>The class name.</dd>
-   *   <dt>string <var>text_room</var></dt>
-   *   <dd>The class room.</dd>
-   * </dl>
-   *
-   * This will be `null` if data isn't loaded yet.
-   *
-   * @get result
-   * @post result
-   * @var array|null
-   */
-  public $a_class;
-
-  /**
-   * Location data.
-   *
-   * This will be `null` if data isn't loaded yet.
-   *
-   * @get result
-   * @post result
-   * @var array|null
-   */
-  public $a_location;
-
-  /**
-   * A list of sessions to get information for. Every element has the following keys:
-   * <dl>
-   *   <dt>string <var>dt_date</var></dt>
-   *   <dd>The date/time of the session in UTC.</dd>
-   *   <dt>string <var>k_class_period</var></dt>
-   *   <dd>The session key.</dd>
-   * </dl>
-   *
-   * `null` if requesting a single session.
-   *
-   * @get get
-   * @post get
-   * @var array[]|null
-   */
-  public $a_session_request = null;
-
-  /**
-   * A list of sessions with information, received in a multiple session mode.
-   * Every element has the following keys:
-   * <dl>
-   *   <dt>array <var>a_class</var></dt>
-   *   <dd>Class information.</dd>
-   *   <dt>array <var>a_location</var></dt>
-   *   <dd>Location information.</dd>
-   *   <dt>array <var>a_staff</var></dt>
-   *   <dd>Staff member information.</dd>
-   *   <dt>array <var>dt_date</var></dt>
-   *   <dd>The session date/time in UTC.</dd>
-   *   <dt>array <var>k_class_period</var></dt>
-   *   <dd>The session key.</dd>
-   * </dl>
-   *
-   * @get result
-   * @post result
-   * @var array[]
-   */
-  public $a_session_result;
-
-  /**
-   * Staff member list data.
-   *
-   * This will be `null` if data isn't loaded yet.
-   *
-   * @get result
-   * @post result
-   * @var array[]|null
-   */
-  public $a_staff;
-
-  /**
-   * A list of classes and events that clients should visit before this one.
-   *
-   * <dl>
-   *   <dt>int <var>i_count</var></dt>
-   *   <dd>The number of visits.</dd>
-   *   <dt>bool <var>is_event</var></dt>
-   *   <dd>This will be `true` if this is an event. Otherwise, this will be `false` if this is a class.</dd>
-   *   <dt>string <var>k_class</var></dt>
-   *   <dd>The key of the class or event.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>The name of the class or event.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_visits_required = [];
-
-  /**
-   * The date/time of the session.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $dt_date = '';
-
-  /**
-   * Key of the business in which the action is performed.
-   *
-   * `null` if key of the business was not passed.
-   *
-   * Key of the business is required if {@link ClassViewModel} was passed.
-   *
-   * @get get
-   * @post get
-   * @var string|null
-   */
-  public $k_business = null;
-
-  /**
-   * The class period key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_class_period = '0';
-
-  /**
-   * A list of sessions to get information for.
-   * A serialized array. See {@link ClassViewModel::$a_session_request} for the array structure.
-   * Serialization and sending by POST is necessary to send big lists.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_session_request = '';
-
-  /**
-   * The user key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Schedule\ClassView;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Schedule\ClassList\ClassListModel;
+
+/**
+ * Gets information about a specified class session.
+ *
+ * A class listing can be retrieved from the {@link ClassListModel} endpoint.
+ */
+class ClassViewModel extends WlModelAbstract
+{
+  /**
+   * Asset list data.
+   *
+   * @get result
+   * @post result
+   * @var array[]|null
+   */
+  public $a_asset;
+
+  /**
+   * Detailed information about the class. When loaded, it contains the following fields:
+   * <dl>
+   *   <dt>array <var>a_image</var></dt>
+   *   <dd>Information describing a class image.<dl>
+   *     <dt>int <var>i_height</var></dt>
+   *     <dd>The image height.</dd>
+   *     <dt>int <var>i_width</var></dt>
+   *     <dd>The image width.</dd>
+   *     <dt>bool <var>is_empty</var></dt>
+   *     <dd>This will be `true` if there's no image and a default is used.</dd>
+   *     <dt>bool|null <var>is_own</var></dt>
+   *     <dd>This field will be `true` if the image used for the class is an image uploaded in class setup. If the image is
+   *     not uploaded in the class setup, but there is at least one image in Setup->Locations image slider,
+   *     this field will be `false`. `null` if class image is not uploaded, and there are no images in location slider,
+   *     in this case empty image is used.</dd>
+   *     <dt>string <var>s_url</var></dt>
+   *     <dd>The URL link to the image.</dd>
+   *   </dl></dd>
+   *   <dt>int[] <var>a_tag</var></dt>
+   *   <dd>A list of tags that can be used to describe the class in the catalog.</dd>
+   *   <dt>bool <var>can_book</var></dt>
+   *   <dd>Determines whether the current client can book this class.</dd>
+   *   <dt>string <var>dt_date_global</var></dt>
+   *   <dd>The session date/time in UTC.</dd>
+   *   <dt>string <var>dt_date_local</var></dt>
+   *   <dd>The start date in the local time zone.</dd>
+   *   <dt>string <var>html_deny_reason</var></dt>
+   *   <dd>The reason why the client can't book this class.
+   *     This will be set only if <var>can_book</var> is `false`.</dd>
+   *   <dt>string <var>html_description</var></dt>
+   *   <dd>The class description.</dd>
+   *   <dt>string <var>html_special</var></dt>
+   *   <dd>The special instructions.</dd>
+   *   <dt>int|null <var>i_age_from</var></dt>
+   *   <dd>The lower bound of age permitted in the class. This will be `null` there's no age limit set.</dd>
+   *   <dt>int|null <var>i_age_to</var></dt>
+   *   <dd>The upper bound of age permitted in the class. This will be `null` there's no age limit.</dd>
+   *   <dt>int <var>i_book</var></dt>
+   *   <dd>The count of booked visits.</dd>
+   *   <dt>int <var>i_capacity</var></dt>
+   *   <dd>The class capacity.</dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>The class duration in minutes.</dd>
+   *   <dt>
+   *     int <var>id_deny_reason</var>
+   *   </dt>
+   *   <dd>
+   *     ID of deny reason. One of {@link DenyReasonSid} constants.
+   *   </dd>
+   *   <dt>bool <var>is_book</var></dt>
+   *   <dd>This will be `true` if the current class was booked by the current client.</dd>
+   *   <dt>bool <var>is_cancel</var></dt>
+   *   <dd>This will be `true` if the class period was canceled. Otherwise, this will be `false`.</dd>
+   *   <dt>bool <var>is_promotion_only</var></dt>
+   *   <dd>This will be `true` if this class can only be paid for using a Purchase Option. Otherwise, this will be `false`.</dd>
+   *   <dt>bool <var>is_wait_list</var></dt>
+   *   <dd>This will be `true` if user is only on the wait list. Otherwise, this will be `false`.</dd>
+   *   <dt>bool <var>is_wait_list_enabled</var></dt>
+   *   <dd>This will be `true` if the wait list is enabled for this class. Otherwise, this will be `false`.</dd>
+   *   <dt>string <var>m_price</var></dt>
+   *   <dd>The session price.</dd>
+   *   <dt>bool <var>hide_price</var></dt>
+   *   <dd>Hide individual price of the class session, if client has applicable pricing option.</dd>
+   *   <dt>string <var>s_duration</var></dt>
+   *   <dd>The class duration in a human readable format.</dd>
+   *   <dt>string <var>s_title</var></dt>
+   *   <dd>The class name.</dd>
+   *   <dt>string <var>text_room</var></dt>
+   *   <dd>The class room.</dd>
+   * </dl>
+   *
+   * This will be `null` if data isn't loaded yet.
+   *
+   * @get result
+   * @post result
+   * @var array|null
+   */
+  public $a_class;
+
+  /**
+   * Location data.
+   *
+   * This will be `null` if data isn't loaded yet.
+   *
+   * @get result
+   * @post result
+   * @var array|null
+   */
+  public $a_location;
+
+  /**
+   * A list of sessions to get information for. Every element has the following keys:
+   * <dl>
+   *   <dt>string <var>dt_date</var></dt>
+   *   <dd>The date/time of the session in UTC.</dd>
+   *   <dt>string <var>k_class_period</var></dt>
+   *   <dd>The session key.</dd>
+   * </dl>
+   *
+   * `null` if requesting a single session.
+   *
+   * @get get
+   * @post get
+   * @var array[]|null
+   */
+  public $a_session_request = null;
+
+  /**
+   * A list of sessions with information, received in a multiple session mode.
+   * Every element has the following keys:
+   * <dl>
+   *   <dt>array <var>a_class</var></dt>
+   *   <dd>Class information.</dd>
+   *   <dt>array <var>a_location</var></dt>
+   *   <dd>Location information.</dd>
+   *   <dt>array <var>a_staff</var></dt>
+   *   <dd>Staff member information.</dd>
+   *   <dt>array <var>dt_date</var></dt>
+   *   <dd>The session date/time in UTC.</dd>
+   *   <dt>array <var>k_class_period</var></dt>
+   *   <dd>The session key.</dd>
+   * </dl>
+   *
+   * @get result
+   * @post result
+   * @var array[]
+   */
+  public $a_session_result;
+
+  /**
+   * Staff member list data.
+   *
+   * This will be `null` if data isn't loaded yet.
+   *
+   * @get result
+   * @post result
+   * @var array[]|null
+   */
+  public $a_staff;
+
+  /**
+   * A list of classes and events that clients should visit before this one.
+   *
+   * <dl>
+   *   <dt>int <var>i_count</var></dt>
+   *   <dd>The number of visits.</dd>
+   *   <dt>bool <var>is_event</var></dt>
+   *   <dd>This will be `true` if this is an event. Otherwise, this will be `false` if this is a class.</dd>
+   *   <dt>string <var>k_class</var></dt>
+   *   <dd>The key of the class or event.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>The name of the class or event.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_visits_required = [];
+
+  /**
+   * The date/time of the session.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $dt_date = '';
+
+  /**
+   * Key of the business in which the action is performed.
+   *
+   * `null` if key of the business was not passed.
+   *
+   * Key of the business is required if {@link ClassViewModel} was passed.
+   *
+   * @get get
+   * @post get
+   * @var string|null
+   */
+  public $k_business = null;
+
+  /**
+   * The class period key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * A list of sessions to get information for.
+   * A serialized array. See {@link ClassViewModel::$a_session_request} for the array structure.
+   * Serialization and sending by POST is necessary to send big lists.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_session_request = '';
+
+  /**
+   * The user key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php b/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
index c82e0fc3..474c79e0 100644
--- a/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
+++ b/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
@@ -1,118 +1,118 @@
-<?php
-
-namespace WellnessLiving\Wl\Schedule\ClassView;
-
-/**
- * Reasons why the client can't book this class.
- *
- * Last used ID: 21
- */
-class DenyReasonSid
-{
-  /**
-   * The business can not take one more client.
-   */
-  const ACCESS_DENIED = 1;
-
-  /**
-   * Access is limited.
-   */
-  const ACCESS_LIMITED = 2;
-
-  /**
-   * The business can not take one more client.
-   */
-  const ACCOUNT_LIMIT = 3;
-
-  /**
-   * Class is not available for certain age.
-   */
-  const AGE_RESTRICTION = 4;
-
-  /**
-   * Liability Release needs to be agreed.
-   */
-  const AGREE_NX = 5;
-
-  /**
-   * Client is already booked for this session.
-   */
-  const BOOKED_ALREADY = 6;
-
-  /**
-   * It's too early to book a class.
-   */
-  const BOOK_EARLY = 7;
-
-  /**
-   * It's too late to book a class.
-   */
-  const BOOK_LATE = 8;
-
-  /**
-   * Cannot book to this class anymore.
-   */
-  const BOOK_RESTRICT = 9;
-
-  /**
-   * Business is inactive.
-   */
-  const BUSINESS_INACTIVE = 10;
-
-  /**
-   * Class is canceled.
-   */
-  const CLASS_CANCELED = 11;
-
-  /**
-   * Class is full.
-   */
-  const CLASS_FULL = 14;
-
-  /**
-   * Class does not exist anymore.
-   */
-  const CLASS_NOT_AVAILABLE_ANYMORE = 15;
-
-  /**
-   * Client is flagged at location.
-   */
-  const CLIENT_FLAGGED = 12;
-
-  /**
-   * Credit card is required for booking services.
-   */
-  const CREDIT_CARD_REQUIRE = 13;
-
-  /**
-   * Business is closed.
-   */
-  const HOLIDAY = 16;
-
-  /**
-   * Login is required.
-   */
-  const LOGIN_REQUIRED = 17;
-
-  /**
-   * Online booking is disabled for the class.
-   */
-  const NOT_BOOKABLE = 18;
-
-  /**
-   * Required personal details missing.
-   */
-  const USER_INFO_MISSING = 19;
-
-  /**
-   * Visit to another class is required first.
-   */
-  const VISIT_BEFORE = 20;
-
-  /**
-   * The wait list is full.
-   */
-  const WAIT_LIST_LIMIT_MAX = 21;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Schedule\ClassView;
+
+/**
+ * Reasons why the client can't book this class.
+ *
+ * Last used ID: 21
+ */
+class DenyReasonSid
+{
+  /**
+   * The business can not take one more client.
+   */
+  const ACCESS_DENIED = 1;
+
+  /**
+   * Access is limited.
+   */
+  const ACCESS_LIMITED = 2;
+
+  /**
+   * The business can not take one more client.
+   */
+  const ACCOUNT_LIMIT = 3;
+
+  /**
+   * Class is not available for certain age.
+   */
+  const AGE_RESTRICTION = 4;
+
+  /**
+   * Liability Release needs to be agreed.
+   */
+  const AGREE_NX = 5;
+
+  /**
+   * Client is already booked for this session.
+   */
+  const BOOKED_ALREADY = 6;
+
+  /**
+   * It's too early to book a class.
+   */
+  const BOOK_EARLY = 7;
+
+  /**
+   * It's too late to book a class.
+   */
+  const BOOK_LATE = 8;
+
+  /**
+   * Cannot book to this class anymore.
+   */
+  const BOOK_RESTRICT = 9;
+
+  /**
+   * Business is inactive.
+   */
+  const BUSINESS_INACTIVE = 10;
+
+  /**
+   * Class is canceled.
+   */
+  const CLASS_CANCELED = 11;
+
+  /**
+   * Class is full.
+   */
+  const CLASS_FULL = 14;
+
+  /**
+   * Class does not exist anymore.
+   */
+  const CLASS_NOT_AVAILABLE_ANYMORE = 15;
+
+  /**
+   * Client is flagged at location.
+   */
+  const CLIENT_FLAGGED = 12;
+
+  /**
+   * Credit card is required for booking services.
+   */
+  const CREDIT_CARD_REQUIRE = 13;
+
+  /**
+   * Business is closed.
+   */
+  const HOLIDAY = 16;
+
+  /**
+   * Login is required.
+   */
+  const LOGIN_REQUIRED = 17;
+
+  /**
+   * Online booking is disabled for the class.
+   */
+  const NOT_BOOKABLE = 18;
+
+  /**
+   * Required personal details missing.
+   */
+  const USER_INFO_MISSING = 19;
+
+  /**
+   * Visit to another class is required first.
+   */
+  const VISIT_BEFORE = 20;
+
+  /**
+   * The wait list is full.
+   */
+  const WAIT_LIST_LIMIT_MAX = 21;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/Design/OptionSid.php b/WellnessLiving/Wl/Schedule/Design/OptionSid.php
index ef01440d..7102300b 100644
--- a/WellnessLiving/Wl/Schedule/Design/OptionSid.php
+++ b/WellnessLiving/Wl/Schedule/Design/OptionSid.php
@@ -1,28 +1,28 @@
-<?php
-
-namespace WellnessLiving\Wl\Schedule\Design;
-
-/**
- * Appointment display option.
- *
- * Last used ID: 3
- */
-class OptionSid
-{
-  /**
-   * Appointment name in header.
-   */
-  const APPOINTMENT_NAME = 1;
-
-  /**
-   * Client name in header.
-   */
-  const CLIENT_NAME = 3;
-
-  /**
-   * Staff name in header.
-   */
-  const STAFF_NAME = 2;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Schedule\Design;
+
+/**
+ * Appointment display option.
+ *
+ * Last used ID: 3
+ */
+class OptionSid
+{
+  /**
+   * Appointment name in header.
+   */
+  const APPOINTMENT_NAME = 1;
+
+  /**
+   * Client name in header.
+   */
+  const CLIENT_NAME = 3;
+
+  /**
+   * Staff name in header.
+   */
+  const STAFF_NAME = 2;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/Page/PageElementModel.php b/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
index 18bd6275..f4cc0379 100644
--- a/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
+++ b/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
@@ -1,362 +1,362 @@
-<?php
-
-namespace WellnessLiving\Wl\Schedule\Page;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Virtual\VirtualProviderSid;
-use WellnessLiving\Wl\Visit\WlVisitSid;
-
-/**
- * Returns information about a specified visit.
- */
-class PageElementModel extends WlModelAbstract
-{
-  /**
-   * Additional visit information about this appointment. Empty array if it's not an appointment. <dl>
-   *   <dt>
-   *     int <var>id_visit</var>
-   *   </dt>
-   *   <dd>
-   *     Visit status. One of {@link WlVisitSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_confirmed</var>
-   *   </dt>
-   *   <dd>
-   *     `true` means that appointment was requested and confirmed by the staff.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_deny</var>
-   *   </dt>
-   *   <dd>
-   *     `true` means that appointment was requested and denied by the staff.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_notify_request_accept</var>
-   *   </dt>
-   *   <dd>
-   *     `true` means that the client will receive a notification, if appointment will be confirmed by the staff.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_notify_request_deny</var>
-   *   </dt>
-   *   <dd>
-   *     `true` means that the client will receive a notification, if appointment will be denied by the staff.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_request</var>
-   *   </dt>
-   *   <dd>
-   *     `true` means that appointment was requested, but not confirmed by the staff.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_appointment_visit_info = [];
-
-  /**
-   * List of assets: <dl>
-   *   <dt>string <var>s_name</var></dt>
-   *   <dd>Asset title that consists of the asset title itself concatenated with its index (in case of multiple assets) by '#'.</dd>
-   *   <dt>string <var>i_count</var></dt>
-   *   <dd>Number of sessions.</dd>
-   * </dl>.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_asset;
-
-  /**
-   * Class data:<dl>
-   *   <dt>int <var>i_book_active</var></dt>
-   *   <dd>A total number of booked visits in the class, including all lists: active and waitlist.</dd>
-   *   <dt>int <var>i_capacity</var></dt>
-   *   <dd>Class capacity.</dd>
-   *   <dt>int <var>i_wait</var></dt>
-   *   <dd>A total number of booked visits in the waitlist.</dd>
-   * </dl>
-   *
-   * <tt>null</tt> if it isn't class visit.
-   *
-   * @get result
-   * @var array|null
-   */
-  public $a_class_info;
-
-  /**
-   * A list of staff members involved in the visit.
-   * Each element is an array with the following elements:
-   * <dl>
-   *   <dt>
-   *     string <var>k_staff</var>
-   *   </dt>
-   *   <dd>
-   *     The staff member key.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_family</var>
-   *   </dt>
-   *   <dd>
-   *     The surname of the staff member.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_name</var>
-   *   </dt>
-   *   <dd>
-   *     The first name of the staff member.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_staff;
-
-  /**
-   * The latest date and time for when the visit can be canceled without penalty.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_cancel;
-
-  /**
-   * The date and time of the visit in UTC.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_date_global;
-
-  /**
-   * The date and time of the visit in the local time zone.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_date_local;
-
-  /**
-   * Session date/time in timezone of the location where it takes place.
-   *
-   * @get result
-   * @var string
-   */
-  public $dtl_location;
-
-  /**
-   * The description of the service.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_description;
-
-  /**
-   * The special instructions for the service.
-   *
-   * @get result
-   * @var string
-   */
-  public $html_special;
-
-  /**
-   * The scheduled duration of the visit.
-   * <tt>0</tt> means that session duration is hidden.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_duration;
-
-  /**
-   * Estimated place of reservation on the waiting list.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_wait_spot;
-
-  /**
-   * The note type ID. This will be set to `null` if notes aren't allowed.
-   * This is one of the {@link WlVisitNoteSid} constants.
-   *
-   * This will be `null` if notes aren't allowed.
-   *
-   * @get result
-   * @var int|null
-   */
-  public $id_note;
-
-  /**
-   * The virtual provider ID. One of the {@link VirtualProviderSid} constants.
-   *
-   * This will be `null` for non-virtual services.
-   *
-   * @get result
-   * @var int|null
-   */
-  public $id_virtual_provider;
-
-  /**
-   * The visit type ID. One of the {@link WlVisitSid} constants.
-   *
-   * This will be `null` if not loaded yet.
-   *
-   * @get result
-   * @var int
-   */
-  public $id_visit;
-
-  /**
-   * If `true`, then this visit is ready to be checked in. If `false`, then this visit can't be checked in.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_checkin;
-
-  /**
-   * This will be `true` if clients can cancel the session. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_enable_client_cancel;
-
-  /**
-   * If `true`, then this visit is a part of a larger event. If `false`, then this visit is an individual session.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_event;
-
-  /**
-   * <tt>true</tt> - service is in progress; <tt>false</tt> - otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_in_progress;
-
-  /**
-   * <tt>true</tt> - service is virtual; <tt>false</tt> - otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_virtual;
-
-  /**
-   * The appointment key.
-   * This will be set only if the visit is an appointment. If the visit is a class or event, this will be `null`.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_appointment;
-
-  /**
-   * Key of the business to which the visit belongs.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The class key. This will be set only if the visit is a class or an event.
-   * If the visit is an appointment, this will be `null`.
-   *
-   * @get result
-   * @var ?string
-   */
-  public $k_class;
-
-  /**
-   * The class period key. This will be set only if the visit is a class or an event.
-   * If the visit is an appointment, this will be `null`.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_class_period;
-
-  /**
-   * The location key.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_location;
-
-  /**
-   * Session key.
-   *
-   * @get result
-   * @var ?string
-   */
-  public $k_service;
-
-  /**
-   * Visit key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_visit = '0';
-
-  /**
-   * The name of class or service.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_title;
-
-  /**
-   * Location title.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_location;
-
-  /**
-   * Room where session takes place.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_room;
-
-  /**
-   * Timezone abbreviation.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_timezone;
-
-  /**
-   * The user key.
-   *
-   * @get result
-   * @var string
-   */
-  public $uid;
-
-  /**
-   * Url to wait page is the beginning of an online service.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_virtual_join;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Schedule\Page;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Virtual\VirtualProviderSid;
+use WellnessLiving\Wl\Visit\WlVisitSid;
+
+/**
+ * Returns information about a specified visit.
+ */
+class PageElementModel extends WlModelAbstract
+{
+  /**
+   * Additional visit information about this appointment. Empty array if it's not an appointment. <dl>
+   *   <dt>
+   *     int <var>id_visit</var>
+   *   </dt>
+   *   <dd>
+   *     Visit status. One of {@link WlVisitSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_confirmed</var>
+   *   </dt>
+   *   <dd>
+   *     `true` means that appointment was requested and confirmed by the staff.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_deny</var>
+   *   </dt>
+   *   <dd>
+   *     `true` means that appointment was requested and denied by the staff.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_notify_request_accept</var>
+   *   </dt>
+   *   <dd>
+   *     `true` means that the client will receive a notification, if appointment will be confirmed by the staff.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_notify_request_deny</var>
+   *   </dt>
+   *   <dd>
+   *     `true` means that the client will receive a notification, if appointment will be denied by the staff.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_request</var>
+   *   </dt>
+   *   <dd>
+   *     `true` means that appointment was requested, but not confirmed by the staff.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_appointment_visit_info = [];
+
+  /**
+   * List of assets: <dl>
+   *   <dt>string <var>s_name</var></dt>
+   *   <dd>Asset title that consists of the asset title itself concatenated with its index (in case of multiple assets) by '#'.</dd>
+   *   <dt>string <var>i_count</var></dt>
+   *   <dd>Number of sessions.</dd>
+   * </dl>.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_asset;
+
+  /**
+   * Class data:<dl>
+   *   <dt>int <var>i_book_active</var></dt>
+   *   <dd>A total number of booked visits in the class, including all lists: active and waitlist.</dd>
+   *   <dt>int <var>i_capacity</var></dt>
+   *   <dd>Class capacity.</dd>
+   *   <dt>int <var>i_wait</var></dt>
+   *   <dd>A total number of booked visits in the waitlist.</dd>
+   * </dl>
+   *
+   * <tt>null</tt> if it isn't class visit.
+   *
+   * @get result
+   * @var array|null
+   */
+  public $a_class_info;
+
+  /**
+   * A list of staff members involved in the visit.
+   * Each element is an array with the following elements:
+   * <dl>
+   *   <dt>
+   *     string <var>k_staff</var>
+   *   </dt>
+   *   <dd>
+   *     The staff member key.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_family</var>
+   *   </dt>
+   *   <dd>
+   *     The surname of the staff member.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_name</var>
+   *   </dt>
+   *   <dd>
+   *     The first name of the staff member.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_staff;
+
+  /**
+   * The latest date and time for when the visit can be canceled without penalty.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_cancel;
+
+  /**
+   * The date and time of the visit in UTC.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_date_global;
+
+  /**
+   * The date and time of the visit in the local time zone.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_date_local;
+
+  /**
+   * Session date/time in timezone of the location where it takes place.
+   *
+   * @get result
+   * @var string
+   */
+  public $dtl_location;
+
+  /**
+   * The description of the service.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_description;
+
+  /**
+   * The special instructions for the service.
+   *
+   * @get result
+   * @var string
+   */
+  public $html_special;
+
+  /**
+   * The scheduled duration of the visit.
+   * <tt>0</tt> means that session duration is hidden.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_duration;
+
+  /**
+   * Estimated place of reservation on the waiting list.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_wait_spot;
+
+  /**
+   * The note type ID. This will be set to `null` if notes aren't allowed.
+   * This is one of the {@link WlVisitNoteSid} constants.
+   *
+   * This will be `null` if notes aren't allowed.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $id_note;
+
+  /**
+   * The virtual provider ID. One of the {@link VirtualProviderSid} constants.
+   *
+   * This will be `null` for non-virtual services.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $id_virtual_provider;
+
+  /**
+   * The visit type ID. One of the {@link WlVisitSid} constants.
+   *
+   * This will be `null` if not loaded yet.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_visit;
+
+  /**
+   * If `true`, then this visit is ready to be checked in. If `false`, then this visit can't be checked in.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_checkin;
+
+  /**
+   * This will be `true` if clients can cancel the session. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_enable_client_cancel;
+
+  /**
+   * If `true`, then this visit is a part of a larger event. If `false`, then this visit is an individual session.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_event;
+
+  /**
+   * <tt>true</tt> - service is in progress; <tt>false</tt> - otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_in_progress;
+
+  /**
+   * <tt>true</tt> - service is virtual; <tt>false</tt> - otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_virtual;
+
+  /**
+   * The appointment key.
+   * This will be set only if the visit is an appointment. If the visit is a class or event, this will be `null`.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_appointment;
+
+  /**
+   * Key of the business to which the visit belongs.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The class key. This will be set only if the visit is a class or an event.
+   * If the visit is an appointment, this will be `null`.
+   *
+   * @get result
+   * @var ?string
+   */
+  public $k_class;
+
+  /**
+   * The class period key. This will be set only if the visit is a class or an event.
+   * If the visit is an appointment, this will be `null`.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_class_period;
+
+  /**
+   * The location key.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_location;
+
+  /**
+   * Session key.
+   *
+   * @get result
+   * @var ?string
+   */
+  public $k_service;
+
+  /**
+   * Visit key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_visit = '0';
+
+  /**
+   * The name of class or service.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_title;
+
+  /**
+   * Location title.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_location;
+
+  /**
+   * Room where session takes place.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_room;
+
+  /**
+   * Timezone abbreviation.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_timezone;
+
+  /**
+   * The user key.
+   *
+   * @get result
+   * @var string
+   */
+  public $uid;
+
+  /**
+   * Url to wait page is the beginning of an online service.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_virtual_join;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
index b72b1b84..463f06b2 100644
--- a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
+++ b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
@@ -1,379 +1,379 @@
-<?php
-
-namespace WellnessLiving\Wl\Schedule\ScheduleList\StaffApp;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Schedule\Design\OptionSid;
-use WellnessLiving\Wl\Visit\WlVisitSid;
-use WellnessLiving\Wl\WlServiceSid;
-
-/**
- * An endpoint that returns information about a business schedule for a specified date.
- * Version of {@link ScheduleListModel} for access validation by security token.
- */
-class ScheduleListByTokenModel extends WlModelAbstract
-{
-  /**
-   * The sessions present on the business schedule. These are sorted chronologically in ascending order.
-   * Every element has the following keys:
-   *
-   * <dl>
-   *   <dt>
-   *     string[] <var>a_note</var>
-   *   </dt>
-   *   <dd>
-   *     List of notes.
-   *   </dd>
-   *   <dt>
-   *     array <var>a_appointment_visit_info</var>
-   *   </dt>
-   *   <dd>
-   *     Additional visit information about this appointment. Empty array if it's a class.
-   *     <dl>
-   *       <dt>
-   *         int <var>id_visit</var>
-   *       </dt>
-   *       <dd>
-   *         Visit id. One of {@link WlVisitSid} constants.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_confirmed</var>
-   *       </dt>
-   *       <dd>
-   *         `true` means that appointment was requested and confirmed by the staff.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_deny</var>
-   *       </dt>
-   *       <dd>
-   *         `true` means that appointment was requested and denied by the staff.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_notify_request_accept</var>
-   *       </dt>
-   *       <dd>
-   *         `true` means that the client will receive a notification, if appointment will be confirmed by the staff.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_notify_request_deny</var>
-   *       </dt>
-   *       <dd>
-   *         `true` means that the client will receive a notification, if appointment will be denied by the staff.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_request</var>
-   *       </dt>
-   *       <dd>
-   *         `true` means that appointment was requested, but not confirmed by the staff.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string[] <var>a_resource</var>
-   *   </dt>
-   *   <dd>
-   *     A list of assets involved in the session.
-   *
-   *   </dd>
-   *   <dt>
-   *     string[] <var>a_staff</var>
-   *   </dt>
-   *   <dd>
-   *     A list of staff members who will conduct the session.
-   *
-   *     Deprecated, use <var>a_staff_list</var> instead.
-   *   </dd>
-   *   <dt>
-   *     array <var>a_staff_info</var>
-   *   </dt>
-   *   <dd>
-   *     Information about staff members who conduct this session.
-   *     Values are array with data:
-   *     <dl>
-   *       <dt>
-   *         string <var>text_staff</var>
-   *       </dt>
-   *       <dd>
-   *         Staff full name.
-   *       </dd>
-   *       <dt>
-   *         bool <var>is_staff_change</var>
-   *       </dt>
-   *       <dd>
-   *         <tt>true</tt> means staff is substituted, <tt>false</tt> simple staff member.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_staff</var>
-   *       </dt>
-   *       <dd>
-   *         Staff key.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string[] <var>a_user</var>
-   *   </dt>
-   *   <dd>
-   *     For appointments, this is a list of the names of users who are scheduled to attend the session.
-   *   </dd>
-   *   <dt>
-   *     string[] <var>a_virtual_location</var>
-   *   </dt>
-   *   <dd>
-   *     List of virtual locations.
-   *   </dd>
-   *   <dt>
-   *     string <var>dt_date</var>
-   *   </dt>
-   *   <dd>
-   *     The date/time of the session in UTC.
-   *   </dd>
-   *   <dt>
-   *     string <var>dt_date_cancel</var>
-   *   </dt>
-   *   <dd>
-   *     The date/time when the session was canceled in UTC. Only used for appointments.
-   *   </dd>
-   *   <dt>
-   *     string <var>dt_date_local</var>
-   *   </dt>
-   *   <dd>
-   *     The date/time of the session in local time.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_book</var>
-   *   </dt>
-   *   <dd>
-   *     The number of clients booked into the session.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_capacity</var>
-   *   </dt>
-   *   <dd>
-   *     The maximum capacity of the session.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_duration</var>
-   *   </dt>
-   *   <dd>
-   *     The duration of the session in minutes.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_padding_after</var>
-   *   </dt>
-   *   <dd>
-   *     The padding time after the session in minutes. Only used for appointments.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_padding_before</var>
-   *   </dt>
-   *   <dd>
-   *     The padding time before the session in minutes. Only used for appointments.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_start</var>
-   *   </dt>
-   *   <dd>
-   *     The start time in minutes after midnight.
-   *     For example, a class starting at 10:30 in the morning local time will have an `i_start` value of 630.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_wait</var>
-   *   </dt>
-   *   <dd>
-   *     Count clients on waitlist.
-   *   </dd>
-   *   <dt>
-   *      int <var>id_option</var>
-   *    </dt>
-   *    <dd>
-   *      Appointment title display style.
-   *      Set only for appointments, for others it will be equal to 0.
-   *      Constants from {@link OptionSid}.
-   *    </dd>
-   *   <dt>
-   *     int <var>id_service</var>
-   *   </dt>
-   *   <dd>
-   *     The ID of the service type. One of {@link WlServiceSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_arrive</var>
-   *   </dt>
-   *   <dd>
-   *     For appointments: <tt>true</tt> if user has checked-in; <tt>false</tt> otherwise.
-   *     For classes always <tt>null</tt>.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_pay</var>
-   *   </dt>
-   *   <dd>
-   *     For appointments: <tt>true</tt> if appointment is paid; <tt>false</tt> otherwise.
-   *     For classes always <tt>null</tt>.
-   *   </dd>
-   *   <dt>
-   *     bool <var>is_repeat</var>
-   *   </dt>
-   *   <dd>
-   *     For appointments: <tt>true</tt> if appointment is recurring; <tt>false</tt> otherwise.
-   *     For classes always <tt>null</tt>.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_appointment</var>
-   *   </dt>
-   *   <dd>
-   *     The appointment key.
-   *     If the session isn't an appointment, this will be `0`.
-   *   </dd>
-   *   <dt>
-   *     string <var>dt_confirm</var>
-   *   </dt>
-   *   <dd>
-   *     Confirmation date for appointment in MySQL format. Will be zero date + time in case appointment
-   *     is not yet confirmed by client.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_class</var>
-   *   </dt>
-   *   <dd>
-   *     The class key.
-   *     If the session isn't a class, this will be `0`.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_class_period</var>
-   *   </dt>
-   *   <dd>
-   *     The class period key.
-   *     If the session isn't a class, this will be `0`.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_location</var>
-   *   </dt>
-   *   <dd>
-   *     The location key for where the session takes place.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_service</var>
-   *   </dt>
-   *   <dd>
-   *     This is the key of the appointment type, while `k_appointment` is the specific instance.
-   *
-   *     For other cases, this will be `0`.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_title</var>
-   *   </dt>
-   *   <dd>
-   *     The name of the session.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_alert</var>
-   *   </dt>
-   *   <dd>
-   *     Alert message.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_color_background</var>
-   *   </dt>
-   *   <dd>
-   *     The background color in hex representation as used on WellnessLiving.
-   *   </dd>
-   *   <dt>
-   *     string <var>text_color_border</var>
-   *   </dt>
-   *   <dd>
-   *     The border color in hex representation as used on WellnessLiving.
-   *   </dd>
-   *   <dt>
-   *     bool<var>is_virtual_service</var>
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - If the business has at least one virtual service, <tt>false</tt> - otherwise.
-   *   </dd>
-   *   <dt>
-   *     string<var>url_image</var>
-   *   </dt>
-   *   <dd>
-   *     URL to image. Empty if image not exist.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_schedule;
-
-  /**
-   * The end date of the range from which the list of schedule sessions should be retrieved.
-   *
-   * This will be `null` if the range has no end date. If this value is used,
-   * {@link ScheduleListModel::$dt_date} should not be set.
-   *
-   * @get get
-   * @var string
-   */
-  public $dl_end = null;
-
-  /**
-   * The start date of the range from which the list of scheduled sessions should be retrieved.
-   *
-   * This will be `null` if the range has no start date. If this value is used,
-   * {@link ScheduleListModel::$dt_date} should not be set.
-   *
-   * @get get
-   * @var string
-   */
-  public $dl_start = null;
-
-  /**
-   * The date of the sessions in Coordinated Universal Time (UTC) and MySQL format.
-   *
-   * If this value is used, then
-   * {@link ScheduleListModel::$dl_end} and
-   * {@link ScheduleListModel::$dl_start} should not be set.
-   *
-   * @get get
-   * @var string
-   */
-  public $dt_date = '';
-
-  /**
-   * <tt>true</tt> - If the business has at least one virtual service, <tt>false</tt> - otherwise.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_virtual_service = null;
-
-  /**
-   * Business key.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $k_business = null;
-
-  /**
-   * The security token.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_token = '';
-
-  /**
-   * User key.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $uid = null;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Schedule\ScheduleList\StaffApp;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Schedule\Design\OptionSid;
+use WellnessLiving\Wl\Visit\WlVisitSid;
+use WellnessLiving\Wl\WlServiceSid;
+
+/**
+ * An endpoint that returns information about a business schedule for a specified date.
+ * Version of {@link ScheduleListModel} for access validation by security token.
+ */
+class ScheduleListByTokenModel extends WlModelAbstract
+{
+  /**
+   * The sessions present on the business schedule. These are sorted chronologically in ascending order.
+   * Every element has the following keys:
+   *
+   * <dl>
+   *   <dt>
+   *     string[] <var>a_note</var>
+   *   </dt>
+   *   <dd>
+   *     List of notes.
+   *   </dd>
+   *   <dt>
+   *     array <var>a_appointment_visit_info</var>
+   *   </dt>
+   *   <dd>
+   *     Additional visit information about this appointment. Empty array if it's a class.
+   *     <dl>
+   *       <dt>
+   *         int <var>id_visit</var>
+   *       </dt>
+   *       <dd>
+   *         Visit id. One of {@link WlVisitSid} constants.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_confirmed</var>
+   *       </dt>
+   *       <dd>
+   *         `true` means that appointment was requested and confirmed by the staff.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_deny</var>
+   *       </dt>
+   *       <dd>
+   *         `true` means that appointment was requested and denied by the staff.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_notify_request_accept</var>
+   *       </dt>
+   *       <dd>
+   *         `true` means that the client will receive a notification, if appointment will be confirmed by the staff.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_notify_request_deny</var>
+   *       </dt>
+   *       <dd>
+   *         `true` means that the client will receive a notification, if appointment will be denied by the staff.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_request</var>
+   *       </dt>
+   *       <dd>
+   *         `true` means that appointment was requested, but not confirmed by the staff.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_resource</var>
+   *   </dt>
+   *   <dd>
+   *     A list of assets involved in the session.
+   *
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_staff</var>
+   *   </dt>
+   *   <dd>
+   *     A list of staff members who will conduct the session.
+   *
+   *     Deprecated, use <var>a_staff_list</var> instead.
+   *   </dd>
+   *   <dt>
+   *     array <var>a_staff_info</var>
+   *   </dt>
+   *   <dd>
+   *     Information about staff members who conduct this session.
+   *     Values are array with data:
+   *     <dl>
+   *       <dt>
+   *         string <var>text_staff</var>
+   *       </dt>
+   *       <dd>
+   *         Staff full name.
+   *       </dd>
+   *       <dt>
+   *         bool <var>is_staff_change</var>
+   *       </dt>
+   *       <dd>
+   *         <tt>true</tt> means staff is substituted, <tt>false</tt> simple staff member.
+   *       </dd>
+   *       <dt>
+   *         string <var>k_staff</var>
+   *       </dt>
+   *       <dd>
+   *         Staff key.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_user</var>
+   *   </dt>
+   *   <dd>
+   *     For appointments, this is a list of the names of users who are scheduled to attend the session.
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_virtual_location</var>
+   *   </dt>
+   *   <dd>
+   *     List of virtual locations.
+   *   </dd>
+   *   <dt>
+   *     string <var>dt_date</var>
+   *   </dt>
+   *   <dd>
+   *     The date/time of the session in UTC.
+   *   </dd>
+   *   <dt>
+   *     string <var>dt_date_cancel</var>
+   *   </dt>
+   *   <dd>
+   *     The date/time when the session was canceled in UTC. Only used for appointments.
+   *   </dd>
+   *   <dt>
+   *     string <var>dt_date_local</var>
+   *   </dt>
+   *   <dd>
+   *     The date/time of the session in local time.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_book</var>
+   *   </dt>
+   *   <dd>
+   *     The number of clients booked into the session.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_capacity</var>
+   *   </dt>
+   *   <dd>
+   *     The maximum capacity of the session.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_duration</var>
+   *   </dt>
+   *   <dd>
+   *     The duration of the session in minutes.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_padding_after</var>
+   *   </dt>
+   *   <dd>
+   *     The padding time after the session in minutes. Only used for appointments.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_padding_before</var>
+   *   </dt>
+   *   <dd>
+   *     The padding time before the session in minutes. Only used for appointments.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_start</var>
+   *   </dt>
+   *   <dd>
+   *     The start time in minutes after midnight.
+   *     For example, a class starting at 10:30 in the morning local time will have an `i_start` value of 630.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_wait</var>
+   *   </dt>
+   *   <dd>
+   *     Count clients on waitlist.
+   *   </dd>
+   *   <dt>
+   *      int <var>id_option</var>
+   *    </dt>
+   *    <dd>
+   *      Appointment title display style.
+   *      Set only for appointments, for others it will be equal to 0.
+   *      Constants from {@link OptionSid}.
+   *    </dd>
+   *   <dt>
+   *     int <var>id_service</var>
+   *   </dt>
+   *   <dd>
+   *     The ID of the service type. One of {@link WlServiceSid} constants.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_arrive</var>
+   *   </dt>
+   *   <dd>
+   *     For appointments: <tt>true</tt> if user has checked-in; <tt>false</tt> otherwise.
+   *     For classes always <tt>null</tt>.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_pay</var>
+   *   </dt>
+   *   <dd>
+   *     For appointments: <tt>true</tt> if appointment is paid; <tt>false</tt> otherwise.
+   *     For classes always <tt>null</tt>.
+   *   </dd>
+   *   <dt>
+   *     bool <var>is_repeat</var>
+   *   </dt>
+   *   <dd>
+   *     For appointments: <tt>true</tt> if appointment is recurring; <tt>false</tt> otherwise.
+   *     For classes always <tt>null</tt>.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_appointment</var>
+   *   </dt>
+   *   <dd>
+   *     The appointment key.
+   *     If the session isn't an appointment, this will be `0`.
+   *   </dd>
+   *   <dt>
+   *     string <var>dt_confirm</var>
+   *   </dt>
+   *   <dd>
+   *     Confirmation date for appointment in MySQL format. Will be zero date + time in case appointment
+   *     is not yet confirmed by client.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_class</var>
+   *   </dt>
+   *   <dd>
+   *     The class key.
+   *     If the session isn't a class, this will be `0`.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_class_period</var>
+   *   </dt>
+   *   <dd>
+   *     The class period key.
+   *     If the session isn't a class, this will be `0`.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_location</var>
+   *   </dt>
+   *   <dd>
+   *     The location key for where the session takes place.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_service</var>
+   *   </dt>
+   *   <dd>
+   *     This is the key of the appointment type, while `k_appointment` is the specific instance.
+   *
+   *     For other cases, this will be `0`.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_title</var>
+   *   </dt>
+   *   <dd>
+   *     The name of the session.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_alert</var>
+   *   </dt>
+   *   <dd>
+   *     Alert message.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_color_background</var>
+   *   </dt>
+   *   <dd>
+   *     The background color in hex representation as used on WellnessLiving.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_color_border</var>
+   *   </dt>
+   *   <dd>
+   *     The border color in hex representation as used on WellnessLiving.
+   *   </dd>
+   *   <dt>
+   *     bool<var>is_virtual_service</var>
+   *   </dt>
+   *   <dd>
+   *     <tt>true</tt> - If the business has at least one virtual service, <tt>false</tt> - otherwise.
+   *   </dd>
+   *   <dt>
+   *     string<var>url_image</var>
+   *   </dt>
+   *   <dd>
+   *     URL to image. Empty if image not exist.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_schedule;
+
+  /**
+   * The end date of the range from which the list of schedule sessions should be retrieved.
+   *
+   * This will be `null` if the range has no end date. If this value is used,
+   * {@link ScheduleListModel::$dt_date} should not be set.
+   *
+   * @get get
+   * @var string
+   */
+  public $dl_end = null;
+
+  /**
+   * The start date of the range from which the list of scheduled sessions should be retrieved.
+   *
+   * This will be `null` if the range has no start date. If this value is used,
+   * {@link ScheduleListModel::$dt_date} should not be set.
+   *
+   * @get get
+   * @var string
+   */
+  public $dl_start = null;
+
+  /**
+   * The date of the sessions in Coordinated Universal Time (UTC) and MySQL format.
+   *
+   * If this value is used, then
+   * {@link ScheduleListModel::$dl_end} and
+   * {@link ScheduleListModel::$dl_start} should not be set.
+   *
+   * @get get
+   * @var string
+   */
+  public $dt_date = '';
+
+  /**
+   * <tt>true</tt> - If the business has at least one virtual service, <tt>false</tt> - otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_virtual_service = null;
+
+  /**
+   * Business key.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $k_business = null;
+
+  /**
+   * The security token.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_token = '';
+
+  /**
+   * User key.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $uid = null;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Search/Tag/SearchTagListModel.php b/WellnessLiving/Wl/Search/Tag/SearchTagListModel.php
index 64481da5..de4c2539 100644
--- a/WellnessLiving/Wl/Search/Tag/SearchTagListModel.php
+++ b/WellnessLiving/Wl/Search/Tag/SearchTagListModel.php
@@ -1,39 +1,39 @@
-<?php
-
-namespace WellnessLiving\Wl\Search\Tag;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Business\BusinessCategorySid;
-use WellnessLiving\Wl\Business\DataModel;
-
-/**
- * Returns a list of all existing search tags in the system.
- *
- * Search tags can be used for quick searches between businesses and services (mainly in the directories).
- */
-class SearchTagListModel extends WlModelAbstract
-{
-  /**
-   * A list of all the search tags.
-   *
-   * Each element is an array with the following keys:
-   * <dl>
-   *   <dt>int <var>id_business_category</var></dt>
-   *   <dd>
-   *     The business category that can use this search tag.
-   *     One of the {@link BusinessCategorySid} constants.
-   *     This can be found in the business information found in {@link DataModel::$id_category}.
-   *   </dd>
-   *   <dt>string <var>k_search_tag</var></dt>
-   *   <dd>The key of the tag. The primary key in the table of tags.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>The name of the tag.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_search_tag = [];
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Search\Tag;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Business\BusinessCategorySid;
+use WellnessLiving\Wl\Business\DataModel;
+
+/**
+ * Returns a list of all existing search tags in the system.
+ *
+ * Search tags can be used for quick searches between businesses and services (mainly in the directories).
+ */
+class SearchTagListModel extends WlModelAbstract
+{
+  /**
+   * A list of all the search tags.
+   *
+   * Each element is an array with the following keys:
+   * <dl>
+   *   <dt>int <var>id_business_category</var></dt>
+   *   <dd>
+   *     The business category that can use this search tag.
+   *     One of the {@link BusinessCategorySid} constants.
+   *     This can be found in the business information found in {@link DataModel::$id_category}.
+   *   </dd>
+   *   <dt>string <var>k_search_tag</var></dt>
+   *   <dd>The key of the tag. The primary key in the table of tags.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>The name of the tag.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_search_tag = [];
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Service/ServiceBookFlowSid.php b/WellnessLiving/Wl/Service/ServiceBookFlowSid.php
index acbfd23a..7b57aef1 100644
--- a/WellnessLiving/Wl/Service/ServiceBookFlowSid.php
+++ b/WellnessLiving/Wl/Service/ServiceBookFlowSid.php
@@ -1,26 +1,26 @@
-<?php
-
-namespace WellnessLiving\Wl\Service;
-
-/**
- * A list of client booking flow types.
- */
-class ServiceBookFlowSid
-{
-  /**
-   * Client selects the date and time and then the staff member.
-   */
-  const DATE_STAFF_ORDER = 2;
-
-  /**
-   * Client selects their preferred booking order should be staff member / calendar.
-   */
-  const PREFER_ORDER = 3;
-
-  /**
-   * Client selects the staff member and then the date and time.
-   */
-  const STAFF_DATE_ORDER = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Service;
+
+/**
+ * A list of client booking flow types.
+ */
+class ServiceBookFlowSid
+{
+  /**
+   * Client selects the date and time and then the staff member.
+   */
+  const DATE_STAFF_ORDER = 2;
+
+  /**
+   * Client selects their preferred booking order should be staff member / calendar.
+   */
+  const PREFER_ORDER = 3;
+
+  /**
+   * Client selects the staff member and then the date and time.
+   */
+  const STAFF_DATE_ORDER = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Service/ServicePriceSid.php b/WellnessLiving/Wl/Service/ServicePriceSid.php
index 96336ddd..13811739 100644
--- a/WellnessLiving/Wl/Service/ServicePriceSid.php
+++ b/WellnessLiving/Wl/Service/ServicePriceSid.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Wl\Service;
-
-/**
- * A list of service price types.
- */
-abstract class ServicePriceSid
-{
-  /**
-   * Fixed price.
-   */
-  const FIXED = 1;
-
-  /**
-   * No need to pay.
-   */
-  const FREE = 2;
-
-  /**
-   * Hide price.
-   */
-  const HIDE = 4;
-
-  /**
-   * Various price.
-   */
-  const VARIES = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Service;
+
+/**
+ * A list of service price types.
+ */
+abstract class ServicePriceSid
+{
+  /**
+   * Fixed price.
+   */
+  const FIXED = 1;
+
+  /**
+   * No need to pay.
+   */
+  const FREE = 2;
+
+  /**
+   * Hide price.
+   */
+  const HIDE = 4;
+
+  /**
+   * Various price.
+   */
+  const VARIES = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Service/ServiceRequireSid.php b/WellnessLiving/Wl/Service/ServiceRequireSid.php
index 00e0d6f8..31597fdf 100644
--- a/WellnessLiving/Wl/Service/ServiceRequireSid.php
+++ b/WellnessLiving/Wl/Service/ServiceRequireSid.php
@@ -1,44 +1,44 @@
-<?php
-
-namespace WellnessLiving\Wl\Service;
-
-/**
- * A list of client booking flow types.
- *
- * 3 - is reserved for deprecated "advanced percent" that was combined with "flat advance" into "ADVANCE".
- *
- * Last used ID: 6
- */
-class ServiceRequireSid
-{
-  /**
-   * Some part of the price is required. Type of the deposit can be flat or percentage.
-   * Type of the deposit depends on <var>is_deposit_percent</var>.
-   * Size of the deposit is specified in <var>f_deposit</var>
-   */
-  const ADVANCE = 4;
-
-  /**
-   * Full payment is required.
-   */
-  const FULL = 2;
-
-  /**
-   * Nothing is required.
-   * Online Payment is optional.
-   */
-  const NOTHING = 1;
-
-  /**
-   * Clients can book, but online purchase is not available.
-   * Clients can pay only when they visit.
-   */
-  const OFFLINE = 6;
-
-  /**
-   * Credit card authorisation without payment is required.
-   */
-  const ZERO = 5;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Service;
+
+/**
+ * A list of client booking flow types.
+ *
+ * 3 - is reserved for deprecated "advanced percent" that was combined with "flat advance" into "ADVANCE".
+ *
+ * Last used ID: 6
+ */
+class ServiceRequireSid
+{
+  /**
+   * Some part of the price is required. Type of the deposit can be flat or percentage.
+   * Type of the deposit depends on <var>is_deposit_percent</var>.
+   * Size of the deposit is specified in <var>f_deposit</var>
+   */
+  const ADVANCE = 4;
+
+  /**
+   * Full payment is required.
+   */
+  const FULL = 2;
+
+  /**
+   * Nothing is required.
+   * Online Payment is optional.
+   */
+  const NOTHING = 1;
+
+  /**
+   * Clients can book, but online purchase is not available.
+   * Clients can pay only when they visit.
+   */
+  const OFFLINE = 6;
+
+  /**
+   * Credit card authorisation without payment is required.
+   */
+  const ZERO = 5;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Service/ServiceSid.php b/WellnessLiving/Wl/Service/ServiceSid.php
index 031d2387..7151ea14 100644
--- a/WellnessLiving/Wl/Service/ServiceSid.php
+++ b/WellnessLiving/Wl/Service/ServiceSid.php
@@ -1,43 +1,43 @@
-<?php
-
-namespace WellnessLiving\Wl\Service;
-
-/**
- * A list of services.
- *
- * Last used ID: 6.
- */
-class ServiceSid
-{
-  /**
-   * Appointment.
-   */
-  const APPOINTMENT = 1;
-
-  /**
-   * Belts.
-   */
-  const BELT = 6;
-
-  /**
-   * Bookable asset.
-   */
-  const BOOKABLE_ASSET = 4;
-
-  /**
-   * Class.
-   */
-  const CLASSES = 2;
-
-  /**
-   * Event.
-   */
-  const EVENT = 3;
-
-  /**
-   * Gym visits.
-   */
-  const GYM = 5;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Service;
+
+/**
+ * A list of services.
+ *
+ * Last used ID: 6.
+ */
+class ServiceSid
+{
+  /**
+   * Appointment.
+   */
+  const APPOINTMENT = 1;
+
+  /**
+   * Belts.
+   */
+  const BELT = 6;
+
+  /**
+   * Bookable asset.
+   */
+  const BOOKABLE_ASSET = 4;
+
+  /**
+   * Class.
+   */
+  const CLASSES = 2;
+
+  /**
+   * Event.
+   */
+  const EVENT = 3;
+
+  /**
+   * Gym visits.
+   */
+  const GYM = 5;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php b/WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php
index ea5899ac..bab2e63d 100644
--- a/WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php
+++ b/WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php
@@ -1,28 +1,28 @@
-<?php
-
-namespace WellnessLiving\Wl\Shop\Product;
-
-/**
- * Purchase restrictions.
- *
- * Last used ID: 3.
- */
-class PurchaseRestrictionSid
-{
-  /**
-   * Purchase option available for all clients.
-   */
-  const ALL = 1;
-
-  /**
-   * Purchase option introductory offer, available for new clients only.
-   */
-  const INTRODUCTORY = 2;
-
-  /**
-   * Purchase option available for clients with special login type or member group.
-   */
-  const TYPE = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Shop\Product;
+
+/**
+ * Purchase restrictions.
+ *
+ * Last used ID: 3.
+ */
+class PurchaseRestrictionSid
+{
+  /**
+   * Purchase option available for all clients.
+   */
+  const ALL = 1;
+
+  /**
+   * Purchase option introductory offer, available for new clients only.
+   */
+  const INTRODUCTORY = 2;
+
+  /**
+   * Purchase option available for clients with special login type or member group.
+   */
+  const TYPE = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Skin/Application/Resource/ApplicationResourceModel.php b/WellnessLiving/Wl/Skin/Application/Resource/ApplicationResourceModel.php
index c15dc0e5..36c8c304 100644
--- a/WellnessLiving/Wl/Skin/Application/Resource/ApplicationResourceModel.php
+++ b/WellnessLiving/Wl/Skin/Application/Resource/ApplicationResourceModel.php
@@ -1,28 +1,28 @@
-<?php
-
-namespace WellnessLiving\Wl\Skin\Application\Resource;
-
-/**
- * Returns information used to generate application sources.
- */
-class ApplicationResourceModel extends \WellnessLiving\Custom\Wl\Skin\Application\Resource\ApplicationResourceModel
-{
-  /**
-   * The application data.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_application;
-
-  /**
-   * The business key.
-   * Empty to get data for all businesses.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Skin\Application\Resource;
+
+/**
+ * Returns information used to generate application sources.
+ */
+class ApplicationResourceModel extends \WellnessLiving\Custom\Wl\Skin\Application\Resource\ApplicationResourceModel
+{
+  /**
+   * The application data.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_application;
+
+  /**
+   * The business key.
+   * Empty to get data for all businesses.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Skin/Application/SkinModel.php b/WellnessLiving/Wl/Skin/Application/SkinModel.php
index 80795e2d..c3cd8f45 100644
--- a/WellnessLiving/Wl/Skin/Application/SkinModel.php
+++ b/WellnessLiving/Wl/Skin/Application/SkinModel.php
@@ -1,58 +1,58 @@
-<?php
-
-namespace WellnessLiving\Wl\Skin\Application;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves customized skin settings for the client view.
- */
-class SkinModel extends WlModelAbstract
-{
-  /**
-   * Skin information.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_skin;
-
-  /**
-   * Determines current business account contains amount for the application customisation.
-   *
-   * @get result
-   * @var bool
-   */
-  public $has_pay;
-
-  /**
-   * Whether customization billing is confirmed.
-   *
-   * <tt>true</tt> to finish delete process even if customization fee will be billed.
-   * <tt>false</tt> if customization fee should be required for confirmation.
-   *
-   * @delete get
-   * @var bool
-   */
-  public $is_billing_confirm;
-
-  /**
-   * The business key.
-   *
-   * @delete get
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * Name of the link to default application skin.
-   *
-   * @delete result
-   * @get result
-   * @var string
-   */
-  public $s_link;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Skin\Application;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves customized skin settings for the client view.
+ */
+class SkinModel extends WlModelAbstract
+{
+  /**
+   * Skin information.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_skin;
+
+  /**
+   * Determines current business account contains amount for the application customisation.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_pay;
+
+  /**
+   * Whether customization billing is confirmed.
+   *
+   * <tt>true</tt> to finish delete process even if customization fee will be billed.
+   * <tt>false</tt> if customization fee should be required for confirmation.
+   *
+   * @delete get
+   * @var bool
+   */
+  public $is_billing_confirm;
+
+  /**
+   * The business key.
+   *
+   * @delete get
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * Name of the link to default application skin.
+   *
+   * @delete result
+   * @get result
+   * @var string
+   */
+  public $s_link;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Staff/Privilege/PrivilegeListModel.php b/WellnessLiving/Wl/Staff/Privilege/PrivilegeListModel.php
index cf172102..6391c8af 100644
--- a/WellnessLiving/Wl/Staff/Privilege/PrivilegeListModel.php
+++ b/WellnessLiving/Wl/Staff/Privilege/PrivilegeListModel.php
@@ -1,65 +1,65 @@
-<?php
-
-namespace WellnessLiving\Wl\Staff\Privilege;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\WlPrivilegeSid;
-
-/**
- * Can return list of admin or staff privileges of the current user.
- *
- * Cannot be used to check privileges of another user.
- */
-class PrivilegeListModel extends WlModelAbstract
-{
-  /**
-   * List of privileges, if user is administrator.
-   *
-   * There is no certain list of admin privileges, as they are name-based. If you need to check access to certain place
-   *  contact WellnessLiving integration team.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_privilege_passport = [];
-
-  /**
-   * List of privileges, if the given user is a staff member in the give business.
-   *
-   * @get result
-   * @var int[]
-   * @see WlPrivilegeSid
-   */
-  public $a_privilege_staff = [];
-
-  /**
-   * Whether this user is a super-administrator because he is a studio staff member.
-   *
-   * `true`, if this user is a super administrator because he is a studio staff member.
-   * Super administrators have all privileges.
-   *
-   * `false` if this is an ordinary user.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_admin = false;
-
-  /**
-   * Key of business to get privileges for.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * User key to get privileges for.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '0';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Staff\Privilege;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlPrivilegeSid;
+
+/**
+ * Can return list of admin or staff privileges of the current user.
+ *
+ * Cannot be used to check privileges of another user.
+ */
+class PrivilegeListModel extends WlModelAbstract
+{
+  /**
+   * List of privileges, if user is administrator.
+   *
+   * There is no certain list of admin privileges, as they are name-based. If you need to check access to certain place
+   *  contact WellnessLiving integration team.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_privilege_passport = [];
+
+  /**
+   * List of privileges, if the given user is a staff member in the give business.
+   *
+   * @get result
+   * @var int[]
+   * @see WlPrivilegeSid
+   */
+  public $a_privilege_staff = [];
+
+  /**
+   * Whether this user is a super-administrator because he is a studio staff member.
+   *
+   * `true`, if this user is a super administrator because he is a studio staff member.
+   * Super administrators have all privileges.
+   *
+   * `false` if this is an ordinary user.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_admin = false;
+
+  /**
+   * Key of business to get privileges for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * User key to get privileges for.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Staff/StaffElementModel.php b/WellnessLiving/Wl/Staff/StaffElementModel.php
index 3fe4d346..0a77a27b 100644
--- a/WellnessLiving/Wl/Staff/StaffElementModel.php
+++ b/WellnessLiving/Wl/Staff/StaffElementModel.php
@@ -1,279 +1,279 @@
-<?php
-
-namespace WellnessLiving\Wl\Staff;
-
-use WellnessLiving\Core\a\AGenderSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Business\BusinessModel;
-use WellnessLiving\Wl\WlPrivilegeRoleSid;
-
-/**
- * Can create or edit a staff member in a business.
- *
- * You can also use this endpoint to get information about a staff member's activity in another business when using
- * the {@link BusinessModel} endpoint.
- */
-class StaffElementModel extends WlModelAbstract
-{
-  /**
-   * The list of locations where the staff member works. Each element is a location key.
-   *
-   * `null` means to not change the current value of the field.
-   *
-   * @post post
-   * @var array|null
-   */
-  public $a_location = null;
-
-  /**
-   * Employment end date.
-   *
-   * `null` means to not change the current value of the field.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $dl_end = null;
-
-  /**
-   * Employment start date.
-   *
-   * `null` means to not change the current value of the field.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $dl_start = null;
-
-  /**
-   * Gender of staff member. One of {@link AGenderSid} constants.
-   *
-   * `null` means to not change the current value of the field or set gender by default for new staff.
-   *
-   * @post post
-   * @var int|null
-   */
-  public $id_gender = null;
-
-  /**
-   * ID of the default system role. One of {@link WlPrivilegeRoleSid}.
-   *
-   * `null` means to not change the current value of the field.
-   *
-   * @post post
-   * @var int|null
-   */
-  public $id_role = null;
-
-  /**
-   * Whether the staff is currently employed.
-   *
-   * `null` means to not change the current value of the field.
-   *
-   * @post post
-   * @var bool|null
-   */
-  public $is_employ = null;
-
-  /**
-   * Determines whether the staff member be shown on the directory site of the business.
-   *
-   * If `null`, the current value of the field shouldn't be changed.
-   *
-   * @post post
-   * @var bool|null
-   */
-  public $is_microsite = null;
-
-  /**
-   * Whether password set is disabled. `true` - if the email is associated to a client profile which has a password set,
-   *   `false` - otherwise.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_password_set_disable = false;
-
-  /**
-   * Whether the staff member can to sign in.
-   *
-   * @post post
-   * @var bool
-   */
-  public $is_uid = true;
-
-  /**
-   * The key of the business in which the staff member is being created or edited.
-   * This field is required.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * Business role key.
-   *
-   * `null` if not set.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $k_business_role = null;
-
-  /**
-   * City key.
-   *
-   * `null` means to not change the current value of the field.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $k_city = null;
-
-  /**
-   * Home location key.
-   *
-   * `null` if not set.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $k_location = null;
-
-  /**
-   * The key of the staff member who is being created or edited.
-   *
-   * This will be `null` in cases where a new staff member is created.
-   *
-   * @post get,result
-   * @var string|null
-   */
-  public $k_staff = null;
-
-  /**
-   * Address.
-   *
-   * `null` means to not change the current value of the field.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_address = null;
-
-  /**
-   * Staff biography.
-   *
-   * `null` means to not change the current value of the field.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_biography = null;
-
-  /**
-   * Custom city title.
-   *
-   * `null` means to not change the current value of the field or <var>k_city</var> is specified.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_city = null;
-
-  /**
-   * The staff member's email address.
-   * This field is required when creating a new staff member.
-   *
-   * If `null`, the current value of the field shouldn't be changed.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_email = null;
-
-  /**
-   * The staff member's first name.
-   * This field is required when creating a new staff member.
-   *
-   * If `null`, the current value of the field shouldn't be changed.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_first_name = null;
-
-  /**
-   * The staff member's last name.
-   *
-   * If `null`, the current value of the field shouldn't be changed.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_last_name = null;
-
-  /**
-   * The password.
-   * This field is required when creating a new staff member.
-   *
-   * If `null`, the current value of the field shouldn't be changed.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_password = null;
-
-  /**
-   * Confirmation of the password.
-   * This field is required when creating a new staff member.
-   *
-   * If `null`, the current value of the field shouldn't be changed.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_password_confirm = null;
-
-  /**
-   * Home phone.
-   *
-   * `null` means to not change the current value of the field.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_phone_home = null;
-
-  /**
-   * Cell phone.
-   *
-   * `null` means to not change the current value of the field.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_phone_mobile = null;
-
-  /**
-   * The staff member's job title.
-   *
-   * If `null`, the current value of the field shouldn't be changed.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_position = null;
-
-  /**
-   * The staff member's job title.
-   *
-   * If `null`, the current value of the field shouldn't be changed.
-   *
-   * @post post
-   * @var string|null
-   */
-  public $text_postal = null;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Staff;
+
+use WellnessLiving\Core\a\AGenderSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Business\BusinessModel;
+use WellnessLiving\Wl\WlPrivilegeRoleSid;
+
+/**
+ * Can create or edit a staff member in a business.
+ *
+ * You can also use this endpoint to get information about a staff member's activity in another business when using
+ * the {@link BusinessModel} endpoint.
+ */
+class StaffElementModel extends WlModelAbstract
+{
+  /**
+   * The list of locations where the staff member works. Each element is a location key.
+   *
+   * `null` means to not change the current value of the field.
+   *
+   * @post post
+   * @var array|null
+   */
+  public $a_location = null;
+
+  /**
+   * Employment end date.
+   *
+   * `null` means to not change the current value of the field.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $dl_end = null;
+
+  /**
+   * Employment start date.
+   *
+   * `null` means to not change the current value of the field.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $dl_start = null;
+
+  /**
+   * Gender of staff member. One of {@link AGenderSid} constants.
+   *
+   * `null` means to not change the current value of the field or set gender by default for new staff.
+   *
+   * @post post
+   * @var int|null
+   */
+  public $id_gender = null;
+
+  /**
+   * ID of the default system role. One of {@link WlPrivilegeRoleSid}.
+   *
+   * `null` means to not change the current value of the field.
+   *
+   * @post post
+   * @var int|null
+   */
+  public $id_role = null;
+
+  /**
+   * Whether the staff is currently employed.
+   *
+   * `null` means to not change the current value of the field.
+   *
+   * @post post
+   * @var bool|null
+   */
+  public $is_employ = null;
+
+  /**
+   * Determines whether the staff member be shown on the directory site of the business.
+   *
+   * If `null`, the current value of the field shouldn't be changed.
+   *
+   * @post post
+   * @var bool|null
+   */
+  public $is_microsite = null;
+
+  /**
+   * Whether password set is disabled. `true` - if the email is associated to a client profile which has a password set,
+   *   `false` - otherwise.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_password_set_disable = false;
+
+  /**
+   * Whether the staff member can to sign in.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_uid = true;
+
+  /**
+   * The key of the business in which the staff member is being created or edited.
+   * This field is required.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * Business role key.
+   *
+   * `null` if not set.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_business_role = null;
+
+  /**
+   * City key.
+   *
+   * `null` means to not change the current value of the field.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_city = null;
+
+  /**
+   * Home location key.
+   *
+   * `null` if not set.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_location = null;
+
+  /**
+   * The key of the staff member who is being created or edited.
+   *
+   * This will be `null` in cases where a new staff member is created.
+   *
+   * @post get,result
+   * @var string|null
+   */
+  public $k_staff = null;
+
+  /**
+   * Address.
+   *
+   * `null` means to not change the current value of the field.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_address = null;
+
+  /**
+   * Staff biography.
+   *
+   * `null` means to not change the current value of the field.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_biography = null;
+
+  /**
+   * Custom city title.
+   *
+   * `null` means to not change the current value of the field or <var>k_city</var> is specified.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_city = null;
+
+  /**
+   * The staff member's email address.
+   * This field is required when creating a new staff member.
+   *
+   * If `null`, the current value of the field shouldn't be changed.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_email = null;
+
+  /**
+   * The staff member's first name.
+   * This field is required when creating a new staff member.
+   *
+   * If `null`, the current value of the field shouldn't be changed.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_first_name = null;
+
+  /**
+   * The staff member's last name.
+   *
+   * If `null`, the current value of the field shouldn't be changed.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_last_name = null;
+
+  /**
+   * The password.
+   * This field is required when creating a new staff member.
+   *
+   * If `null`, the current value of the field shouldn't be changed.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_password = null;
+
+  /**
+   * Confirmation of the password.
+   * This field is required when creating a new staff member.
+   *
+   * If `null`, the current value of the field shouldn't be changed.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_password_confirm = null;
+
+  /**
+   * Home phone.
+   *
+   * `null` means to not change the current value of the field.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_phone_home = null;
+
+  /**
+   * Cell phone.
+   *
+   * `null` means to not change the current value of the field.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_phone_mobile = null;
+
+  /**
+   * The staff member's job title.
+   *
+   * If `null`, the current value of the field shouldn't be changed.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_position = null;
+
+  /**
+   * The staff member's job title.
+   *
+   * If `null`, the current value of the field shouldn't be changed.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $text_postal = null;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Tag/TagListModel.php b/WellnessLiving/Wl/Tag/TagListModel.php
index 165837b8..3bd80169 100644
--- a/WellnessLiving/Wl/Tag/TagListModel.php
+++ b/WellnessLiving/Wl/Tag/TagListModel.php
@@ -1,44 +1,44 @@
-<?php
-
-namespace WellnessLiving\Wl\Tag;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Gets tags for a business.
- */
-class TagListModel extends WlModelAbstract
-{
-  /**
-   * The tag list.
-   *
-   * Each element has the next structure:<dl>
-   * <dt>string <var>k_tag</var> </dt>
-   * <dd>The tag key.</dd>
-   * <dt>string <var>text_title</var></dt>
-   * <dd>The tag title.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_list;
-
-  /**
-   * Whether a business did set up surcharges.
-   *
-   * @get result
-   * @var bool
-   */
-  public $has_surcharge = false;
-
-  /**
-   * The business key of the tags.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Tag;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Gets tags for a business.
+ */
+class TagListModel extends WlModelAbstract
+{
+  /**
+   * The tag list.
+   *
+   * Each element has the next structure:<dl>
+   * <dt>string <var>k_tag</var> </dt>
+   * <dd>The tag key.</dd>
+   * <dt>string <var>text_title</var></dt>
+   * <dd>The tag title.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_list;
+
+  /**
+   * Whether a business did set up surcharges.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_surcharge = false;
+
+  /**
+   * The business key of the tags.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Tax/TaxListModel.php b/WellnessLiving/Wl/Tax/TaxListModel.php
index c6de36b4..9901b9bd 100644
--- a/WellnessLiving/Wl/Tax/TaxListModel.php
+++ b/WellnessLiving/Wl/Tax/TaxListModel.php
@@ -1,40 +1,40 @@
-<?php
-
-namespace WellnessLiving\Wl\Tax;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves a list of taxes for a business.
- */
-class TaxListModel extends WlModelAbstract
-{
-  /**
-   * A list of taxes.
-   *
-   * Each element has the following structure:<dl>
-   * <dt>float <var>f_value</var> </dt>
-   * <dd>The amount of the tax.</dd>
-   * <dt>string <var>k_tax</var> </dt>
-   * <dd>The type of the tax, one of the {@link WlTaxSid} constants.</dd>
-   * <dt>string <var>k_tax</var> </dt>
-   * <dd>The tax key.</dd>
-   * <dt>string <var>text_title</var></dt>
-   * <dd>The name of the tax.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_list;
-
-  /**
-   * The key of the business for which to get a list of taxes.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Tax;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves a list of taxes for a business.
+ */
+class TaxListModel extends WlModelAbstract
+{
+  /**
+   * A list of taxes.
+   *
+   * Each element has the following structure:<dl>
+   * <dt>float <var>f_value</var> </dt>
+   * <dd>The amount of the tax.</dd>
+   * <dt>string <var>k_tax</var> </dt>
+   * <dd>The type of the tax, one of the {@link WlTaxSid} constants.</dd>
+   * <dt>string <var>k_tax</var> </dt>
+   * <dd>The tax key.</dd>
+   * <dt>string <var>text_title</var></dt>
+   * <dd>The name of the tax.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_list;
+
+  /**
+   * The key of the business for which to get a list of taxes.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Tax/TaxModel.php b/WellnessLiving/Wl/Tax/TaxModel.php
index f3165874..cccf4307 100644
--- a/WellnessLiving/Wl/Tax/TaxModel.php
+++ b/WellnessLiving/Wl/Tax/TaxModel.php
@@ -1,29 +1,29 @@
-<?php
-
-namespace WellnessLiving\Wl\Tax;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Returns tax information for a business.
- */
-class TaxModel extends WlModelAbstract
-{
-  /**
-   * The tax key to get information for.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_tax = '0';
-
-  /**
-   * The tax title.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_tax;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Tax;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns tax information for a business.
+ */
+class TaxModel extends WlModelAbstract
+{
+  /**
+   * The tax key to get information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_tax = '0';
+
+  /**
+   * The tax title.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_tax;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/User/Info/UserIntegrationModel.php b/WellnessLiving/Wl/User/Info/UserIntegrationModel.php
index 8a535975..3ce31f62 100644
--- a/WellnessLiving/Wl/User/Info/UserIntegrationModel.php
+++ b/WellnessLiving/Wl/User/Info/UserIntegrationModel.php
@@ -1,46 +1,46 @@
-<?php
-
-namespace WellnessLiving\Wl\User\Info;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * An endpoint that return the information about the integrations the user is connected to.
- */
-class UserIntegrationModel extends WlModelAbstract
-{
-  /**
-   * Information about the integrations the user is connected to. The information returned has the following structure:
-   * <dl>
-   *  <dt>bool <var>is_classpass</var></dt>
-   *  <dd>`true` if user use the Classpass integration, `false` - otherwise.</dd>
-   *  <dt>bool <var>is_gympass</var></dt>
-   *  <dd>`true` if user use the Gympass integration, `false` - otherwise.</dd>
-   *  <dt>bool <var>is_reserve_with_google</var></dt>
-   *  <dd>`true` if user use the Reserve With Google integration, `false` - otherwise.</dd>
-   * </dl>
-   * `null` if the user does not belong to any integration.
-   *
-   * @get result
-   * @var array|null
-   */
-  public $a_integration = null;
-
-  /**
-   * The key of the business.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * Key of the user.
-   *
-   * @get get
-   * @var string
-   */
-  public $uid = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\User\Info;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * An endpoint that return the information about the integrations the user is connected to.
+ */
+class UserIntegrationModel extends WlModelAbstract
+{
+  /**
+   * Information about the integrations the user is connected to. The information returned has the following structure:
+   * <dl>
+   *  <dt>bool <var>is_classpass</var></dt>
+   *  <dd>`true` if user use the Classpass integration, `false` - otherwise.</dd>
+   *  <dt>bool <var>is_gympass</var></dt>
+   *  <dd>`true` if user use the Gympass integration, `false` - otherwise.</dd>
+   *  <dt>bool <var>is_reserve_with_google</var></dt>
+   *  <dd>`true` if user use the Reserve With Google integration, `false` - otherwise.</dd>
+   * </dl>
+   * `null` if the user does not belong to any integration.
+   *
+   * @get result
+   * @var array|null
+   */
+  public $a_integration = null;
+
+  /**
+   * The key of the business.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * Key of the user.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/User/Referrer/ReferrerModel.php b/WellnessLiving/Wl/User/Referrer/ReferrerModel.php
index 8001db0d..709bfc70 100644
--- a/WellnessLiving/Wl/User/Referrer/ReferrerModel.php
+++ b/WellnessLiving/Wl/User/Referrer/ReferrerModel.php
@@ -1,114 +1,114 @@
-<?php
-
-namespace WellnessLiving\Wl\User\Referrer;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Searches for a referrer using a string.
- */
-class ReferrerModel extends WlModelAbstract
-{
-  /**
-   * Information about the referrer's photo. The information returned has the following structure:
-   * <dl>
-   *   <dt>
-   *     int <var>i_height</var>
-   *   </dt>
-   *   <dd>
-   *     The height of the photo.
-   *   </dd>
-   *   <dt>
-   *     int <var>i_width</var>
-   *   </dt>
-   *   <dd>
-   *     The width of the photo.
-   *   </dd>
-   *   <dt>
-   *     string <var>url_photo</var>
-   *   </dt>
-   *   <dd>
-   *     The URL of the photo.
-   *   </dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_photo;
-
-  /**
-   * The key of the current business.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The email address of the referrer.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_email;
-
-  /**
-   * The business client ID of the referrer.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_member;
-
-  /**
-   * The first name of the referrer.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_name_first;
-
-  /**
-   * The last name of the referrer.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_name_last;
-
-  /**
-   * The phone number of the referrer.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_phone;
-
-  /**
-   * The string to be used for searching for a referrer.
-   *
-   * @get get
-   * @var string
-   */
-  public $s_search = '';
-
-  /**
-   * Composes name of the referrer for public usage.
-   * `null` if the referrer is not found.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $text_name_public = null;
-
-  /**
-   * The referrer's user key.
-   *
-   * @get result
-   * @var string
-   */
-  public $uid_referrer;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\User\Referrer;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Searches for a referrer using a string.
+ */
+class ReferrerModel extends WlModelAbstract
+{
+  /**
+   * Information about the referrer's photo. The information returned has the following structure:
+   * <dl>
+   *   <dt>
+   *     int <var>i_height</var>
+   *   </dt>
+   *   <dd>
+   *     The height of the photo.
+   *   </dd>
+   *   <dt>
+   *     int <var>i_width</var>
+   *   </dt>
+   *   <dd>
+   *     The width of the photo.
+   *   </dd>
+   *   <dt>
+   *     string <var>url_photo</var>
+   *   </dt>
+   *   <dd>
+   *     The URL of the photo.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_photo;
+
+  /**
+   * The key of the current business.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The email address of the referrer.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_email;
+
+  /**
+   * The business client ID of the referrer.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_member;
+
+  /**
+   * The first name of the referrer.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_name_first;
+
+  /**
+   * The last name of the referrer.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_name_last;
+
+  /**
+   * The phone number of the referrer.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_phone;
+
+  /**
+   * The string to be used for searching for a referrer.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_search = '';
+
+  /**
+   * Composes name of the referrer for public usage.
+   * `null` if the referrer is not found.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $text_name_public = null;
+
+  /**
+   * The referrer's user key.
+   *
+   * @get result
+   * @var string
+   */
+  public $uid_referrer;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php b/WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php
index c9a90959..cb1c7636 100644
--- a/WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php
+++ b/WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php
@@ -1,41 +1,41 @@
-<?php
-
-namespace WellnessLiving\Wl\Video\Catalog\Filter\Sort;
-
-/**
- * List of video catalog sorting types.
- *
- * Any selected type should be sorted in descending order.
- */
-class FilterSortSid
-{
-  /**
-   * Sort alphabetically.
-   *
-   * @title Alphabetical
-   */
-  const ALPHABET = 1;
-
-  /**
-   * Sort by custom.
-   *
-   * @title Custom
-   */
-  const CUSTOM = 4;
-
-  /**
-   * Sort by most recently added.
-   *
-   * @title Most Recent
-   */
-  const RECENT = 2;
-
-  /**
-   * Sorted by number of views.
-   *
-   * @title Views
-   */
-  const VIEW = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Video\Catalog\Filter\Sort;
+
+/**
+ * List of video catalog sorting types.
+ *
+ * Any selected type should be sorted in descending order.
+ */
+class FilterSortSid
+{
+  /**
+   * Sort alphabetically.
+   *
+   * @title Alphabetical
+   */
+  const ALPHABET = 1;
+
+  /**
+   * Sort by custom.
+   *
+   * @title Custom
+   */
+  const CUSTOM = 4;
+
+  /**
+   * Sort by most recently added.
+   *
+   * @title Most Recent
+   */
+  const RECENT = 2;
+
+  /**
+   * Sorted by number of views.
+   *
+   * @title Views
+   */
+  const VIEW = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/Category/CategoryElementModel.php b/WellnessLiving/Wl/Video/Category/CategoryElementModel.php
index 4fcdadc1..d230681a 100644
--- a/WellnessLiving/Wl/Video/Category/CategoryElementModel.php
+++ b/WellnessLiving/Wl/Video/Category/CategoryElementModel.php
@@ -1,97 +1,97 @@
-<?php
-
-namespace WellnessLiving\Wl\Video\Category;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Saves video categories.
- */
-class CategoryElementModel extends WlModelAbstract
-{
-  /**
-   * A list of client and member types who can access videos from the category.
-   *
-   * @get result
-   * @put post
-   * @var string[]
-   */
-  public $a_login_type;
-
-  /**
-   * A list of member groups who can access videos from the category.
-   *
-   * @get result
-   * @put post
-   * @var string[]
-   */
-  public $a_member_group;
-
-  /**
-   * The category's placement in the business's list of categories.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_order;
-
-  /**
-   * This will be `true` if the video category is for cloud session recordings. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @put post
-   * @var bool
-   */
-  public $is_cloud_recording = false;
-
-  /**
-   * This will be `true` if some client or member types can grant access to the video category. Otherwise, this will be
-   * `false`.
-   *
-   * @get result
-   * @put post
-   * @var bool
-   */
-  public $is_login_type;
-
-  /**
-   * This will be `true` if some member groups can grant access to the video category.
-   * Otherwise, this will be `false` if no member groups can grant access to the video category.
-   *
-   * @get result
-   * @put post
-   * @var bool
-   */
-  public $is_member_group = false;
-
-  /**
-   * The business key.
-   *
-   * @delete get
-   * @get get
-   * @put get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The category key.
-   *
-   * @delete get
-   * @get get,result
-   * @put get,result
-   * @var string
-   */
-  public $k_video_category;
-
-  /**
-   * The category name.
-   *
-   * @get result
-   * @put post
-   * @var string
-   */
-  public $text_title;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Video\Category;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Saves video categories.
+ */
+class CategoryElementModel extends WlModelAbstract
+{
+  /**
+   * A list of client and member types who can access videos from the category.
+   *
+   * @get result
+   * @put post
+   * @var string[]
+   */
+  public $a_login_type;
+
+  /**
+   * A list of member groups who can access videos from the category.
+   *
+   * @get result
+   * @put post
+   * @var string[]
+   */
+  public $a_member_group;
+
+  /**
+   * The category's placement in the business's list of categories.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_order;
+
+  /**
+   * This will be `true` if the video category is for cloud session recordings. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @put post
+   * @var bool
+   */
+  public $is_cloud_recording = false;
+
+  /**
+   * This will be `true` if some client or member types can grant access to the video category. Otherwise, this will be
+   * `false`.
+   *
+   * @get result
+   * @put post
+   * @var bool
+   */
+  public $is_login_type;
+
+  /**
+   * This will be `true` if some member groups can grant access to the video category.
+   * Otherwise, this will be `false` if no member groups can grant access to the video category.
+   *
+   * @get result
+   * @put post
+   * @var bool
+   */
+  public $is_member_group = false;
+
+  /**
+   * The business key.
+   *
+   * @delete get
+   * @get get
+   * @put get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The category key.
+   *
+   * @delete get
+   * @get get,result
+   * @put get,result
+   * @var string
+   */
+  public $k_video_category;
+
+  /**
+   * The category name.
+   *
+   * @get result
+   * @put post
+   * @var string
+   */
+  public $text_title;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/Category/CategoryListModel.php b/WellnessLiving/Wl/Video/Category/CategoryListModel.php
index 00b35927..1a4c6f6c 100644
--- a/WellnessLiving/Wl/Video/Category/CategoryListModel.php
+++ b/WellnessLiving/Wl/Video/Category/CategoryListModel.php
@@ -1,76 +1,76 @@
-<?php
-
-namespace WellnessLiving\Wl\Video\Category;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Returns a list of video categories.
- */
-class CategoryListModel extends WlModelAbstract
-{
-  /**
-   * A list of shared video category keys displayed in the order to be saved.
-   *
-   * @put post
-   * @var string[]
-   */
-  public $a_order;
-
-  /**
-   * The business video library categories as found in {@link CategoryListModel::$k_business}.
-   *
-   * Each element has the following structure: <dl>
-   *   <dt>bool <var>can_delete</var></dt>
-   *   <dd>Determines whether the video category can be deleted.</dd>
-   *   <dt>int <var>i_video</var></dt>
-   *   <dd>The number of videos.</dd>
-   *   <dt>string <var>k_video_category</var></dt>
-   *   <dd>The key of the video category.</dd>
-   *   <dt>string <var>k_video_category_full</var></dt>
-   *   <dd>The string key of the video category.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>The title of the category.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_video_category;
-
-  /**
-   * If `true`, the API is being used from backend. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @put get
-   * @var bool
-   */
-  public $is_backend = false;
-
-  /**
-   * If `true`, groups that are missing videos won't be displayed. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_skip_empty_group;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @put get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The filter phrase used to filter categories by name.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_filter;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Video\Category;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns a list of video categories.
+ */
+class CategoryListModel extends WlModelAbstract
+{
+  /**
+   * A list of shared video category keys displayed in the order to be saved.
+   *
+   * @put post
+   * @var string[]
+   */
+  public $a_order;
+
+  /**
+   * The business video library categories as found in {@link CategoryListModel::$k_business}.
+   *
+   * Each element has the following structure: <dl>
+   *   <dt>bool <var>can_delete</var></dt>
+   *   <dd>Determines whether the video category can be deleted.</dd>
+   *   <dt>int <var>i_video</var></dt>
+   *   <dd>The number of videos.</dd>
+   *   <dt>string <var>k_video_category</var></dt>
+   *   <dd>The key of the video category.</dd>
+   *   <dt>string <var>k_video_category_full</var></dt>
+   *   <dd>The string key of the video category.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>The title of the category.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_video_category;
+
+  /**
+   * If `true`, the API is being used from backend. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @put get
+   * @var bool
+   */
+  public $is_backend = false;
+
+  /**
+   * If `true`, groups that are missing videos won't be displayed. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_skip_empty_group;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @put get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The filter phrase used to filter categories by name.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_filter;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/Level/LevelListModel.php b/WellnessLiving/Wl/Video/Level/LevelListModel.php
index d8a6088a..2efca633 100644
--- a/WellnessLiving/Wl/Video/Level/LevelListModel.php
+++ b/WellnessLiving/Wl/Video/Level/LevelListModel.php
@@ -1,43 +1,43 @@
-<?php
-
-namespace WellnessLiving\Wl\Video\Level;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Changes the order of video levels.
- */
-class LevelListModel extends WlModelAbstract
-{
-  /**
-   * A list of video levels with the following structure: <dl>
-   *   <dt>string <var>k_video_level</var></dt>
-   *   <dd>The video level key.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>The video level title.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_level_list = [];
-
-  /**
-   * A list of video level keys in the order to be saved.
-   *
-   * @put post
-   * @var string[]
-   */
-  public $a_order = [];
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @put get
-   * @var string
-   */
-  public $k_business;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Video\Level;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Changes the order of video levels.
+ */
+class LevelListModel extends WlModelAbstract
+{
+  /**
+   * A list of video levels with the following structure: <dl>
+   *   <dt>string <var>k_video_level</var></dt>
+   *   <dd>The video level key.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>The video level title.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_level_list = [];
+
+  /**
+   * A list of video level keys in the order to be saved.
+   *
+   * @put post
+   * @var string[]
+   */
+  public $a_order = [];
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @put get
+   * @var string
+   */
+  public $k_business;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/Level/LevelModel.php b/WellnessLiving/Wl/Video/Level/LevelModel.php
index c16ee3b9..f4a7d18d 100644
--- a/WellnessLiving/Wl/Video/Level/LevelModel.php
+++ b/WellnessLiving/Wl/Video/Level/LevelModel.php
@@ -1,52 +1,52 @@
-<?php
-
-namespace WellnessLiving\Wl\Video\Level;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves, changes, or deletes a video level.
- */
-class LevelModel extends WlModelAbstract
-{
-  /**
-   * If `true`, confirmation is required to delete videos. Otherwise, this will be `false`.
-   *
-   * @delete get
-   * @var bool
-   */
-  public $is_delete_confirm;
-
-  /**
-   * The business key.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The video level key.
-   *
-   * @delete get
-   * @get get
-   * @post get,result
-   * @put get
-   * @var string
-   */
-  public $k_video_level;
-
-  /**
-   * The video level title.
-   *
-   * @post post
-   * @put post
-   * @var string
-   */
-  public $text_title;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Video\Level;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves, changes, or deletes a video level.
+ */
+class LevelModel extends WlModelAbstract
+{
+  /**
+   * If `true`, confirmation is required to delete videos. Otherwise, this will be `false`.
+   *
+   * @delete get
+   * @var bool
+   */
+  public $is_delete_confirm;
+
+  /**
+   * The business key.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The video level key.
+   *
+   * @delete get
+   * @get get
+   * @post get,result
+   * @put get
+   * @var string
+   */
+  public $k_video_level;
+
+  /**
+   * The video level title.
+   *
+   * @post post
+   * @put post
+   * @var string
+   */
+  public $text_title;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/Tag/TagListModel.php b/WellnessLiving/Wl/Video/Tag/TagListModel.php
index a9552753..df5f1d5b 100644
--- a/WellnessLiving/Wl/Video/Tag/TagListModel.php
+++ b/WellnessLiving/Wl/Video/Tag/TagListModel.php
@@ -1,34 +1,34 @@
-<?php
-
-namespace WellnessLiving\Wl\Video\Tag;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves video tags.
- */
-class TagListModel extends WlModelAbstract
-{
-  /**
-   * A list of video tags with the following structure: <dl>
-   *   <dt>string <var>k_video_tag</var></dt>
-   *   <dd>The video tag key.</dd>
-   *   <dt>string <var>text_title</var></dt>
-   *   <dd>The video tag title.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_tag_list = [];
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Video\Tag;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves video tags.
+ */
+class TagListModel extends WlModelAbstract
+{
+  /**
+   * A list of video tags with the following structure: <dl>
+   *   <dt>string <var>k_video_tag</var></dt>
+   *   <dd>The video tag key.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>The video tag title.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_tag_list = [];
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/Tag/TagModel.php b/WellnessLiving/Wl/Video/Tag/TagModel.php
index 845cf2f4..5d1d1152 100644
--- a/WellnessLiving/Wl/Video/Tag/TagModel.php
+++ b/WellnessLiving/Wl/Video/Tag/TagModel.php
@@ -1,52 +1,52 @@
-<?php
-
-namespace WellnessLiving\Wl\Video\Tag;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Retrieves, changes, or deletes a video tag.
- */
-class TagModel extends WlModelAbstract
-{
-  /**
-   * If `true`, confirmation is required to delete videos. Otherwise, this will be `false`.
-   *
-   * @delete get
-   * @var bool
-   */
-  public $is_delete_confirm;
-
-  /**
-   * The business key.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @put get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The video tag key.
-   *
-   * @delete get
-   * @get get
-   * @post get,result
-   * @put get
-   * @var string
-   */
-  public $k_video_tag;
-
-  /**
-   * The video tag title.
-   *
-   * @post post
-   * @put post
-   * @var string
-   */
-  public $text_title;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Video\Tag;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves, changes, or deletes a video tag.
+ */
+class TagModel extends WlModelAbstract
+{
+  /**
+   * If `true`, confirmation is required to delete videos. Otherwise, this will be `false`.
+   *
+   * @delete get
+   * @var bool
+   */
+  public $is_delete_confirm;
+
+  /**
+   * The business key.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @put get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The video tag key.
+   *
+   * @delete get
+   * @get get
+   * @post get,result
+   * @put get
+   * @var string
+   */
+  public $k_video_tag;
+
+  /**
+   * The video tag title.
+   *
+   * @post post
+   * @put post
+   * @var string
+   */
+  public $text_title;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/VideoElementModel.php b/WellnessLiving/Wl/Video/VideoElementModel.php
index a7281c9e..a1ee00fb 100644
--- a/WellnessLiving/Wl/Video/VideoElementModel.php
+++ b/WellnessLiving/Wl/Video/VideoElementModel.php
@@ -1,385 +1,385 @@
-<?php
-
-namespace WellnessLiving\Wl\Video;
-
-use WellnessLiving\Core\Sid\YesNoSid;
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Returns a list of video categories.
- */
-class VideoElementModel extends WlModelAbstract
-{
-  /**
-   * The keys of the locations where this video is available.
-   *
-   * @get result
-   * @post post
-   * @var string[]
-   */
-  public $a_location;
-
-  /**
-   * The keys of the staff members who are on the video.
-   *
-   * @get result
-   * @post post
-   * @var string[]
-   */
-  public $a_staff;
-
-  /**
-   * A list of staff members associated with the video. Every item has the following structure:<dl>
-   *   <dt>string <var>k_staff</var></dt>
-   *   <dd>The staff member key.</dd>
-   *   <dt>string <var>text_name</var></dt>
-   *   <dd>The staff member's full name.</dd>
-   * </dl>
-   *
-   * @get result
-   * @var array
-   */
-  public $a_staff_info;
-
-  /**
-   * The video category keys where this video can be found.
-   *
-   * @get result
-   * @post post
-   * @var string[]
-   */
-  public $a_video_category;
-
-  /**
-   * The video tag keys.
-   *
-   * @get result
-   * @post post
-   * @var string[]
-   */
-  public $a_video_tag;
-
-  /**
-   * The date and time when the video was published.
-   *
-   * This will be `null` if the published date is not set yet.
-   *
-   * @get result
-   * @post post
-   * @var string|null
-   */
-  public $dtl_publish;
-
-  /**
-   * The date and time when the video was unpublished.
-   *
-   * This will be `null` if the unpublished date is not set yet.
-   *
-   * @get result
-   * @post post
-   * @var string|null
-   */
-  public $dtl_unpublish;
-
-  /**
-   * The date when the video was uploaded.
-   *
-   * @get result
-   * @var string
-   */
-  public $dtl_upload;
-
-  /**
-   * Video file.
-   * This property is not used, but need for correct generate model.
-   *
-   * @post post
-   * @var array
-   */
-  public $file_video;
-
-  /**
-   * The count of burned calories associated with the video.
-   *
-   * @get result
-   * @post post
-   * @var int
-   */
-  public $i_calorie = 0;
-
-  /**
-   * The current time as a percentage of the video duration at which the user is at in the video.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_current_percent;
-
-  /**
-   * The current time in seconds at which the user is at in the video.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_current_time;
-
-  /**
-   * The video duration in seconds.
-   *
-   * @get result
-   * @post post
-   * @var int
-   */
-  public $i_duration;
-
-  /**
-   * The size of the uploaded file.
-   *
-   * If the file will be uploaded in parts, its size will be set.
-   *
-   * In this case, the file will not be uploaded to this API.
-   *
-   * @post post
-   * @var int|string
-   */
-  public $i_file_upload_size = '';
-
-  /**
-   * The number of video views.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_watch;
-
-  /**
-   * {@link YesNoSid::NO} if the video is available in all locations.
-   * {@link YesNoSid::YES} if the video is available only in certain locations.
-   *
-   * @get result
-   * @post post
-   * @var int
-   */
-  public $id_location_select;
-
-  /**
-   * If `true`, the API is being used from backend. Otherwise, this will be `false`.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @var bool
-   */
-  public $is_backend = false;
-
-  /**
-   * If `true`, the calorie count will be displayed on the video.
-   * If `false`, the calorie count will be hidden on the video.
-   *
-   * @get result
-   * @post post
-   * @var bool
-   */
-  public $is_calorie;
-
-  /**
-   * If `true`, the video is converted.
-   * If `false`, the video isn't converted.
-   *
-   * @get result
-   * @post get
-   * @var bool
-   */
-  public $is_converted;
-
-  /**
-   * If `true`, the video is published. Otherwise, this will be `false`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_published;
-
-  /**
-   * If `true`, the video level for the video is enabled.
-   * If `false`, the video level for the video is disabled.
-   *
-   * @get result
-   * @post post
-   * @var bool
-   */
-  public $is_video_level;
-
-  /**
-   * The business key.
-   *
-   * @delete get
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The video key.
-   *
-   * @delete get
-   * @get get
-   * @post get,result
-   * @var string
-   */
-  public $k_video;
-
-  /**
-   * The video category primary key.
-   *
-   * @get result
-   * @post post
-   * @var string
-   */
-  public $k_video_category_primary;
-
-  /**
-   * The video level key.
-   * This will be `0` if `All Levels` is selected.
-   *
-   * @get result
-   * @post post
-   * @var string
-   */
-  public $k_video_level;
-
-  /**
-   * The name of the command that has been executing when the exception occurred.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_command = '';
-
-  /**
-   * ID of the uploaded file.
-   * If the file will be uploaded in parts, upload ID will be set.
-   *
-   * In this case, the file will not be uploaded to this API.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_file_upload_id = '';
-
-  /**
-   * The real name of the uploaded file.
-   *
-   * If the file will be uploaded in parts, its name will be set.
-   *
-   * In this case, the file won't be uploaded to this API and the POST method won't
-   * return the result.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_file_upload_name = '';
-
-  /**
-   * The string representation of the video's key.
-   *
-   * This will be `null` if the video doesn't have a thumbnail image.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $s_preview_video_key;
-
-  /**
-   * The video thumbnail.
-   *
-   * @post post
-   * @var string
-   */
-  public $s_thumbnail;
-
-  /**
-   * If `false`, the calorie count for videos is hidden. Otherwise, this will be `true`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $show_calorie;
-
-  /**
-   * If `false`, video levels are hidden. Otherwise, this will be `true`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $show_level;
-
-  /**
-   * If `false`, the number of views for videos is hidden. Otherwise, this will be `true`.
-   *
-   * @get result
-   * @var bool
-   */
-  public $show_view;
-
-  /**
-   * The video level name.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_level_title;
-
-  /**
-   * The video name.
-   *
-   * @get result
-   * @post post
-   * @var string
-   */
-  public $text_title;
-
-  /**
-   * The URL of the video thumbnail.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_thumbnail;
-
-  /**
-   * The URL of the video on a WellnessLiving page.
-   *
-   * @get result
-   * @var string|null
-   */
-  public $url_video;
-
-  /**
-   * The direct URL of the video.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_video_direct;
-
-  /**
-   * The direct URL of the video for iframe.
-   *
-   * @get result
-   * @var string
-   */
-  public $url_video_frame;
-
-  /**
-   * The video description.
-   *
-   * @get result
-   * @post post
-   * @var string
-   */
-  public $xml_description;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Video;
+
+use WellnessLiving\Core\Sid\YesNoSid;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns a list of video categories.
+ */
+class VideoElementModel extends WlModelAbstract
+{
+  /**
+   * The keys of the locations where this video is available.
+   *
+   * @get result
+   * @post post
+   * @var string[]
+   */
+  public $a_location;
+
+  /**
+   * The keys of the staff members who are on the video.
+   *
+   * @get result
+   * @post post
+   * @var string[]
+   */
+  public $a_staff;
+
+  /**
+   * A list of staff members associated with the video. Every item has the following structure:<dl>
+   *   <dt>string <var>k_staff</var></dt>
+   *   <dd>The staff member key.</dd>
+   *   <dt>string <var>text_name</var></dt>
+   *   <dd>The staff member's full name.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_staff_info;
+
+  /**
+   * The video category keys where this video can be found.
+   *
+   * @get result
+   * @post post
+   * @var string[]
+   */
+  public $a_video_category;
+
+  /**
+   * The video tag keys.
+   *
+   * @get result
+   * @post post
+   * @var string[]
+   */
+  public $a_video_tag;
+
+  /**
+   * The date and time when the video was published.
+   *
+   * This will be `null` if the published date is not set yet.
+   *
+   * @get result
+   * @post post
+   * @var string|null
+   */
+  public $dtl_publish;
+
+  /**
+   * The date and time when the video was unpublished.
+   *
+   * This will be `null` if the unpublished date is not set yet.
+   *
+   * @get result
+   * @post post
+   * @var string|null
+   */
+  public $dtl_unpublish;
+
+  /**
+   * The date when the video was uploaded.
+   *
+   * @get result
+   * @var string
+   */
+  public $dtl_upload;
+
+  /**
+   * Video file.
+   * This property is not used, but need for correct generate model.
+   *
+   * @post post
+   * @var array
+   */
+  public $file_video;
+
+  /**
+   * The count of burned calories associated with the video.
+   *
+   * @get result
+   * @post post
+   * @var int
+   */
+  public $i_calorie = 0;
+
+  /**
+   * The current time as a percentage of the video duration at which the user is at in the video.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_current_percent;
+
+  /**
+   * The current time in seconds at which the user is at in the video.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_current_time;
+
+  /**
+   * The video duration in seconds.
+   *
+   * @get result
+   * @post post
+   * @var int
+   */
+  public $i_duration;
+
+  /**
+   * The size of the uploaded file.
+   *
+   * If the file will be uploaded in parts, its size will be set.
+   *
+   * In this case, the file will not be uploaded to this API.
+   *
+   * @post post
+   * @var int|string
+   */
+  public $i_file_upload_size = '';
+
+  /**
+   * The number of video views.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_watch;
+
+  /**
+   * {@link YesNoSid::NO} if the video is available in all locations.
+   * {@link YesNoSid::YES} if the video is available only in certain locations.
+   *
+   * @get result
+   * @post post
+   * @var int
+   */
+  public $id_location_select;
+
+  /**
+   * If `true`, the API is being used from backend. Otherwise, this will be `false`.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_backend = false;
+
+  /**
+   * If `true`, the calorie count will be displayed on the video.
+   * If `false`, the calorie count will be hidden on the video.
+   *
+   * @get result
+   * @post post
+   * @var bool
+   */
+  public $is_calorie;
+
+  /**
+   * If `true`, the video is converted.
+   * If `false`, the video isn't converted.
+   *
+   * @get result
+   * @post get
+   * @var bool
+   */
+  public $is_converted;
+
+  /**
+   * If `true`, the video is published. Otherwise, this will be `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_published;
+
+  /**
+   * If `true`, the video level for the video is enabled.
+   * If `false`, the video level for the video is disabled.
+   *
+   * @get result
+   * @post post
+   * @var bool
+   */
+  public $is_video_level;
+
+  /**
+   * The business key.
+   *
+   * @delete get
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The video key.
+   *
+   * @delete get
+   * @get get
+   * @post get,result
+   * @var string
+   */
+  public $k_video;
+
+  /**
+   * The video category primary key.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $k_video_category_primary;
+
+  /**
+   * The video level key.
+   * This will be `0` if `All Levels` is selected.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $k_video_level;
+
+  /**
+   * The name of the command that has been executing when the exception occurred.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_command = '';
+
+  /**
+   * ID of the uploaded file.
+   * If the file will be uploaded in parts, upload ID will be set.
+   *
+   * In this case, the file will not be uploaded to this API.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_file_upload_id = '';
+
+  /**
+   * The real name of the uploaded file.
+   *
+   * If the file will be uploaded in parts, its name will be set.
+   *
+   * In this case, the file won't be uploaded to this API and the POST method won't
+   * return the result.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_file_upload_name = '';
+
+  /**
+   * The string representation of the video's key.
+   *
+   * This will be `null` if the video doesn't have a thumbnail image.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $s_preview_video_key;
+
+  /**
+   * The video thumbnail.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_thumbnail;
+
+  /**
+   * If `false`, the calorie count for videos is hidden. Otherwise, this will be `true`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $show_calorie;
+
+  /**
+   * If `false`, video levels are hidden. Otherwise, this will be `true`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $show_level;
+
+  /**
+   * If `false`, the number of views for videos is hidden. Otherwise, this will be `true`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $show_view;
+
+  /**
+   * The video level name.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_level_title;
+
+  /**
+   * The video name.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $text_title;
+
+  /**
+   * The URL of the video thumbnail.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_thumbnail;
+
+  /**
+   * The URL of the video on a WellnessLiving page.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $url_video;
+
+  /**
+   * The direct URL of the video.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_video_direct;
+
+  /**
+   * The direct URL of the video for iframe.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_video_frame;
+
+  /**
+   * The video description.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $xml_description;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/VideoListModel.php b/WellnessLiving/Wl/Video/VideoListModel.php
index 1b3de74b..4390de19 100644
--- a/WellnessLiving/Wl/Video/VideoListModel.php
+++ b/WellnessLiving/Wl/Video/VideoListModel.php
@@ -1,173 +1,173 @@
-<?php
-
-namespace WellnessLiving\Wl\Video;
-
-use WellnessLiving\Core\Sid\SortOrderSid;
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Video\Catalog\Filter\Sort\FilterSortSid;
-
-/**
- * Returns a list of videos.
- */
-class VideoListModel extends WlModelAbstract
-{
-  /**
-   * The calorie range ascribed to the video to use for the search.
-   *
-   * <dl>
-   *  <dt>int [<var>i_from</var>]</dt>
-   *  <dd>The minimum number of calories.</dd>
-   *  <dt>int [<var>i_to</var>]</dt>
-   *  <dd>The maximum number of calories.</dd>
-   * </dl>
-   *
-   * @get get
-   * @var int[]
-   */
-  public $a_calorie = [];
-
-  /**
-   * The duration range ascribed to the video to use for the search.
-   * The interval is set in seconds.
-   *
-   * <dl>
-   *  <dt>int [<var>i_from</var>]</dt>
-   *  <dd>The minimum duration. </dd>
-   *  <dt>int [<var>i_to</var>]</dt>
-   *  <dd>The maximum duration.</dd>
-   * </dl>
-   *
-   * @get get
-   * @var int[]
-   */
-  public $a_duration = [];
-
-  /**
-   * A list of levels to show videos for. A level can refer to the difficulty ascribed to the video.
-   *
-   * @get get
-   * @var string[]
-   */
-  public $a_level = [];
-
-  /**
-   * A list of videos.
-   *
-   * @get result
-   * @var array[]
-   */
-  public $a_list = [];
-
-  /**
-   * A list of locations to show videos from.
-   *
-   * @get get
-   * @var string[]
-   */
-  public $a_location = [];
-
-  /**
-   * A list of shared video keys in their saved order.
-   *
-   * @put post
-   * @var string[]
-   */
-  public $a_order = [];
-
-  /**
-   * Pagination data.
-   *
-   * @get result
-   * @var array
-   */
-  public $a_page = [];
-
-  /**
-   * A list of staff members who appear in videos.
-   *
-   * @get get
-   * @var string[]
-   */
-  public $a_staff = [];
-
-  /**
-   * A list of video categories to show videos from.
-   *
-   * @get get
-   * @var string[]
-   */
-  public $a_video_category = [];
-
-  /**
-   * A list of video tags to show videos for.
-   *
-   * @get get
-   * @var string[]
-   */
-  public $a_video_tag = [];
-
-  /**
-   * Page to return.
-   *
-   * `null` if you need to return all the videos.
-   *
-   * @get get
-   * @var int|null
-   */
-  public $i_page = null;
-
-  /**
-   * Sort order ID. One of {@link SortOrderSid} constants. `null` or 0 if order is undefined and depends on sort order.
-   *
-   * @get get,result
-   * @var int|null
-   */
-  public $id_order = 0;
-
-  /**
-   * The sorting type.
-   * A constant from {@link FilterSortSid}. `null` or 0 if sort is undefined and custom sort order is used.
-   *
-   * @get get,result
-   * @var int|null
-   */
-  public $id_sort = 0;
-
-  /**
-   * If `true`, the API is being used from backend. Otherwise, this will be `false`.
-   *
-   * @get get
-   * @put get
-   * @var bool
-   */
-  public $is_backend = false;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @put get
-   * @var string
-   */
-  public $k_business = '';
-
-  /**
-   * The filter phrase to filter videos by name.
-   *
-   * @get get
-   * @var string
-   */
-  public $text_search = '';
-
-  /**
-   * UID of the client who request list of videos.
-   *
-   * `null` if user is not signed in.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $uid = null;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Video;
+
+use WellnessLiving\Core\Sid\SortOrderSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Video\Catalog\Filter\Sort\FilterSortSid;
+
+/**
+ * Returns a list of videos.
+ */
+class VideoListModel extends WlModelAbstract
+{
+  /**
+   * The calorie range ascribed to the video to use for the search.
+   *
+   * <dl>
+   *  <dt>int [<var>i_from</var>]</dt>
+   *  <dd>The minimum number of calories.</dd>
+   *  <dt>int [<var>i_to</var>]</dt>
+   *  <dd>The maximum number of calories.</dd>
+   * </dl>
+   *
+   * @get get
+   * @var int[]
+   */
+  public $a_calorie = [];
+
+  /**
+   * The duration range ascribed to the video to use for the search.
+   * The interval is set in seconds.
+   *
+   * <dl>
+   *  <dt>int [<var>i_from</var>]</dt>
+   *  <dd>The minimum duration. </dd>
+   *  <dt>int [<var>i_to</var>]</dt>
+   *  <dd>The maximum duration.</dd>
+   * </dl>
+   *
+   * @get get
+   * @var int[]
+   */
+  public $a_duration = [];
+
+  /**
+   * A list of levels to show videos for. A level can refer to the difficulty ascribed to the video.
+   *
+   * @get get
+   * @var string[]
+   */
+  public $a_level = [];
+
+  /**
+   * A list of videos.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_list = [];
+
+  /**
+   * A list of locations to show videos from.
+   *
+   * @get get
+   * @var string[]
+   */
+  public $a_location = [];
+
+  /**
+   * A list of shared video keys in their saved order.
+   *
+   * @put post
+   * @var string[]
+   */
+  public $a_order = [];
+
+  /**
+   * Pagination data.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_page = [];
+
+  /**
+   * A list of staff members who appear in videos.
+   *
+   * @get get
+   * @var string[]
+   */
+  public $a_staff = [];
+
+  /**
+   * A list of video categories to show videos from.
+   *
+   * @get get
+   * @var string[]
+   */
+  public $a_video_category = [];
+
+  /**
+   * A list of video tags to show videos for.
+   *
+   * @get get
+   * @var string[]
+   */
+  public $a_video_tag = [];
+
+  /**
+   * Page to return.
+   *
+   * `null` if you need to return all the videos.
+   *
+   * @get get
+   * @var int|null
+   */
+  public $i_page = null;
+
+  /**
+   * Sort order ID. One of {@link SortOrderSid} constants. `null` or 0 if order is undefined and depends on sort order.
+   *
+   * @get get,result
+   * @var int|null
+   */
+  public $id_order = 0;
+
+  /**
+   * The sorting type.
+   * A constant from {@link FilterSortSid}. `null` or 0 if sort is undefined and custom sort order is used.
+   *
+   * @get get,result
+   * @var int|null
+   */
+  public $id_sort = 0;
+
+  /**
+   * If `true`, the API is being used from backend. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @put get
+   * @var bool
+   */
+  public $is_backend = false;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @put get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The filter phrase to filter videos by name.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_search = '';
+
+  /**
+   * UID of the client who request list of videos.
+   *
+   * `null` if user is not signed in.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $uid = null;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/Watch/WatchModel.php b/WellnessLiving/Wl/Video/Watch/WatchModel.php
index 75bde326..09fe7603 100644
--- a/WellnessLiving/Wl/Video/Watch/WatchModel.php
+++ b/WellnessLiving/Wl/Video/Watch/WatchModel.php
@@ -1,65 +1,65 @@
-<?php
-
-namespace WellnessLiving\Wl\Video\Watch;
-
-use WellnessLiving\WlModelAbstract;
-
-/**
- * Saves information about a watched video.
- */
-class WatchModel extends WlModelAbstract
-{
-  /**
-   * The current time in seconds the user is at in the video.
-   *
-   * @post post
-   * @put post
-   * @var int
-   */
-  public $i_current_time;
-
-  /**
-   * The duration in seconds the user has watched the video for.
-   *
-   * @put post
-   * @var int
-   */
-  public $i_watched;
-
-  /**
-   * The source ID.
-   *
-   * @post post
-   * @var int
-   * @see WatchSourceSid
-   */
-  public $id_source;
-
-  /**
-   * The business key.
-   *
-   * @post post
-   * @put post
-   * @var string
-   */
-  public $k_business;
-
-  /**
-   * The video string key.
-   *
-   * @post post
-   * @var string
-   */
-  public $k_video;
-
-  /**
-   * The video watch key.
-   *
-   * @post result
-   * @put post
-   * @var string
-   */
-  public $k_video_watch;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Video\Watch;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Saves information about a watched video.
+ */
+class WatchModel extends WlModelAbstract
+{
+  /**
+   * The current time in seconds the user is at in the video.
+   *
+   * @post post
+   * @put post
+   * @var int
+   */
+  public $i_current_time;
+
+  /**
+   * The duration in seconds the user has watched the video for.
+   *
+   * @put post
+   * @var int
+   */
+  public $i_watched;
+
+  /**
+   * The source ID.
+   *
+   * @post post
+   * @var int
+   * @see WatchSourceSid
+   */
+  public $id_source;
+
+  /**
+   * The business key.
+   *
+   * @post post
+   * @put post
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * The video string key.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_video;
+
+  /**
+   * The video watch key.
+   *
+   * @post result
+   * @put post
+   * @var string
+   */
+  public $k_video_watch;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/Watch/WatchSourceSid.php b/WellnessLiving/Wl/Video/Watch/WatchSourceSid.php
index af29bae7..71e138cb 100644
--- a/WellnessLiving/Wl/Video/Watch/WatchSourceSid.php
+++ b/WellnessLiving/Wl/Video/Watch/WatchSourceSid.php
@@ -1,35 +1,35 @@
-<?php
-
-namespace WellnessLiving\Wl\Video\Watch;
-
-/**
- * List sources of the view video.
- *
- * Last used ID: 4
- */
-class WatchSourceSid
-{
-  /**
-   * Video watched from application.
-   */
-  const APP = 1;
-
-  /**
-   * Video watched from direct URL.
-   */
-  const DIRECT_URL = 2;
-
-  /**
-   * Video watched from frontend.
-   */
-  const FRONTEND = 3;
-
-  /**
-   * Source of watched is undefined.
-   *
-   * Used for old videos.
-   */
-  const UNDEFINED = 4;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Video\Watch;
+
+/**
+ * List sources of the view video.
+ *
+ * Last used ID: 4
+ */
+class WatchSourceSid
+{
+  /**
+   * Video watched from application.
+   */
+  const APP = 1;
+
+  /**
+   * Video watched from direct URL.
+   */
+  const DIRECT_URL = 2;
+
+  /**
+   * Video watched from frontend.
+   */
+  const FRONTEND = 3;
+
+  /**
+   * Source of watched is undefined.
+   *
+   * Used for old videos.
+   */
+  const UNDEFINED = 4;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Virtual/VirtualProviderSid.php b/WellnessLiving/Wl/Virtual/VirtualProviderSid.php
index a7192fc2..f590d2f4 100644
--- a/WellnessLiving/Wl/Virtual/VirtualProviderSid.php
+++ b/WellnessLiving/Wl/Virtual/VirtualProviderSid.php
@@ -1,23 +1,23 @@
-<?php
-
-namespace WellnessLiving\Wl\Virtual;
-
-/**
- * List of possible value of virtual integrations.
- *
- * Last used ID: 2.
- */
-class VirtualProviderSid
-{
-  /**
-   * Virtual integration non implemented.
-   */
-  const NON_INTEGRATED = 2;
-
-  /**
-   * Virtual Zoom service integration.
-   */
-  const ZOOM = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Virtual;
+
+/**
+ * List of possible value of virtual integrations.
+ *
+ * Last used ID: 2.
+ */
+class VirtualProviderSid
+{
+  /**
+   * Virtual integration non implemented.
+   */
+  const NON_INTEGRATED = 2;
+
+  /**
+   * Virtual Zoom service integration.
+   */
+  const ZOOM = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Visit/VisitStatusModel.php b/WellnessLiving/Wl/Visit/VisitStatusModel.php
index 8bc6ec60..66ec5270 100644
--- a/WellnessLiving/Wl/Visit/VisitStatusModel.php
+++ b/WellnessLiving/Wl/Visit/VisitStatusModel.php
@@ -1,240 +1,240 @@
-<?php
-
-namespace WellnessLiving\Wl\Visit;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
-
-/**
- * Views or changes the visit status.
- */
-class VisitStatusModel extends WlModelAbstract
-{
-  /**
-   * An array of service resources.
-   *
-   * The key refers to the `k_resource_type`.
-   * The value is an array with the following key: `k_resource`.
-   * The array element contains a nested array with `i_index` and `i_quantity`.
-   *
-   * This will be empty if not set yet.
-   *
-   * @get result
-   * @var ?array[]
-   */
-  public $a_resource = [];
-
-  /**
-   * The list of keys of staff members that conduct the class.
-   *
-   * @get result
-   * @var string[]
-   */
-  public $a_staff = [];
-
-  /**
-   * The visit date and time in UTC and in MySQL format.
-   *
-   * @get result
-   * @var string
-   */
-  public $dt_date = '';
-
-  /**
-   * The visit date in the location's time zone and in MySQL format.
-   *
-   * @get result
-   * @var string
-   */
-  public $dtl_date = '';
-
-  /**
-   * The service duration (in minutes).
-   *
-   * @get result
-   * @var int
-   */
-  public $i_duration = 0;
-
-  /**
-   * The client's place in a waiting list.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_wait_spot = 0;
-
-  /**
-   * The source of the visit or the visit change.
-   * One of the {@link ModeSid} constants.
-   * If you're unsure about the value to use, keep the default value.
-   *
-   * @get result
-   * @post post
-   * @var int
-   */
-  public $id_mode = 0;
-
-  /**
-   * The status of the visit.
-   * One of the {@link WlVisitSid} constants.
-   *
-   * @get result
-   * @post post
-   * @var string
-   */
-  public $id_visit = '0';
-
-  /**
-   * The status of the visit from which the transition is made. One of the {@link WlVisitSid} constants.
-   *
-   * If the visit status is passed, it will be used to check with the actual status in the database.
-   * If `null`, the visit hasn't yet passed.
-   *
-   * If the status of this parameter is out of date, the API call will refresh it.
-   *
-   * @post post,error
-   * @var ?string
-   */
-  public $id_visit_from = null;
-
-  /**
-   * The staff decision to charge (or not charge) a penalty when a client meets late cancel/no-show requirements.
-   *
-   * If `true`, a late cancel fee should be charged. Otherwise, this will be `false`.
-   *
-   * @post get
-   * @var bool
-   */
-  public $is_charge_fee = true;
-
-  /**
-   * Determines whether the visit is from an event.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_event = false;
-
-  /**
-   * The business key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * The class key.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_class = '';
-
-  /**
-   * The class period key.
-   *
-   * @get result
-   * @var string
-   */
-  public $k_class_period = '';
-
-  /**
-   * The email pattern key.
-   * If `null`, the live email pattern shouldn't be used.
-   *
-   * @post get
-   * @var string|null
-   */
-  public $k_mail_pattern_live = null;
-
-  /**
-   * The service key.
-   * If 'null', the visit isn't from an appointment.
-   *
-   * @get result
-   * @var ?string
-   */
-  public $k_service = null;
-
-  /**
-   * The key of the staff providing the appointment.
-   * If `null`, the visit isn't from an appointment (for example, the visit is from an asset).
-   *
-   * @get result
-   * @var string|null
-   */
-  public $k_staff = null;
-
-  /**
-   * The time zone key.
-   *
-   * `null` if not set then use default timezone client.
-   *
-   * @get get
-   * @var null|string
-   */
-  public $k_timezone = null;
-
-  /**
-   * The visit key.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_visit = '0';
-
-  /**
-   * The .ics file for adding the service to a phone calendar.
-   *
-   * @get result
-   * @var string
-   */
-  public $s_calendar_file_content = '';
-
-  /**
-   * The text abbreviation of the time zone.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_abbr_timezone = '';
-
-  /**
-   * The full address of the location for the visit (not the name of the location).
-   *
-   * @get result
-   * @var string
-   */
-  public $text_location = '';
-
-  /**
-   * The reason the visit was canceled.
-   *
-   * @post get
-   * @var string
-   */
-  public $text_reason = '';
-
-  /**
-   * The full name of the staff member who conducts this visit.
-   * If there are several staff members conducting the visit, their names will all be listed and separated by commas.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_staff = '';
-
-  /**
-   * The service title.
-   *
-   * @get result
-   * @var string
-   */
-  public $text_title = '';
-}
-
+<?php
+
+namespace WellnessLiving\Wl\Visit;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
+
+/**
+ * Views or changes the visit status.
+ */
+class VisitStatusModel extends WlModelAbstract
+{
+  /**
+   * An array of service resources.
+   *
+   * The key refers to the `k_resource_type`.
+   * The value is an array with the following key: `k_resource`.
+   * The array element contains a nested array with `i_index` and `i_quantity`.
+   *
+   * This will be empty if not set yet.
+   *
+   * @get result
+   * @var ?array[]
+   */
+  public $a_resource = [];
+
+  /**
+   * The list of keys of staff members that conduct the class.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_staff = [];
+
+  /**
+   * The visit date and time in UTC and in MySQL format.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_date = '';
+
+  /**
+   * The visit date in the location's time zone and in MySQL format.
+   *
+   * @get result
+   * @var string
+   */
+  public $dtl_date = '';
+
+  /**
+   * The service duration (in minutes).
+   *
+   * @get result
+   * @var int
+   */
+  public $i_duration = 0;
+
+  /**
+   * The client's place in a waiting list.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_wait_spot = 0;
+
+  /**
+   * The source of the visit or the visit change.
+   * One of the {@link ModeSid} constants.
+   * If you're unsure about the value to use, keep the default value.
+   *
+   * @get result
+   * @post post
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * The status of the visit.
+   * One of the {@link WlVisitSid} constants.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $id_visit = '0';
+
+  /**
+   * The status of the visit from which the transition is made. One of the {@link WlVisitSid} constants.
+   *
+   * If the visit status is passed, it will be used to check with the actual status in the database.
+   * If `null`, the visit hasn't yet passed.
+   *
+   * If the status of this parameter is out of date, the API call will refresh it.
+   *
+   * @post post,error
+   * @var ?string
+   */
+  public $id_visit_from = null;
+
+  /**
+   * The staff decision to charge (or not charge) a penalty when a client meets late cancel/no-show requirements.
+   *
+   * If `true`, a late cancel fee should be charged. Otherwise, this will be `false`.
+   *
+   * @post get
+   * @var bool
+   */
+  public $is_charge_fee = true;
+
+  /**
+   * Determines whether the visit is from an event.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_event = false;
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The class key.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_class = '';
+
+  /**
+   * The class period key.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_class_period = '';
+
+  /**
+   * The email pattern key.
+   * If `null`, the live email pattern shouldn't be used.
+   *
+   * @post get
+   * @var string|null
+   */
+  public $k_mail_pattern_live = null;
+
+  /**
+   * The service key.
+   * If 'null', the visit isn't from an appointment.
+   *
+   * @get result
+   * @var ?string
+   */
+  public $k_service = null;
+
+  /**
+   * The key of the staff providing the appointment.
+   * If `null`, the visit isn't from an appointment (for example, the visit is from an asset).
+   *
+   * @get result
+   * @var string|null
+   */
+  public $k_staff = null;
+
+  /**
+   * The time zone key.
+   *
+   * `null` if not set then use default timezone client.
+   *
+   * @get get
+   * @var null|string
+   */
+  public $k_timezone = null;
+
+  /**
+   * The visit key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_visit = '0';
+
+  /**
+   * The .ics file for adding the service to a phone calendar.
+   *
+   * @get result
+   * @var string
+   */
+  public $s_calendar_file_content = '';
+
+  /**
+   * The text abbreviation of the time zone.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_abbr_timezone = '';
+
+  /**
+   * The full address of the location for the visit (not the name of the location).
+   *
+   * @get result
+   * @var string
+   */
+  public $text_location = '';
+
+  /**
+   * The reason the visit was canceled.
+   *
+   * @post get
+   * @var string
+   */
+  public $text_reason = '';
+
+  /**
+   * The full name of the staff member who conducts this visit.
+   * If there are several staff members conducting the visit, their names will all be listed and separated by commas.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_staff = '';
+
+  /**
+   * The service title.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_title = '';
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlActivationSid.php b/WellnessLiving/Wl/WlActivationSid.php
index d53a69bf..ea4daea4 100644
--- a/WellnessLiving/Wl/WlActivationSid.php
+++ b/WellnessLiving/Wl/WlActivationSid.php
@@ -1,50 +1,50 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * Promotion or package date start rule.
- *
- * sale - date start is a date of the sale.
- * redeem - date start is a date of the first client visit by this promotion or package.
- * fixed - date start is fixed by promotion or package settings and saved in DB.
- */
-abstract class WlActivationSid
-{
-  /**
-   * Number of a day of the month or of the week.
-   */
-  const DAY = 7;
-
-  /**
-   * Custom date.
-   */
-  const FIXED = 3;
-
-  /**
-   * The first day of month.
-   */
-  const MONTH_FIRST = 4;
-
-  /**
-   * The 15th day of the month.
-   */
-  const MONTH_HALF = 6;
-
-  /**
-   * The last day of the month.
-   */
-  const MONTH_LAST = 5;
-
-  /**
-   * Date of the sale.
-   */
-  const SALE = 1;
-
-  /**
-   * Date of the first visit.
-   */
-  const VISIT = 2;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * Promotion or package date start rule.
+ *
+ * sale - date start is a date of the sale.
+ * redeem - date start is a date of the first client visit by this promotion or package.
+ * fixed - date start is fixed by promotion or package settings and saved in DB.
+ */
+abstract class WlActivationSid
+{
+  /**
+   * Number of a day of the month or of the week.
+   */
+  const DAY = 7;
+
+  /**
+   * Custom date.
+   */
+  const FIXED = 3;
+
+  /**
+   * The first day of month.
+   */
+  const MONTH_FIRST = 4;
+
+  /**
+   * The 15th day of the month.
+   */
+  const MONTH_HALF = 6;
+
+  /**
+   * The last day of the month.
+   */
+  const MONTH_LAST = 5;
+
+  /**
+   * Date of the sale.
+   */
+  const SALE = 1;
+
+  /**
+   * Date of the first visit.
+   */
+  const VISIT = 2;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlAgeSid.php b/WellnessLiving/Wl/WlAgeSid.php
index 41d62c9e..00c057ac 100644
--- a/WellnessLiving/Wl/WlAgeSid.php
+++ b/WellnessLiving/Wl/WlAgeSid.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * List of ages, which are suitable for visiting this location.
- */
-abstract class WlAgeSid
-{
-  /**
-   * An adult.
-   */
-  const ADULT = 2;
-
-  /**
-   * A kid.
-   */
-  const KID = 1;
-
-  /**
-   * Natal.
-   */
-  const NATAL = 4;
-
-  /**
-   * Senior.
-   */
-  const SENIOR = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * List of ages, which are suitable for visiting this location.
+ */
+abstract class WlAgeSid
+{
+  /**
+   * An adult.
+   */
+  const ADULT = 2;
+
+  /**
+   * A kid.
+   */
+  const KID = 1;
+
+  /**
+   * Natal.
+   */
+  const NATAL = 4;
+
+  /**
+   * Senior.
+   */
+  const SENIOR = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlClassModifyActionSid.php b/WellnessLiving/Wl/WlClassModifyActionSid.php
index 342b65ca..aa6a2354 100644
--- a/WellnessLiving/Wl/WlClassModifyActionSid.php
+++ b/WellnessLiving/Wl/WlClassModifyActionSid.php
@@ -1,26 +1,26 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * The list of possible actions for class modify wizard.
- */
-abstract class WlClassModifyActionSid
-{
-  /**
-   * Cancel class schedule.
-   */
-  const CANCEL = 2;
-
-  /**
-   * Change class schedule.
-   */
-  const EDIT = 1;
-
-  /**
-   * Restore cancelled schedule.
-   */
-  const RESTORE = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * The list of possible actions for class modify wizard.
+ */
+abstract class WlClassModifyActionSid
+{
+  /**
+   * Cancel class schedule.
+   */
+  const CANCEL = 2;
+
+  /**
+   * Change class schedule.
+   */
+  const EDIT = 1;
+
+  /**
+   * Restore cancelled schedule.
+   */
+  const RESTORE = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlClassModifyModeSid.php b/WellnessLiving/Wl/WlClassModifyModeSid.php
index b82f5f7b..a2d660c1 100644
--- a/WellnessLiving/Wl/WlClassModifyModeSid.php
+++ b/WellnessLiving/Wl/WlClassModifyModeSid.php
@@ -1,31 +1,31 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * The list of possible modify mode for class modify wizard.
- */
-abstract class WlClassModifyModeSid
-{
-  /**
-   * Edit class schedule
-   */
-  const FULL = 1;
-
-  /**
-   * Edit instructor in class schedule
-   */
-  const INSTRUCTOR = 2;
-
-  /**
-   * Asset working hours
-   */
-  const RESOURCE_PERIOD = 4;
-
-  /**
-   * Staff working hours
-   */
-  const STAFF_PERIOD = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * The list of possible modify mode for class modify wizard.
+ */
+abstract class WlClassModifyModeSid
+{
+  /**
+   * Edit class schedule
+   */
+  const FULL = 1;
+
+  /**
+   * Edit instructor in class schedule
+   */
+  const INSTRUCTOR = 2;
+
+  /**
+   * Asset working hours
+   */
+  const RESOURCE_PERIOD = 4;
+
+  /**
+   * Staff working hours
+   */
+  const STAFF_PERIOD = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlClassModifyStepSid.php b/WellnessLiving/Wl/WlClassModifyStepSid.php
index 99a91eb1..6bef3a5a 100644
--- a/WellnessLiving/Wl/WlClassModifyStepSid.php
+++ b/WellnessLiving/Wl/WlClassModifyStepSid.php
@@ -1,37 +1,37 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * Steps to be passed through to change or cancel class schedule.
- */
-abstract class WlClassModifyStepSid
-{
-  /**
-   * List of the impacted clients, configuration of possible notifications.
-   * Can be skipped if there are no impacted clients.
-   */
-  const CLIENT = 4;
-
-  /**
-   * List of changes, count of impacted classes and clients, confirmation.
-   */
-  const CONFIRM = 5;
-
-  /**
-   * Config schedule changes. Available on for edit action.
-   */
-  const FORM = 3;
-
-  /**
-   * Select which classes within chosen date range will be modified.
-   */
-  const ITEM = 2;
-
-  /**
-   * Choose when the action will be applied.
-   */
-  const PERIOD = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * Steps to be passed through to change or cancel class schedule.
+ */
+abstract class WlClassModifyStepSid
+{
+  /**
+   * List of the impacted clients, configuration of possible notifications.
+   * Can be skipped if there are no impacted clients.
+   */
+  const CLIENT = 4;
+
+  /**
+   * List of changes, count of impacted classes and clients, confirmation.
+   */
+  const CONFIRM = 5;
+
+  /**
+   * Config schedule changes. Available on for edit action.
+   */
+  const FORM = 3;
+
+  /**
+   * Select which classes within chosen date range will be modified.
+   */
+  const ITEM = 2;
+
+  /**
+   * Choose when the action will be applied.
+   */
+  const PERIOD = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlFacilitySid.php b/WellnessLiving/Wl/WlFacilitySid.php
index 98ac1c6a..76813a56 100644
--- a/WellnessLiving/Wl/WlFacilitySid.php
+++ b/WellnessLiving/Wl/WlFacilitySid.php
@@ -1,88 +1,88 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * Type of facilities available at a location.
- *
- * Last ID: 15.
- */
-abstract class WlFacilitySid
-{
-  /**
-   * The location has basketball courts.
-   */
-  const BASKETBALL_COURTS = 8;
-
-  /**
-   * The location has change rooms.
-   */
-  const CHANGE_ROOM = 1;
-
-  /**
-   * The location has childcare services.
-   */
-  const CHILDCARE = 14;
-
-  /**
-   * The location has a juice bar.
-   */
-  const JUICE_BAR = 15;
-
-  /**
-   * The location has lockers available for clients.
-   */
-  const LOCKERS = 2;
-
-  /**
-   * The location has a pro-shop.
-   */
-  const PRO_SHOP = 12;
-
-  /**
-   * The location has racquetball courts.
-   */
-  const RACQUETBALL_COURTS = 7;
-
-  /**
-   * The location has saunas.
-   */
-  const SAUNA = 10;
-
-  /**
-   * The location has showers.
-   */
-  const SHOWERS = 4;
-
-  /**
-   * The location has a spa.
-   */
-  const SPA = 9;
-
-  /**
-   * The location has squash courts.
-   */
-  const SQUASH_COURTS = 6;
-
-  /**
-   * The location has a swimming pool.
-   */
-  const SWIMMING_POOL = 11;
-
-  /**
-   * This location provides towel service.
-   */
-  const TOWEL_SERVICE = 5;
-
-  /**
-   * This location has washrooms for clients.
-   */
-  const WASHROOMS = 3;
-
-  /**
-   * This location has a woman's only area.
-   */
-  const WOMAN_ONLY_AREA = 13;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * Type of facilities available at a location.
+ *
+ * Last ID: 15.
+ */
+abstract class WlFacilitySid
+{
+  /**
+   * The location has basketball courts.
+   */
+  const BASKETBALL_COURTS = 8;
+
+  /**
+   * The location has change rooms.
+   */
+  const CHANGE_ROOM = 1;
+
+  /**
+   * The location has childcare services.
+   */
+  const CHILDCARE = 14;
+
+  /**
+   * The location has a juice bar.
+   */
+  const JUICE_BAR = 15;
+
+  /**
+   * The location has lockers available for clients.
+   */
+  const LOCKERS = 2;
+
+  /**
+   * The location has a pro-shop.
+   */
+  const PRO_SHOP = 12;
+
+  /**
+   * The location has racquetball courts.
+   */
+  const RACQUETBALL_COURTS = 7;
+
+  /**
+   * The location has saunas.
+   */
+  const SAUNA = 10;
+
+  /**
+   * The location has showers.
+   */
+  const SHOWERS = 4;
+
+  /**
+   * The location has a spa.
+   */
+  const SPA = 9;
+
+  /**
+   * The location has squash courts.
+   */
+  const SQUASH_COURTS = 6;
+
+  /**
+   * The location has a swimming pool.
+   */
+  const SWIMMING_POOL = 11;
+
+  /**
+   * This location provides towel service.
+   */
+  const TOWEL_SERVICE = 5;
+
+  /**
+   * This location has washrooms for clients.
+   */
+  const WASHROOMS = 3;
+
+  /**
+   * This location has a woman's only area.
+   */
+  const WOMAN_ONLY_AREA = 13;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlHomeTourSid.php b/WellnessLiving/Wl/WlHomeTourSid.php
index 4365e268..c76b23e1 100644
--- a/WellnessLiving/Wl/WlHomeTourSid.php
+++ b/WellnessLiving/Wl/WlHomeTourSid.php
@@ -1,138 +1,138 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * List of different types  for landing pages based on business types.
- *
- * Last ID: 26
- */
-abstract class WlHomeTourSid
-{
-  /**
-   * Boot camps.
-   */
-  const BOOTCAMP = 24;
-
-  /**
-   * Boxing studios.
-   */
-  const BOXING = 25;
-
-  /**
-   * Special industry free landing page with only contact us form.
-   */
-  const BUSINESS_MANAGEMENT = 21;
-
-  /**
-   * Health clubs.
-   */
-  const CLUB = 10;
-
-  /**
-   * Affiliate Gym.
-   */
-  const CROSSFIT = 9;
-
-  /**
-   * Dance studios.
-   */
-  const DANCE = 11;
-
-  /**
-   * Dental studios.
-   */
-  const DENTAL = 14;
-
-  /**
-   * Fitness gyms.
-   */
-  const FITNESS = 6;
-
-  /**
-   * Fitness gyms.
-   */
-  const GYM = 22;
-
-  /**
-   * Health clubs.
-   */
-  const HEALTH_CLUB = 23;
-
-  /**
-   * Martial arts.
-   */
-  const MARTIAL_ART = 8;
-
-  /**
-   * Massage salons.
-   */
-  const MASSAGE = 4;
-
-  /**
-   * Alternative medical offices.
-   */
-  const MEDICINE_ALTERNATIVE = 15;
-
-  /**
-   * Hospitals and private doctors.
-   */
-  const MEDICINE_TRADITIONAL = 13;
-
-  /**
-   * Music schools.
-   */
-  const MUSIC = 19;
-
-  /**
-   * Personal trainings.
-   */
-  const PERSONAL_TRAINING = 5;
-
-  /**
-   * Pilates.
-   */
-  const PILATES = 7;
-
-  /**
-   * Pole dancing studios.
-   */
-  const POLE_DANCING = 18;
-
-  /**
-   * Salons.
-   */
-  const SALON = 3;
-
-  /**
-   * Spa salons.
-   */
-  const SPA = 2;
-
-  /**
-   * Spinning.
-   */
-  const SPINNING = 17;
-
-  /**
-   * Tours and events.
-   */
-  const TOUR = 12;
-
-  /**
-   * Wellness Centers
-   */
-  const WELLNESS_CENTER = 20;
-
-  /**
-   * Yoga.
-   */
-  const YOGA = 1;
-
-  /**
-   * Zumba.
-   */
-  const ZUMBA = 27;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * List of different types  for landing pages based on business types.
+ *
+ * Last ID: 26
+ */
+abstract class WlHomeTourSid
+{
+  /**
+   * Boot camps.
+   */
+  const BOOTCAMP = 24;
+
+  /**
+   * Boxing studios.
+   */
+  const BOXING = 25;
+
+  /**
+   * Special industry free landing page with only contact us form.
+   */
+  const BUSINESS_MANAGEMENT = 21;
+
+  /**
+   * Health clubs.
+   */
+  const CLUB = 10;
+
+  /**
+   * Affiliate Gym.
+   */
+  const CROSSFIT = 9;
+
+  /**
+   * Dance studios.
+   */
+  const DANCE = 11;
+
+  /**
+   * Dental studios.
+   */
+  const DENTAL = 14;
+
+  /**
+   * Fitness gyms.
+   */
+  const FITNESS = 6;
+
+  /**
+   * Fitness gyms.
+   */
+  const GYM = 22;
+
+  /**
+   * Health clubs.
+   */
+  const HEALTH_CLUB = 23;
+
+  /**
+   * Martial arts.
+   */
+  const MARTIAL_ART = 8;
+
+  /**
+   * Massage salons.
+   */
+  const MASSAGE = 4;
+
+  /**
+   * Alternative medical offices.
+   */
+  const MEDICINE_ALTERNATIVE = 15;
+
+  /**
+   * Hospitals and private doctors.
+   */
+  const MEDICINE_TRADITIONAL = 13;
+
+  /**
+   * Music schools.
+   */
+  const MUSIC = 19;
+
+  /**
+   * Personal trainings.
+   */
+  const PERSONAL_TRAINING = 5;
+
+  /**
+   * Pilates.
+   */
+  const PILATES = 7;
+
+  /**
+   * Pole dancing studios.
+   */
+  const POLE_DANCING = 18;
+
+  /**
+   * Salons.
+   */
+  const SALON = 3;
+
+  /**
+   * Spa salons.
+   */
+  const SPA = 2;
+
+  /**
+   * Spinning.
+   */
+  const SPINNING = 17;
+
+  /**
+   * Tours and events.
+   */
+  const TOUR = 12;
+
+  /**
+   * Wellness Centers
+   */
+  const WELLNESS_CENTER = 20;
+
+  /**
+   * Yoga.
+   */
+  const YOGA = 1;
+
+  /**
+   * Zumba.
+   */
+  const ZUMBA = 27;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlPayProcessorSid.php b/WellnessLiving/Wl/WlPayProcessorSid.php
index c7744c9c..62ec2d34 100644
--- a/WellnessLiving/Wl/WlPayProcessorSid.php
+++ b/WellnessLiving/Wl/WlPayProcessorSid.php
@@ -1,46 +1,46 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * A list of payment gateways or processors.
- */
-abstract class WlPayProcessorSid
-{
-  /**
-   * Payment gateway for `cybersource.com`.
-   */
-  const CYBER_SOURCE = 11;
-
-  /**
-   * Payment gateway for Direct Connect.
-   */
-  const DIRECT_CONNECT = 9;
-
-  /**
-   * Payment gateway for Lucy.
-   */
-  const LUCY = 2;
-
-  /**
-   * Payment gateway for Netbanx.
-   */
-  const NETBANX = 1;
-
-  /**
-   * Payment gateway for NMI.
-   */
-  const NMI = 6;
-
-  /**
-   * Payment gateway for {@link http://www.paychoice.com.au/ Paychoice}.
-   */
-  const PAYCHOICE = 7;
-
-  /**
-   * Payment gateway for `stripe.com`.
-   */
-  const STRIPE_COM = 10;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * A list of payment gateways or processors.
+ */
+abstract class WlPayProcessorSid
+{
+  /**
+   * Payment gateway for `cybersource.com`.
+   */
+  const CYBER_SOURCE = 11;
+
+  /**
+   * Payment gateway for Direct Connect.
+   */
+  const DIRECT_CONNECT = 9;
+
+  /**
+   * Payment gateway for Lucy.
+   */
+  const LUCY = 2;
+
+  /**
+   * Payment gateway for Netbanx.
+   */
+  const NETBANX = 1;
+
+  /**
+   * Payment gateway for NMI.
+   */
+  const NMI = 6;
+
+  /**
+   * Payment gateway for {@link http://www.paychoice.com.au/ Paychoice}.
+   */
+  const PAYCHOICE = 7;
+
+  /**
+   * Payment gateway for `stripe.com`.
+   */
+  const STRIPE_COM = 10;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlPrivilegeRoleSid.php b/WellnessLiving/Wl/WlPrivilegeRoleSid.php
index fabcece2..44a49185 100644
--- a/WellnessLiving/Wl/WlPrivilegeRoleSid.php
+++ b/WellnessLiving/Wl/WlPrivilegeRoleSid.php
@@ -1,41 +1,41 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * String identifiers for rs.privilege.role.
- *
- * Do not reorder class constants. It is important during selecting all system roles and custom roles from database.
- */
-abstract class WlPrivilegeRoleSid
-{
-  /**
-   * Staff role business owner.
-   *
-   * @title Business Owner
-   */
-  const BUSINESS_OWNER = 1;
-
-  /**
-   * Staff role front desk.
-   *
-   * @title Front Desk
-   */
-  const FRONT_DESK = 4;
-
-  /**
-   * Staff role instructor.
-   *
-   * @title Instructor
-   */
-  const INSTRUCTOR = 3;
-
-  /**
-   * Staff role location owner.
-   *
-   * @title Manager
-   */
-  const LOCATION_OWNER = 2;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * String identifiers for rs.privilege.role.
+ *
+ * Do not reorder class constants. It is important during selecting all system roles and custom roles from database.
+ */
+abstract class WlPrivilegeRoleSid
+{
+  /**
+   * Staff role business owner.
+   *
+   * @title Business Owner
+   */
+  const BUSINESS_OWNER = 1;
+
+  /**
+   * Staff role front desk.
+   *
+   * @title Front Desk
+   */
+  const FRONT_DESK = 4;
+
+  /**
+   * Staff role instructor.
+   *
+   * @title Instructor
+   */
+  const INSTRUCTOR = 3;
+
+  /**
+   * Staff role location owner.
+   *
+   * @title Manager
+   */
+  const LOCATION_OWNER = 2;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlPrivilegeSid.php b/WellnessLiving/Wl/WlPrivilegeSid.php
index 50111b90..f29d9df8 100644
--- a/WellnessLiving/Wl/WlPrivilegeSid.php
+++ b/WellnessLiving/Wl/WlPrivilegeSid.php
@@ -1,941 +1,941 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * Wellnessliving-wide privileges.
- *
- * Last Used ID: 200.
- */
-abstract class WlPrivilegeSid
-{
-  /**
-   * View banner alert message on dashboard.
-   */
-  const ALERT_MESSAGE = 142;
-
-  /**
-   * Unpaid appointment booking.
-   */
-  const APPOINTMENT_BOOK_UNPAID = 167;
-
-  /**
-   * Edit appointment at my location.
-   */
-  const APPOINTMENT_EDIT = 50;
-
-  /**
-   * Change/View all appointment.
-   */
-  const APPOINTMENT_FOREIGN = 49;
-
-  /**
-   * Edit appointment schedule.
-   *
-   * @deprecated Use instead {@link WlPrivilegeSid::SCHEDULE_FUTURE_APPOINTMENT} and {@link WlPrivilegeSid::SCHEDULE_PAST_APPOINTMENT}.
-   */
-  const APPOINTMENT_PERIOD = 51;
-
-  /**
-   * View appointment.
-   */
-  const APPOINTMENT_VIEW = 52;
-
-  /**
-   * Ability to book clients outside of their current paid period.
-   */
-  const BOOK_OUTSIDE_PAID_PERIOD = 141;
-
-  /**
-   * Ability to book clients over capacity during or after the services have been scheduled.
-   */
-  const BOOK_OVER_CAPACITY = 154;
-
-  /**
-   * Ability to book assets which are booked for another service or set as unavailable.
-   */
-  const BOOK_UNAVAILABLE_ASSETS = 138;
-
-  /**
-   * Ability to schedule staff members who are booked for another service or set as unavailable.
-   */
-  const BOOK_UNAVAILABLE_STAFF = 137;
-
-  /**
-   * Manage business.
-   */
-  const BUSINESS_EDIT = 1;
-
-  /**
-   * Change business email settings.
-   */
-  const BUSINESS_EMAIL = 117;
-
-  /**
-   * Change business policies.
-   */
-  const BUSINESS_POLICY = 120;
-
-  /**
-   * Change available services in business.
-   */
-  const BUSINESS_SERVICE = 118;
-
-  /**
-   * Change services privileges apply.
-   */
-  const BUSINESS_SERVICE_APPLY = 145;
-
-  /**
-   * Change services privileges apply (third button requires second privilege).
-   */
-  const BUSINESS_SERVICE_APPLY_CUSTOM = 165;
-
-  /**
-   * Change Design Settings.
-   */
-  const BUSINESS_SKIN = 19;
-
-  /**
-   * Change business SMS settings.
-   */
-  const BUSINESS_SMS = 169;
-
-  /**
-   * Change business URLs.
-   */
-  const BUSINESS_URL = 119;
-
-  /**
-   * Change business online waiver.
-   */
-  const BUSINESS_WAIVER = 121;
-
-  /**
-   * Perform Cash Out.
-   */
-  const CASH_OUT = 82;
-
-  /**
-   * Edit deposits while perform Cash Out.
-   */
-  const CASH_OUT_DEPOSIT = 83;
-
-  /**
-   * Perform editing of Cash Out.
-   */
-  const CASH_OUT_EDIT = 84;
-
-  /**
-   * Manage clients' Credit Cards.
-   */
-  const CC_MANAGE = 35;
-
-  /**
-   * Edit class schedule.
-   */
-  const CLASS_ATTENDANCE = 48;
-
-  /**
-   * Add clients to the attendance list of a service, even if they do not have an applicable purchase option.
-   */
-  const CLASS_BOOK_UNPAID = 79;
-
-  /**
-   * Edit classes at my location.
-   */
-  const CLASS_EDIT = 3;
-
-  /**
-   * Change/View all classes.
-   */
-  const CLASS_FOREIGN = 17;
-
-  /**
-   * Lock search bar on class attendance list.
-   */
-  const CLASS_LOCK_SEARCH = 152;
-
-  /**
-   * Edit class schedule.
-   *
-   * @deprecated Use instead {@link WlPrivilegeSid::SCHEDULE_FUTURE_CLASS} and {@link WlPrivilegeSid::SCHEDULE_PAST_CLASS}.
-   */
-  const CLASS_PERIOD = 5;
-
-  /**
-   * Add and view client's contact logs.
-   */
-  const CONTACT_LOG_MANAGE = 135;
-
-  /**
-   * Add, remove, and edit gift cards.
-   */
-  const COUPON = 31;
-
-  /**
-   * Delete shared dashboard.
-   */
-  const DASHBOARD_DELETE = 131;
-
-  /**
-   * Edit shared dashboard.
-   */
-  const DASHBOARD_EDIT = 130;
-
-  /**
-   * Share dashboard.
-   */
-  const DASHBOARD_SHARE = 129;
-
-  /**
-   * Add, remove and edit discount codes.
-   */
-  const DISCOUNT_CODE = 76;
-
-  /**
-   * Configure Constant Contact settings.
-   */
-  const EML_CONSTANT_CONTACT = 123;
-
-  /**
-   * Configure MailChimp settings.
-   */
-  const EML_MAILCHIMP = 122;
-
-  /**
-   * Edit class schedule.
-   */
-  const ENROLLMENT_ATTENDANCE = 55;
-
-  /**
-   * Add clients to the attendance list of a service, even if they do not have an applicable purchase option.
-   */
-  const ENROLLMENT_BOOK_UNPAID = 80;
-
-  /**
-   * Edit classes at my location.
-   */
-  const ENROLLMENT_EDIT = 54;
-
-  /**
-   * Change/View all classes.
-   */
-  const ENROLLMENT_FOREIGN = 53;
-
-  /**
-   * Lock search bar on enrollment attendance list.
-   */
-  const ENROLLMENT_LOCK_SEARCH = 153;
-
-  /**
-   * Allows to manage leaderboard in the `FitBuilder` addon.
-   */
-  const FITBUILDER_LEADERBOARD = 190;
-
-  /**
-   * Allows to subscribe to `FitBuilder` subscription addon.
-   */
-  const FITBUILDER_SUBSCRIPTION = 189;
-
-  /**
-   * Allows to assign workouts from the `FitBuilder` addon to different services.
-   */
-  const FITBUILDER_WORKOUT_ASSIGN = 188;
-
-  /**
-   * Allows to add, edit and remove workouts in the `FitBuilder` addon.
-   */
-  const FITBUILDER_WORKOUT_MANAGE = 187;
-
-  /**
-   * Allow Staff members to view/complete forms for clients from any location.
-   */
-  const FORM_ALL = 177;
-
-  /**
-   * Amend apply to privilege.
-   *
-   * @internal Don't use this privilege directly.
-   */
-  const FORM_AMEND_ACCESS = 198;
-
-  /**
-   * Allow staff members to make modifications to completed forms on the client profile.
-   */
-  const FORM_AMEND_COMPLETED = 194;
-
-  /**
-   * Allow staff members to make modifications to completed forms on the client profile for all clients.
-   */
-  const FORM_AMEND_COMPLETED_ALL = 195;
-
-  /**
-   * Allow staff members to make modifications to completed forms on the client profile for clients at staff location.
-   */
-  const FORM_AMEND_COMPLETED_LOCATION = 196;
-
-  /**
-   * Allow staff members to make modifications to completed forms on the client profile for self clients.
-   */
-  const FORM_AMEND_COMPLETED_MY_CLIENTS = 197;
-
-  /**
-   * Allow staff members to fill in forms for clients.
-   */
-  const FORM_COMPLETE = 178;
-
-  /**
-   * Allow staff members to add, edit and delete forms.
-   */
-  const FORM_MANAGE = 160;
-
-  /**
-   * Allow Staff members to view/complete forms for clients that belong to them through service offerings.
-   */
-  const FORM_MY_CLIENTS = 175;
-
-  /**
-   * Allow Staff members to view/complete forms for clients that belong to the location that they are selected to work at.
-   */
-  const FORM_MY_LOCATION = 176;
-
-  /**
-   * Allow staff members to delete forms from the client’s profile.
-   */
-  const FORM_RESPONSE_DELETE = 199;
-
-  /**
-   * Allow staff members to view form responses.
-   */
-  const FORM_VIEW_RESPONSE = 161;
-
-  /**
-   * Add holidays.
-   */
-  const HOLIDAY = 7;
-
-  /**
-   * Set up and modify Autymate integration.
-   */
-  const INTEGRATION_AUTYMATE = 163;
-
-  /**
-   * Set up and modify Brivo integration.
-   */
-  const INTEGRATION_BRIVO = 179;
-
-  /**
-   * Enroll into and manage the WellnessLiving Achieve App. These settings are located under Setup > Achieve Client App.
-   */
-  const INTERFACE_ACHIEVE_APP = 87;
-
-  /**
-   * Modify the look and functionality business’s widgets. These settings are located within Setup > Widgets.
-   */
-  const INTERFACE_WIDGET_EDIT = 39;
-
-  /**
-   * View the look and functionality business’s widgets. These settings are located within Setup > Widgets.
-   */
-  const INTERFACE_WIDGET_VIEW = 110;
-
-  /**
-   * Permission to Receive or Adjust quantity from the Inventory On Hand Report.
-   */
-  const INVENTORY_UPDATE = 157;
-
-  /**
-   * Manage my locations except General information.
-   */
-  const LOCATION_EDIT = 9;
-
-  /**
-   * Manage tab Location -> General.
-   */
-  const LOCATION_EDIT_GENERAL = 126;
-
-  /**
-   * Manage all locations.
-   */
-  const LOCATION_FOREIGN = 8;
-
-  /**
-   * Manage franchise locations.
-   */
-  const LOCATION_FRANCHISE = 109;
-
-  /**
-   * Add client notes and warnings.
-   */
-  const LOGIN_NOTE = 11;
-
-  /**
-   * Flag clients.
-   */
-  const LOGIN_NOTE_RESTRICT = 12;
-
-  /**
-   * Logs view.
-   */
-  const LOG_VIEW = 101;
-
-  /**
-   * Access to send mails and sms to clients.
-   */
-  const MAIL_SEND = 75;
-
-  /**
-   * Manage announcements.
-   */
-  const MANAGE_ANNOUNCEMENT = 200;
-
-  /**
-   * Only the staff roles with this permission provided are able to edit/add/delete the business billing information.
-   */
-  const MANAGE_BILLING_INFORMATION = 134;
-
-  /**
-   * Manage hardware readers.
-   */
-  const MANAGE_READERS = 181;
-
-  /**
-   * Enable, disable, and edit daily deals.
-   */
-  const MARKETING_DD = 43;
-
-  /**
-   * Settings pertaining to all automated marketing to clients.
-   */
-  const MARKETING_EMAIL = 42;
-
-  /**
-   * Enabling this permission for a role will enable making and receiving calls in Message Center.
-   */
-  const MESSAGES_CALLS = 173;
-
-  /**
-   * Enabling this permission for a role will enable the role to use the ‘Assign to’ field and assign a conversation to a staff member.
-   */
-  const MESSAGES_CONVERSATIONS = 174;
-
-  /**
-   * Enabling this permission for a role will grant access to the inbox tab including viewing and sending messages in the Message Center.
-   */
-  const MESSAGES_MANAGE = 170;
-
-  /**
-   * Enabling this permission for a role will grant access to the Settings tab including modifying phone number(s) for the business.
-   */
-  const MESSAGES_SETTINGS = 171;
-
-  /**
-   * Enabling this permission for a role will grant access and changes to the Subscription Plans tab.
-   */
-  const MESSAGES_SUBSCRIPTION = 172;
-
-  /**
-   * Receive new appointment booking / request notification.
-   */
-  const NOTIFICATION_APPOINTMENT_BOOK = 60;
-
-  /**
-   * Receive appointment cancellation notification.
-   */
-  const NOTIFICATION_APPOINTMENT_CANCEL = 61;
-
-  /**
-   * Receive appointment change notification.
-   */
-  const NOTIFICATION_APPOINTMENT_CHANGE = 59;
-
-  /**
-   * Receive class attendance list.
-   */
-  const NOTIFICATION_CLASS_ATTENDANCE = 56;
-
-  /**
-   * Receive client class booking notification.
-   */
-  const NOTIFICATION_CLASS_BOOK = 57;
-
-  /**
-   * Receive client class cancelation notification.
-   */
-  const NOTIFICATION_CLASS_CANCEL = 58;
-
-  /**
-   * Receive event attendance list.
-   */
-  const NOTIFICATION_EVENT_ATTENDANCE = 62;
-
-  /**
-   * Receive client event booking notification.
-   */
-  const NOTIFICATION_EVENT_BOOK = 63;
-
-  /**
-   * Receive client event cancellation notification.
-   */
-  const NOTIFICATION_EVENT_CANCEL = 64;
-
-  /**
-   * Permissions apply to all appointment schedules.
-   */
-  const NOTIFICATION_FOREIGN = 65;
-
-  /**
-   * Receive new lead capture widget notification.
-   */
-  const NOTIFICATION_LEAD_CAPTURE = 159;
-
-  /**
-   * Staff with this role will receive emails about reward prizes.
-   */
-  const NOTIFICATION_PRIZE_REDEMPTION = 90;
-
-  /**
-   * Staff with this role will receive the inventory mails.
-   */
-  const NOTIFICATION_PRODUCT_INVENTORY = 77;
-
-  /**
-   * Receive new quiz notification form staff.
-   */
-  const NOTIFICATION_QUIZ = 162;
-
-  /**
-   * Staff with this role will receive customer review notifications.
-   */
-  const NOTIFICATION_REVIEW = 66;
-
-  /**
-   * Staff with this role will receive the sale receipts mails.
-   */
-  const NOTIFICATION_SALE_STAFF = 136;
-
-  /**
-   * Override late cancel and no show fees.
-   */
-  const OVERRIDE_FEE = 164;
-
-  /**
-   * Manage partner program.
-   */
-  const PARTNER_PROGRAM_MANAGE = 94;
-
-  /**
-   * Access to Payment Processing.
-   */
-  const PAYMENT_PROCESSING = 166;
-
-  /**
-   * Permission to perform Physical Inventory Count.
-   */
-  const PHYSICAL_INVENTORY_COUNT = 156;
-
-  /**
-   * Staff member with this role will be able to send postcards.
-   */
-  const POSTCARD_SEND = 88;
-
-  /**
-   * Delete shared power searches.
-   */
-  const POWER_SEARCH_DELETE = 106;
-
-  /**
-   * Edit shared power searches.
-   */
-  const POWER_SEARCH_EDIT = 105;
-
-  /**
-   * Share power searches with other staff members.
-   */
-  const POWER_SEARCH_SHARE = 107;
-
-  /**
-   * Ability to request subscription plan for custom website.
-   */
-  const PRESENCE = 149;
-
-  /**
-   * Edit products but not product name and description.
-   */
-  const PRODUCT_DESCRIPTION_EDIT = 113;
-
-  /**
-   * Add, remove, and edit products in the online store.
-   */
-  const PRODUCT_MANAGE = 34;
-
-  /**
-   * Manage all clients.
-   */
-  const PROFILE_ALL = 24;
-
-  /**
-   * This permission allows users to view client details throughout the interface.
-   */
-  const PROFILE_DETAIL = 67;
-
-  /**
-   * Manage profile client groups (only create, delete and rename a group).
-   */
-  const PROFILE_GROUP_MANAGE = 69;
-
-  /**
-   * Manage client group members (only members, not a group itself).
-   */
-  const PROFILE_GROUP_MEMBER_MANAGE = 191;
-
-  /**
-   * Manage clients from my location.
-   */
-  const PROFILE_MY_LOCATION = 86;
-
-  /**
-   * Manage profile client type.
-   */
-  const PROFILE_TYPE_EDIT = 68;
-
-  /**
-   * Manage all clients.
-   */
-  const PROFILE_VIEW = 13;
-
-  /**
-   * Manage progress log.
-   */
-  const PROGRESS_LOG_MANAGE = 102;
-
-  /**
-   * Edit progress log in profile.
-   */
-  const PROGRESS_LOG_PROFILE = 104;
-
-  /**
-   * Add, remove, and edit purchase options and packages for services.
-   */
-  const PROMOTION_MANAGE = 25;
-
-  /**
-   * Allows to edit only base information about purchase option.
-   */
-  const PROMOTION_MANAGE_BASE = 127;
-
-  /**
-   * Access to edit client purchases (passes and memberships).
-   */
-  const PURCHASE_EDIT = 93;
-
-  /**
-   * Access to view client purchases (passes and memberships).
-   */
-  const PURCHASE_VIEW = 92;
-
-  /**
-   * Allow to see alerts.
-   */
-  const RECEIVE_ALERT = 193;
-
-  /**
-   * Access to view reports for all staff.
-   *
-   * If staff has no this privilege then he can view only reports for them self.
-   */
-  const REPORT_ALL = 71;
-
-  /**
-   * Reports attendance.
-   */
-  const REPORT_ATTENDANCE = 27;
-
-  /**
-   * Reports client.
-   */
-  const REPORT_CLIENT = 26;
-
-  /**
-   * Reports with cash closeout information.
-   */
-  const REPORT_CLOSEOUT = 85;
-
-  /**
-   * Export and print button in reports.
-   */
-  const REPORT_EXPORT_PRINT = 186;
-
-  /**
-   * Reports with franchise information.
-   */
-  const REPORT_FRANCHISE = 108;
-
-  /**
-   * Wellness Programs reports.
-   */
-  const REPORT_INSURANCE = 115;
-
-  /**
-   * Ability to generate, export and import insurance reimbursement files.
-   */
-  const REPORT_INSURANCE_FILE = 155;
-
-  /**
-   * Reports emails.
-   */
-  const REPORT_MAIL = 30;
-
-  /**
-   * Reports sales.
-   */
-  const REPORT_SALE = 29;
-
-  /**
-   * Ability to view purchase report for specific user.
-   */
-  const REPORT_SALE_USER = 125;
-
-  /**
-   * Reports staff.
-   */
-  const REPORT_STAFF = 28;
-
-  /**
-   * Manage assets.
-   */
-  const RESOURCE = 37;
-
-  /**
-   * Unpaid asset booking.
-   */
-  const RESOURCE_BOOK_UNPAID = 168;
-
-  /**
-   * Mark client reviews as inappropriate and respond to customer comments.
-   */
-  const REVIEW_FLAG = 18;
-
-  /**
-   * Create contests on the leaderboard.
-   */
-  const REWARD_LEADERBOARD = 44;
-
-  /**
-   * Rules related to point accumulation.
-   */
-  const REWARD_POINT_MANAGE = 46;
-
-  /**
-   * Clear the total accumulated points for all clients.
-   */
-  const REWARD_POINT_RESET = 45;
-
-  /**
-   * Define prizes and the number of points that are required to redeem.
-   */
-  const REWARD_PRIZE = 47;
-
-  /**
-   * Enable SABA single sign on and create SABA accounts.
-   */
-  const SABA = 116;
-
-  /**
-   * View canceled classes from the schedule.
-   */
-  const SCHEDULE_CANCELED_CLASS = 139;
-
-  /**
-   * View canceled classes from the schedule.
-   */
-  const SCHEDULE_CANCELED_ENROLLMENT = 140;
-
-  /**
-   * Scheduling and editing future sessions of the appointments.
-   */
-  const SCHEDULE_FUTURE_APPOINTMENT = 95;
-
-  /**
-   * Scheduling sessions of the assets.
-   */
-  const SCHEDULE_FUTURE_ASSETS = 128;
-
-  /**
-   * Scheduling and editing future sessions of the classes.
-   */
-  const SCHEDULE_FUTURE_CLASS = 96;
-
-  /**
-   * Scheduling and editing future sessions of the events.
-   */
-  const SCHEDULE_FUTURE_EVENT = 99;
-
-  /**
-   * Scheduling and editing past sessions of the appointments.
-   */
-  const SCHEDULE_PAST_APPOINTMENT = 97;
-
-  /**
-   * Scheduling and editing past sessions of the classes.
-   */
-  const SCHEDULE_PAST_CLASS = 98;
-
-  /**
-   * Scheduling and editing past sessions of the events.
-   */
-  const SCHEDULE_PAST_EVENT = 100;
-
-  /**
-   * Allows sign service agreement.
-   */
-  const SERVICE_AGREEMENT_SIGN = 133;
-
-  /**
-   * View, modify and delete shop categories.
-   */
-  const SHOP_CATEGORY = 78;
-
-  /**
-   * Modify the clock-in and clock-out times for staff members.
-   */
-  const STAFF_CLOCK = 32;
-
-  /**
-   * Add, remove, and edit staff profiles.
-   */
-  const STAFF_EDIT = 14;
-
-  /**
-   * Edit own staff profile.
-   */
-  const STAFF_EDIT_OWN = 150;
-
-  /**
-   * Modify pay rates for products and Purchase Options.
-   */
-  const STAFF_MODIFY_RATES_PRODUCT = 184;
-
-  /**
-   * Modify pay rates for services.
-   */
-  const STAFF_MODIFY_RATES_SERVICE = 183;
-
-  /**
-   * Modify the clock-in and clock-out times for your own staff profile.
-   */
-  const STAFF_MY_CLOCK = 192;
-
-  /**
-   * Add, remove, and edit staff pay rates.
-   */
-  const STAFF_PAY_ALL = 20;
-
-  /**
-   * Change staff role on the staff edit page.
-   */
-  const STAFF_ROLE_CHANGE = 72;
-
-  /**
-   * Edit staff role on the staff role page.
-   */
-  const STAFF_ROLE_EDIT = 124;
-
-  /**
-   * Create/Edit/Remove staff working hours.
-   */
-  const STAFF_WORKING_HOURS = 144;
-
-  /**
-   * Allow staff to override staff commission at the point of sale.
-   */
-  const STORE_COMMISSION_OVERRIDE = 185;
-
-  /**
-   * Temporarily modify the price of products and services at the point of sale.
-   */
-  const STORE_PRICE = 41;
-
-  /**
-   * Access to the point of sale store to facilitate the sale of products and services.
-   */
-  const STORE_SELL = 40;
-
-  /**
-   * Access to view and edit store settings.
-   */
-  const STORE_SETTINGS_EDIT = 143;
-
-  /**
-   * Add, remove, and edit supplier profiles.
-   */
-  const SUPPLIER_MANAGE = 114;
-
-  /**
-   * Access to add tasks.
-   */
-  const TASK_ADD = 111;
-
-  /**
-   * Access to view all tasks for all members.
-   */
-  const TASK_ALL = 70;
-
-  /**
-   * Access to edit tasks.
-   */
-  const TASK_EDIT = 112;
-
-  /**
-   * Access to transaction details.
-   */
-  const TRANSACTION_DETAIL = 81;
-
-  /**
-   * Access to edit transaction.
-   */
-  const TRANSACTION_EDIT = 89;
-
-  /**
-   * Access to refund transaction.
-   */
-  const TRANSACTION_REFUND = 91;
-
-  /**
-   * Access to view and change list of video categories.
-   */
-  const VIDEO_CATEGORY = 146;
-
-  /**
-   * Access to view and change videos in the business video library.
-   */
-  const VIDEO_SETUP = 147;
-
-  /**
-   * Set up and modify FitLIVE integration.
-   */
-  const VIRTUAL_SETUP = 158;
-
-  /**
-   * Access to edit, delete visit notes.
-   */
-  const VISIT_NOTE_EDIT = 74;
-
-  /**
-   * Access to view visit notes.
-   */
-  const VISIT_NOTE_VIEW = 73;
-
-  /**
-   * Access to WellnessLiving Academy.
-   */
-  const WELLNESSLIVING_ACADEMY = 151;
-
-  /**
-   * Allow access to manage integration with Zapier.
-   */
-  const ZAPIER = 180;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * Wellnessliving-wide privileges.
+ *
+ * Last Used ID: 200.
+ */
+abstract class WlPrivilegeSid
+{
+  /**
+   * View banner alert message on dashboard.
+   */
+  const ALERT_MESSAGE = 142;
+
+  /**
+   * Unpaid appointment booking.
+   */
+  const APPOINTMENT_BOOK_UNPAID = 167;
+
+  /**
+   * Edit appointment at my location.
+   */
+  const APPOINTMENT_EDIT = 50;
+
+  /**
+   * Change/View all appointment.
+   */
+  const APPOINTMENT_FOREIGN = 49;
+
+  /**
+   * Edit appointment schedule.
+   *
+   * @deprecated Use instead {@link WlPrivilegeSid::SCHEDULE_FUTURE_APPOINTMENT} and {@link WlPrivilegeSid::SCHEDULE_PAST_APPOINTMENT}.
+   */
+  const APPOINTMENT_PERIOD = 51;
+
+  /**
+   * View appointment.
+   */
+  const APPOINTMENT_VIEW = 52;
+
+  /**
+   * Ability to book clients outside of their current paid period.
+   */
+  const BOOK_OUTSIDE_PAID_PERIOD = 141;
+
+  /**
+   * Ability to book clients over capacity during or after the services have been scheduled.
+   */
+  const BOOK_OVER_CAPACITY = 154;
+
+  /**
+   * Ability to book assets which are booked for another service or set as unavailable.
+   */
+  const BOOK_UNAVAILABLE_ASSETS = 138;
+
+  /**
+   * Ability to schedule staff members who are booked for another service or set as unavailable.
+   */
+  const BOOK_UNAVAILABLE_STAFF = 137;
+
+  /**
+   * Manage business.
+   */
+  const BUSINESS_EDIT = 1;
+
+  /**
+   * Change business email settings.
+   */
+  const BUSINESS_EMAIL = 117;
+
+  /**
+   * Change business policies.
+   */
+  const BUSINESS_POLICY = 120;
+
+  /**
+   * Change available services in business.
+   */
+  const BUSINESS_SERVICE = 118;
+
+  /**
+   * Change services privileges apply.
+   */
+  const BUSINESS_SERVICE_APPLY = 145;
+
+  /**
+   * Change services privileges apply (third button requires second privilege).
+   */
+  const BUSINESS_SERVICE_APPLY_CUSTOM = 165;
+
+  /**
+   * Change Design Settings.
+   */
+  const BUSINESS_SKIN = 19;
+
+  /**
+   * Change business SMS settings.
+   */
+  const BUSINESS_SMS = 169;
+
+  /**
+   * Change business URLs.
+   */
+  const BUSINESS_URL = 119;
+
+  /**
+   * Change business online waiver.
+   */
+  const BUSINESS_WAIVER = 121;
+
+  /**
+   * Perform Cash Out.
+   */
+  const CASH_OUT = 82;
+
+  /**
+   * Edit deposits while perform Cash Out.
+   */
+  const CASH_OUT_DEPOSIT = 83;
+
+  /**
+   * Perform editing of Cash Out.
+   */
+  const CASH_OUT_EDIT = 84;
+
+  /**
+   * Manage clients' Credit Cards.
+   */
+  const CC_MANAGE = 35;
+
+  /**
+   * Edit class schedule.
+   */
+  const CLASS_ATTENDANCE = 48;
+
+  /**
+   * Add clients to the attendance list of a service, even if they do not have an applicable purchase option.
+   */
+  const CLASS_BOOK_UNPAID = 79;
+
+  /**
+   * Edit classes at my location.
+   */
+  const CLASS_EDIT = 3;
+
+  /**
+   * Change/View all classes.
+   */
+  const CLASS_FOREIGN = 17;
+
+  /**
+   * Lock search bar on class attendance list.
+   */
+  const CLASS_LOCK_SEARCH = 152;
+
+  /**
+   * Edit class schedule.
+   *
+   * @deprecated Use instead {@link WlPrivilegeSid::SCHEDULE_FUTURE_CLASS} and {@link WlPrivilegeSid::SCHEDULE_PAST_CLASS}.
+   */
+  const CLASS_PERIOD = 5;
+
+  /**
+   * Add and view client's contact logs.
+   */
+  const CONTACT_LOG_MANAGE = 135;
+
+  /**
+   * Add, remove, and edit gift cards.
+   */
+  const COUPON = 31;
+
+  /**
+   * Delete shared dashboard.
+   */
+  const DASHBOARD_DELETE = 131;
+
+  /**
+   * Edit shared dashboard.
+   */
+  const DASHBOARD_EDIT = 130;
+
+  /**
+   * Share dashboard.
+   */
+  const DASHBOARD_SHARE = 129;
+
+  /**
+   * Add, remove and edit discount codes.
+   */
+  const DISCOUNT_CODE = 76;
+
+  /**
+   * Configure Constant Contact settings.
+   */
+  const EML_CONSTANT_CONTACT = 123;
+
+  /**
+   * Configure MailChimp settings.
+   */
+  const EML_MAILCHIMP = 122;
+
+  /**
+   * Edit class schedule.
+   */
+  const ENROLLMENT_ATTENDANCE = 55;
+
+  /**
+   * Add clients to the attendance list of a service, even if they do not have an applicable purchase option.
+   */
+  const ENROLLMENT_BOOK_UNPAID = 80;
+
+  /**
+   * Edit classes at my location.
+   */
+  const ENROLLMENT_EDIT = 54;
+
+  /**
+   * Change/View all classes.
+   */
+  const ENROLLMENT_FOREIGN = 53;
+
+  /**
+   * Lock search bar on enrollment attendance list.
+   */
+  const ENROLLMENT_LOCK_SEARCH = 153;
+
+  /**
+   * Allows to manage leaderboard in the `FitBuilder` addon.
+   */
+  const FITBUILDER_LEADERBOARD = 190;
+
+  /**
+   * Allows to subscribe to `FitBuilder` subscription addon.
+   */
+  const FITBUILDER_SUBSCRIPTION = 189;
+
+  /**
+   * Allows to assign workouts from the `FitBuilder` addon to different services.
+   */
+  const FITBUILDER_WORKOUT_ASSIGN = 188;
+
+  /**
+   * Allows to add, edit and remove workouts in the `FitBuilder` addon.
+   */
+  const FITBUILDER_WORKOUT_MANAGE = 187;
+
+  /**
+   * Allow Staff members to view/complete forms for clients from any location.
+   */
+  const FORM_ALL = 177;
+
+  /**
+   * Amend apply to privilege.
+   *
+   * @internal Don't use this privilege directly.
+   */
+  const FORM_AMEND_ACCESS = 198;
+
+  /**
+   * Allow staff members to make modifications to completed forms on the client profile.
+   */
+  const FORM_AMEND_COMPLETED = 194;
+
+  /**
+   * Allow staff members to make modifications to completed forms on the client profile for all clients.
+   */
+  const FORM_AMEND_COMPLETED_ALL = 195;
+
+  /**
+   * Allow staff members to make modifications to completed forms on the client profile for clients at staff location.
+   */
+  const FORM_AMEND_COMPLETED_LOCATION = 196;
+
+  /**
+   * Allow staff members to make modifications to completed forms on the client profile for self clients.
+   */
+  const FORM_AMEND_COMPLETED_MY_CLIENTS = 197;
+
+  /**
+   * Allow staff members to fill in forms for clients.
+   */
+  const FORM_COMPLETE = 178;
+
+  /**
+   * Allow staff members to add, edit and delete forms.
+   */
+  const FORM_MANAGE = 160;
+
+  /**
+   * Allow Staff members to view/complete forms for clients that belong to them through service offerings.
+   */
+  const FORM_MY_CLIENTS = 175;
+
+  /**
+   * Allow Staff members to view/complete forms for clients that belong to the location that they are selected to work at.
+   */
+  const FORM_MY_LOCATION = 176;
+
+  /**
+   * Allow staff members to delete forms from the client’s profile.
+   */
+  const FORM_RESPONSE_DELETE = 199;
+
+  /**
+   * Allow staff members to view form responses.
+   */
+  const FORM_VIEW_RESPONSE = 161;
+
+  /**
+   * Add holidays.
+   */
+  const HOLIDAY = 7;
+
+  /**
+   * Set up and modify Autymate integration.
+   */
+  const INTEGRATION_AUTYMATE = 163;
+
+  /**
+   * Set up and modify Brivo integration.
+   */
+  const INTEGRATION_BRIVO = 179;
+
+  /**
+   * Enroll into and manage the WellnessLiving Achieve App. These settings are located under Setup > Achieve Client App.
+   */
+  const INTERFACE_ACHIEVE_APP = 87;
+
+  /**
+   * Modify the look and functionality business’s widgets. These settings are located within Setup > Widgets.
+   */
+  const INTERFACE_WIDGET_EDIT = 39;
+
+  /**
+   * View the look and functionality business’s widgets. These settings are located within Setup > Widgets.
+   */
+  const INTERFACE_WIDGET_VIEW = 110;
+
+  /**
+   * Permission to Receive or Adjust quantity from the Inventory On Hand Report.
+   */
+  const INVENTORY_UPDATE = 157;
+
+  /**
+   * Manage my locations except General information.
+   */
+  const LOCATION_EDIT = 9;
+
+  /**
+   * Manage tab Location -> General.
+   */
+  const LOCATION_EDIT_GENERAL = 126;
+
+  /**
+   * Manage all locations.
+   */
+  const LOCATION_FOREIGN = 8;
+
+  /**
+   * Manage franchise locations.
+   */
+  const LOCATION_FRANCHISE = 109;
+
+  /**
+   * Add client notes and warnings.
+   */
+  const LOGIN_NOTE = 11;
+
+  /**
+   * Flag clients.
+   */
+  const LOGIN_NOTE_RESTRICT = 12;
+
+  /**
+   * Logs view.
+   */
+  const LOG_VIEW = 101;
+
+  /**
+   * Access to send mails and sms to clients.
+   */
+  const MAIL_SEND = 75;
+
+  /**
+   * Manage announcements.
+   */
+  const MANAGE_ANNOUNCEMENT = 200;
+
+  /**
+   * Only the staff roles with this permission provided are able to edit/add/delete the business billing information.
+   */
+  const MANAGE_BILLING_INFORMATION = 134;
+
+  /**
+   * Manage hardware readers.
+   */
+  const MANAGE_READERS = 181;
+
+  /**
+   * Enable, disable, and edit daily deals.
+   */
+  const MARKETING_DD = 43;
+
+  /**
+   * Settings pertaining to all automated marketing to clients.
+   */
+  const MARKETING_EMAIL = 42;
+
+  /**
+   * Enabling this permission for a role will enable making and receiving calls in Message Center.
+   */
+  const MESSAGES_CALLS = 173;
+
+  /**
+   * Enabling this permission for a role will enable the role to use the ‘Assign to’ field and assign a conversation to a staff member.
+   */
+  const MESSAGES_CONVERSATIONS = 174;
+
+  /**
+   * Enabling this permission for a role will grant access to the inbox tab including viewing and sending messages in the Message Center.
+   */
+  const MESSAGES_MANAGE = 170;
+
+  /**
+   * Enabling this permission for a role will grant access to the Settings tab including modifying phone number(s) for the business.
+   */
+  const MESSAGES_SETTINGS = 171;
+
+  /**
+   * Enabling this permission for a role will grant access and changes to the Subscription Plans tab.
+   */
+  const MESSAGES_SUBSCRIPTION = 172;
+
+  /**
+   * Receive new appointment booking / request notification.
+   */
+  const NOTIFICATION_APPOINTMENT_BOOK = 60;
+
+  /**
+   * Receive appointment cancellation notification.
+   */
+  const NOTIFICATION_APPOINTMENT_CANCEL = 61;
+
+  /**
+   * Receive appointment change notification.
+   */
+  const NOTIFICATION_APPOINTMENT_CHANGE = 59;
+
+  /**
+   * Receive class attendance list.
+   */
+  const NOTIFICATION_CLASS_ATTENDANCE = 56;
+
+  /**
+   * Receive client class booking notification.
+   */
+  const NOTIFICATION_CLASS_BOOK = 57;
+
+  /**
+   * Receive client class cancelation notification.
+   */
+  const NOTIFICATION_CLASS_CANCEL = 58;
+
+  /**
+   * Receive event attendance list.
+   */
+  const NOTIFICATION_EVENT_ATTENDANCE = 62;
+
+  /**
+   * Receive client event booking notification.
+   */
+  const NOTIFICATION_EVENT_BOOK = 63;
+
+  /**
+   * Receive client event cancellation notification.
+   */
+  const NOTIFICATION_EVENT_CANCEL = 64;
+
+  /**
+   * Permissions apply to all appointment schedules.
+   */
+  const NOTIFICATION_FOREIGN = 65;
+
+  /**
+   * Receive new lead capture widget notification.
+   */
+  const NOTIFICATION_LEAD_CAPTURE = 159;
+
+  /**
+   * Staff with this role will receive emails about reward prizes.
+   */
+  const NOTIFICATION_PRIZE_REDEMPTION = 90;
+
+  /**
+   * Staff with this role will receive the inventory mails.
+   */
+  const NOTIFICATION_PRODUCT_INVENTORY = 77;
+
+  /**
+   * Receive new quiz notification form staff.
+   */
+  const NOTIFICATION_QUIZ = 162;
+
+  /**
+   * Staff with this role will receive customer review notifications.
+   */
+  const NOTIFICATION_REVIEW = 66;
+
+  /**
+   * Staff with this role will receive the sale receipts mails.
+   */
+  const NOTIFICATION_SALE_STAFF = 136;
+
+  /**
+   * Override late cancel and no show fees.
+   */
+  const OVERRIDE_FEE = 164;
+
+  /**
+   * Manage partner program.
+   */
+  const PARTNER_PROGRAM_MANAGE = 94;
+
+  /**
+   * Access to Payment Processing.
+   */
+  const PAYMENT_PROCESSING = 166;
+
+  /**
+   * Permission to perform Physical Inventory Count.
+   */
+  const PHYSICAL_INVENTORY_COUNT = 156;
+
+  /**
+   * Staff member with this role will be able to send postcards.
+   */
+  const POSTCARD_SEND = 88;
+
+  /**
+   * Delete shared power searches.
+   */
+  const POWER_SEARCH_DELETE = 106;
+
+  /**
+   * Edit shared power searches.
+   */
+  const POWER_SEARCH_EDIT = 105;
+
+  /**
+   * Share power searches with other staff members.
+   */
+  const POWER_SEARCH_SHARE = 107;
+
+  /**
+   * Ability to request subscription plan for custom website.
+   */
+  const PRESENCE = 149;
+
+  /**
+   * Edit products but not product name and description.
+   */
+  const PRODUCT_DESCRIPTION_EDIT = 113;
+
+  /**
+   * Add, remove, and edit products in the online store.
+   */
+  const PRODUCT_MANAGE = 34;
+
+  /**
+   * Manage all clients.
+   */
+  const PROFILE_ALL = 24;
+
+  /**
+   * This permission allows users to view client details throughout the interface.
+   */
+  const PROFILE_DETAIL = 67;
+
+  /**
+   * Manage profile client groups (only create, delete and rename a group).
+   */
+  const PROFILE_GROUP_MANAGE = 69;
+
+  /**
+   * Manage client group members (only members, not a group itself).
+   */
+  const PROFILE_GROUP_MEMBER_MANAGE = 191;
+
+  /**
+   * Manage clients from my location.
+   */
+  const PROFILE_MY_LOCATION = 86;
+
+  /**
+   * Manage profile client type.
+   */
+  const PROFILE_TYPE_EDIT = 68;
+
+  /**
+   * Manage all clients.
+   */
+  const PROFILE_VIEW = 13;
+
+  /**
+   * Manage progress log.
+   */
+  const PROGRESS_LOG_MANAGE = 102;
+
+  /**
+   * Edit progress log in profile.
+   */
+  const PROGRESS_LOG_PROFILE = 104;
+
+  /**
+   * Add, remove, and edit purchase options and packages for services.
+   */
+  const PROMOTION_MANAGE = 25;
+
+  /**
+   * Allows to edit only base information about purchase option.
+   */
+  const PROMOTION_MANAGE_BASE = 127;
+
+  /**
+   * Access to edit client purchases (passes and memberships).
+   */
+  const PURCHASE_EDIT = 93;
+
+  /**
+   * Access to view client purchases (passes and memberships).
+   */
+  const PURCHASE_VIEW = 92;
+
+  /**
+   * Allow to see alerts.
+   */
+  const RECEIVE_ALERT = 193;
+
+  /**
+   * Access to view reports for all staff.
+   *
+   * If staff has no this privilege then he can view only reports for them self.
+   */
+  const REPORT_ALL = 71;
+
+  /**
+   * Reports attendance.
+   */
+  const REPORT_ATTENDANCE = 27;
+
+  /**
+   * Reports client.
+   */
+  const REPORT_CLIENT = 26;
+
+  /**
+   * Reports with cash closeout information.
+   */
+  const REPORT_CLOSEOUT = 85;
+
+  /**
+   * Export and print button in reports.
+   */
+  const REPORT_EXPORT_PRINT = 186;
+
+  /**
+   * Reports with franchise information.
+   */
+  const REPORT_FRANCHISE = 108;
+
+  /**
+   * Wellness Programs reports.
+   */
+  const REPORT_INSURANCE = 115;
+
+  /**
+   * Ability to generate, export and import insurance reimbursement files.
+   */
+  const REPORT_INSURANCE_FILE = 155;
+
+  /**
+   * Reports emails.
+   */
+  const REPORT_MAIL = 30;
+
+  /**
+   * Reports sales.
+   */
+  const REPORT_SALE = 29;
+
+  /**
+   * Ability to view purchase report for specific user.
+   */
+  const REPORT_SALE_USER = 125;
+
+  /**
+   * Reports staff.
+   */
+  const REPORT_STAFF = 28;
+
+  /**
+   * Manage assets.
+   */
+  const RESOURCE = 37;
+
+  /**
+   * Unpaid asset booking.
+   */
+  const RESOURCE_BOOK_UNPAID = 168;
+
+  /**
+   * Mark client reviews as inappropriate and respond to customer comments.
+   */
+  const REVIEW_FLAG = 18;
+
+  /**
+   * Create contests on the leaderboard.
+   */
+  const REWARD_LEADERBOARD = 44;
+
+  /**
+   * Rules related to point accumulation.
+   */
+  const REWARD_POINT_MANAGE = 46;
+
+  /**
+   * Clear the total accumulated points for all clients.
+   */
+  const REWARD_POINT_RESET = 45;
+
+  /**
+   * Define prizes and the number of points that are required to redeem.
+   */
+  const REWARD_PRIZE = 47;
+
+  /**
+   * Enable SABA single sign on and create SABA accounts.
+   */
+  const SABA = 116;
+
+  /**
+   * View canceled classes from the schedule.
+   */
+  const SCHEDULE_CANCELED_CLASS = 139;
+
+  /**
+   * View canceled classes from the schedule.
+   */
+  const SCHEDULE_CANCELED_ENROLLMENT = 140;
+
+  /**
+   * Scheduling and editing future sessions of the appointments.
+   */
+  const SCHEDULE_FUTURE_APPOINTMENT = 95;
+
+  /**
+   * Scheduling sessions of the assets.
+   */
+  const SCHEDULE_FUTURE_ASSETS = 128;
+
+  /**
+   * Scheduling and editing future sessions of the classes.
+   */
+  const SCHEDULE_FUTURE_CLASS = 96;
+
+  /**
+   * Scheduling and editing future sessions of the events.
+   */
+  const SCHEDULE_FUTURE_EVENT = 99;
+
+  /**
+   * Scheduling and editing past sessions of the appointments.
+   */
+  const SCHEDULE_PAST_APPOINTMENT = 97;
+
+  /**
+   * Scheduling and editing past sessions of the classes.
+   */
+  const SCHEDULE_PAST_CLASS = 98;
+
+  /**
+   * Scheduling and editing past sessions of the events.
+   */
+  const SCHEDULE_PAST_EVENT = 100;
+
+  /**
+   * Allows sign service agreement.
+   */
+  const SERVICE_AGREEMENT_SIGN = 133;
+
+  /**
+   * View, modify and delete shop categories.
+   */
+  const SHOP_CATEGORY = 78;
+
+  /**
+   * Modify the clock-in and clock-out times for staff members.
+   */
+  const STAFF_CLOCK = 32;
+
+  /**
+   * Add, remove, and edit staff profiles.
+   */
+  const STAFF_EDIT = 14;
+
+  /**
+   * Edit own staff profile.
+   */
+  const STAFF_EDIT_OWN = 150;
+
+  /**
+   * Modify pay rates for products and Purchase Options.
+   */
+  const STAFF_MODIFY_RATES_PRODUCT = 184;
+
+  /**
+   * Modify pay rates for services.
+   */
+  const STAFF_MODIFY_RATES_SERVICE = 183;
+
+  /**
+   * Modify the clock-in and clock-out times for your own staff profile.
+   */
+  const STAFF_MY_CLOCK = 192;
+
+  /**
+   * Add, remove, and edit staff pay rates.
+   */
+  const STAFF_PAY_ALL = 20;
+
+  /**
+   * Change staff role on the staff edit page.
+   */
+  const STAFF_ROLE_CHANGE = 72;
+
+  /**
+   * Edit staff role on the staff role page.
+   */
+  const STAFF_ROLE_EDIT = 124;
+
+  /**
+   * Create/Edit/Remove staff working hours.
+   */
+  const STAFF_WORKING_HOURS = 144;
+
+  /**
+   * Allow staff to override staff commission at the point of sale.
+   */
+  const STORE_COMMISSION_OVERRIDE = 185;
+
+  /**
+   * Temporarily modify the price of products and services at the point of sale.
+   */
+  const STORE_PRICE = 41;
+
+  /**
+   * Access to the point of sale store to facilitate the sale of products and services.
+   */
+  const STORE_SELL = 40;
+
+  /**
+   * Access to view and edit store settings.
+   */
+  const STORE_SETTINGS_EDIT = 143;
+
+  /**
+   * Add, remove, and edit supplier profiles.
+   */
+  const SUPPLIER_MANAGE = 114;
+
+  /**
+   * Access to add tasks.
+   */
+  const TASK_ADD = 111;
+
+  /**
+   * Access to view all tasks for all members.
+   */
+  const TASK_ALL = 70;
+
+  /**
+   * Access to edit tasks.
+   */
+  const TASK_EDIT = 112;
+
+  /**
+   * Access to transaction details.
+   */
+  const TRANSACTION_DETAIL = 81;
+
+  /**
+   * Access to edit transaction.
+   */
+  const TRANSACTION_EDIT = 89;
+
+  /**
+   * Access to refund transaction.
+   */
+  const TRANSACTION_REFUND = 91;
+
+  /**
+   * Access to view and change list of video categories.
+   */
+  const VIDEO_CATEGORY = 146;
+
+  /**
+   * Access to view and change videos in the business video library.
+   */
+  const VIDEO_SETUP = 147;
+
+  /**
+   * Set up and modify FitLIVE integration.
+   */
+  const VIRTUAL_SETUP = 158;
+
+  /**
+   * Access to edit, delete visit notes.
+   */
+  const VISIT_NOTE_EDIT = 74;
+
+  /**
+   * Access to view visit notes.
+   */
+  const VISIT_NOTE_VIEW = 73;
+
+  /**
+   * Access to WellnessLiving Academy.
+   */
+  const WELLNESSLIVING_ACADEMY = 151;
+
+  /**
+   * Allow access to manage integration with Zapier.
+   */
+  const ZAPIER = 180;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlProfileNoteSid.php b/WellnessLiving/Wl/WlProfileNoteSid.php
index 79282993..68a96d81 100644
--- a/WellnessLiving/Wl/WlProfileNoteSid.php
+++ b/WellnessLiving/Wl/WlProfileNoteSid.php
@@ -1,49 +1,49 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * Sources of system notes.
- *
- * <h2>How to add a new source of system notes</h2>
- * <ol>
- *   <li>Add a constant to the {@link WlProfileNoteSid} class.</li>
- *   <li>
- *
- *     The class name should be compatible with the constant name.
- *     For example, for the <tt>A_B_C</tt> constant, the following classes will be compatible (in descending order of priority):
- *     <ol>
- *      <li><tt>RsABCNote</tt></li>
- *      <li><tt>\Wl\A\B\CNote</tt></li>
- *      <li><tt>\Wl\A\B\C\Note</tt></li>
- *      <li><tt>\Wl\A\B\C\CNote</tt></li>
- *     </ol>
- *   </li>
- * </ol>
- *
- * Last used ID: 4.
- */
-abstract class WlProfileNoteSid
-{
-  /**
-   * A list of accounts with invalid progress log.
-   */
-  const MEMBER_PROGRESS_LOG_PROFILE = 3;
-
-  /**
-   * A list of accounts with not verified progress log.
-   */
-  const MEMBER_PROGRESS_LOG_VERIFICATION = 4;
-
-  /**
-   * A list of accounts with negative balance.
-   */
-  const PAY_ACCOUNT = 1;
-
-  /**
-   * A list of due membership payments.
-   */
-  const PROMOTION_PAY = 2;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * Sources of system notes.
+ *
+ * <h2>How to add a new source of system notes</h2>
+ * <ol>
+ *   <li>Add a constant to the {@link WlProfileNoteSid} class.</li>
+ *   <li>
+ *
+ *     The class name should be compatible with the constant name.
+ *     For example, for the <tt>A_B_C</tt> constant, the following classes will be compatible (in descending order of priority):
+ *     <ol>
+ *      <li><tt>RsABCNote</tt></li>
+ *      <li><tt>\Wl\A\B\CNote</tt></li>
+ *      <li><tt>\Wl\A\B\C\Note</tt></li>
+ *      <li><tt>\Wl\A\B\C\CNote</tt></li>
+ *     </ol>
+ *   </li>
+ * </ol>
+ *
+ * Last used ID: 4.
+ */
+abstract class WlProfileNoteSid
+{
+  /**
+   * A list of accounts with invalid progress log.
+   */
+  const MEMBER_PROGRESS_LOG_PROFILE = 3;
+
+  /**
+   * A list of accounts with not verified progress log.
+   */
+  const MEMBER_PROGRESS_LOG_VERIFICATION = 4;
+
+  /**
+   * A list of accounts with negative balance.
+   */
+  const PAY_ACCOUNT = 1;
+
+  /**
+   * A list of due membership payments.
+   */
+  const PROMOTION_PAY = 2;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlProjectSid.php b/WellnessLiving/Wl/WlProjectSid.php
index f7bdcc6d..48c1c6dd 100644
--- a/WellnessLiving/Wl/WlProjectSid.php
+++ b/WellnessLiving/Wl/WlProjectSid.php
@@ -1,16 +1,16 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * List of different directories, which can use wellnessliving as a source of data.
- */
-abstract class WlProjectSid
-{
-  /**
-   * WellnessLiving Explorer.
-   */
-  const WELLNESSLIVING = 4;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * List of different directories, which can use wellnessliving as a source of data.
+ */
+abstract class WlProjectSid
+{
+  /**
+   * WellnessLiving Explorer.
+   */
+  const WELLNESSLIVING = 4;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlPurchasePriceSid.php b/WellnessLiving/Wl/WlPurchasePriceSid.php
index 1cf491fe..36870f97 100644
--- a/WellnessLiving/Wl/WlPurchasePriceSid.php
+++ b/WellnessLiving/Wl/WlPurchasePriceSid.php
@@ -1,21 +1,21 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * A list of ways of how a Purchase Option price can be specified.
- */
-abstract class WlPurchasePriceSid
-{
-  /**
-   * Price of a promotion is specified per period.
-   */
-  const PERIOD = 1;
-
-  /**
-   * Price of a promotion is specified per session.
-   */
-  const SESSION = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * A list of ways of how a Purchase Option price can be specified.
+ */
+abstract class WlPurchasePriceSid
+{
+  /**
+   * Price of a promotion is specified per period.
+   */
+  const PERIOD = 1;
+
+  /**
+   * Price of a promotion is specified per session.
+   */
+  const SESSION = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlRankTypeSid.php b/WellnessLiving/Wl/WlRankTypeSid.php
index 5aba3335..1be8f205 100644
--- a/WellnessLiving/Wl/WlRankTypeSid.php
+++ b/WellnessLiving/Wl/WlRankTypeSid.php
@@ -1,17 +1,17 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * Types of the possible ranks in different business.
- * For example, there are belts (white, yellow, black, etc.) in Martial Arts.
- */
-class WlRankTypeSid
-{
-  /**
-   * Belts for Martial Arts.
-   */
-  const BELT = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * Types of the possible ranks in different business.
+ * For example, there are belts (white, yellow, black, etc.) in Martial Arts.
+ */
+class WlRankTypeSid
+{
+  /**
+   * Belts for Martial Arts.
+   */
+  const BELT = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlRegionSid.php b/WellnessLiving/Wl/WlRegionSid.php
index c86c1c67..462f7aee 100644
--- a/WellnessLiving/Wl/WlRegionSid.php
+++ b/WellnessLiving/Wl/WlRegionSid.php
@@ -1,29 +1,29 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * List of available data center regions.
- *
- * The business independently chooses the data center region in which it will be registered.
- * The choice of the data center region does not depend on the actual location of the business.
- * The region determines the data center in which the Wellnessliving system operates.
- * The region should be chosen based on the access speed to the data center from business clients.
- * Business from any region can be registered in any data center, but only in one.
- *
- * Last ID: 2.
- */
-class WlRegionSid extends \WellnessLiving\Custom\Wl\WlRegionSid
-{
-  /**
-   * Sydney, Australia.
-   */
-  const AP_SOUTHEAST_2 = 2;
-
-  /**
-   * North Virginia, USA.
-   */
-  const US_EAST_1 = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * List of available data center regions.
+ *
+ * The business independently chooses the data center region in which it will be registered.
+ * The choice of the data center region does not depend on the actual location of the business.
+ * The region determines the data center in which the Wellnessliving system operates.
+ * The region should be chosen based on the access speed to the data center from business clients.
+ * Business from any region can be registered in any data center, but only in one.
+ *
+ * Last ID: 2.
+ */
+class WlRegionSid extends \WellnessLiving\Custom\Wl\WlRegionSid
+{
+  /**
+   * Sydney, Australia.
+   */
+  const AP_SOUTHEAST_2 = 2;
+
+  /**
+   * North Virginia, USA.
+   */
+  const US_EAST_1 = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlReviewStatusSid.php b/WellnessLiving/Wl/WlReviewStatusSid.php
index 65677ca7..78fb8a37 100644
--- a/WellnessLiving/Wl/WlReviewStatusSid.php
+++ b/WellnessLiving/Wl/WlReviewStatusSid.php
@@ -1,26 +1,26 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * Review status identifiers.
- */
-abstract class WlReviewStatusSid
-{
-  /**
-   * Admin.
-   */
-  const ADMIN = 1;
-
-  /**
-   * Hidden.
-   */
-  const HIDDEN = 4;
-
-  /**
-   * Publish.
-   */
-  const PUBLISH = 3;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * Review status identifiers.
+ */
+abstract class WlReviewStatusSid
+{
+  /**
+   * Admin.
+   */
+  const ADMIN = 1;
+
+  /**
+   * Hidden.
+   */
+  const HIDDEN = 4;
+
+  /**
+   * Publish.
+   */
+  const PUBLISH = 3;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlScheduleTimeSid.php b/WellnessLiving/Wl/WlScheduleTimeSid.php
index 4d277c7d..783475ca 100644
--- a/WellnessLiving/Wl/WlScheduleTimeSid.php
+++ b/WellnessLiving/Wl/WlScheduleTimeSid.php
@@ -1,26 +1,26 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * Day time periods.
- */
-abstract class WlScheduleTimeSid
-{
-  /**
-   * Afternoon.
-   */
-  const AFTERNOON = 2;
-
-  /**
-   * Evening.
-   */
-  const EVENING = 3;
-
-  /**
-   * Morning.
-   */
-  const MORNING = 1;
-}
-
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * Day time periods.
+ */
+abstract class WlScheduleTimeSid
+{
+  /**
+   * Afternoon.
+   */
+  const AFTERNOON = 2;
+
+  /**
+   * Evening.
+   */
+  const EVENING = 3;
+
+  /**
+   * Morning.
+   */
+  const MORNING = 1;
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlActivationSid.php b/WellnessLiving/WlActivationSid.php
index 5702ac8a..3ba2552c 100644
--- a/WellnessLiving/WlActivationSid.php
+++ b/WellnessLiving/WlActivationSid.php
@@ -1,14 +1,14 @@
-<?php
-
-namespace WellnessLiving;
-
-/**
- * @deprecated As of 2023-09-11.
- *
- * Use class {@link \WellnessLiving\Wl\WlActivationSid} instead.
- */
-abstract class WlActivationSid extends \WellnessLiving\Wl\WlActivationSid
-{
-}
-
+<?php
+
+namespace WellnessLiving;
+
+/**
+ * @deprecated As of 2023-09-11.
+ *
+ * Use class {@link \WellnessLiving\Wl\WlActivationSid} instead.
+ */
+abstract class WlActivationSid extends \WellnessLiving\Wl\WlActivationSid
+{
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlAgeSid.php b/WellnessLiving/WlAgeSid.php
index ec36a9c2..723189a9 100644
--- a/WellnessLiving/WlAgeSid.php
+++ b/WellnessLiving/WlAgeSid.php
@@ -1,14 +1,14 @@
-<?php
-
-namespace WellnessLiving;
-
-/**
- * @deprecated As of 2023-09-11.
- *
- * Use class {@link \WellnessLiving\Wl\WlAgeSid} instead.
- */
-class WlAgeSid extends \WellnessLiving\Wl\WlAgeSid
-{
-}
-
+<?php
+
+namespace WellnessLiving;
+
+/**
+ * @deprecated As of 2023-09-11.
+ *
+ * Use class {@link \WellnessLiving\Wl\WlAgeSid} instead.
+ */
+class WlAgeSid extends \WellnessLiving\Wl\WlAgeSid
+{
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlFacilitySid.php b/WellnessLiving/WlFacilitySid.php
index 721c8195..a7ad37f8 100644
--- a/WellnessLiving/WlFacilitySid.php
+++ b/WellnessLiving/WlFacilitySid.php
@@ -1,14 +1,14 @@
-<?php
-
-namespace WellnessLiving;
-
-/**
- * @deprecated As of 2023-09-11.
- *
- * Use class {@link \WellnessLiving\Wl\WlFacilitySid} instead.
- */
-class WlFacilitySid extends \WellnessLiving\Wl\WlFacilitySid
-{
-}
-
+<?php
+
+namespace WellnessLiving;
+
+/**
+ * @deprecated As of 2023-09-11.
+ *
+ * Use class {@link \WellnessLiving\Wl\WlFacilitySid} instead.
+ */
+class WlFacilitySid extends \WellnessLiving\Wl\WlFacilitySid
+{
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlFile.php b/WellnessLiving/WlFile.php
index a43c82d1..169fb87c 100644
--- a/WellnessLiving/WlFile.php
+++ b/WellnessLiving/WlFile.php
@@ -1,76 +1,76 @@
-<?php
-
-namespace WellnessLiving;
-
-/**
- * File to be sent with a model.
- */
-class WlFile
-{
-  /**
-   * Mimetype of the file. <tt>null</tt> if not set.
-   *
-   * @var string|null
-   */
-  private $s_mime;
-
-  /**
-   * Path to the file which will be uploaded.
-   *
-   * @var string
-   */
-  private $s_name;
-
-  /**
-   * Name of the file. <tt>null</tt> if not set.
-   *
-   * @var string|null
-   */
-  private $s_postname;
-
-  /**
-   * Creates a class object.
-   *
-   * @param string $s_name Path to the file which will be uploaded.
-   * @param string|null $s_mime Mimetype of the file. <tt>null</tt> if not set.
-   * @param string|null $s_postname Name of the file. <tt>null</tt> if not set.
-   */
-  public function __construct($s_name,$s_mime = null,$s_postname = null)
-  {
-    $this->s_mime = $s_mime;
-    $this->s_name = $s_name;
-    $this->s_postname = $s_postname;
-  }
-
-  /**
-   * Gets mimetype of the file.
-   *
-   * @return string|null Mimetype of the file. <tt>null</tt> if not set.
-   */
-  public function mime()
-  {
-    return $this->s_mime;
-  }
-
-  /**
-   * Gets path to the file which will be uploaded.
-   *
-   * @return string Path to the file which will be uploaded.
-   */
-  public function name()
-  {
-    return $this->s_name;
-  }
-
-  /**
-   * Gets name of the file.
-   *
-   * @return string|null Name of the file. <tt>null</tt> if not set.
-   */
-  public function postname()
-  {
-    return $this->s_postname;
-  }
-}
-
+<?php
+
+namespace WellnessLiving;
+
+/**
+ * File to be sent with a model.
+ */
+class WlFile
+{
+  /**
+   * Mimetype of the file. <tt>null</tt> if not set.
+   *
+   * @var string|null
+   */
+  private $s_mime;
+
+  /**
+   * Path to the file which will be uploaded.
+   *
+   * @var string
+   */
+  private $s_name;
+
+  /**
+   * Name of the file. <tt>null</tt> if not set.
+   *
+   * @var string|null
+   */
+  private $s_postname;
+
+  /**
+   * Creates a class object.
+   *
+   * @param string $s_name Path to the file which will be uploaded.
+   * @param string|null $s_mime Mimetype of the file. <tt>null</tt> if not set.
+   * @param string|null $s_postname Name of the file. <tt>null</tt> if not set.
+   */
+  public function __construct($s_name,$s_mime = null,$s_postname = null)
+  {
+    $this->s_mime = $s_mime;
+    $this->s_name = $s_name;
+    $this->s_postname = $s_postname;
+  }
+
+  /**
+   * Gets mimetype of the file.
+   *
+   * @return string|null Mimetype of the file. <tt>null</tt> if not set.
+   */
+  public function mime()
+  {
+    return $this->s_mime;
+  }
+
+  /**
+   * Gets path to the file which will be uploaded.
+   *
+   * @return string Path to the file which will be uploaded.
+   */
+  public function name()
+  {
+    return $this->s_name;
+  }
+
+  /**
+   * Gets name of the file.
+   *
+   * @return string|null Name of the file. <tt>null</tt> if not set.
+   */
+  public function postname()
+  {
+    return $this->s_postname;
+  }
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlHomeTourSid.php b/WellnessLiving/WlHomeTourSid.php
index 056f2fbc..928b6f99 100644
--- a/WellnessLiving/WlHomeTourSid.php
+++ b/WellnessLiving/WlHomeTourSid.php
@@ -1,14 +1,14 @@
-<?php
-
-namespace WellnessLiving;
-
-/**
- * @deprecated As of 2023-09-11.
- *
- * Use class {@link \WellnessLiving\Wl\WlHomeTourSid} instead.
- */
-class WlHomeTourSid extends \WellnessLiving\Wl\WlHomeTourSid
-{
-}
-
+<?php
+
+namespace WellnessLiving;
+
+/**
+ * @deprecated As of 2023-09-11.
+ *
+ * Use class {@link \WellnessLiving\Wl\WlHomeTourSid} instead.
+ */
+class WlHomeTourSid extends \WellnessLiving\Wl\WlHomeTourSid
+{
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelMultiModel.php b/WellnessLiving/WlModelMultiModel.php
index 48e85f69..cdecfd06 100644
--- a/WellnessLiving/WlModelMultiModel.php
+++ b/WellnessLiving/WlModelMultiModel.php
@@ -1,122 +1,122 @@
-<?php
-
-namespace WellnessLiving;
-
-/**
- * This class represents service model witch allows to execute multi curl request for the set of other models.
- *
- * You can use this model in case you need to make more than one request with special method to the API.
- * For example, if you have some models, and you need to make "get" requests at parallel (with {@link \curl_multi_exec()}),
- * just create new {@link WlModelMultiModel}, and pass your models to {@link WlModelMultiModel} using method {@link \WlModelMultiModel::add()}.
- * Then call method {@link \WlModelMultiModel::getMulti()} to trigger multi curl request for all your added models.
- *
- * @example WellnessLiving/doc/multi-model.md
- */
-final class WlModelMultiModel extends WlModelAbstract
-{
-  /**
-   * List of {@link WlModelAbstract} objects.
-   *
-   * @var WlModelAbstract[]
-   */
-  private $a_model = [];
-
-  /**
-   * Curl resource.
-   *
-   * @var resource
-   */
-  private $r_multi_curl;
-
-  /**
-   * Adds a model to multi Curl request.
-   *
-   * @param WlModelAbstract $o_model Model to be part of multi curl request.
-   */
-  public function add(WlModelAbstract $o_model)
-  {
-    $this->a_model[] = $o_model;
-  }
-
-  /**
-   * This method executes the multi Curl request.
-   *
-   * @param string $s_method Request method. One of <tt>'get'</tt>, <tt>'post'</tt>, <tt>'put'</tt>, <tt>'delete'</tt>.
-   * @throws WlAssertException In a case of an assertion.
-   * @throws WlUserException In a case of a user-level error.
-   */
-  private function requestMulti($s_method)
-  {
-    $a_request_prepare = [];
-    $this->r_multi_curl = curl_multi_init();
-    foreach($this->a_model as $o_model)
-    {
-      $a_request = $o_model->requestPrepare($s_method);
-      $a_request['o_model'] = $o_model;
-      $a_request_prepare[] = $a_request;
-      curl_multi_add_handle($this->r_multi_curl, $a_request['r_curl']);
-    }
-    do
-    {
-      $i_status = curl_multi_exec($this->r_multi_curl, $i_active);
-      if($i_active)
-        curl_multi_select($this->r_multi_curl);
-    }
-    while($i_active && $i_status == CURLM_OK);
-
-    foreach($a_request_prepare as $a_request)
-    {
-      $s_response = curl_multi_getcontent($a_request['r_curl']);
-
-      /** @var WlModelAbstract $o_model */
-      $o_model=$a_request['o_model'];
-      $o_model->requestResult($s_method, $a_request['r_curl'], $a_request['o_request'], $a_request['a_field'], $s_response, $a_request['s_post']);
-    }
-    curl_multi_close($this->r_multi_curl);
-  }
-
-  /**
-   * Performs multi request with GET method.
-   *
-   * @throws WlAssertException In a case of an assertion.
-   * @throws WlUserException In a case of a user-level error.
-   */
-  public function getMulti()
-  {
-    $this->requestMulti('get');
-  }
-
-  /**
-   * Performs multi request with POST method.
-   *
-   * @throws WlAssertException In a case of an assertion.
-   * @throws WlUserException In a case of a user-level error.
-   */
-  public function postMulti()
-  {
-    $this->requestMulti('post');
-  }
-
-  /**
-   * Performs multi request with PUT method.
-   *
-   * @throws WlAssertException In a case of an assertion.
-   * @throws WlUserException In a case of a user-level error.
-   */
-  public function putMulti()
-  {
-    $this->requestMulti('put');
-  }
-
-  /**
-   * Closes multi curl resource.
-   *
-   * @param resource $r_curl Curl resource to be closed.
-   */
-  protected function closeCurl($r_curl)
-  {
-    curl_multi_remove_handle($this->r_multi_curl, $r_curl);
-  }
-}
-
+<?php
+
+namespace WellnessLiving;
+
+/**
+ * This class represents service model witch allows to execute multi curl request for the set of other models.
+ *
+ * You can use this model in case you need to make more than one request with special method to the API.
+ * For example, if you have some models, and you need to make "get" requests at parallel (with {@link \curl_multi_exec()}),
+ * just create new {@link WlModelMultiModel}, and pass your models to {@link WlModelMultiModel} using method {@link \WlModelMultiModel::add()}.
+ * Then call method {@link \WlModelMultiModel::getMulti()} to trigger multi curl request for all your added models.
+ *
+ * @example WellnessLiving/doc/multi-model.md
+ */
+final class WlModelMultiModel extends WlModelAbstract
+{
+  /**
+   * List of {@link WlModelAbstract} objects.
+   *
+   * @var WlModelAbstract[]
+   */
+  private $a_model = [];
+
+  /**
+   * Curl resource.
+   *
+   * @var resource
+   */
+  private $r_multi_curl;
+
+  /**
+   * Adds a model to multi Curl request.
+   *
+   * @param WlModelAbstract $o_model Model to be part of multi curl request.
+   */
+  public function add(WlModelAbstract $o_model)
+  {
+    $this->a_model[] = $o_model;
+  }
+
+  /**
+   * This method executes the multi Curl request.
+   *
+   * @param string $s_method Request method. One of <tt>'get'</tt>, <tt>'post'</tt>, <tt>'put'</tt>, <tt>'delete'</tt>.
+   * @throws WlAssertException In a case of an assertion.
+   * @throws WlUserException In a case of a user-level error.
+   */
+  private function requestMulti($s_method)
+  {
+    $a_request_prepare = [];
+    $this->r_multi_curl = curl_multi_init();
+    foreach($this->a_model as $o_model)
+    {
+      $a_request = $o_model->requestPrepare($s_method);
+      $a_request['o_model'] = $o_model;
+      $a_request_prepare[] = $a_request;
+      curl_multi_add_handle($this->r_multi_curl, $a_request['r_curl']);
+    }
+    do
+    {
+      $i_status = curl_multi_exec($this->r_multi_curl, $i_active);
+      if($i_active)
+        curl_multi_select($this->r_multi_curl);
+    }
+    while($i_active && $i_status == CURLM_OK);
+
+    foreach($a_request_prepare as $a_request)
+    {
+      $s_response = curl_multi_getcontent($a_request['r_curl']);
+
+      /** @var WlModelAbstract $o_model */
+      $o_model=$a_request['o_model'];
+      $o_model->requestResult($s_method, $a_request['r_curl'], $a_request['o_request'], $a_request['a_field'], $s_response, $a_request['s_post']);
+    }
+    curl_multi_close($this->r_multi_curl);
+  }
+
+  /**
+   * Performs multi request with GET method.
+   *
+   * @throws WlAssertException In a case of an assertion.
+   * @throws WlUserException In a case of a user-level error.
+   */
+  public function getMulti()
+  {
+    $this->requestMulti('get');
+  }
+
+  /**
+   * Performs multi request with POST method.
+   *
+   * @throws WlAssertException In a case of an assertion.
+   * @throws WlUserException In a case of a user-level error.
+   */
+  public function postMulti()
+  {
+    $this->requestMulti('post');
+  }
+
+  /**
+   * Performs multi request with PUT method.
+   *
+   * @throws WlAssertException In a case of an assertion.
+   * @throws WlUserException In a case of a user-level error.
+   */
+  public function putMulti()
+  {
+    $this->requestMulti('put');
+  }
+
+  /**
+   * Closes multi curl resource.
+   *
+   * @param resource $r_curl Curl resource to be closed.
+   */
+  protected function closeCurl($r_curl)
+  {
+    curl_multi_remove_handle($this->r_multi_curl, $r_curl);
+  }
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlPayProcessorSid.php b/WellnessLiving/WlPayProcessorSid.php
index b6da6d96..e318d4f7 100644
--- a/WellnessLiving/WlPayProcessorSid.php
+++ b/WellnessLiving/WlPayProcessorSid.php
@@ -1,14 +1,14 @@
-<?php
-
-namespace WellnessLiving;
-
-/**
- * @deprecated As of 2023-09-11.
- *
- * Use class {@link \WellnessLiving\Wl\WlPayProcessorSid} instead.
- */
-class WlPayProcessorSid extends \WellnessLiving\Wl\WlPayProcessorSid
-{
-}
-
+<?php
+
+namespace WellnessLiving;
+
+/**
+ * @deprecated As of 2023-09-11.
+ *
+ * Use class {@link \WellnessLiving\Wl\WlPayProcessorSid} instead.
+ */
+class WlPayProcessorSid extends \WellnessLiving\Wl\WlPayProcessorSid
+{
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlPrivilegeSid.php b/WellnessLiving/WlPrivilegeSid.php
index 0cdd5b06..bd528b2a 100644
--- a/WellnessLiving/WlPrivilegeSid.php
+++ b/WellnessLiving/WlPrivilegeSid.php
@@ -1,12 +1,12 @@
-<?php
-
-/**
- * @deprecated As of 2023-09-11.
- *
- * Use class {@link \WellnessLiving\Wl\WlPrivilegeSid} instead.
- */
-class WlPrivilegeSid extends \WellnessLiving\Wl\WlPrivilegeSid
-{
-}
-
+<?php
+
+/**
+ * @deprecated As of 2023-09-11.
+ *
+ * Use class {@link \WellnessLiving\Wl\WlPrivilegeSid} instead.
+ */
+class WlPrivilegeSid extends \WellnessLiving\Wl\WlPrivilegeSid
+{
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlProjectSid.php b/WellnessLiving/WlProjectSid.php
index f89f7225..a3643f34 100644
--- a/WellnessLiving/WlProjectSid.php
+++ b/WellnessLiving/WlProjectSid.php
@@ -1,14 +1,14 @@
-<?php
-
-namespace WellnessLiving;
-
-/**
- * @deprecated As of 2023-09-11.
- *
- * Use class {@link \WellnessLiving\Wl\WlProjectSid} instead.
- */
-class WlProjectSid extends \WellnessLiving\Wl\WlProjectSid
-{
-}
-
+<?php
+
+namespace WellnessLiving;
+
+/**
+ * @deprecated As of 2023-09-11.
+ *
+ * Use class {@link \WellnessLiving\Wl\WlProjectSid} instead.
+ */
+class WlProjectSid extends \WellnessLiving\Wl\WlProjectSid
+{
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlRegionSid.php b/WellnessLiving/WlRegionSid.php
index 827fc864..a1240eea 100644
--- a/WellnessLiving/WlRegionSid.php
+++ b/WellnessLiving/WlRegionSid.php
@@ -1,14 +1,14 @@
-<?php
-
-namespace WellnessLiving;
-
-/**
- * @deprecated As of 2023-09-11.
- *
- * Use class {@link \WellnessLiving\Wl\WlRegionSid} instead.
- */
-class WlRegionSid extends \WellnessLiving\Wl\WlRegionSid
-{
-}
-
+<?php
+
+namespace WellnessLiving;
+
+/**
+ * @deprecated As of 2023-09-11.
+ *
+ * Use class {@link \WellnessLiving\Wl\WlRegionSid} instead.
+ */
+class WlRegionSid extends \WellnessLiving\Wl\WlRegionSid
+{
+}
+
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/doc/multi-model.md b/WellnessLiving/doc/multi-model.md
index a15d6bf5..6d70c44b 100644
--- a/WellnessLiving/doc/multi-model.md
+++ b/WellnessLiving/doc/multi-model.md
@@ -1,69 +1,69 @@
-# Example of using WlModelMultiModel.
- <pre>
- namespace WlSdkExample;
- 
- use WellnessLiving\Core\Passport\Login\Enter\EnterModel;
- use WellnessLiving\Core\Passport\Login\Enter\NotepadModel;
- use WellnessLiving\Wl\Catalog\CatalogList\ElementModel;
- use WellnessLiving\WlAssertException;
- use WellnessLiving\WlModelMultiModel;
- use WellnessLiving\WlUserException;
- 
- require_once __DIR__.'/WellnessLiving/wl-autoloader.php';
- require_once __DIR__.'/example-config.php';
- 
- try
- {
-   $o_config=new ExampleConfig();
- 
-   // Retrieve notepad (it is a separate step of user sign in process)
-   $o_notepad=new NotepadModel($o_config);
-   $o_notepad->s_login='//* Put your login here */';
-   $o_notepad->get();
- 
-   // Sign in a user
-   $o_enter=new EnterModel($o_config);
-   $o_enter->cookieSet($o_notepad->cookieGet()); // Keep cookies to keep session.
-   $o_enter->s_login='//* Put your login here */';
-   $o_enter->s_notepad=$o_notepad->s_notepad;
-   $o_enter->s_password=$o_notepad->hash('//* Put your password here */');
-   $o_enter->post();
-   
-   // Create first model to get data
-   $model_1=new ElementModel( $o_config);
-   $model_1->cookieSet($o_notepad->cookieGet());
-   $model_1->k_id='//* Put your product id here */';
-   $model_1->k_location='//* Put your location key here */';
-   $model_1->id_sale='//* Put your sale id here */';
-
-   // Create second model to get data
-   $model_2=new ElementModel( $o_config);
-   $model_2->cookieSet($o_notepad->cookieGet());
-   $model_2->k_id='//* Put your product id here */';
-   $model_2->k_location='//* Put your location key here */';
-   $model_2->id_sale='//* Put your sale id here*/';
-
-   // Create multi model and add ElementModels to request
-   $o_multi_model=new WlModelMultiModel($o_config);
-   $o_multi_model->add($model_1);
-   $o_multi_model->add($model_2);
-
-   // Get the data for added models
-   $o_multi_model->getMulti();
-   
-   // Show model data
-   print_r($model_1->a_data);
-   print_r($model_2->a_data);
- }
- catch(WlAssertException $e)
- {
-   echo $e;
-   return;
- }
- catch(WlUserException $e)
- {
-   echo $e->getMessage()."\n";
-   return;
- }
- </pre>
- 
+# Example of using WlModelMultiModel.
+ <pre>
+ namespace WlSdkExample;
+ 
+ use WellnessLiving\Core\Passport\Login\Enter\EnterModel;
+ use WellnessLiving\Core\Passport\Login\Enter\NotepadModel;
+ use WellnessLiving\Wl\Catalog\CatalogList\ElementModel;
+ use WellnessLiving\WlAssertException;
+ use WellnessLiving\WlModelMultiModel;
+ use WellnessLiving\WlUserException;
+ 
+ require_once __DIR__.'/WellnessLiving/wl-autoloader.php';
+ require_once __DIR__.'/example-config.php';
+ 
+ try
+ {
+   $o_config=new ExampleConfig();
+ 
+   // Retrieve notepad (it is a separate step of user sign in process)
+   $o_notepad=new NotepadModel($o_config);
+   $o_notepad->s_login='//* Put your login here */';
+   $o_notepad->get();
+ 
+   // Sign in a user
+   $o_enter=new EnterModel($o_config);
+   $o_enter->cookieSet($o_notepad->cookieGet()); // Keep cookies to keep session.
+   $o_enter->s_login='//* Put your login here */';
+   $o_enter->s_notepad=$o_notepad->s_notepad;
+   $o_enter->s_password=$o_notepad->hash('//* Put your password here */');
+   $o_enter->post();
+   
+   // Create first model to get data
+   $model_1=new ElementModel( $o_config);
+   $model_1->cookieSet($o_notepad->cookieGet());
+   $model_1->k_id='//* Put your product id here */';
+   $model_1->k_location='//* Put your location key here */';
+   $model_1->id_sale='//* Put your sale id here */';
+
+   // Create second model to get data
+   $model_2=new ElementModel( $o_config);
+   $model_2->cookieSet($o_notepad->cookieGet());
+   $model_2->k_id='//* Put your product id here */';
+   $model_2->k_location='//* Put your location key here */';
+   $model_2->id_sale='//* Put your sale id here*/';
+
+   // Create multi model and add ElementModels to request
+   $o_multi_model=new WlModelMultiModel($o_config);
+   $o_multi_model->add($model_1);
+   $o_multi_model->add($model_2);
+
+   // Get the data for added models
+   $o_multi_model->getMulti();
+   
+   // Show model data
+   print_r($model_1->a_data);
+   print_r($model_2->a_data);
+ }
+ catch(WlAssertException $e)
+ {
+   echo $e;
+   return;
+ }
+ catch(WlUserException $e)
+ {
+   echo $e->getMessage()."\n";
+   return;
+ }
+ </pre>
+ 
diff --git a/WellnessLiving/doc/problems.txt b/WellnessLiving/doc/problems.txt
index 5da3513c..4c59b793 100644
--- a/WellnessLiving/doc/problems.txt
+++ b/WellnessLiving/doc/problems.txt
@@ -1,9 +1,9 @@
-Problem: response error 'group-empty'
-Reason: tables core_request_api_application_group, core_request_api_application_member or core_request_api_application
-  are not filled on server side.
-
-Problem: response error 'signature-mismatch'
-Reasons:
-- invalid application code/id in your config file
-- invalid server URL in your config file
+Problem: response error 'group-empty'
+Reason: tables core_request_api_application_group, core_request_api_application_member or core_request_api_application
+  are not filled on server side.
+
+Problem: response error 'signature-mismatch'
+Reasons:
+- invalid application code/id in your config file
+- invalid server URL in your config file
 - invalid cookies names in your config file
\ No newline at end of file
diff --git a/WellnessLiving/doc/upgrade-20211109.md b/WellnessLiving/doc/upgrade-20211109.md
index a0131c36..3c4a3958 100644
--- a/WellnessLiving/doc/upgrade-20211109.md
+++ b/WellnessLiving/doc/upgrade-20211109.md
@@ -1,43 +1,43 @@
-# WellnessLiving SDK 1.1 Released!
-
-## Changes
-
-1. The configuration management system has been redesigned.
-2. Added data center regions. See the documentation for class `\WellnessLiving\WlRegionSid`.
-
-## Migration from WellnessLiving SDK 1.0 to 1.1
-
-Check that your config class is extended from:
-* `\WellnessLiving\Config\WlConfigProduction` for production;
-* `\WellnessLiving\Config\WlConfigDeveloper` for testing purpose.
-
-You need to change the way the configuration object is created.
-Use the `\WellnessLiving\Config\WlConfigAbstract::create()` method to create the configuration object.
-Manual creation of a configuration object using the `new ...` operator is prohibited.
-
-For example, we have a configuration class `\WlSdkExample\ExampleConfig`. Create a config object:
-
-    <?php
-    ...
-    $o_config = \WlSdkExample\ExampleConfig::create(\WellnessLiving\WlRegionSid::US_EAST_1);
-
-
-## Using the data center region id in production version.
-
-All businesses registered before December 2021 belong to the `\WellnessLiving\WlRegionSid::US_EAST_1` region.
-
-Businesses that register in December 2021 and later independently choose a region based on the speed of
-their clients' access to the data center of the selected region.
-
-You can contact technical support to find out in which data center your business is registered or
-this information can be found in the admin menu if you have admin rights.
-
-## Using the data center region id in testing versions.
-
-Use the `\WellnessLiving\WlRegionSid::US_EAST_1` constant as the data center region id for testing the Wellnessliving SDK and API
-in our staging branch.
-
-Use the `\WellnessLiving\WlRegionSid::AP_SOUTHEAST_2` constant as the data center region id for testing
-the Wellnessliving SDK and API in our trunk branch.
-
+# WellnessLiving SDK 1.1 Released!
+
+## Changes
+
+1. The configuration management system has been redesigned.
+2. Added data center regions. See the documentation for class `\WellnessLiving\WlRegionSid`.
+
+## Migration from WellnessLiving SDK 1.0 to 1.1
+
+Check that your config class is extended from:
+* `\WellnessLiving\Config\WlConfigProduction` for production;
+* `\WellnessLiving\Config\WlConfigDeveloper` for testing purpose.
+
+You need to change the way the configuration object is created.
+Use the `\WellnessLiving\Config\WlConfigAbstract::create()` method to create the configuration object.
+Manual creation of a configuration object using the `new ...` operator is prohibited.
+
+For example, we have a configuration class `\WlSdkExample\ExampleConfig`. Create a config object:
+
+    <?php
+    ...
+    $o_config = \WlSdkExample\ExampleConfig::create(\WellnessLiving\WlRegionSid::US_EAST_1);
+
+
+## Using the data center region id in production version.
+
+All businesses registered before December 2021 belong to the `\WellnessLiving\WlRegionSid::US_EAST_1` region.
+
+Businesses that register in December 2021 and later independently choose a region based on the speed of
+their clients' access to the data center of the selected region.
+
+You can contact technical support to find out in which data center your business is registered or
+this information can be found in the admin menu if you have admin rights.
+
+## Using the data center region id in testing versions.
+
+Use the `\WellnessLiving\WlRegionSid::US_EAST_1` constant as the data center region id for testing the Wellnessliving SDK and API
+in our staging branch.
+
+Use the `\WellnessLiving\WlRegionSid::AP_SOUTHEAST_2` constant as the data center region id for testing
+the Wellnessliving SDK and API in our trunk branch.
+
 For more information about our branches see [WellnessLiving/README.md](../../README.md) file.
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 325bf432..4443d175 100644
--- a/composer.json
+++ b/composer.json
@@ -1,14 +1,14 @@
-{
-  "name": "wellnessliving/wl-sdk",
-  "description": "Wellenessliving API SDK",
-  "license": "proprietary",
-  "require": {
-    "ext-bcmath": "*",
-    "ext-curl": "*",
-    "ext-json": "*",
-    "php": ">=5.5"
-  },
-  "autoload": {
-    "WellnessLiving": "\\"
-  }
+{
+  "name": "wellnessliving/wl-sdk",
+  "description": "Wellenessliving API SDK",
+  "license": "proprietary",
+  "require": {
+    "ext-bcmath": "*",
+    "ext-curl": "*",
+    "ext-json": "*",
+    "php": ">=5.5"
+  },
+  "autoload": {
+    "WellnessLiving": "\\"
+  }
 }
\ No newline at end of file
diff --git a/composer.lock b/composer.lock
index 72444779..bea916ba 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1,20 +1,20 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
-        "This file is @generated automatically"
-    ],
-    "content-hash": "334cbc00cf13580453752048b798ec88",
-    "packages": [],
-    "packages-dev": [],
-    "aliases": [],
-    "minimum-stability": "stable",
-    "stability-flags": [],
-    "prefer-stable": false,
-    "prefer-lowest": false,
-    "platform": {
-        "php": ">=7.4"
-    },
-    "platform-dev": [],
-    "plugin-api-version": "2.2.0"
-}
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "334cbc00cf13580453752048b798ec88",
+    "packages": [],
+    "packages-dev": [],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=7.4"
+    },
+    "platform-dev": [],
+    "plugin-api-version": "2.2.0"
+}

From ad668a5ccee3ce461408bbadfdda6c7514f36127 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Thu, 16 May 2024 20:11:00 +0000
Subject: [PATCH 02/71] Automatic upgrade of the SDK. Build #340133.

---
 WellnessLiving/Wl/Fitbuilder/MessageModel.php | 29 +++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 WellnessLiving/Wl/Fitbuilder/MessageModel.php

diff --git a/WellnessLiving/Wl/Fitbuilder/MessageModel.php b/WellnessLiving/Wl/Fitbuilder/MessageModel.php
new file mode 100644
index 00000000..b5f2bb04
--- /dev/null
+++ b/WellnessLiving/Wl/Fitbuilder/MessageModel.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace WellnessLiving\Wl\Fitbuilder;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Point to get messenger information from Fitbuilder.
+ */
+class MessageModel extends WlModelAbstract
+{
+  /**
+   * Messenger information.
+   *
+   * @post post
+   * @var array
+   */
+  public $a_data = [];
+
+  /**
+   * Messenger channel key.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_channel = '';
+}
+
+?>
\ No newline at end of file

From 04ef52c0b17e5e0824bd2675e00ef6d3474e297a Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 21 May 2024 14:53:23 +0000
Subject: [PATCH 03/71] Automatic upgrade of the SDK. Build #340768.

---
 WellnessLiving/Core/Quiz/ResponseStatusSid.php        | 7 ++++++-
 WellnessLiving/Social/Apple/Login/AppleLoginModel.php | 1 +
 WellnessLiving/Wl/Mail/SendMailModel.php              | 8 ++++++++
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/WellnessLiving/Core/Quiz/ResponseStatusSid.php b/WellnessLiving/Core/Quiz/ResponseStatusSid.php
index 73d12bf1..cfb30b61 100644
--- a/WellnessLiving/Core/Quiz/ResponseStatusSid.php
+++ b/WellnessLiving/Core/Quiz/ResponseStatusSid.php
@@ -5,7 +5,7 @@
 /**
  * List of response statuses.
  *
- * Last used ID: 5
+ * Last used ID: 6
  */
 class ResponseStatusSid
 {
@@ -24,6 +24,11 @@ class ResponseStatusSid
    */
   const DRAFT = 2;
 
+  /**
+   * Response are duplicated.
+   */
+  const DUPLICATE = 6;
+
   /**
    * Response in inactive.
    *
diff --git a/WellnessLiving/Social/Apple/Login/AppleLoginModel.php b/WellnessLiving/Social/Apple/Login/AppleLoginModel.php
index bceb86c3..0910ddf7 100644
--- a/WellnessLiving/Social/Apple/Login/AppleLoginModel.php
+++ b/WellnessLiving/Social/Apple/Login/AppleLoginModel.php
@@ -12,6 +12,7 @@ class AppleLoginModel extends WlModelAbstract
   /**
    * The application ID.
    *
+   * @delete post
    * @post post
    * @var string
    */
diff --git a/WellnessLiving/Wl/Mail/SendMailModel.php b/WellnessLiving/Wl/Mail/SendMailModel.php
index e8aed96d..07ce00fc 100644
--- a/WellnessLiving/Wl/Mail/SendMailModel.php
+++ b/WellnessLiving/Wl/Mail/SendMailModel.php
@@ -49,6 +49,14 @@ class SendMailModel extends WlModelAbstract
    */
   public $s_campaign = '';
 
+  /**
+   * The message uncompressed content.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_html = '';
+
   /**
    * The message recipient's address.
    *

From 3566c40e7687355f6abd2d428e1a5778f1113b9e Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 22 May 2024 15:28:34 +0000
Subject: [PATCH 04/71] Automatic upgrade of the SDK. Build #341049.

---
 .../Wl/Purchase/Receipt/PurchaseReceiptModel.php          | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php b/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
index 9459a75c..eb174992 100644
--- a/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
+++ b/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
@@ -405,6 +405,14 @@ class PurchaseReceiptModel extends WlModelAbstract
    */
   public $text_receipt;
 
+  /**
+   * UID of current user. Can be empty.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $uid_current = null;
+
   /**
    * The URL for printing on a normal printer.
    *

From f1fc6f68bf4df513fe02a10a2908c36bc46417b9 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 22 May 2024 19:00:40 +0000
Subject: [PATCH 05/71] Automatic upgrade of the SDK. Build #341100.

---
 WellnessLiving/Core/Passport/Login/Enter/EnterModel.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/Core/Passport/Login/Enter/EnterModel.php b/WellnessLiving/Core/Passport/Login/Enter/EnterModel.php
index 25ed5dfb..f5b12242 100644
--- a/WellnessLiving/Core/Passport/Login/Enter/EnterModel.php
+++ b/WellnessLiving/Core/Passport/Login/Enter/EnterModel.php
@@ -73,7 +73,7 @@ class EnterModel extends WlModelAbstract
    *
    * This field is filled in a case when a captcha code is required to sign in.
    *
-   * @post error
+   * @post result
    * @var string
    */
   public $url_captcha;

From 68f42be8ca7948d6037118e2fdc4c9ac659af6a7 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Fri, 24 May 2024 19:28:57 +0000
Subject: [PATCH 06/71] Automatic upgrade of the SDK. Build #341517.

---
 .../Catalog/StaffApp/CatalogList/CatalogListModel.php  |  7 +++++++
 .../Wl/Purchase/Receipt/PurchaseReceiptModel.php       |  8 --------
 WellnessLiving/Wl/User/Info/UserInfoModel.php          | 10 ++++++++++
 3 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php b/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
index 3b697f04..4dfff192 100644
--- a/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
+++ b/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
@@ -33,6 +33,13 @@ class CatalogListModel extends WlModelAbstract
    *     The list of login types available to purchase the sale item.
    *   </dd>
    *   <dt>
+   *     string[] <var>a_member_group</var>
+   *   </dt>
+   *   <dd>
+   *     The list of member groups available to purchase the sale item.
+   *
+   *   </dd>
+   *   <dt>
    *     string[] <var>a_shop_category</var>
    *   </dt>
    *   <dd>
diff --git a/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php b/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
index eb174992..9459a75c 100644
--- a/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
+++ b/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
@@ -405,14 +405,6 @@ class PurchaseReceiptModel extends WlModelAbstract
    */
   public $text_receipt;
 
-  /**
-   * UID of current user. Can be empty.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $uid_current = null;
-
   /**
    * The URL for printing on a normal printer.
    *
diff --git a/WellnessLiving/Wl/User/Info/UserInfoModel.php b/WellnessLiving/Wl/User/Info/UserInfoModel.php
index 6fe5bf21..b773b995 100644
--- a/WellnessLiving/Wl/User/Info/UserInfoModel.php
+++ b/WellnessLiving/Wl/User/Info/UserInfoModel.php
@@ -10,6 +10,14 @@
  */
 class UserInfoModel extends WlModelAbstract
 {
+  /**
+   * List of member groups that the user belongs to.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_member_group = [];
+
   /**
    * Information about the user's photo. The information returned has the following structure:<dl>
    *   <dt>int <var>i_height</var></dt>
@@ -31,6 +39,8 @@ class UserInfoModel extends WlModelAbstract
    * List of user's data.
    *
    * <dl>
+   *   <dt>array <var>a_member_group</var></dt>
+   *   <dd>List of member groups that the user belongs to.</dd>
    *   <dt>array <var>a_photo</var></dt>
    *   <dd>Information about the user's photo.</dd>
    *   <dt>string <var>dt_add</var></dt>

From c3f216867f3a733c5e56e1080432a630f817ce2c Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 29 May 2024 21:56:09 +0000
Subject: [PATCH 07/71] Automatic upgrade of the SDK. Build #342231.

---
 .../Core/Quiz/ResponseStatusSid.php           |   5 -
 .../Wl/Book/Process/Payment/PaymentModel.php  |  48 +--
 .../Book/Process/Purchase/Purchase56Model.php | 297 ++++++------------
 .../Process/Purchase/PurchaseElementModel.php |   9 +
 .../Book/Process/Purchase/PurchaseModel.php   | 297 ++++++------------
 .../StaffApp/CatalogList/CatalogListModel.php |   2 +
 .../Wl/Pay/Form/EnvironmentModel.php          |   2 +-
 WellnessLiving/Wl/Quiz/QuizElementModel.php   |  16 +
 WellnessLiving/WlHeaderAuthorization.php      | 133 ++++++++
 WellnessLiving/WlModelRequest.php             |   2 +-
 WellnessLiving/WlTool.php                     |  38 +++
 WellnessLiving/WlWebhook.php                  | 155 +++++++++
 example-webhook.php                           |  28 ++
 13 files changed, 588 insertions(+), 444 deletions(-)
 create mode 100644 WellnessLiving/WlHeaderAuthorization.php
 create mode 100644 WellnessLiving/WlWebhook.php
 create mode 100644 example-webhook.php

diff --git a/WellnessLiving/Core/Quiz/ResponseStatusSid.php b/WellnessLiving/Core/Quiz/ResponseStatusSid.php
index cfb30b61..97467bf5 100644
--- a/WellnessLiving/Core/Quiz/ResponseStatusSid.php
+++ b/WellnessLiving/Core/Quiz/ResponseStatusSid.php
@@ -24,11 +24,6 @@ class ResponseStatusSid
    */
   const DRAFT = 2;
 
-  /**
-   * Response are duplicated.
-   */
-  const DUPLICATE = 6;
-
   /**
    * Response in inactive.
    *
diff --git a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
index d40dca4e..b167e948 100644
--- a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
@@ -19,41 +19,19 @@
 class PaymentModel extends WlModelAbstract
 {
   /**
-   * A list of items to be bought. Every element has the next keys:
-   * <dl>
-   *   <dt>
-   *     int <var>id_purchase_item</var>
-   *   </dt>
-   *   <dd>
-   *     The ID of purchase item type. One of {@link WlPurchaseItemSid} constants.
-   *   </dd>
-   *   <dt>
-   *     boolean [<var>is_renew</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> if the item should be set to auto-renew; <tt>false</tt> if otherwise.
-   *     If not set yet, use the default option for this item.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_id</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the purchase item in the database.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_login_prize</var>
-   *   </dt>
-   *   <dd>
-   *     ID of user's prize.
-   *     Not <tt>0</tt> only if user is paying book by prize.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_signature</var>]
-   *   </dt>
-   *   <dd>
-   *     The signature of the Purchase Option contract.
-   *     This won't be set if the Purchase Option doesn't require a contract assignment.
-   *   </dd>
+   * A list of items to be bought. Every element has the next keys: <dl>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The ID of purchase item type. One of {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>boolean [<var>is_renew</var>]</dt>
+   *   <dd>`true` if the item should be set to auto-renew; `false` otherwise. If not set yet, use the default option for this item.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The key of the purchase item in the database.</dd>
+   *   <dt>string <var>k_login_prize</var></dt>
+   *   <dd>Key of user's prize. Not `0` only if user is paying book by prize.</dd>
+   *   <dt>string <var>k_reward_prize</var></dt>
+   *   <dd>Key of reward prize. Not `0` only if user wants to redeem prize and use it to pay for visit.</dd>
+   *   <dt>string [<var>s_signature</var>]</dt>
+   *   <dd>The signature of the Purchase Option contract. This won't be set if the Purchase Option doesn't require a contract assignment.</dd>
    * </dl>
    *
    * @post post
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
index 6e607ec5..e540eb93 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
@@ -21,9 +21,20 @@ class Purchase56Model extends WlModelAbstract
   /**
    * Data about the login prize which can be used to pay for service.
    * <dl>
-   *   <dt>int <var>i_count</var></dt><dd>Login prize remaining quantity.</dd>
-   *   <dt>string <var>k_login_prize</var></dt><dd>Key of login prize.</dd>
-   *   <dt>string <var>text_description</var></dt><dd>User friendly login prize description.</dd>
+   *   <dt>string <var>f_price</var></dt>
+   *   <dd>The price, always '0'.</dd>
+   *   <dt>int <var>i_count</var></dt>
+   *   <dd>Login prize remaining quantity.</dd>
+   *   <dt>int <var>i_limit</var></dt>
+   *   <dd>The limit of sessions that can be booked with reward prize.</dd>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The ID of Purchase Option type. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.</dd>
+   *   <dt>string <var>k_login_prize</var></dt>
+   *   <dd>Key of login prize.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>User friendly login prize description.</dd>
    * </dl>
    *
    * @get result
@@ -109,199 +120,71 @@ class Purchase56Model extends WlModelAbstract
 
   /**
    * A list of Purchase Options that are available for the session(s) being booked. Keys refer to unique string IDs, and
-   * values refer arrays with the next fields:
-   * <dl>
-   *   <dt>
-   *     array[] <var>a_installment_template</var>.
-   *   </dt>
-   *   <dd>
-   *     A list of installment plans. Every element has the next keys:
-   *     <dl>
-   *       <dt>
-   *         int <var>i_count</var>
-   *       </dt>
-   *       <dd>
-   *          The number of payments.
-   *       </dd>
-   *       <dt>
-   *         int <var>id_duration</var>
-   *       </dt>
-   *       <dd>
-   *          The duration of a single period. One of the {@link ADurationSid} constants.
-   *       </dd>
-   *       <dt>
-   *         int <var>i_period</var>
-   *       </dt>
-   *       <dd>
-   *          The number of periods specified by <var>id_period</var> between individual payments.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_currency</var>
-   *       </dt>
-   *       <dd>
-   *         The payment currency key.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_pay_installment_template</var>
-   *       </dt>
-   *       <dd>
-   *          The key of the installment plan template.
-   *       </dd>
-   *       <dt>
-   *         string <var>m_amount</var>
-   *       </dt>
-   *       <dd>
-   *         The amount of the installment plan.
-   *       </dd>
-   *       <dt>
-   *         string <var>s_duration</var>
-   *       </dt>
-   *       <dd>
-   *         The title of the installment plan.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     array[] [<var>a_visit_limit</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options. A list of limits on booking by the Purchase Option. Every element has the next keys:
-   *     <dl>
-   *       <dt>
-   *         string <var>s_title</var>
-   *       </dt>
-   *       <dd>
-   *         The limit description.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>f_price</var>
-   *   </dt>
-   *   <dd>
-   *     The price.
-   *   </dd>
-   *   <dt>
-   *     string [<var>f_price_early</var>]
-   *   </dt>
-   *   <dd>
-   *     The price for early bookings.
-   *   </dd>
-   *   <dt>
-   *     string <var>html_payment_period</var>
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var> in short form.
-   *   </dd>
-   *   <dt>
-   *     string <var>html_description</var>
-   *   </dt>
-   *   <dd>
-   *     The description, ready to paste in a browser.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_limit</var>]
-   *   </dt>
-   *   <dd>
-   *     The limit of sessions that can be booked by Purchase Options.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_payment_period</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options with the 'membership' program type. The duration of the regular payment interval.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_session</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for purchases of single sessions. The number of sessions booked simultaneously.
-   *   </dd>
-   *   <dt>
-   *     int [<var>id_program_category</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for promotions. The ID of the promotion program category. One of the {@link WlProgramCategorySid} constants.
-   *   </dd>
-   *   <dt>
-   *     int [<var>id_program_type</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for promotions. The ID of the promotion program type. One of the {@link WlProgramTypeSid} constants.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_purchase_item</var>
-   *   </dt>
-   *   <dd>
-   *     The ID of Purchase Option type. One of the {@link WlPurchaseItemSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_contract</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option requires a contract assignment. Otherwise, this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_convert</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option converts to another instance upon expiration. Otherwise, this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_renew</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option is renewable. Otherwise, this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_renew_check</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option is renewable and the "auto-renew" option is turned on by default. Otherwise,
-   *     this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_id</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_login_prize</var>]
-   *   </dt>
-   *   <dd>
-   *     The key of the user's prize that can be used instead a Purchase Option to book the session.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_contract</var>]
-   *   </dt>
-   *   <dd>
-   *     The contract of the Purchase Option. This is only set if <var>is_contract</var> is <tt>true</tt>.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_payment_duration</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var>.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_promotion_convert</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set if <var>is_convert</var> is <tt>true</tt>. The title to use for the new Purchase Option instance upon auto-renewal.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_value</var>
-   *   </dt>
-   *   <dd>
-   *     The unique identifier.
-   *   </dd>
+   * values refer arrays with the next fields: <dl>
+   *   <dt>array[] <var>a_installment_template</var>.</dt>
+   *   <dd>A list of installment plans. Every element has the next keys:<dl>
+   *     <dt>int <var>i_count</var></dt>
+   *     <dd>The number of payments.</dd>
+   *     <dt>int <var>id_duration</var></dt>
+   *     <dd>The duration of a single period. One of the {@link ADurationSid} constants.</dd>
+   *     <dt>int <var>i_period</var></dt>
+   *     <dd>The number of periods specified by <var>id_period</var> between individual payments.</dd>
+   *     <dt>string <var>k_currency</var></dt>
+   *     <dd>The payment currency key.</dd>
+   *     <dt>string <var>k_pay_installment_template</var></dt>
+   *     <dd>The key of the installment plan template.</dd>
+   *     <dt>string <var>m_amount</var></dt>
+   *     <dd>The amount of the installment plan.</dd>
+   *     <dt>string <var>s_duration</var></dt>
+   *     <dd>The title of the installment plan.</dd></dl></dd>
+   *   <dt>array[] [<var>a_visit_limit</var>]</dt>
+   *   <dd>This is only set for Purchase Options. A list of limits on booking by the Purchase Option. Every element has the next keys:<dl>
+   *     <dt>string <var>s_title</var></dt>
+   *     <dd>The limit description.</dd></dl></dd>
+   *   <dt>string <var>f_price</var></dt>
+   *   <dd>The price.</dd>
+   *   <dt>string [<var>f_price_early</var>]</dt>
+   *   <dd>The price for early bookings.</dd>
+   *   <dt>string <var>html_payment_period</var></dt>
+   *   <dd>This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var> in short form.</dd>
+   *   <dt>string <var>html_description</var></dt>
+   *   <dd>The description, ready to paste in a browser.</dd>
+   *   <dt>int [<var>i_limit</var>]</dt>
+   *   <dd>The limit of sessions that can be booked by Purchase Options.</dd>
+   *   <dt>int [<var>i_payment_period</var>]</dt>
+   *   <dd>This is only set for Purchase Options with the 'membership' program type. The duration of the regular payment interval.</dd>
+   *   <dt>int [<var>i_session</var>]</dt>
+   *   <dd>This is only set for purchases of single sessions. The number of sessions booked simultaneously.</dd>
+   *   <dt>int [<var>id_program_category</var>]</dt>
+   *   <dd>This is only set for promotions. The ID of the promotion program category. One of the {@link WlProgramCategorySid} constants.</dd>
+   *   <dt>int [<var>id_program_type</var>]</dt>
+   *   <dd>This is only set for promotions. The ID of the promotion program type. One of the {@link WlProgramTypeSid} constants.</dd>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The ID of Purchase Option type. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>bool [<var>is_contract</var>]</dt>
+   *   <dd>If `true`, the Purchase Option requires a contract assignment. Otherwise, this will be `false`.</dd>
+   *   <dt>bool [<var>is_convert</var>]</dt>
+   *   <dd>If `true`, the Purchase Option converts to another instance upon expiration. Otherwise, this will be `false`.</dd>
+   *   <dt>bool [<var>is_renew</var>]</dt>
+   *   <dd>If `true`, the Purchase Option is renewable. Otherwise, this will be `false`.</dd>
+   *   <dt>bool [<var>is_renew_check</var>]</dt>
+   *   <dd>If `true`, the Purchase Option is renewable and the "auto-renew" option is turned on by default. Otherwise, this will be `false`.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.</dd>
+   *   <dt>string [<var>k_login_prize</var>]</dt>
+   *   <dd>The key of the user's prize that can be used instead a Purchase Option to book the session.</dd>
+   *   <dt>string [<var>k_reward_prize</var>]</dt>
+   *   <dd>The key of the reward prize that can be used instead a Purchase Option to book the session.</dd>
+   *   <dt>string [<var>s_contract</var>]</dt>
+   *   <dd>The contract of the Purchase Option. This is only set if <var>is_contract</var> is `true`.</dd>
+   *   <dt>string [<var>s_payment_duration</var>]</dt>
+   *   <dd>This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var>.</dd>
+   *   <dt>string [<var>s_promotion_convert</var>]</dt>
+   *   <dd>This is only set if <var>is_convert</var> is `true`. The title to use for the new Purchase Option instance upon auto-renewal.</dd>
+   *   <dt>string <var>s_title</var></dt>
+   *   <dd>The title.</dd>
+   *   <dt>string <var>s_value</var></dt>
+   *   <dd>The unique identifier.</dd>
    * </dl>
    *
    * @get result
@@ -365,9 +248,21 @@ class Purchase56Model extends WlModelAbstract
    * List of redeemable prizes which can be used to pay for service.
    * Each element has the following fields:
    * <dl>
+   *   <dt>string <var>f_price</var></dt>
+   *   <dd>The price, always '0'.</dd>
+   *   <dt>int <var>i_limit</var></dt>
+   *   <dd>The limit of sessions that can be booked with reward prize.</dd>
    *   <dt>int <var>i_score</var></dt><dd>Prize price in points.</dd>
-   *   <dt>string <var>k_reward_prize</var></dt><dd>Key of redeemable prize..</dd>
-   *   <dt>string <var>text_description</var></dt><dd>User friendly prize description.</dd>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The ID of Purchase Option type. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.</dd>
+   *   <dt>string <var>k_reward_prize</var></dt>
+   *   <dd>Key of redeemable prize.</dd>
+   *   <dt>string <var>s_value</var></dt>
+   *   <dd>The unique identifier.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>User friendly prize description.</dd>
    * </dl>
    *
    * @get result
@@ -388,15 +283,15 @@ class Purchase56Model extends WlModelAbstract
 
   /**
    * The list of session passes that might be used in booking process.
-   *  Each element has the following fields:
+   * Each element has the following fields:
    *  <dl>
    *    <dt>int <var>i_remain</var></dt>
    *    <dd>Number of remaining visits on session pass.</dd>
-   *    <dt>int <var>k_session_pass</var></dt>
+   *    <dt>string <var>k_session_pass</var></dt>
    *    <dd>Session pass key.</dd>
    *    <dt>int <var>id_purchase_item</var></dt>
    *    <dd>Type of the session pass purchase. One of {@link WlPurchaseItemSid} constants.</dd>
-   *    <dt>int <var>s_title</var></dt>
+   *    <dt>string <var>s_title</var></dt>
    *    <dd>Session pass title.</dd>
    *  </dl>
    *
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
index facfb5f2..855877ce 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
@@ -72,6 +72,15 @@ class PurchaseElementModel extends WlModelAbstract
    */
   public $k_pay_installment_template = null;
 
+  /**
+   * The key of the reward prize.
+   * Not empty only if the user wants to redeem prize and use it to pay for a visit.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_reward_prize = '0';
+
   /**
    * The cost of one purchase item (with taxes).
    *
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
index b329bc99..306e881d 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
@@ -24,9 +24,20 @@ class PurchaseModel extends WlModelAbstract
   /**
    * Data about the login prize which can be used to pay for service.
    * <dl>
-   *   <dt>int <var>i_count</var></dt><dd>Login prize remaining quantity.</dd>
-   *   <dt>string <var>k_login_prize</var></dt><dd>Key of login prize.</dd>
-   *   <dt>string <var>text_description</var></dt><dd>User friendly login prize description.</dd>
+   *   <dt>string <var>f_price</var></dt>
+   *   <dd>The price, always '0'.</dd>
+   *   <dt>int <var>i_count</var></dt>
+   *   <dd>Login prize remaining quantity.</dd>
+   *   <dt>int <var>i_limit</var></dt>
+   *   <dd>The limit of sessions that can be booked with reward prize.</dd>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The ID of Purchase Option type. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.</dd>
+   *   <dt>string <var>k_login_prize</var></dt>
+   *   <dd>Key of login prize.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>User friendly login prize description.</dd>
    * </dl>
    *
    * @get result
@@ -112,199 +123,71 @@ class PurchaseModel extends WlModelAbstract
 
   /**
    * A list of Purchase Options that are available for the session(s) being booked. Keys refer to unique string IDs, and
-   * values refer arrays with the next fields:
-   * <dl>
-   *   <dt>
-   *     array[] <var>a_installment_template</var>.
-   *   </dt>
-   *   <dd>
-   *     A list of installment plans. Every element has the next keys:
-   *     <dl>
-   *       <dt>
-   *         int <var>i_count</var>
-   *       </dt>
-   *       <dd>
-   *          The number of payments.
-   *       </dd>
-   *       <dt>
-   *         int <var>id_duration</var>
-   *       </dt>
-   *       <dd>
-   *          The duration of a single period. One of the {@link ADurationSid} constants.
-   *       </dd>
-   *       <dt>
-   *         int <var>i_period</var>
-   *       </dt>
-   *       <dd>
-   *          The number of periods specified by <var>id_period</var> between individual payments.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_currency</var>
-   *       </dt>
-   *       <dd>
-   *         The payment currency key.
-   *       </dd>
-   *       <dt>
-   *         string <var>k_pay_installment_template</var>
-   *       </dt>
-   *       <dd>
-   *          The key of the installment plan template.
-   *       </dd>
-   *       <dt>
-   *         string <var>m_amount</var>
-   *       </dt>
-   *       <dd>
-   *         The amount of the installment plan.
-   *       </dd>
-   *       <dt>
-   *         string <var>s_duration</var>
-   *       </dt>
-   *       <dd>
-   *         The title of the installment plan.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     array[] [<var>a_visit_limit</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options. A list of limits on booking by the Purchase Option. Every element has the next keys:
-   *     <dl>
-   *       <dt>
-   *         string <var>s_title</var>
-   *       </dt>
-   *       <dd>
-   *         The limit description.
-   *       </dd>
-   *     </dl>
-   *   </dd>
-   *   <dt>
-   *     string <var>f_price</var>
-   *   </dt>
-   *   <dd>
-   *     The price.
-   *   </dd>
-   *   <dt>
-   *     string [<var>f_price_early</var>]
-   *   </dt>
-   *   <dd>
-   *     The price for early bookings.
-   *   </dd>
-   *   <dt>
-   *     string <var>html_payment_period</var>
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var> in short form.
-   *   </dd>
-   *   <dt>
-   *     string <var>html_description</var>
-   *   </dt>
-   *   <dd>
-   *     The description, ready to paste in a browser.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_limit</var>]
-   *   </dt>
-   *   <dd>
-   *     The limit of sessions that can be booked by Purchase Options.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_payment_period</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options with the 'membership' program type. The duration of the regular payment interval.
-   *   </dd>
-   *   <dt>
-   *     int [<var>i_session</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for purchases of single sessions. The number of sessions booked simultaneously.
-   *   </dd>
-   *   <dt>
-   *     int [<var>id_program_category</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for promotions. The ID of the promotion program category. One of the {@link WlProgramCategorySid} constants.
-   *   </dd>
-   *   <dt>
-   *     int [<var>id_program_type</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for promotions. The ID of the promotion program type. One of the {@link WlProgramTypeSid} constants.
-   *   </dd>
-   *   <dt>
-   *     int <var>id_purchase_item</var>
-   *   </dt>
-   *   <dd>
-   *     The ID of Purchase Option type. One of the {@link WlPurchaseItemSid} constants.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_contract</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option requires a contract assignment. Otherwise, this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_convert</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option converts to another instance upon expiration. Otherwise, this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_renew</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option is renewable. Otherwise, this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     bool [<var>is_renew_check</var>]
-   *   </dt>
-   *   <dd>
-   *     If <tt>true</tt>, the Purchase Option is renewable and the "auto-renew" option is turned on by default. Otherwise,
-   *     this will be <tt>false</tt>.
-   *   </dd>
-   *   <dt>
-   *     string <var>k_id</var>
-   *   </dt>
-   *   <dd>
-   *     The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.
-   *   </dd>
-   *   <dt>
-   *     string [<var>k_login_prize</var>]
-   *   </dt>
-   *   <dd>
-   *     The key of the user's prize that can be used instead a Purchase Option to book the session.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_contract</var>]
-   *   </dt>
-   *   <dd>
-   *     The contract of the Purchase Option. This is only set if <var>is_contract</var> is <tt>true</tt>.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_payment_duration</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var>.
-   *   </dd>
-   *   <dt>
-   *     string [<var>s_promotion_convert</var>]
-   *   </dt>
-   *   <dd>
-   *     This is only set if <var>is_convert</var> is <tt>true</tt>. The title to use for the new Purchase Option instance upon auto-renewal.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_title</var>
-   *   </dt>
-   *   <dd>
-   *     The title.
-   *   </dd>
-   *   <dt>
-   *     string <var>s_value</var>
-   *   </dt>
-   *   <dd>
-   *     The unique identifier.
-   *   </dd>
+   * values refer arrays with the next fields: <dl>
+   *   <dt>array[] <var>a_installment_template</var>.</dt>
+   *   <dd>A list of installment plans. Every element has the next keys:<dl>
+   *     <dt>int <var>i_count</var></dt>
+   *     <dd>The number of payments.</dd>
+   *     <dt>int <var>id_duration</var></dt>
+   *     <dd>The duration of a single period. One of the {@link ADurationSid} constants.</dd>
+   *     <dt>int <var>i_period</var></dt>
+   *     <dd>The number of periods specified by <var>id_period</var> between individual payments.</dd>
+   *     <dt>string <var>k_currency</var></dt>
+   *     <dd>The payment currency key.</dd>
+   *     <dt>string <var>k_pay_installment_template</var></dt>
+   *     <dd>The key of the installment plan template.</dd>
+   *     <dt>string <var>m_amount</var></dt>
+   *     <dd>The amount of the installment plan.</dd>
+   *     <dt>string <var>s_duration</var></dt>
+   *     <dd>The title of the installment plan.</dd></dl></dd>
+   *   <dt>array[] [<var>a_visit_limit</var>]</dt>
+   *   <dd>This is only set for Purchase Options. A list of limits on booking by the Purchase Option. Every element has the next keys:<dl>
+   *     <dt>string <var>s_title</var></dt>
+   *     <dd>The limit description.</dd></dl></dd>
+   *   <dt>string <var>f_price</var></dt>
+   *   <dd>The price.</dd>
+   *   <dt>string [<var>f_price_early</var>]</dt>
+   *   <dd>The price for early bookings.</dd>
+   *   <dt>string <var>html_payment_period</var></dt>
+   *   <dd>This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var> in short form.</dd>
+   *   <dt>string <var>html_description</var></dt>
+   *   <dd>The description, ready to paste in a browser.</dd>
+   *   <dt>int [<var>i_limit</var>]</dt>
+   *   <dd>The limit of sessions that can be booked by Purchase Options.</dd>
+   *   <dt>int [<var>i_payment_period</var>]</dt>
+   *   <dd>This is only set for Purchase Options with the 'membership' program type. The duration of the regular payment interval.</dd>
+   *   <dt>int [<var>i_session</var>]</dt>
+   *   <dd>This is only set for purchases of single sessions. The number of sessions booked simultaneously.</dd>
+   *   <dt>int [<var>id_program_category</var>]</dt>
+   *   <dd>This is only set for promotions. The ID of the promotion program category. One of the {@link WlProgramCategorySid} constants.</dd>
+   *   <dt>int [<var>id_program_type</var>]</dt>
+   *   <dd>This is only set for promotions. The ID of the promotion program type. One of the {@link WlProgramTypeSid} constants.</dd>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The ID of Purchase Option type. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>bool [<var>is_contract</var>]</dt>
+   *   <dd>If `true`, the Purchase Option requires a contract assignment. Otherwise, this will be `false`.</dd>
+   *   <dt>bool [<var>is_convert</var>]</dt>
+   *   <dd>If `true`, the Purchase Option converts to another instance upon expiration. Otherwise, this will be `false`.</dd>
+   *   <dt>bool [<var>is_renew</var>]</dt>
+   *   <dd>If `true`, the Purchase Option is renewable. Otherwise, this will be `false`.</dd>
+   *   <dt>bool [<var>is_renew_check</var>]</dt>
+   *   <dd>If `true`, the Purchase Option is renewable and the "auto-renew" option is turned on by default. Otherwise, this will be `false`.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.</dd>
+   *   <dt>string [<var>k_login_prize</var>]</dt>
+   *   <dd>The key of the user's prize that can be used instead a Purchase Option to book the session.</dd>
+   *   <dt>string [<var>k_reward_prize</var>]</dt>
+   *   <dd>The key of the reward prize that can be used instead a Purchase Option to book the session.</dd>
+   *   <dt>string [<var>s_contract</var>]</dt>
+   *   <dd>The contract of the Purchase Option. This is only set if <var>is_contract</var> is `true`.</dd>
+   *   <dt>string [<var>s_payment_duration</var>]</dt>
+   *   <dd>This is only set for Purchase Options with the 'membership' program type. The measurement unit of <var>i_payment_period</var>.</dd>
+   *   <dt>string [<var>s_promotion_convert</var>]</dt>
+   *   <dd>This is only set if <var>is_convert</var> is `true`. The title to use for the new Purchase Option instance upon auto-renewal.</dd>
+   *   <dt>string <var>s_title</var></dt>
+   *   <dd>The title.</dd>
+   *   <dt>string <var>s_value</var></dt>
+   *   <dd>The unique identifier.</dd>
    * </dl>
    *
    * @get result
@@ -368,9 +251,21 @@ class PurchaseModel extends WlModelAbstract
    * List of redeemable prizes which can be used to pay for service.
    * Each element has the following fields:
    * <dl>
+   *   <dt>string <var>f_price</var></dt>
+   *   <dd>The price, always '0'.</dd>
+   *   <dt>int <var>i_limit</var></dt>
+   *   <dd>The limit of sessions that can be booked with reward prize.</dd>
    *   <dt>int <var>i_score</var></dt><dd>Prize price in points.</dd>
-   *   <dt>string <var>k_reward_prize</var></dt><dd>Key of redeemable prize..</dd>
-   *   <dt>string <var>text_description</var></dt><dd>User friendly prize description.</dd>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The ID of Purchase Option type. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.</dd>
+   *   <dt>string <var>k_reward_prize</var></dt>
+   *   <dd>Key of redeemable prize.</dd>
+   *   <dt>string <var>s_value</var></dt>
+   *   <dd>The unique identifier.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>User friendly prize description.</dd>
    * </dl>
    *
    * @get result
@@ -391,15 +286,15 @@ class PurchaseModel extends WlModelAbstract
 
   /**
    * The list of session passes that might be used in booking process.
-   *  Each element has the following fields:
+   * Each element has the following fields:
    *  <dl>
    *    <dt>int <var>i_remain</var></dt>
    *    <dd>Number of remaining visits on session pass.</dd>
-   *    <dt>int <var>k_session_pass</var></dt>
+   *    <dt>string <var>k_session_pass</var></dt>
    *    <dd>Session pass key.</dd>
    *    <dt>int <var>id_purchase_item</var></dt>
    *    <dd>Type of the session pass purchase. One of {@link WlPurchaseItemSid} constants.</dd>
-   *    <dt>int <var>s_title</var></dt>
+   *    <dt>string <var>s_title</var></dt>
    *    <dd>Session pass title.</dd>
    *  </dl>
    *
diff --git a/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php b/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
index 4dfff192..e21d3fff 100644
--- a/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
+++ b/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
@@ -31,6 +31,7 @@ class CatalogListModel extends WlModelAbstract
    *   </dt>
    *   <dd>
    *     The list of login types available to purchase the sale item.
+   *     Empty list means that the sale item is available to all login types.
    *   </dd>
    *   <dt>
    *     string[] <var>a_member_group</var>
@@ -38,6 +39,7 @@ class CatalogListModel extends WlModelAbstract
    *   <dd>
    *     The list of member groups available to purchase the sale item.
    *
+   *     Empty list means that the sale item is available to all member groups.
    *   </dd>
    *   <dt>
    *     string[] <var>a_shop_category</var>
diff --git a/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php b/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
index b517a226..a66b17f8 100644
--- a/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
+++ b/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
@@ -91,7 +91,7 @@ class EnvironmentModel extends WlModelAbstract
   public $a_pay_processor = null;
 
   /**
-   * Local date with time now in current location {@link EnvironmentModel::$k_location}
+   * Current local date in current location {@link EnvironmentModel::$k_location}
    * or business {@link EnvironmentModel::$k_business} if not set location.
    *
    * @get result
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index 5b15ac44..8971404b 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -50,6 +50,22 @@ class QuizElementModel extends WlModelAbstract
    */
   public $can_anonymous = false;
 
+  /**
+   * Whether user has privileges to manage form.
+   *
+   * @get result
+   * @var bool
+   */
+  public $can_manage = false;
+
+  /**
+   * Whether user has privileges to view form responses.
+   *
+   * @get result
+   * @var bool
+   */
+  public $can_view_response = false;
+
   /**
    * Number of responses for specific quiz.
    *
diff --git a/WellnessLiving/WlHeaderAuthorization.php b/WellnessLiving/WlHeaderAuthorization.php
new file mode 100644
index 00000000..7ca1a1ab
--- /dev/null
+++ b/WellnessLiving/WlHeaderAuthorization.php
@@ -0,0 +1,133 @@
+<?php
+
+namespace WellnessLiving;
+
+use WellnessLiving\Config\WlConfigAbstract;
+
+/**
+ * Represents the 'Authorization' header fields from an HTTP request.
+ */
+class WlHeaderAuthorization
+{
+  /**
+   * List of headers that were used in computing the signature.
+   * Each element is the name of the header.
+   * The order of enumeration corresponds to the order of application when generating the signature.
+   *
+   * `null` if there is no value (in case of data format violation).
+   *
+   * @var string[]|null
+   */
+  public $a_header_sign = null;
+
+  /**
+   * Application ID.
+   * Copy of {@link \WellnessLiving\Config\WlConfigAbstract::AUTHORIZE_ID}.
+   *
+   * `null` if there is no value (in case of data format violation).
+   *
+   * @var string|null
+   */
+  public $s_application_id = null;
+
+  /**
+   * Source string with debug information.
+   * `null` if there is no debug information.
+   *
+   * @var string|null
+   */
+  public $s_debug = null;
+
+  /**
+   * Debug information format version.
+   * `null` if there is no debug information.
+   *
+   * @var string|null
+   */
+  public $s_debug_version = null;
+
+  /**
+   * The signature hash.
+   *
+   * `null` if there is no value (in case of data format violation).
+   *
+   * @var string|null
+   */
+  public $s_signature = null;
+
+  /**
+   * Source string with 'Authorization' header value.
+   *
+   * @var string
+   */
+  public $s_source;
+
+  /**
+   * Format version for 'Authorization' header.
+   *
+   * @var string
+   */
+  public $s_version;
+
+  /**
+   * Retrieves all 'Authorization' headers from the current request.
+   *
+   * @return WlHeaderAuthorization[] All 'Authorization' headers from the current request.
+   */
+  public static function createFromRequest()
+  {
+    $a_header = WlTool::getAllHeaders();
+    // When several HTTP headers arrive, on the PHP side they are combined into one, separated by comma+space.
+    $a_auth = explode(', ',isset($a_header['Authorization'])?$a_header['Authorization']:'');
+
+    $a_result = [];
+    foreach($a_auth as $s_auth)
+      $a_result[] = WlHeaderAuthorization::createParse($s_auth);
+
+    return $a_result;
+  }
+
+  /**
+   * Create 'Authorization' header object from string.
+   *
+   * @param string $s_auth The value of 'Authorization' header.
+   * @return WlHeaderAuthorization The 'Authorization' header object.
+   */
+  public static function createParse($s_auth)
+  {
+    $o_result = new WlHeaderAuthorization();
+    $o_result->s_source = $s_auth;
+
+    $a_auth = explode(',',$s_auth,4);
+    $o_result->s_version = $a_auth[0];
+    if(!isset($a_auth[1]))
+      return $o_result;
+
+    $o_result->s_application_id = $a_auth[1];
+    if(!isset($a_auth[2]))
+      return $o_result;
+
+    if($a_auth[2]==='')
+      $o_result->a_header_sign = [];
+    else
+      $o_result->a_header_sign = explode(';',$a_auth[2]);
+
+    if(!isset($a_auth[3]))
+      return $o_result;
+
+    $a_sign_debug = explode('.',$a_auth[3],3);
+    $o_result->s_signature = $a_sign_debug[0];
+    if(!isset($a_sign_debug[1]))
+      return $o_result;
+
+    $o_result->s_debug_version = $a_sign_debug[1];
+    if(!isset($a_sign_debug[2]))
+      return $o_result;
+
+    $o_result->s_debug = $a_sign_debug[2];
+
+    return $o_result;
+  }
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index d6d3c4d1..d69a05d5 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='202404171145';
+  const VERSION='20240529.342231';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.
diff --git a/WellnessLiving/WlTool.php b/WellnessLiving/WlTool.php
index 3c56880b..0b890f59 100644
--- a/WellnessLiving/WlTool.php
+++ b/WellnessLiving/WlTool.php
@@ -68,6 +68,44 @@ public static function dateNowMysql()
   {
     return gmdate('Y-m-d H:i:s',time());
   }
+
+  /**
+   * Gets all HTTP request headers.
+   *
+   * @return string[] All HTTP headers. The key is header name. The value is header value.
+   */
+  public static function getAllHeaders()
+  {
+    // The list of headers remains unchanged until the request is processed.
+    static $a_header = null;
+
+    if(function_exists('apache_request_headers'))
+      return apache_request_headers();
+
+    if($a_header!==null)
+      return $a_header;
+
+    $a_header=[];
+    foreach($_SERVER as $s_name => $s_value)
+    {
+      if(strncmp($s_name,'HTTP_',5)==0)
+      {
+        $s_header = str_replace(
+          ' ',
+          '-',
+          ucwords(
+            strtolower(
+              str_replace('_', ' ', substr($s_name, 5))
+            )
+          )
+        );
+
+        $a_header[$s_header] = $s_value;
+      }
+    }
+
+    return $a_header;
+  }
 }
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlWebhook.php b/WellnessLiving/WlWebhook.php
new file mode 100644
index 00000000..ff6f0912
--- /dev/null
+++ b/WellnessLiving/WlWebhook.php
@@ -0,0 +1,155 @@
+<?php
+
+namespace WellnessLiving;
+
+use WellnessLiving\Config\WlConfigAbstract;
+
+/**
+ * A class with helper functions for working with webhooks.
+ */
+class WlWebhook
+{
+  /**
+   * Request variable values.
+   * Key is the variable name, value is the variable value.
+   *
+   * Cache for the {@link WlWebhook::variable()} method.
+   *
+   * `null` if the {@link WlWebhook::variable()} method was not called.
+   * `false` if no request variables were passed or a data format error.
+   *
+   * @var array|null|false
+   */
+  private $a_variable = null;
+
+  /**
+   * SDK configuration object.
+   *
+   * @var WlConfigAbstract
+   */
+  private $o_config;
+
+  /**
+   * Constructs a new webhook helper object.
+   *
+   * @param WlConfigAbstract $o_config WellnessLiving SDK configuration object.
+   */
+  public function __construct($o_config)
+  {
+    $this->o_config = $o_config;
+  }
+
+  /**
+   * Checks whether the request is authorized or not.
+   *
+   * @return bool `true` if the request is authorized. `false` if the request is signed incorrectly.
+   */
+  public function isAuthorize()
+  {
+    // The request parameters cannot be changed until it is processed.
+    // After processing the request, the script will complete its work.
+    static $is_authorize = null;
+
+    if($is_authorize!==null)
+      return $is_authorize;
+
+    $is_authorize = false;
+
+    $a_variable = $this->variable();
+    if($a_variable===false)
+      return false;
+
+    /** @var WlConfigAbstract $s_config_class */
+    $s_config_class = get_class($this->o_config);
+
+    $a_auth = WlHeaderAuthorization::createFromRequest();
+    $a_signature_receive = [];
+    foreach($a_auth as $o_header_auth)
+    {
+      if(
+        $o_header_auth->s_version==='20150518' &&
+        $o_header_auth->s_application_id===$s_config_class::AUTHORIZE_ID &&
+        $o_header_auth->s_signature!==null &&
+        strlen($o_header_auth->s_signature)==64
+      )
+      {
+        $a_signature_receive[] = $o_header_auth->s_signature;
+      }
+    }
+
+    if(!$a_signature_receive)
+      return false;
+
+    $s_signature_compute = $this->signatureCompute();
+    if(in_array($s_signature_compute,$a_signature_receive))
+      $is_authorize = true;
+
+    return $is_authorize;
+  }
+
+  /**
+   * Computes the signatures of the current request.
+   *
+   * @return string The signature of the current request.
+   */
+  private function signatureCompute()
+  {
+    $s_resource = $_SERVER['REQUEST_URI'];
+    if(strncmp($s_resource,'/',1)==0)
+      $s_resource = substr($s_resource,1);
+
+    /** @var WlConfigAbstract $s_config_class */
+    $s_config_class = get_class($this->o_config);
+
+    $a_header = WlTool::getAllHeaders();
+
+    $a_signature = [
+      'a_header' => [],
+      'a_variable' => $this->variable(),
+      'dt_time' => date_create($a_header['Date'])->format('Y-m-d H:i:s'),
+      's_code' => $s_config_class::AUTHORIZE_CODE,
+      's_cookie_persistent' => '',
+      's_cookie_transient' => '',
+      's_host' => $_SERVER['SERVER_NAME'],
+      's_id' => $s_config_class::AUTHORIZE_ID,
+      's_method' => 'POST',
+      's_resource' => $s_resource,
+    ];
+
+    $s_signature_compute = WlModelRequest::signatureCompute($a_signature);
+
+    // Truncate the debug information.
+    $a_signature = explode('.',$s_signature_compute,2);
+    return $a_signature[0];
+  }
+
+  /**
+   * Gets the request variable values.
+   *
+   * @return array|false Request variable values.
+   *   `false` if no request variables were passed or a data format error.
+   */
+  public function variable()
+  {
+    if($this->a_variable!==null)
+      return $this->a_variable;
+
+    // Variables come in the body of the POST request in the form of a json object.
+    $s_data = file_get_contents('php://input');
+    if(!$s_data)
+    {
+      $this->a_variable = false;
+      return false;
+    }
+
+    $a_variable = @json_decode($s_data,true);
+    if(!is_array($a_variable) || count($a_variable)==0)
+      $this->a_variable = false;
+    else
+      $this->a_variable = $a_variable;
+
+    return $this->a_variable;
+  }
+}
+
+?>
\ No newline at end of file
diff --git a/example-webhook.php b/example-webhook.php
new file mode 100644
index 00000000..22d6a4c1
--- /dev/null
+++ b/example-webhook.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace WlSdkExample;
+
+use WellnessLiving\WlRegionSid;
+use WellnessLiving\WlWebhook;
+
+require_once __DIR__.'/WellnessLiving/wl-autoloader.php';
+require_once __DIR__.'/example-config.php';
+
+$o_config=ExampleConfig::create(WlRegionSid::US_EAST_1);
+$o_webhook = new WlWebhook($o_config);
+
+// We check whether the webhook request is authorized or not.
+if($o_webhook->isAuthorize())
+  echo "Webhook is authorized.".PHP_EOL;
+else
+{
+  echo "ERROR: Webhook is not authorized.".PHP_EOL;
+  return;
+}
+
+echo "The request body: ".PHP_EOL;
+echo var_export($o_webhook->variable(),true);
+
+echo PHP_EOL;
+
+?>
\ No newline at end of file

From c3feb7df3ac7b438a64cfba2560a8815f3ead902 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Fri, 31 May 2024 16:45:54 +0000
Subject: [PATCH 08/71] Automatic upgrade of the SDK. Build #342617.

---
 .../Book/Service/ServiceList52Model.php       | 10 ++++----
 WellnessLiving/Wl/Catalog/Cart/CartModel.php  | 24 +++++++++++++++----
 WellnessLiving/Wl/Fitbuilder/MessageModel.php | 11 ++++++++-
 WellnessLiving/Wl/Lead/LeadModel.php          | 10 ++++++++
 WellnessLiving/Wl/Quiz/QuizElementModel.php   | 16 -------------
 WellnessLiving/WlModelRequest.php             |  2 +-
 6 files changed, 45 insertions(+), 28 deletions(-)

diff --git a/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php b/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
index 0b03e231..01f9c5d8 100644
--- a/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
@@ -79,18 +79,18 @@ class ServiceList52Model extends WlModelAbstract
    *     </dl>
    *   </dd>
    *   <dt>
-   *     string[] <var>a_login_type_restriction</var>
+   *     array <var>a_login_type_restriction</var>
    *   </dt>
    *   <dd>
-   *     List of login type titles for current service.
-   *     Clients that have one of these types can book service.
+   *     Keys are login type keys, primary keys in {@link \Wl\Login\Type\Sql}, values - List of login types' titles for
+   *     current service. Clients that have one of these types can book service.
    *   </dd>
    *   <dt>
    *     string[] <var>a_member_group_restriction</var>
    *   </dt>
    *   <dd>
-   *     List of member groups titles for current service.
-   *     Clients that belongs to these groups can book service.
+   *     Keys are member group keys, primary keys in {@link \Wl\Member\Group\Sql}, values - list of member groups' titles
+   *     for current service. Clients that belongs to these groups can book service.
    *   </dd>
    *   <dt>
    *     string <var>f_deposit</var>
diff --git a/WellnessLiving/Wl/Catalog/Cart/CartModel.php b/WellnessLiving/Wl/Catalog/Cart/CartModel.php
index 49874770..93ac938a 100644
--- a/WellnessLiving/Wl/Catalog/Cart/CartModel.php
+++ b/WellnessLiving/Wl/Catalog/Cart/CartModel.php
@@ -35,7 +35,7 @@ class CartModel extends WlModelAbstract
    *   <dd>The shop product option. If empty string, the sale item has no options.</dd>
    * </dl>
    *
-   * @get get
+   * @get get,result
    * @var array[]
    */
   public $a_item = [];
@@ -43,10 +43,14 @@ class CartModel extends WlModelAbstract
   /**
    * List of prizes that can be redeemed and applied to items in the cart.
    * <dl>
+   *   <dt>int <var>i_score</var></dt>
+   *   <dd>Amount of points needed to redeem the prize.</dd>
    *   <dt>string <var>k_reward_prize</var></dt>
    *
+   *   <dt>string <var>text_discount</var></dt>
+   *   <dd>Reward prize discount, e.g. '$10.00 off', '10% off'.</dd>
    *   <dt>string <var>text_title</var></dt>
-   *   <dd>Reward prize title.</dd>
+   *   <dd>Reward prize title, e.g. 'on any item', 'on Water bottle', 'on any Appointment Pass or Membership Purchase Option'.</dd>
    * </dl>
    *
    * @get result
@@ -80,11 +84,13 @@ class CartModel extends WlModelAbstract
    *   <dt>string <var>k_login_prize</var></dt>
    *
    *   <dt>string <var>text_discount</var></dt>
-   *   <dd>Login prize discount title, for example 'Apply 10% off'.</dd>
+   *   <dd>Reward prize discount, e.g. '$10.00 off', '10% off'.</dd>
    *   <dt>string <var>text_discount_applied</var></dt>
-   *   <dd>Applied login prize discount title, for example '10% discount'.</dd>
+   *   <dd>Applied login prize discount title, e.g. '10% discount'.</dd>
+   *   <dt>string <var>text_discount_purpose</var></dt>
+   *   <dd>Purpose login prize discount title, e.g. 'Apply 10% off'.</dd>
    *   <dt>string <var>text_title</var></dt>
-   *   <dd>Login prize title.</dd>
+   *   <dd>Reward prize title, e.g. 'on any item', 'on Water bottle', 'on any Appointment Pass or Membership Purchase Option'.</dd>
    * </dl>
    *
    * @get result
@@ -111,6 +117,14 @@ class CartModel extends WlModelAbstract
    */
   public $i_score;
 
+  /**
+   * Whether selected login prize should be auto applied to first applicable item.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_auto_apply_prize = true;
+
   /**
    * The location key.
    *
diff --git a/WellnessLiving/Wl/Fitbuilder/MessageModel.php b/WellnessLiving/Wl/Fitbuilder/MessageModel.php
index b5f2bb04..ec41ade3 100644
--- a/WellnessLiving/Wl/Fitbuilder/MessageModel.php
+++ b/WellnessLiving/Wl/Fitbuilder/MessageModel.php
@@ -10,7 +10,16 @@
 class MessageModel extends WlModelAbstract
 {
   /**
-   * Messenger information.
+   * Messenger information:
+   * <dl>
+   *   <dt>
+   *     array `message`
+   *   <dt>
+   *   <dd>
+   *     Message information:
+   *     <dl><dt>string `id`</dt><dd>Message key.</dd></dl>
+   *   </dd>
+   * </dl>
    *
    * @post post
    * @var array
diff --git a/WellnessLiving/Wl/Lead/LeadModel.php b/WellnessLiving/Wl/Lead/LeadModel.php
index 72ca5fd0..d0728c2a 100644
--- a/WellnessLiving/Wl/Lead/LeadModel.php
+++ b/WellnessLiving/Wl/Lead/LeadModel.php
@@ -113,6 +113,16 @@ class LeadModel extends WlModelAbstract
    */
   public $a_skin;
 
+  /**
+   * Whether it is possible to give free promotion when adding a user (only if free promotion is configured in the widget).
+   * `true` if it is possible, `false` if not.
+   *
+   * @get result
+   * @post get
+   * @var bool
+   */
+  public $can_use_free_purchase = false;
+
   /**
    * The key of business to which the new user must be captured.
    *
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index 8971404b..5b15ac44 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -50,22 +50,6 @@ class QuizElementModel extends WlModelAbstract
    */
   public $can_anonymous = false;
 
-  /**
-   * Whether user has privileges to manage form.
-   *
-   * @get result
-   * @var bool
-   */
-  public $can_manage = false;
-
-  /**
-   * Whether user has privileges to view form responses.
-   *
-   * @get result
-   * @var bool
-   */
-  public $can_view_response = false;
-
   /**
    * Number of responses for specific quiz.
    *
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index d69a05d5..b94bce1a 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240529.342231';
+  const VERSION='20240531.342617';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From cc7459ec50946b6d7103940f024225153a08db7a Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Mon, 3 Jun 2024 11:52:41 +0000
Subject: [PATCH 09/71] Automatic upgrade of the SDK. Build #342788.

---
 WellnessLiving/Wl/Catalog/Cart/CartModel.php |  2 ++
 WellnessLiving/Wl/Profile/Edit/EditModel.php | 21 ++++++++++++++++++++
 WellnessLiving/Wl/WlProfileNoteSid.php       |  7 ++++++-
 WellnessLiving/WlHeaderAuthorization.php     | 16 +++++++++++++++
 WellnessLiving/WlModelRequest.php            |  2 +-
 WellnessLiving/WlWebhook.php                 |  2 +-
 6 files changed, 47 insertions(+), 3 deletions(-)

diff --git a/WellnessLiving/Wl/Catalog/Cart/CartModel.php b/WellnessLiving/Wl/Catalog/Cart/CartModel.php
index 93ac938a..50ca1751 100644
--- a/WellnessLiving/Wl/Catalog/Cart/CartModel.php
+++ b/WellnessLiving/Wl/Catalog/Cart/CartModel.php
@@ -23,6 +23,8 @@ class CartModel extends WlModelAbstract
   /**
    * The list of items in the cart.
    * <dl>
+   *   <dt>string <var>dl_client_prorate</var></dt>
+   *   <dd>The client prorate date. This will be `null` in cases where the client prorate date hasn't passed.</dd>
    *   <dt>int <var>i_quantity</var></dt>
    *   <dd>The quantity of sale items.</dd>
    *   <dt>int <var>id_sale</var></dt>
diff --git a/WellnessLiving/Wl/Profile/Edit/EditModel.php b/WellnessLiving/Wl/Profile/Edit/EditModel.php
index 482f9b14..7a475fe3 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditModel.php
@@ -149,6 +149,16 @@ class EditModel extends WlModelAbstract
    */
   public $id_register_source = null;
 
+  /**
+   * `true` if address inherit, otherwise `false`.
+   *
+   * @get result
+   * @post get
+   * @put get
+   * @var bool
+   */
+  public $is_address_inherit = false;
+
   /**
    * Indicates whether to display the full profile edit form or the short version.
    * This is assumed to be used only in user registration mode.
@@ -270,6 +280,17 @@ class EditModel extends WlModelAbstract
    */
   public $uid_existed = '';
 
+  /**
+   * UID of the user, whose address was inherited by the existing client we want to add.
+   * Empty if non-existent user is being added or user to add is the one, whose address is inherited.
+   *
+   * @get result
+   * @post get
+   * @put get
+   * @var string|null
+   */
+  public $uid_inherit_address = null;
+
   /**
    * UID of the user, whose email was inherited by the existing client we want to add.
    * Empty if non-existent user is being added or user to add is the one, whose email is inherited.
diff --git a/WellnessLiving/Wl/WlProfileNoteSid.php b/WellnessLiving/Wl/WlProfileNoteSid.php
index 68a96d81..9cca2fd5 100644
--- a/WellnessLiving/Wl/WlProfileNoteSid.php
+++ b/WellnessLiving/Wl/WlProfileNoteSid.php
@@ -21,10 +21,15 @@
  *   </li>
  * </ol>
  *
- * Last used ID: 4.
+ * Last used ID: 5.
  */
 abstract class WlProfileNoteSid
 {
+  /**
+   * A list of clients with not redeemed invitations.
+   */
+  const DOORACCESS_BRIVO_INVITATION_BRIVOINVITATIONPROFILE = 5;
+
   /**
    * A list of accounts with invalid progress log.
    */
diff --git a/WellnessLiving/WlHeaderAuthorization.php b/WellnessLiving/WlHeaderAuthorization.php
index 7ca1a1ab..8c52c1e0 100644
--- a/WellnessLiving/WlHeaderAuthorization.php
+++ b/WellnessLiving/WlHeaderAuthorization.php
@@ -9,6 +9,20 @@
  */
 class WlHeaderAuthorization
 {
+  /**
+   * Standard authorization header prefix for requests from our PHP SDK.
+   *
+   * @link namespace.Core/Request/Api/doc/authorization-header.md
+   */
+  const VERSION_20150518='20150518';
+
+  /**
+   * Authorization header prefix for requests from JS SDK when session ID is stored in the local storage.
+   *
+   * @link namespace.Core/Request/Api/doc/authorization-header.md
+   */
+  const VERSION_20210304_CORS='20210304-cors';
+
   /**
    * List of headers that were used in computing the signature.
    * Each element is the name of the header.
@@ -64,6 +78,7 @@ class WlHeaderAuthorization
 
   /**
    * Format version for 'Authorization' header.
+   * One of {@link WlHeaderAuthorization}::`VERSION_*` constants.
    *
    * @var string
    */
@@ -73,6 +88,7 @@ class WlHeaderAuthorization
    * Retrieves all 'Authorization' headers from the current request.
    *
    * @return WlHeaderAuthorization[] All 'Authorization' headers from the current request.
+   * If the array is empty, then there are no 'Authorization' headers in the request.
    */
   public static function createFromRequest()
   {
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index b94bce1a..cffe25d8 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240531.342617';
+  const VERSION='20240603.342788';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.
diff --git a/WellnessLiving/WlWebhook.php b/WellnessLiving/WlWebhook.php
index ff6f0912..809cccfd 100644
--- a/WellnessLiving/WlWebhook.php
+++ b/WellnessLiving/WlWebhook.php
@@ -67,7 +67,7 @@ public function isAuthorize()
     foreach($a_auth as $o_header_auth)
     {
       if(
-        $o_header_auth->s_version==='20150518' &&
+        $o_header_auth->s_version=== WlHeaderAuthorization::VERSION_20150518 &&
         $o_header_auth->s_application_id===$s_config_class::AUTHORIZE_ID &&
         $o_header_auth->s_signature!==null &&
         strlen($o_header_auth->s_signature)==64

From 5f737da6d9e8853c8a6f4f68f1a450cee2c11a9f Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 4 Jun 2024 12:13:36 +0000
Subject: [PATCH 10/71] Automatic upgrade of the SDK. Build #343020.

---
 WellnessLiving/Config/WlConfigAbstract.php    |  66 +++++++
 .../Appointment/Book/Payment/PaymentModel.php |  14 +-
 .../Book/Payment/PaymentMultipleModel.php     |  14 +-
 .../Book/Payment/PaymentPostModel.php         |  14 +-
 .../Book/Service/ServiceListModel.php         |  10 +-
 .../Wl/Profile/Edit/EditByTokenModel.php      |  21 +++
 WellnessLiving/WlHeaderAuthorization.php      | 133 ++++++++++----
 WellnessLiving/WlModelRequest.php             |   2 +-
 WellnessLiving/WlWebhook.php                  | 171 ++++++++++++++----
 example-webhook.php                           |   8 +-
 10 files changed, 375 insertions(+), 78 deletions(-)

diff --git a/WellnessLiving/Config/WlConfigAbstract.php b/WellnessLiving/Config/WlConfigAbstract.php
index 44a821d4..5ef8b1b3 100644
--- a/WellnessLiving/Config/WlConfigAbstract.php
+++ b/WellnessLiving/Config/WlConfigAbstract.php
@@ -4,6 +4,7 @@
 
 use WellnessLiving\Wl\WlRegionSid;
 use WellnessLiving\WlAssertException;
+use WellnessLiving\WlTool;
 
 /**
  * Contains WellnessLiving SDK configuration.
@@ -321,6 +322,71 @@ final public function csrfCode($s_session_key)
     return hash('sha3-512',$s_session_key.'::'.$this::AUTHORIZE_CODE.'::'.$t_time).'.'.$t_time.'.'.substr($s_session_key,0,5);
   }
 
+  /**
+   * Retrieves the raw body content of the POST request.
+   *
+   * Attention!
+   * This method should be overridden in the descendant so that it always returns
+   * the raw body content of the POST request if:
+   * * method execution fails with an error;
+   * * the developer uses PHP version up to 5.6.0;
+   * * the `always_populate_raw_post_data` option is disabled;
+   * * the developer needs to access the raw data of the POST request body.
+   *
+   * This is because the only remaining way to get the raw body content of the POST request is to read
+   * from the 'php://input' stream.
+   * In PHP versions prior to 5.6.0, the 'php://input' stream can only be read once.
+   *
+   * @return string|null Thw raw body content of the POST request.
+   * `null` if the POST request body is empty.
+   */
+  public static function postRawData()
+  {
+    if(version_compare(PHP_VERSION,'5.6.0')<0)
+    {
+      $s_always_populate_raw_post_data = ini_get('always_populate_raw_post_data');
+      $is_always_populate_raw_post_data =
+        $s_always_populate_raw_post_data &&
+        $s_always_populate_raw_post_data!=-1
+      ;
+
+      if(!$is_always_populate_raw_post_data)
+      {
+        trigger_error(
+          "The 'always_populate_raw_post_data' option disabled. ".
+          "You must enable the 'always_populate_raw_post_data' option or override this method.",
+          E_USER_ERROR
+        );
+      }
+
+      if(!array_key_exists('HTTP_RAW_POST_DATA',$_POST))
+        trigger_error("The 'HTTP_RAW_POST_DATA' variable is not available.", E_USER_ERROR);
+
+      return $_POST['HTTP_RAW_POST_DATA'];
+    }
+
+    $a_header = WlTool::getAllHeaders();
+    if(!array_key_exists('Content-Type',$a_header))
+      trigger_error("The 'Content-Type' header are missing: \n".var_export($a_header,true),E_USER_ERROR);
+
+    if(
+      ini_get('enable_post_data_reading') &&
+      (
+        $a_header['Content-Type']==='multipart/form-data' ||
+        strncmp($a_header['Content-Type'],'multipart/form-data;',20)==0
+      )
+    )
+    {
+      trigger_error("Cannot read POST request data with content type 'multipart/form-data': \n".var_export($a_header,true),E_USER_ERROR);
+    }
+
+    $s_post_raw = file_get_contents('php://input');
+    if(!$s_post_raw)
+      return null;
+
+    return $s_post_raw;
+  }
+
   /**
    * Returns URL of the server in the current configuration (including trailing slash).
    *
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
index 914e1f6a..badb7b63 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
@@ -349,13 +349,23 @@ class PaymentModel extends WlModelAbstract
   public $m_discount = '0.00';
 
   /**
-   * Surcharge amount.
+   * Surcharge amount calculated for credit cards.
+   * `null` when surcharge is not enabled or calculated.
    *
    * @get result
-   * @var string
+   * @var string|null
    */
   public $m_surcharge = '0.00';
 
+  /**
+   * Surcharge amount calculated for ACH.
+   * `null` when surcharge is not enabled or calculated.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_surcharge_ach = '0.00';
+
   /**
    * The tax of service.
    *
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
index 2f97e642..1f1832fb 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
@@ -475,13 +475,23 @@ class PaymentMultipleModel extends WlModelAbstract
   public $m_discount;
 
   /**
-   * The surcharge amount.
+   * The surcharge amount calculated for credit cards.
+   * `null` when surcharge is not enabled or calculated.
    *
    * @get result
-   * @var string
+   * @var string|null
    */
   public $m_surcharge;
 
+  /**
+   * The surcharge amount calculated for ACH.
+   * `null` when surcharge is not enabled or calculated.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_surcharge_ach;
+
   /**
    * The amount of tax to pay.
    *
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
index 730712ac..fa0ea669 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
@@ -346,13 +346,23 @@ class PaymentPostModel extends WlModelAbstract
   public $m_discount = '0.00';
 
   /**
-   * Surcharge amount.
+   * Surcharge amount calculated for credit cards.
+   * `null` when surcharge is not enabled or calculated.
    *
    * @get result
-   * @var string
+   * @var string|null
    */
   public $m_surcharge = '0.00';
 
+  /**
+   * Surcharge amount calculated for ACH.
+   * `null` when surcharge is not enabled or calculated.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $m_surcharge_ach = '0.00';
+
   /**
    * The tax of service.
    *
diff --git a/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php b/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
index 362daddd..77a32ee3 100644
--- a/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
@@ -78,18 +78,18 @@ class ServiceListModel extends WlModelAbstract
    *     </dl>
    *   </dd>
    *   <dt>
-   *     string[] <var>a_login_type_restriction</var>
+   *     array <var>a_login_type_restriction</var>
    *   </dt>
    *   <dd>
-   *     List of login type titles for current service.
-   *     Clients that have one of these types can book service.
+   *     Keys are login type keys, primary keys in {@link \Wl\Login\Type\Sql}, values - List of login types' titles for
+   *     current service. Clients that have one of these types can book service.
    *   </dd>
    *   <dt>
    *     string[] <var>a_member_group_restriction</var>
    *   </dt>
    *   <dd>
-   *     List of member groups titles for current service.
-   *     Clients that belongs to these groups can book service.
+   *     Keys are member group keys, primary keys in {@link \Wl\Member\Group\Sql}, values - list of member groups' titles
+   *     for current service. Clients that belongs to these groups can book service.
    *   </dd>
    *   <dt>
    *     string <var>f_deposit</var>
diff --git a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
index 64fb64c7..270f77b4 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
@@ -122,6 +122,16 @@ class EditByTokenModel extends WlModelAbstract
    */
   public $id_register_source = null;
 
+  /**
+   * `true` if address inherit, otherwise `false`.
+   *
+   * @get result
+   * @post get
+   * @put get
+   * @var bool
+   */
+  public $is_address_inherit = false;
+
   /**
    * Indicates whether to display the full profile edit form or the short version.
    * This is assumed to be used only in user registration mode.
@@ -251,6 +261,17 @@ class EditByTokenModel extends WlModelAbstract
    */
   public $uid_existed = '';
 
+  /**
+   * UID of the user, whose address was inherited by the existing client we want to add.
+   * Empty if non-existent user is being added or user to add is the one, whose address is inherited.
+   *
+   * @get result
+   * @post get
+   * @put get
+   * @var string|null
+   */
+  public $uid_inherit_address = null;
+
   /**
    * UID of the user, whose email was inherited by the existing client we want to add.
    * Empty if non-existent user is being added or user to add is the one, whose email is inherited.
diff --git a/WellnessLiving/WlHeaderAuthorization.php b/WellnessLiving/WlHeaderAuthorization.php
index 8c52c1e0..cc35d6ae 100644
--- a/WellnessLiving/WlHeaderAuthorization.php
+++ b/WellnessLiving/WlHeaderAuthorization.php
@@ -23,10 +23,29 @@ class WlHeaderAuthorization
    */
   const VERSION_20210304_CORS='20210304-cors';
 
+  /**
+   * Debug information fields.
+   *
+   * `null` if there is no debug information or the header is not
+   * in the correct format ({@link WlHeaderAuthorization::$is_valid}=`false`).
+   *
+   * The array key is field number. Field numbering starts from 2.
+   * The value is field value.
+   *
+   * @var string[]|null
+   */
+  public $a_debug = null;
+
+  /**
+   * List of found errors in header format.
+   *
+   * @var string[]
+   */
+  public $a_diagnostic = [];
+
   /**
    * List of headers that were used in computing the signature.
    * Each element is the name of the header.
-   * The order of enumeration corresponds to the order of application when generating the signature.
    *
    * `null` if there is no value (in case of data format violation).
    *
@@ -35,26 +54,28 @@ class WlHeaderAuthorization
   public $a_header_sign = null;
 
   /**
-   * Application ID.
-   * Copy of {@link \WellnessLiving\Config\WlConfigAbstract::AUTHORIZE_ID}.
+   * Whether the header is in the correct format.
    *
-   * `null` if there is no value (in case of data format violation).
-   *
-   * @var string|null
+   * @var bool
    */
-  public $s_application_id = null;
+  public $is_valid=false;
 
   /**
-   * Source string with debug information.
-   * `null` if there is no debug information.
+   * Application ID.
+   *
+   * The value must match the value of the {@link WlConfigAbstract::AUTHORIZE_ID} constant.
+   *
+   * `null` if the header is not in the correct format ({@link WlHeaderAuthorization::$is_valid}=`false`).
    *
    * @var string|null
    */
-  public $s_debug = null;
+  public $s_application_id = null;
 
   /**
    * Debug information format version.
-   * `null` if there is no debug information.
+   *
+   * `null` if there is no debug information or the header is not
+   * in the correct format ({@link WlHeaderAuthorization::$is_valid}=`false`).
    *
    * @var string|null
    */
@@ -63,7 +84,7 @@ class WlHeaderAuthorization
   /**
    * The signature hash.
    *
-   * `null` if there is no value (in case of data format violation).
+   * `null` if the header is not in the correct format ({@link WlHeaderAuthorization::$is_valid}=`false`).
    *
    * @var string|null
    */
@@ -80,7 +101,9 @@ class WlHeaderAuthorization
    * Format version for 'Authorization' header.
    * One of {@link WlHeaderAuthorization}::`VERSION_*` constants.
    *
-   * @var string
+   * `null` if the header is not in the correct format ({@link WlHeaderAuthorization::$is_valid}=`false`).
+   *
+   * @var ?string
    */
   public $s_version;
 
@@ -114,33 +137,81 @@ public static function createParse($s_auth)
     $o_result = new WlHeaderAuthorization();
     $o_result->s_source = $s_auth;
 
-    $a_auth = explode(',',$s_auth,4);
-    $o_result->s_version = $a_auth[0];
+    $a_auth = explode(',',$s_auth,5);
+    if(count($a_auth)!=4)
+      $o_result->a_diagnostic[] = 'The number of header elements is not as expected (4 expected, '.count($a_auth).' present.).';
+
+    if(!in_array($a_auth[0],[self::VERSION_20150518,self::VERSION_20210304_CORS]))
+      $o_result->a_diagnostic[] = 'Error in specifying header version: '.$a_auth[0];
+
+    $s_version = $a_auth[0];
+
     if(!isset($a_auth[1]))
+    {
+      $o_result->a_diagnostic[] = 'Application ID is missing.';
       return $o_result;
+    }
 
-    $o_result->s_application_id = $a_auth[1];
-    if(!isset($a_auth[2]))
-      return $o_result;
+    $s_application_id = $a_auth[1];
 
-    if($a_auth[2]==='')
-      $o_result->a_header_sign = [];
-    else
-      $o_result->a_header_sign = explode(';',$a_auth[2]);
+    $a_header_sign = [];
+    if(isset($a_auth[2]) && $a_auth[2]!=='')
+      $a_header_sign = explode(';',$a_auth[2]);
 
     if(!isset($a_auth[3]))
+    {
+      $o_result->a_diagnostic[] = 'Signature is not specified.';
       return $o_result;
-
-    $a_sign_debug = explode('.',$a_auth[3],3);
-    $o_result->s_signature = $a_sign_debug[0];
-    if(!isset($a_sign_debug[1]))
-      return $o_result;
-
-    $o_result->s_debug_version = $a_sign_debug[1];
-    if(!isset($a_sign_debug[2]))
+    }
+
+    $a_signature = explode('.',$a_auth[3]);
+    if(strlen($a_signature[0])!=64)
+      $o_result->a_diagnostic[] = 'Signature SHA256 hash length is not 64 characters: '.$a_signature[0];
+
+    $s_signature = $a_signature[0];
+
+    // A signature can consist of several fields that are separated by a dot.
+    // The first field is always the SHA256 hash of the signature.
+    // Blocks of debugging information may be included in the signature.
+    // If debug information is present, then the second field is the format version of the debug information block,
+    // which can be from 1 to 3.
+    // Depending on the version of the debugging information block, the number of signature fields may vary.
+    $i_sign_count = count($a_signature);
+    $s_debug_version = null;
+    $a_debug = null;
+    if($i_sign_count>1)
+    {
+      $a_debug_field_count = [
+        '1' => 5,
+        '2' => 8,
+        '3' => 4
+      ];
+      $s_debug_version = $a_signature[1];
+      if(!array_key_exists($s_debug_version,$a_debug_field_count))
+      {
+        $o_result->a_diagnostic[] = 'There was an error in specifying the version of the signature debugging information block.: '.$s_debug_version;
+        return $o_result;
+      }
+
+      if($i_sign_count!=$a_debug_field_count[$s_debug_version])
+      {
+        $o_result->a_diagnostic[] = 'The number of signature fields is out of range: '.$i_sign_count;
+        return $o_result;
+      }
+
+      $a_debug = array_slice($a_signature,2,null,true);
+    }
+
+    if($o_result->a_diagnostic)
       return $o_result;
 
-    $o_result->s_debug = $a_sign_debug[2];
+    $o_result->a_debug = $a_debug;
+    $o_result->a_header_sign = $a_header_sign;
+    $o_result->is_valid = true;
+    $o_result->s_application_id = $s_application_id;
+    $o_result->s_debug_version = $s_debug_version;
+    $o_result->s_signature = $s_signature;
+    $o_result->s_version = $s_version;
 
     return $o_result;
   }
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index cffe25d8..473b461d 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240603.342788';
+  const VERSION='20240604.343020';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.
diff --git a/WellnessLiving/WlWebhook.php b/WellnessLiving/WlWebhook.php
index 809cccfd..6a5b45cf 100644
--- a/WellnessLiving/WlWebhook.php
+++ b/WellnessLiving/WlWebhook.php
@@ -9,6 +9,13 @@
  */
 class WlWebhook
 {
+  /**
+   * List of found authentication errors.
+   *
+   * @var string[]
+   */
+  public $a_diagnostic = [];
+
   /**
    * Request variable values.
    * Key is the variable name, value is the variable value.
@@ -16,12 +23,24 @@ class WlWebhook
    * Cache for the {@link WlWebhook::variable()} method.
    *
    * `null` if the {@link WlWebhook::variable()} method was not called.
-   * `false` if no request variables were passed or a data format error.
+   * The empty array if no request variables were passed or a data format error.
    *
    * @var array|null|false
    */
   private $a_variable = null;
 
+  /**
+   * Whether the request is authorized or not.
+   *
+   * The cache of {@link WlWebhook::isAuthorize()} method.
+   *
+   * `true` if the request is authorized. `false` if the request is signed incorrectly.
+   * `null` if the {@link WlWebhook::isAuthorize()} method has not been called yet.
+   *
+   * @var bool|null
+   */
+  private $is_authorize = null;
+
   /**
    * SDK configuration object.
    *
@@ -46,51 +65,111 @@ public function __construct($o_config)
    */
   public function isAuthorize()
   {
-    // The request parameters cannot be changed until it is processed.
-    // After processing the request, the script will complete its work.
-    static $is_authorize = null;
+    if($this->is_authorize!==null)
+      return $this->is_authorize;
 
-    if($is_authorize!==null)
-      return $is_authorize;
+    $this->is_authorize = false;
 
-    $is_authorize = false;
+    $a_header = WlTool::getAllHeaders();
+    if(!array_key_exists('Date',$a_header))
+    {
+      $this->a_diagnostic[] = "There are no 'Date' header:\n".var_export($a_header,true);
+      return false;
+    }
+
+    if(!array_key_exists('Content-Type',$a_header))
+    {
+      $this->a_diagnostic[] = "There are no 'Content-Type' header:\n".var_export($a_header,true);
+      return false;
+    }
+
+    if($a_header['Content-Type']!=='application/json')
+    {
+      $this->a_diagnostic[] = "The content type of POST request is not 'application/json':\n".
+        var_export($a_header,true)
+      ;
+      return false;
+    }
+
+    if(!array_key_exists('User-Agent',$a_header) || $a_header['User-Agent']!=='WellnessLiving/WebhookAgent')
+    {
+      $this->a_diagnostic[] = "The 'User-Agent' header is invalid:\n".
+        var_export($a_header,true)
+      ;
+      return false;
+    }
 
     $a_variable = $this->variable();
-    if($a_variable===false)
+    if(!$a_variable)
+    {
+      $this->a_diagnostic[] = 'There are no request variables.';
       return false;
+    }
 
     /** @var WlConfigAbstract $s_config_class */
     $s_config_class = get_class($this->o_config);
 
     $a_auth = WlHeaderAuthorization::createFromRequest();
-    $a_signature_receive = [];
+    if(!$a_auth)
+    {
+      $this->a_diagnostic[] = "There are no 'Authorization' headers.";
+      return false;
+    }
+
+    $a_signature_hash_receive = [];
+    $a_auth_valid = [];
     foreach($a_auth as $o_header_auth)
     {
-      if(
-        $o_header_auth->s_version=== WlHeaderAuthorization::VERSION_20150518 &&
-        $o_header_auth->s_application_id===$s_config_class::AUTHORIZE_ID &&
-        $o_header_auth->s_signature!==null &&
-        strlen($o_header_auth->s_signature)==64
-      )
+      if(!$o_header_auth->is_valid)
       {
-        $a_signature_receive[] = $o_header_auth->s_signature;
+        $this->a_diagnostic[] = "Invalid 'Authorization' header: ".$o_header_auth->s_source."=>\n".
+          var_export($o_header_auth->a_diagnostic,true)
+        ;
+
+        continue;
       }
+
+      if($o_header_auth->s_version!==WlHeaderAuthorization::VERSION_20150518)
+      {
+        $this->a_diagnostic[] = "The 'Authorization' header version error (expected '".WlHeaderAuthorization::VERSION_20150518."'): ".$o_header_auth->s_version;
+        continue;
+      }
+
+      if($o_header_auth->s_application_id!==$s_config_class::AUTHORIZE_ID)
+      {
+        $this->a_diagnostic[] = "The Application ID is incorrect (expected '".$s_config_class::AUTHORIZE_ID."'): ".$o_header_auth->s_application_id;
+        continue;
+      }
+
+      $a_signature_hash_receive[] = $o_header_auth->s_signature;
+      $a_auth_valid[] = $o_header_auth;
     }
 
-    if(!$a_signature_receive)
+    if(!$a_signature_hash_receive)
       return false;
 
-    $s_signature_compute = $this->signatureCompute();
-    if(in_array($s_signature_compute,$a_signature_receive))
-      $is_authorize = true;
+    $a_signature_compute = $this->signatureCompute();
+    if(in_array($a_signature_compute['s_signature'],$a_signature_hash_receive))
+      $this->is_authorize = true;
+    else
+    {
+      $this->a_diagnostic[] = "Authorisation error: \n".var_export([
+        'a_signature_compute' => $a_signature_compute,
+        'a_header_auth_valid' => $a_auth_valid
+      ],true);
+    }
 
-    return $is_authorize;
+    return $this->is_authorize;
   }
 
   /**
    * Computes the signatures of the current request.
    *
-   * @return string The signature of the current request.
+   * @return string[] The signature of the current request:<dl>
+   *   <dt>string <var>s_signature</var></dt><dd>The signature SHA256 hash.</dd>
+   *   <dt>string <var>s_signature_check</var></dt><dd>Check characters of data that was used for signature.</dd>
+   * </dl>
+   * @throws WlAssertException
    */
   private function signatureCompute()
   {
@@ -117,37 +196,63 @@ private function signatureCompute()
     ];
 
     $s_signature_compute = WlModelRequest::signatureCompute($a_signature);
+    $a_signature_compute = explode('.',$s_signature_compute);
+
+    // We further assume that the signature version is fixed.
+    // If there is a different version, then it is necessary to reconsider the result returned by the method,
+    // as well as the use of this result.
+    WlAssertException::assertTrue(count($a_signature_compute)==5 && $a_signature_compute[1]==='1',[
+      'a_signature_compute' => $a_signature_compute,
+      'text_message' => 'Unexpected computed signature format.',
+    ]);
 
-    // Truncate the debug information.
-    $a_signature = explode('.',$s_signature_compute,2);
-    return $a_signature[0];
+    return [
+      's_signature' => $a_signature_compute[0],
+      's_signature_check' => $a_signature_compute[2]
+    ];
   }
 
   /**
    * Gets the request variable values.
    *
+   * Request variables are passed in the body of the POST request in JSON format.
+   * To verify the signature, variables are already extracted from the body of the POST request.
+   * Using this method allows to avoid repeated steps to parse the POST request body.
+   *
+   * The method can only be called after the request is authorized (the {@link WlWebhook::isAuthorize()} method).
+   *
    * @return array|false Request variable values.
-   *   `false` if no request variables were passed or a data format error.
+   *   The empty array if no request variables were passed or a data format error.
+   *   The array key is field value. The value is the field value.
    */
   public function variable()
   {
     if($this->a_variable!==null)
       return $this->a_variable;
 
+    if($this->is_authorize===null)
+      trigger_error('Method WlWebhook::isAuthorize() must be called first.',E_USER_ERROR);
+
     // Variables come in the body of the POST request in the form of a json object.
-    $s_data = file_get_contents('php://input');
+    /** @var string|WlConfigAbstract $s_config_class */
+    $s_config_class = get_class($this->o_config);
+    $s_data = $s_config_class::postRawData();
     if(!$s_data)
     {
-      $this->a_variable = false;
-      return false;
+      $this->a_diagnostic[] = 'Request body us empty.';
+      $this->a_variable = [];
+      return [];
     }
 
     $a_variable = @json_decode($s_data,true);
-    if(!is_array($a_variable) || count($a_variable)==0)
-      $this->a_variable = false;
-    else
-      $this->a_variable = $a_variable;
+    if(!is_array($a_variable))
+    {
+      $this->a_diagnostic[] = 'Error in request variable format: '.$s_data;
+      $this->a_variable = [];
+      return [];
+    }
 
+    $this->a_variable = $a_variable;
     return $this->a_variable;
   }
 }
diff --git a/example-webhook.php b/example-webhook.php
index 22d6a4c1..d0ddbd90 100644
--- a/example-webhook.php
+++ b/example-webhook.php
@@ -17,11 +17,15 @@
 else
 {
   echo "ERROR: Webhook is not authorized.".PHP_EOL;
+  echo "Diagnostic information:".PHP_EOL;
+  echo var_export($o_webhook->a_diagnostic,true).PHP_EOL;
+
   return;
 }
 
-echo "The request body: ".PHP_EOL;
-echo var_export($o_webhook->variable(),true);
+$a_variable = $o_webhook->variable();
+echo "The request variables: ".PHP_EOL;
+echo var_export($a_variable,true);
 
 echo PHP_EOL;
 

From 4aa51c50c4d8bfb26a0f602d0a8c8603e309d776 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 4 Jun 2024 18:00:17 +0000
Subject: [PATCH 11/71] Automatic upgrade of the SDK. Build #343130.

---
 WellnessLiving/Config/WlConfigAbstract.php    | 35 ++++----
 .../Wl/Announcement/AnnouncementListModel.php | 81 +++++++++++++++++++
 .../Wl/Login/WlLoginActivityTypeSid.php       |  2 -
 WellnessLiving/Wl/User/Info/UserInfoModel.php | 20 +++++
 WellnessLiving/WlModelRequest.php             |  2 +-
 5 files changed, 121 insertions(+), 19 deletions(-)
 create mode 100644 WellnessLiving/Wl/Announcement/AnnouncementListModel.php

diff --git a/WellnessLiving/Config/WlConfigAbstract.php b/WellnessLiving/Config/WlConfigAbstract.php
index 5ef8b1b3..63d06586 100644
--- a/WellnessLiving/Config/WlConfigAbstract.php
+++ b/WellnessLiving/Config/WlConfigAbstract.php
@@ -323,22 +323,25 @@ final public function csrfCode($s_session_key)
   }
 
   /**
-   * Retrieves the raw body content of the POST request.
-   *
-   * Attention!
-   * This method should be overridden in the descendant so that it always returns
-   * the raw body content of the POST request if:
-   * * method execution fails with an error;
-   * * the developer uses PHP version up to 5.6.0;
-   * * the `always_populate_raw_post_data` option is disabled;
-   * * the developer needs to access the raw data of the POST request body.
-   *
-   * This is because the only remaining way to get the raw body content of the POST request is to read
-   * from the 'php://input' stream.
-   * In PHP versions prior to 5.6.0, the 'php://input' stream can only be read once.
-   *
-   * @return string|null Thw raw body content of the POST request.
-   * `null` if the POST request body is empty.
+   * Retrieves the raw content of the HTTP request body.
+   *
+   * ## PHP 5.5 and 5.6 compatibility notes
+   *
+   * In PHP 5.5 and before, there was not possible to make multiple reads from `php://input` stream.
+   * And, this method requires reading from this stream.
+   * If you use PHP 5.5, this will interfere with your application which also needs to read from this stream.
+   * Please, override this method in your configuration subclass to provide a method to read the entire HTTP request body.
+   *
+   * Please, note that there are messages that `php://input` was not reusable in PHP 5.6. See links below for details.
+   *
+   * You may also need to override this method if `always_populate_raw_post_data` is disabled.
+   *
+   * Feel free to override it in other cases when this default implementation does not work well for you.
+   *
+   * @return string|null The raw body content of the POST request. `null` if the POST request body is empty.
+   * @link https://stackoverflow.com/questions/31762278/how-the-php-input-was-made-reusable-in-5-6 It seems they have removed the notice from their official documentation about that `php://input` was not reusable in PHP 5.5.
+   * @link https://stackoverflow.com/questions/35361763/php-input-can-only-be-read-once-in-php-5-6-16 Messages that it was not working for someone in PHP 5.6.
+   * @link https://www.php.net/manual/en/migration56.new-features.php#migration56.new-features.reusable-input PHP 5.6 migration notes: php://input is reusable
    */
   public static function postRawData()
   {
diff --git a/WellnessLiving/Wl/Announcement/AnnouncementListModel.php b/WellnessLiving/Wl/Announcement/AnnouncementListModel.php
new file mode 100644
index 00000000..2b82a5f2
--- /dev/null
+++ b/WellnessLiving/Wl/Announcement/AnnouncementListModel.php
@@ -0,0 +1,81 @@
+<?php
+
+namespace WellnessLiving\Wl\Announcement;
+
+use WellnessLiving\Core\Sid\SortOrderSid;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves a list of announcements.
+ */
+class AnnouncementListModel extends WlModelAbstract
+{
+  /**
+   * List of announcements.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_list = [];
+
+  /**
+   * Order ID for list of announcements.
+   *
+   * Used only when {@link AnnouncementListModel::$is_backend} is `true`.
+   *
+   * `null` in case when use default order.
+   *
+   * @get get,result
+   * @var int|null
+   * @see SortOrderSid
+   */
+  public $id_order = null;
+
+  /**
+   * Sort field ID for list of announcements.
+   *
+   * Used only when {@link AnnouncementListModel::$is_backend} is `true`.
+   *
+   * `null` in case when use default field.
+   *
+   * @get get,result
+   * @var int|null
+   */
+  public $id_sort_field = null;
+
+  /**
+   * If `true`, the API is being used from backend. Otherwise, this will be `false`.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_backend = false;
+
+  /**
+   * Business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * Location key for which need show announcement.
+   *
+   * `null` in case when need show location for all locations in business.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_location = null;
+
+  /**
+   * The filter phrase to filter announcements by name.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_search = '';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/WlLoginActivityTypeSid.php b/WellnessLiving/Wl/Login/WlLoginActivityTypeSid.php
index 4672c0d0..a7267b20 100644
--- a/WellnessLiving/Wl/Login/WlLoginActivityTypeSid.php
+++ b/WellnessLiving/Wl/Login/WlLoginActivityTypeSid.php
@@ -6,8 +6,6 @@
  * Manages identifiers of user activity.
  *
  * Last ID: 54.
- *
- * @copyright 2012 - 2015, WellnessLiving Inc, www.wellnessliving.com.
  */
 abstract class WlLoginActivityTypeSid
 {
diff --git a/WellnessLiving/Wl/User/Info/UserInfoModel.php b/WellnessLiving/Wl/User/Info/UserInfoModel.php
index b773b995..a4484bff 100644
--- a/WellnessLiving/Wl/User/Info/UserInfoModel.php
+++ b/WellnessLiving/Wl/User/Info/UserInfoModel.php
@@ -122,6 +122,17 @@ class UserInfoModel extends WlModelAbstract
    */
   public $dt_birth;
 
+  /**
+   * Whether client's login type has a discount.
+   * `true` - login type has a discount, `false` - otherwise.
+   *
+   * This will be `null` if a client has no assigned login type.
+   *
+   * @get result
+   * @var ?bool
+   */
+  public $has_discount = null;
+
   /**
    * The ID of the user's gender. One of the {@link AGenderSid} constants.
    *
@@ -224,6 +235,15 @@ class UserInfoModel extends WlModelAbstract
    */
   public $s_phone_work = '';
 
+  /**
+   * Login type title.
+   * Empty if a client has no client type assigned.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_login_type = '';
+
   /**
    * The key of the user.
    *
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 473b461d..a4c83dc9 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240604.343020';
+  const VERSION='20240604.343130';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 3603b317b016f6111b736a2bc522271f6e181d4d Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Fri, 7 Jun 2024 09:46:57 +0000
Subject: [PATCH 12/71] Automatic upgrade of the SDK. Build #343602.

---
 .../Wl/Appointment/Book/Payment/PaymentModel.php       | 10 ++++------
 .../Appointment/Book/Payment/PaymentMultipleModel.php  |  8 ++++----
 WellnessLiving/Wl/Fitbuilder/MessageModel.php          | 10 +++++++++-
 .../Profile/PurchaseList/PurchaseListElementModel.php  |  8 ++++++++
 WellnessLiving/Wl/Quiz/QuizElementModel.php            |  9 +++++++++
 WellnessLiving/Wl/WlProfileNoteSid.php                 |  2 ++
 WellnessLiving/WlModelRequest.php                      |  2 +-
 7 files changed, 37 insertions(+), 12 deletions(-)

diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
index badb7b63..64a6faf4 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
@@ -349,20 +349,18 @@ class PaymentModel extends WlModelAbstract
   public $m_discount = '0.00';
 
   /**
-   * Surcharge amount calculated for credit cards.
-   * `null` when surcharge is not enabled or calculated.
+   * Surcharge amount calculated for credit cards (Virtual Terminal and Card Swiper).
    *
    * @get result
-   * @var string|null
+   * @var string
    */
   public $m_surcharge = '0.00';
 
   /**
-   * Surcharge amount calculated for ACH.
-   * `null` when surcharge is not enabled or calculated.
+   * Surcharge amount calculated for money transfers from account: ACH, Direct Connect.
    *
    * @get result
-   * @var string|null
+   * @var string
    */
   public $m_surcharge_ach = '0.00';
 
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
index 1f1832fb..2dfdb7bd 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
@@ -475,22 +475,22 @@ class PaymentMultipleModel extends WlModelAbstract
   public $m_discount;
 
   /**
-   * The surcharge amount calculated for credit cards.
+   * Surcharge amount calculated for credit cards (Virtual Terminal and Card Swiper).
    * `null` when surcharge is not enabled or calculated.
    *
    * @get result
    * @var string|null
    */
-  public $m_surcharge;
+  public $m_surcharge = null;
 
   /**
-   * The surcharge amount calculated for ACH.
+   * Surcharge amount calculated for money transfers from account: ACH, Direct Connect.
    * `null` when surcharge is not enabled or calculated.
    *
    * @get result
    * @var string|null
    */
-  public $m_surcharge_ach;
+  public $m_surcharge_ach = null;
 
   /**
    * The amount of tax to pay.
diff --git a/WellnessLiving/Wl/Fitbuilder/MessageModel.php b/WellnessLiving/Wl/Fitbuilder/MessageModel.php
index ec41ade3..7dfa428f 100644
--- a/WellnessLiving/Wl/Fitbuilder/MessageModel.php
+++ b/WellnessLiving/Wl/Fitbuilder/MessageModel.php
@@ -17,7 +17,15 @@ class MessageModel extends WlModelAbstract
    *   <dt>
    *   <dd>
    *     Message information:
-   *     <dl><dt>string `id`</dt><dd>Message key.</dd></dl>
+   *     <dl><dt>string `id`</dt><dd>Message key.</dd>
+   *     <dt>string `message`</dt><dd>Message text.</dd>
+   *     <dt>string `updated_at`</dt><dd>Date/time when the message has been posted.</dd></dl>
+   *   </dd>
+   *   <dt>
+   *     array `user_profile`
+   *   </dt>
+   *   <dd>
+   *     User's information.
    *   </dd>
    * </dl>
    *
diff --git a/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php b/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php
index 88bcef4e..fffbe99e 100644
--- a/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php
+++ b/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php
@@ -790,6 +790,14 @@ class PurchaseListElementModel extends WlModelAbstract
    */
   public $sid_value;
 
+  /**
+   * Expire conditions for the purchased item (only for promotion).
+   *
+   * @get result
+   * @var string
+   */
+  public $text_expire = '';
+
   /**
    * The key of the user who paid for this purchase.
    *
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index 5b15ac44..55a60fb6 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -9,6 +9,14 @@
  */
 class QuizElementModel extends WlModelAbstract
 {
+  /**
+   * Access log data.
+   *
+   * @get result
+   * @var array[] Access log data.
+   */
+  public $a_access_log = [];
+
   /**
    * List of quiz elements.
    *
@@ -107,6 +115,7 @@ class QuizElementModel extends WlModelAbstract
    * Quiz login key.
    *
    * @delete get
+   * @get get
    * @post get
    * @put get
    * @var string
diff --git a/WellnessLiving/Wl/WlProfileNoteSid.php b/WellnessLiving/Wl/WlProfileNoteSid.php
index 9cca2fd5..edfedcb4 100644
--- a/WellnessLiving/Wl/WlProfileNoteSid.php
+++ b/WellnessLiving/Wl/WlProfileNoteSid.php
@@ -18,6 +18,8 @@
  *      <li><tt>\Wl\A\B\C\Note</tt></li>
  *      <li><tt>\Wl\A\B\C\CNote</tt></li>
  *     </ol>
+ *     Also, you can set the class name in see tag of the constant's documentation.
+ *     Only one requirement is: the class should exist and path to it should be correct, as an example see {@link WlProfileNoteSid::DOORACCESS_BRIVO_INVITATION_BRIVOINVITATIONPROFILE}.
  *   </li>
  * </ol>
  *
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index a4c83dc9..1fba3a51 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240604.343130';
+  const VERSION='20240607.343602';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 42b8478f7506821c5d7b1ec3106ab012b3690d79 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 19 Jun 2024 15:45:51 +0000
Subject: [PATCH 13/71] Automatic upgrade of the SDK. Build #345342.

---
 WellnessLiving/Config/WlConfigAbstract.php    |  46 ++++-
 .../Book/Payment/PaymentMultipleModel.php     |  10 +-
 .../Wl/Book/Process/ProcessModel.php          |   8 +
 .../Wl/Book/Process/Store/StoreModel.php      |  20 +++
 WellnessLiving/Wl/Profile/Edit/EditModel.php  |   2 +
 .../StaffApp/ScheduleListModel.php            |   7 +
 WellnessLiving/WlHeaderAuthorization.php      | 168 +++++++++++-------
 WellnessLiving/WlModelRequest.php             |   2 +-
 WellnessLiving/WlWebhook.php                  | 146 ++++++++++-----
 WellnessLiving/WlWebhookOperationSid.php      |  26 +++
 10 files changed, 315 insertions(+), 120 deletions(-)
 create mode 100644 WellnessLiving/WlWebhookOperationSid.php

diff --git a/WellnessLiving/Config/WlConfigAbstract.php b/WellnessLiving/Config/WlConfigAbstract.php
index 63d06586..6bbf3e81 100644
--- a/WellnessLiving/Config/WlConfigAbstract.php
+++ b/WellnessLiving/Config/WlConfigAbstract.php
@@ -332,7 +332,7 @@ final public function csrfCode($s_session_key)
    * If you use PHP 5.5, this will interfere with your application which also needs to read from this stream.
    * Please, override this method in your configuration subclass to provide a method to read the entire HTTP request body.
    *
-   * Please, note that there are messages that `php://input` was not reusable in PHP 5.6. See links below for details.
+   * Note that there are messages that `php://input` was not reusable in PHP 5.6 either. See links below for details.
    *
    * You may also need to override this method if `always_populate_raw_post_data` is disabled.
    *
@@ -360,17 +360,45 @@ public static function postRawData()
           "You must enable the 'always_populate_raw_post_data' option or override this method.",
           E_USER_ERROR
         );
+
+        /**
+         * User code may ignore errors that are caused through {@link \trigger_error()}.
+         * Therefore we return `null`.
+         *
+         * @noinspection PhpUnreachableStatementInspection
+         */
+        return null;
       }
 
-      if(!array_key_exists('HTTP_RAW_POST_DATA',$_POST))
-        trigger_error("The 'HTTP_RAW_POST_DATA' variable is not available.", E_USER_ERROR);
+      if(!array_key_exists('HTTP_RAW_POST_DATA',$GLOBALS))
+      {
+        trigger_error("The 'HTTP_RAW_POST_DATA' global variable is not available.", E_USER_ERROR);
+
+        /**
+         * User code may ignore errors that are caused through {@link \trigger_error()}.
+         * Therefore we return `null`.
+         *
+         * @noinspection PhpUnreachableStatementInspection
+         */
+        return null;
+      }
 
-      return $_POST['HTTP_RAW_POST_DATA'];
+      return $GLOBALS['HTTP_RAW_POST_DATA'];
     }
 
     $a_header = WlTool::getAllHeaders();
     if(!array_key_exists('Content-Type',$a_header))
-      trigger_error("The 'Content-Type' header are missing: \n".var_export($a_header,true),E_USER_ERROR);
+    {
+      trigger_error("The 'Content-Type' header is missing: \n".var_export($a_header,true),E_USER_ERROR);
+
+      /**
+       * User code may ignore errors that are caused through {@link \trigger_error()}.
+       * Therefore we return `null`.
+       *
+       * @noinspection PhpUnreachableStatementInspection
+       */
+      return null;
+    }
 
     if(
       ini_get('enable_post_data_reading') &&
@@ -381,6 +409,14 @@ public static function postRawData()
     )
     {
       trigger_error("Cannot read POST request data with content type 'multipart/form-data': \n".var_export($a_header,true),E_USER_ERROR);
+
+      /**
+       * User code may ignore errors that are caused through {@link \trigger_error()}.
+       * Therefore we return `null`.
+       *
+       * @noinspection PhpUnreachableStatementInspection
+       */
+      return null;
     }
 
     $s_post_raw = file_get_contents('php://input');
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
index 2dfdb7bd..7055d67a 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
@@ -476,21 +476,19 @@ class PaymentMultipleModel extends WlModelAbstract
 
   /**
    * Surcharge amount calculated for credit cards (Virtual Terminal and Card Swiper).
-   * `null` when surcharge is not enabled or calculated.
    *
    * @get result
-   * @var string|null
+   * @var string
    */
-  public $m_surcharge = null;
+  public $m_surcharge = '0.00';
 
   /**
    * Surcharge amount calculated for money transfers from account: ACH, Direct Connect.
-   * `null` when surcharge is not enabled or calculated.
    *
    * @get result
-   * @var string|null
+   * @var string
    */
-  public $m_surcharge_ach = null;
+  public $m_surcharge_ach = '0.00';
 
   /**
    * The amount of tax to pay.
diff --git a/WellnessLiving/Wl/Book/Process/ProcessModel.php b/WellnessLiving/Wl/Book/Process/ProcessModel.php
index d3fc7616..754890eb 100644
--- a/WellnessLiving/Wl/Book/Process/ProcessModel.php
+++ b/WellnessLiving/Wl/Book/Process/ProcessModel.php
@@ -222,6 +222,14 @@ class ProcessModel extends WlModelAbstract
    */
   public $is_wait;
 
+  /**
+   * If `true`, the user can be placed on a wait list without payment, `false` otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_wait_list_unpaid;
+
   /**
    * Key of session which is booked.
    *
diff --git a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
index 6f28e146..0df69691 100644
--- a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
+++ b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
@@ -6,6 +6,7 @@
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
  * Manages the booking wizard for the "Purchase Options" page.
@@ -20,6 +21,25 @@ class StoreModel extends WlModelAbstract
    */
   public $a_login_activity;
 
+  /**
+   * The selected purchase item.
+   *
+   * This new purchasable item should be checked to see if it can be applied to the current class or event before purchasing it.
+   *
+   * <dl>
+   *   <dt>int <var>i_session</var></dt>
+   *   <dd>The number of sessions that this item can cover.</dd>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The purchase item ID. Constant from {@link WlPurchaseItemSid}</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The purchase item key.</dd>
+   * </dl>
+   *
+   * @post post
+   * @var array
+   */
+  public $a_purchase_item_check = [];
+
   /**
    * Information about the recurring booking:
    * <dl>
diff --git a/WellnessLiving/Wl/Profile/Edit/EditModel.php b/WellnessLiving/Wl/Profile/Edit/EditModel.php
index 7a475fe3..6f62c3dd 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditModel.php
@@ -150,6 +150,7 @@ class EditModel extends WlModelAbstract
   public $id_register_source = null;
 
   /**
+   * Whether the address be inherited.
    * `true` if address inherit, otherwise `false`.
    *
    * @get result
@@ -283,6 +284,7 @@ class EditModel extends WlModelAbstract
   /**
    * UID of the user, whose address was inherited by the existing client we want to add.
    * Empty if non-existent user is being added or user to add is the one, whose address is inherited.
+   * `null` If the address is not inherited.
    *
    * @get result
    * @post get
diff --git a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
index e3622f95..989c9537 100644
--- a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
+++ b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
@@ -75,6 +75,13 @@ class ScheduleListModel extends WlModelAbstract
    *
    *   </dd>
    *   <dt>
+   *     string[] <var>a_resource_removed</var>
+   *   </dt>
+   *   <dd>
+   *     List of removed assets involved in the session.
+   *
+   *   </dd>
+   *   <dt>
    *     string[] <var>a_staff</var>
    *   </dt>
    *   <dd>
diff --git a/WellnessLiving/WlHeaderAuthorization.php b/WellnessLiving/WlHeaderAuthorization.php
index cc35d6ae..14dca260 100644
--- a/WellnessLiving/WlHeaderAuthorization.php
+++ b/WellnessLiving/WlHeaderAuthorization.php
@@ -24,24 +24,23 @@ class WlHeaderAuthorization
   const VERSION_20210304_CORS='20210304-cors';
 
   /**
-   * Debug information fields.
+   * Information about an authentication error, if found.
    *
-   * `null` if there is no debug information or the header is not
-   * in the correct format ({@link WlHeaderAuthorization::$is_valid}=`false`).
+   * This array is designed for logging purposes only.
    *
-   * The array key is field number. Field numbering starts from 2.
-   * The value is field value.
+   * Known elements:
+   * * `text_message` - text of the error message which may contain secret information which may not be presented
+   *   to the end users for security reasons.
+   * * Other elements - additional debugging information which is only designed for logging purposes,
+   *   may contain secret information, may not be presented to the end users, keys and values may change
+   *   without preliminary notice, and thus may not be used by your code.
    *
-   * @var string[]|null
-   */
-  public $a_debug = null;
-
-  /**
-   * List of found errors in header format.
+   * `null` if there are no authentication errors found.
    *
-   * @var string[]
+   * @var array|null
+   * @see WlHeaderAuthorization::$is_valid
    */
-  public $a_diagnostic = [];
+  public $a_diagnostic = null;
 
   /**
    * List of headers that were used in computing the signature.
@@ -56,6 +55,15 @@ class WlHeaderAuthorization
   /**
    * Whether the header is in the correct format.
    *
+   * `true` if authorization header has a valid format.
+   *
+   * `false` if there are errors encountered in the format of the authorization header.
+   * In this case {@link WlHeaderAuthorization::$a_diagnostic} will contain the diagnostic information
+   * about the found error.
+   *
+   * Also, `false` is set if authorization header was not parsed.
+   * It is parsed by {@link WlHeaderAuthorization::createParse()}.
+   *
    * @var bool
    */
   public $is_valid=false;
@@ -72,14 +80,40 @@ class WlHeaderAuthorization
   public $s_application_id = null;
 
   /**
-   * Debug information format version.
+   * The build number in whose code the signature was generated.
+   * For debug purposes only.
+   *
+   * The part of the source debug string in {@link WlHeaderAuthorization::$s_debug}.
+   *
+   * `null` if not specified or could not be parsed.
+   *
+   * @var string|null
+   */
+  public $s_build = null;
+
+  /**
+   * The signature debugging hash.
+   * For debug purposes only.
+   *
+   * The part of the source debug string in {@link WlHeaderAuthorization::$s_debug}.
+   *
+   * `null` if not specified or could not be parsed.
+   *
+   * @var string|null
+   */
+  public $s_check = null;
+
+  /**
+   * The source debug string, excluding the signature hash.
+   * For debug purposes only.
    *
-   * `null` if there is no debug information or the header is not
-   * in the correct format ({@link WlHeaderAuthorization::$is_valid}=`false`).
+   * `null` if not specified.
    *
    * @var string|null
+   * @see WlHeaderAuthorization::$s_build
+   * @see WlHeaderAuthorization::$s_check
    */
-  public $s_debug_version = null;
+  public $s_debug = null;
 
   /**
    * The signature hash.
@@ -117,7 +151,7 @@ public static function createFromRequest()
   {
     $a_header = WlTool::getAllHeaders();
     // When several HTTP headers arrive, on the PHP side they are combined into one, separated by comma+space.
-    $a_auth = explode(', ',isset($a_header['Authorization'])?$a_header['Authorization']:'');
+    $a_auth = isset($a_header['Authorization']) ? explode(', ',$a_header['Authorization']) : [];
 
     $a_result = [];
     foreach($a_auth as $s_auth)
@@ -139,77 +173,87 @@ public static function createParse($s_auth)
 
     $a_auth = explode(',',$s_auth,5);
     if(count($a_auth)!=4)
-      $o_result->a_diagnostic[] = 'The number of header elements is not as expected (4 expected, '.count($a_auth).' present.).';
+    {
+      $o_result->a_diagnostic = [
+        'a_auth' => $a_auth,
+        'i_count' => count($a_auth),
+        'text_message' => 'The number of header elements is not expected (4 expected).'
+      ];
 
-    if(!in_array($a_auth[0],[self::VERSION_20150518,self::VERSION_20210304_CORS]))
-      $o_result->a_diagnostic[] = 'Error in specifying header version: '.$a_auth[0];
+      return $o_result;
+    }
 
+    $a_version_valid = [self::VERSION_20150518,self::VERSION_20210304_CORS];
     $s_version = $a_auth[0];
-
-    if(!isset($a_auth[1]))
+    if(!in_array($s_version,$a_version_valid))
     {
-      $o_result->a_diagnostic[] = 'Application ID is missing.';
+      $o_result->a_diagnostic = [
+        'a_auth' => $a_auth,
+        'a_version_valid' => $a_version_valid,
+        's_version' => $s_version,
+        'text_message' => 'Unknown header version.'
+      ];
+
       return $o_result;
     }
 
     $s_application_id = $a_auth[1];
+    if(trim($s_application_id)==='')
+    {
+      $o_result->a_diagnostic = [
+        'a_auth' => $a_auth,
+        'text_message' => 'Application ID is empty.'
+      ];
+
+      return $o_result;
+    }
 
     $a_header_sign = [];
-    if(isset($a_auth[2]) && $a_auth[2]!=='')
+    if($a_auth[2]!=='')
       $a_header_sign = explode(';',$a_auth[2]);
 
-    if(!isset($a_auth[3]))
+    if(trim($a_auth[3])==='')
     {
-      $o_result->a_diagnostic[] = 'Signature is not specified.';
+      $o_result->a_diagnostic = [
+        'a_auth' => $a_auth,
+        'text_message' => 'Signature is not specified.'
+      ];
+
       return $o_result;
     }
 
     $a_signature = explode('.',$a_auth[3]);
-    if(strlen($a_signature[0])!=64)
-      $o_result->a_diagnostic[] = 'Signature SHA256 hash length is not 64 characters: '.$a_signature[0];
-
     $s_signature = $a_signature[0];
+    if(strlen($s_signature)!=64)
+    {
+      $o_result->a_diagnostic = [
+        'a_auth' => $a_auth,
+        'a_signature' => $a_signature,
+        's_signature' => $s_signature,
+        'text_message' => 'Signature SHA256 hash length is not 64 characters.'
+      ];
+
+      return $o_result;
+    }
 
-    // A signature can consist of several fields that are separated by a dot.
-    // The first field is always the SHA256 hash of the signature.
-    // Blocks of debugging information may be included in the signature.
-    // If debug information is present, then the second field is the format version of the debug information block,
-    // which can be from 1 to 3.
-    // Depending on the version of the debugging information block, the number of signature fields may vary.
     $i_sign_count = count($a_signature);
-    $s_debug_version = null;
-    $a_debug = null;
     if($i_sign_count>1)
     {
-      $a_debug_field_count = [
-        '1' => 5,
-        '2' => 8,
-        '3' => 4
-      ];
-      $s_debug_version = $a_signature[1];
-      if(!array_key_exists($s_debug_version,$a_debug_field_count))
-      {
-        $o_result->a_diagnostic[] = 'There was an error in specifying the version of the signature debugging information block.: '.$s_debug_version;
-        return $o_result;
-      }
-
-      if($i_sign_count!=$a_debug_field_count[$s_debug_version])
-      {
-        $o_result->a_diagnostic[] = 'The number of signature fields is out of range: '.$i_sign_count;
-        return $o_result;
-      }
-
-      $a_debug = array_slice($a_signature,2,null,true);
-    }
+      $a_signature_debug = array_slice($a_signature,1);
+      $o_result->s_debug = implode('.',$a_signature_debug);
 
-    if($o_result->a_diagnostic)
-      return $o_result;
+      $o_result->s_version = $a_signature[1];
+
+      if($i_sign_count>2)
+        $o_result->s_check = $a_signature[2];
+
+      if($i_sign_count>3 && $o_result->s_version==='3')
+        $o_result->s_build = $a_signature[3];
+    }
 
-    $o_result->a_debug = $a_debug;
     $o_result->a_header_sign = $a_header_sign;
     $o_result->is_valid = true;
     $o_result->s_application_id = $s_application_id;
-    $o_result->s_debug_version = $s_debug_version;
     $o_result->s_signature = $s_signature;
     $o_result->s_version = $s_version;
 
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 1fba3a51..858f478f 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240607.343602';
+  const VERSION='20240619.345342';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.
diff --git a/WellnessLiving/WlWebhook.php b/WellnessLiving/WlWebhook.php
index 6a5b45cf..39ba0d6c 100644
--- a/WellnessLiving/WlWebhook.php
+++ b/WellnessLiving/WlWebhook.php
@@ -10,11 +10,22 @@
 class WlWebhook
 {
   /**
-   * List of found authentication errors.
+   * Information about an authentication error, if found.
    *
-   * @var string[]
+   * This array is designed for logging purposes only.
+   *
+   * Known elements:
+   * * `text_message` - text of the error message which may contain secret information which may not be presented
+   *   to the end users for security reasons.
+   * * Other elements - additional debugging information which is only designed for logging purposes,
+   *   may contain secret information, may not be presented to the end users, keys and values may change
+   *   without preliminary notice, and thus may not be used by your code.
+   *
+   * `null` if there are no authentication errors found.
+   *
+   * @var array|null
    */
-  public $a_diagnostic = [];
+  public $a_diagnostic = null;
 
   /**
    * Request variable values.
@@ -25,7 +36,7 @@ class WlWebhook
    * `null` if the {@link WlWebhook::variable()} method was not called.
    * The empty array if no request variables were passed or a data format error.
    *
-   * @var array|null|false
+   * @var array|null
    */
   private $a_variable = null;
 
@@ -73,71 +84,98 @@ public function isAuthorize()
     $a_header = WlTool::getAllHeaders();
     if(!array_key_exists('Date',$a_header))
     {
-      $this->a_diagnostic[] = "There are no 'Date' header:\n".var_export($a_header,true);
+      $this->a_diagnostic = [
+        'a_header' => $a_header,
+        'text_message' => '`Date` header is missing.'
+      ];
+
       return false;
     }
 
     if(!array_key_exists('Content-Type',$a_header))
     {
-      $this->a_diagnostic[] = "There are no 'Content-Type' header:\n".var_export($a_header,true);
+      $this->a_diagnostic = [
+        'a_header' => $a_header,
+        'text_message' => '`Content-Type` header is missing.'
+      ];
+
       return false;
     }
 
     if($a_header['Content-Type']!=='application/json')
     {
-      $this->a_diagnostic[] = "The content type of POST request is not 'application/json':\n".
-        var_export($a_header,true)
-      ;
-      return false;
-    }
+      // In the code below we read the request body and parse it as json.
+      // Parsing in other formats is not implemented.
+      $this->a_diagnostic = [
+        'a_header' => $a_header,
+        'text_message' => "The content type of request is not 'application/json'."
+      ];
 
-    if(!array_key_exists('User-Agent',$a_header) || $a_header['User-Agent']!=='WellnessLiving/WebhookAgent')
-    {
-      $this->a_diagnostic[] = "The 'User-Agent' header is invalid:\n".
-        var_export($a_header,true)
-      ;
       return false;
     }
 
     $a_variable = $this->variable();
+    if($this->a_diagnostic)
+      return false;
+
     if(!$a_variable)
     {
-      $this->a_diagnostic[] = 'There are no request variables.';
+      $this->a_diagnostic = [
+        'a_header' => $a_header,
+        'text_message' => 'No variables arrived in the HTTP request body.'
+      ];
+
       return false;
     }
 
     /** @var WlConfigAbstract $s_config_class */
     $s_config_class = get_class($this->o_config);
-
     $a_auth = WlHeaderAuthorization::createFromRequest();
     if(!$a_auth)
     {
-      $this->a_diagnostic[] = "There are no 'Authorization' headers.";
+      $this->a_diagnostic = [
+        'a_header' => $a_header,
+        'text_message' => "There are no 'Authorization' headers."
+      ];
+
       return false;
     }
 
     $a_signature_hash_receive = [];
     $a_auth_valid = [];
+    $a_diagnostic_header = [];
     foreach($a_auth as $o_header_auth)
     {
       if(!$o_header_auth->is_valid)
       {
-        $this->a_diagnostic[] = "Invalid 'Authorization' header: ".$o_header_auth->s_source."=>\n".
-          var_export($o_header_auth->a_diagnostic,true)
-        ;
+        $a_diagnostic_header[] = [
+          'o_header_auth' => $o_header_auth,
+          'text_message' => "Invalid 'Authorization' header."
+        ];
 
         continue;
       }
 
       if($o_header_auth->s_version!==WlHeaderAuthorization::VERSION_20150518)
       {
-        $this->a_diagnostic[] = "The 'Authorization' header version error (expected '".WlHeaderAuthorization::VERSION_20150518."'): ".$o_header_auth->s_version;
+        $a_diagnostic_header[] = [
+          'o_header_auth' => $o_header_auth,
+          'o_header_auth::$s_version' => $o_header_auth->s_version,
+          'text_message' => "This version of `Authorization` header is not supported."
+        ];
+
         continue;
       }
 
       if($o_header_auth->s_application_id!==$s_config_class::AUTHORIZE_ID)
       {
-        $this->a_diagnostic[] = "The Application ID is incorrect (expected '".$s_config_class::AUTHORIZE_ID."'): ".$o_header_auth->s_application_id;
+        $a_diagnostic_header[] = [
+          'o_header_auth' => $o_header_auth,
+          'o_header_auth::$s_application_id' => $o_header_auth->s_application_id,
+          's_config_class::AUTHORIZE_ID' => $s_config_class::AUTHORIZE_ID,
+          'text_message' => "The Application ID is invalid."
+        ];
+
         continue;
       }
 
@@ -146,17 +184,26 @@ public function isAuthorize()
     }
 
     if(!$a_signature_hash_receive)
+    {
+      $this->a_diagnostic = [
+        'a_header' => $a_header,
+        'a_diagnostic_header' => $a_diagnostic_header,
+        'text_message' => 'There are no valid headers to verify the signature.'
+      ];
       return false;
+    }
 
     $a_signature_compute = $this->signatureCompute();
-    if(in_array($a_signature_compute['s_signature'],$a_signature_hash_receive))
+    if(in_array($a_signature_compute['s_signature'],$a_signature_hash_receive,true))
       $this->is_authorize = true;
     else
     {
-      $this->a_diagnostic[] = "Authorisation error: \n".var_export([
+      $this->a_diagnostic = [
+        'a_diagnostic_header' => $a_diagnostic_header,
+        'a_header_auth_valid' => $a_auth_valid,
         'a_signature_compute' => $a_signature_compute,
-        'a_header_auth_valid' => $a_auth_valid
-      ],true);
+        'text_message' => 'Invalid authorization hash.'
+      ];
     }
 
     return $this->is_authorize;
@@ -198,18 +245,20 @@ private function signatureCompute()
     $s_signature_compute = WlModelRequest::signatureCompute($a_signature);
     $a_signature_compute = explode('.',$s_signature_compute);
 
-    // We further assume that the signature version is fixed.
-    // If there is a different version, then it is necessary to reconsider the result returned by the method,
-    // as well as the use of this result.
-    WlAssertException::assertTrue(count($a_signature_compute)==5 && $a_signature_compute[1]==='1',[
-      'a_signature_compute' => $a_signature_compute,
-      'text_message' => 'Unexpected computed signature format.',
-    ]);
-
-    return [
-      's_signature' => $a_signature_compute[0],
-      's_signature_check' => $a_signature_compute[2]
+    $a_result = [
+      's_signature' => $a_signature_compute[0]
     ];
+
+    $i_signature_compute = count($a_signature_compute);
+    if($i_signature_compute>1)
+    {
+      if($a_signature_compute[1]==='1' && $i_signature_compute>2)
+        $a_result['s_signature_check'] = $a_signature_compute[2];
+      else
+        $a_result['s_signature_debug'] = implode('.',array_slice($a_signature_compute,1));
+    }
+
+    return $a_result;
   }
 
   /**
@@ -234,21 +283,26 @@ public function variable()
       trigger_error('Method WlWebhook::isAuthorize() must be called first.',E_USER_ERROR);
 
     // Variables come in the body of the POST request in the form of a json object.
-    /** @var string|WlConfigAbstract $s_config_class */
-    $s_config_class = get_class($this->o_config);
-    $s_data = $s_config_class::postRawData();
-    if(!$s_data)
+    $s_data_post = ($this->o_config)::postRawData();
+    if(!$s_data_post)
     {
-      $this->a_diagnostic[] = 'Request body us empty.';
+      $this->a_diagnostic = [
+        'text_message' => 'Request body us empty.'
+      ];
       $this->a_variable = [];
+
       return [];
     }
 
-    $a_variable = @json_decode($s_data,true);
+    $a_variable = @json_decode($s_data_post,true);
     if(!is_array($a_variable))
     {
-      $this->a_diagnostic[] = 'Error in request variable format: '.$s_data;
+      $this->a_diagnostic = [
+        's_data_post' => $s_data_post,
+        'text_message' => 'Error in request variable format.',
+      ];
       $this->a_variable = [];
+
       return [];
     }
 
diff --git a/WellnessLiving/WlWebhookOperationSid.php b/WellnessLiving/WlWebhookOperationSid.php
new file mode 100644
index 00000000..664bb543
--- /dev/null
+++ b/WellnessLiving/WlWebhookOperationSid.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace WellnessLiving;
+
+/**
+ * Types of webhook operations.
+ */
+class WlWebhookOperationSid
+{
+  /**
+   * Add row operation.
+   */
+  const CREATED = 1;
+
+  /**
+   * Delete row operation.
+   */
+  const DELETED = 3;
+
+  /**
+   * Modification row operation.
+   */
+  const MODIFIED = 2;
+}
+
+?>
\ No newline at end of file

From 1d1bbbcda14abad009c73b2da8186e968ed903f6 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 19 Jun 2024 18:02:50 +0000
Subject: [PATCH 14/71] Automatic upgrade of the SDK. Build #345368.

---
 WellnessLiving/Wl/Lead/LeadModel.php | 7 ++++---
 WellnessLiving/WlModelRequest.php    | 2 +-
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/WellnessLiving/Wl/Lead/LeadModel.php b/WellnessLiving/Wl/Lead/LeadModel.php
index d0728c2a..95b62440 100644
--- a/WellnessLiving/Wl/Lead/LeadModel.php
+++ b/WellnessLiving/Wl/Lead/LeadModel.php
@@ -115,13 +115,14 @@ class LeadModel extends WlModelAbstract
 
   /**
    * Whether it is possible to give free promotion when adding a user (only if free promotion is configured in the widget).
-   * `true` if it is possible, `false` if not.
+   * `true` or `null` if it is possible, `false` if not.
+   * `null` used for backward compatibility.
    *
    * @get result
    * @post get
-   * @var bool
+   * @var bool|null
    */
-  public $can_use_free_purchase = false;
+  public $can_use_free_purchase = null;
 
   /**
    * The key of business to which the new user must be captured.
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 858f478f..fdcfc1c1 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240619.345342';
+  const VERSION='20240619.345368';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 364e40e3b7d1577a87da5fc992d5885d78209168 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Fri, 28 Jun 2024 00:04:25 +0000
Subject: [PATCH 15/71] Automatic upgrade of the SDK. Build #347080.

---
 .../Appointment/Book/Payment/PaymentModel.php |  2 +-
 .../Book/Payment/PaymentMultipleModel.php     |  2 +-
 .../Book/Payment/PaymentPostModel.php         | 10 ++---
 .../Wl/Book/Process/Process54Model.php        |  8 ++++
 .../Wl/Book/Process/Process59Model.php        |  8 ++++
 .../Schedule/Frontend/LifetimeTotalsModel.php | 44 +++++++++++++++++++
 .../Wl/Profile/Edit/EditByTokenModel.php      |  2 +
 WellnessLiving/Wl/Tax/TaxListModel.php        |  8 ++++
 WellnessLiving/WlHeaderAuthorization.php      | 11 ++---
 WellnessLiving/WlModelRequest.php             |  2 +-
 WellnessLiving/WlWebhook.php                  | 16 ++++---
 11 files changed, 92 insertions(+), 21 deletions(-)
 create mode 100644 WellnessLiving/Wl/Profile/Attendance/Schedule/Frontend/LifetimeTotalsModel.php

diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
index 64a6faf4..9c25511c 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
@@ -357,7 +357,7 @@ class PaymentModel extends WlModelAbstract
   public $m_surcharge = '0.00';
 
   /**
-   * Surcharge amount calculated for money transfers from account: ACH, Direct Connect.
+   * Surcharge amount calculated for money transfers from account: ACH, Direct Entry.
    *
    * @get result
    * @var string
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
index 7055d67a..5574ca2d 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
@@ -483,7 +483,7 @@ class PaymentMultipleModel extends WlModelAbstract
   public $m_surcharge = '0.00';
 
   /**
-   * Surcharge amount calculated for money transfers from account: ACH, Direct Connect.
+   * Surcharge amount calculated for money transfers from account: ACH, Direct Entry.
    *
    * @get result
    * @var string
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
index fa0ea669..535e8689 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
@@ -346,20 +346,18 @@ class PaymentPostModel extends WlModelAbstract
   public $m_discount = '0.00';
 
   /**
-   * Surcharge amount calculated for credit cards.
-   * `null` when surcharge is not enabled or calculated.
+   * Surcharge amount calculated for credit cards (Virtual Terminal and Card Swiper).
    *
    * @get result
-   * @var string|null
+   * @var string
    */
   public $m_surcharge = '0.00';
 
   /**
-   * Surcharge amount calculated for ACH.
-   * `null` when surcharge is not enabled or calculated.
+   * Surcharge amount calculated for money transfers from account: ACH, Direct Entry.
    *
    * @get result
-   * @var string|null
+   * @var string
    */
   public $m_surcharge_ach = '0.00';
 
diff --git a/WellnessLiving/Wl/Book/Process/Process54Model.php b/WellnessLiving/Wl/Book/Process/Process54Model.php
index ff27f5b1..2b6c94af 100644
--- a/WellnessLiving/Wl/Book/Process/Process54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process54Model.php
@@ -224,6 +224,14 @@ class Process54Model extends WlModelAbstract
    */
   public $is_wait;
 
+  /**
+   * If `true`, the user can be placed on a wait list without payment, `false` otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_wait_list_unpaid;
+
   /**
    * Key of session which is booked.
    *
diff --git a/WellnessLiving/Wl/Book/Process/Process59Model.php b/WellnessLiving/Wl/Book/Process/Process59Model.php
index 0d4c8b80..7af00b0e 100644
--- a/WellnessLiving/Wl/Book/Process/Process59Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process59Model.php
@@ -223,6 +223,14 @@ class Process59Model extends WlModelAbstract
    */
   public $is_wait;
 
+  /**
+   * If `true`, the user can be placed on a wait list without payment, `false` otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_wait_list_unpaid;
+
   /**
    * Key of session which is booked.
    *
diff --git a/WellnessLiving/Wl/Profile/Attendance/Schedule/Frontend/LifetimeTotalsModel.php b/WellnessLiving/Wl/Profile/Attendance/Schedule/Frontend/LifetimeTotalsModel.php
new file mode 100644
index 00000000..ceba7a57
--- /dev/null
+++ b/WellnessLiving/Wl/Profile/Attendance/Schedule/Frontend/LifetimeTotalsModel.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace WellnessLiving\Wl\Profile\Attendance\Schedule\Frontend;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns a list with totals of lifetime visits.
+ */
+class LifetimeTotalsModel extends WlModelAbstract
+{
+  /**
+   * Report totals.
+   *
+   * A set of key-value pairs.
+   *
+   * @get result
+   * @var array[] Each element has followed structure: <dl>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>Total title.</dd>
+   *   <dt>int <var>s_value</var></dt>
+   *   <dd>Total value.</dd>
+   * </dl>
+   */
+  public $a_total = [];
+
+  /**
+   * The business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The user key.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
index 270f77b4..c42c15ed 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
@@ -123,6 +123,7 @@ class EditByTokenModel extends WlModelAbstract
   public $id_register_source = null;
 
   /**
+   * Whether the address be inherited.
    * `true` if address inherit, otherwise `false`.
    *
    * @get result
@@ -264,6 +265,7 @@ class EditByTokenModel extends WlModelAbstract
   /**
    * UID of the user, whose address was inherited by the existing client we want to add.
    * Empty if non-existent user is being added or user to add is the one, whose address is inherited.
+   * `null` If the address is not inherited.
    *
    * @get result
    * @post get
diff --git a/WellnessLiving/Wl/Tax/TaxListModel.php b/WellnessLiving/Wl/Tax/TaxListModel.php
index 9901b9bd..cbf56c2b 100644
--- a/WellnessLiving/Wl/Tax/TaxListModel.php
+++ b/WellnessLiving/Wl/Tax/TaxListModel.php
@@ -28,6 +28,14 @@ class TaxListModel extends WlModelAbstract
    */
   public $a_list;
 
+  /**
+   * Include a list of franchise taxes, `true` include, otherwise `false.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_include_franchisee = false;
+
   /**
    * The key of the business for which to get a list of taxes.
    *
diff --git a/WellnessLiving/WlHeaderAuthorization.php b/WellnessLiving/WlHeaderAuthorization.php
index 14dca260..1d7e907f 100644
--- a/WellnessLiving/WlHeaderAuthorization.php
+++ b/WellnessLiving/WlHeaderAuthorization.php
@@ -145,13 +145,13 @@ class WlHeaderAuthorization
    * Retrieves all 'Authorization' headers from the current request.
    *
    * @return WlHeaderAuthorization[] All 'Authorization' headers from the current request.
-   * If the array is empty, then there are no 'Authorization' headers in the request.
+   * An empty array if there are no `Authorization` headers arrived in this request.
    */
   public static function createFromRequest()
   {
     $a_header = WlTool::getAllHeaders();
     // When several HTTP headers arrive, on the PHP side they are combined into one, separated by comma+space.
-    $a_auth = isset($a_header['Authorization']) ? explode(', ',$a_header['Authorization']) : [];
+    $a_auth = !empty($a_header['Authorization']) ? explode(', ',$a_header['Authorization']) : [];
 
     $a_result = [];
     foreach($a_auth as $s_auth)
@@ -197,6 +197,8 @@ public static function createParse($s_auth)
       return $o_result;
     }
 
+    $o_result->s_version = $s_version;
+
     $s_application_id = $a_auth[1];
     if(trim($s_application_id)==='')
     {
@@ -242,12 +244,11 @@ public static function createParse($s_auth)
       $a_signature_debug = array_slice($a_signature,1);
       $o_result->s_debug = implode('.',$a_signature_debug);
 
-      $o_result->s_version = $a_signature[1];
-
       if($i_sign_count>2)
         $o_result->s_check = $a_signature[2];
 
-      if($i_sign_count>3 && $o_result->s_version==='3')
+      $s_version_debug = $a_signature[1];
+      if($i_sign_count>3 && $s_version_debug==='3')
         $o_result->s_build = $a_signature[3];
     }
 
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index fdcfc1c1..12327803 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240619.345368';
+  const VERSION='20240628.347080';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.
diff --git a/WellnessLiving/WlWebhook.php b/WellnessLiving/WlWebhook.php
index 39ba0d6c..39102979 100644
--- a/WellnessLiving/WlWebhook.php
+++ b/WellnessLiving/WlWebhook.php
@@ -115,15 +115,17 @@ public function isAuthorize()
     }
 
     $a_variable = $this->variable();
-    if($this->a_diagnostic)
-      return false;
-
     if(!$a_variable)
     {
-      $this->a_diagnostic = [
-        'a_header' => $a_header,
-        'text_message' => 'No variables arrived in the HTTP request body.'
-      ];
+      // If there is an error in obtaining variables in the {@link WlWebhook::variable()} method,
+      // then do not overwrite the error information.
+      if(!$this->a_diagnostic)
+      {
+        $this->a_diagnostic = [
+          'a_header' => $a_header,
+          'text_message' => 'No variables arrived in the HTTP request body.'
+        ];
+      }
 
       return false;
     }

From b1f14ef6d5aab8d54e2751c485972db05edbd26a Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 2 Jul 2024 12:35:08 +0000
Subject: [PATCH 16/71] Automatic upgrade of the SDK. Build #347600.

---
 WellnessLiving/Core/Passport/Login/InfoModel.php | 8 ++++++++
 WellnessLiving/WlModelRequest.php                | 2 +-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/WellnessLiving/Core/Passport/Login/InfoModel.php b/WellnessLiving/Core/Passport/Login/InfoModel.php
index 5627614a..3a8dd774 100644
--- a/WellnessLiving/Core/Passport/Login/InfoModel.php
+++ b/WellnessLiving/Core/Passport/Login/InfoModel.php
@@ -9,6 +9,14 @@
  */
 class InfoModel extends WlModelAbstract
 {
+  /**
+   * Business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
   /**
    * The current user key.
    *
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 12327803..2a33bcf7 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240628.347080';
+  const VERSION='20240702.347600';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 99f854e15e687c735e46745b1302c2a30f1d7ef0 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 2 Jul 2024 16:11:09 +0000
Subject: [PATCH 17/71] Automatic upgrade of the SDK. Build #347681.

---
 .../Core/Passport/Login/InfoModel.php         |  8 ----
 WellnessLiving/Wl/Location/ListModel.php      |  7 +++
 .../Wl/Passport/Login/InfoModel.php           | 47 +++++++++++++++++++
 WellnessLiving/Wl/Tax/TaxListModel.php        |  8 ----
 WellnessLiving/WlModelRequest.php             |  2 +-
 5 files changed, 55 insertions(+), 17 deletions(-)
 create mode 100644 WellnessLiving/Wl/Passport/Login/InfoModel.php

diff --git a/WellnessLiving/Core/Passport/Login/InfoModel.php b/WellnessLiving/Core/Passport/Login/InfoModel.php
index 3a8dd774..5627614a 100644
--- a/WellnessLiving/Core/Passport/Login/InfoModel.php
+++ b/WellnessLiving/Core/Passport/Login/InfoModel.php
@@ -9,14 +9,6 @@
  */
 class InfoModel extends WlModelAbstract
 {
-  /**
-   * Business key.
-   *
-   * @get get
-   * @var string
-   */
-  public $k_business = '';
-
   /**
    * The current user key.
    *
diff --git a/WellnessLiving/Wl/Location/ListModel.php b/WellnessLiving/Wl/Location/ListModel.php
index b8205a1c..66d657dd 100644
--- a/WellnessLiving/Wl/Location/ListModel.php
+++ b/WellnessLiving/Wl/Location/ListModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Location;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlProjectSid;
 
 /**
  * Returns information for all locations belonging to a business.
@@ -24,6 +25,12 @@ class ListModel extends WlModelAbstract
    * return location information for multiple businesses. Keys refer to location keys. Values refer to subarrays with the next keys:
    * <dl>
    *   <dt>
+   *     int <var>a_directories</var>
+   *   </dt>
+   *   <dd>
+   *     List of directories from {@link WlProjectSid}, where location is published.
+   *   </dd>
+   *   <dt>
    *     float <var>f_latitude</var>
    *   </dt>
    *   <dd>
diff --git a/WellnessLiving/Wl/Passport/Login/InfoModel.php b/WellnessLiving/Wl/Passport/Login/InfoModel.php
new file mode 100644
index 00000000..67a1d0b1
--- /dev/null
+++ b/WellnessLiving/Wl/Passport/Login/InfoModel.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace WellnessLiving\Wl\Passport\Login;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Gets the user ID for the current user and a password reset URL.
+ */
+class InfoModel extends WlModelAbstract
+{
+  /**
+   * Business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The current user key.
+   *
+   * This will be `null` if the user isn't signed in.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $uid;
+
+  /**
+   * A URL that a user can visit to reset their password.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_password_change;
+
+  /**
+   * The URL to the registration page.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_register;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Tax/TaxListModel.php b/WellnessLiving/Wl/Tax/TaxListModel.php
index cbf56c2b..9901b9bd 100644
--- a/WellnessLiving/Wl/Tax/TaxListModel.php
+++ b/WellnessLiving/Wl/Tax/TaxListModel.php
@@ -28,14 +28,6 @@ class TaxListModel extends WlModelAbstract
    */
   public $a_list;
 
-  /**
-   * Include a list of franchise taxes, `true` include, otherwise `false.
-   *
-   * @get get
-   * @var bool
-   */
-  public $is_include_franchisee = false;
-
   /**
    * The key of the business for which to get a list of taxes.
    *
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 2a33bcf7..4256e435 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240702.347600';
+  const VERSION='20240702.347681';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 228d32071d5209f1b45c1a13a5ca84470f3ba2ed Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Thu, 4 Jul 2024 16:01:07 +0000
Subject: [PATCH 18/71] Automatic upgrade of the SDK. Build #348210.

---
 .../Wl/Book/Process/Store/StoreModel.php           |  3 ++-
 .../Wl/Family/Relation/WlFamilyRelationSid.php     | 12 +++++++++++-
 WellnessLiving/WlModelRequest.php                  |  2 +-
 WellnessLiving/doc/problems.txt                    | 14 +++++++++++++-
 example-webhook.php                                |  3 +--
 5 files changed, 28 insertions(+), 6 deletions(-)

diff --git a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
index 0df69691..4ed607bc 100644
--- a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
+++ b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
@@ -24,7 +24,8 @@ class StoreModel extends WlModelAbstract
   /**
    * The selected purchase item.
    *
-   * This new purchasable item should be checked to see if it can be applied to the current class or event before purchasing it.
+   * This new purchasable item should be checked to see if it can be applied to the current class or event before
+   * purchasing it.
    *
    * <dl>
    *   <dt>int <var>i_session</var></dt>
diff --git a/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php b/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php
index 1a3a28b1..1bc1570a 100644
--- a/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php
+++ b/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php
@@ -5,10 +5,20 @@
 /**
  * Relation type between two relatives.
  *
- * Last used ID: 7.
+ * Last used ID: 9.
  */
 class WlFamilyRelationSid
 {
+  /**
+   * Care provider.
+   */
+  const CAREGIVER = 8;
+
+  /**
+   * Care recipient.
+   */
+  const CARE_RECEIVER = 9;
+
   /**
    * Child of the parent.
    */
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 4256e435..5163aab9 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240702.347681';
+  const VERSION='20240704.348210';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.
diff --git a/WellnessLiving/doc/problems.txt b/WellnessLiving/doc/problems.txt
index 4c59b793..6a3943c7 100644
--- a/WellnessLiving/doc/problems.txt
+++ b/WellnessLiving/doc/problems.txt
@@ -6,4 +6,16 @@ Problem: response error 'signature-mismatch'
 Reasons:
 - invalid application code/id in your config file
 - invalid server URL in your config file
-- invalid cookies names in your config file
\ No newline at end of file
+- invalid cookies names in your config file
+
+Problem:
+  you got error "Error executing request to WellnessLiving API (error is reported by network)."
+Solution:
+- exception that was thrown contains debug information;
+- you have to get this information in any way, for example:
+    catch(WlUserException $e)
+    {
+      echo $e."\n";
+    }
+  ;
+- then send this information to Wellnessliving Support.
\ No newline at end of file
diff --git a/example-webhook.php b/example-webhook.php
index d0ddbd90..1c0d3989 100644
--- a/example-webhook.php
+++ b/example-webhook.php
@@ -2,13 +2,12 @@
 
 namespace WlSdkExample;
 
-use WellnessLiving\WlRegionSid;
 use WellnessLiving\WlWebhook;
 
 require_once __DIR__.'/WellnessLiving/wl-autoloader.php';
 require_once __DIR__.'/example-config.php';
 
-$o_config=ExampleConfig::create(WlRegionSid::US_EAST_1);
+$o_config=ExampleConfig::create(\WellnessLiving\Wl\WlRegionSid::US_EAST_1);
 $o_webhook = new WlWebhook($o_config);
 
 // We check whether the webhook request is authorized or not.

From 701811277a2b391470c3849c3edfaef0e9e4bc59 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Thu, 4 Jul 2024 16:12:10 +0000
Subject: [PATCH 19/71] Automatic upgrade of the SDK. Build #348214.

---
 .../CatalogList/CatalogProductModel.php       | 113 +++++++++
 .../Wl/Pay/Account/Charge/ChargeModel.php     | 233 ++++++++++++++++++
 .../Inventory/Count/InventoryCountModel.php   |  98 ++++++++
 WellnessLiving/WlModelRequest.php             |   2 +-
 4 files changed, 445 insertions(+), 1 deletion(-)
 create mode 100644 WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
 create mode 100644 WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
 create mode 100644 WellnessLiving/Wl/Shop/Product/Option/Inventory/Count/InventoryCountModel.php

diff --git a/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php b/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
new file mode 100644
index 00000000..2d77e2c7
--- /dev/null
+++ b/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
@@ -0,0 +1,113 @@
+<?php
+
+namespace WellnessLiving\Wl\Catalog\CatalogList;
+
+use WellnessLiving\Core\Sid\SortOrderSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\WlSaleSid;
+
+/**
+ * Returns list of products.
+ */
+class CatalogProductModel extends WlModelAbstract
+{
+  /**
+   * Categories with sort settings. Keys are shop category keys, values - sort settings. Has next structure:<dl>
+   *   <dt>array <var>a_order</var></dt>
+   *   <dt>int <var>id_order</var></dt><dd>Sort order. One of {@link SortOrderSid} constants.</dd>
+   *   <dt>int <var>id_sort</var></dt><dd>Sort order ID, one of {@link SortOrderSid} constants.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_category_sort;
+
+  /**
+   * Additional data to filter products.<dl>
+   *   <dt>array [<var>a_quick_config</var>]</dt>
+   *   <dd>Additional data in a case when catalog list is in Quick Buy mode.</dd>
+   *
+   *   <dt>array [<var>a_sale_id</var>]</dt>
+   *   <dd>List of special categories for catalogue, each value is one of {@link WlSaleSid} constants.</dd>
+   *
+   *   <dt>array [<var>a_shop_category</var>]</dt>
+   *   <dd>Shop categories to filter by.</dd>
+   *
+   *   <dt>int <var>i_last</var></dt>
+   *   <dd>Last shown product.</dd>
+   *
+   *   <dt>int <var>id_order</var></dt><dd>Sort order ID, one of {@link SortOrderSid}.</dd>
+   *
+   *   <dt>int <var>id_sort</var></dt>
+   *
+   *   <dt>string <var>k_business</var></dt>
+   *   <dd>Business key.</dd>
+   *
+   *   <dt>string [<var>k_location</var>]</dt>
+   *   <dd>Location key.</dd>
+   *
+   *   <dt>string [<var>s_title</var>]</dt>
+   *   <dd>A title of a product to filter.</dd>
+   *
+   *   <dt>string [<var>uid</var>]</dt>
+   *   <dd>UID of a user.</dd>
+   * </dl>
+   *
+   * @get get
+   * @var array
+   */
+  public $a_filter;
+
+  /**
+   * List of elements.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_product;
+
+  /**
+   * Last currently shown element.
+   *
+   * @get get,result
+   * @var int
+   */
+  public $i_last;
+
+  /**
+   * Whether more products can be loaded.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_load_more;
+
+  /**
+   * Business key to get products for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * Selected shop category.
+   *
+   * <tt>null</tt> if not set yet.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_shop_category = null;
+
+  /**
+   * Cache key to get products.
+   *
+   * @get get,result
+   * @var string
+   */
+  public $s_cache_key;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php b/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
new file mode 100644
index 00000000..584f1861
--- /dev/null
+++ b/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
@@ -0,0 +1,233 @@
+<?php
+
+namespace WellnessLiving\Wl\Pay\Account\Charge;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
+use WellnessLiving\Wl\Mode\ModeSid;
+
+/**
+ * Allows to fill user account with a specified payment, or to change reset manually.
+ *
+ * This endpoint using captcha check.
+ * To pass captcha need study the documentation by captcha API, there you will find that you need to send a captcha for a specific action.
+ * For this API an action is {@link BusinessPaymentCaptcha::CID}.
+ */
+class ChargeModel extends WlModelAbstract
+{
+  /**
+   * A list of payment sources to pay with.
+   *
+   * Each element has next keys:
+   * <dl>
+   *   <dt>
+   *     array [<var>a_pay_card</var>]
+   *   </dt>
+   *   <dd>
+   *     The payment card information:
+   *     <dl>
+   *       <dt>
+   *         array <var>a_pay_address</var>
+   *       </dt>
+   *       <dd>
+   *         The payment address:
+   *         <dl>
+   *           <dt>boolean <var>is_new</var></dt>
+   *           <dd>Set this value to <tt>1</tt> to add a new payment address or to <tt>0</tt> to use a saved payment address.</dd>
+   *           <dt>string [<var>k_geo_country</var>]</dt>
+   *           <dd>The key of the country used for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>k_geo_region</var>]</dt>
+   *           <dd>The key of the region for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>k_pay_address</var>]</dt>
+   *           <dd>The key of the saved payment address. Specify this to use a saved address.</dd>
+   *           <dt>string [<var>s_city</var>]</dt>
+   *           <dd>The city used for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_name</var>]</dt>
+   *           <dd>The card name. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_phone</var>]</dt>
+   *           <dd>The payment phone. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_postal</var>]</dt>
+   *           <dd>The postal code for the payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_street1</var>]</dt>
+   *           <dd>The payment address. Specify this to add a new address.</dd>
+   *           <dt>string [<var>s_street2</var>]</dt>
+   *           <dd>The optional payment address. Specify this to add a new address.</dd>
+   *         </dl>
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_csc</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card CSC. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_month</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card expiration month. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         int [<var>i_year</var>]
+   *       </dt>
+   *       <dd>
+   *         The credit card expiration year. Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         boolean <var>is_new</var>
+   *       </dt>
+   *       <dd>
+   *         Specify <tt>1</tt> to add a new card, or <tt>0</tt> to use a saved card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>k_pay_bank</var>]
+   *       </dt>
+   *       <dd>
+   *         The key of the credit card. Specify this to use saved card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_comment</var>]
+   *       </dt>
+   *       <dd>
+   *         Optional comment(s). Specify this to add a new card.
+   *       </dd>
+   *       <dt>
+   *         string [<var>s_number</var>]
+   *       </dt>
+   *       <dd>
+   *         The card number. Specify this to add a new card.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>f_amount</var>
+   *   </dt>
+   *   <dd>
+   *     The amount of money to withdraw with this payment source.
+   *   </dd>
+   *   <dt>
+   *     boolean [<var>is_hide</var>]
+   *   </dt>
+   *   <dd>
+   *     Determines whether this payment method is hidden.
+   *   </dd>
+   *   <dt>
+   *     boolean [<var>is_success</var>=<tt>false</tt>]
+   *   </dt>
+   *   <dd>
+   *     Identifies whether this source was successfully charged.
+   *   </dd>
+   *   <dt>
+   *     string [<var>m_surcharge</var>]
+   *   </dt>
+   *   <dd>
+   *     The client-side calculated surcharge.
+   *   </dd>
+   *   <dt>
+   *     string [<var>s_index</var>]
+   *   </dt>
+   *   <dd>
+   *     The index of this form (optional).
+   *   </dd>
+   *   <dt>
+   *     string <var>sid_pay_method</var>
+   *   </dt>
+   *   <dd>
+   *     The payment method ID.
+   *   </dd>
+   * </dl>
+   *
+   * @post post
+   * @var array[]
+   */
+  public $a_pay_form = [];
+
+  /**
+   * Key of source mode. One of {@link ModeSid} constants.
+   *
+   * @post post
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * Account charge mode.
+   *
+   * @post get
+   * @var int
+   */
+  public $id_pay_account_charge = 0;
+
+  /**
+   * Set if the operations are performed under the staff.
+   *
+   * @post get
+   * @var bool
+   */
+  public $is_staff = false;
+
+  /**
+   * ID of business within which changed user account exists.
+   *
+   * Should not be passed if user account is created already.
+   * In this case {@link ChargeModel::$k_pay_account} should be passed.
+   *
+   * If both business ID and account ID passed, system checks if given business is owner of specified account.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_business = 0;
+
+  /**
+   * ID of user account to refill.
+   *
+   * May be 0 if user account is not created yet.
+   * In this case {@link ChargeModel::$k_business} and {@link ChargeModel::$uid} should be passed.
+   *
+   * If not passed, currency of account equals default business currency.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_pay_account = 0;
+
+  /**
+   * ID of purchase that was created during payment. This value is only returned in a case a purchase was created.
+   * New purchase is created when {@link ChargeModel::$id_pay_account_charge} equals {@link \RsPayAccountChargeSid::AUTO}.
+   *
+   * @post result
+   * @var int []
+   */
+  public $k_purchase;
+
+  /**
+   * Amount of payment.
+   *
+   * @post post
+   * @var string
+   */
+  public $m_amount = '0.00';
+
+  /**
+   * Transaction comment.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_comment = '';
+
+  /**
+   * ID of user whose account to refill.
+   *
+   * Should not be passed if user account is created already.
+   * In this case {@link ChargeModel::$k_pay_account} should be passed.
+   *
+   * If both user ID and account ID passed, system checks if given user is owner of specified account.
+   *
+   * @post get
+   * @var string
+   */
+  public $uid = 0;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Shop/Product/Option/Inventory/Count/InventoryCountModel.php b/WellnessLiving/Wl/Shop/Product/Option/Inventory/Count/InventoryCountModel.php
new file mode 100644
index 00000000..3508f28e
--- /dev/null
+++ b/WellnessLiving/Wl/Shop/Product/Option/Inventory/Count/InventoryCountModel.php
@@ -0,0 +1,98 @@
+<?php
+
+namespace WellnessLiving\Wl\Shop\Product\Option\Inventory\Count;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Change inventory quantity and notes for the shop product options.
+ */
+class InventoryCountModel extends WlModelAbstract
+{
+  /**
+   * List of notes for the shop product options.
+   *
+   * @get get
+   * @post get
+   * @var array
+   */
+  public $a_note = [];
+
+  /**
+   * Information about product options for review or search.
+   * Each element contains:
+   * <dl>
+   *   <dt>array <var>a_image</var></dt>
+   *   <dd>Information about product image:
+   *     <dl>
+   *       <dt>int <var>i_height</var></dt>
+   *       <dd>Height of the image.</dd>
+   *       <dt>int <var>i_width</var></dt>
+   *       <dd>Width of the image.</dd>
+   *       <dt>string <var>url</var></dt>
+   *       <dd>URL of the image.</dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>string <var>dl_change</var></dt>
+   *   <dd>Date of the last change product inventory.</dd>
+   *   <dt>int <var>i_count</var></dt>
+   *   <dd>Product quantity.</dd>
+   *   <dt>string <var>k_location</var></dt>
+   *   <dd>Key of the location.</dd>
+   *   <dt>string <var>k_shop_product_option</var></dt>
+   *   <dd>Key of the shop product option.</dd>
+   *   <dt>string <var>k_shop_product_option_inventory</var></dt>
+   *   <dd>Key of the shop product option inventory.</dd>
+   *   <dt>string <var>text_category</var></dt>
+   *   <dd>Online Store categories title.</dd>
+   *   <dt>string <var>text_location</var></dt>
+   *   <dd>Location title.</dd>
+   *   <dt>string <var>text_note</var></dt>
+   *   <dd>Product option inventory note.</dd>
+   *   <dt>string <var>text_option</var></dt>
+   *   <dd>Product option title.</dd>
+   *   <dt>string <var>text_product</var></dt>
+   *   <dd>Product title.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_product_option = [];
+
+  /**
+   * List of quantities of the shop product options.
+   *
+   * @get get
+   * @post get
+   * @var array
+   */
+  public $a_quantity = [];
+
+  /**
+   * Current business.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business;
+
+  /**
+   * Product barcode for the search.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_barcode;
+
+  /**
+   * Current user name.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_user_name;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 5163aab9..f2f78739 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240704.348210';
+  const VERSION='20240704.348214';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 995c7460053e0d3c581c7ebd9d567704b61babe7 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 10 Jul 2024 18:16:09 +0000
Subject: [PATCH 20/71] Automatic upgrade of the SDK. Build #349213.

---
 WellnessLiving/Wl/Profile/Alert/AlertModel.php | 18 ++++++++++++++++++
 WellnessLiving/WlModelRequest.php              |  2 +-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/WellnessLiving/Wl/Profile/Alert/AlertModel.php b/WellnessLiving/Wl/Profile/Alert/AlertModel.php
index 9bb421a9..0854fb63 100644
--- a/WellnessLiving/Wl/Profile/Alert/AlertModel.php
+++ b/WellnessLiving/Wl/Profile/Alert/AlertModel.php
@@ -67,6 +67,12 @@ class AlertModel extends WlModelAbstract
    *
    *   </dd>
    *   <dt>
+   *     bool <var>dt_create</var>
+   *   </dt>
+   *   <dd>
+   *     The date and time in MySQL format in local time when the warning was created.
+   *   </dd>
+   *   <dt>
    *     bool <var>dt_date</var>
    *   </dt>
    *   <dd>
@@ -90,6 +96,18 @@ class AlertModel extends WlModelAbstract
    *   <dd>
    *     The text of the warning.
    *   </dd>
+   *   <dt>
+   *     string <var>text_author</var>
+   *   </dt>
+   *   <dd>
+   *     Staff name, who created a note.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_editor</var>
+   *   </dt>
+   *   <dd>
+   *     Staff name, who edited a note last time.
+   *   </dd>
    * </dl>
    *
    * @get result
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index f2f78739..751d6361 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240704.348214';
+  const VERSION='20240710.349213';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 24e16a6d5128bedb86f056ac336ea28d1fc2e804 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 10 Jul 2024 18:18:45 +0000
Subject: [PATCH 21/71] Automatic upgrade of the SDK. Build #349218.

---
 .../CatalogList/CatalogProductModel.php       | 39 ++++++++--------
 .../Wl/Pay/Account/Charge/ChargeModel.php     | 46 +++++++++----------
 .../Inventory/Count/InventoryCountModel.php   | 42 +++++++++--------
 WellnessLiving/WlModelRequest.php             |  2 +-
 4 files changed, 66 insertions(+), 63 deletions(-)

diff --git a/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php b/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
index 2d77e2c7..d6d2d43c 100644
--- a/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
+++ b/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
@@ -7,15 +7,15 @@
 use WellnessLiving\Wl\WlSaleSid;
 
 /**
- * Returns list of products.
+ * Returns a list of products.
  */
 class CatalogProductModel extends WlModelAbstract
 {
   /**
-   * Categories with sort settings. Keys are shop category keys, values - sort settings. Has next structure:<dl>
+   * Categories with sort settings. Keys refer to shop category keys. Values refer to sort settings. Contains the following structure:<dl>
    *   <dt>array <var>a_order</var></dt>
-   *   <dt>int <var>id_order</var></dt><dd>Sort order. One of {@link SortOrderSid} constants.</dd>
-   *   <dt>int <var>id_sort</var></dt><dd>Sort order ID, one of {@link SortOrderSid} constants.</dd>
+   *   <dt>int <var>id_order</var></dt><dd>The sort order. One of the {@link SortOrderSid} constants.</dd>
+   *   <dt>int <var>id_sort</var></dt><dd>The sort order ID. One of the {@link SortOrderSid} constants.</dd>
    * </dl>
    *
    * @get result
@@ -26,32 +26,33 @@ class CatalogProductModel extends WlModelAbstract
   /**
    * Additional data to filter products.<dl>
    *   <dt>array [<var>a_quick_config</var>]</dt>
-   *   <dd>Additional data in a case when catalog list is in Quick Buy mode.</dd>
+   *   <dd>Additional data for cases where the catalog list is in Quick Buy mode.</dd>
    *
    *   <dt>array [<var>a_sale_id</var>]</dt>
-   *   <dd>List of special categories for catalogue, each value is one of {@link WlSaleSid} constants.</dd>
+   *   <dd>The list of special categories for the catalogue. Each value is a constant of {@link WlSaleSid}.</dd>
    *
    *   <dt>array [<var>a_shop_category</var>]</dt>
    *   <dd>Shop categories to filter by.</dd>
    *
    *   <dt>int <var>i_last</var></dt>
-   *   <dd>Last shown product.</dd>
+   *   <dd>The last shown product.</dd>
    *
-   *   <dt>int <var>id_order</var></dt><dd>Sort order ID, one of {@link SortOrderSid}.</dd>
+   *   <dt>int <var>id_order</var></dt><dd>The sort order ID. One of the {@link SortOrderSid} constants.</dd>
    *
    *   <dt>int <var>id_sort</var></dt>
+   *   <dd>The sort options ID.</dd>
    *
    *   <dt>string <var>k_business</var></dt>
-   *   <dd>Business key.</dd>
+   *   <dd>The business key.</dd>
    *
    *   <dt>string [<var>k_location</var>]</dt>
-   *   <dd>Location key.</dd>
+   *   <dd>The location key.</dd>
    *
    *   <dt>string [<var>s_title</var>]</dt>
-   *   <dd>A title of a product to filter.</dd>
+   *   <dd>A title of a product to filter by.</dd>
    *
    *   <dt>string [<var>uid</var>]</dt>
-   *   <dd>UID of a user.</dd>
+   *   <dd>The UID of a user.</dd>
    * </dl>
    *
    * @get get
@@ -60,7 +61,7 @@ class CatalogProductModel extends WlModelAbstract
   public $a_filter;
 
   /**
-   * List of elements.
+   * The list of elements.
    *
    * @get result
    * @var array
@@ -68,7 +69,7 @@ class CatalogProductModel extends WlModelAbstract
   public $a_product;
 
   /**
-   * Last currently shown element.
+   * The currently shown element.
    *
    * @get get,result
    * @var int
@@ -76,7 +77,7 @@ class CatalogProductModel extends WlModelAbstract
   public $i_last;
 
   /**
-   * Whether more products can be loaded.
+   * Determines whether more products can be loaded.
    *
    * @get result
    * @var bool
@@ -84,7 +85,7 @@ class CatalogProductModel extends WlModelAbstract
   public $is_load_more;
 
   /**
-   * Business key to get products for.
+   * The business key to get products for.
    *
    * @get get
    * @var string
@@ -92,9 +93,9 @@ class CatalogProductModel extends WlModelAbstract
   public $k_business;
 
   /**
-   * Selected shop category.
+   * The selected shop category.
    *
-   * <tt>null</tt> if not set yet.
+   * This will be `0` for the system's Unassigned category or `null` if not set yet.
    *
    * @get get
    * @var string
@@ -102,7 +103,7 @@ class CatalogProductModel extends WlModelAbstract
   public $k_shop_category = null;
 
   /**
-   * Cache key to get products.
+   * The cache key used to get products.
    *
    * @get get,result
    * @var string
diff --git a/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php b/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
index 584f1861..68eaed1a 100644
--- a/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
+++ b/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
@@ -7,11 +7,11 @@
 use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
- * Allows to fill user account with a specified payment, or to change reset manually.
+ * Fills a user account with a specified payment.
  *
- * This endpoint using captcha check.
- * To pass captcha need study the documentation by captcha API, there you will find that you need to send a captcha for a specific action.
- * For this API an action is {@link BusinessPaymentCaptcha::CID}.
+ * This endpoint uses a CAPTCHA check.
+ * To pass the CAPTCHA, review the CAPTCHA API doumentation. where you'll find that you must send a CAPTCHA for a specific action.
+ * For this endpoint, the action is {@link BusinessPaymentCaptcha::CID}.
  */
 class ChargeModel extends WlModelAbstract
 {
@@ -142,7 +142,7 @@ class ChargeModel extends WlModelAbstract
   public $a_pay_form = [];
 
   /**
-   * Key of source mode. One of {@link ModeSid} constants.
+   * The source mode key. One of the {@link ModeSid} constants.
    *
    * @post post
    * @var int
@@ -150,7 +150,7 @@ class ChargeModel extends WlModelAbstract
   public $id_mode = 0;
 
   /**
-   * Account charge mode.
+   * The account charge mode.
    *
    * @post get
    * @var int
@@ -158,7 +158,7 @@ class ChargeModel extends WlModelAbstract
   public $id_pay_account_charge = 0;
 
   /**
-   * Set if the operations are performed under the staff.
+   * If `true`, the account is filled by a staff member in the backend. Otherwise, this will be `false`.
    *
    * @post get
    * @var bool
@@ -166,12 +166,12 @@ class ChargeModel extends WlModelAbstract
   public $is_staff = false;
 
   /**
-   * ID of business within which changed user account exists.
+   * The ID of the business the user account belongs to.
    *
-   * Should not be passed if user account is created already.
-   * In this case {@link ChargeModel::$k_pay_account} should be passed.
+   * This shouldn't be passed if a user account has already been created.
+   * In such cases, {@link ChargeModel::$k_pay_account} should be passed instead.
    *
-   * If both business ID and account ID passed, system checks if given business is owner of specified account.
+   * If both the business ID and account ID passed, the system checks if the given business is the owner of the specified account.
    *
    * @post get
    * @var string
@@ -179,12 +179,12 @@ class ChargeModel extends WlModelAbstract
   public $k_business = 0;
 
   /**
-   * ID of user account to refill.
+   * The ID of the user account to refill.
    *
-   * May be 0 if user account is not created yet.
-   * In this case {@link ChargeModel::$k_business} and {@link ChargeModel::$uid} should be passed.
+   * This may be 0 if a user account hasn't been created yet.
+   * In such cases, {@link ChargeModel::$k_business} and {@link ChargeModel::$uid} should be passed instead.
    *
-   * If not passed, currency of account equals default business currency.
+   * If not passed, the currency of account equals the default business currency.
    *
    * @post get
    * @var string
@@ -192,8 +192,8 @@ class ChargeModel extends WlModelAbstract
   public $k_pay_account = 0;
 
   /**
-   * ID of purchase that was created during payment. This value is only returned in a case a purchase was created.
-   * New purchase is created when {@link ChargeModel::$id_pay_account_charge} equals {@link \RsPayAccountChargeSid::AUTO}.
+   * The ID of the purchase that was created during payment. This value is only returned in cases where a purchase was created.
+   * A new purchase is created when {@link ChargeModel::$id_pay_account_charge} equals {@link \RsPayAccountChargeSid::AUTO}.
    *
    * @post result
    * @var int []
@@ -201,7 +201,7 @@ class ChargeModel extends WlModelAbstract
   public $k_purchase;
 
   /**
-   * Amount of payment.
+   * The payment amount.
    *
    * @post post
    * @var string
@@ -209,7 +209,7 @@ class ChargeModel extends WlModelAbstract
   public $m_amount = '0.00';
 
   /**
-   * Transaction comment.
+   * The transaction comment.
    *
    * @post post
    * @var string
@@ -217,12 +217,12 @@ class ChargeModel extends WlModelAbstract
   public $s_comment = '';
 
   /**
-   * ID of user whose account to refill.
+   * The ID of the user whose account is being refilled.
    *
-   * Should not be passed if user account is created already.
-   * In this case {@link ChargeModel::$k_pay_account} should be passed.
+   * This shouldn't be passed if a user account has already been created.
+   * In such cases, {@link ChargeModel::$k_pay_account} should be passed instead.
    *
-   * If both user ID and account ID passed, system checks if given user is owner of specified account.
+   * If both the user ID and account ID passed, the system checks if the given user is the owner of the specified account.
    *
    * @post get
    * @var string
diff --git a/WellnessLiving/Wl/Shop/Product/Option/Inventory/Count/InventoryCountModel.php b/WellnessLiving/Wl/Shop/Product/Option/Inventory/Count/InventoryCountModel.php
index 3508f28e..d6268400 100644
--- a/WellnessLiving/Wl/Shop/Product/Option/Inventory/Count/InventoryCountModel.php
+++ b/WellnessLiving/Wl/Shop/Product/Option/Inventory/Count/InventoryCountModel.php
@@ -5,12 +5,13 @@
 use WellnessLiving\WlModelAbstract;
 
 /**
- * Change inventory quantity and notes for the shop product options.
+ * Used to retrieve and change inventory quantities and notes for product options in the store.
  */
 class InventoryCountModel extends WlModelAbstract
 {
   /**
-   * List of notes for the shop product options.
+   * The list of notes for product options in the store.
+   * Keys refer to product options in the store. Values refer to text notes.
    *
    * @get get
    * @post get
@@ -23,36 +24,36 @@ class InventoryCountModel extends WlModelAbstract
    * Each element contains:
    * <dl>
    *   <dt>array <var>a_image</var></dt>
-   *   <dd>Information about product image:
+   *   <dd>Information about the product option image:
    *     <dl>
    *       <dt>int <var>i_height</var></dt>
-   *       <dd>Height of the image.</dd>
+   *       <dd>The image height.</dd>
    *       <dt>int <var>i_width</var></dt>
-   *       <dd>Width of the image.</dd>
+   *       <dd>The image width.</dd>
    *       <dt>string <var>url</var></dt>
-   *       <dd>URL of the image.</dd>
+   *       <dd>The image URL.</dd>
    *     </dl>
    *   </dd>
    *   <dt>string <var>dl_change</var></dt>
-   *   <dd>Date of the last change product inventory.</dd>
+   *   <dd>The date of the last product inventory change.</dd>
    *   <dt>int <var>i_count</var></dt>
-   *   <dd>Product quantity.</dd>
+   *   <dd>The product option quantity.</dd>
    *   <dt>string <var>k_location</var></dt>
-   *   <dd>Key of the location.</dd>
+   *   <dd>The location key.</dd>
    *   <dt>string <var>k_shop_product_option</var></dt>
-   *   <dd>Key of the shop product option.</dd>
+   *   <dd>The key of the product option in the store.</dd>
    *   <dt>string <var>k_shop_product_option_inventory</var></dt>
-   *   <dd>Key of the shop product option inventory.</dd>
+   *   <dd>The key of the product option inventory in the store.</dd>
    *   <dt>string <var>text_category</var></dt>
-   *   <dd>Online Store categories title.</dd>
+   *   <dd>The title of the store category.</dd>
    *   <dt>string <var>text_location</var></dt>
-   *   <dd>Location title.</dd>
+   *   <dd>The location title.</dd>
    *   <dt>string <var>text_note</var></dt>
-   *   <dd>Product option inventory note.</dd>
+   *   <dd>The product option inventory note.</dd>
    *   <dt>string <var>text_option</var></dt>
-   *   <dd>Product option title.</dd>
+   *   <dd>The product option title.</dd>
    *   <dt>string <var>text_product</var></dt>
-   *   <dd>Product title.</dd>
+   *   <dd>The product option title.</dd>
    * </dl>
    *
    * @get result
@@ -61,7 +62,8 @@ class InventoryCountModel extends WlModelAbstract
   public $a_product_option = [];
 
   /**
-   * List of quantities of the shop product options.
+   * The list of product option quantities in the store.
+   * Keys refer to product options in the store. Values refer to product counts.
    *
    * @get get
    * @post get
@@ -70,7 +72,7 @@ class InventoryCountModel extends WlModelAbstract
   public $a_quantity = [];
 
   /**
-   * Current business.
+   * The current business.
    *
    * @get get
    * @post get
@@ -79,7 +81,7 @@ class InventoryCountModel extends WlModelAbstract
   public $k_business;
 
   /**
-   * Product barcode for the search.
+   * The product barcode, used for the search.
    *
    * @get get
    * @var string
@@ -87,7 +89,7 @@ class InventoryCountModel extends WlModelAbstract
   public $text_barcode;
 
   /**
-   * Current user name.
+   * The current username.
    *
    * @get result
    * @var string
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 751d6361..67bcd7ee 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240710.349213';
+  const VERSION='20240710.349218';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From fca54899e8922ef9700755f7ae1171249c0e194c Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Mon, 29 Jul 2024 15:05:10 +0000
Subject: [PATCH 22/71] Automatic upgrade of the SDK. Build #352320.

---
 .../Book/Product/Product62Model.php           | 43 ++++++++++++
 .../Appointment/Book/Product/ProductModel.php |  2 +
 .../Wl/Book/Process/ProcessModel.php          |  3 +-
 .../Book/Process/Purchase/Purchase56Model.php |  2 +
 .../Process/Purchase/PurchaseElementModel.php | 10 +++
 .../Book/Process/Purchase/PurchaseModel.php   |  2 +
 .../Family/Relation/WlFamilyRelationSid.php   |  9 ++-
 WellnessLiving/Wl/Location/ListModel.php      |  8 ++-
 .../Attendance/AttendanceInfoByTokenModel.php | 19 ++++++
 WellnessLiving/Wl/Rank/RankModel.php          | 51 +++++++++++++++
 WellnessLiving/Wl/Report/WlReportSid.php      | 65 +++++++------------
 .../StaffApp/ScheduleListByTokenModel.php     |  6 +-
 .../StaffApp/ScheduleListModel.php            |  4 +-
 WellnessLiving/Wl/Tag/TagListModel.php        |  8 +++
 WellnessLiving/Wl/Tax/TaxListModel.php        | 18 +++++
 WellnessLiving/WlModelRequest.php             |  2 +-
 16 files changed, 199 insertions(+), 53 deletions(-)
 create mode 100644 WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
 create mode 100644 WellnessLiving/Wl/Rank/RankModel.php

diff --git a/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php b/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
new file mode 100644
index 00000000..0b2c36a4
--- /dev/null
+++ b/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace WellnessLiving\Wl\Appointment\Book\Product;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns information about service add-ons.
+ */
+class Product62Model extends WlModelAbstract
+{
+  /**
+   * A list service add-ons.
+   *
+   * This will be `null` if not set yet.
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_product = null;
+
+  /**
+   * The key of a service to show information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_service = '0';
+
+  /**
+   * The key of a user to show information for.
+   *
+   * Only those products that match the client type or those that have no restrictions will be shown.
+   *
+   * `null` if the client is not logged in.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $uid = null;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Product/ProductModel.php b/WellnessLiving/Wl/Appointment/Book/Product/ProductModel.php
index 20d80d32..40353680 100644
--- a/WellnessLiving/Wl/Appointment/Book/Product/ProductModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Product/ProductModel.php
@@ -6,6 +6,8 @@
 
 /**
  * Returns information about service add-ons.
+ *
+ * @depreated Use {@link Product62Model} instead.
  */
 class ProductModel extends WlModelAbstract
 {
diff --git a/WellnessLiving/Wl/Book/Process/ProcessModel.php b/WellnessLiving/Wl/Book/Process/ProcessModel.php
index 754890eb..405f3f16 100644
--- a/WellnessLiving/Wl/Book/Process/ProcessModel.php
+++ b/WellnessLiving/Wl/Book/Process/ProcessModel.php
@@ -7,7 +7,6 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Classes\RequirePaySid;
 use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Performs the booking wizard steps.
@@ -122,7 +121,7 @@ class ProcessModel extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
index e540eb93..d5aebe17 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
@@ -175,6 +175,8 @@ class Purchase56Model extends WlModelAbstract
    *   <dd>The key of the user's prize that can be used instead a Purchase Option to book the session.</dd>
    *   <dt>string [<var>k_reward_prize</var>]</dt>
    *   <dd>The key of the reward prize that can be used instead a Purchase Option to book the session.</dd>
+   *   <dt>string [`m_prorate`]</dt>
+   *   <dd>Payment for membership prorate. Not empty only if prorate payment is required.</dd>
    *   <dt>string [<var>s_contract</var>]</dt>
    *   <dd>The contract of the Purchase Option. This is only set if <var>is_contract</var> is `true`.</dd>
    *   <dt>string [<var>s_payment_duration</var>]</dt>
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
index 855877ce..3dc2a9d6 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
@@ -121,6 +121,16 @@ class PurchaseElementModel extends WlModelAbstract
    */
   public $m_price;
 
+  /**
+   * Prorate amount.
+   *
+   * `null` if no prorate is required.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $m_prorate = null;
+
   /**
    * Amount of subtotal for 1 purchase item.
    *
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
index 306e881d..e871bfe4 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
@@ -178,6 +178,8 @@ class PurchaseModel extends WlModelAbstract
    *   <dd>The key of the user's prize that can be used instead a Purchase Option to book the session.</dd>
    *   <dt>string [<var>k_reward_prize</var>]</dt>
    *   <dd>The key of the reward prize that can be used instead a Purchase Option to book the session.</dd>
+   *   <dt>string [`m_prorate`]</dt>
+   *   <dd>Payment for membership prorate. Not empty only if prorate payment is required.</dd>
    *   <dt>string [<var>s_contract</var>]</dt>
    *   <dd>The contract of the Purchase Option. This is only set if <var>is_contract</var> is `true`.</dd>
    *   <dt>string [<var>s_payment_duration</var>]</dt>
diff --git a/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php b/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php
index 1bc1570a..64455b16 100644
--- a/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php
+++ b/WellnessLiving/Wl/Family/Relation/WlFamilyRelationSid.php
@@ -5,7 +5,7 @@
 /**
  * Relation type between two relatives.
  *
- * Last used ID: 9.
+ * Last used ID: 10.
  */
 class WlFamilyRelationSid
 {
@@ -24,6 +24,13 @@ class WlFamilyRelationSid
    */
   const CHILD = 5;
 
+  /**
+   * Dependent.
+   *
+   * @link https://wellnessliving.atlassian.net/browse/WL-82365
+   */
+  const DEPENDENT = 10;
+
   /**
    * Friend.
    */
diff --git a/WellnessLiving/Wl/Location/ListModel.php b/WellnessLiving/Wl/Location/ListModel.php
index 66d657dd..ed86ecd6 100644
--- a/WellnessLiving/Wl/Location/ListModel.php
+++ b/WellnessLiving/Wl/Location/ListModel.php
@@ -88,7 +88,13 @@ class ListModel extends WlModelAbstract
    *     string [<var>url_logo</var>]
    *   </dt>
    *   <dd>
-   *     The location logo's URL. This will only be set if the location has a logo.
+   *     The location logo's URL. This will only be set if the location has a logo and contains small thumbnail of the image.
+   *   </dd>
+   *   <dt>
+   *     string [<var>url_logo_source</var>]
+   *   </dt>
+   *   <dd>
+   *     The location logo's URL. This will only be set if the location has a logo and contains full uploaded image.
    *   </dd>
    * </dl>
    *
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
index 2e8ee902..7b5dbf44 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
@@ -4,6 +4,7 @@
 
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Schedule\Page\WlVisitNoteSid;
+use WellnessLiving\Wl\WlSaleSid;
 use WellnessLiving\Wl\WlServiceSid;
 
 /**
@@ -51,6 +52,24 @@ class AttendanceInfoByTokenModel extends WlModelAbstract
    */
   public $a_logo = null;
 
+  /**
+   * Default purchase option information.
+   * <dl>
+   *   <dt>string? <var>id_sale</var></dt>
+   *   <dd>The sale item type, one of the {@link WlSaleSid} constants.
+   *   This will be `null` if the class has no default Purchase Option, or it sets to "Drop-in rate".</dd>
+   *   <dt>string? <var>k_id</var></dt>
+   *   <dd>The default Purchase Option key.
+   *   This will be `null` if the class has no default Purchase Option, or it sets to "Drop-in rate".</dd>
+   *   <dt>bool <var>is_single_default</var></dt>
+   *   <dd>If the default Purchase Option is set to "Drop-in rate" then the value will be `true`, `false` otherwise.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_purchase_option_default = [];
+
   /**
    * Assets which are bound to this session.
    *
diff --git a/WellnessLiving/Wl/Rank/RankModel.php b/WellnessLiving/Wl/Rank/RankModel.php
new file mode 100644
index 00000000..3763ccf3
--- /dev/null
+++ b/WellnessLiving/Wl/Rank/RankModel.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace WellnessLiving\Wl\Rank;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Retrieves information about belts in a business.
+ *
+ * This information can be used to figure out totals in the Belts Report.
+ */
+class RankModel extends WlModelAbstract
+{
+  /**
+   * Rank category keys.
+   * Used to filter belts by belt categories.
+   *
+   * @get get
+   * @var array
+   */
+  public $a_rank_category = [];
+
+  /**
+   * A list of belts, keys, and information. Each element is an array with the following information:
+   *
+   * <dl>
+   *   <dt>string <var>k_rank</var></dt>
+   *   <dd>A belt key.</dd>
+   *   <dt>string <var>k_rank_category</var></dt>
+   *   <dd>A belt category key.</dd>
+   *   <dt>string <var>text_rank</var></dt>
+   *   <dd>Belt title.</dd>
+   *   <dt>string <var>text_rank_category</var></dt>
+   *   <dd>Belt category title.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_rank_list = [];
+
+  /**
+   * Business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Report/WlReportSid.php b/WellnessLiving/Wl/Report/WlReportSid.php
index aca403de..afad3c9a 100644
--- a/WellnessLiving/Wl/Report/WlReportSid.php
+++ b/WellnessLiving/Wl/Report/WlReportSid.php
@@ -210,6 +210,7 @@ abstract class WlReportSid
    * List of franchisee business hours.
    *
    * @title Franchise Business Hours
+   * @deprecated Report is refactored into new core.
    */
   const BUSINESS_FRANCHISE_HOURS = 247;
 
@@ -397,6 +398,7 @@ abstract class WlReportSid
    * Franchise leads from lead capture forms. Chart representation.
    *
    * @title Leads by Location
+   * @deprecated Report is refactored into new core.
    */
   const LEAD_FRANCHISE_REPORT_CHART = 173;
 
@@ -404,6 +406,7 @@ abstract class WlReportSid
    * Franchise leads from lead capture forms. Table representation.
    *
    * @title Leads by Location
+   * @deprecated Report is refactored into new core.
    */
   const LEAD_FRANCHISE_REPORT_LIST = 167;
 
@@ -472,6 +475,7 @@ abstract class WlReportSid
    * Detail franchise client report table.
    *
    * @title Corporate Client Details
+   * @deprecated Report is refactored into new core.
    */
   const LOGIN_FRANCHISE_DETAIL_LIST = 156;
 
@@ -479,6 +483,7 @@ abstract class WlReportSid
    * Franchise client status report table.
    *
    * @title Corporate Status Report
+   * @deprecated Report is refactored into new core.
    */
   const LOGIN_FRANCHISE_STATUS_LIST = 162;
 
@@ -796,31 +801,11 @@ abstract class WlReportSid
    */
   const PURCHASE_CLIENT_SUMMARY = 115;
 
-  /**
-   * Detail franchise sales report table.
-   *
-   * @title Sales Details by Location
-   */
-  const PURCHASE_FRANCHISE_LOCATION_DETAIL_LIST = 151;
-
-  /**
-   * Summary franchise sales report table.
-   *
-   * @title Sales Summary by Location
-   */
-  const PURCHASE_FRANCHISE_LOCATION_SUMMARY_CHART = 155;
-
-  /**
-   * Summary franchise sales report table.
-   *
-   * @title Sales Summary by Location
-   */
-  const PURCHASE_FRANCHISE_LOCATION_SUMMARY_LIST = 154;
-
   /**
    * Summary franchise memberships report (chart view).
    *
    * @title Memberships by Location
+   * @deprecated Report is refactored into new core.
    */
   const PURCHASE_FRANCHISE_MEMBERSHIP_CHART = 175;
 
@@ -828,6 +813,7 @@ abstract class WlReportSid
    * Summary franchise memberships report.
    *
    * @title Enterprise Memberships by Location Details
+   * @deprecated Report is refactored into new core.
    * @link https://wellnessliving.atlassian.net/browse/WL-46987
    */
   const PURCHASE_FRANCHISE_MEMBERSHIP_DETAIL = 257;
@@ -836,17 +822,10 @@ abstract class WlReportSid
    * Summary franchise memberships report.
    *
    * @title Memberships by Location
+   * @deprecated Report is refactored into new core.
    */
   const PURCHASE_FRANCHISE_MEMBERSHIP_LIST = 174;
 
-  /**
-   * YOY sales comparison report.
-   *
-   * @title YOY Sales Comparison
-   * @link https://wellnessliving.atlassian.net/browse/WL-7397
-   */
-  const PURCHASE_FRANCHISE_SALE_COMPARE_LIST = 161;
-
   /**
    * Purchases that have been bought divided by payment methods.
    *
@@ -883,6 +862,8 @@ abstract class WlReportSid
 
   /**
    * Purchase item count revenue.
+   *
+   * @deprecated Report is refactored into new core.
    */
   const PURCHASE_ITEM_COUNT_REVENUE = 51;
 
@@ -898,6 +879,8 @@ abstract class WlReportSid
 
   /**
    * Sales With Revenue Categories report.
+   *
+   * @deprecated Report is refactored into new core.
    */
   const PURCHASE_ITEM_LIST_REVENUE = 49;
 
@@ -906,20 +889,6 @@ abstract class WlReportSid
    */
   const PURCHASE_ITEM_LIST_USER = 118;
 
-  /**
-   * Purchase summary by location chart.
-   *
-   * @title Sales Summary by Location
-   */
-  const PURCHASE_LOCATION_SUMMARY_CHART = 172;
-
-  /**
-   * Summary franchise sales report table.
-   *
-   * @title Sales Summary by Location
-   */
-  const PURCHASE_LOCATION_SUMMARY_LIST = 153;
-
   /**
    * List of memberships in chart format.
    *
@@ -967,11 +936,15 @@ abstract class WlReportSid
 
   /**
    * Purchase tag count.
+   *
+   * @deprecated Report is refactored into new core.
    */
   const PURCHASE_TAG_COUNT = 30;
 
   /**
    * Purchase tag list.
+   *
+   * @deprecated Report is refactored into new core.
    */
   const PURCHASE_TAG_LIST = 31;
 
@@ -1306,6 +1279,7 @@ abstract class WlReportSid
    * Detail franchise cross-location visits table.
    *
    * @title Cross-Location Visits Details
+   * @deprecated Report is refactored into new core.
    */
   const VISIT_FRANCHISE_LOCATION_CROSS_DETAIL_LIST = 157;
 
@@ -1313,6 +1287,7 @@ abstract class WlReportSid
    * Summary franchise cross-location visits chart.
    *
    * @title Cross-Location Visits Summary
+   * @deprecated Report is refactored into new core.
    */
   const VISIT_FRANCHISE_LOCATION_CROSS_SUMMARY_CHART = 164;
 
@@ -1327,6 +1302,7 @@ abstract class WlReportSid
    * Summary franchise cross-location visits table.
    *
    * @title Cross-Location Visits Summary
+   * @deprecated Report is refactored into new core.
    */
   const VISIT_FRANCHISE_LOCATION_CROSS_SUMMARY_LIST = 158;
 
@@ -1344,6 +1320,7 @@ abstract class WlReportSid
    * Detail cross-location visits table. For regular businesses.
    *
    * @title Cross-Location Visits Details
+   * @deprecated Report is refactored into new core.
    */
   const VISIT_LOCATION_CROSS_DETAIL_LIST = 168;
 
@@ -1351,6 +1328,7 @@ abstract class WlReportSid
    * Summary cross-location visits chart. For regular businesses.
    *
    * @title Cross-Location Visits Summary
+   * @deprecated Report is refactored into new core.
    */
   const VISIT_LOCATION_CROSS_SUMMARY_CHART = 170;
 
@@ -1358,6 +1336,7 @@ abstract class WlReportSid
    * Summary cross-location visits table. For regular businesses.
    *
    * @title Cross-Location Visits Summary
+   * @deprecated Report is refactored into new core.
    */
   const VISIT_LOCATION_CROSS_SUMMARY_LIST = 169;
 
diff --git a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
index 463f06b2..0855e22a 100644
--- a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
+++ b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
@@ -312,7 +312,7 @@ class ScheduleListByTokenModel extends WlModelAbstract
    * @get get
    * @var string
    */
-  public $dl_end = null;
+  public $dl_end = '';
 
   /**
    * The start date of the range from which the list of scheduled sessions should be retrieved.
@@ -323,7 +323,7 @@ class ScheduleListByTokenModel extends WlModelAbstract
    * @get get
    * @var string
    */
-  public $dl_start = null;
+  public $dl_start = '';
 
   /**
    * The date of the sessions in Coordinated Universal Time (UTC) and MySQL format.
@@ -343,7 +343,7 @@ class ScheduleListByTokenModel extends WlModelAbstract
    * @get result
    * @var bool
    */
-  public $is_virtual_service = null;
+  public $is_virtual_service;
 
   /**
    * Business key.
diff --git a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
index 989c9537..7db7b8f5 100644
--- a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
+++ b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
@@ -318,7 +318,7 @@ class ScheduleListModel extends WlModelAbstract
    * @get get
    * @var string
    */
-  public $dl_end;
+  public $dl_end = '';
 
   /**
    * The start date of the range from which the list of scheduled sessions should be retrieved.
@@ -329,7 +329,7 @@ class ScheduleListModel extends WlModelAbstract
    * @get get
    * @var string
    */
-  public $dl_start;
+  public $dl_start = '';
 
   /**
    * The date of the sessions in Coordinated Universal Time (UTC) and MySQL format.
diff --git a/WellnessLiving/Wl/Tag/TagListModel.php b/WellnessLiving/Wl/Tag/TagListModel.php
index 3bd80169..76d2021c 100644
--- a/WellnessLiving/Wl/Tag/TagListModel.php
+++ b/WellnessLiving/Wl/Tag/TagListModel.php
@@ -24,6 +24,14 @@ class TagListModel extends WlModelAbstract
    */
   public $a_list;
 
+  /**
+   * Whether a business did set up a penalty fee for failed automatic payments.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_fee = false;
+
   /**
    * Whether a business did set up surcharges.
    *
diff --git a/WellnessLiving/Wl/Tax/TaxListModel.php b/WellnessLiving/Wl/Tax/TaxListModel.php
index 9901b9bd..0bce1a28 100644
--- a/WellnessLiving/Wl/Tax/TaxListModel.php
+++ b/WellnessLiving/Wl/Tax/TaxListModel.php
@@ -28,6 +28,24 @@ class TaxListModel extends WlModelAbstract
    */
   public $a_list;
 
+  /**
+   * Whether a business has hidden.
+   * `true` if business franchisor has franchisee with taxes.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_hidden_tax = false;
+
+  /**
+   * Whether a business has removed taxes.
+   * `true` if business has removed tax.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_removed_tax = false;
+
   /**
    * The key of the business for which to get a list of taxes.
    *
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 67bcd7ee..0d06c7b5 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240710.349218';
+  const VERSION='20240729.352320';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 06d89e53de48f007edb8161bf518cbb2e1f16f16 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Mon, 29 Jul 2024 22:22:41 +0000
Subject: [PATCH 23/71] Automatic upgrade of the SDK. Build #352378.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 0d06c7b5..ee1cad62 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240729.352320';
+  const VERSION='20240729.352378';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 8f8c85bad63dbcb2bbdf1c66c6feee8ad7f3645c Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 30 Jul 2024 13:15:13 +0000
Subject: [PATCH 24/71] Automatic upgrade of the SDK. Build #352481.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index ee1cad62..d9f063e9 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240729.352378';
+  const VERSION='20240730.352481';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 504568639459f27e93c6b55d719a00c61d6b0644 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 30 Jul 2024 13:43:08 +0000
Subject: [PATCH 25/71] Automatic upgrade of the SDK. Build #352483.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index d9f063e9..d3515021 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240730.352481';
+  const VERSION='20240730.352483';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 7652502eb0fc92ff290ec5f73d77b9170238fff1 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 30 Jul 2024 21:07:13 +0000
Subject: [PATCH 26/71] Automatic upgrade of the SDK. Build #352568.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index d3515021..ddc92145 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240730.352483';
+  const VERSION='20240730.352568';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 4fef662f99c9a585bbb8d407b7bd029cdb53ef33 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 30 Jul 2024 21:23:54 +0000
Subject: [PATCH 27/71] Automatic upgrade of the SDK. Build #352572.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index ddc92145..98585fd1 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240730.352568';
+  const VERSION='20240730.352572';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From e0dd2cde87ce2f2f7840b7c21f0cfa218b5751e4 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 30 Jul 2024 21:28:58 +0000
Subject: [PATCH 28/71] Automatic upgrade of the SDK. Build #352573.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 98585fd1..9ee2f058 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240730.352572';
+  const VERSION='20240730.352573';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 459127e1729fa80fbd75dcf84323565f94e3d851 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 30 Jul 2024 21:31:40 +0000
Subject: [PATCH 29/71] Automatic upgrade of the SDK. Build #352574.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 9ee2f058..afec422e 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240730.352573';
+  const VERSION='20240730.352574';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From f748b90bc9cf06703a578f5ebb5b46e3a0bf9931 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 30 Jul 2024 22:02:08 +0000
Subject: [PATCH 30/71] Automatic upgrade of the SDK. Build #352584.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index afec422e..7213a5ba 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240730.352574';
+  const VERSION='20240730.352584';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 765bcadce38a2ac71f342f68f7ac1ca332267284 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 30 Jul 2024 22:08:53 +0000
Subject: [PATCH 31/71] Automatic upgrade of the SDK. Build #352589.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 7213a5ba..7df1bf9a 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240730.352584';
+  const VERSION='20240730.352589';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 66444a891e4094e34c8e5f9f028ecedce3eabf31 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 30 Jul 2024 22:16:19 +0000
Subject: [PATCH 32/71] Automatic upgrade of the SDK. Build #352590.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 7df1bf9a..ed9fb87e 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240730.352589';
+  const VERSION='20240730.352590';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 806be8d7ec0366980a0dd02a0c9bb1c65ee84104 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 31 Jul 2024 13:16:02 +0000
Subject: [PATCH 33/71] Automatic upgrade of the SDK. Build #352697.

---
 WellnessLiving/Wl/Profile/Edit/EditModel.php  |  8 ++++
 WellnessLiving/Wl/User/Info/UserInfoModel.php | 40 +++++++++++++++++++
 WellnessLiving/WlModelRequest.php             |  2 +-
 3 files changed, 49 insertions(+), 1 deletion(-)

diff --git a/WellnessLiving/Wl/Profile/Edit/EditModel.php b/WellnessLiving/Wl/Profile/Edit/EditModel.php
index 6f62c3dd..5eed88d4 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditModel.php
@@ -160,6 +160,14 @@ class EditModel extends WlModelAbstract
    */
   public $is_address_inherit = false;
 
+  /**
+   * `true` to throw an exception in a case of validation error; `false` to not throw.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_exception_throw = false;
+
   /**
    * Indicates whether to display the full profile edit form or the short version.
    * This is assumed to be used only in user registration mode.
diff --git a/WellnessLiving/Wl/User/Info/UserInfoModel.php b/WellnessLiving/Wl/User/Info/UserInfoModel.php
index a4484bff..8a74fd74 100644
--- a/WellnessLiving/Wl/User/Info/UserInfoModel.php
+++ b/WellnessLiving/Wl/User/Info/UserInfoModel.php
@@ -170,6 +170,16 @@ class UserInfoModel extends WlModelAbstract
    */
   public $k_business = '0';
 
+  /**
+   * Primary key of a city.
+   *
+   * `null` is user has no address.
+   *
+   * @get result
+   * @var ?string
+   */
+  public $k_city;
+
   /**
    * The key of the login type. The login type describes the user's client type in this business.
    *
@@ -235,6 +245,26 @@ class UserInfoModel extends WlModelAbstract
    */
   public $s_phone_work = '';
 
+  /**
+   * Address inside a city.
+   *
+   * `null` is user has no address.
+   *
+   * @get result
+   * @var ?string
+   */
+  public $text_address;
+
+  /**
+   * City name.
+   *
+   * `null` is user has no address.
+   *
+   * @get result
+   * @var ?string
+   */
+  public $text_city;
+
   /**
    * Login type title.
    * Empty if a client has no client type assigned.
@@ -244,6 +274,16 @@ class UserInfoModel extends WlModelAbstract
    */
   public $text_login_type = '';
 
+  /**
+   * Postal code.
+   *
+   * `null` is user has no address.
+   *
+   * @get result
+   * @var ?string
+   */
+  public $text_postal;
+
   /**
    * The key of the user.
    *
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index ed9fb87e..b975af7e 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240730.352590';
+  const VERSION='20240731.352697';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 14242063d9ef7ed083c91c358c5ffcb627c30bfc Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 31 Jul 2024 13:26:49 +0000
Subject: [PATCH 34/71] Automatic upgrade of the SDK. Build #352705.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index b975af7e..89eb744a 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240731.352697';
+  const VERSION='20240731.352705';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From ee1ad8358f027913f238d91c309e60e6ac82c7a8 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 31 Jul 2024 14:03:27 +0000
Subject: [PATCH 35/71] Automatic upgrade of the SDK. Build #352714.

---
 WellnessLiving/WlModelRequest.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 89eb744a..ffd898ed 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240731.352705';
+  const VERSION='20240731.352714';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 521db4db09a5ed15e51707bcd5b227e8516d37f2 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Fri, 2 Aug 2024 09:27:24 +0000
Subject: [PATCH 36/71] Automatic upgrade of the SDK. Build #353077.

---
 WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php   | 2 +-
 WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php | 2 ++
 WellnessLiving/Wl/Appointment/Book/Product/ProductModel.php   | 2 +-
 WellnessLiving/WlModelRequest.php                             | 2 +-
 4 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
index 9c25511c..16d3c490 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
@@ -282,7 +282,7 @@ class PaymentModel extends WlModelAbstract
   public $is_walk_in = false;
 
   /**
-   * The item key. Depends of {@link PaymentModel::$id_purchase_item} property.
+   * The item key. Depends on {@link PaymentModel::$id_purchase_item} property.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php b/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
index 0b2c36a4..82c5956b 100644
--- a/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
@@ -34,6 +34,8 @@ class Product62Model extends WlModelAbstract
    *
    * `null` if the client is not logged in.
    *
+   * If you don't need to filter products by client type/group, use {@link ProductModel}.
+   *
    * @get get
    * @var string|null
    */
diff --git a/WellnessLiving/Wl/Appointment/Book/Product/ProductModel.php b/WellnessLiving/Wl/Appointment/Book/Product/ProductModel.php
index 40353680..6d7e2001 100644
--- a/WellnessLiving/Wl/Appointment/Book/Product/ProductModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Product/ProductModel.php
@@ -7,7 +7,7 @@
 /**
  * Returns information about service add-ons.
  *
- * @depreated Use {@link Product62Model} instead.
+ * If you need to filter products by client type/group, use {@link Product62Model}.
  */
 class ProductModel extends WlModelAbstract
 {
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index ffd898ed..eccc5884 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240731.352714';
+  const VERSION='20240802.353077';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 85cbb858c82a8ceb7a302ff1cf719517f05ed619 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Fri, 2 Aug 2024 14:58:28 +0000
Subject: [PATCH 37/71] Automatic upgrade of the SDK. Build #353121.

---
 WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php | 2 ++
 WellnessLiving/WlModelRequest.php                             | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php b/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
index 82c5956b..17edd34a 100644
--- a/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Appointment\Book\Product;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Shop\Product\PurchaseRestrictionSid;
 
 /**
  * Returns information about service add-ons.
@@ -30,6 +31,7 @@ class Product62Model extends WlModelAbstract
   /**
    * The key of a user to show information for.
    *
+   * Products with a {@link PurchaseRestrictionSid::TYPE} restriction will be filtered out.
    * Only those products that match the client type or those that have no restrictions will be shown.
    *
    * `null` if the client is not logged in.
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index eccc5884..4f6d4940 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240802.353077';
+  const VERSION='20240802.353121';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 1b4ae8f62f49aebc6343a6e61c9cb6f816aeb534 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 7 Aug 2024 14:19:55 +0000
Subject: [PATCH 38/71] Automatic upgrade of the SDK. Build #353768.

---
 .../Studio/Task/Branch/BranchListModel.php    | 36 +++++++++++++++++++
 .../Book/Purchase/PurchaseModel.php           |  4 ++-
 .../Book/Process/Purchase/PurchaseModel.php   |  2 ++
 WellnessLiving/Wl/Quiz/QuizElementModel.php   | 12 +++++++
 WellnessLiving/Wl/Quiz/Response/SourceSid.php |  5 +++
 WellnessLiving/WlModelRequest.php             |  2 +-
 6 files changed, 59 insertions(+), 2 deletions(-)
 create mode 100644 WellnessLiving/Studio/Task/Branch/BranchListModel.php

diff --git a/WellnessLiving/Studio/Task/Branch/BranchListModel.php b/WellnessLiving/Studio/Task/Branch/BranchListModel.php
new file mode 100644
index 00000000..6945bc6f
--- /dev/null
+++ b/WellnessLiving/Studio/Task/Branch/BranchListModel.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace WellnessLiving\Studio\Task\Branch;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Runs a build for creation a new branch or delete an existing branch for the specified task.
+ */
+class BranchListModel extends WlModelAbstract
+{
+  /**
+   * List of branch. One element contains: <dl>
+   *   <dt>string <var>dtu_create</var></dt>
+   *   <dd>Date when branch was created.</dd>
+   *   <dt>string <var>k_deploy_instance</var></dt>
+   *   <dd>Key of deployment instance.</dd>
+   *   <dt>string <var>k_task</var></dt>
+   *   <dd>Task key.</dd>
+   *   <dt>string <var>s_fio</var></dt>
+   *   <dd>Task author name.</dd>
+   *   <dt>string <var>s_title</var></dt>
+   *   <dd>Title of the task.</dd>
+   *   <dt>string <var>text_create</var></dt>
+   *   <dd>Formatted time interval when branch was created.</dd>
+   *   <dt>string <var>url_task</var></dt>
+   *   <dd>URL of the task.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var string[][]
+   */
+  public $a_data;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
index 8cef93cb..89227bf9 100644
--- a/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
@@ -72,7 +72,7 @@ class PurchaseModel extends WlModelAbstract
    *       <dt>int <var>i_visit_past</var></dt>
    *       <dd>
    *         The count of attended sessions before the last renewal.
-   *         This will be `0` if no sessions before the last renewal or if the Purchase Option doesn't auto-renew.
+   *         This will be '0' if no sessions before the last renewal or if the Purchase Option doesn't auto-renew.
    *       </dd>
    *       <dt>string <var>text_restriction</var></dt>
    *       <dd>The description of restriction period. For example, "this week" or "for a four-day period".</dd>
@@ -82,6 +82,8 @@ class PurchaseModel extends WlModelAbstract
    *   <dd>The count of visits that the Purchase Option allows the client to make.</dd>
    *   <dt>int|null <var>i_limit_duration</var></dt>
    *   <dd>The maximum number of minutes that current Purchase Option can be used for.</dd>
+   *   <dt>int <var>i_promotion_priority</var></dt>
+   *   <dd>Priority of this promotion.</dd>
    *   <dt>int <var>id_program</var></dt>
    *   <dd>The program ID for promotions. One of the {@link WlProgramSid} constants.</dd>
    *   <dt>string <var>k_login_promotion</var></dt>
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
index e871bfe4..b9e4227c 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
@@ -100,6 +100,8 @@ class PurchaseModel extends WlModelAbstract
    *   <dd>The number of visits the Purchase Option allows the client to make.</dd>
    *   <dt>int|null <var>i_limit_duration</var></dt>
    *   <dd>The maximum number of minutes the Purchase Option can be used for.</dd>
+   *   <dt>int <var>i_promotion_priority</var></dt>
+   *   <dd>Priority of this promotion.</dd>
    *   <dt>int <var>id_program</var></dt>
    *   <dd>The program ID for Purchase Options. One of the {@link WlProgramSid} constants.</dd>
    *   <dt>string <var>k_login_promotion</var></dt>
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index 55a60fb6..91acc1e5 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -79,6 +79,18 @@ class QuizElementModel extends WlModelAbstract
    */
   public $is_active = true;
 
+  /**
+   * Whether quiz response received by kiosk or direct mode link.
+   *
+   * `true` quiz response received by kiosk mode.
+   * `false` quiz response received by direct or direct mode)
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_simple = false;
+
   /**
    * List of quiz elements in json format.
    *
diff --git a/WellnessLiving/Wl/Quiz/Response/SourceSid.php b/WellnessLiving/Wl/Quiz/Response/SourceSid.php
index 78620d49..13122776 100644
--- a/WellnessLiving/Wl/Quiz/Response/SourceSid.php
+++ b/WellnessLiving/Wl/Quiz/Response/SourceSid.php
@@ -19,6 +19,11 @@ class SourceSid
    */
   const IMPORT = 6;
 
+  /**
+   * Quiz response received by kiosk mode link.
+   */
+  const KIOSK = 7;
+
   /**
    * Quiz response received by direct link.
    */
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 4f6d4940..8c32134d 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240802.353121';
+  const VERSION='20240807.353768';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From e68df26ce5118821ede4dae466b01bc103d5f2da Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Fri, 9 Aug 2024 19:03:05 +0000
Subject: [PATCH 39/71] Automatic upgrade of the SDK. Build #354274.

---
 .../Studio/Deploy/Instance/InstanceModel.php  | 19 +++++++++++++++++++
 .../Book/Payment/PaymentPostModel.php         |  2 +-
 .../Book/Service/ServiceList52Model.php       |  6 ++++++
 .../Book/Service/ServiceListModel.php         |  6 ++++++
 .../Book/Process/Purchase/Purchase56Model.php |  2 ++
 WellnessLiving/Wl/Location/ListModel.php      |  2 +-
 .../Wl/Profile/Edit/EditByTokenModel.php      | 16 +++++++++++++---
 WellnessLiving/Wl/Profile/Edit/EditModel.php  |  8 +++++---
 WellnessLiving/Wl/Tax/TaxListModel.php        | 18 ------------------
 WellnessLiving/Wl/User/Info/UserInfoModel.php | 10 +++++-----
 WellnessLiving/WlModelRequest.php             |  2 +-
 11 files changed, 59 insertions(+), 32 deletions(-)
 create mode 100644 WellnessLiving/Studio/Deploy/Instance/InstanceModel.php

diff --git a/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
new file mode 100644
index 00000000..fd07bdc1
--- /dev/null
+++ b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace WellnessLiving\Studio\Deploy\Instance;
+
+use WellnessLiving\WlModelAbstract;
+
+/**/
+class InstanceModel extends WlModelAbstract
+{
+  /**
+   * The key of `Studio Deploy Instance`.
+   *
+   * @post result
+   * @var string|null
+   */
+  public $k_deploy_instance = null;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
index 535e8689..f0fec16e 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
@@ -279,7 +279,7 @@ class PaymentPostModel extends WlModelAbstract
   public $is_walk_in = false;
 
   /**
-   * The item key. Depends of {@link PaymentModel::$id_purchase_item} property.
+   * The item key. Depends on {@link PaymentModel::$id_purchase_item} property.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php b/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
index 01f9c5d8..f146b339 100644
--- a/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
@@ -190,6 +190,12 @@ class ServiceList52Model extends WlModelAbstract
    *     `true` if clients can book classes and appointments on a recurring basis. Otherwise, this `false`.
    *   </dd>
    *   <dt>
+   *     bool <var>is_book_repeat_no_end_date_appointment</var>
+   *   </dt>
+   *   <dd>
+   *    `true` if appointment bookings default to weekly recurring with no end date, `false` otherwise.
+   *   </dd>
+   *   <dt>
    *     bool <var>is_deposit_percent</var>
    *   </dt>
    *   <dd>
diff --git a/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php b/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
index 77a32ee3..b220abd5 100644
--- a/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
@@ -189,6 +189,12 @@ class ServiceListModel extends WlModelAbstract
    *     `true` if clients can book classes and appointments on a recurring basis. Otherwise, this `false`.
    *   </dd>
    *   <dt>
+   *     bool <var>is_book_repeat_no_end_date_appointment</var>
+   *   </dt>
+   *   <dd>
+   *    `true` if appointment bookings default to weekly recurring with no end date, `false` otherwise.
+   *   </dd>
+   *   <dt>
    *     bool <var>is_deposit_percent</var>
    *   </dt>
    *   <dd>
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
index d5aebe17..aa3f96e9 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
@@ -97,6 +97,8 @@ class Purchase56Model extends WlModelAbstract
    *   <dd>The number of visits the Purchase Option allows the client to make.</dd>
    *   <dt>int|null <var>i_limit_duration</var></dt>
    *   <dd>The maximum number of minutes the Purchase Option can be used for.</dd>
+   *   <dt>int <var>i_promotion_priority</var></dt>
+   *   <dd>Priority of this promotion.</dd>
    *   <dt>int <var>id_program</var></dt>
    *   <dd>The program ID for Purchase Options. One of the {@link WlProgramSid} constants.</dd>
    *   <dt>string <var>k_login_promotion</var></dt>
diff --git a/WellnessLiving/Wl/Location/ListModel.php b/WellnessLiving/Wl/Location/ListModel.php
index ed86ecd6..bd1194b1 100644
--- a/WellnessLiving/Wl/Location/ListModel.php
+++ b/WellnessLiving/Wl/Location/ListModel.php
@@ -22,7 +22,7 @@ class ListModel extends WlModelAbstract
 
   /**
    * Information about the business's location(s). If you've specified multiple businesses for this endpoint, this will
-   * return location information for multiple businesses. Keys refer to location keys. Values refer to subarrays with the next keys:
+   * return location information for multiple businesses. Keys refer to location keys. Values refer to nested arrays with the next keys:
    * <dl>
    *   <dt>
    *     int <var>a_directories</var>
diff --git a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
index c42c15ed..bd26455a 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
@@ -68,16 +68,18 @@ class EditByTokenModel extends WlModelAbstract
    * An array contained with information about phone inheritance.
    * The array has the following structure:
    * <dl>
-   *   <dt>bool [<var>is_phone_inherit</var>]</dt>
+   *   <dt>bool [`is_phone_inherit`]</dt>
    *   <dd>Indicates weather to inherit phone numbers from relative or not. `1` if phone inheritance is needed, '0' otherwise.</dd>
-   *   <dt>string <var>uid_relative</var></dt>
+   *   <dt>string [`text_relative`]</dt>
+   *   <dd>Relative's name.</dd>
+   *   <dt>string `uid_relative`</dt>
    *   <dd>User key of relative.</dd>
    * </dl>
    *
    * @get result
    * @post post
    * @put post
-   * @var array[]
+   * @var array
    */
   public $a_phone_inherit = [];
 
@@ -133,6 +135,14 @@ class EditByTokenModel extends WlModelAbstract
    */
   public $is_address_inherit = false;
 
+  /**
+   * `true` to throw an exception in a case of validation error; `false` to not throw.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_exception_throw = false;
+
   /**
    * Indicates whether to display the full profile edit form or the short version.
    * This is assumed to be used only in user registration mode.
diff --git a/WellnessLiving/Wl/Profile/Edit/EditModel.php b/WellnessLiving/Wl/Profile/Edit/EditModel.php
index 5eed88d4..84519060 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditModel.php
@@ -95,16 +95,18 @@ class EditModel extends WlModelAbstract
    * An array contained with information about phone inheritance.
    * The array has the following structure:
    * <dl>
-   *   <dt>bool [<var>is_phone_inherit</var>]</dt>
+   *   <dt>bool [`is_phone_inherit`]</dt>
    *   <dd>Indicates weather to inherit phone numbers from relative or not. `1` if phone inheritance is needed, '0' otherwise.</dd>
-   *   <dt>string <var>uid_relative</var></dt>
+   *   <dt>string [`text_relative`]</dt>
+   *   <dd>Relative's name.</dd>
+   *   <dt>string `uid_relative`</dt>
    *   <dd>User key of relative.</dd>
    * </dl>
    *
    * @get result
    * @post post
    * @put post
-   * @var array[]
+   * @var array
    */
   public $a_phone_inherit = [];
 
diff --git a/WellnessLiving/Wl/Tax/TaxListModel.php b/WellnessLiving/Wl/Tax/TaxListModel.php
index 0bce1a28..9901b9bd 100644
--- a/WellnessLiving/Wl/Tax/TaxListModel.php
+++ b/WellnessLiving/Wl/Tax/TaxListModel.php
@@ -28,24 +28,6 @@ class TaxListModel extends WlModelAbstract
    */
   public $a_list;
 
-  /**
-   * Whether a business has hidden.
-   * `true` if business franchisor has franchisee with taxes.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_hidden_tax = false;
-
-  /**
-   * Whether a business has removed taxes.
-   * `true` if business has removed tax.
-   *
-   * @get result
-   * @var bool
-   */
-  public $is_removed_tax = false;
-
   /**
    * The key of the business for which to get a list of taxes.
    *
diff --git a/WellnessLiving/Wl/User/Info/UserInfoModel.php b/WellnessLiving/Wl/User/Info/UserInfoModel.php
index 8a74fd74..bece696c 100644
--- a/WellnessLiving/Wl/User/Info/UserInfoModel.php
+++ b/WellnessLiving/Wl/User/Info/UserInfoModel.php
@@ -171,9 +171,9 @@ class UserInfoModel extends WlModelAbstract
   public $k_business = '0';
 
   /**
-   * Primary key of a city.
+   * City.
    *
-   * `null` is user has no address.
+   * `null` if "address" field is disabled in the business.
    *
    * @get result
    * @var ?string
@@ -248,7 +248,7 @@ class UserInfoModel extends WlModelAbstract
   /**
    * Address inside a city.
    *
-   * `null` is user has no address.
+   * `null` if "address" field is disabled in the business.
    *
    * @get result
    * @var ?string
@@ -258,7 +258,7 @@ class UserInfoModel extends WlModelAbstract
   /**
    * City name.
    *
-   * `null` is user has no address.
+   * `null` if "address" field is disabled in the business.
    *
    * @get result
    * @var ?string
@@ -277,7 +277,7 @@ class UserInfoModel extends WlModelAbstract
   /**
    * Postal code.
    *
-   * `null` is user has no address.
+   * `null` if "address" field is disabled in the business.
    *
    * @get result
    * @var ?string
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 8c32134d..d83cf826 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240807.353768';
+  const VERSION='20240809.354274';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 32855483cff8e400adc3c7c6583b1938a24391b1 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Fri, 9 Aug 2024 19:23:36 +0000
Subject: [PATCH 40/71] Automatic upgrade of the SDK. Build #354277.

---
 .../Studio/Deploy/Instance/InstanceModel.php  | 90 +++++++++++++++++++
 WellnessLiving/WlModelRequest.php             |  2 +-
 2 files changed, 91 insertions(+), 1 deletion(-)

diff --git a/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
index fd07bdc1..6f954737 100644
--- a/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
+++ b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
@@ -7,13 +7,103 @@
 /**/
 class InstanceModel extends WlModelAbstract
 {
+  /**
+   * List of `Project Role`.
+   *
+   * @post post
+   * @var string[]|null
+   */
+  public $a_role = null;
+
+  /**
+   * List of tags.
+   *
+   * @post post
+   * @var string[]|null
+   */
+  public $a_tag = null;
+
+  /**
+   * Allow users to start builds manually by clicking a button.
+   *
+   * @post post
+   * @var bool|null
+   */
+  public $is_button = null;
+
+  /**
+   * Run build automatically upon commit.
+   *
+   * @post post
+   * @var bool|null
+   */
+  public $is_commit = null;
+
+  /**
+   * Allow multiple commits to wait in the build queue.
+   * If not allowed, then only a single (the last one) commit may wait in the queue.
+   *
+   * @post post
+   * @var bool|null
+   */
+  public $is_queue = null;
+
+  /**
+   * Indicates if instance set as removed.
+   *
+   * @post post
+   * @var bool|null
+   */
+  public $is_remove = null;
+
+  /**
+   * The key of `Studio Amazon Account`.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_amazon_account = null;
+
   /**
    * The key of `Studio Deploy Instance`.
    *
+   * @post post
    * @post result
    * @var string|null
    */
   public $k_deploy_instance = null;
+
+  /**
+   * The key of `Studio Project`
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_project = null;
+
+  /**
+   * The name of `Studio Deploy Instance`.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_deploy_instance = null;
+
+  /**
+   * The value contains a list of repository path.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_path = null;
+
+  /**
+   * The value contains a list of variables.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_variable = null;
 }
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index d83cf826..23bc5896 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240809.354274';
+  const VERSION='20240809.354277';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 20e4bf13e0ad11110a506bf6c1895afaf07123a9 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Fri, 9 Aug 2024 20:42:00 +0000
Subject: [PATCH 41/71] Automatic upgrade of the SDK. Build #354288.

---
 WellnessLiving/Studio/Deploy/Instance/InstanceModel.php | 7 ++++---
 WellnessLiving/WlModelRequest.php                       | 2 +-
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
index 6f954737..9043bda0 100644
--- a/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
+++ b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
@@ -4,7 +4,9 @@
 
 use WellnessLiving\WlModelAbstract;
 
-/**/
+/**
+ * Manage `Studio Deploy Instance`.
+ */
 class InstanceModel extends WlModelAbstract
 {
   /**
@@ -67,8 +69,7 @@ class InstanceModel extends WlModelAbstract
   /**
    * The key of `Studio Deploy Instance`.
    *
-   * @post post
-   * @post result
+   * @post post,result
    * @var string|null
    */
   public $k_deploy_instance = null;
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 23bc5896..7b5fe03a 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240809.354277';
+  const VERSION='20240809.354288';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From bc817005209d57c889e981efd6f4f8d4ae12352a Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 13 Aug 2024 09:48:31 +0000
Subject: [PATCH 42/71] Automatic upgrade of the SDK. Build #354678.

---
 .../Resource/ApplicationResourceModel.php         |  6 +++++-
 .../Wl/Book/Process/Purchase/PurchaseModel.php    |  2 ++
 .../Wl/Book/Process/Store/StoreModel.php          | 15 ++++++++++-----
 WellnessLiving/WlModelRequest.php                 |  2 +-
 4 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/WellnessLiving/Custom/Wl/Skin/Application/Resource/ApplicationResourceModel.php b/WellnessLiving/Custom/Wl/Skin/Application/Resource/ApplicationResourceModel.php
index 57b35f1b..b7fca4f8 100644
--- a/WellnessLiving/Custom/Wl/Skin/Application/Resource/ApplicationResourceModel.php
+++ b/WellnessLiving/Custom/Wl/Skin/Application/Resource/ApplicationResourceModel.php
@@ -16,7 +16,7 @@ class ApplicationResourceModel extends WlModelAbstract
   /**
    * The application ID placeholder.
    */
-  const ID = '[ID]';
+  public const ID = '[ID]';
 
   /**
    * Updates the `www/js/communication.js` file.
@@ -53,6 +53,10 @@ private function _config($k_business, $s_sources)
         's_key' => 's_google_reverse',
         's_placeholder' => '[GOOGLE_REVERSED_CLIENT_ID]'
       ],
+      [
+        's_key' => 's_splash_color_android',
+        's_placeholder' => '[SPLASH_COLOR_ANDROID]'
+      ],
       [
         's_key' => 'text_domain',
         's_placeholder' => static::ID
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
index b9e4227c..e33b7968 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
@@ -36,6 +36,8 @@ class PurchaseModel extends WlModelAbstract
    *   <dd>The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.</dd>
    *   <dt>string <var>k_login_prize</var></dt>
    *   <dd>Key of login prize.</dd>
+   *   <dt>string <var>s_value</var></dt>
+   *   <dd>The unique identifier.</dd>
    *   <dt>string <var>text_title</var></dt>
    *   <dd>User friendly login prize description.</dd>
    * </dl>
diff --git a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
index 4ed607bc..54dbbfa1 100644
--- a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
+++ b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
@@ -6,7 +6,6 @@
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
  * Manages the booking wizard for the "Purchase Options" page.
@@ -30,10 +29,16 @@ class StoreModel extends WlModelAbstract
    * <dl>
    *   <dt>int <var>i_session</var></dt>
    *   <dd>The number of sessions that this item can cover.</dd>
-   *   <dt>int <var>id_purchase_item</var></dt>
-   *   <dd>The purchase item ID. Constant from {@link WlPurchaseItemSid}</dd>
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>The purchase item key.</dd>
+   *   <dt>int <var>s_value</var></dt>
+   *   <dd>
+   *     Unique identifier of the element being checked.
+   *     Corresponds to the values:
+   *     <ul>
+   *       <li>{@link PurchaseApi::$a_purchase}`["s_value"]`</li>
+   *       <li>{@link PurchaseApi::$a_reward_prize}`["s_value"]`</li>
+   *       <li>{@link PurchaseApi::$a_login_prize}`["s_value"]`</li>
+   *     </ul>
+   *   </dd>
    * </dl>
    *
    * @post post
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 7b5fe03a..7bb5cbd7 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240809.354288';
+  const VERSION='20240813.354678';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From febb26577dc706b529cf3d73684044d3bf9ab4e0 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 14 Aug 2024 15:16:15 +0000
Subject: [PATCH 43/71] Automatic upgrade of the SDK. Build #355228.

---
 .../Studio/Microservice/Editor/ListModel.php  | 53 +++++++++++++++++++
 .../Studio/Task/Branch/BranchListModel.php    |  7 ++-
 .../Book/Process/Purchase/Purchase56Model.php |  2 +
 WellnessLiving/Wl/Quiz/QuizElementModel.php   |  2 +-
 WellnessLiving/WlModelRequest.php             |  2 +-
 5 files changed, 63 insertions(+), 3 deletions(-)
 create mode 100644 WellnessLiving/Studio/Microservice/Editor/ListModel.php

diff --git a/WellnessLiving/Studio/Microservice/Editor/ListModel.php b/WellnessLiving/Studio/Microservice/Editor/ListModel.php
new file mode 100644
index 00000000..69cbe473
--- /dev/null
+++ b/WellnessLiving/Studio/Microservice/Editor/ListModel.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace WellnessLiving\Studio\Microservice\Editor;
+
+use WellnessLiving\Core\a\AFlagSid;
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Returns a list of microservices.
+ */
+class ListModel extends WlModelAbstract
+{
+  /**
+   * A list of microservices. One element contains:<dl>
+   *   <dt>bool <var>is_remove</var></dt>
+   *   <dd>Whether the microservice has been deleted. `true` is the microservice is removed, `false` otherwise.</dd>
+   *   <dt>string <var>json_path</var></dt>
+   *   <dd>
+   *     A list of repositories and paths of this microservice.
+   *
+   *   </dd>
+   *   <dt>string <var>k_project</var></dt>
+   *   <dd>Project key.</dd>
+   *   <dt>string <var>s_file</var></dt>
+   *   <dd>File name.</dd>
+   *   <dt>string <var>text_project</var></dt>
+   *   <dd>Title of the project.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>Title of the microservice.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var string[][]
+   */
+  public $a_list = [];
+
+  /**
+   * Specifies whether to show removed and/or not removed microservices.
+   *
+   * One of {@link AFlagSid} constants.
+   *
+   *  * {@link AFlagSid::ON} to show only not removed microservices.
+   *  * {@link AFlagSid::OFF} to show only removed microservices.
+   *  * {@link AFlagSid::ALL} to show all microservices (removed and not removed).
+   *
+   * @get get
+   * @var int
+   * @see AFlagSid
+   */
+  public $id_remove = 0;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Task/Branch/BranchListModel.php b/WellnessLiving/Studio/Task/Branch/BranchListModel.php
index 6945bc6f..02ff22f6 100644
--- a/WellnessLiving/Studio/Task/Branch/BranchListModel.php
+++ b/WellnessLiving/Studio/Task/Branch/BranchListModel.php
@@ -11,6 +11,11 @@ class BranchListModel extends WlModelAbstract
 {
   /**
    * List of branch. One element contains: <dl>
+   *  <dt>string[] <var>a_path</var></dt>
+   *  <dd>
+   *    Information about paths into which catalogs are cloned/copied.
+   *
+   *   </dd>
    *   <dt>string <var>dtu_create</var></dt>
    *   <dd>Date when branch was created.</dd>
    *   <dt>string <var>k_deploy_instance</var></dt>
@@ -28,7 +33,7 @@ class BranchListModel extends WlModelAbstract
    * </dl>
    *
    * @get result
-   * @var string[][]
+   * @var array
    */
   public $a_data;
 }
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
index aa3f96e9..7bc73067 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
@@ -33,6 +33,8 @@ class Purchase56Model extends WlModelAbstract
    *   <dd>The key of the Purchase Option in the database. The table depends on <var>id_purchase_item</var>.</dd>
    *   <dt>string <var>k_login_prize</var></dt>
    *   <dd>Key of login prize.</dd>
+   *   <dt>string <var>s_value</var></dt>
+   *   <dd>The unique identifier.</dd>
    *   <dt>string <var>text_title</var></dt>
    *   <dd>User friendly login prize description.</dd>
    * </dl>
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index 91acc1e5..e62ed5be 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -83,7 +83,7 @@ class QuizElementModel extends WlModelAbstract
    * Whether quiz response received by kiosk or direct mode link.
    *
    * `true` quiz response received by kiosk mode.
-   * `false` quiz response received by direct or direct mode)
+   * `false` quiz response received by direct or direct mode.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 7bb5cbd7..297d3a81 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240813.354678';
+  const VERSION='20240814.355228';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From b57ea7d4e77966a3d6b05df39a9af69916d3944b Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 20 Aug 2024 11:22:13 +0000
Subject: [PATCH 44/71] Automatic upgrade of the SDK. Build #356071.

---
 .../Studio/Deploy/Cluster/ClusterModel.php    | 101 ++++++++++++++++++
 .../Studio/Deploy/Instance/InstanceModel.php  |   1 +
 .../Studio/Task/Branch/BranchListModel.php    |   4 +-
 WellnessLiving/Wl/Quiz/QuizElementModel.php   |  16 +++
 WellnessLiving/Wl/WlPrivilegeSid.php          |  26 ++++-
 WellnessLiving/WlModelRequest.php             |   2 +-
 6 files changed, 144 insertions(+), 6 deletions(-)
 create mode 100644 WellnessLiving/Studio/Deploy/Cluster/ClusterModel.php

diff --git a/WellnessLiving/Studio/Deploy/Cluster/ClusterModel.php b/WellnessLiving/Studio/Deploy/Cluster/ClusterModel.php
new file mode 100644
index 00000000..45a4b4e5
--- /dev/null
+++ b/WellnessLiving/Studio/Deploy/Cluster/ClusterModel.php
@@ -0,0 +1,101 @@
+<?php
+
+namespace WellnessLiving\Studio\Deploy\Cluster;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Manage `Studio Deploy Cluster`.
+ */
+class ClusterModel extends WlModelAbstract
+{
+  /**
+   * SSH port number that should be used by compilation server to connect instance servers.
+   *
+   * @post post
+   * @var int|null
+   */
+  public $i_port = null;
+
+  /**
+   * Whether this deployment cluster is active.
+   *
+   * @post post
+   * @var int|null
+   */
+  public $is_active = null;
+
+  /**
+   * Key of the cluster being saved.
+   *
+   * @post post,result
+   * @var string|null
+   */
+  public $k_deploy_cluster = null;
+
+  /**
+   * ID of deployment server that serves this cluster.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_deploy_compile = null;
+
+  /**
+   * `Deploy Instance` ID.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $k_deploy_instance = null;
+
+  /**
+   * Cluster description contains either amazon security group id.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_cluster = null;
+
+  /**
+   * Name of this deployment cluster.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_deploy_cluster = null;
+
+  /**
+   * Private key to access all instances of cluster over SSH under control user.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_key_control = null;
+
+  /**
+   * Private key to access all instances of cluster over SSH under instance user.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_ssh = null;
+
+  /**
+   * Name of instance user.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_user = null;
+
+  /**
+   * Name of control user.
+   *
+   * @post post
+   * @var string|null
+   */
+  public $s_user_control = null;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
index 9043bda0..ac79c02f 100644
--- a/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
+++ b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
@@ -69,6 +69,7 @@ class InstanceModel extends WlModelAbstract
   /**
    * The key of `Studio Deploy Instance`.
    *
+   * @delete get
    * @post post,result
    * @var string|null
    */
diff --git a/WellnessLiving/Studio/Task/Branch/BranchListModel.php b/WellnessLiving/Studio/Task/Branch/BranchListModel.php
index 02ff22f6..6397c6ed 100644
--- a/WellnessLiving/Studio/Task/Branch/BranchListModel.php
+++ b/WellnessLiving/Studio/Task/Branch/BranchListModel.php
@@ -24,10 +24,10 @@ class BranchListModel extends WlModelAbstract
    *   <dd>Task key.</dd>
    *   <dt>string <var>s_fio</var></dt>
    *   <dd>Task author name.</dd>
-   *   <dt>string <var>s_title</var></dt>
-   *   <dd>Title of the task.</dd>
    *   <dt>string <var>text_create</var></dt>
    *   <dd>Formatted time interval when branch was created.</dd>
+   *   <dt>string <var>text_title</var></dt>
+   *   <dd>Title of the task.</dd>
    *   <dt>string <var>url_task</var></dt>
    *   <dd>URL of the task.</dd>
    * </dl>
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index e62ed5be..7ba97bb5 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -79,6 +79,14 @@ class QuizElementModel extends WlModelAbstract
    */
   public $is_active = true;
 
+  /**
+   * `true` for request quiz from form builder page, `false` otherwise.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_builder = false;
+
   /**
    * Whether quiz response received by kiosk or direct mode link.
    *
@@ -154,6 +162,14 @@ class QuizElementModel extends WlModelAbstract
    * @var string
    */
   public $text_title = '';
+
+  /**
+   * UID of the client for which quiz requested.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid_client = '';
 }
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlPrivilegeSid.php b/WellnessLiving/Wl/WlPrivilegeSid.php
index f29d9df8..dd34a835 100644
--- a/WellnessLiving/Wl/WlPrivilegeSid.php
+++ b/WellnessLiving/Wl/WlPrivilegeSid.php
@@ -5,7 +5,7 @@
 /**
  * Wellnessliving-wide privileges.
  *
- * Last Used ID: 200.
+ * Last Used ID: 204.
  */
 abstract class WlPrivilegeSid
 {
@@ -19,6 +19,11 @@ abstract class WlPrivilegeSid
    */
   const APPOINTMENT_BOOK_UNPAID = 167;
 
+  /**
+   * Book appointments for clients with an unsigned waiver.
+   */
+  const APPOINTMENT_BOOK_UNSIGNED = 203;
+
   /**
    * Edit appointment at my location.
    */
@@ -42,7 +47,7 @@ abstract class WlPrivilegeSid
   const APPOINTMENT_VIEW = 52;
 
   /**
-   * Ability to book clients outside of their current paid period.
+   * Ability to book clients outside their current paid period.
    */
   const BOOK_OUTSIDE_PAID_PERIOD = 141;
 
@@ -141,6 +146,11 @@ abstract class WlPrivilegeSid
    */
   const CLASS_BOOK_UNPAID = 79;
 
+  /**
+   * Book classes for clients with an unsigned waiver.
+   */
+  const CLASS_BOOK_UNSIGNED = 201;
+
   /**
    * Edit classes at my location.
    */
@@ -213,6 +223,11 @@ abstract class WlPrivilegeSid
    */
   const ENROLLMENT_BOOK_UNPAID = 80;
 
+  /**
+   * Book events for clients with an unsigned waiver.
+   */
+  const ENROLLMENT_BOOK_UNSIGNED = 202;
+
   /**
    * Edit classes at my location.
    */
@@ -461,7 +476,7 @@ abstract class WlPrivilegeSid
   const NOTIFICATION_CLASS_BOOK = 57;
 
   /**
-   * Receive client class cancelation notification.
+   * Receive client class cancellation notification.
    */
   const NOTIFICATION_CLASS_CANCEL = 58;
 
@@ -712,6 +727,11 @@ abstract class WlPrivilegeSid
    */
   const RESOURCE_BOOK_UNPAID = 168;
 
+  /**
+   * Book assets for clients with an unsigned waiver.
+   */
+  const RESOURCE_BOOK_UNSIGNED = 204;
+
   /**
    * Mark client reviews as inappropriate and respond to customer comments.
    */
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 297d3a81..65254ccf 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240814.355228';
+  const VERSION='20240820.356071';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 8ec575da81191a8024685d92bde76dc4c8c52488 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 20 Aug 2024 13:49:27 +0000
Subject: [PATCH 45/71] Automatic upgrade of the SDK. Build #356136.

---
 WellnessLiving/Core/Locale/CurrencySid.php           | 12 +++++++++++-
 WellnessLiving/Core/Locale/LocaleSid.php             | 12 +++++++++++-
 .../Studio/Deploy/Instance/InstanceModel.php         |  2 +-
 WellnessLiving/WlModelRequest.php                    |  2 +-
 4 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/WellnessLiving/Core/Locale/CurrencySid.php b/WellnessLiving/Core/Locale/CurrencySid.php
index 3dc1de7c..ae8f93b0 100644
--- a/WellnessLiving/Core/Locale/CurrencySid.php
+++ b/WellnessLiving/Core/Locale/CurrencySid.php
@@ -9,7 +9,7 @@
  *
  * @link https://docs.1010data.com/1010dataReferenceManual/DataTypesAndFormats/currencyUnitCodes.html
  *
- * Last used ID: 13
+ * Last used ID: 16
  */
 abstract class CurrencySid
 {
@@ -53,6 +53,11 @@ abstract class CurrencySid
    */
   const KYD = 5;
 
+  /**
+   * Mauritian Rupee.
+   */
+  const MUR = 16;
+
   /**
    * New Zealand Dollar.
    */
@@ -63,6 +68,11 @@ abstract class CurrencySid
    */
   const PHP = 12;
 
+  /**
+   * Saudi Riyal.
+   */
+  const SAR = 15;
+
   /**
    * Unknown code.
    *
diff --git a/WellnessLiving/Core/Locale/LocaleSid.php b/WellnessLiving/Core/Locale/LocaleSid.php
index 05dfd6dc..87346886 100644
--- a/WellnessLiving/Core/Locale/LocaleSid.php
+++ b/WellnessLiving/Core/Locale/LocaleSid.php
@@ -5,7 +5,7 @@
 /**
  * A list of locales.
  *
- * Last used ID: 14
+ * Last used ID: 16
  */
 abstract class LocaleSid
 {
@@ -39,6 +39,11 @@ abstract class LocaleSid
    */
   const KUWAIT = 14;
 
+  /**
+   * Republic of Mauritius.
+   */
+  const MAURITIUS = 16;
+
   /**
    * A special locale that can be used for testing or a business situated in an unknown region.
    */
@@ -54,6 +59,11 @@ abstract class LocaleSid
    */
   const PHILIPPINES = 12;
 
+  /**
+   * Saudi Arabia.
+   */
+  const SAUDI_ARABIA = 15;
+
   /**
    * South Africa.
    */
diff --git a/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
index ac79c02f..1f83366d 100644
--- a/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
+++ b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
@@ -70,7 +70,7 @@ class InstanceModel extends WlModelAbstract
    * The key of `Studio Deploy Instance`.
    *
    * @delete get
-   * @post post,result
+   * @post get,result
    * @var string|null
    */
   public $k_deploy_instance = null;
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 65254ccf..50b02d37 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240820.356071';
+  const VERSION='20240820.356136';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 8a99591af05c2ca5023b0166d1a2c5c44b89d4ba Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 20 Aug 2024 13:59:48 +0000
Subject: [PATCH 46/71] Automatic upgrade of the SDK. Build #356140.

---
 WellnessLiving/Studio/Deploy/Instance/InstanceModel.php | 4 ++--
 WellnessLiving/WlModelRequest.php                       | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
index 1f83366d..9c1718ab 100644
--- a/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
+++ b/WellnessLiving/Studio/Deploy/Instance/InstanceModel.php
@@ -69,8 +69,8 @@ class InstanceModel extends WlModelAbstract
   /**
    * The key of `Studio Deploy Instance`.
    *
-   * @delete get
-   * @post get,result
+   * @delete post
+   * @post post,result
    * @var string|null
    */
   public $k_deploy_instance = null;
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 50b02d37..d44198a0 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240820.356136';
+  const VERSION='20240820.356140';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From dcf6c5056d73ae726fb000e397e9a79ad19f8637 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 20 Aug 2024 20:28:23 +0000
Subject: [PATCH 47/71] Automatic upgrade of the SDK. Build #356224.

---
 WellnessLiving/Config/WlConfigAbstract.php | 32 +++++++++++++++++++++-
 WellnessLiving/WlModelRequest.php          |  2 +-
 WellnessLiving/WlWebhook.php               |  2 +-
 example-webhook.php                        |  2 +-
 4 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/WellnessLiving/Config/WlConfigAbstract.php b/WellnessLiving/Config/WlConfigAbstract.php
index 6bbf3e81..56e00428 100644
--- a/WellnessLiving/Config/WlConfigAbstract.php
+++ b/WellnessLiving/Config/WlConfigAbstract.php
@@ -193,6 +193,14 @@ abstract class WlConfigAbstract
    */
   private $id_region;
 
+  /**
+   * Local host name. Used when calculating the correct webhook signature.
+   *   `null` if <var>$_SERVER['SERVER_NAME']</var> should be used.
+   *
+   * @var ?string
+   */
+  private $s_hostname=null;
+
   /**
    * User-agent to use in API requests.
    *
@@ -249,10 +257,12 @@ public function cookieTransient()
    *
    * @param int $id_region ID of a data center region in which information about this business is stored.
    *   One of {@link WlRegionSid} constants.
+   * @param ?string $s_hostname Local host name. Used when calculating the correct webhook signature.
+   *   `null` if <var>$_SERVER['SERVER_NAME']</var> should be used.
    * @return WlConfigAbstract Configuration object.
    * @throws WlAssertException In a case of an error with argument.
    */
-  final public static function create($id_region)
+  final public static function create($id_region,$s_hostname=null)
   {
     WlAssertException::assertTrue(is_string(static::AUTHORIZE_CODE) && strlen(static::AUTHORIZE_CODE)>0,[
       'text_class' => static::class,
@@ -304,8 +314,15 @@ final public static function create($id_region)
       'text_message' => 'The URL endpoint API is not set for the requested data center region id. Let the developers know about it.'
     ]);
 
+    WlAssertException::assertTrue($s_hostname===null || is_string($s_hostname) && strlen($s_hostname)>0,[
+      's_hostname' => $s_hostname,
+      'text_class' => static::class,
+      'text_message' => 'The local host name is bad.'
+    ]);
+
     $o_config = new static();
     $o_config->id_region = $id_region;
+    $o_config->s_hostname = $s_hostname;
 
     return $o_config;
   }
@@ -322,6 +339,19 @@ final public function csrfCode($s_session_key)
     return hash('sha3-512',$s_session_key.'::'.$this::AUTHORIZE_CODE.'::'.$t_time).'.'.$t_time.'.'.substr($s_session_key,0,5);
   }
 
+  /**
+   * Gets the local host name.
+   *
+   * @return string The local host name.
+   */
+  public function hostname()
+  {
+    if($this->s_hostname===null)
+      return $_SERVER['SERVER_NAME'];
+
+    return $this->s_hostname;
+  }
+
   /**
    * Retrieves the raw content of the HTTP request body.
    *
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index d44198a0..e72fb8cf 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240820.356140';
+  const VERSION='20240820.356224';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.
diff --git a/WellnessLiving/WlWebhook.php b/WellnessLiving/WlWebhook.php
index 39102979..f45a2f4f 100644
--- a/WellnessLiving/WlWebhook.php
+++ b/WellnessLiving/WlWebhook.php
@@ -238,7 +238,7 @@ private function signatureCompute()
       's_code' => $s_config_class::AUTHORIZE_CODE,
       's_cookie_persistent' => '',
       's_cookie_transient' => '',
-      's_host' => $_SERVER['SERVER_NAME'],
+      's_host' => $this->o_config->hostname(),
       's_id' => $s_config_class::AUTHORIZE_ID,
       's_method' => 'POST',
       's_resource' => $s_resource,
diff --git a/example-webhook.php b/example-webhook.php
index 1c0d3989..923bbe40 100644
--- a/example-webhook.php
+++ b/example-webhook.php
@@ -7,7 +7,7 @@
 require_once __DIR__.'/WellnessLiving/wl-autoloader.php';
 require_once __DIR__.'/example-config.php';
 
-$o_config=ExampleConfig::create(\WellnessLiving\Wl\WlRegionSid::US_EAST_1);
+$o_config=ExampleConfig::create(\WellnessLiving\Wl\WlRegionSid::US_EAST_1,'example.com');
 $o_webhook = new WlWebhook($o_config);
 
 // We check whether the webhook request is authorized or not.

From d819295c5f4b33d6802606ad58484ef90408b936 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 21 Aug 2024 09:02:23 +0000
Subject: [PATCH 48/71] Automatic upgrade of the SDK. Build #356253.

---
 WellnessLiving/Config/WlConfigAbstract.php | 5 +----
 WellnessLiving/WlModelRequest.php          | 2 +-
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/WellnessLiving/Config/WlConfigAbstract.php b/WellnessLiving/Config/WlConfigAbstract.php
index 56e00428..e0677fd3 100644
--- a/WellnessLiving/Config/WlConfigAbstract.php
+++ b/WellnessLiving/Config/WlConfigAbstract.php
@@ -322,7 +322,7 @@ final public static function create($id_region,$s_hostname=null)
 
     $o_config = new static();
     $o_config->id_region = $id_region;
-    $o_config->s_hostname = $s_hostname;
+    $o_config->s_hostname = $s_hostname!==null ? $s_hostname : $_SERVER['SERVER_NAME'];
 
     return $o_config;
   }
@@ -346,9 +346,6 @@ final public function csrfCode($s_session_key)
    */
   public function hostname()
   {
-    if($this->s_hostname===null)
-      return $_SERVER['SERVER_NAME'];
-
     return $this->s_hostname;
   }
 
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index e72fb8cf..ef4b012e 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240820.356224';
+  const VERSION='20240821.356253';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From b55ac49a1939deccf86f28d011bba8cc184c042d Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 21 Aug 2024 09:25:17 +0000
Subject: [PATCH 49/71] Automatic upgrade of the SDK. Build #356257.

---
 WellnessLiving/Config/WlConfigAbstract.php | 8 +++++++-
 WellnessLiving/WlModelRequest.php          | 2 +-
 WellnessLiving/WlWebhook.php               | 1 +
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/WellnessLiving/Config/WlConfigAbstract.php b/WellnessLiving/Config/WlConfigAbstract.php
index e0677fd3..8df6c913 100644
--- a/WellnessLiving/Config/WlConfigAbstract.php
+++ b/WellnessLiving/Config/WlConfigAbstract.php
@@ -322,7 +322,13 @@ final public static function create($id_region,$s_hostname=null)
 
     $o_config = new static();
     $o_config->id_region = $id_region;
-    $o_config->s_hostname = $s_hostname!==null ? $s_hostname : $_SERVER['SERVER_NAME'];
+    if($s_hostname===null && array_key_exists('SERVER_NAME',$_SERVER))
+      $s_hostname = $_SERVER['SERVER_NAME'];
+    else
+      $s_hostname = 'localhost';
+
+    $o_config->s_hostname = $s_hostname;
+
 
     return $o_config;
   }
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index ef4b012e..3d74b045 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240821.356253';
+  const VERSION='20240821.356257';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.
diff --git a/WellnessLiving/WlWebhook.php b/WellnessLiving/WlWebhook.php
index f45a2f4f..52501fd2 100644
--- a/WellnessLiving/WlWebhook.php
+++ b/WellnessLiving/WlWebhook.php
@@ -204,6 +204,7 @@ public function isAuthorize()
         'a_diagnostic_header' => $a_diagnostic_header,
         'a_header_auth_valid' => $a_auth_valid,
         'a_signature_compute' => $a_signature_compute,
+        's_hostname' => $this->o_config->hostname(),
         'text_message' => 'Invalid authorization hash.'
       ];
     }

From 3b973b1f4c6a4bd31a7906a3268c624627414f95 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 21 Aug 2024 09:26:58 +0000
Subject: [PATCH 50/71] Automatic upgrade of the SDK. Build #356258.

---
 WellnessLiving/Config/WlConfigAbstract.php | 11 +++++++----
 WellnessLiving/WlModelRequest.php          |  2 +-
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/WellnessLiving/Config/WlConfigAbstract.php b/WellnessLiving/Config/WlConfigAbstract.php
index 8df6c913..6d9bbe7e 100644
--- a/WellnessLiving/Config/WlConfigAbstract.php
+++ b/WellnessLiving/Config/WlConfigAbstract.php
@@ -322,10 +322,13 @@ final public static function create($id_region,$s_hostname=null)
 
     $o_config = new static();
     $o_config->id_region = $id_region;
-    if($s_hostname===null && array_key_exists('SERVER_NAME',$_SERVER))
-      $s_hostname = $_SERVER['SERVER_NAME'];
-    else
-      $s_hostname = 'localhost';
+    if($s_hostname===null)
+    {
+      if(array_key_exists('SERVER_NAME',$_SERVER))
+        $s_hostname = $_SERVER['SERVER_NAME'];
+      else
+        $s_hostname = 'localhost';
+    }
 
     $o_config->s_hostname = $s_hostname;
 
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 3d74b045..58232c85 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240821.356257';
+  const VERSION='20240821.356258';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 78cf1599a070ac72f97db11ffa78849574a14e79 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Thu, 22 Aug 2024 13:32:58 +0000
Subject: [PATCH 51/71] Automatic upgrade of the SDK. Build #356530.

---
 WellnessLiving/Config/WlConfigAbstract.php | 33 ++++------------------
 WellnessLiving/WlModelRequest.php          |  2 +-
 example-webhook.php                        |  2 +-
 3 files changed, 7 insertions(+), 30 deletions(-)

diff --git a/WellnessLiving/Config/WlConfigAbstract.php b/WellnessLiving/Config/WlConfigAbstract.php
index 6d9bbe7e..8fc601b1 100644
--- a/WellnessLiving/Config/WlConfigAbstract.php
+++ b/WellnessLiving/Config/WlConfigAbstract.php
@@ -193,14 +193,6 @@ abstract class WlConfigAbstract
    */
   private $id_region;
 
-  /**
-   * Local host name. Used when calculating the correct webhook signature.
-   *   `null` if <var>$_SERVER['SERVER_NAME']</var> should be used.
-   *
-   * @var ?string
-   */
-  private $s_hostname=null;
-
   /**
    * User-agent to use in API requests.
    *
@@ -257,12 +249,10 @@ public function cookieTransient()
    *
    * @param int $id_region ID of a data center region in which information about this business is stored.
    *   One of {@link WlRegionSid} constants.
-   * @param ?string $s_hostname Local host name. Used when calculating the correct webhook signature.
-   *   `null` if <var>$_SERVER['SERVER_NAME']</var> should be used.
    * @return WlConfigAbstract Configuration object.
    * @throws WlAssertException In a case of an error with argument.
    */
-  final public static function create($id_region,$s_hostname=null)
+  final public static function create($id_region)
   {
     WlAssertException::assertTrue(is_string(static::AUTHORIZE_CODE) && strlen(static::AUTHORIZE_CODE)>0,[
       'text_class' => static::class,
@@ -314,24 +304,8 @@ final public static function create($id_region,$s_hostname=null)
       'text_message' => 'The URL endpoint API is not set for the requested data center region id. Let the developers know about it.'
     ]);
 
-    WlAssertException::assertTrue($s_hostname===null || is_string($s_hostname) && strlen($s_hostname)>0,[
-      's_hostname' => $s_hostname,
-      'text_class' => static::class,
-      'text_message' => 'The local host name is bad.'
-    ]);
-
     $o_config = new static();
     $o_config->id_region = $id_region;
-    if($s_hostname===null)
-    {
-      if(array_key_exists('SERVER_NAME',$_SERVER))
-        $s_hostname = $_SERVER['SERVER_NAME'];
-      else
-        $s_hostname = 'localhost';
-    }
-
-    $o_config->s_hostname = $s_hostname;
-
 
     return $o_config;
   }
@@ -355,7 +329,10 @@ final public function csrfCode($s_session_key)
    */
   public function hostname()
   {
-    return $this->s_hostname;
+    if(!array_key_exists('HTTP_HOST',$_SERVER))
+      return 'localhost';
+
+    return $_SERVER['HTTP_HOST'];
   }
 
   /**
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 58232c85..ec776a2a 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240821.356258';
+  const VERSION='20240822.356530';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.
diff --git a/example-webhook.php b/example-webhook.php
index 923bbe40..1c0d3989 100644
--- a/example-webhook.php
+++ b/example-webhook.php
@@ -7,7 +7,7 @@
 require_once __DIR__.'/WellnessLiving/wl-autoloader.php';
 require_once __DIR__.'/example-config.php';
 
-$o_config=ExampleConfig::create(\WellnessLiving\Wl\WlRegionSid::US_EAST_1,'example.com');
+$o_config=ExampleConfig::create(\WellnessLiving\Wl\WlRegionSid::US_EAST_1);
 $o_webhook = new WlWebhook($o_config);
 
 // We check whether the webhook request is authorized or not.

From e28aff9cd8662aed830e189b6993c2e69ed116f5 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 4 Sep 2024 15:33:49 +0000
Subject: [PATCH 52/71] Automatic upgrade of the SDK. Build #358832.

---
 .../Book/Process/Purchase/Purchase56Model.php |   2 +
 .../Process/Purchase/PurchaseElementModel.php |  20 +--
 .../Book/Process/Purchase/PurchaseModel.php   |   2 +
 WellnessLiving/Wl/Quiz/QuizElementModel.php   |   6 +-
 .../Wl/Schedule/ClassView/DenyReasonSid.php   | 112 +-----------
 .../Wl/Visit/VisitDenyReasonSid.php           | 163 ++++++++++++++++++
 WellnessLiving/Wl/Visit/VisitStatusModel.php  |  34 ++++
 WellnessLiving/WlModelRequest.php             |   2 +-
 8 files changed, 223 insertions(+), 118 deletions(-)
 create mode 100644 WellnessLiving/Wl/Visit/VisitDenyReasonSid.php

diff --git a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
index 7bc73067..439eabae 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
@@ -103,6 +103,8 @@ class Purchase56Model extends WlModelAbstract
    *   <dd>Priority of this promotion.</dd>
    *   <dt>int <var>id_program</var></dt>
    *   <dd>The program ID for Purchase Options. One of the {@link WlProgramSid} constants.</dd>
+   *   <dt>bool <var>is_shared</var></dt>
+   *   <dd>`true` if the promotion is shared with the client, `false` if the client is owner of the promotion.</dd>
    *   <dt>string <var>k_login_promotion</var></dt>
    *   <dd>The login promotion key.</dd>
    *   <dt>string <var>s_class_include</var></dt>
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
index 3dc2a9d6..cb2d4e33 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
@@ -20,6 +20,16 @@ class PurchaseElementModel extends WlModelAbstract
    */
   public $a_tax;
 
+  /**
+   * Date/time of session is booking.
+   *
+   * `null` until initialized.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $dtu_date = null;
+
   /**
    * The number of sessions which are booked simultaneously.
    *
@@ -121,16 +131,6 @@ class PurchaseElementModel extends WlModelAbstract
    */
   public $m_price;
 
-  /**
-   * Prorate amount.
-   *
-   * `null` if no prorate is required.
-   *
-   * @get get
-   * @var string|null
-   */
-  public $m_prorate = null;
-
   /**
    * Amount of subtotal for 1 purchase item.
    *
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
index e33b7968..94808524 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
@@ -106,6 +106,8 @@ class PurchaseModel extends WlModelAbstract
    *   <dd>Priority of this promotion.</dd>
    *   <dt>int <var>id_program</var></dt>
    *   <dd>The program ID for Purchase Options. One of the {@link WlProgramSid} constants.</dd>
+   *   <dt>bool <var>is_shared</var></dt>
+   *   <dd>`true` if the promotion is shared with the client, `false` if the client is owner of the promotion.</dd>
    *   <dt>string <var>k_login_promotion</var></dt>
    *   <dd>The login promotion key.</dd>
    *   <dt>string <var>s_class_include</var></dt>
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index 7ba97bb5..4cefb3db 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -20,7 +20,11 @@ class QuizElementModel extends WlModelAbstract
   /**
    * List of quiz elements.
    *
-   * Order of the element in array corresponds to order of elements on the form.
+   * Each element responsible for one quiz question (inheritor of {@link \Core\Quiz\Element\ElementQuestionAbstract})
+   * and contains array representation of individual question.
+   * Structure of each value depend on type of element and contains public arguments of responsible class element.
+   *
+   * Order of the elements in array corresponds to order of elements on the form.
    *
    * @get result
    * @post post
diff --git a/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php b/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
index 474c79e0..da61a33d 100644
--- a/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
+++ b/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
@@ -2,117 +2,17 @@
 
 namespace WellnessLiving\Wl\Schedule\ClassView;
 
+use WellnessLiving\Wl\Visit\VisitDenyReasonSid;
+
 /**
  * Reasons why the client can't book this class.
  *
- * Last used ID: 21
+ * Last used ID: 29
+ *
+ * @depreated Use {@link VisitDenyReasonSid} class instead.
  */
 class DenyReasonSid
 {
-  /**
-   * The business can not take one more client.
-   */
-  const ACCESS_DENIED = 1;
-
-  /**
-   * Access is limited.
-   */
-  const ACCESS_LIMITED = 2;
-
-  /**
-   * The business can not take one more client.
-   */
-  const ACCOUNT_LIMIT = 3;
-
-  /**
-   * Class is not available for certain age.
-   */
-  const AGE_RESTRICTION = 4;
-
-  /**
-   * Liability Release needs to be agreed.
-   */
-  const AGREE_NX = 5;
-
-  /**
-   * Client is already booked for this session.
-   */
-  const BOOKED_ALREADY = 6;
-
-  /**
-   * It's too early to book a class.
-   */
-  const BOOK_EARLY = 7;
-
-  /**
-   * It's too late to book a class.
-   */
-  const BOOK_LATE = 8;
-
-  /**
-   * Cannot book to this class anymore.
-   */
-  const BOOK_RESTRICT = 9;
-
-  /**
-   * Business is inactive.
-   */
-  const BUSINESS_INACTIVE = 10;
-
-  /**
-   * Class is canceled.
-   */
-  const CLASS_CANCELED = 11;
-
-  /**
-   * Class is full.
-   */
-  const CLASS_FULL = 14;
-
-  /**
-   * Class does not exist anymore.
-   */
-  const CLASS_NOT_AVAILABLE_ANYMORE = 15;
-
-  /**
-   * Client is flagged at location.
-   */
-  const CLIENT_FLAGGED = 12;
-
-  /**
-   * Credit card is required for booking services.
-   */
-  const CREDIT_CARD_REQUIRE = 13;
-
-  /**
-   * Business is closed.
-   */
-  const HOLIDAY = 16;
-
-  /**
-   * Login is required.
-   */
-  const LOGIN_REQUIRED = 17;
-
-  /**
-   * Online booking is disabled for the class.
-   */
-  const NOT_BOOKABLE = 18;
-
-  /**
-   * Required personal details missing.
-   */
-  const USER_INFO_MISSING = 19;
-
-  /**
-   * Visit to another class is required first.
-   */
-  const VISIT_BEFORE = 20;
-
-  /**
-   * The wait list is full.
-   */
-  const WAIT_LIST_LIMIT_MAX = 21;
-}
+  }
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Visit/VisitDenyReasonSid.php b/WellnessLiving/Wl/Visit/VisitDenyReasonSid.php
new file mode 100644
index 00000000..9f803b75
--- /dev/null
+++ b/WellnessLiving/Wl/Visit/VisitDenyReasonSid.php
@@ -0,0 +1,163 @@
+<?php
+
+namespace WellnessLiving\Wl\Visit;
+
+/**
+ * Reasons of failed book or check-in.
+ *
+ * Last used ID: 29
+ */
+class VisitDenyReasonSid
+{
+  /**
+   * The business can not take one more client.
+   */
+  const ACCESS_DENIED = 1;
+
+  /**
+   * Access is limited.
+   */
+  const ACCESS_LIMITED = 2;
+
+  /**
+   * The business can not take one more client.
+   */
+  const ACCOUNT_LIMIT = 3;
+
+  /**
+   * Class is not available for certain age.
+   */
+  const AGE_RESTRICTION = 4;
+
+  /**
+   * Liability Release needs to be agreed.
+   */
+  const AGREE_NX = 5;
+
+  /**
+   * @title Instructor has denied appointment request
+   */
+  const APPOINTMENT_DENY = 25;
+
+  /**
+   * @title Instructor has not approved appointment request
+   */
+  const APPOINTMENT_REQUEST = 26;
+
+  /**
+   * @title Gym attendance disabled by business policy
+   */
+  const ATTEND_GYM_DISABLE = 23;
+
+  /**
+   * @title Self check-ins are disabled by business policy
+   */
+  const ATTEND_SELF_DISABLE = 22;
+
+  /**
+   * @title Unpaid check-ins are disabled by business policy
+   */
+  const ATTEND_UNPAID = 28;
+
+  /**
+   * @title User on a wait list
+   */
+  const ATTEND_WAIT = 27;
+
+  /**
+   * Client is already booked for this session.
+   */
+  const BOOKED_ALREADY = 6;
+
+  /**
+   * It's too early to book a class.
+   */
+  const BOOK_EARLY = 7;
+
+  /**
+   * It's too late to book a class.
+   */
+  const BOOK_LATE = 8;
+
+  /**
+   * @title Visit should be booked prior to check in
+   */
+  const BOOK_NX = 24;
+
+  /**
+   * Cannot book to this class anymore.
+   */
+  const BOOK_RESTRICT = 9;
+
+  /**
+   * Business is inactive.
+   */
+  const BUSINESS_INACTIVE = 10;
+
+  /**
+   * Class is canceled.
+   */
+  const CLASS_CANCELED = 11;
+
+  /**
+   * Class is full.
+   */
+  const CLASS_FULL = 14;
+
+  /**
+   * Class does not exist anymore.
+   */
+  const CLASS_NOT_AVAILABLE_ANYMORE = 15;
+
+  /**
+   * Client is flagged at location.
+   */
+  const CLIENT_FLAGGED = 12;
+
+  /**
+   * Credit card is required for booking services.
+   */
+  const CREDIT_CARD_REQUIRE = 13;
+
+  /**
+   * Business is closed.
+   */
+  const HOLIDAY = 16;
+
+  /**
+   * Login is required.
+   */
+  const LOGIN_REQUIRED = 17;
+
+  /**
+   * Online booking is disabled for the class.
+   */
+  const NOT_BOOKABLE = 18;
+
+  /**
+   * @title No appropriate payment option
+   */
+  const PAYMENT_NX = 30;
+
+  /**
+   * @title Unclassified reason
+   */
+  const UNKNOWN = 29;
+
+  /**
+   * Required personal details missing.
+   */
+  const USER_INFO_MISSING = 19;
+
+  /**
+   * Visit to another class is required first.
+   */
+  const VISIT_BEFORE = 20;
+
+  /**
+   * The wait list is full.
+   */
+  const WAIT_LIST_LIMIT_MAX = 21;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Visit/VisitStatusModel.php b/WellnessLiving/Wl/Visit/VisitStatusModel.php
index 66ec5270..73e0e35d 100644
--- a/WellnessLiving/Wl/Visit/VisitStatusModel.php
+++ b/WellnessLiving/Wl/Visit/VisitStatusModel.php
@@ -24,6 +24,32 @@ class VisitStatusModel extends WlModelAbstract
    */
   public $a_resource = [];
 
+  /**
+   * An array of service resources.
+   *
+   * Contains an extended data set, as well as a different format than {@link VisitStatusModel::$a_resource}.
+   *
+   * Each element contains the following set of data:
+   * <dl>
+   *  <dt>string <var>k_resource</var></dt>
+   *
+   *  <dt>string <var>k_resource_type</var></dt>
+   *
+   *  <dt>int <var>i_index</var></dt>
+   *  <dd>Index of the resource on the layout.</dd>
+   *  <dt>int <var>i_quantity</var></dt>
+   *  <dd>Quantity of the resource on the layout.</dd>
+   *  <dt>string <var>text_alias</var></dt>
+   *  <dd>Resource's custom name (alias) on the layout.</dd>
+   *  <dt>string <var>text_title</var></dt>
+   *  <dd>Resource's title.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var ?array[]
+   */
+  public $a_resource_alias = [];
+
   /**
    * The list of keys of staff members that conduct the class.
    *
@@ -141,6 +167,14 @@ class VisitStatusModel extends WlModelAbstract
    */
   public $k_class_period = '';
 
+  /**
+   * The key of the location where visit provides.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_location = '';
+
   /**
    * The email pattern key.
    * If `null`, the live email pattern shouldn't be used.
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index ec776a2a..d5c344d6 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240822.356530';
+  const VERSION='20240904.358832';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From d99161e93b261fee009663c34fa2f85dde187f85 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 11 Sep 2024 17:38:34 +0000
Subject: [PATCH 53/71] Automatic upgrade of the SDK. Build #360352.

---
 WellnessLiving/Core/a/ACardSystemSid.php      |   2 +-
 .../DebugToken/DebugTokenServiceModel.php     |  29 ++++
 .../Studio/Task/Branch/BranchListModel.php    |   2 +-
 .../StaffApp/CatalogList/CatalogListModel.php |   3 +-
 .../Profile/Purchase/PurchaseElementModel.php |   8 +
 .../PurchaseList/PurchaseListElementModel.php |   8 +
 WellnessLiving/Wl/Quiz/QuizElementModel.php   |  18 ++
 .../Wl/Reward/Score/ScoreControlModel.php     |  39 +++++
 .../Wl/Schedule/ClassView/DenyReasonSid.php   | 112 +++++++++++-
 .../Wl/Visit/VisitDenyReasonSid.php           | 163 ------------------
 WellnessLiving/WlModelRequest.php             |   2 +-
 11 files changed, 213 insertions(+), 173 deletions(-)
 create mode 100644 WellnessLiving/Studio/Personnel/DebugToken/DebugTokenServiceModel.php
 create mode 100644 WellnessLiving/Wl/Reward/Score/ScoreControlModel.php
 delete mode 100644 WellnessLiving/Wl/Visit/VisitDenyReasonSid.php

diff --git a/WellnessLiving/Core/a/ACardSystemSid.php b/WellnessLiving/Core/a/ACardSystemSid.php
index af8552d1..9f1db187 100644
--- a/WellnessLiving/Core/a/ACardSystemSid.php
+++ b/WellnessLiving/Core/a/ACardSystemSid.php
@@ -15,7 +15,7 @@ abstract class ACardSystemSid
   const AMERICAN_EXPRESS = 1;
 
   /**
-   *  Bank of Montreal (BMO).
+   * Bank of Montreal (BMO).
    */
   const BMO = 2;
 
diff --git a/WellnessLiving/Studio/Personnel/DebugToken/DebugTokenServiceModel.php b/WellnessLiving/Studio/Personnel/DebugToken/DebugTokenServiceModel.php
new file mode 100644
index 00000000..377fdd4f
--- /dev/null
+++ b/WellnessLiving/Studio/Personnel/DebugToken/DebugTokenServiceModel.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace WellnessLiving\Studio\Personnel\DebugToken;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Allows checking the validity of a debug token.
+ */
+class DebugTokenServiceModel extends WlModelAbstract
+{
+  /**
+   * Debug token to check and if valid to return `true` otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_valid = false;
+
+  /**
+   * Debug token to check.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_token = '';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Task/Branch/BranchListModel.php b/WellnessLiving/Studio/Task/Branch/BranchListModel.php
index 6397c6ed..f216d23a 100644
--- a/WellnessLiving/Studio/Task/Branch/BranchListModel.php
+++ b/WellnessLiving/Studio/Task/Branch/BranchListModel.php
@@ -35,7 +35,7 @@ class BranchListModel extends WlModelAbstract
    * @get result
    * @var array
    */
-  public $a_data;
+  public $a_data = [];
 }
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php b/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
index e21d3fff..2b0c354f 100644
--- a/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
+++ b/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
@@ -11,7 +11,8 @@
 use WellnessLiving\Wl\WlSaleSid;
 
 /**
- * Returns a list of all products available for a business’s shop at a particular location.
+ * Returns a list of all products available from a business’s shop.
+ * If a location is specified, only products available at that location are included.
  */
 class CatalogListModel extends WlModelAbstract
 {
diff --git a/WellnessLiving/Wl/Profile/Purchase/PurchaseElementModel.php b/WellnessLiving/Wl/Profile/Purchase/PurchaseElementModel.php
index 09c5f2d3..267c8732 100644
--- a/WellnessLiving/Wl/Profile/Purchase/PurchaseElementModel.php
+++ b/WellnessLiving/Wl/Profile/Purchase/PurchaseElementModel.php
@@ -444,6 +444,14 @@ class PurchaseElementModel extends WlModelAbstract
    */
   public $is_transfer;
 
+  /**
+   * The business key. Currently used only with {@link PurchaseElementModel::$k_session_pass} variable.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_business = null;
+
   /**
    * The key of the redemption code used to obtain some goods.
    * This should be specified only for items obtained via redemption code (not for ordinary purchases or for purchased
diff --git a/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php b/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php
index fffbe99e..e261b164 100644
--- a/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php
+++ b/WellnessLiving/Wl/Profile/PurchaseList/PurchaseListElementModel.php
@@ -519,6 +519,14 @@ class PurchaseListElementModel extends WlModelAbstract
    */
   public $is_transfer;
 
+  /**
+   * The business key. Currently used only with {@link PurchaseListElementModel::$k_session_pass} variable.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_business = null;
+
   /**
    * The ID of the redemption code used to obtain the item. This should be specified only for items obtained via
    * redemption code (not for ordinary purchases or for purchased promotions without purchases).
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index 4cefb3db..ea90cc81 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -174,6 +174,24 @@ class QuizElementModel extends WlModelAbstract
    * @var string
    */
   public $uid_client = '';
+
+  /**
+   * Direct URL to quiz.
+   *
+   * @get result
+   * @put result
+   * @var string
+   */
+  public $url_quiz;
+
+  /**
+   * Kiosk direct URL to quiz.
+   *
+   * @get result
+   * @put result
+   * @var string
+   */
+  public $url_quiz_kiosk;
 }
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Reward/Score/ScoreControlModel.php b/WellnessLiving/Wl/Reward/Score/ScoreControlModel.php
new file mode 100644
index 00000000..28e4cb0f
--- /dev/null
+++ b/WellnessLiving/Wl/Reward/Score/ScoreControlModel.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace WellnessLiving\Wl\Reward\Score;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Works with user's scores.
+ */
+class ScoreControlModel extends WlModelAbstract
+{
+  /**
+   * The user's bonus scores balance.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_score = 0;
+
+  /**
+   * The business key that user are in.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * The user's key to work with the scores.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '0';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php b/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
index da61a33d..474c79e0 100644
--- a/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
+++ b/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
@@ -2,17 +2,117 @@
 
 namespace WellnessLiving\Wl\Schedule\ClassView;
 
-use WellnessLiving\Wl\Visit\VisitDenyReasonSid;
-
 /**
  * Reasons why the client can't book this class.
  *
- * Last used ID: 29
- *
- * @depreated Use {@link VisitDenyReasonSid} class instead.
+ * Last used ID: 21
  */
 class DenyReasonSid
 {
-  }
+  /**
+   * The business can not take one more client.
+   */
+  const ACCESS_DENIED = 1;
+
+  /**
+   * Access is limited.
+   */
+  const ACCESS_LIMITED = 2;
+
+  /**
+   * The business can not take one more client.
+   */
+  const ACCOUNT_LIMIT = 3;
+
+  /**
+   * Class is not available for certain age.
+   */
+  const AGE_RESTRICTION = 4;
+
+  /**
+   * Liability Release needs to be agreed.
+   */
+  const AGREE_NX = 5;
+
+  /**
+   * Client is already booked for this session.
+   */
+  const BOOKED_ALREADY = 6;
+
+  /**
+   * It's too early to book a class.
+   */
+  const BOOK_EARLY = 7;
+
+  /**
+   * It's too late to book a class.
+   */
+  const BOOK_LATE = 8;
+
+  /**
+   * Cannot book to this class anymore.
+   */
+  const BOOK_RESTRICT = 9;
+
+  /**
+   * Business is inactive.
+   */
+  const BUSINESS_INACTIVE = 10;
+
+  /**
+   * Class is canceled.
+   */
+  const CLASS_CANCELED = 11;
+
+  /**
+   * Class is full.
+   */
+  const CLASS_FULL = 14;
+
+  /**
+   * Class does not exist anymore.
+   */
+  const CLASS_NOT_AVAILABLE_ANYMORE = 15;
+
+  /**
+   * Client is flagged at location.
+   */
+  const CLIENT_FLAGGED = 12;
+
+  /**
+   * Credit card is required for booking services.
+   */
+  const CREDIT_CARD_REQUIRE = 13;
+
+  /**
+   * Business is closed.
+   */
+  const HOLIDAY = 16;
+
+  /**
+   * Login is required.
+   */
+  const LOGIN_REQUIRED = 17;
+
+  /**
+   * Online booking is disabled for the class.
+   */
+  const NOT_BOOKABLE = 18;
+
+  /**
+   * Required personal details missing.
+   */
+  const USER_INFO_MISSING = 19;
+
+  /**
+   * Visit to another class is required first.
+   */
+  const VISIT_BEFORE = 20;
+
+  /**
+   * The wait list is full.
+   */
+  const WAIT_LIST_LIMIT_MAX = 21;
+}
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Visit/VisitDenyReasonSid.php b/WellnessLiving/Wl/Visit/VisitDenyReasonSid.php
deleted file mode 100644
index 9f803b75..00000000
--- a/WellnessLiving/Wl/Visit/VisitDenyReasonSid.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Visit;
-
-/**
- * Reasons of failed book or check-in.
- *
- * Last used ID: 29
- */
-class VisitDenyReasonSid
-{
-  /**
-   * The business can not take one more client.
-   */
-  const ACCESS_DENIED = 1;
-
-  /**
-   * Access is limited.
-   */
-  const ACCESS_LIMITED = 2;
-
-  /**
-   * The business can not take one more client.
-   */
-  const ACCOUNT_LIMIT = 3;
-
-  /**
-   * Class is not available for certain age.
-   */
-  const AGE_RESTRICTION = 4;
-
-  /**
-   * Liability Release needs to be agreed.
-   */
-  const AGREE_NX = 5;
-
-  /**
-   * @title Instructor has denied appointment request
-   */
-  const APPOINTMENT_DENY = 25;
-
-  /**
-   * @title Instructor has not approved appointment request
-   */
-  const APPOINTMENT_REQUEST = 26;
-
-  /**
-   * @title Gym attendance disabled by business policy
-   */
-  const ATTEND_GYM_DISABLE = 23;
-
-  /**
-   * @title Self check-ins are disabled by business policy
-   */
-  const ATTEND_SELF_DISABLE = 22;
-
-  /**
-   * @title Unpaid check-ins are disabled by business policy
-   */
-  const ATTEND_UNPAID = 28;
-
-  /**
-   * @title User on a wait list
-   */
-  const ATTEND_WAIT = 27;
-
-  /**
-   * Client is already booked for this session.
-   */
-  const BOOKED_ALREADY = 6;
-
-  /**
-   * It's too early to book a class.
-   */
-  const BOOK_EARLY = 7;
-
-  /**
-   * It's too late to book a class.
-   */
-  const BOOK_LATE = 8;
-
-  /**
-   * @title Visit should be booked prior to check in
-   */
-  const BOOK_NX = 24;
-
-  /**
-   * Cannot book to this class anymore.
-   */
-  const BOOK_RESTRICT = 9;
-
-  /**
-   * Business is inactive.
-   */
-  const BUSINESS_INACTIVE = 10;
-
-  /**
-   * Class is canceled.
-   */
-  const CLASS_CANCELED = 11;
-
-  /**
-   * Class is full.
-   */
-  const CLASS_FULL = 14;
-
-  /**
-   * Class does not exist anymore.
-   */
-  const CLASS_NOT_AVAILABLE_ANYMORE = 15;
-
-  /**
-   * Client is flagged at location.
-   */
-  const CLIENT_FLAGGED = 12;
-
-  /**
-   * Credit card is required for booking services.
-   */
-  const CREDIT_CARD_REQUIRE = 13;
-
-  /**
-   * Business is closed.
-   */
-  const HOLIDAY = 16;
-
-  /**
-   * Login is required.
-   */
-  const LOGIN_REQUIRED = 17;
-
-  /**
-   * Online booking is disabled for the class.
-   */
-  const NOT_BOOKABLE = 18;
-
-  /**
-   * @title No appropriate payment option
-   */
-  const PAYMENT_NX = 30;
-
-  /**
-   * @title Unclassified reason
-   */
-  const UNKNOWN = 29;
-
-  /**
-   * Required personal details missing.
-   */
-  const USER_INFO_MISSING = 19;
-
-  /**
-   * Visit to another class is required first.
-   */
-  const VISIT_BEFORE = 20;
-
-  /**
-   * The wait list is full.
-   */
-  const WAIT_LIST_LIMIT_MAX = 21;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index d5c344d6..34d455cf 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240904.358832';
+  const VERSION='20240911.360352';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 39d3ec6475f7e681defceecefd0ad758dfa6043b Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Fri, 13 Sep 2024 15:54:31 +0000
Subject: [PATCH 54/71] Automatic upgrade of the SDK. Build #361021.

---
 .../Book/Process/Purchase/Purchase56Model.php   |  4 ++++
 .../Wl/Book/Process/Purchase/PurchaseModel.php  |  4 ++++
 .../Wl/Book/Process/Store/StoreModel.php        |  7 ++++---
 .../Wl/Reward/Score/ScoreControlModel.php       | 17 +++++++++++++++++
 WellnessLiving/WlModelRequest.php               |  2 +-
 5 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
index 439eabae..06bad471 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
@@ -141,6 +141,10 @@ class Purchase56Model extends WlModelAbstract
    *     <dd>The key of the installment plan template.</dd>
    *     <dt>string <var>m_amount</var></dt>
    *     <dd>The amount of the installment plan.</dd>
+   *     <dt>string <var>m_discount_login</var></dt>
+   *     <dd>The discount amount for the client type of one purchase item.</dd>
+   *     <dt>string <var>m_price_discount</var></dt>
+   *     <dd>Amount of subtotal for 1 purchase item.</dd>
    *     <dt>string <var>s_duration</var></dt>
    *     <dd>The title of the installment plan.</dd></dl></dd>
    *   <dt>array[] [<var>a_visit_limit</var>]</dt>
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
index 94808524..e521f433 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
@@ -144,6 +144,10 @@ class PurchaseModel extends WlModelAbstract
    *     <dd>The key of the installment plan template.</dd>
    *     <dt>string <var>m_amount</var></dt>
    *     <dd>The amount of the installment plan.</dd>
+   *     <dt>string <var>m_discount_login</var></dt>
+   *     <dd>The discount amount for the client type of one purchase item.</dd>
+   *     <dt>string <var>m_price_discount</var></dt>
+   *     <dd>Amount of subtotal for 1 purchase item.</dd>
    *     <dt>string <var>s_duration</var></dt>
    *     <dd>The title of the installment plan.</dd></dl></dd>
    *   <dt>array[] [<var>a_visit_limit</var>]</dt>
diff --git a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
index 54dbbfa1..6217ff82 100644
--- a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
+++ b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Book\Process\Purchase\Purchase56Model;
 use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
@@ -34,9 +35,9 @@ class StoreModel extends WlModelAbstract
    *     Unique identifier of the element being checked.
    *     Corresponds to the values:
    *     <ul>
-   *       <li>{@link PurchaseApi::$a_purchase}`["s_value"]`</li>
-   *       <li>{@link PurchaseApi::$a_reward_prize}`["s_value"]`</li>
-   *       <li>{@link PurchaseApi::$a_login_prize}`["s_value"]`</li>
+   *       <li>{@link Purchase56Model::$a_purchase}`["s_value"]`</li>
+   *       <li>{@link Purchase56Model::$a_reward_prize}`["s_value"]`</li>
+   *       <li>{@link Purchase56Model::$a_login_prize}`["s_value"]`</li>
    *     </ul>
    *   </dd>
    * </dl>
diff --git a/WellnessLiving/Wl/Reward/Score/ScoreControlModel.php b/WellnessLiving/Wl/Reward/Score/ScoreControlModel.php
index 28e4cb0f..b3f36a51 100644
--- a/WellnessLiving/Wl/Reward/Score/ScoreControlModel.php
+++ b/WellnessLiving/Wl/Reward/Score/ScoreControlModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Reward\Score;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Login\WlLoginActivityTypeSid;
 
 /**
  * Works with user's scores.
@@ -17,6 +18,14 @@ class ScoreControlModel extends WlModelAbstract
    */
   public $i_score = 0;
 
+  /**
+   * User's activity ID. One of {@link WlLoginActivityTypeSid} constants.
+   *
+   * @post get
+   * @var int
+   */
+  public $id_type = 0;
+
   /**
    * The business key that user are in.
    *
@@ -26,6 +35,14 @@ class ScoreControlModel extends WlModelAbstract
    */
   public $k_business = '0';
 
+  /**
+   * Object ID, for example, class period ID for books and visits.
+   *
+   * @post get
+   * @var ?string
+   */
+  public $k_id = null;
+
   /**
    * The user's key to work with the scores.
    *
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 34d455cf..74bf7053 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240911.360352';
+  const VERSION='20240913.361021';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 9195d9aac78c075e5dbde4baf7d727afa7c8e9b1 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 18 Sep 2024 20:39:33 +0000
Subject: [PATCH 55/71] Automatic upgrade of the SDK. Build #361988.

---
 WellnessLiving/Studio/Ip/Bot/AccessModel.php  |  31 +++
 WellnessLiving/Studio/Ip/Bot/EditModel.php    |  71 +++++++
 .../Studio/Ip/Service/EditModel.php           |  73 +++++++
 .../Studio/Ip/Service/ServiceTimeoutSid.php   |  33 +++
 .../Appointment/Book/Payment/PaymentModel.php |   8 +
 .../Book/Payment/PaymentPostModel.php         |   8 +
 .../Wl/Book/Process/Frequency/RepeatModel.php | 193 ++++++++++++++++++
 .../Wl/Catalog/CatalogList/ListModel.php      |   4 +-
 WellnessLiving/Wl/Location/ListModel.php      |   7 +
 .../Attendance/AttendanceInfoByTokenModel.php |  24 +++
 .../Wl/Profile/ProfileCreateModel.php         |  69 +++++++
 WellnessLiving/WlModelRequest.php             |   2 +-
 12 files changed, 520 insertions(+), 3 deletions(-)
 create mode 100644 WellnessLiving/Studio/Ip/Bot/AccessModel.php
 create mode 100644 WellnessLiving/Studio/Ip/Bot/EditModel.php
 create mode 100644 WellnessLiving/Studio/Ip/Service/EditModel.php
 create mode 100644 WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php
 create mode 100644 WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
 create mode 100644 WellnessLiving/Wl/Profile/ProfileCreateModel.php

diff --git a/WellnessLiving/Studio/Ip/Bot/AccessModel.php b/WellnessLiving/Studio/Ip/Bot/AccessModel.php
new file mode 100644
index 00000000..7d495123
--- /dev/null
+++ b/WellnessLiving/Studio/Ip/Bot/AccessModel.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace WellnessLiving\Studio\Ip\Bot;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Allows to grant/revoke access from a bot to a service.
+ */
+class AccessModel extends WlModelAbstract
+{
+  /**
+   * Key of a bot which access should be changed.
+   *
+   * @delete get
+   * @put get
+   * @var string
+   */
+  public $k_ip_bot;
+
+  /**
+   * Key of a service which access should be changed.
+   *
+   * @delete get
+   * @put get
+   * @var string
+   */
+  public $k_ip_service;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Ip/Bot/EditModel.php b/WellnessLiving/Studio/Ip/Bot/EditModel.php
new file mode 100644
index 00000000..b2d269ae
--- /dev/null
+++ b/WellnessLiving/Studio/Ip/Bot/EditModel.php
@@ -0,0 +1,71 @@
+<?php
+
+namespace WellnessLiving\Studio\Ip\Bot;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Allows to create, edit and delete bots.
+ */
+class EditModel extends WlModelAbstract
+{
+  /**
+   * Whether this bot is active.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $is_active;
+
+  /**
+   * If a bot is edited, its key is stored here.
+   *
+   * <tt>null</tt> if a new bot should be created.
+   * This value is required for create and delete operations.
+   *
+   * @delete get
+   * @get get
+   * @post get,result
+   * @var string|null
+   */
+  public $k_ip_bot = null;
+
+  /**
+   * Name of the bot.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $text_bot;
+
+  /**
+   * Network of the bot.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $text_network;
+
+  /**
+   * Update password.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $text_password = '';
+
+  /**
+   * Network update rules.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $text_update = '';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Ip/Service/EditModel.php b/WellnessLiving/Studio/Ip/Service/EditModel.php
new file mode 100644
index 00000000..1e43b2e5
--- /dev/null
+++ b/WellnessLiving/Studio/Ip/Service/EditModel.php
@@ -0,0 +1,73 @@
+<?php
+
+namespace WellnessLiving\Studio\Ip\Service;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Allows to create, edit and delete IP services.
+ */
+class EditModel extends WlModelAbstract
+{
+  /**
+   * Timeout of the service.
+   *
+   * One of {@link ServiceTimeoutSid} constants.
+   *
+   * @get result
+   * @post post
+   * @var int
+   */
+  public $id_service_timeout;
+
+  /**
+   * Type of the service.
+   *
+   * @get result
+   * @post post
+   * @var int
+   */
+  public $id_service_type;
+
+  /**
+   * If a service is edited, its key is stored here.
+   *
+   * <tt>null</tt> if a new service should be created.
+   * This value is required for create and delete operations.
+   *
+   * @delete get
+   * @get get
+   * @post get,result
+   * @var string|null
+   */
+  public $k_ip_service = null;
+
+  /**
+   * Group of services.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $text_group;
+
+  /**
+   * Name of the service.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $text_title;
+
+  /**
+   * Network update rules.
+   *
+   * @get result
+   * @post post
+   * @var string
+   */
+  public $text_update;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php b/WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php
new file mode 100644
index 00000000..3bb3ed51
--- /dev/null
+++ b/WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace WellnessLiving\Studio\Ip\Service;
+
+/**
+ * Time during which access by IP address is granted to personnel.
+ *
+ * Minimum between two values is used.
+ */
+abstract class ServiceTimeoutSid
+{
+  /**
+   * Sensitive services that may require much work.
+   */
+  const DAY = 2;
+
+  /**
+   * Sensitive services that are used very rare.
+   */
+  const HOUR = 1;
+
+  /**
+   * Services that are not sensitive.
+   */
+  const MONTH = 4;
+
+  /**
+   * Not that sensitive services.
+   */
+  const WEEK = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
index 16d3c490..922e41e8 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
@@ -281,6 +281,14 @@ class PaymentModel extends WlModelAbstract
    */
   public $is_walk_in = false;
 
+  /**
+   * The business key. Currently used only with {@link PaymentModel::$k_session_pass} variable.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_business = null;
+
   /**
    * The item key. Depends on {@link PaymentModel::$id_purchase_item} property.
    *
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
index f0fec16e..0a0d38e4 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
@@ -278,6 +278,14 @@ class PaymentPostModel extends WlModelAbstract
    */
   public $is_walk_in = false;
 
+  /**
+   * The business key. Currently used only with {@link PaymentModel::$k_session_pass} variable.
+   *
+   * @get get
+   * @var string|null
+   */
+  public $k_business = null;
+
   /**
    * The item key. Depends on {@link PaymentModel::$id_purchase_item} property.
    *
diff --git a/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php b/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
new file mode 100644
index 00000000..3ace4d1c
--- /dev/null
+++ b/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
@@ -0,0 +1,193 @@
+<?php
+
+namespace WellnessLiving\Wl\Book\Process\Frequency;
+
+use WellnessLiving\Core\a\ADurationSid;
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
+
+/**
+ * For recurrent class booking returns list of visits to be created for the given settings.
+ */
+class RepeatModel extends WlModelAbstract
+{
+  /**
+   * List of days of the week to create visits.
+   *
+   * @get get
+   * @var int[]
+   */
+  public $a_day = [];
+
+  /**
+   * List of visits to be created for the given settings:<dl>
+   *   <dt>string <var>dt_date</var></dt>
+   *   <dd>Visit date and time in UTC.</dd>
+   *   <dt>string <var>dt_local</var></dt>
+   *   <dd>Visit date and time in location's time zone.</dd>
+   *   <dt>string <var>html_short_name_list</var></dt>
+   *   <dd>List of names of the staff who provide this class.</dd>
+   *   <dt>string <var>html_timezone</var></dt>
+   *   <dd>Location's time zone abbreviation.</dd>
+   *   <dt>string <var>is_disable</var></dt>
+   *   <dd>Whether booking is not available for this day.</dd>
+   *   <dt>string <var>is_free</var></dt>
+   *   <dd>Whether booking is free for this day.</dd>
+   *   <dt>string <var>is_ignore</var></dt>
+   *   <dd>Whether visit is from ignore list.</dd>
+   *   <dt>string <var>is_wait</var></dt>
+   *   <dd>Whether booking can be only to wait list.</dd>
+   *   <dt>string <var>k_class_period</var></dt>
+   *   <dd>Key of class period, primary key in {}.</dd>
+   *   <dt>string <var>s_alert</var></dt>
+   *   <dd>Staff name if booking available, warning about wait list or disabled booking otherwise.</dd>
+   *   <dt>string <var>s_date</var></dt>
+   *   <dd>Visit date and time in location's time zone in human readable format.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_visit = [];
+
+  /**
+   * List of visits to be ignored. Each value is a string consisting of a class period key
+   * and a visit date and time in location's timezone, concatenated by two colons.
+   *
+   * @get get
+   * @var array
+   */
+  public $a_visit_ignore = [];
+
+  /**
+   * Date of the class, when recurring booking was called.
+   *
+   * @get get
+   * @var string
+   */
+  public $dt_date = '';
+
+  /**
+   * Date to start recurring booking.
+   *
+   * @get get,result
+   * @var string
+   */
+  public $dt_from = '';
+
+  /**
+   * Date to finish recurring booking.
+   *
+   * @get get,result
+   * @var string
+   */
+  public $dt_to = '';
+
+  /**
+   * Count of the visits to be created. Should be empty, if date range is set.
+   *
+   * @get get,result
+   * @var int
+   */
+  public $i_count = 0;
+
+  /**
+   * Count of days\weeks\months between recurring bookings.
+   *
+   * @get get
+   * @var int
+   */
+  public $i_duration = 0;
+
+  /**
+   * Recurring booking interval, one of {@link ADurationSid} constants.
+   *
+   * @get get
+   * @var int
+   */
+  public $id_duration = 0;
+
+  /**
+   * WellnessLiving mode, one of {@link ModeSid} constants.
+   *
+   * @get get
+   * @var int
+   */
+  public $id_mode = 0;
+
+  /**
+   * @get get
+   * @var int
+   */
+  public $id_repeat_end = 0;
+
+  /**
+   * `true` when cancelling booking, `false` otherwise.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_cancel = false;
+
+  /**
+   * `true` if current user is not created yet, `false` otherwise.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_new_user = false;
+
+  /**
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * @get get
+   * @var string
+   */
+  public $k_class_period = '';
+
+  /**
+   * Encoded list of user keys, who will attend visits.
+   *
+   * @get get
+   * @var string
+   */
+  public $s_uid = '';
+
+  /**
+   * Encoded list of user keys, who will attend visits.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_date_from = '';
+
+  /**
+   * Encoded list of user keys, who will attend visits.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_date_to = '';
+
+  /**
+   * Key of user, who will attend visits.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '';
+
+  /**
+   * Key of user, who perform booking.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid_actor = '';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/CatalogList/ListModel.php b/WellnessLiving/Wl/Catalog/CatalogList/ListModel.php
index 59b6bcc8..b2102a9d 100644
--- a/WellnessLiving/Wl/Catalog/CatalogList/ListModel.php
+++ b/WellnessLiving/Wl/Catalog/CatalogList/ListModel.php
@@ -15,7 +15,7 @@ class ListModel extends WlModelAbstract
    * @get result
    * @var array
    */
-  public $a_product;
+  public $a_product = [];
 
   /**
    * The list of products to show with duplicates.
@@ -37,7 +37,7 @@ class ListModel extends WlModelAbstract
   public $k_business = '0';
 
   /**
-   * The key of a location.
+   * The key of a location. If `0`, all products in the business are retrieved.
    *
    * @get get
    * @var string
diff --git a/WellnessLiving/Wl/Location/ListModel.php b/WellnessLiving/Wl/Location/ListModel.php
index bd1194b1..5806445b 100644
--- a/WellnessLiving/Wl/Location/ListModel.php
+++ b/WellnessLiving/Wl/Location/ListModel.php
@@ -31,6 +31,13 @@ class ListModel extends WlModelAbstract
    *     List of directories from {@link WlProjectSid}, where location is published.
    *   </dd>
    *   <dt>
+   *     array <var>a_timezone</var>
+   *   </dt>
+   *   <dd>
+   *     Information about location timezone. Includes `k_timezone` for primary key, `text_abbr` for user-friendly short
+   *     abbreviation and `text_name` for the name of the timezone.
+   *   </dd>
+   *   <dt>
    *     float <var>f_latitude</var>
    *   </dt>
    *   <dd>
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
index 7b5dbf44..fa104f18 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
@@ -195,6 +195,22 @@ class AttendanceInfoByTokenModel extends WlModelAbstract
    */
   public $dt_date_local = '';
 
+  /**
+   * End date and time of the session in MySQL format in local timezone.
+   *
+   * @get result
+   * @var string
+   */
+  public $dtl_end = '';
+
+  /**
+   * End date and time of the session in MySQL format in GMT.
+   *
+   * @get result
+   * @var string
+   */
+  public $dtu_end = '';
+
   /**
    * Date and time in UTC when the visit is promoted from wait list to active list.
    * Not empty for appointments.
@@ -212,6 +228,14 @@ class AttendanceInfoByTokenModel extends WlModelAbstract
    */
   public $has_note = null;
 
+  /**
+   * Duration of the session in minutes.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_duration = null;
+
   /**
    * Type of note. One of {@link WlVisitNoteSid} constants. <tt>false</tt> if notes not allowed.
    *
diff --git a/WellnessLiving/Wl/Profile/ProfileCreateModel.php b/WellnessLiving/Wl/Profile/ProfileCreateModel.php
new file mode 100644
index 00000000..7c7d5812
--- /dev/null
+++ b/WellnessLiving/Wl/Profile/ProfileCreateModel.php
@@ -0,0 +1,69 @@
+<?php
+
+namespace WellnessLiving\Wl\Profile;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Creates user profile with minimum fields.
+ */
+class ProfileCreateModel extends WlModelAbstract
+{
+  /**
+   * Date of the user's birthday in MySQL format.
+   *
+   * @post post
+   * @var string
+   */
+  public $dt_birthday = '';
+
+  /**
+   * The key of the business.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * First name of the user.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_firstname = '';
+
+  /**
+   * Last name of the user.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_lastname = '';
+
+  /**
+   * Email of the user.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_mail = '';
+
+  /**
+   * Phone of the user.
+   *
+   * @post post
+   * @var string
+   */
+  public $text_phone = '';
+
+  /**
+   * The key of the user.
+   *
+   * @post result
+   * @var string
+   */
+  public $uid = '';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 74bf7053..8a876520 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240913.361021';
+  const VERSION='20240918.361988';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 378d9c798c9c088c09742b11d2f2a1da8c7ab5ff Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Fri, 20 Sep 2024 09:57:02 +0000
Subject: [PATCH 56/71] Automatic upgrade of the SDK. Build #362465.

---
 .../Studio/Ip/Service/EditModel.php           |  2 +
 .../Studio/Ip/Service/ServiceTypeSid.php      | 44 +++++++++++++++++++
 .../Wl/Book/Process/Frequency/RepeatModel.php |  3 +-
 .../Process/Purchase/PurchaseElementModel.php | 12 ++++-
 .../Book/Process/Purchase/PurchaseModel.php   |  4 --
 WellnessLiving/WlModelRequest.php             |  2 +-
 6 files changed, 59 insertions(+), 8 deletions(-)
 create mode 100644 WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php

diff --git a/WellnessLiving/Studio/Ip/Service/EditModel.php b/WellnessLiving/Studio/Ip/Service/EditModel.php
index 1e43b2e5..5219bc6d 100644
--- a/WellnessLiving/Studio/Ip/Service/EditModel.php
+++ b/WellnessLiving/Studio/Ip/Service/EditModel.php
@@ -23,6 +23,8 @@ class EditModel extends WlModelAbstract
   /**
    * Type of the service.
    *
+   * One of {@link ServiceTypeSid} constants.
+   *
    * @get result
    * @post post
    * @var int
diff --git a/WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php b/WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php
new file mode 100644
index 00000000..a9e9f75c
--- /dev/null
+++ b/WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace WellnessLiving\Studio\Ip\Service;
+
+/**
+ * A list of service types to which access by IP address can be managed.
+ */
+abstract class ServiceTypeSid
+{
+  /**
+   * Amazon security group.
+   *
+   * @title Amazon Security Group
+   */
+  const AMAZON_GROUP = 5;
+
+  /**
+   * Amazon IAM user.
+   *
+   * @title Amazon IAM user
+   */
+  const AMAZON_IAM = 6;
+
+  /**
+   * Amazon RDS security group.
+   */
+  const AMAZON_RDS = 1;
+
+  /**
+   * Access over SSH protocol.
+   *
+   * @title Access over SSH
+   */
+  const SSH = 2;
+
+  /**
+   * Access to SVN repository.
+   *
+   * @title Access to SVN repository
+   */
+  const SVN = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php b/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
index 3ace4d1c..3c9d54e5 100644
--- a/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
+++ b/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Wl\Book\Process\Frequency;
 
+use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Mode\ModeSid;
@@ -12,7 +13,7 @@
 class RepeatModel extends WlModelAbstract
 {
   /**
-   * List of days of the week to create visits.
+   * List of days of the week to create visits. Each value is a {@link ADateWeekSid} constant.
    *
    * @get get
    * @var int[]
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
index cb2d4e33..2bf265e4 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseElementModel.php
@@ -74,8 +74,16 @@ class PurchaseElementModel extends WlModelAbstract
 
   /**
    * Installment template key.
-   * This property is optional. `null` if installment plan doesn't exist for bought item.
-   * `0` if installment plan doesn't selected for bought item from the list of installment plans.
+   * This property is optional.
+   *
+   * * can only be set for the purchase option which supports installment plan, see {@link PurchaseItemAbstract::INSTALLMENT_ALLOW_USER} property;
+   * * `null` if installment plan doesn't exist for bought item;
+   * * `0` if installment plan doesn't selected for bought item from the list of installment plans.
+   *
+   * NOTE:
+   * * Calculations of discounts and taxes for installment plans are for demonstration purposes only!
+   * * Installment is not an independent purchase item and has no discounts or taxes.
+   * * Installment is a division of the final amount (with taxes and discounts), of some purchase option, into N parts.
    *
    * @get get
    * @var string|null
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
index e521f433..94808524 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
@@ -144,10 +144,6 @@ class PurchaseModel extends WlModelAbstract
    *     <dd>The key of the installment plan template.</dd>
    *     <dt>string <var>m_amount</var></dt>
    *     <dd>The amount of the installment plan.</dd>
-   *     <dt>string <var>m_discount_login</var></dt>
-   *     <dd>The discount amount for the client type of one purchase item.</dd>
-   *     <dt>string <var>m_price_discount</var></dt>
-   *     <dd>Amount of subtotal for 1 purchase item.</dd>
    *     <dt>string <var>s_duration</var></dt>
    *     <dd>The title of the installment plan.</dd></dl></dd>
    *   <dt>array[] [<var>a_visit_limit</var>]</dt>
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 8a876520..84c00c5f 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240918.361988';
+  const VERSION='20240920.362465';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 58a2152cb880557b7b76a851e063193c12ebc394 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Thu, 26 Sep 2024 12:58:29 +0000
Subject: [PATCH 57/71] Automatic upgrade of the SDK. Build #363753.

---
 .../Appointment/Book/Payment/PaymentModel.php |  6 ++
 .../Book/Payment/PaymentMultipleModel.php     |  6 ++
 .../Book/Payment/PaymentPostModel.php         |  6 ++
 .../Wl/Book/Process/Info/Info54Model.php      | 56 ++++++++++-------
 .../Wl/Book/Process/Info/InfoModel.php        | 56 ++++++++++-------
 .../Wl/Book/Process/Payment/PaymentModel.php  | 62 ++++++++++++-------
 .../Wl/Book/Process/Process54Model.php        | 56 ++++++++++-------
 .../Wl/Book/Process/Process59Model.php        | 56 ++++++++++-------
 .../Wl/Book/Process/ProcessModel.php          | 56 ++++++++++-------
 .../Book/Process/Purchase/Purchase56Model.php | 60 +++++++++---------
 .../Book/Process/Purchase/PurchaseModel.php   | 56 ++++++++++-------
 .../Wl/Book/Process/Quiz/QuizModel.php        | 56 ++++++++++-------
 .../Book/Process/Resource/Resource54Model.php | 56 ++++++++++-------
 .../Book/Process/Resource/ResourceModel.php   | 56 ++++++++++-------
 .../Wl/Book/Process/Store/StoreModel.php      | 56 ++++++++++-------
 .../Wl/Catalog/Payment/PaymentModel.php       |  6 ++
 .../Wl/Classes/ClassView/ElementModel.php     |  2 +
 .../Attendance/AttendanceInfoByTokenModel.php |  2 +-
 .../Wl/Pay/Account/Charge/ChargeModel.php     |  6 ++
 WellnessLiving/Wl/Quiz/QuizElementModel.php   | 19 ++++++
 WellnessLiving/WlModelRequest.php             |  2 +-
 21 files changed, 443 insertions(+), 294 deletions(-)

diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
index 922e41e8..3af4b216 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
@@ -122,6 +122,12 @@ class PaymentModel extends WlModelAbstract
    *   <dt>
    *     boolean [<var>is_hide</var>]
    *   </dt>
+   *   <dt>
+   *     bool [<var>is_save</var>=true]
+   *   </dt>
+   *   <dd>
+   *     Whether payment method should be saved to user's account.
+   *   </dd>
    *   <dd>
    *     Determines whether this payment method is hidden.
    *   </dd>
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
index 5574ca2d..3e8b67f0 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
@@ -254,6 +254,12 @@ class PaymentMultipleModel extends WlModelAbstract
    *   <dt>
    *     boolean [<var>is_hide</var>]
    *   </dt>
+   *   <dt>
+   *     bool [<var>is_save</var>=true]
+   *   </dt>
+   *   <dd>
+   *     Whether payment method should be saved to user's account.
+   *   </dd>
    *   <dd>
    *     Determines whether this payment method is hidden.
    *   </dd>
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
index 0a0d38e4..9853c161 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
@@ -119,6 +119,12 @@ class PaymentPostModel extends WlModelAbstract
    *   <dt>
    *     boolean [<var>is_hide</var>]
    *   </dt>
+   *   <dt>
+   *     bool [<var>is_save</var>=true]
+   *   </dt>
+   *   <dd>
+   *     Whether payment method should be saved to user's account.
+   *   </dd>
    *   <dd>
    *     Determines whether this payment method is hidden.
    *   </dd>
diff --git a/WellnessLiving/Wl/Book/Process/Info/Info54Model.php b/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
index 609ef5b0..825b6f17 100644
--- a/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
@@ -36,46 +36,54 @@ class Info54Model extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Book/Process/Info/InfoModel.php b/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
index 2e6c96ea..8b4067d3 100644
--- a/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
+++ b/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
@@ -35,46 +35,54 @@ class InfoModel extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
index b167e948..561dd477 100644
--- a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
@@ -140,6 +140,12 @@ class PaymentModel extends WlModelAbstract
    *   <dt>
    *     boolean [<var>is_hide</var>]
    *   </dt>
+   *   <dt>
+   *     bool [<var>is_save</var>=true]
+   *   </dt>
+   *   <dd>
+   *     Whether payment method should be saved to user's account.
+   *   </dd>
    *   <dd>
    *     Determines whether this payment method is hidden.
    *   </dd>
@@ -185,46 +191,54 @@ class PaymentModel extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Book/Process/Process54Model.php b/WellnessLiving/Wl/Book/Process/Process54Model.php
index 2b6c94af..1ff97abf 100644
--- a/WellnessLiving/Wl/Book/Process/Process54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process54Model.php
@@ -56,46 +56,54 @@ class Process54Model extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Book/Process/Process59Model.php b/WellnessLiving/Wl/Book/Process/Process59Model.php
index 7af00b0e..1b177b98 100644
--- a/WellnessLiving/Wl/Book/Process/Process59Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process59Model.php
@@ -55,46 +55,54 @@ class Process59Model extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Book/Process/ProcessModel.php b/WellnessLiving/Wl/Book/Process/ProcessModel.php
index 405f3f16..9badf706 100644
--- a/WellnessLiving/Wl/Book/Process/ProcessModel.php
+++ b/WellnessLiving/Wl/Book/Process/ProcessModel.php
@@ -53,46 +53,54 @@ class ProcessModel extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
index 06bad471..fc01f5d6 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
@@ -141,10 +141,6 @@ class Purchase56Model extends WlModelAbstract
    *     <dd>The key of the installment plan template.</dd>
    *     <dt>string <var>m_amount</var></dt>
    *     <dd>The amount of the installment plan.</dd>
-   *     <dt>string <var>m_discount_login</var></dt>
-   *     <dd>The discount amount for the client type of one purchase item.</dd>
-   *     <dt>string <var>m_price_discount</var></dt>
-   *     <dd>Amount of subtotal for 1 purchase item.</dd>
    *     <dt>string <var>s_duration</var></dt>
    *     <dd>The title of the installment plan.</dd></dl></dd>
    *   <dt>array[] [<var>a_visit_limit</var>]</dt>
@@ -207,46 +203,54 @@ class Purchase56Model extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
index 94808524..dac237df 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
@@ -206,46 +206,54 @@ class PurchaseModel extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php b/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
index 2a9c5f16..ee1a070e 100644
--- a/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
+++ b/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
@@ -65,46 +65,54 @@ class QuizModel extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php b/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
index f0a811f1..d97ae183 100644
--- a/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
@@ -27,46 +27,54 @@ class Resource54Model extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php b/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
index 9e71ae0a..ec5da592 100644
--- a/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
+++ b/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
@@ -26,46 +26,54 @@ class ResourceModel extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
index 6217ff82..0df9c078 100644
--- a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
+++ b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
@@ -50,46 +50,54 @@ class StoreModel extends WlModelAbstract
   /**
    * Information about the recurring booking:
    * <dl>
-   *   <dt>
-   *     int[] [<var>a_week</var>]
-   *   </dt>
+   *   <dt>int[] <var>a_day</var></dt>
    *   <dd>
-   *     The days of week when the appointment repeat. One of the {@link ADateWeekSid} constants.
-   *     This will be empty if the appointment doesn't repeat weekly.
+   *     The days of week when the appointment repeat.One of the {@link ADateWeekSid} constants.
+   *     Should be passed for any type of repetition.
    *   </dd>
+   *   <dt>int[] <var>a_week</var></dt>
+   *   <dd>Deprecated, use `a_day` instead!</dd>
+   *   <dt>string [<var>dl_end</var>]</dt>
+   *   <dd>Deprecated, use `dt_from` and `dt_to` instead!</dd>
    *   <dt>
-   *     string [<var>dl_end</var>]
+   *     string [<var>dt_from</var>]
    *   </dt>
    *   <dd>
-   *     The date when the appointment's repeat cycle stops. This will be empty if the repeat cycle doesn't stop at a certain date.
+   *     Date to start recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int [<var>i_occurrence</var>]
+   *     string [<var>dt_to</var>]
    *   </dt>
    *   <dd>
-   *     The number of occurrences after which the appointment's repeat cycle stops.
-   *     This will be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *     Date to complete recurring booking.
+   *     Expected for `id_repeat_
    *   </dd>
    *   <dt>
-   *     int <var>i_period</var>
-   *   </dt>
-   *   <dd>
-   *     The frequency of the appointment's repeat cycle.
-   *   </dd>
+   *      int [<var>i_count</var>]
+   *    </dt>
+   *    <dd>
+   *      The number of occurrences after which the appointment's repeat cycle stops.
+   *      Should be empty if the repeat cycle doesn't stop after a certain number of occurrences.
+   *      Expected for `id_repeat_
+   *    </dd>
+   *   <dt>int <var>i_duration</var></dt>
+   *   <dd>Count of days\weeks\months between recurring bookings.</dd>
+   *   <dt>int [<var>i_occurrence</var>]</dt>
+   *   <dd>Deprecated, use `i_count` instead!</dd>
+   *   <dt>int <var>i_period</var></dt>
+   *   <dd>Deprecated, use `i_duration` instead!</dd>
    *   <dt>
-   *     int <var>id_period</var>
+   *     int <var>id_duration</var>
    *   </dt>
    *   <dd>
    *     The measurement unit of `i_period`. One of the {@link ADurationSid} constants.
+   *     Available duration units are: {@link ADurationSid::DAY}, {@link ADurationSid::WEEK}, {@link ADurationSid::MONTH}.
    *   </dd>
-   *   <dt>
-   *     bool [<var>is_month</var>]
-   *   </dt>
-   *   <dd>
-   *     <tt>true</tt> - the appointment repeats monthly on the same date.
-   *     <tt>false</tt> - the appointment repeats monthly on the same day of the week.
-   *     <tt>null</tt> - the appointment doesn't repeat monthly.
-   *   </dd>
+   *   <dt>int <var>id_period</var></dt>
+   *   <dd>Deprecated, use `id_duration` instead!</dd>
+   *   <dt>int <var>id_repeat_end</var></dt>
+   *   <dd>Possible ways to stop repeatable events.</dd>
    * </dl>
    *
    * This will be `null` if the booking isn't recurring.
diff --git a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
index d297ee29..70035dd7 100644
--- a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
@@ -355,6 +355,12 @@ class PaymentModel extends WlModelAbstract
    *   <dt>
    *     boolean [<var>is_hide</var>]
    *   </dt>
+   *   <dt>
+   *     bool [<var>is_save</var>=true]
+   *   </dt>
+   *   <dd>
+   *     Whether payment method should be saved to user's account.
+   *   </dd>
    *   <dd>
    *     Determines whether this payment method is hidden.
    *   </dd>
diff --git a/WellnessLiving/Wl/Classes/ClassView/ElementModel.php b/WellnessLiving/Wl/Classes/ClassView/ElementModel.php
index d69cd369..028be518 100644
--- a/WellnessLiving/Wl/Classes/ClassView/ElementModel.php
+++ b/WellnessLiving/Wl/Classes/ClassView/ElementModel.php
@@ -99,6 +99,8 @@ class ElementModel extends WlModelAbstract
    *   </dd>
    *   <dt>string <var>k_class</var></dt>
    *   <dd>The class key.</dd>
+   *   <dt>string<var>k_promotion_default</var>
+   *   <dd> Promotion key of the default promotion to use when paying for the class. `null` if no promotion is selected.
    *   <dt>string <var>m_price</var></dt>
    *   <dd>Drop In price, if the class allows payment for one visit.</dd>
    *   <dt>bool <var>show_special_instructions</var></dt>
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
index fa104f18..667b9a63 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
@@ -234,7 +234,7 @@ class AttendanceInfoByTokenModel extends WlModelAbstract
    * @get result
    * @var int
    */
-  public $i_duration = null;
+  public $i_duration;
 
   /**
    * Type of note. One of {@link WlVisitNoteSid} constants. <tt>false</tt> if notes not allowed.
diff --git a/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php b/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
index 68eaed1a..a5a695a8 100644
--- a/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
+++ b/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
@@ -107,6 +107,12 @@ class ChargeModel extends WlModelAbstract
    *   <dt>
    *     boolean [<var>is_hide</var>]
    *   </dt>
+   *   <dt>
+   *     bool [<var>is_save</var>=true]
+   *   </dt>
+   *   <dd>
+   *     Whether payment method should be saved to user's account.
+   *   </dd>
    *   <dd>
    *     Determines whether this payment method is hidden.
    *   </dd>
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index ea90cc81..3415e573 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Quiz;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
  * Manages a single quiz.
@@ -32,6 +33,24 @@ class QuizElementModel extends WlModelAbstract
    */
   public $a_element = [];
 
+  /**
+   * List of purchase items for which this form is loaded.
+   *
+   * The list of purchase items.
+   * Each element has the format `[id_purchase_item]::[k_id]`, where: <dl>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The ID of the purchase item. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The item key. This depends on <var>id_purchase_item</var> of this array.</dd>
+   * </dl>
+   *
+   * `null` in case when purchase item not specified or form loaded from direct link.
+   *
+   * @get get
+   * @var string[]|null
+   */
+  public $a_purchase_item = null;
+
   /**
    * Quiz settings.
    *
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 84c00c5f..290a82e6 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240920.362465';
+  const VERSION='20240926.363753';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 2aac550860199f3c8db151b2922c96119150f7f7 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 1 Oct 2024 22:00:37 +0000
Subject: [PATCH 58/71] Automatic upgrade of the SDK. Build #364654.

---
 .../Studio/Task/Branch/BranchListModel.php    |  4 +-
 .../Business/Design/BusinessDesignModel.php   |  4 +-
 .../Wl/Catalog/Payment/PaymentModel.php       | 11 +--
 .../Wl/Login/WlLoginActivityTypeSid.php       |  5 ++
 WellnessLiving/Wl/Quiz/QuizElementModel.php   | 35 ++++----
 .../Generator/ReportGeneratorStatusSid.php    | 88 -------------------
 .../Wl/Reward/Score/ScoreControlModel.php     | 56 ------------
 WellnessLiving/Wl/Reward/Score/ScoreModel.php | 61 +++++++++++++
 WellnessLiving/Wl/WlPrivilegeSid.php          |  7 +-
 WellnessLiving/WlModelRequest.php             |  2 +-
 10 files changed, 101 insertions(+), 172 deletions(-)
 delete mode 100644 WellnessLiving/Wl/Report/Generator/ReportGeneratorStatusSid.php
 delete mode 100644 WellnessLiving/Wl/Reward/Score/ScoreControlModel.php
 create mode 100644 WellnessLiving/Wl/Reward/Score/ScoreModel.php

diff --git a/WellnessLiving/Studio/Task/Branch/BranchListModel.php b/WellnessLiving/Studio/Task/Branch/BranchListModel.php
index f216d23a..22e9638c 100644
--- a/WellnessLiving/Studio/Task/Branch/BranchListModel.php
+++ b/WellnessLiving/Studio/Task/Branch/BranchListModel.php
@@ -22,10 +22,10 @@ class BranchListModel extends WlModelAbstract
    *   <dd>Key of deployment instance.</dd>
    *   <dt>string <var>k_task</var></dt>
    *   <dd>Task key.</dd>
-   *   <dt>string <var>s_fio</var></dt>
-   *   <dd>Task author name.</dd>
    *   <dt>string <var>text_create</var></dt>
    *   <dd>Formatted time interval when branch was created.</dd>
+   *   <dt>string <var>text_fio</var></dt>
+   *   <dd>Task author name.</dd>
    *   <dt>string <var>text_title</var></dt>
    *   <dd>Title of the task.</dd>
    *   <dt>string <var>url_task</var></dt>
diff --git a/WellnessLiving/Wl/Business/Design/BusinessDesignModel.php b/WellnessLiving/Wl/Business/Design/BusinessDesignModel.php
index 52d0e548..8e950de6 100644
--- a/WellnessLiving/Wl/Business/Design/BusinessDesignModel.php
+++ b/WellnessLiving/Wl/Business/Design/BusinessDesignModel.php
@@ -23,8 +23,10 @@ class BusinessDesignModel extends WlModelAbstract
    *   <dd>Logo style ID. For more details, see {@link RsBusinessDesignLogoStyleSid}.</dd>
    *   <dt>bool <var>is_attend_self</var></dt>
    *   <dd>If <tt>true</tt> clients can check-in using the Client Web App and Achieve Web App.</dd>
+   *   <dt>bool <var>is_appointment_capacity</var></dt>
+   *   <dd>If <tt>true</tt> the capacity and number of clients signed up to the appointment will be shown.</dd>
    *   <dt>bool <var>is_class_capacity</var></dt>
-   *   <dd>If <tt>true</tt> the capacity and number of clients signed up will be shown.</dd>
+   *   <dd>If <tt>true</tt> the capacity and number of clients signed up to the class will be shown.</dd>
    *   <dt>bool <var>is_class_quick</var></dt>
    *   <dd>If <tt>true</tt>, the quick class filter will be shown.</dd>
    *   <dt>bool <var>is_show_name</var></dt>
diff --git a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
index 70035dd7..9de6708c 100644
--- a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
@@ -69,16 +69,13 @@ class PaymentModel extends WlModelAbstract
    *       </dt>
    *       <dd>
    *          "Wellness Program" fields.
-   *
    *          <var>k_wellness_program</var> must be passed along with this array. See the description below.
-   *
    *          <dl>
    *            <dt>array <var>a_account</var></dt>
    *            <dd>See {@link EnrollmentFieldListModel::$a_account} for a full description.</dd>
    *            <dt>array <var>a_field</var></dt>
    *            <dd>See {@link EnrollmentFieldListModel::$a_field} for a full description.</dd>
    *          </dl>
-   *
    *          It's recommended to validate the fields using the POST method of the {@link EnrollmentFieldListModel} model.
    *       </dd>
    *       <dt>
@@ -150,9 +147,7 @@ class PaymentModel extends WlModelAbstract
    *       </dt>
    *       <dd>
    *          The "Wellness Program" key. Set this for the insurance membership promotion.
-   *
    *          <var>a_wellness_program</var> array must be passed along with the key. See the array description above.
-   *
    *          <p>Use the following models to work with this type of promotion:</p>
    *          <ul>
    *            <li>{@link ProgramListModel} to obtain list of active programs.</li>
@@ -239,6 +234,12 @@ class PaymentModel extends WlModelAbstract
    *     The item key.
    *   </dd>
    *   <dt>
+   *     string [<var>k_login_prize</var>]
+   *   </dt>
+   *   <dd>
+   *    The key of the login prize to apply a login prize discount.
+   *   </dd>
+   *   <dt>
    *     string [<var>k_shop_product_option</var>]
    *   </dt>
    *   <dd>
diff --git a/WellnessLiving/Wl/Login/WlLoginActivityTypeSid.php b/WellnessLiving/Wl/Login/WlLoginActivityTypeSid.php
index a7267b20..ba5d6641 100644
--- a/WellnessLiving/Wl/Login/WlLoginActivityTypeSid.php
+++ b/WellnessLiving/Wl/Login/WlLoginActivityTypeSid.php
@@ -231,6 +231,11 @@ abstract class WlLoginActivityTypeSid
    */
   const REVIEW_SHARE_TWITTER = 42;
 
+  /**
+   * Reward points were changed manually.
+   */
+  const REWARD_MANUAL = 55;
+
   /**
    * All reward points have been reset.
    */
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index 3415e573..bbfc957b 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -33,24 +33,6 @@ class QuizElementModel extends WlModelAbstract
    */
   public $a_element = [];
 
-  /**
-   * List of purchase items for which this form is loaded.
-   *
-   * The list of purchase items.
-   * Each element has the format `[id_purchase_item]::[k_id]`, where: <dl>
-   *   <dt>int <var>id_purchase_item</var></dt>
-   *   <dd>The ID of the purchase item. One of the {@link WlPurchaseItemSid} constants.</dd>
-   *   <dt>string <var>k_id</var></dt>
-   *   <dd>The item key. This depends on <var>id_purchase_item</var> of this array.</dd>
-   * </dl>
-   *
-   * `null` in case when purchase item not specified or form loaded from direct link.
-   *
-   * @get get
-   * @var string[]|null
-   */
-  public $a_purchase_item = null;
-
   /**
    * Quiz settings.
    *
@@ -132,6 +114,23 @@ class QuizElementModel extends WlModelAbstract
    */
   public $json_element = '';
 
+  /**
+   * List of purchase items for which this form is loaded in JSON format.
+   *
+   * Each element has the format `[id_purchase_item]::[k_id]`, where: <dl>
+   *   <dt>int <var>id_purchase_item</var></dt>
+   *   <dd>The ID of the purchase item. One of the {@link WlPurchaseItemSid} constants.</dd>
+   *   <dt>string <var>k_id</var></dt>
+   *   <dd>The item key. This depends on <var>id_purchase_item</var> of this array.</dd>
+   * </dl>
+   *
+   * Empty in case when purchase item not specified or form loaded from direct link.
+   *
+   * @get get
+   * @var string
+   */
+  public $json_purchase_item = '';
+
   /**
    * Business key within which quiz is managed.
    *
diff --git a/WellnessLiving/Wl/Report/Generator/ReportGeneratorStatusSid.php b/WellnessLiving/Wl/Report/Generator/ReportGeneratorStatusSid.php
deleted file mode 100644
index ab0aa322..00000000
--- a/WellnessLiving/Wl/Report/Generator/ReportGeneratorStatusSid.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Report\Generator;
-
-/**
- * Lists statuses of reports from point of view of its generation.
- */
-class ReportGeneratorStatusSid
-{
-  /**
-   * Report is in an inconsistent state.
-   *
-   * There was an aborted operation which means this report is available partially.
-   *
-   * The following transitions are possible:
-   *
-   * * `ABORTED` => `DELETING` when a background task finds that this report is old and should be deleted.
-   *
-   * * `ABORTED` => `QUEUED` if user clicks to regenerate this report
-   */
-  const ABORTED = 6;
-
-  /**
-   * Current operation is being aborted now.
-   *
-   * The following transitions are possible:
-   *
-   * * `ABORTING` => `ABORTED` when current operation completes.
-   *   This transition is performed in two places: before the beginning of the actual generation,
-   *   and after completion of the generation.
-   */
-  const ABORTING = 5;
-
-  /**
-   * This report is being deleted now.
-   *
-   * The following transitions are possible:
-   *
-   * * `DELETING` => (report does not exist anymore) when deletion of this report completes.
-   */
-  const DELETING = 4;
-
-  /**
-   * This report is being generated now.
-   *
-   * This status is set when report is generated from zero point.
-   * This status basically means that not all partition of the report present.
-   * It also means that all partitions that exist have the newest values.
-   *
-   * All new reports are created in this status.
-   *
-   * The following transitions are possible:
-   *
-   * * `GENERATING` => `ABORTING` when generation of this report aborted by user.
-   * * `GENERATING` => `READY` when generation of this report completes.
-   *   This transition is performed when generation completes successfully.
-   */
-  const GENERATING = 2;
-
-  /**
-   * Generation of this report is queued.
-   * It will start automatically when generation of other reports completes.
-   *
-   * The following transitions are possible:
-   *
-   * * `QUEUED` => (report does not exist anymore) If generation of this report was aborted while no data was generated.
-   * * `QUEUED` => `ABORTED` If generation of this report was aborted while there is data from previous generation of
-   *    this report.
-   *
-   *    This transition also occurs if a report stayed in the queue more than the set duration and
-   *    there is some data left from the previous generation of this report.
-   * * `QUEUED` => `GENERATING` when there is a free thread slot to start generation of this report immediately.
-   */
-  const QUEUED = 1;
-
-  /**
-   * Generation of this report is now completed.
-   *
-   * The following transitions are possible:
-   *
-   * * `READY` => `DELETING` when a background tasks identifies that this report is old and starts deleting it.
-   *
-   * * `READY` => `QUEUED` when user clicks to regenerate this report
-   */
-  const READY = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Reward/Score/ScoreControlModel.php b/WellnessLiving/Wl/Reward/Score/ScoreControlModel.php
deleted file mode 100644
index b3f36a51..00000000
--- a/WellnessLiving/Wl/Reward/Score/ScoreControlModel.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Reward\Score;
-
-use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Login\WlLoginActivityTypeSid;
-
-/**
- * Works with user's scores.
- */
-class ScoreControlModel extends WlModelAbstract
-{
-  /**
-   * The user's bonus scores balance.
-   *
-   * @get result
-   * @var int
-   */
-  public $i_score = 0;
-
-  /**
-   * User's activity ID. One of {@link WlLoginActivityTypeSid} constants.
-   *
-   * @post get
-   * @var int
-   */
-  public $id_type = 0;
-
-  /**
-   * The business key that user are in.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $k_business = '0';
-
-  /**
-   * Object ID, for example, class period ID for books and visits.
-   *
-   * @post get
-   * @var ?string
-   */
-  public $k_id = null;
-
-  /**
-   * The user's key to work with the scores.
-   *
-   * @get get
-   * @post get
-   * @var string
-   */
-  public $uid = '0';
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Reward/Score/ScoreModel.php b/WellnessLiving/Wl/Reward/Score/ScoreModel.php
new file mode 100644
index 00000000..23415c8a
--- /dev/null
+++ b/WellnessLiving/Wl/Reward/Score/ScoreModel.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace WellnessLiving\Wl\Reward\Score;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * API endpoint designed to manage points which are earned for certain activity.
+ */
+class ScoreModel extends WlModelAbstract
+{
+  /**
+   * List of login activity keys for which points should be added or returned.
+   *
+   * NOTE: Login activity might belong to different users. It is possible for ex if booking performed
+   * for several users (usually family members) and required to retrieve sum of all scores for preformed activities.
+   *
+   * @get get
+   * @post get
+   * @var string[]
+   */
+  public $a_login_activity = [];
+
+  /**
+   * Depending on arguments specified during API request might be:
+   * * Total number of points which were earned for each activity in a list provided in {@link ScoreModel::$a_login_activity}
+   *   in a case if it was provided.
+   * * Total number of points user currently own in a cast if {@link ScoreModel::$uid} specified.
+   *
+   * @get result
+   * @put post
+   * @var int
+   */
+  public $i_score = 0;
+
+  /**
+   * Business key within which score should be managed.
+   *
+   * @put post
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * String to be added as a comment to manual reward points changes.
+   *
+   * @put post
+   * @var string
+   */
+  public $text_comment = '';
+
+  /**
+   * User key for which score should be managed.
+   *
+   * @put post
+   * @var string
+   */
+  public $uid = '0';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlPrivilegeSid.php b/WellnessLiving/Wl/WlPrivilegeSid.php
index dd34a835..3691f368 100644
--- a/WellnessLiving/Wl/WlPrivilegeSid.php
+++ b/WellnessLiving/Wl/WlPrivilegeSid.php
@@ -5,7 +5,7 @@
 /**
  * Wellnessliving-wide privileges.
  *
- * Last Used ID: 204.
+ * Last Used ID: 205.
  */
 abstract class WlPrivilegeSid
 {
@@ -610,6 +610,11 @@ abstract class WlPrivilegeSid
    */
   const PROFILE_MY_LOCATION = 86;
 
+  /**
+   * View client’s upcoming and past schedule.
+   */
+  const PROFILE_SCHEDULE = 205;
+
   /**
    * Manage profile client type.
    */
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 290a82e6..bcd47d45 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20240926.363753';
+  const VERSION='20241001.364654';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 00870d85edf53022acf0ab920e2e5173002cfdbc Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 1 Oct 2024 22:22:04 +0000
Subject: [PATCH 59/71] Automatic upgrade of the SDK. Build #364657.

---
 .../Generator/ReportGeneratorStatusSid.php    | 88 +++++++++++++++++++
 WellnessLiving/WlModelRequest.php             |  2 +-
 2 files changed, 89 insertions(+), 1 deletion(-)
 create mode 100644 WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php

diff --git a/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php b/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php
new file mode 100644
index 00000000..051b2db6
--- /dev/null
+++ b/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php
@@ -0,0 +1,88 @@
+<?php
+
+namespace WellnessLiving\Thoth\ReportCore\Generator;
+
+/**
+ * Lists statuses of reports from point of view of its generation.
+ */
+class ReportGeneratorStatusSid
+{
+  /**
+   * Report is in an inconsistent state.
+   *
+   * There was an aborted operation which means this report is available partially.
+   *
+   * The following transitions are possible:
+   *
+   * * `ABORTED` => `DELETING` when a background task finds that this report is old and should be deleted.
+   *
+   * * `ABORTED` => `QUEUED` if user clicks to regenerate this report
+   */
+  const ABORTED = 6;
+
+  /**
+   * Current operation is being aborted now.
+   *
+   * The following transitions are possible:
+   *
+   * * `ABORTING` => `ABORTED` when current operation completes.
+   *   This transition is performed in two places: before the beginning of the actual generation,
+   *   and after completion of the generation.
+   */
+  const ABORTING = 5;
+
+  /**
+   * This report is being deleted now.
+   *
+   * The following transitions are possible:
+   *
+   * * `DELETING` => (report does not exist anymore) when deletion of this report completes.
+   */
+  const DELETING = 4;
+
+  /**
+   * This report is being generated now.
+   *
+   * This status is set when report is generated from zero point.
+   * This status basically means that not all partition of the report present.
+   * It also means that all partitions that exist have the newest values.
+   *
+   * All new reports are created in this status.
+   *
+   * The following transitions are possible:
+   *
+   * * `GENERATING` => `ABORTING` when generation of this report aborted by user.
+   * * `GENERATING` => `READY` when generation of this report completes.
+   *   This transition is performed when generation completes successfully.
+   */
+  const GENERATING = 2;
+
+  /**
+   * Generation of this report is queued.
+   * It will start automatically when generation of other reports completes.
+   *
+   * The following transitions are possible:
+   *
+   * * `QUEUED` => (report does not exist anymore) If generation of this report was aborted while no data was generated.
+   * * `QUEUED` => `ABORTED` If generation of this report was aborted while there is data from previous generation of
+   *    this report.
+   *
+   *    This transition also occurs if a report stayed in the queue more than the set duration and
+   *    there is some data left from the previous generation of this report.
+   * * `QUEUED` => `GENERATING` when there is a free thread slot to start generation of this report immediately.
+   */
+  const QUEUED = 1;
+
+  /**
+   * Generation of this report is now completed.
+   *
+   * The following transitions are possible:
+   *
+   * * `READY` => `DELETING` when a background tasks identifies that this report is old and starts deleting it.
+   *
+   * * `READY` => `QUEUED` when user clicks to regenerate this report
+   */
+  const READY = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index bcd47d45..8ac14bb1 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241001.364654';
+  const VERSION='20241001.364657';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From cbb29c350f28e900c793f8dc7feab782b10dc793 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Thu, 10 Oct 2024 17:23:36 +0000
Subject: [PATCH 60/71] Automatic upgrade of the SDK. Build #366441.

---
 .../Drive/ImageUpload/ImageUploadModel.php    |  10 +
 .../Generator/ReportGeneratorStatusSid.php    |   5 +
 .../Appointment/Book/Asset/AssetListModel.php |  18 +
 .../Wl/Book/Process/Info/Info54Model.php      |  12 +
 .../Wl/Book/Process/Info/InfoModel.php        |  12 +
 .../Wl/Book/Process/Payment/PaymentModel.php  |  12 +
 .../Wl/Book/Process/Process54Model.php        |  12 +
 .../Wl/Book/Process/Process59Model.php        |  12 +
 .../Wl/Book/Process/ProcessModel.php          |  12 +
 .../Book/Process/Purchase/Purchase56Model.php |  12 +
 .../Book/Process/Purchase/PurchaseModel.php   |  12 +
 .../Wl/Book/Process/Quiz/QuizModel.php        |  12 +
 .../Book/Process/Relation/RelationModel.php   |  11 +
 .../Book/Process/Resource/Resource54Model.php |  12 +
 .../Book/Process/Resource/ResourceModel.php   |  12 +
 .../Wl/Book/Process/Store/StoreModel.php      |  12 +
 .../Wl/Catalog/Payment/PaymentModel.php       |   6 +-
 .../Wl/Classes/ClassView/ElementModel.php     |   4 +-
 .../Wl/Integration/Autymate/ReportModel.php   |   3 -
 .../Attendance/AttendanceInfoByTokenModel.php |  12 +-
 .../Login/Attendance/AttendanceInfoModel.php  | 365 ++++++++++++++++++
 .../Report/TransactionAllPaymentModel.php     |   3 -
 .../StaffApp/ScheduleListModel.php            |  25 ++
 WellnessLiving/Wl/WlPayProcessorSid.php       |  38 +-
 WellnessLiving/WlModelRequest.php             |   2 +-
 25 files changed, 602 insertions(+), 44 deletions(-)
 create mode 100644 WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php

diff --git a/WellnessLiving/Core/Drive/ImageUpload/ImageUploadModel.php b/WellnessLiving/Core/Drive/ImageUpload/ImageUploadModel.php
index 542776bf..d430c46e 100644
--- a/WellnessLiving/Core/Drive/ImageUpload/ImageUploadModel.php
+++ b/WellnessLiving/Core/Drive/ImageUpload/ImageUploadModel.php
@@ -8,6 +8,16 @@
  */
 class ImageUploadModel extends \WellnessLiving\Custom\Core\Drive\ImageUpload\ImageUploadModel
 {
+  /**
+   * Allows to give custom parameters which can be required for different types of images.
+   *
+   * @get get
+   * @post get
+   * @put get
+   * @var array
+   */
+  public $a_config = [];
+
   /**
    * Image information for every ID.
    *
diff --git a/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php b/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php
index 051b2db6..75020784 100644
--- a/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php
+++ b/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php
@@ -83,6 +83,11 @@ class ReportGeneratorStatusSid
    * * `READY` => `QUEUED` when user clicks to regenerate this report
    */
   const READY = 3;
+
+  /**
+   * @inheritDoc
+   */
+  const _TRANSLATION_CONTEXT = 'Wl.Report.Generator.ReportGeneratorStatusSid';
 }
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php b/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
index 32f40613..2116be84 100644
--- a/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
@@ -109,6 +109,24 @@ class AssetListModel extends WlModelAbstract
    */
   public $a_asset;
 
+  /**
+   * A list of reserved assets.
+   *
+   * 1st level keys refer to asset keys.
+   * 2nd level keys refer to asset numbers.
+   * Values is keys of appointment bookings that reserve the asset, or `true` if asset reserved by class/event.
+   *
+   * For example, if you want to check if the 10th asset with the key of '15' is reserved,
+   * you can check if `a_resource_busy['15']['10']` is free.
+   *
+   * If you're rebooking an appointment, check the value of `a_resource_busy['15']['10']`.
+   * If it's equal to the key of your current appointment booking, you can assume the asset is available.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_asset_busy = [];
+
   /**
    * The selected date and time of the asset booking. It is used in cases when the business booking policy allows
    * clients to select a date and time, and then the available asset.
diff --git a/WellnessLiving/Wl/Book/Process/Info/Info54Model.php b/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
index 825b6f17..3af1f388 100644
--- a/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
@@ -426,6 +426,18 @@ class Info54Model extends WlModelAbstract
    */
   public $is_card_authorize = false;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * Can client chooses several session per booking.
    *
diff --git a/WellnessLiving/Wl/Book/Process/Info/InfoModel.php b/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
index 8b4067d3..f2a3596c 100644
--- a/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
+++ b/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
@@ -425,6 +425,18 @@ class InfoModel extends WlModelAbstract
    */
   public $is_card_authorize = false;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * Can client chooses several session per booking.
    *
diff --git a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
index 561dd477..6afee7ca 100644
--- a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
@@ -327,6 +327,18 @@ class PaymentModel extends WlModelAbstract
    */
   public $is_card_authorize = false;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * `true` if user pressed 'Pay later'.
    * `false` if user pressed 'Pay now'.
diff --git a/WellnessLiving/Wl/Book/Process/Process54Model.php b/WellnessLiving/Wl/Book/Process/Process54Model.php
index 1ff97abf..ddc025b2 100644
--- a/WellnessLiving/Wl/Book/Process/Process54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process54Model.php
@@ -165,6 +165,18 @@ class Process54Model extends WlModelAbstract
    */
   public $is_card_authorize = false;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * If `true`, the session being booked is an event. Otherwise, this will be `false`.
    *
diff --git a/WellnessLiving/Wl/Book/Process/Process59Model.php b/WellnessLiving/Wl/Book/Process/Process59Model.php
index 1b177b98..a4ac5bb4 100644
--- a/WellnessLiving/Wl/Book/Process/Process59Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process59Model.php
@@ -164,6 +164,18 @@ class Process59Model extends WlModelAbstract
    */
   public $is_card_authorize = false;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * If `true`, the session being booked is an event. Otherwise, this will be `false`.
    *
diff --git a/WellnessLiving/Wl/Book/Process/ProcessModel.php b/WellnessLiving/Wl/Book/Process/ProcessModel.php
index 9badf706..de0c5f65 100644
--- a/WellnessLiving/Wl/Book/Process/ProcessModel.php
+++ b/WellnessLiving/Wl/Book/Process/ProcessModel.php
@@ -162,6 +162,18 @@ class ProcessModel extends WlModelAbstract
    */
   public $is_card_authorize = false;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * If `true`, the session being booked is an event. Otherwise, this will be `false`.
    *
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
index fc01f5d6..2b4831e9 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
@@ -380,6 +380,18 @@ class Purchase56Model extends WlModelAbstract
    */
   public $is_card_authorize = false;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * `true` if user pressed 'Pay later'.
    * `false` if user pressed 'Pay now'.
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
index dac237df..72b44bc4 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
@@ -383,6 +383,18 @@ class PurchaseModel extends WlModelAbstract
    */
   public $is_card_authorize = false;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * `true` if user pressed 'Pay later'.
    * `false` if user pressed 'Pay now'.
diff --git a/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php b/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
index ee1a070e..995d9fb4 100644
--- a/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
+++ b/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
@@ -195,6 +195,18 @@ class QuizModel extends WlModelAbstract
    */
   public $id_mode = 0;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * `true` if user pressed 'Pay later'.
    * `false` if user pressed 'Pay now'.
diff --git a/WellnessLiving/Wl/Book/Process/Relation/RelationModel.php b/WellnessLiving/Wl/Book/Process/Relation/RelationModel.php
index 524bf8b7..f36b27b5 100644
--- a/WellnessLiving/Wl/Book/Process/Relation/RelationModel.php
+++ b/WellnessLiving/Wl/Book/Process/Relation/RelationModel.php
@@ -54,6 +54,17 @@ class RelationModel extends WlModelAbstract
    */
   public $id_relation = 0;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * `true` - the new relative uses the email from <var>uid_from</var>.
    *
diff --git a/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php b/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
index d97ae183..33766c85 100644
--- a/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
@@ -259,6 +259,18 @@ class Resource54Model extends WlModelAbstract
    */
   public $id_mode = 0;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * `true` if user pressed 'Pay later'.
    * `false` if user pressed 'Pay now'.
diff --git a/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php b/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
index ec5da592..de728de0 100644
--- a/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
+++ b/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
@@ -258,6 +258,18 @@ class ResourceModel extends WlModelAbstract
    */
   public $id_mode = 0;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * `true` if user pressed 'Pay later'.
    * `false` if user pressed 'Pay now'.
diff --git a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
index 0df9c078..3d3640e6 100644
--- a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
+++ b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
@@ -178,6 +178,18 @@ class StoreModel extends WlModelAbstract
    */
   public $id_mode = 0;
 
+  /**
+   * Checking whether the client has a credit card (if configured in the business) will be skipped if this flag is set to `false`.
+   *
+   * Use this field with caution.
+   * The final booking will not use this flag and the check will still be performed.
+   *
+   * @get get
+   * @post get
+   * @var bool
+   */
+  public $is_credit_card_check = true;
+
   /**
    * `true` if user pressed 'Pay later'.
    * `false` if user pressed 'Pay now'.
diff --git a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
index 9de6708c..4107946a 100644
--- a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
@@ -56,7 +56,11 @@ class PaymentModel extends WlModelAbstract
    *         <dt>int <var>id_purchase_item</var></dt>
    *         <dd>The purchase type of the element. One of the {@link WlPurchaseItemSid} constants.</dd>
    *         <dt>string <var>k_id</var></dt>
-   *         <dd>The primary key of the element, depending on the element type.</dd></dl>
+   *         <dd>
+   *           The primary key of the element, depending on the element type.
+   *           Pay attention that if you add a product into gift card, there must be specified not product key but product option key.
+   *           Do not specify separate field `k_shop_product_option`.
+   *         </dd></dl>
    *       </dd>
    *       <dt>
    *         array [<var>a_uid_share</var>]
diff --git a/WellnessLiving/Wl/Classes/ClassView/ElementModel.php b/WellnessLiving/Wl/Classes/ClassView/ElementModel.php
index 028be518..ddf341d3 100644
--- a/WellnessLiving/Wl/Classes/ClassView/ElementModel.php
+++ b/WellnessLiving/Wl/Classes/ClassView/ElementModel.php
@@ -99,8 +99,8 @@ class ElementModel extends WlModelAbstract
    *   </dd>
    *   <dt>string <var>k_class</var></dt>
    *   <dd>The class key.</dd>
-   *   <dt>string<var>k_promotion_default</var>
-   *   <dd> Promotion key of the default promotion to use when paying for the class. `null` if no promotion is selected.
+   *   <dt>string<var>k_promotion_default</var></dt>
+   *   <dd> Promotion key of the default promotion to use when paying for the class. `null` if no promotion is selected.</dd>
    *   <dt>string <var>m_price</var></dt>
    *   <dd>Drop In price, if the class allows payment for one visit.</dd>
    *   <dt>bool <var>show_special_instructions</var></dt>
diff --git a/WellnessLiving/Wl/Integration/Autymate/ReportModel.php b/WellnessLiving/Wl/Integration/Autymate/ReportModel.php
index ebfa7798..f5acf84d 100644
--- a/WellnessLiving/Wl/Integration/Autymate/ReportModel.php
+++ b/WellnessLiving/Wl/Integration/Autymate/ReportModel.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Integration\Autymate;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Report\Generator\ReportGeneratorStatusSid;
 use WellnessLiving\Wl\WlPayMethodSid;
 
 /**
@@ -104,8 +103,6 @@ class ReportModel extends WlModelAbstract
   /**
    * The status of the report.
    *
-   * One of the {@link ReportGeneratorStatusSid} constants.
-   *
    * @get result
    * @var int
    */
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
index 667b9a63..d8c6e0b3 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
@@ -9,6 +9,7 @@
 
 /**
  * Displays information for certain sessions.
+ * Version of {@link AttendanceInfoModel} for access validation by security token.
  */
 class AttendanceInfoByTokenModel extends WlModelAbstract
 {
@@ -180,7 +181,7 @@ class AttendanceInfoByTokenModel extends WlModelAbstract
   public $dt_confirm = '';
 
   /**
-   * Start date of ste session in MySQL format in GMT.
+   * Start date of the session in MySQL format in GMT.
    *
    * @get result
    * @var string
@@ -359,6 +360,15 @@ class AttendanceInfoByTokenModel extends WlModelAbstract
    * @var string
    */
   public $text_token = '';
+
+  /**
+   * URL that leads directly to the class/event booking page in the Client Web App.
+   * Empty string if the service is an appointment reservation.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_booking;
 }
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php
new file mode 100644
index 00000000..a201ddc4
--- /dev/null
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php
@@ -0,0 +1,365 @@
+<?php
+
+namespace WellnessLiving\Wl\Login\Attendance;
+
+use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Schedule\Page\WlVisitNoteSid;
+use WellnessLiving\Wl\WlSaleSid;
+use WellnessLiving\Wl\WlServiceSid;
+
+/**
+ * Attendance list information.
+ */
+class AttendanceInfoModel extends WlModelAbstract
+{
+  /**
+   * Additional visit information about this appointment. Empty array if it's not an appointment:
+   * <dl>
+   *   <dt>bool <var>is_deny</var></dt>
+   *   <dd>`true` means that appointment was requested and denied by the staff.</dd>
+   *   <dt>bool <var>is_notify_request_accept</var></dt>
+   *   <dd>`true` means that the client will receive a notification, if appointment will be confirmed by the staff.</dd>
+   *   <dt>bool <var>is_notify_request_deny</var></dt>
+   *   <dd>`true` means that the client will receive a notification, if appointment will be denied by the staff.</dd>
+   *   <dt>bool <var>is_request</var></dt>
+   *   <dd>`true` means that appointment was requested, but not confirmed by the staff.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_appointment_visit_info = [];
+
+  /**
+   * Service logo information:
+   * <dl>
+   *   <dt>
+   *     bool <var>is_empty</var>
+   *   </dt>
+   *   <dd>
+   *     Whether service image is empty.
+   *   </dd>
+   *   <dt>
+   *     string <var>s_url</var>
+   *   </dt>
+   *   <dd>
+   *     Url link to image.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_logo;
+
+  /**
+   * Default purchase option information.
+   * <dl>
+   *   <dt>string? <var>id_sale</var></dt>
+   *   <dd>The sale item type, one of the {@link WlSaleSid} constants.
+   *   This will be `null` if the class has no default Purchase Option, or it sets to "Drop-in rate".</dd>
+   *   <dt>string? <var>k_id</var></dt>
+   *   <dd>The default Purchase Option key.
+   *   This will be `null` if the class has no default Purchase Option, or it sets to "Drop-in rate".</dd>
+   *   <dt>bool <var>is_single_default</var></dt>
+   *   <dd>If the default Purchase Option is set to "Drop-in rate" then the value will be `true`, `false` otherwise.</dd>
+   * </dl>
+   *
+   * @get result
+   * @var array
+   */
+  public $a_purchase_option_default = [];
+
+  /**
+   * Assets which are bound to this session.
+   *
+   * @get result
+   * @var string[]
+   */
+  public $a_resource;
+
+  /**
+   * Asset layouts of session:
+   * <dl>
+   *   <dt>
+   *     array <var>a_client</var>
+   *   </dt>
+   *   <dd>
+   *     List of clients who occupy assets of class.
+   *     It is a double nesting array.
+   *     Keys - primary keys of assets. Sub keys - asset index.
+   *     Values - sub array with keys:
+   *     <dl><dt>string <var>text_client</var></dt><dd>User's name.</dd>
+   *     <dt>string <var>uid</var></dt><dd>User's primary key.</dd></dl>
+   *   </dd>
+   *   <dt>
+   *     string[] <var>a_resource_available</var>
+   *   </dt>
+   *   <dd>
+   *     Key of asset.
+   *   </dd>
+   *   <dt>
+   *     string <var>k_resource_layout</var>
+   *   </dt>
+   *   <dd>
+   *     Key of layout.
+   *   </dd>
+   *   <dt>
+   *     string <var>text_resource_type</var>
+   *   </dt>
+   *   <dd>
+   *     Title of asset category.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_resource_layout;
+
+  /**
+   * List of staff members who provide service:
+   * <dl>
+   *   <dt>
+   *     array <var>a_logo</var>
+   *   </dt>
+   *   <dd>
+   *     Data of staff member's photo. Empty if staff has no photo. Otherwise contains next keys:
+   *     <dl>
+   *       <dt>
+   *         int <var>i_height</var>
+   *       </dt>
+   *       <dd>
+   *         Height in pixels.
+   *       </dd>
+   *       <dt>
+   *         int <var>i_width</var>
+   *       </dt>
+   *       <dd>
+   *         Width in pixels.
+   *       </dd>
+   *       <dt>
+   *         string <var>url_logo</var>
+   *       </dt>
+   *       <dd>
+   *         Image URL.
+   *       </dd>
+   *     </dl>
+   *   </dd>
+   *   <dt>
+   *     string <var>k_staff</var>
+   *   </dt>
+   *   <dd>
+   *     Staff key.
+   *   </dd>
+   *   <dt>
+   *     string <var>html_firstname</var>
+   *   </dt>
+   *   <dd>
+   *     Staff member's first name.
+   *   </dd>
+   *   <dt>
+   *     string <var>html_lastname</var>
+   *   </dt>
+   *   <dd>
+   *     Staff member's last name.
+   *   </dd>
+   * </dl>
+   *
+   * @get result
+   * @var array[]
+   */
+  public $a_staff;
+
+  /**
+   * Confirmation date+time of appointment in MySQL format. If client never confirmed, will be zero date + time.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_confirm = '';
+
+  /**
+   * Start date of the session in MySQL format in GMT.
+   *
+   * @get result
+   * @var string
+   */
+  public $dt_date_global;
+
+  /**
+   * Start date of the class in MySQL format in local time.
+   *
+   * @get get
+   * @var string
+   */
+  public $dt_date_local = '';
+
+  /**
+   * End date and time of the session in MySQL format in local timezone.
+   *
+   * @get result
+   * @var string
+   */
+  public $dtl_end = '';
+
+  /**
+   * End date and time of the session in MySQL format in GMT.
+   *
+   * @get result
+   * @var string
+   */
+  public $dtu_end = '';
+
+  /**
+   * Date and time in UTC when the visit is promoted from wait list to active list.
+   * Not empty for appointments.
+   *
+   * @get result
+   * @var string
+   */
+  public $dtu_wait_promote = '';
+
+  /**
+   * Whether notes added to visit.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_note;
+
+  /**
+   * Duration of the session in minutes.
+   *
+   * @get result
+   * @var int
+   */
+  public $i_duration;
+
+  /**
+   * Type of note. One of {@link WlVisitNoteSid} constants. <tt>false</tt> if notes not allowed.
+   *
+   * @get result
+   * @var int|false
+   */
+  public $id_note;
+
+  /**
+   * Service type, one of {@link WlServiceSid}.
+   *
+   * @get result
+   * @var int
+   */
+  public $id_service;
+
+  /**
+   * Whether this service be carried out in Zoom.
+   * <tt>true</tt> - If the service can be carried out in Zoom.
+   * <tt>false</tt> - otherwise.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_start_virtual_service = false;
+
+  /**
+   * ID of appointment to get information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_appointment = '0';
+
+  /**
+   * ID of business to get information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * Not empty if service is class or event reservation.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_class;
+
+  /**
+   * ID of class period to get information for.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_class_period = '0';
+
+  /**
+   * Location identifier.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_location;
+
+  /**
+   * Resource identifier.
+   * Not empty if service is asset reservation.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_resource;
+
+  /**
+   * Service identifier.
+   * Not empty if service is appointment reservation.
+   *
+   * @get result
+   * @var string
+   */
+  public $k_service;
+
+  /**
+   * Location name.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_location;
+
+  /**
+   * Time when service starts in format <tt>8:00AM</tt>.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_time_end;
+
+  /**
+   * Start time of the session in format '9:30AM'.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_time_start;
+
+  /**
+   * Title of the appointment.
+   *
+   * @get result
+   * @var string
+   */
+  public $text_title;
+
+  /**
+   * URL that leads directly to the class/event booking page in the Client Web App.
+   * Empty string if the service is an appointment reservation.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_booking;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Transaction/Report/TransactionAllPaymentModel.php b/WellnessLiving/Wl/Pay/Transaction/Report/TransactionAllPaymentModel.php
index 6d776353..8dd9c98d 100644
--- a/WellnessLiving/Wl/Pay/Transaction/Report/TransactionAllPaymentModel.php
+++ b/WellnessLiving/Wl/Pay/Transaction/Report/TransactionAllPaymentModel.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Pay\Transaction\Report;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Report\Generator\ReportGeneratorStatusSid;
 
 /**
  * Can retrieve information from the All Transactions Report.
@@ -91,8 +90,6 @@ class TransactionAllPaymentModel extends WlModelAbstract
   /**
    * The report status.
    *
-   * One of {@link ReportGeneratorStatusSid} constants.
-   *
    * @get result
    * @var int
    */
diff --git a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
index 7db7b8f5..1cc70346 100644
--- a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
+++ b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
@@ -24,6 +24,13 @@ class ScheduleListModel extends WlModelAbstract
    *     List of notes.
    *   </dd>
    *   <dt>
+   *     array[]|null <var>a_quiz</var>
+   *   </dt>
+   *   <dd>
+   *     List of quizzes.
+   *     `null` if no quizzes for schedule item.
+   *   </dd>
+   *   <dt>
    *     array <var>a_appointment_visit_info</var>
    *   </dt>
    *   <dd>
@@ -147,6 +154,12 @@ class ScheduleListModel extends WlModelAbstract
    *     The date/time of the session in local time.
    *   </dd>
    *   <dt>
+   *     bool <var>has_quiz_uncompleted</var>
+   *   </dt>
+   *   <dd>
+   *     `true` if has uncompleted quizzes, `false` otherwise.
+   *   </dd>
+   *   <dt>
    *     int <var>i_book</var>
    *   </dt>
    *   <dd>
@@ -273,6 +286,12 @@ class ScheduleListModel extends WlModelAbstract
    *     The name of the session.
    *   </dd>
    *   <dt>
+   *     bool <var>show_quiz_icon</var>
+   *   </dt>
+   *   <dd>
+   *     `true` when need show quiz icon, `false` otherwise.
+   *   </dd>
+   *   <dt>
    *     string <var>text_alert</var>
    *   </dt>
    *   <dd>
@@ -291,6 +310,12 @@ class ScheduleListModel extends WlModelAbstract
    *     The border color in hex representation as used on WellnessLiving.
    *   </dd>
    *   <dt>
+   *     string <var>text_quiz_title</var>
+   *   </dt>
+   *   <dd>
+   *     Title for quiz icon.
+   *   </dd>
+   *   <dt>
    *     bool<var>is_virtual_service</var>
    *   </dt>
    *   <dd>
diff --git a/WellnessLiving/Wl/WlPayProcessorSid.php b/WellnessLiving/Wl/WlPayProcessorSid.php
index 62ec2d34..b09bfe8d 100644
--- a/WellnessLiving/Wl/WlPayProcessorSid.php
+++ b/WellnessLiving/Wl/WlPayProcessorSid.php
@@ -4,43 +4,15 @@
 
 /**
  * A list of payment gateways or processors.
+ *
+ * Last ID: 12.
  */
-abstract class WlPayProcessorSid
+class WlPayProcessorSid
 {
   /**
-   * Payment gateway for `cybersource.com`.
+   * Payment gateway for Nuvei.
    */
-  const CYBER_SOURCE = 11;
-
-  /**
-   * Payment gateway for Direct Connect.
-   */
-  const DIRECT_CONNECT = 9;
-
-  /**
-   * Payment gateway for Lucy.
-   */
-  const LUCY = 2;
-
-  /**
-   * Payment gateway for Netbanx.
-   */
-  const NETBANX = 1;
-
-  /**
-   * Payment gateway for NMI.
-   */
-  const NMI = 6;
-
-  /**
-   * Payment gateway for {@link http://www.paychoice.com.au/ Paychoice}.
-   */
-  const PAYCHOICE = 7;
-
-  /**
-   * Payment gateway for `stripe.com`.
-   */
-  const STRIPE_COM = 10;
+  const NUVEI = 12;
 }
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 8ac14bb1..dcfe7a14 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241001.364657';
+  const VERSION='20241010.366441';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 5119d13e91308a81093d43e036a3f4c54e811d7a Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Mon, 14 Oct 2024 20:33:28 +0000
Subject: [PATCH 61/71] Automatic upgrade of the SDK. Build #366874.

---
 .../Studio/Task/Branch/BranchModel.php        | 86 +++++++++++++++++++
 .../Studio/Task/Branch/BranchStatusSid.php    | 43 ++++++++++
 .../Studio/Task/Branch/StandStatusSid.php     | 53 ++++++++++++
 .../Appointment/Book/Asset/AssetListModel.php |  3 +-
 .../Wl/Event/Book/EventView/ElementModel.php  |  6 +-
 .../Form/Response/ResponseListModel.php       | 12 +++
 .../StaffApp/ScheduleListModel.php            | 21 +++++
 WellnessLiving/WlModelRequest.php             |  2 +-
 8 files changed, 222 insertions(+), 4 deletions(-)
 create mode 100644 WellnessLiving/Studio/Task/Branch/BranchModel.php
 create mode 100644 WellnessLiving/Studio/Task/Branch/BranchStatusSid.php
 create mode 100644 WellnessLiving/Studio/Task/Branch/StandStatusSid.php

diff --git a/WellnessLiving/Studio/Task/Branch/BranchModel.php b/WellnessLiving/Studio/Task/Branch/BranchModel.php
new file mode 100644
index 00000000..f288ce62
--- /dev/null
+++ b/WellnessLiving/Studio/Task/Branch/BranchModel.php
@@ -0,0 +1,86 @@
+<?php
+
+namespace WellnessLiving\Studio\Task\Branch;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Runs a build for creation a new branch or delete an existing branch for the specified task.
+ */
+class BranchModel extends WlModelAbstract
+{
+  /**
+   * Information about entities necessary for the functioning of the stand.
+   *
+   * @get result
+   * @put result
+   * @var array|null
+   */
+  public $a_stand_data = null;
+
+  /**
+   * Mode of the <tt>BranchDelete</tt> build.
+   *
+   * @delete get
+   * @var int
+   */
+  public $id_build_mode = 1;
+
+  /**
+   * Stand status, one of {@link StandStatusSid}.
+   *
+   * @get result
+   * @put result
+   * @var int|null
+   */
+  public $id_stand_status = null;
+
+  /**
+   * Branch status, one of {@link BranchStatusSid}.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $id_status = null;
+
+  /**
+   * Deployment instance key which creates/deletes a branch for the specified task.
+   *
+   * @delete get
+   * @post get
+   * @var string
+   */
+  public $k_deploy_instance = '';
+
+  /**
+   * Task key within which a branch should be created/deleted.
+   *
+   * @delete get
+   * @get result
+   * @post get
+   * @var string
+   */
+  public $k_task = '';
+
+  /**
+   * Actor user UID key.
+   *
+   * @delete get
+   * @post get
+   * @var string
+   */
+  public $uid = '';
+
+  /**
+   * Url to build page.
+   *
+   * Empty string means that build is not started.
+   *
+   * @delete result
+   * @post result
+   * @var string
+   */
+  public $url_build = '';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Task/Branch/BranchStatusSid.php b/WellnessLiving/Studio/Task/Branch/BranchStatusSid.php
new file mode 100644
index 00000000..7d84e7a2
--- /dev/null
+++ b/WellnessLiving/Studio/Task/Branch/BranchStatusSid.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace WellnessLiving\Studio\Task\Branch;
+
+/**
+ * Branch statuses.
+ *
+ * Last used ID: 3.
+ */
+class BranchStatusSid
+{
+  /**
+   * The branch and all related things (catalogs in the repository, site) are being created now.
+   *
+   * This action is triggered from the task page on the Studio.
+   *
+   * The branch in this status may be transitioned to:
+   * * {@link BranchStatusSid::READY} in a case when creation is successfully completed;
+   * * {@link BranchStatusSid::DELETING} in a case when creation is not completed and the branch
+   *   should be deleted before repeatedly creation.
+   */
+  const CREATING = 1;
+
+  /**
+   * The branch and all related things (catalogs in the repository, site) are being deleted now.
+   *
+   * This action is triggered from the task page on the Studio.
+   *
+   * The branch in this status may be only deleted from the database.
+   */
+  const DELETING = 3;
+
+  /**
+   * The branch and all related things (catalogs in the repository, site) are ready to use.
+   *
+   * This action is triggered from <tt>BranchCreate</tt> build.
+   *
+   * The branch in this status may be transitioned only to {@link BranchStatusSid::DELETING}.
+   */
+  const READY = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Task/Branch/StandStatusSid.php b/WellnessLiving/Studio/Task/Branch/StandStatusSid.php
new file mode 100644
index 00000000..03748868
--- /dev/null
+++ b/WellnessLiving/Studio/Task/Branch/StandStatusSid.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace WellnessLiving\Studio\Task\Branch;
+
+/**
+ * Stand statuses.
+ *
+ * Last used ID: 4.
+ */
+class StandStatusSid
+{
+  /**
+   * Stand is in creation process.
+   *
+   * The stand in this status may be transitioned to:
+   * * * {@link StandStatusSid::READY} in a case when creation is successfully completed.
+   * * * {@link StandStatusSid::ERROR} in a case when creation was failed with error.
+ */
+  const CREATION = 1;
+
+  /**
+   * Stand is in deletion process.
+   *
+   * The stand in this status may be transitioned to:
+   * * * {@link StandStatusSid::NOT_EXIST} in a case when deletion is successfully completed.
+   * * * {@link StandStatusSid::ERROR} in a case when deletion was failed with error.
+   */
+  const DELETION = 3;
+
+  /**
+   * Creating or deleting a stand resulted in an error
+   *
+   * The stand in this status may be transitioned to:
+   * * * {@link StandStatusSid::NOT_EXIST} if the creation or deletion process has not been completed, we must delete the stand.
+   */
+  const ERROR = 4;
+
+  /**
+   * Stand has not been created.
+   *
+   * The stand in this status may be transitioned only to {@link StandStatusSid::CREATION}.
+   */
+  const NOT_EXIST = 0;
+
+  /**
+   * Stand was created and ready for use.
+   *
+   * The stand in this status may be transitioned only to {@link StandStatusSid::DELETION}.
+   */
+  const READY = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php b/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
index 2116be84..585fbf8b 100644
--- a/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
@@ -114,7 +114,8 @@ class AssetListModel extends WlModelAbstract
    *
    * 1st level keys refer to asset keys.
    * 2nd level keys refer to asset numbers.
-   * Values is keys of appointment bookings that reserve the asset, or `true` if asset reserved by class/event.
+   * Values is keys of appointment bookings that reserve the asset, primary keys in {@link \RsAppointmentSql} table,
+   * or `true` if asset reserved by class/event.
    *
    * For example, if you want to check if the 10th asset with the key of '15' is reserved,
    * you can check if `a_resource_busy['15']['10']` is free.
diff --git a/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php b/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
index 118db739..e0f919d5 100644
--- a/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
+++ b/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
@@ -178,7 +178,7 @@ class ElementModel extends WlModelAbstract
    *     bool <var>is_virtual</var>
    *   </dt>
    *   <dd>
-   *     This will be `true` if the session is not held in person but offered remotely. If will be `false` otherwise.
+   *     This will be `true` if the session is not held in person but offered remotely. It will be `false` otherwise.
    *   </dd>
    *   <dt>
    *     string <var>f_price</var>
@@ -247,7 +247,9 @@ class ElementModel extends WlModelAbstract
    *
    * <dl>
    *   <dt>int <var>i_count</var></dt>
-   *   <dd>The number of visits.</dd>
+   *   <dd>The number of visits required.</dd>
+   *   <dt>int <var>i_has</var></dt>
+   *   <dd>The number of visits the client has already attended.</dd>
    *   <dt>bool <var>is_event</var></dt>
    *   <dd>`true` if this is an event, `false` if this is a class.</dd>
    *   <dt>string <var>k_class</var></dt>
diff --git a/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php b/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
index 581806e2..4f78bc70 100644
--- a/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
+++ b/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
@@ -13,6 +13,12 @@ class ResponseListModel extends WlModelAbstract
 {
   /**
    * The list of uncompleted quiz responses. Each element has the next structure: <dl>
+   *  <dt>string[] <var>a_visit</var></dt>
+   *  <dd>
+   *    List of visit keys associated with uncompleted response.
+   *    Key is visit key.
+   *    Value is date of visit.
+   *  </dd>
    *  <dt>string <var>dtl_date</var></dt>
    *  <dd>The date of the request to fill out a quiz form.</dd>
    *  <dt>int <var>id_source</var></dt>
@@ -43,6 +49,12 @@ class ResponseListModel extends WlModelAbstract
 
   /**
    * The list of completed quiz responses. Each element has the next structure: <dl>
+   *  <dt>string[] <var>a_visit</var></dt>
+   *  <dd>
+   *    List of visit keys associated with uncompleted response.
+   *    Key is visit key.
+   *    Value is date of visit.
+   *  </dd>
    *  <dt>string <var>dtl_date</var></dt>
    *  <dd>The date of the request to fill out a quiz form.</dd>
    *  <dt>int <var>id_source</var></dt>
diff --git a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
index 1cc70346..e3a92124 100644
--- a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
+++ b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Wl\Schedule\ScheduleList\StaffApp;
 
+use WellnessLiving\Core\Quiz\ResponseStatusSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Schedule\Design\OptionSid;
 use WellnessLiving\Wl\Visit\WlVisitSid;
@@ -28,6 +29,26 @@ class ScheduleListModel extends WlModelAbstract
    *   </dt>
    *   <dd>
    *     List of quizzes.
+   *     Has next structure:
+   *     <dl>
+   *       <dt>bool <var>id_status</var></dt>
+   *       <dd>
+   *         Response status ID. One of {@link ResponseStatusSid} constants.
+   *       </dd>
+   *       <dt>bool <var>is_hide</var></dt>
+   *       <dd>Whether it's hidden. `true` quiz is hidden, `false` otherwise.</dd>
+   *       <dt>bool <var>is_require</var></dt>
+   *       <dd>Whether it's required. `true` quiz is required, `false` otherwise.</dd>
+   *       <dt>string <var>k_quiz</var></dt>
+   *
+   *       <dt>string <var>k_quiz_login</var></dt>
+   *
+   *       <dt>string <var>k_quiz_response</var></dt>
+   *
+   *       <dt>string <var>text_title</var></dt>
+   *       <dd>Quiz title.</dd>
+   *     </dl>
+   *
    *     `null` if no quizzes for schedule item.
    *   </dd>
    *   <dt>
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index dcfe7a14..59465f2f 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241010.366441';
+  const VERSION='20241014.366874';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 8048efd241d0c27ed0ed77b55d8e8d64af1885f3 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 15 Oct 2024 20:03:23 +0000
Subject: [PATCH 62/71] Automatic upgrade of the SDK. Build #367316.

---
 .../Studio/Task/Branch/BranchModel.php        |  9 ++---
 .../Wl/Pay/Form/EnvironmentModel.php          |  3 +-
 WellnessLiving/Wl/WlPayProcessorSid.php       | 35 +++++++++++++++++++
 WellnessLiving/WlModelRequest.php             |  2 +-
 4 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/WellnessLiving/Studio/Task/Branch/BranchModel.php b/WellnessLiving/Studio/Task/Branch/BranchModel.php
index f288ce62..64a863f9 100644
--- a/WellnessLiving/Studio/Task/Branch/BranchModel.php
+++ b/WellnessLiving/Studio/Task/Branch/BranchModel.php
@@ -13,7 +13,7 @@ class BranchModel extends WlModelAbstract
    * Information about entities necessary for the functioning of the stand.
    *
    * @get result
-   * @put result
+   * @put get
    * @var array|null
    */
   public $a_stand_data = null;
@@ -29,8 +29,8 @@ class BranchModel extends WlModelAbstract
   /**
    * Stand status, one of {@link StandStatusSid}.
    *
-   * @get result
-   * @put result
+   * @get get,result
+   * @put get
    * @var int|null
    */
   public $id_stand_status = null;
@@ -56,8 +56,9 @@ class BranchModel extends WlModelAbstract
    * Task key within which a branch should be created/deleted.
    *
    * @delete get
-   * @get result
+   * @get get,result
    * @post get
+   * @put get
    * @var string
    */
   public $k_task = '';
diff --git a/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php b/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
index a66b17f8..650ed301 100644
--- a/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
+++ b/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
@@ -6,7 +6,6 @@
 use WellnessLiving\Core\a\ACardSystemSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\WlPayMethodSid;
-use WellnessLiving\Wl\WlPayProcessorSid;
 
 /**
  * Gets information about payment environments.
@@ -78,7 +77,7 @@ class EnvironmentModel extends WlModelAbstract
    *     `null` if this payment processor does not support public keys.
    *   </dd>
    *   <dt>int <var>id_pay_processor</var></dt>
-   *   <dd>ID of the payment processor. One of {@link WlPayProcessorSid} constants.</dd>
+   *   <dd>ID of the payment processor.</dd>
    *   <dt>string <var>k_business_merchant</var></dt>
    *   <dd>Key of the business merchant.</dd>
    * </dl>
diff --git a/WellnessLiving/Wl/WlPayProcessorSid.php b/WellnessLiving/Wl/WlPayProcessorSid.php
index b09bfe8d..698d6b15 100644
--- a/WellnessLiving/Wl/WlPayProcessorSid.php
+++ b/WellnessLiving/Wl/WlPayProcessorSid.php
@@ -9,10 +9,45 @@
  */
 class WlPayProcessorSid
 {
+  /**
+   * Payment gateway for `cybersource.com`.
+   */
+  const CYBER_SOURCE = 11;
+
+  /**
+   * Payment gateway for Direct Connect.
+   */
+  const DIRECT_CONNECT = 9;
+
+  /**
+   * Payment gateway for Lucy.
+   */
+  const LUCY = 2;
+
+  /**
+   * Payment gateway for Netbanx.
+   */
+  const NETBANX = 1;
+
+  /**
+   * Payment gateway for NMI.
+   */
+  const NMI = 6;
+
   /**
    * Payment gateway for Nuvei.
    */
   const NUVEI = 12;
+
+  /**
+   * Payment gateway for {@link http://www.paychoice.com.au/ Paychoice}.
+   */
+  const PAYCHOICE = 7;
+
+  /**
+   * Payment gateway for `stripe.com`.
+   */
+  const STRIPE_COM = 10;
 }
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 59465f2f..9c01ac61 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241014.366874';
+  const VERSION='20241015.367316';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 41731e202490e136787b4f3f15ee903daf857bb8 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 16 Oct 2024 21:34:11 +0000
Subject: [PATCH 63/71] Automatic upgrade of the SDK. Build #367735.

---
 .../Studio/Task/Branch/BranchModel.php        |  2 +-
 .../Studio/Task/Branch/StandStatusSid.php     | 12 +++----
 WellnessLiving/Wl/Location/Flag/FlagModel.php | 32 ++++++++++++++++++-
 WellnessLiving/WlModelRequest.php             |  2 +-
 4 files changed, 39 insertions(+), 9 deletions(-)

diff --git a/WellnessLiving/Studio/Task/Branch/BranchModel.php b/WellnessLiving/Studio/Task/Branch/BranchModel.php
index 64a863f9..db1d1e41 100644
--- a/WellnessLiving/Studio/Task/Branch/BranchModel.php
+++ b/WellnessLiving/Studio/Task/Branch/BranchModel.php
@@ -14,7 +14,7 @@ class BranchModel extends WlModelAbstract
    *
    * @get result
    * @put get
-   * @var array|null
+   * @var array|false|null
    */
   public $a_stand_data = null;
 
diff --git a/WellnessLiving/Studio/Task/Branch/StandStatusSid.php b/WellnessLiving/Studio/Task/Branch/StandStatusSid.php
index 03748868..9c37964e 100644
--- a/WellnessLiving/Studio/Task/Branch/StandStatusSid.php
+++ b/WellnessLiving/Studio/Task/Branch/StandStatusSid.php
@@ -5,7 +5,7 @@
 /**
  * Stand statuses.
  *
- * Last used ID: 4.
+ * Last used ID: 5.
  */
 class StandStatusSid
 {
@@ -16,7 +16,7 @@ class StandStatusSid
    * * * {@link StandStatusSid::READY} in a case when creation is successfully completed.
    * * * {@link StandStatusSid::ERROR} in a case when creation was failed with error.
  */
-  const CREATION = 1;
+  const CREATION = 2;
 
   /**
    * Stand is in deletion process.
@@ -25,7 +25,7 @@ class StandStatusSid
    * * * {@link StandStatusSid::NOT_EXIST} in a case when deletion is successfully completed.
    * * * {@link StandStatusSid::ERROR} in a case when deletion was failed with error.
    */
-  const DELETION = 3;
+  const DELETION = 4;
 
   /**
    * Creating or deleting a stand resulted in an error
@@ -33,21 +33,21 @@ class StandStatusSid
    * The stand in this status may be transitioned to:
    * * * {@link StandStatusSid::NOT_EXIST} if the creation or deletion process has not been completed, we must delete the stand.
    */
-  const ERROR = 4;
+  const ERROR = 5;
 
   /**
    * Stand has not been created.
    *
    * The stand in this status may be transitioned only to {@link StandStatusSid::CREATION}.
    */
-  const NOT_EXIST = 0;
+  const NOT_EXIST = 1;
 
   /**
    * Stand was created and ready for use.
    *
    * The stand in this status may be transitioned only to {@link StandStatusSid::DELETION}.
    */
-  const READY = 2;
+  const READY = 3;
 }
 
 ?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Location/Flag/FlagModel.php b/WellnessLiving/Wl/Location/Flag/FlagModel.php
index 927176b0..0990c168 100644
--- a/WellnessLiving/Wl/Location/Flag/FlagModel.php
+++ b/WellnessLiving/Wl/Location/Flag/FlagModel.php
@@ -18,11 +18,40 @@ class FlagModel extends WlModelAbstract
    * </dl>
    * <tt>null</tt> until loaded or when <var>a_uid</var> was not set.
    *
+   * @depreated This is old property, which is left for back-compatibility. Use {@link FlagModel::$a_restrictions_multiple} instead.
    * @get result
    * @var array
    */
   public $a_flag;
 
+  /**
+   * Array, where keys are UIDs to be checked and values are same as {@link FlagModel::$a_restrictions_single}.
+   * <tt>null</tt> if user is not flagged in the location.
+   *
+   * This field is set, if API gets {@link FlagModel::$a_uid} and not {@link FlagModel::$uid} properties.
+   *
+   * @get result
+   * @var array|null
+   */
+  public $a_restrictions_multiple = null;
+
+  /**
+   * <dl>
+   *   <dt>bool <var>is_book</var></dt>
+   *   <dd>`true` if client cannot make new reservations.</dd>
+   *   <dt>bool <var>is_purchase</var></dt>
+   *   <dd>`true` if client cannot make new purchases.</dd>
+   * </dl>
+   *
+   * <tt>null</tt> if user is not flagged in the location.
+   *
+   * This field is set, if API gets {@link FlagModel::$uid} and not {@link FlagModel::$a_uid} properties.
+   *
+   * @get result
+   * @var array|null
+   */
+  public $a_restrictions_single = null;
+
   /**
    * User keys.
    * <tt>null</tt> if not set.
@@ -33,10 +62,11 @@ class FlagModel extends WlModelAbstract
   public $a_uid;
 
   /**
-   * <tt>true</tt> if the user is flagged, <tt>false</tt> if otherwise.
+   * <tt>true</tt> if the user is flagged and can make purchases, but cannot make new reservations, <tt>false</tt> if otherwise.
    *
    * <tt>null</tt> until loaded or when {@link FlagModel::$a_uid} was not set.
    *
+   * @depreated This is old property, which is left for back-compatibility. Use {@link FlagModel::$a_restrictions_single} instead.
    * @get result
    * @var bool
    */
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 9c01ac61..70d7c639 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241015.367316';
+  const VERSION='20241016.367735';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 8d79d5e89878ada8c7bc4bbebc37f178a4aad941 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 22 Oct 2024 12:50:04 +0000
Subject: [PATCH 64/71] Automatic upgrade of the SDK. Build #368721.

---
 .../Studio/Microservice/Editor/ListModel.php  |  6 +-
 .../Studio/Task/Branch/BranchModel.php        |  2 +-
 .../Wl/Profile/Alert/AlertModel.php           | 12 ++++
 .../Roster/AttendanceListBookModel.php        | 70 +++++++++++++++++++
 WellnessLiving/WlModelRequest.php             |  2 +-
 5 files changed, 89 insertions(+), 3 deletions(-)
 create mode 100644 WellnessLiving/Wl/Reception/Roster/AttendanceListBookModel.php

diff --git a/WellnessLiving/Studio/Microservice/Editor/ListModel.php b/WellnessLiving/Studio/Microservice/Editor/ListModel.php
index 69cbe473..0ec8befe 100644
--- a/WellnessLiving/Studio/Microservice/Editor/ListModel.php
+++ b/WellnessLiving/Studio/Microservice/Editor/ListModel.php
@@ -23,16 +23,20 @@ class ListModel extends WlModelAbstract
    *   <dd>Project key.</dd>
    *   <dt>string <var>s_file</var></dt>
    *   <dd>File name.</dd>
+   *   <dt>string <var>s_variable</var></dt>
+   *   <dd>Microservice-specific variables. A set of pairs key=value, separated by newlines.</dd>
    *   <dt>string <var>text_project</var></dt>
    *   <dd>Title of the project.</dd>
    *   <dt>string <var>text_title</var></dt>
    *   <dd>Title of the microservice.</dd>
+   *   <dt>string <var>url_microservice_promoting</var></dt>
+   *   <dd>URL of the promoting page for this microservice.</dd>
    * </dl>
    *
    * @get result
    * @var string[][]
    */
-  public $a_list = [];
+  public $a_list;
 
   /**
    * Specifies whether to show removed and/or not removed microservices.
diff --git a/WellnessLiving/Studio/Task/Branch/BranchModel.php b/WellnessLiving/Studio/Task/Branch/BranchModel.php
index db1d1e41..b0d9b75f 100644
--- a/WellnessLiving/Studio/Task/Branch/BranchModel.php
+++ b/WellnessLiving/Studio/Task/Branch/BranchModel.php
@@ -14,7 +14,7 @@ class BranchModel extends WlModelAbstract
    *
    * @get result
    * @put get
-   * @var array|false|null
+   * @var array|string|null
    */
   public $a_stand_data = null;
 
diff --git a/WellnessLiving/Wl/Profile/Alert/AlertModel.php b/WellnessLiving/Wl/Profile/Alert/AlertModel.php
index 0854fb63..3f53331c 100644
--- a/WellnessLiving/Wl/Profile/Alert/AlertModel.php
+++ b/WellnessLiving/Wl/Profile/Alert/AlertModel.php
@@ -79,12 +79,24 @@ class AlertModel extends WlModelAbstract
    *     The date and time in MySQL format in local time when the warning was last modified.
    *   </dd>
    *   <dt>
+   *     bool <var>is_book_restricted</var>
+   *   </dt>
+   *   <dd>
+   *     `true` means that client is restricted to make bookings, `false` - otherwise.
+   *   </dd>
+   *   <dt>
    *     bool <var>is_flag</var>
    *   </dt>
    *   <dd>
    *     This will be `true` if the client is flagged. Otherwise, this will be `false`.
    *   </dd>
    *   <dt>
+   *     bool <var>is_purchase_restricted</var>
+   *   </dt>
+   *   <dd>
+   *     `true` means that client is restricted to make purchases. Otherwise, this will be `false`.
+   *   </dd>
+   *   <dt>
    *     bool <var>is_today</var>
    *   </dt>
    *   <dd>
diff --git a/WellnessLiving/Wl/Reception/Roster/AttendanceListBookModel.php b/WellnessLiving/Wl/Reception/Roster/AttendanceListBookModel.php
new file mode 100644
index 00000000..35fac3fe
--- /dev/null
+++ b/WellnessLiving/Wl/Reception/Roster/AttendanceListBookModel.php
@@ -0,0 +1,70 @@
+<?php
+
+namespace WellnessLiving\Wl\Reception\Roster;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Book a class for a client using the Attendance Kiosk.
+ */
+class AttendanceListBookModel extends WlModelAbstract
+{
+  /**
+   * The UTC datetime for the class in MySQL format.
+   *
+   * @post post
+   * @var string
+   */
+  public $dtu_date = '';
+
+  /**
+   * `true` if the client is on the waitlist for the class, `false` if they are on the class list.
+   *
+   * @post result
+   * @var bool
+   */
+  public $is_wait;
+
+  /**
+   * The business key.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The class period key.
+   *
+   * @post post
+   * @var string
+   */
+  public $k_class_period = '';
+
+  /**
+   * The secret for authenticating the attendance kiosk.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_secret = '';
+
+  /**
+   * The status message displayed on a successful booking.
+   * Describes whether client was put in class list or waitlist.
+   *
+   * @post result
+   * @var string
+   */
+  public $text_message;
+
+  /**
+   * The client's user key.
+   *
+   * @post post
+   * @var string
+   */
+  public $uid = '';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 70d7c639..49dde361 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241016.367735';
+  const VERSION='20241022.368721';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From c73315df0be2480bfca18693c96f1019206160d3 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 23 Oct 2024 12:22:49 +0000
Subject: [PATCH 65/71] Automatic upgrade of the SDK. Build #368955.

---
 .../Passport/Login/Enter/PassportOtpModel.php | 58 +++++++++++++++++++
 WellnessLiving/WlModelRequest.php             |  2 +-
 2 files changed, 59 insertions(+), 1 deletion(-)
 create mode 100644 WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php

diff --git a/WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php b/WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php
new file mode 100644
index 00000000..5366f229
--- /dev/null
+++ b/WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace WellnessLiving\Wl\Passport\Login\Enter;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Entry point to verify user authorization by email and phone number via sending and checking otp code.
+ */
+class PassportOtpModel extends WlModelAbstract
+{
+  /**
+   * Whether OTP code will be sending to user via email.
+   * `true` if OTP code is sending through email,
+   * `false` if OTP code is sending through phone number.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_mail = false;
+
+  /**
+   * Whether OTP code will be sending to user via email.
+   *  `true` if OTP code is sending through phone number,
+   *  `false` if OTP code is sending through email.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_phone = false;
+
+  /**
+   * Business key.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * Otp code integer that was random generated.
+   *
+   * @post post
+   * @var string
+   */
+  public $s_otp_code = '';
+
+  /**
+   * User key.
+   *
+   * @get get
+   * @post get
+   * @var string
+   */
+  public $uid = '';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 49dde361..34ac5cd4 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241022.368721';
+  const VERSION='20241023.368955';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From bcc9ce3c40879e555f6961a8cddb8a0eb8cf9532 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 23 Oct 2024 12:24:41 +0000
Subject: [PATCH 66/71] Automatic upgrade of the SDK. Build #368960.

---
 WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php | 2 ++
 WellnessLiving/Wl/Profile/ProfileCreateModel.php            | 2 ++
 WellnessLiving/WlModelRequest.php                           | 2 +-
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php b/WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php
index 5366f229..03016098 100644
--- a/WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php
+++ b/WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php
@@ -6,6 +6,8 @@
 
 /**
  * Entry point to verify user authorization by email and phone number via sending and checking otp code.
+ *
+ * @sdk
  */
 class PassportOtpModel extends WlModelAbstract
 {
diff --git a/WellnessLiving/Wl/Profile/ProfileCreateModel.php b/WellnessLiving/Wl/Profile/ProfileCreateModel.php
index 7c7d5812..6811357a 100644
--- a/WellnessLiving/Wl/Profile/ProfileCreateModel.php
+++ b/WellnessLiving/Wl/Profile/ProfileCreateModel.php
@@ -6,6 +6,8 @@
 
 /**
  * Creates user profile with minimum fields.
+ *
+ * @sdk
  */
 class ProfileCreateModel extends WlModelAbstract
 {
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 34ac5cd4..529198b1 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241023.368955';
+  const VERSION='20241023.368960';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From a99659154d114bdcd2530948c383562dbe362217 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Thu, 24 Oct 2024 10:29:15 +0000
Subject: [PATCH 67/71] Automatic upgrade of the SDK. Build #369196.

---
 .../Wl/Login/Search/ConcertoModel.php         | 43 ++++++++++++
 .../Roster/AttendanceListAttendModel.php      | 69 +++++++++++++++++++
 WellnessLiving/WlModelRequest.php             |  2 +-
 3 files changed, 113 insertions(+), 1 deletion(-)
 create mode 100644 WellnessLiving/Wl/Login/Search/ConcertoModel.php
 create mode 100644 WellnessLiving/Wl/Reception/Roster/AttendanceListAttendModel.php

diff --git a/WellnessLiving/Wl/Login/Search/ConcertoModel.php b/WellnessLiving/Wl/Login/Search/ConcertoModel.php
new file mode 100644
index 00000000..3b6916e8
--- /dev/null
+++ b/WellnessLiving/Wl/Login/Search/ConcertoModel.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace WellnessLiving\Wl\Login\Search;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Point for business Concerto to search a user by mail or phone.
+ */
+class ConcertoModel extends WlModelAbstract
+{
+  /**
+   * Business to search user in.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * Email to search.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_mail = '';
+
+  /**
+   * Phone to search.
+   *
+   * @get get
+   * @var string
+   */
+  public $text_phone = '';
+
+  /**
+   * @get result
+   * @var string
+   */
+  public $uid;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Reception/Roster/AttendanceListAttendModel.php b/WellnessLiving/Wl/Reception/Roster/AttendanceListAttendModel.php
new file mode 100644
index 00000000..35bce2c6
--- /dev/null
+++ b/WellnessLiving/Wl/Reception/Roster/AttendanceListAttendModel.php
@@ -0,0 +1,69 @@
+<?php
+
+namespace WellnessLiving\Wl\Reception\Roster;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Book a class for a client and mark as attended using the Attendance Kiosk.
+ */
+class AttendanceListAttendModel extends WlModelAbstract
+{
+  /**
+   * The UTC datetime for the class in MySQL format.
+   *
+   * @post get
+   * @var string
+   */
+  public $dtu_date = '';
+
+  /**
+   * The business key.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_business = '';
+
+  /**
+   * The class period key.
+   *
+   * @post get
+   * @var string
+   */
+  public $k_class_period = '';
+
+  /**
+   * The visit key.
+   *
+   * @post result
+   * @var string
+   */
+  public $k_visit;
+
+  /**
+   * The secret for authenticating the attendance kiosk.
+   *
+   * @post get
+   * @var string
+   */
+  public $s_secret = '';
+
+  /**
+   * The status message displayed on a successful check-in.
+   *
+   * @post result
+   * @var string
+   */
+  public $text_message;
+
+  /**
+   * The client's user key.
+   *
+   * @post get
+   * @var string
+   */
+  public $uid = '';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 529198b1..c4c68d17 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241023.368960';
+  const VERSION='20241024.369196';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 9a1dfdea43cccf0a33e70e6b26436ba6477b3f11 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Tue, 12 Nov 2024 19:21:31 +0000
Subject: [PATCH 68/71] Automatic upgrade of the SDK. Build #373241.

---
 WellnessLiving/Core/Drive/DriveTypeSid.php    |  31 ---
 .../ImageUpload/ImageUploadTemporaryModel.php |   3 +-
 WellnessLiving/Core/Geo/ComboboxModel.php     |   3 -
 .../Core/Geo/Region/RegionModel.php           |   3 +-
 WellnessLiving/Core/Locale/CurrencySid.php    |  94 ---------
 WellnessLiving/Core/Locale/LocaleSid.php      |  88 --------
 WellnessLiving/Core/Sid/SortOrderSid.php      |  21 --
 WellnessLiving/Core/Sid/YesNoSid.php          |  21 --
 .../Studio/Deploy/Cluster/ClusterModel.php    |   8 +
 .../Studio/Ip/Service/EditModel.php           |   4 -
 .../Studio/Ip/Service/ServiceTimeoutSid.php   |  33 ---
 .../Studio/Ip/Service/ServiceTypeSid.php      |  44 ----
 .../Studio/Microservice/Editor/ListModel.php  |   5 +-
 .../Task/Branch/BranchDeleteModeSid.php       |  26 ---
 .../Studio/Task/Branch/BranchModel.php        |  13 --
 .../Studio/Task/Branch/BranchStatusSid.php    |  43 ----
 .../Studio/Task/Branch/StandStatusSid.php     |  53 -----
 .../Generator/ReportGeneratorStatusSid.php    |  93 ---------
 .../Wl/Announcement/AnnouncementListModel.php |   2 -
 .../Appointment/Book/Asset/AssetListModel.php |   9 +-
 .../Book/Asset/Service/ServiceModel.php       |   3 -
 .../Appointment/Book/Finish/Finish47Model.php |   3 +-
 .../Appointment/Book/Finish/FinishModel.php   |   6 +-
 .../Book/Finish/FinishMultipleModel.php       |   6 +-
 .../Appointment/Book/Payment/PaymentModel.php |   3 +-
 .../Book/Payment/PaymentMultipleModel.php     |   6 +-
 .../Book/Payment/PaymentPostModel.php         |   3 +-
 .../Book/Product/Product62Model.php           |  10 +-
 .../Book/Purchase/PurchaseModel.php           |   3 +-
 .../Book/Service/ServiceList52Model.php       |   3 +-
 .../Book/Service/ServiceListModel.php         |   3 +-
 .../Wl/Appointment/Book/Staff/ListModel.php   |  10 +
 .../Wl/Book/Process/Frequency/RepeatModel.php |  25 ++-
 .../Wl/Book/Process/Info/Info54Model.php      |   6 +-
 .../Wl/Book/Process/Info/InfoModel.php        |   3 +-
 .../Wl/Book/Process/Payment/PaymentModel.php  |   3 +-
 .../Wl/Book/Process/Process54Model.php        |   9 +-
 .../Wl/Book/Process/Process59Model.php        |   7 +-
 .../Wl/Book/Process/ProcessModel.php          |   4 +-
 .../Wl/Book/Process/ProcessSpaSid.php         | 102 ----------
 .../Book/Process/Purchase/Purchase56Model.php |   3 +-
 .../Book/Process/Purchase/PurchaseModel.php   |   3 +-
 .../Wl/Book/Process/Quiz/QuizModel.php        |   3 +-
 .../Book/Process/Resource/Resource54Model.php |   6 +-
 .../Book/Process/Resource/ResourceModel.php   |   3 +-
 .../Wl/Book/Process/Store/StoreModel.php      |   3 +-
 WellnessLiving/Wl/Business/BusinessModel.php  |   2 -
 WellnessLiving/Wl/Business/DataModel.php      |   4 -
 .../BusinessFranchiseLocationFormSid.php      |  41 ----
 .../BusinessFranchiseLocationModel.php        |   4 -
 .../Location/BusinessFranchiseLocationSid.php |  34 ----
 .../CatalogList/CatalogProductModel.php       |   7 +-
 .../Wl/Catalog/CatalogList/ElementModel.php   |   5 +-
 .../Wl/Catalog/Payment/PaymentModel.php       |   3 +-
 .../Wl/Catalog/PurchaseOptionViewSid.php      |  65 ------
 .../StaffApp/CatalogList/CatalogListModel.php |   3 +-
 .../Wl/Classes/Period/Clients/Model.php       |  75 +++++++
 WellnessLiving/Wl/Classes/RequirePaySid.php   |  32 ---
 WellnessLiving/Wl/Classes/Tab/TabSid.php      |  33 ---
 WellnessLiving/Wl/Collector/DebtListModel.php |   3 +-
 WellnessLiving/Wl/Collector/DebtPayModel.php  |   2 -
 .../Wl/Coupon/CouponList/ListModel.php        |   3 +-
 .../Wl/Coupon/PurchaseRestrictionSid.php      |  28 ---
 WellnessLiving/Wl/Coupon/WlTypeSid.php        |  30 ---
 .../Wl/Event/Book/EventView/ElementModel.php  |   9 +-
 WellnessLiving/Wl/Event/EventListModel.php    |   7 +-
 WellnessLiving/Wl/Field/WlFieldGeneralSid.php |   4 +-
 .../Autymate/AutymateAccessModeSid.php        |  21 --
 .../Autymate/AutymateActivateModel.php        |   4 -
 .../Autymate/AutymateStatusSid.php            |  21 --
 .../Wl/Login/Attendance/Add/AddModel.php      |   7 +-
 .../Wl/Login/Attendance/AddOptionSid.php      |  26 ---
 .../Attendance/AttendanceInfoByTokenModel.php |   3 +-
 .../Login/Attendance/AttendanceInfoModel.php  |   3 +-
 .../Attendance/AttendanceListByTokenModel.php |   3 +-
 .../Login/Attendance/AttendanceListModel.php  |   3 +-
 .../Wl/Login/Member/MemberValidate63Model.php | 110 ++++++++++
 .../Wl/Login/Member/MemberValidateModel.php   |   2 +
 .../Login/Promotion/Convert/ConvertModel.php  |   5 +-
 .../Promotion/Convert/ConvertWhenSid.php      |  31 ---
 .../Wl/Login/Type/LoginTypeModel.php          |   2 +-
 WellnessLiving/Wl/Login/Type/SystemSid.php    |  31 ---
 WellnessLiving/Wl/Mode/ModeSid.php            | 135 -------------
 .../Wl/Pay/Account/AccountModel.php           |   3 +-
 .../Wl/Pay/Account/Charge/ChargeModel.php     |   3 +-
 .../Wl/Pay/Form/EnvironmentModel.php          |   2 -
 .../Processor/Nuvei/Code/CSDeviceTypeSid.php  |  23 +++
 .../Nuvei/Code/CSExchangeActionSid.php        |  48 +++++
 .../Nuvei/Code/CSExchangeTypeSid.php          |  63 ++++++
 .../Nuvei/Code/CSMessageFunctionSid.php       | 188 ++++++++++++++++++
 .../Nuvei/Code/CSResponseReasonSid.php        | 100 ++++++++++
 .../Processor/Nuvei/Code/CSResponseSid.php    | 115 +++++++++++
 .../Nuvei/Code/CSServiceContentSid.php        |  43 ++++
 .../Nuvei/Code/CSTransactionTypeSid.php       |  48 +++++
 .../Wl/Profile/Activity/ElementModel.php      |   3 +-
 .../Wl/Profile/Contract/ContractModel.php     |   2 +-
 .../Wl/Profile/Edit/EditByTokenModel.php      |   4 +-
 WellnessLiving/Wl/Profile/Edit/EditModel.php  |   4 +-
 .../Form/Response/ResponseListModel.php       |   5 +-
 .../Wl/Profile/RegisterSourceSid.php          |  28 ---
 .../Promotion/Convert/PromotionConvertSid.php |  28 ---
 .../Wl/Promotion/Edit/Limit/Cycle/Sid.php     |  21 --
 .../Promotion/Index/PromotionIndexModel.php   |   3 +-
 WellnessLiving/Wl/Quiz/QuizElementModel.php   |  11 +
 WellnessLiving/Wl/Quiz/Response/SourceSid.php |  50 -----
 WellnessLiving/Wl/Report/WlReportSid.php      |   6 +
 .../Wl/Resource/Image/ImageIconSid.php        | 158 ---------------
 .../Wl/Resource/Image/ImageShapeSid.php       |  31 ---
 .../Wl/Resource/Layout/LayoutModel.php        |  17 +-
 .../Wl/Resource/Layout/LayoutShapeSid.php     |  26 ---
 .../Wl/Review/ReviewList/ReviewListModel.php  |   4 +-
 .../Wl/Review/ReviewList/ReviewOrderSid.php   |  31 ---
 .../Wl/Schedule/ClassView/DenyReasonSid.php   |  12 +-
 .../Wl/Schedule/Design/OptionSid.php          |  28 ---
 .../Wl/Schedule/Page/PageElementModel.php     |  35 +++-
 .../Wl/Schedule/Page/WlVisitNoteSid.php       |  21 --
 .../StaffApp/ScheduleListByTokenModel.php     |   6 +-
 .../StaffApp/ScheduleListModel.php            |   6 +-
 WellnessLiving/Wl/Schedule/Tab/TabModel.php   |   4 +-
 .../Wl/Service/ServiceBookFlowSid.php         |  26 ---
 .../Shop/Product/PurchaseRestrictionSid.php   |  28 ---
 .../Catalog/Filter/Sort/FilterSortSid.php     |  41 ----
 WellnessLiving/Wl/Video/VideoElementModel.php |   4 -
 WellnessLiving/Wl/Video/VideoListModel.php    |   6 +-
 WellnessLiving/Wl/Video/Watch/WatchModel.php  |   1 -
 .../Wl/Video/Watch/WatchSourceSid.php         |  35 ----
 .../Wl/Virtual/VirtualProviderSid.php         |  23 ---
 WellnessLiving/Wl/Visit/VisitStatusModel.php  |   6 +-
 WellnessLiving/Wl/Visit/WlVisitSid.php        |  60 ------
 WellnessLiving/Wl/WlDesignIconSid.php         |  69 -------
 WellnessLiving/WlModelRequest.php             |   2 +-
 131 files changed, 999 insertions(+), 2119 deletions(-)
 delete mode 100644 WellnessLiving/Core/Drive/DriveTypeSid.php
 delete mode 100644 WellnessLiving/Core/Locale/CurrencySid.php
 delete mode 100644 WellnessLiving/Core/Locale/LocaleSid.php
 delete mode 100644 WellnessLiving/Core/Sid/SortOrderSid.php
 delete mode 100644 WellnessLiving/Core/Sid/YesNoSid.php
 delete mode 100644 WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php
 delete mode 100644 WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php
 delete mode 100644 WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php
 delete mode 100644 WellnessLiving/Studio/Task/Branch/BranchStatusSid.php
 delete mode 100644 WellnessLiving/Studio/Task/Branch/StandStatusSid.php
 delete mode 100644 WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php
 delete mode 100644 WellnessLiving/Wl/Book/Process/ProcessSpaSid.php
 delete mode 100644 WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php
 delete mode 100644 WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php
 delete mode 100644 WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php
 create mode 100644 WellnessLiving/Wl/Classes/Period/Clients/Model.php
 delete mode 100644 WellnessLiving/Wl/Classes/RequirePaySid.php
 delete mode 100644 WellnessLiving/Wl/Classes/Tab/TabSid.php
 delete mode 100644 WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php
 delete mode 100644 WellnessLiving/Wl/Coupon/WlTypeSid.php
 delete mode 100644 WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php
 delete mode 100644 WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php
 delete mode 100644 WellnessLiving/Wl/Login/Attendance/AddOptionSid.php
 create mode 100644 WellnessLiving/Wl/Login/Member/MemberValidate63Model.php
 delete mode 100644 WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php
 delete mode 100644 WellnessLiving/Wl/Login/Type/SystemSid.php
 delete mode 100644 WellnessLiving/Wl/Mode/ModeSid.php
 create mode 100644 WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSDeviceTypeSid.php
 create mode 100644 WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSExchangeActionSid.php
 create mode 100644 WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSExchangeTypeSid.php
 create mode 100644 WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSMessageFunctionSid.php
 create mode 100644 WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSResponseReasonSid.php
 create mode 100644 WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSResponseSid.php
 create mode 100644 WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSServiceContentSid.php
 create mode 100644 WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSTransactionTypeSid.php
 delete mode 100644 WellnessLiving/Wl/Profile/RegisterSourceSid.php
 delete mode 100644 WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php
 delete mode 100644 WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php
 delete mode 100644 WellnessLiving/Wl/Quiz/Response/SourceSid.php
 delete mode 100644 WellnessLiving/Wl/Resource/Image/ImageIconSid.php
 delete mode 100644 WellnessLiving/Wl/Resource/Image/ImageShapeSid.php
 delete mode 100644 WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php
 delete mode 100644 WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php
 delete mode 100644 WellnessLiving/Wl/Schedule/Design/OptionSid.php
 delete mode 100644 WellnessLiving/Wl/Schedule/Page/WlVisitNoteSid.php
 delete mode 100644 WellnessLiving/Wl/Service/ServiceBookFlowSid.php
 delete mode 100644 WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php
 delete mode 100644 WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php
 delete mode 100644 WellnessLiving/Wl/Video/Watch/WatchSourceSid.php
 delete mode 100644 WellnessLiving/Wl/Virtual/VirtualProviderSid.php
 delete mode 100644 WellnessLiving/Wl/Visit/WlVisitSid.php
 delete mode 100644 WellnessLiving/Wl/WlDesignIconSid.php

diff --git a/WellnessLiving/Core/Drive/DriveTypeSid.php b/WellnessLiving/Core/Drive/DriveTypeSid.php
deleted file mode 100644
index 3e1a284a..00000000
--- a/WellnessLiving/Core/Drive/DriveTypeSid.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace WellnessLiving\Core\Drive;
-
-/**
- * List of image types.
- */
-class DriveTypeSid
-{
-  /**
-   * Bmp image.
-   */
-  const BMP = 4;
-
-  /**
-   * Gif image.
-   */
-  const GIF = 1;
-
-  /**
-   * Jpeg image.
-   */
-  const JPEG = 2;
-
-  /**
-   * Png image.
-   */
-  const PNG = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php b/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php
index 4b7a02f6..dbd9a331 100644
--- a/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php
+++ b/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php
@@ -2,7 +2,6 @@
 
 namespace WellnessLiving\Core\Drive\ImageUpload;
 
-use WellnessLiving\Core\Drive\DriveTypeSid;
 use WellnessLiving\WlFile;
 use WellnessLiving\WlModelAbstract;
 
@@ -70,7 +69,7 @@ class ImageUploadTemporaryModel extends WlModelAbstract
   public $i_width_src;
 
   /**
-   * The image type ID. One of the {@link DriveTypeSid} constants.
+   * The image type ID.
    *
    * @post result
    * @var int
diff --git a/WellnessLiving/Core/Geo/ComboboxModel.php b/WellnessLiving/Core/Geo/ComboboxModel.php
index 98c3fc4b..eb93cf28 100644
--- a/WellnessLiving/Core/Geo/ComboboxModel.php
+++ b/WellnessLiving/Core/Geo/ComboboxModel.php
@@ -2,7 +2,6 @@
 
 namespace WellnessLiving\Core\Geo;
 
-use WellnessLiving\Core\Locale\LocaleSid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -29,8 +28,6 @@ class ComboboxModel extends WlModelAbstract
   /**
    * The locale ID used as a filter. The locale is generally a country.
    *
-   * One of the {@link LocaleSid} constants.
-   *
    * This will be `0` if all locations are searched.
    *
    * @get get
diff --git a/WellnessLiving/Core/Geo/Region/RegionModel.php b/WellnessLiving/Core/Geo/Region/RegionModel.php
index e96aa578..3a415b49 100644
--- a/WellnessLiving/Core/Geo/Region/RegionModel.php
+++ b/WellnessLiving/Core/Geo/Region/RegionModel.php
@@ -2,7 +2,6 @@
 
 namespace WellnessLiving\Core\Geo\Region;
 
-use WellnessLiving\Core\Locale\LocaleSid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -53,7 +52,7 @@ class RegionModel extends WlModelAbstract
   public $a_region;
 
   /**
-   * The locale ID to find regions for. One of the {@link LocaleSid} constants.
+   * The locale ID to find regions for.
    *
    * @get get
    * @var int
diff --git a/WellnessLiving/Core/Locale/CurrencySid.php b/WellnessLiving/Core/Locale/CurrencySid.php
deleted file mode 100644
index ae8f93b0..00000000
--- a/WellnessLiving/Core/Locale/CurrencySid.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-namespace WellnessLiving\Core\Locale;
-
-/**
- * A list of currencies.
- *
- * Currency constant names must comply with the standard `ISO 4217` for correct integration with other services.
- *
- * @link https://docs.1010data.com/1010dataReferenceManual/DataTypesAndFormats/currencyUnitCodes.html
- *
- * Last used ID: 16
- */
-abstract class CurrencySid
-{
-  /**
-   * United Arab Emirates dirham.
-   */
-  const AED = 11;
-
-  /**
-   * Australian dollar.
-   */
-  const AUD = 6;
-
-  /**
-   * Canadian dollar.
-   */
-  const CAD = 4;
-
-  /**
-   * Egypt Pound.
-   */
-  const EGP = 8;
-
-  /**
-   * Euro.
-   */
-  const EUR = 13;
-
-  /**
-   * British pound.
-   */
-  const GBP = 3;
-
-  /**
-   * Kuwaiti dinar.
-   */
-  const KWD = 14;
-
-  /**
-   * Cayman Islands dollar.
-   */
-  const KYD = 5;
-
-  /**
-   * Mauritian Rupee.
-   */
-  const MUR = 16;
-
-  /**
-   * New Zealand Dollar.
-   */
-  const NZD = 10;
-
-  /**
-   * Philippines Pesco.
-   */
-  const PHP = 12;
-
-  /**
-   * Saudi Riyal.
-   */
-  const SAR = 15;
-
-  /**
-   * Unknown code.
-   *
-   * Used when currency is not specified or is not known.
-   */
-  const UNKNOWN = 2;
-
-  /**
-   * US dollars.
-   */
-  const USD = 1;
-
-  /**
-   * South African rand.
-   */
-  const ZAR = 7;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Locale/LocaleSid.php b/WellnessLiving/Core/Locale/LocaleSid.php
deleted file mode 100644
index 87346886..00000000
--- a/WellnessLiving/Core/Locale/LocaleSid.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-namespace WellnessLiving\Core\Locale;
-
-/**
- * A list of locales.
- *
- * Last used ID: 16
- */
-abstract class LocaleSid
-{
-  /**
-   * Australia.
-   */
-  const AUSTRALIA = 4;
-
-  /**
-   * Canada.
-   */
-  const CANADA = 2;
-
-  /**
-   * Cayman Islands.
-   */
-  const CAYMAN = 5;
-
-  /**
-   * Cyprus.
-   */
-  const CYPRUS = 13;
-
-  /**
-   * Egypt.
-   */
-  const EGYPT = 8;
-
-  /**
-   * Kuwait
-   */
-  const KUWAIT = 14;
-
-  /**
-   * Republic of Mauritius.
-   */
-  const MAURITIUS = 16;
-
-  /**
-   * A special locale that can be used for testing or a business situated in an unknown region.
-   */
-  const NEVERLAND = 9;
-
-  /**
-   * New Zealand.
-   */
-  const NEW_ZEALAND = 10;
-
-  /**
-   * Philippines.
-   */
-  const PHILIPPINES = 12;
-
-  /**
-   * Saudi Arabia.
-   */
-  const SAUDI_ARABIA = 15;
-
-  /**
-   * South Africa.
-   */
-  const SOUTH_AFRICA = 6;
-
-  /**
-   * United Arab Emirates.
-   */
-  const UAE = 11;
-
-  /**
-   * United Kingdom.
-   */
-  const UK = 3;
-
-  /**
-   * United States of America.
-   */
-  const USA = 1;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Sid/SortOrderSid.php b/WellnessLiving/Core/Sid/SortOrderSid.php
deleted file mode 100644
index 8dbec01b..00000000
--- a/WellnessLiving/Core/Sid/SortOrderSid.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace WellnessLiving\Core\Sid;
-
-/**
- * List of possible sort order.
- */
-class SortOrderSid
-{
-  /**
-   * Ascending order.
-   */
-  const ASC = 2;
-
-  /**
-   * Descending order.
-   */
-  const DESC = 1;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Sid/YesNoSid.php b/WellnessLiving/Core/Sid/YesNoSid.php
deleted file mode 100644
index a61662bd..00000000
--- a/WellnessLiving/Core/Sid/YesNoSid.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace WellnessLiving\Core\Sid;
-
-/**
- * A list of two answers for any question: Yes or No.
- */
-class YesNoSid
-{
-  /**
-   * The answer is "no".
-   */
-  const NO = 2;
-
-  /**
-   * The answer is "yes".
-   */
-  const YES = 1;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Deploy/Cluster/ClusterModel.php b/WellnessLiving/Studio/Deploy/Cluster/ClusterModel.php
index 45a4b4e5..efa26709 100644
--- a/WellnessLiving/Studio/Deploy/Cluster/ClusterModel.php
+++ b/WellnessLiving/Studio/Deploy/Cluster/ClusterModel.php
@@ -25,6 +25,14 @@ class ClusterModel extends WlModelAbstract
    */
   public $is_active = null;
 
+  /**
+   * Whether to save repository keys.
+   *
+   * @post post
+   * @var bool
+   */
+  public $is_fingerprint = false;
+
   /**
    * Key of the cluster being saved.
    *
diff --git a/WellnessLiving/Studio/Ip/Service/EditModel.php b/WellnessLiving/Studio/Ip/Service/EditModel.php
index 5219bc6d..75366871 100644
--- a/WellnessLiving/Studio/Ip/Service/EditModel.php
+++ b/WellnessLiving/Studio/Ip/Service/EditModel.php
@@ -12,8 +12,6 @@ class EditModel extends WlModelAbstract
   /**
    * Timeout of the service.
    *
-   * One of {@link ServiceTimeoutSid} constants.
-   *
    * @get result
    * @post post
    * @var int
@@ -23,8 +21,6 @@ class EditModel extends WlModelAbstract
   /**
    * Type of the service.
    *
-   * One of {@link ServiceTypeSid} constants.
-   *
    * @get result
    * @post post
    * @var int
diff --git a/WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php b/WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php
deleted file mode 100644
index 3bb3ed51..00000000
--- a/WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace WellnessLiving\Studio\Ip\Service;
-
-/**
- * Time during which access by IP address is granted to personnel.
- *
- * Minimum between two values is used.
- */
-abstract class ServiceTimeoutSid
-{
-  /**
-   * Sensitive services that may require much work.
-   */
-  const DAY = 2;
-
-  /**
-   * Sensitive services that are used very rare.
-   */
-  const HOUR = 1;
-
-  /**
-   * Services that are not sensitive.
-   */
-  const MONTH = 4;
-
-  /**
-   * Not that sensitive services.
-   */
-  const WEEK = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php b/WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php
deleted file mode 100644
index a9e9f75c..00000000
--- a/WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace WellnessLiving\Studio\Ip\Service;
-
-/**
- * A list of service types to which access by IP address can be managed.
- */
-abstract class ServiceTypeSid
-{
-  /**
-   * Amazon security group.
-   *
-   * @title Amazon Security Group
-   */
-  const AMAZON_GROUP = 5;
-
-  /**
-   * Amazon IAM user.
-   *
-   * @title Amazon IAM user
-   */
-  const AMAZON_IAM = 6;
-
-  /**
-   * Amazon RDS security group.
-   */
-  const AMAZON_RDS = 1;
-
-  /**
-   * Access over SSH protocol.
-   *
-   * @title Access over SSH
-   */
-  const SSH = 2;
-
-  /**
-   * Access to SVN repository.
-   *
-   * @title Access to SVN repository
-   */
-  const SVN = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Microservice/Editor/ListModel.php b/WellnessLiving/Studio/Microservice/Editor/ListModel.php
index 0ec8befe..71df4c8f 100644
--- a/WellnessLiving/Studio/Microservice/Editor/ListModel.php
+++ b/WellnessLiving/Studio/Microservice/Editor/ListModel.php
@@ -24,7 +24,10 @@ class ListModel extends WlModelAbstract
    *   <dt>string <var>s_file</var></dt>
    *   <dd>File name.</dd>
    *   <dt>string <var>s_variable</var></dt>
-   *   <dd>Microservice-specific variables. A set of pairs key=value, separated by newlines.</dd>
+   *   <dd>
+   *     Microservice-specific variables. A set of pairs key=value, separated by newlines.
+   *
+   *   </dd>
    *   <dt>string <var>text_project</var></dt>
    *   <dd>Title of the project.</dd>
    *   <dt>string <var>text_title</var></dt>
diff --git a/WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php b/WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php
deleted file mode 100644
index 2dcb47d3..00000000
--- a/WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace WellnessLiving\Studio\Task\Branch;
-
-/**
- *  List of the available modes for <tt>BranchDelete</tt> build.
- */
-class BranchDeleteModeSid
-{
-  /**
-   * Deleting branch without merging changes.
-   */
-  const DELETE_NO_MERGE = 3;
-
-  /**
-   * Changes are merged. Branch is not deleted.
-   */
-  const MERGE_ONLY = 2;
-
-  /**
-   * Deleting branch with merging changes.
-   */
-  const STANDARD = 1;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Task/Branch/BranchModel.php b/WellnessLiving/Studio/Task/Branch/BranchModel.php
index b0d9b75f..659328d6 100644
--- a/WellnessLiving/Studio/Task/Branch/BranchModel.php
+++ b/WellnessLiving/Studio/Task/Branch/BranchModel.php
@@ -27,8 +27,6 @@ class BranchModel extends WlModelAbstract
   public $id_build_mode = 1;
 
   /**
-   * Stand status, one of {@link StandStatusSid}.
-   *
    * @get get,result
    * @put get
    * @var int|null
@@ -36,8 +34,6 @@ class BranchModel extends WlModelAbstract
   public $id_stand_status = null;
 
   /**
-   * Branch status, one of {@link BranchStatusSid}.
-   *
    * @get result
    * @var int|null
    */
@@ -63,15 +59,6 @@ class BranchModel extends WlModelAbstract
    */
   public $k_task = '';
 
-  /**
-   * Actor user UID key.
-   *
-   * @delete get
-   * @post get
-   * @var string
-   */
-  public $uid = '';
-
   /**
    * Url to build page.
    *
diff --git a/WellnessLiving/Studio/Task/Branch/BranchStatusSid.php b/WellnessLiving/Studio/Task/Branch/BranchStatusSid.php
deleted file mode 100644
index 7d84e7a2..00000000
--- a/WellnessLiving/Studio/Task/Branch/BranchStatusSid.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-namespace WellnessLiving\Studio\Task\Branch;
-
-/**
- * Branch statuses.
- *
- * Last used ID: 3.
- */
-class BranchStatusSid
-{
-  /**
-   * The branch and all related things (catalogs in the repository, site) are being created now.
-   *
-   * This action is triggered from the task page on the Studio.
-   *
-   * The branch in this status may be transitioned to:
-   * * {@link BranchStatusSid::READY} in a case when creation is successfully completed;
-   * * {@link BranchStatusSid::DELETING} in a case when creation is not completed and the branch
-   *   should be deleted before repeatedly creation.
-   */
-  const CREATING = 1;
-
-  /**
-   * The branch and all related things (catalogs in the repository, site) are being deleted now.
-   *
-   * This action is triggered from the task page on the Studio.
-   *
-   * The branch in this status may be only deleted from the database.
-   */
-  const DELETING = 3;
-
-  /**
-   * The branch and all related things (catalogs in the repository, site) are ready to use.
-   *
-   * This action is triggered from <tt>BranchCreate</tt> build.
-   *
-   * The branch in this status may be transitioned only to {@link BranchStatusSid::DELETING}.
-   */
-  const READY = 2;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Task/Branch/StandStatusSid.php b/WellnessLiving/Studio/Task/Branch/StandStatusSid.php
deleted file mode 100644
index 9c37964e..00000000
--- a/WellnessLiving/Studio/Task/Branch/StandStatusSid.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-namespace WellnessLiving\Studio\Task\Branch;
-
-/**
- * Stand statuses.
- *
- * Last used ID: 5.
- */
-class StandStatusSid
-{
-  /**
-   * Stand is in creation process.
-   *
-   * The stand in this status may be transitioned to:
-   * * * {@link StandStatusSid::READY} in a case when creation is successfully completed.
-   * * * {@link StandStatusSid::ERROR} in a case when creation was failed with error.
- */
-  const CREATION = 2;
-
-  /**
-   * Stand is in deletion process.
-   *
-   * The stand in this status may be transitioned to:
-   * * * {@link StandStatusSid::NOT_EXIST} in a case when deletion is successfully completed.
-   * * * {@link StandStatusSid::ERROR} in a case when deletion was failed with error.
-   */
-  const DELETION = 4;
-
-  /**
-   * Creating or deleting a stand resulted in an error
-   *
-   * The stand in this status may be transitioned to:
-   * * * {@link StandStatusSid::NOT_EXIST} if the creation or deletion process has not been completed, we must delete the stand.
-   */
-  const ERROR = 5;
-
-  /**
-   * Stand has not been created.
-   *
-   * The stand in this status may be transitioned only to {@link StandStatusSid::CREATION}.
-   */
-  const NOT_EXIST = 1;
-
-  /**
-   * Stand was created and ready for use.
-   *
-   * The stand in this status may be transitioned only to {@link StandStatusSid::DELETION}.
-   */
-  const READY = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php b/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php
deleted file mode 100644
index 75020784..00000000
--- a/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-namespace WellnessLiving\Thoth\ReportCore\Generator;
-
-/**
- * Lists statuses of reports from point of view of its generation.
- */
-class ReportGeneratorStatusSid
-{
-  /**
-   * Report is in an inconsistent state.
-   *
-   * There was an aborted operation which means this report is available partially.
-   *
-   * The following transitions are possible:
-   *
-   * * `ABORTED` => `DELETING` when a background task finds that this report is old and should be deleted.
-   *
-   * * `ABORTED` => `QUEUED` if user clicks to regenerate this report
-   */
-  const ABORTED = 6;
-
-  /**
-   * Current operation is being aborted now.
-   *
-   * The following transitions are possible:
-   *
-   * * `ABORTING` => `ABORTED` when current operation completes.
-   *   This transition is performed in two places: before the beginning of the actual generation,
-   *   and after completion of the generation.
-   */
-  const ABORTING = 5;
-
-  /**
-   * This report is being deleted now.
-   *
-   * The following transitions are possible:
-   *
-   * * `DELETING` => (report does not exist anymore) when deletion of this report completes.
-   */
-  const DELETING = 4;
-
-  /**
-   * This report is being generated now.
-   *
-   * This status is set when report is generated from zero point.
-   * This status basically means that not all partition of the report present.
-   * It also means that all partitions that exist have the newest values.
-   *
-   * All new reports are created in this status.
-   *
-   * The following transitions are possible:
-   *
-   * * `GENERATING` => `ABORTING` when generation of this report aborted by user.
-   * * `GENERATING` => `READY` when generation of this report completes.
-   *   This transition is performed when generation completes successfully.
-   */
-  const GENERATING = 2;
-
-  /**
-   * Generation of this report is queued.
-   * It will start automatically when generation of other reports completes.
-   *
-   * The following transitions are possible:
-   *
-   * * `QUEUED` => (report does not exist anymore) If generation of this report was aborted while no data was generated.
-   * * `QUEUED` => `ABORTED` If generation of this report was aborted while there is data from previous generation of
-   *    this report.
-   *
-   *    This transition also occurs if a report stayed in the queue more than the set duration and
-   *    there is some data left from the previous generation of this report.
-   * * `QUEUED` => `GENERATING` when there is a free thread slot to start generation of this report immediately.
-   */
-  const QUEUED = 1;
-
-  /**
-   * Generation of this report is now completed.
-   *
-   * The following transitions are possible:
-   *
-   * * `READY` => `DELETING` when a background tasks identifies that this report is old and starts deleting it.
-   *
-   * * `READY` => `QUEUED` when user clicks to regenerate this report
-   */
-  const READY = 3;
-
-  /**
-   * @inheritDoc
-   */
-  const _TRANSLATION_CONTEXT = 'Wl.Report.Generator.ReportGeneratorStatusSid';
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Announcement/AnnouncementListModel.php b/WellnessLiving/Wl/Announcement/AnnouncementListModel.php
index 2b82a5f2..ca9378cb 100644
--- a/WellnessLiving/Wl/Announcement/AnnouncementListModel.php
+++ b/WellnessLiving/Wl/Announcement/AnnouncementListModel.php
@@ -2,7 +2,6 @@
 
 namespace WellnessLiving\Wl\Announcement;
 
-use WellnessLiving\Core\Sid\SortOrderSid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -27,7 +26,6 @@ class AnnouncementListModel extends WlModelAbstract
    *
    * @get get,result
    * @var int|null
-   * @see SortOrderSid
    */
   public $id_order = null;
 
diff --git a/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php b/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
index 585fbf8b..6bd4b38b 100644
--- a/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
@@ -3,9 +3,6 @@
 namespace WellnessLiving\Wl\Appointment\Book\Asset;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Resource\Image\ImageIconSid;
-use WellnessLiving\Wl\Resource\Image\ImageShapeSid;
 use WellnessLiving\Wl\Service\ServicePriceSid;
 use WellnessLiving\Wl\Service\ServiceRequireSid;
 
@@ -59,9 +56,9 @@ class AssetListModel extends WlModelAbstract
    *       <dt>bool <var>is_empty</var></dt>
    *       <dd>Determines if the asset logo is empty.</dd>
    *       <dt>string <var>sid_image_icon</var></dt>
-   *       <dd>The icon name. String representation of one of the {@link ImageIconSid} constants. This is only set if the image kind equals to `image`.</dd>
+   *       <dd>The icon name. This is only set if the image kind equals to `image`.</dd>
    *       <dt>string <var>sid_image_shape</var></dt>
-   *       <dd>The shape name. String representation of one of the {@link ImageShapeSid} constants. This is set only if the image kind equals to `shape`.</dd>
+   *       <dd>The shape name. This is set only if the image kind equals to `shape`.</dd>
    *       <dt>string <var>url</var></dt>
    *       <dd>The asset logo URL.</dd>
    *     </dl>
@@ -156,8 +153,6 @@ class AssetListModel extends WlModelAbstract
   public $i_image_width = 0;
 
   /**
-   * Mode type, one of {@link ModeSid} constants.
-   *
    * @get get
    * @var int
    */
diff --git a/WellnessLiving/Wl/Appointment/Book/Asset/Service/ServiceModel.php b/WellnessLiving/Wl/Appointment/Book/Asset/Service/ServiceModel.php
index 36af95e1..92e71a8e 100644
--- a/WellnessLiving/Wl/Appointment/Book/Asset/Service/ServiceModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Asset/Service/ServiceModel.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Appointment\Book\Asset\Service;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Retrieves assets that are required for a service booking.
@@ -103,8 +102,6 @@ class ServiceModel extends WlModelAbstract
   public $dt_start = '';
 
   /**
-   * Mode type, one of {@link ModeSid} constants.
-   *
    * @get get
    * @var int
    */
diff --git a/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php b/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php
index 8d5455f6..c213a235 100644
--- a/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php
@@ -5,7 +5,6 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\Book\Question\QuestionModel;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -140,7 +139,7 @@ class Finish47Model extends WlModelAbstract
   public $a_visit = null;
 
   /**
-   * The booking mode ID. One of the {@link ModeSid} constants.
+   * The booking mode ID.
    *
    * @post post
    * @var int
diff --git a/WellnessLiving/Wl/Appointment/Book/Finish/FinishModel.php b/WellnessLiving/Wl/Appointment/Book/Finish/FinishModel.php
index b4deffae..3ca75bb4 100644
--- a/WellnessLiving/Wl/Appointment/Book/Finish/FinishModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Finish/FinishModel.php
@@ -8,8 +8,6 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\Book\Question\QuestionModel;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
-use WellnessLiving\Wl\Classes\Tab\TabSid;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -148,7 +146,7 @@ class FinishModel extends WlModelAbstract
    *     int <var>id_class_tab</var>
    *   </dt>
    *   <dd>
-   *     The booking service type. One of the {@link TabSid} constants.
+   *     The booking service type.
    *   </dd>
    *   <dt>
    *     int [<var>id_gender_staff</var>]
@@ -300,7 +298,7 @@ class FinishModel extends WlModelAbstract
   public $a_visit;
 
   /**
-   * The booking mode ID. One of the {@link ModeSid} constants.
+   * The booking mode ID.
    *
    * @post post
    * @var int
diff --git a/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php b/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php
index 101f76f8..db76a98e 100644
--- a/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php
@@ -7,8 +7,6 @@
 use WellnessLiving\Core\a\AGenderSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
-use WellnessLiving\Wl\Classes\Tab\TabSid;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -140,7 +138,7 @@ class FinishMultipleModel extends WlModelAbstract
    *     int <var>id_class_tab</var>
    *   </dt>
    *   <dd>
-   *     The booking service type. One of the {@link TabSid} constants.
+   *     The booking service type.
    *   </dd>
    *   <dt>
    *     int [<var>id_gender_staff</var>]
@@ -313,7 +311,7 @@ class FinishMultipleModel extends WlModelAbstract
   public $a_visit_provider = [];
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @post post
    * @var int
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
index 3af4b216..f14c5b3b 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
@@ -5,7 +5,6 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\Service\ServicePriceSid;
 
@@ -253,7 +252,7 @@ class PaymentModel extends WlModelAbstract
   public $a_uid = [];
 
   /**
-   * The key of source mode. A constant of {@link ModeSid}.
+   * The key of source mode.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
index 3e8b67f0..02720c29 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
@@ -5,8 +5,6 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
-use WellnessLiving\Wl\Classes\Tab\TabSid;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -119,7 +117,7 @@ class PaymentMultipleModel extends WlModelAbstract
    *     int <var>id_class_tab</var>
    *   </dt>
    *   <dd>
-   *     The "Book now" tab. One of the {@link TabSid} constants.
+   *     The "Book now" tab.
    *   </dd>
    *   <dt>
    *     string <var>m_tip_appointment</var>
@@ -430,7 +428,7 @@ class PaymentMultipleModel extends WlModelAbstract
   public $a_uid = [];
 
   /**
-   * The ID of the source mode. One of the {@link ModeSid} constants.
+   * The ID of the source mode.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
index 9853c161..5920280f 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
@@ -5,7 +5,6 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\Service\ServicePriceSid;
 
@@ -250,7 +249,7 @@ class PaymentPostModel extends WlModelAbstract
   public $a_uid = [];
 
   /**
-   * The key of source mode. A constant of {@link ModeSid}.
+   * The key of source mode.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php b/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
index 17edd34a..065f8654 100644
--- a/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Appointment\Book\Product;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Shop\Product\PurchaseRestrictionSid;
 
 /**
  * Returns information about service add-ons.
@@ -20,6 +19,14 @@ class Product62Model extends WlModelAbstract
    */
   public $a_product = null;
 
+  /**
+   * The key of a location where appointment is going to be booked.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_location = '0';
+
   /**
    * The key of a service to show information for.
    *
@@ -31,7 +38,6 @@ class Product62Model extends WlModelAbstract
   /**
    * The key of a user to show information for.
    *
-   * Products with a {@link PurchaseRestrictionSid::TYPE} restriction will be filtered out.
    * Only those products that match the client type or those that have no restrictions will be shown.
    *
    * `null` if the client is not logged in.
diff --git a/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
index 89227bf9..dceb0db7 100644
--- a/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
@@ -4,7 +4,6 @@
 
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlProgramCategorySid;
 use WellnessLiving\Wl\WlProgramSid;
@@ -500,7 +499,7 @@ class PurchaseModel extends WlModelAbstract
   public $i_width = 0;
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @var int
diff --git a/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php b/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
index f146b339..fc820596 100644
--- a/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Appointment\Book\Service;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Service\ServiceBookFlowSid;
 use WellnessLiving\Wl\Service\ServicePriceSid;
 use WellnessLiving\Wl\Service\ServiceRequireSid;
 
@@ -151,7 +150,7 @@ class ServiceList52Model extends WlModelAbstract
    *     int <var>id_book_flow</var>
    *   </dt>
    *   <dd>
-   *     The type of client booking flow. One of {@link ServiceBookFlowSid} constants.
+   *     The type of client booking flow.
    *   </dd>
    *   <dt>
    *     int <var>id_service_require</var>
diff --git a/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php b/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
index b220abd5..f8b1b8da 100644
--- a/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Appointment\Book\Service;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Service\ServiceBookFlowSid;
 use WellnessLiving\Wl\Service\ServicePriceSid;
 use WellnessLiving\Wl\Service\ServiceRequireSid;
 
@@ -150,7 +149,7 @@ class ServiceListModel extends WlModelAbstract
    *     int <var>id_book_flow</var>
    *   </dt>
    *   <dd>
-   *     The type of client booking flow. One of {@link ServiceBookFlowSid} constants.
+   *     The type of client booking flow.
    *   </dd>
    *   <dt>
    *     int <var>id_service_require</var>
diff --git a/WellnessLiving/Wl/Appointment/Book/Staff/ListModel.php b/WellnessLiving/Wl/Appointment/Book/Staff/ListModel.php
index 86962d7f..2024046c 100644
--- a/WellnessLiving/Wl/Appointment/Book/Staff/ListModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Staff/ListModel.php
@@ -72,6 +72,16 @@ class ListModel extends WlModelAbstract
    */
   public $has_staff;
 
+  /**
+   * Custom appointment duration in minutes.
+   *
+   * `null` if not set.
+   *
+   * @get get
+   * @var int|null
+   */
+  public $i_duration_custom = null;
+
   /**
    * User role by whom this api called.
    * For different roles different results might be generated.
diff --git a/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php b/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
index 3c9d54e5..bb22537c 100644
--- a/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
+++ b/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
@@ -5,7 +5,6 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * For recurrent class booking returns list of visits to be created for the given settings.
@@ -39,7 +38,7 @@ class RepeatModel extends WlModelAbstract
    *   <dt>string <var>is_wait</var></dt>
    *   <dd>Whether booking can be only to wait list.</dd>
    *   <dt>string <var>k_class_period</var></dt>
-   *   <dd>Key of class period, primary key in {}.</dd>
+   *
    *   <dt>string <var>s_alert</var></dt>
    *   <dd>Staff name if booking available, warning about wait list or disabled booking otherwise.</dd>
    *   <dt>string <var>s_date</var></dt>
@@ -47,21 +46,22 @@ class RepeatModel extends WlModelAbstract
    * </dl>
    *
    * @get result
-   * @var array
+   * @var array[]
    */
   public $a_visit = [];
 
   /**
    * List of visits to be ignored. Each value is a string consisting of a class period key
-   * and a visit date and time in location's timezone, concatenated by two colons.
+   * and a visit date and time in location's timezone, concatenated by two colons. Empty array if no visits
+   * should be ignored. Example: ['70::2024-11-05 18:00:00'].
    *
    * @get get
-   * @var array
+   * @var string[]
    */
   public $a_visit_ignore = [];
 
   /**
-   * Date of the class, when recurring booking was called.
+   * Date and time of the class, when recurring booking was called, in UTC timezone.
    *
    * @get get
    * @var string
@@ -69,7 +69,7 @@ class RepeatModel extends WlModelAbstract
   public $dt_date = '';
 
   /**
-   * Date to start recurring booking.
+   * Date to start recurring booking. Not empty only when {@link RepeatModel::$id_repeat_end} == {@link \RsRepeatEndSid::DATE}.
    *
    * @get get,result
    * @var string
@@ -77,7 +77,7 @@ class RepeatModel extends WlModelAbstract
   public $dt_from = '';
 
   /**
-   * Date to finish recurring booking.
+   * Date to finish recurring booking. Not empty only when {@link RepeatModel::$id_repeat_end} == {@link \RsRepeatEndSid::DATE}.
    *
    * @get get,result
    * @var string
@@ -85,7 +85,7 @@ class RepeatModel extends WlModelAbstract
   public $dt_to = '';
 
   /**
-   * Count of the visits to be created. Should be empty, if date range is set.
+   * Count of the visits to be created. Not empty only when {@link RepeatModel::$id_repeat_end} == {@link \RsRepeatEndSid::COUNT}.
    *
    * @get get,result
    * @var int
@@ -109,8 +109,6 @@ class RepeatModel extends WlModelAbstract
   public $id_duration = 0;
 
   /**
-   * WellnessLiving mode, one of {@link ModeSid} constants.
-   *
    * @get get
    * @var int
    */
@@ -159,7 +157,7 @@ class RepeatModel extends WlModelAbstract
   public $s_uid = '';
 
   /**
-   * Encoded list of user keys, who will attend visits.
+   * Start date of repeatable period in human-readable format.
    *
    * @get result
    * @var string
@@ -167,7 +165,7 @@ class RepeatModel extends WlModelAbstract
   public $text_date_from = '';
 
   /**
-   * Encoded list of user keys, who will attend visits.
+   * End date of repeatable period in human-readable format.
    *
    * @get result
    * @var string
@@ -187,6 +185,7 @@ class RepeatModel extends WlModelAbstract
    *
    * @get get
    * @var string
+   * @deprecated Current login user used instead.
    */
   public $uid_actor = '';
 }
diff --git a/WellnessLiving/Wl/Book/Process/Info/Info54Model.php b/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
index 3af1f388..e70423e5 100644
--- a/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
@@ -5,13 +5,9 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Book\Process\ProcessSpaSid;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Offers functionality for the class booking wizard on the "Class and Location" page.
- *
- * When using this endpoint, take into account the {@link ProcessSpaSid::QUIZ} step.
  */
 class Info54Model extends WlModelAbstract
 {
@@ -384,7 +380,7 @@ class Info54Model extends WlModelAbstract
   public $i_wait_spot = 0;
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Info/InfoModel.php b/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
index f2a3596c..74589c78 100644
--- a/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
+++ b/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
@@ -5,7 +5,6 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Offers functionality for the class booking wizard on the "Class and Location" page.
@@ -383,7 +382,7 @@ class InfoModel extends WlModelAbstract
   public $i_wait_spot = 0;
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
index 6afee7ca..a20e1b53 100644
--- a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
@@ -6,7 +6,6 @@
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -311,7 +310,7 @@ class PaymentModel extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Process54Model.php b/WellnessLiving/Wl/Book/Process/Process54Model.php
index ddc025b2..caa56e88 100644
--- a/WellnessLiving/Wl/Book/Process/Process54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process54Model.php
@@ -5,15 +5,11 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Classes\RequirePaySid;
 use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Performs the booking wizard steps.
  *
- * Include the {@link ProcessSpaSid::QUIZ} step, if needed.
- *
  * @deprecated Use {@link Process59Model} instead.
  */
 class Process54Model extends WlModelAbstract
@@ -37,7 +33,7 @@ class Process54Model extends WlModelAbstract
    *     int <var>id_book_process</var>
    *   </dt>
    *   <dd>
-   *     The step ID. One of the {@link ProcessSpaSid} constants.
+   *     The step ID.
    *   </dd>
    *   <dt>
    *     bool [<var>is_current</var>]
@@ -132,7 +128,7 @@ class Process54Model extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
@@ -142,7 +138,6 @@ class Process54Model extends WlModelAbstract
 
   /**
    * The purchase rule ID.
-   * One of the {@link RequirePaySid} constants.
    *
    * @get result
    * @var int
diff --git a/WellnessLiving/Wl/Book/Process/Process59Model.php b/WellnessLiving/Wl/Book/Process/Process59Model.php
index a4ac5bb4..54e412f7 100644
--- a/WellnessLiving/Wl/Book/Process/Process59Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process59Model.php
@@ -5,9 +5,7 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Classes\RequirePaySid;
 use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Performs the booking wizard steps.
@@ -36,7 +34,7 @@ class Process59Model extends WlModelAbstract
    *     int <var>id_book_process</var>
    *   </dt>
    *   <dd>
-   *     The step ID. One of the {@link ProcessSpaSid} constants.
+   *     The step ID.
    *   </dd>
    *   <dt>
    *     bool [<var>is_current</var>]
@@ -131,7 +129,7 @@ class Process59Model extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
@@ -141,7 +139,6 @@ class Process59Model extends WlModelAbstract
 
   /**
    * The purchase rule ID.
-   * One of the {@link RequirePaySid} constants.
    *
    * @get result
    * @var int
diff --git a/WellnessLiving/Wl/Book/Process/ProcessModel.php b/WellnessLiving/Wl/Book/Process/ProcessModel.php
index de0c5f65..87629170 100644
--- a/WellnessLiving/Wl/Book/Process/ProcessModel.php
+++ b/WellnessLiving/Wl/Book/Process/ProcessModel.php
@@ -5,7 +5,6 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Classes\RequirePaySid;
 use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
 
 /**
@@ -34,7 +33,7 @@ class ProcessModel extends WlModelAbstract
    *     int <var>id_book_process</var>
    *   </dt>
    *   <dd>
-   *     The step ID. One of the {@link ProcessSpaSid} constants.
+   *     The step ID.
    *   </dd>
    *   <dt>
    *     bool [<var>is_current</var>]
@@ -139,7 +138,6 @@ class ProcessModel extends WlModelAbstract
 
   /**
    * The purchase rule ID.
-   * One of the {@link RequirePaySid} constants.
    *
    * @get result
    * @var int
diff --git a/WellnessLiving/Wl/Book/Process/ProcessSpaSid.php b/WellnessLiving/Wl/Book/Process/ProcessSpaSid.php
deleted file mode 100644
index 80e72e19..00000000
--- a/WellnessLiving/Wl/Book/Process/ProcessSpaSid.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Book\Process;
-
-/**
- * Event booking process sid class
- *
- * Last used ID: 12.
- */
-abstract class ProcessSpaSid
-{
-  /**
-   * Step "Class details".
-   *
-   * Special step - a container for combining other steps.
-   *
-   * This constant has been added to the SID class to match the steps interface in JS.
-   *
-   * Adding a step to the queue is done on the client side (in JS).
-   *
-   * Designed for Client Web View.
-   */
-  const DETAIL = 10;
-
-  /**
-   * Step "Documents".
-   *
-   * Special step - a container for combining other steps.
-   *
-   * This constant has been added to the SID class to match the steps interface in JS
-   *
-   * Adding a step to the queue is done on the client side (in JS).
-   *
-   * The list of steps that can be displayed on:
-   *  * {@link ProcessSpaSid::QUIZ}
-   *  * Purchase options contract
-   *
-   * Designed for Client Web View.
-   */
-  const DOCUMENT = 8;
-
-  /**
-   * Step "Frequency".
-   * It is necessary to select booking frequency.
-   *
-   * Designed for Client Web View.
-   */
-  const FREQUENCY = 9;
-
-  /**
-   * Information about the class.
-   *
-   * In the SPA app, this step combines the following steps:
-   * * {@link ProcessSpaSid::FREQUENCY}
-   * * {@link ProcessSpaSid::SESSION}
-   */
-  const INFO = 2;
-
-  /**
-   * Installment selection.
-   */
-  const INSTALLMENT = 4;
-
-  /**
-   * Sign in, Sign up, fill in all necessary account data.
-   */
-  const PASSPORT = 1;
-
-  /**
-   * Card data and the booking confirmation.
-   */
-  const PAYMENT = 5;
-
-  /**
-   * Quizzes attached to the class.
-   */
-  const QUIZ = 7;
-
-  /**
-   * Booking for.
-   */
-  const RELATION = 12;
-
-  /**
-   * Selection of assets.
-   */
-  const RESOURCE = 6;
-
-  /**
-   * Session selection step for a session event.
-   *
-   * Designed for Client Web View.
-   */
-  const SESSION = 11;
-
-  /**
-   * A list of possible Purchase Options to be bought.
-   */
-  const STORE = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
index 2b4831e9..df3c299e 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
@@ -5,7 +5,6 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlProgramCategorySid;
 use WellnessLiving\Wl\WlProgramSid;
@@ -364,7 +363,7 @@ class Purchase56Model extends WlModelAbstract
   public $i_image_width = 0;
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
index 72b44bc4..55151c3a 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
@@ -5,7 +5,6 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlProgramCategorySid;
 use WellnessLiving\Wl\WlProgramSid;
@@ -367,7 +366,7 @@ class PurchaseModel extends WlModelAbstract
   public $i_image_width = 0;
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php b/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
index 995d9fb4..3cac5216 100644
--- a/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
+++ b/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
@@ -5,7 +5,6 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -187,7 +186,7 @@ class QuizModel extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php b/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
index 33766c85..752d1c3f 100644
--- a/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
@@ -5,13 +5,9 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Book\Process\ProcessSpaSid;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Selects assets when making a booking.
- *
- * Take note of the {@link ProcessSpaSid::QUIZ} step.
  */
 class Resource54Model extends WlModelAbstract
 {
@@ -251,7 +247,7 @@ class Resource54Model extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php b/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
index de728de0..ad133a3f 100644
--- a/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
+++ b/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
@@ -5,7 +5,6 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Selects assets for making a booking.
@@ -250,7 +249,7 @@ class ResourceModel extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
index 3d3640e6..601ce143 100644
--- a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
+++ b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
@@ -6,7 +6,6 @@
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Book\Process\Purchase\Purchase56Model;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Manages the booking wizard for the "Purchase Options" page.
@@ -170,7 +169,7 @@ class StoreModel extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type. One of the {@link ModeSid} constants.
+   * The mode type.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Business/BusinessModel.php b/WellnessLiving/Wl/Business/BusinessModel.php
index 5a5c6825..7df1257c 100644
--- a/WellnessLiving/Wl/Business/BusinessModel.php
+++ b/WellnessLiving/Wl/Business/BusinessModel.php
@@ -2,7 +2,6 @@
 
 namespace WellnessLiving\Wl\Business;
 
-use WellnessLiving\Core\Locale\LocaleSid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -15,7 +14,6 @@ class BusinessModel extends WlModelAbstract
    *
    * @post post
    * @var int
-   * @see LocaleSid
    */
   public $id_locale;
 
diff --git a/WellnessLiving/Wl/Business/DataModel.php b/WellnessLiving/Wl/Business/DataModel.php
index dc89269b..9396fcec 100644
--- a/WellnessLiving/Wl/Business/DataModel.php
+++ b/WellnessLiving/Wl/Business/DataModel.php
@@ -2,8 +2,6 @@
 
 namespace WellnessLiving\Wl\Business;
 
-use WellnessLiving\Core\Locale\CurrencySid;
-use WellnessLiving\Core\Locale\LocaleSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Service\ServiceSid;
 use WellnessLiving\Wl\WlRankTypeSid;
@@ -62,7 +60,6 @@ class DataModel extends WlModelAbstract
    *
    * @get result
    * @var int
-   * @see CurrencySid
    */
   public $id_currency;
 
@@ -71,7 +68,6 @@ class DataModel extends WlModelAbstract
    *
    * @get result
    * @var int
-   * @see LocaleSid
    */
   public $id_locale;
 
diff --git a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php
deleted file mode 100644
index c862482b..00000000
--- a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Franchise\Location;
-
-/**
- * A list tab.
- *
- * Last used ID: 4.
- */
-class BusinessFranchiseLocationFormSid
-{
-  /**
-   * The tab country.
-   *
-   * @title country
-   */
-  const COUNTRY = 1;
-
-  /**
-   * The tab location.
-   *
-   * @title location
-   */
-  const LOCATION = 2;
-
-  /**
-   * The tab region.
-   *
-   * @title region
-   */
-  const REGION = 3;
-
-  /**
-   * The tab state/province.
-   *
-   * @title state/province
-   */
-  const STATE_PROVINCE = 4;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationModel.php b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationModel.php
index f5c67ee8..d45ec91a 100644
--- a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationModel.php
+++ b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationModel.php
@@ -165,10 +165,6 @@ class BusinessFranchiseLocationModel extends WlModelAbstract
   /**
    * Determines which locations should be returned.
    *
-   * One of the {@link BusinessFranchiseLocationSid} constants.
-   *
-   * If `null`, {@link BusinessFranchiseLocationSid::ALL} is used.
-   *
    * @get get
    * @var int
    */
diff --git a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php
deleted file mode 100644
index 632addc3..00000000
--- a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Business\Franchise\Location;
-
-/**
- * Types of the location.
- *
- * Used in the {@link BusinessFranchiseLocationModel}.
- */
-class BusinessFranchiseLocationSid
-{
-  /**
-   * All locations.
-   *
-   * @title All
-   */
-  const ALL = 1;
-
-  /**
-   * Locations without the region.
-   *
-   * @title Without region
-   */
-  const REGION_NO = 2;
-
-  /**
-   * Location with the region.
-   *
-   * @title With region
-   */
-  const REGION_YES = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php b/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
index d6d2d43c..3a4810a0 100644
--- a/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
+++ b/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
@@ -2,7 +2,6 @@
 
 namespace WellnessLiving\Wl\Catalog\CatalogList;
 
-use WellnessLiving\Core\Sid\SortOrderSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\WlSaleSid;
 
@@ -14,8 +13,8 @@ class CatalogProductModel extends WlModelAbstract
   /**
    * Categories with sort settings. Keys refer to shop category keys. Values refer to sort settings. Contains the following structure:<dl>
    *   <dt>array <var>a_order</var></dt>
-   *   <dt>int <var>id_order</var></dt><dd>The sort order. One of the {@link SortOrderSid} constants.</dd>
-   *   <dt>int <var>id_sort</var></dt><dd>The sort order ID. One of the {@link SortOrderSid} constants.</dd>
+   *   <dt>int <var>id_order</var></dt><dd>The sort order.</dd>
+   *   <dt>int <var>id_sort</var></dt><dd>The sort order ID.</dd>
    * </dl>
    *
    * @get result
@@ -37,7 +36,7 @@ class CatalogProductModel extends WlModelAbstract
    *   <dt>int <var>i_last</var></dt>
    *   <dd>The last shown product.</dd>
    *
-   *   <dt>int <var>id_order</var></dt><dd>The sort order ID. One of the {@link SortOrderSid} constants.</dd>
+   *   <dt>int <var>id_order</var></dt><dd>The sort order ID.</dd>
    *
    *   <dt>int <var>id_sort</var></dt>
    *   <dd>The sort options ID.</dd>
diff --git a/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php b/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php
index eaaada7e..f59435d2 100644
--- a/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php
+++ b/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php
@@ -4,7 +4,6 @@
 
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Catalog\PurchaseOptionViewSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlSaleSid;
 
@@ -217,7 +216,7 @@ class ElementModel extends WlModelAbstract
    *   <dd>Contains information about taxes.</dd>
    *
    *   <dt>string <var>id_purchase_option_view</var></dt>
-   *   <dd>The Purchase Option view type. One of the {@link PurchaseOptionViewSid} constants.</dd>
+   *   <dd>The Purchase Option view type.</dd>
    *
    *   <dt>string <var>m_discount_code</var></dt>
    *   <dd>The discount code amount.</dd>
@@ -380,7 +379,7 @@ class ElementModel extends WlModelAbstract
   public $id_purchase_item;
 
   /**
-   * The ID of the item view category. One of the {@link PurchaseOptionViewSid} constants.
+   * The ID of the item view category.
    *
    * @get result
    * @var int
diff --git a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
index 4107946a..a111c605 100644
--- a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
@@ -6,7 +6,6 @@
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
 use WellnessLiving\Wl\Insurance\Catalog\ProgramListModel;
 use WellnessLiving\Wl\Insurance\Enrollment\Field\EnrollmentFieldListModel;
-use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlSaleSid;
 
@@ -419,7 +418,7 @@ class PaymentModel extends WlModelAbstract
   public $f_discount_percent = 0;
 
   /**
-   * The WellnessLiving mode type (required). One of the {@link ModeSid} constants.
+   * The WellnessLiving mode type (required).
    *
    * @post get
    * @var int
diff --git a/WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php b/WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php
deleted file mode 100644
index cfa4b579..00000000
--- a/WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Catalog;
-
-use WellnessLiving\Wl\WlProgramSid;
-
-/**
- * A list of Purchase Option view types.
- *
- * Last ID: 9.
- */
-class PurchaseOptionViewSid
-{
-  /**
-   * A single appointment reservation.
-   */
-  const APPOINTMENT = 1;
-
-  /**
-   * A single class reservation.
-   */
-  const CLASS_PERIOD = 2;
-
-  /**
-   * A gift card.
-   */
-  const COUPON = 3;
-
-  /**
-   * Enrollments. Classes where flag event is <tt>true</tt>.
-   */
-  const ENROLLMENT = 4;
-
-  /**
-   * Promotions with programs:
-   * * {@link WlProgramSid::ACCOUNT_MEMBERSHIP};
-   * * {@link WlProgramSid::CLASS_MEMBERSHIP};
-   * * {@link WlProgramSid::RESOURCE_MEMBERSHIP};
-   * * {@link WlProgramSid::SERVICE_MEMBERSHIP};
-   * * {@link WlProgramSid::VISIT_MEMBERSHIP}.
-   */
-  const MEMBERSHIP = 8;
-
-  /**
-   * Promotions with program {@link WlProgramSid::PACKAGE}.
-   */
-  const PACKAGE = 5;
-
-  /**
-   * Products (such as water, t-shirts, etc.).
-   */
-  const PRODUCT = 6;
-
-  /**
-   * Session passes.
-   */
-  const PROMOTION = 7;
-
-  /**
-   * Products available for quick buy.
-   */
-  const QUICK_BUY = 9;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php b/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
index 2b0c354f..f85867ac 100644
--- a/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
+++ b/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
@@ -6,7 +6,6 @@
 use WellnessLiving\Wl\Catalog\Payment\PaymentModel;
 use WellnessLiving\Wl\Insurance\Catalog\ProgramListModel;
 use WellnessLiving\Wl\Insurance\Enrollment\Field\EnrollmentFieldListModel;
-use WellnessLiving\Wl\Shop\Product\PurchaseRestrictionSid;
 use WellnessLiving\Wl\WlProgramSid;
 use WellnessLiving\Wl\WlSaleSid;
 
@@ -64,7 +63,7 @@ class CatalogListModel extends WlModelAbstract
    *     int <var>id_restriction</var>
    *   </dt>
    *   <dd>
-   *     The restriction ID. One of the {@link PurchaseRestrictionSid} constants.
+   *     The restriction ID.
    *   </dd>
    *   <dt>
    *     int <var>id_sale</var>
diff --git a/WellnessLiving/Wl/Classes/Period/Clients/Model.php b/WellnessLiving/Wl/Classes/Period/Clients/Model.php
new file mode 100644
index 00000000..cbb057e7
--- /dev/null
+++ b/WellnessLiving/Wl/Classes/Period/Clients/Model.php
@@ -0,0 +1,75 @@
+<?php
+
+namespace WellnessLiving\Wl\Classes\Period\Clients;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Class to manage class period info with Api.
+ *
+ * @sdk
+ */
+class Model extends WlModelAbstract
+{
+  /**
+   * List of clients that registered on class each element contains information:
+   * <ul>
+   *   <li>array <var>a_asset</var> A list of the assets.<dl>
+   *     <dt>string <var>k_resource</var></dt><dd>Resource key.</dd>
+   *     <dt>string <var>text_name</var></dt>
+   *     <dd>Asset title that consists of the asset title itself concatenated with its index (in case of multiple assets) by '#'.</dd>
+   *     <dt>string <var>text_title</var></dt><dd>Title of the asset.</dd>
+   *   </dl>
+   *   </li>
+   *   <li>string <var>first_name</var> Client's first name.
+   *   </li>
+   *   <li>string <var>gender</var> Gender of client.
+   *   </li>
+   *   <li>string <var>last_name</var> Client's last name.
+   *   </li>
+   *   <li>string <var>mail</var> Mail of client.
+   *   </li>
+   *   <li>string <var>name</var> Full name. Combination of the first and last names.
+   *   </li>
+   *   <li>bool <var>pass_prospect</var> Whether client used Pass Promote to visit class.
+   *   </li>
+   *   <li>string <var>phone</var> Phone number of client.
+   *   </li>
+   *   <li>int <var>uid</var> User identifier.
+   *   </li>
+   *   <li>string <var>visit</var> State of visit.
+   *   </li>
+   * </ul>
+   *
+   * @field clients
+   * @get result
+   * @var array[]
+   */
+  public $a_client;
+
+  /**
+   * Date and time of the currently viewed attendance list.
+   *
+   * @get get
+   * @var string
+   */
+  public $dtl_date;
+
+  /**
+   * Whether only clients from <tt>Classpass</tt> should be returned.
+   *
+   * @get get
+   * @var bool
+   */
+  public $is_classpass_only;
+
+  /**
+   * Class period key of the attendance list.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_class_period;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Classes/RequirePaySid.php b/WellnessLiving/Wl/Classes/RequirePaySid.php
deleted file mode 100644
index a94638af..00000000
--- a/WellnessLiving/Wl/Classes/RequirePaySid.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Classes;
-
-/**
- * List of possible modes to require amount while booking a class.
- */
-class RequirePaySid
-{
-  /**
-   * Clients can pay online or pay when they visit.
-   * If set "pay when visit" then it has additional options.
-   */
-  const ADVANCE = 3;
-
-  /**
-   * Client should leave a deposit before booking an event.
-   */
-  const DEPOSIT = 4;
-
-  /**
-   * Client must purchase online.
-   */
-  const ONLINE = 1;
-
-  /**
-   * Clients can only pay when they visit. Online payment is not available.
-   */
-  const VISIT = 2;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Classes/Tab/TabSid.php b/WellnessLiving/Wl/Classes/Tab/TabSid.php
deleted file mode 100644
index 910613d4..00000000
--- a/WellnessLiving/Wl/Classes/Tab/TabSid.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Classes\Tab;
-
-/**
- * List of class tab objects.
- *
- * Last ID: 6.
- */
-abstract class TabSid
-{
-  /**
-   * Enrolments.
-   */
-  const ENROLLMENT = 2;
-
-  /**
-   * Bookable Assets.
-   */
-  const RESOURCE = 4;
-
-  /**
-   * Appointments.
-   */
-  const SERVICE = 3;
-
-  /**
-   * Classes.
-   */
-  const TRAINING = 1;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Collector/DebtListModel.php b/WellnessLiving/Wl/Collector/DebtListModel.php
index 97bc1c88..53c73313 100644
--- a/WellnessLiving/Wl/Collector/DebtListModel.php
+++ b/WellnessLiving/Wl/Collector/DebtListModel.php
@@ -2,7 +2,6 @@
 
 namespace WellnessLiving\Wl\Collector;
 
-use WellnessLiving\Core\Locale\CurrencySid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -26,7 +25,7 @@ class DebtListModel extends WlModelAbstract
    *   <dt>string <var>dtu_cease</var></dt>
    *   <dd>The date and time in UTC when the debt was fully ceased.</dd>
    *   <dt>int <var>id_currency</var></dt>
-   *   <dd>The debt currency ID. One of {@link CurrencySid} constants.</dd>
+   *   <dd>The debt currency ID.</dd>
    *   <dt>string <var>k_business</var></dt>
    *   <dd>The business key where the debt occurred.</dd>
    *   <dt>string <var>k_collector_debt</var></dt>
diff --git a/WellnessLiving/Wl/Collector/DebtPayModel.php b/WellnessLiving/Wl/Collector/DebtPayModel.php
index 3865460a..75e6885e 100644
--- a/WellnessLiving/Wl/Collector/DebtPayModel.php
+++ b/WellnessLiving/Wl/Collector/DebtPayModel.php
@@ -2,7 +2,6 @@
 
 namespace WellnessLiving\Wl\Collector;
 
-use WellnessLiving\Core\Locale\CurrencySid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\WlPayMethodSid;
 
@@ -13,7 +12,6 @@ class DebtPayModel extends WlModelAbstract
 {
   /**
    * The currency of the payment.
-   * One of {@link CurrencySid} constants.
    *
    * Important! The currency must coincide with currency of the debt that was sent to collections.
    *
diff --git a/WellnessLiving/Wl/Coupon/CouponList/ListModel.php b/WellnessLiving/Wl/Coupon/CouponList/ListModel.php
index 11dc7ba8..9c90a4d2 100644
--- a/WellnessLiving/Wl/Coupon/CouponList/ListModel.php
+++ b/WellnessLiving/Wl/Coupon/CouponList/ListModel.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Coupon\CouponList;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Coupon\WlTypeSid;
 
 /**
  * Retrieves a list of gift cards.
@@ -17,7 +16,7 @@ class ListModel extends WlModelAbstract
    *     int <var>id_type</var>
    *   </dt>
    *   <dd>
-   *     The type of coupon. One of {@link WlTypeSid} constants.
+   *     The type of coupon.
    *   </dd>
    *   <dt>
    *     string <var>k_coupon</var>
diff --git a/WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php b/WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php
deleted file mode 100644
index e641bdfe..00000000
--- a/WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Coupon;
-
-/**
- * Purchase restrictions.
- *
- * Last used ID: 3.
- */
-class PurchaseRestrictionSid
-{
-  /**
-   * Purchase option available for all clients.
-   */
-  const ALL = 1;
-
-  /**
-   * Purchase option introductory offer, available for new clients only.
-   */
-  const INTRODUCTORY = 2;
-
-  /**
-   * Purchase option available for clients with special login type or member group.
-   */
-  const TYPE = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Coupon/WlTypeSid.php b/WellnessLiving/Wl/Coupon/WlTypeSid.php
deleted file mode 100644
index 2629340d..00000000
--- a/WellnessLiving/Wl/Coupon/WlTypeSid.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Coupon;
-
-/**
- * List of possible types of Gift Cards.
- */
-class WlTypeSid
-{
-  /**
-   * Amount Gift Card.
-   * Only one card of this type can be created in one business.
-   */
-  const AMOUNT = 2;
-
-  /**
-   * Product Gift Card.
-   * Many cards of this type can be created in one business.
-   * Each card contains list of products.
-   */
-  const COMPONENT = 1;
-
-  /**
-   * Quick Gift Card.
-   * Only one card of this type can be created in one business.
-   */
-  const QUICK = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php b/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
index e0f919d5..4f3f5148 100644
--- a/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
+++ b/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
@@ -5,7 +5,6 @@
 use WellnessLiving\Core\a\AGenderSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Business\Config\BusinessConfigModel;
-use WellnessLiving\Wl\Virtual\VirtualProviderSid;
 
 /**
  * Retrieves information about an event element.
@@ -217,6 +216,12 @@ class ElementModel extends WlModelAbstract
    *   <dd>
    *     The name of the timezone in which the session is held.
    *   </dd>
+   *   <dt>
+   *     string <var>text_room</var>
+   *   </dt>
+   *   <dd>
+   *     The room of the event.
+   *   </dd>
    * </dl>
    *
    * @get result
@@ -387,7 +392,7 @@ class ElementModel extends WlModelAbstract
   public $i_staff_image_width = 0;
 
   /**
-   * The virtual provider ID. One of the {@link VirtualProviderSid} constants.
+   * The virtual provider ID.
    *
    * `null` if an in-person event.
    *
diff --git a/WellnessLiving/Wl/Event/EventListModel.php b/WellnessLiving/Wl/Event/EventListModel.php
index d07366db..6ed7c83b 100644
--- a/WellnessLiving/Wl/Event/EventListModel.php
+++ b/WellnessLiving/Wl/Event/EventListModel.php
@@ -2,8 +2,6 @@
 
 namespace WellnessLiving\Wl\Event;
 
-use WellnessLiving\Core\Drive\DriveTypeSid;
-use WellnessLiving\Core\Sid\YesNoSid;
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\AFlagSid;
 use WellnessLiving\WlModelAbstract;
@@ -64,7 +62,7 @@ class EventListModel extends WlModelAbstract
    *     <dt>int <var>i_width_src</var></dt>
    *     <dd>The source image's width.</dd>
    *     <dt>int <var>id_type_src</var></dt>
-   *     <dd>The image type ID. One of the {@link DriveTypeSid} constants.</dd>
+   *     <dd>The image type ID.</dd>
    *     <dt>bool <var>is_resize</var></dt>
    *     <dd>This will be `true` if the image has been resized. `false` otherwise.</dd>
    *     <dt>bool <var>is_old</var></dt>
@@ -211,8 +209,7 @@ class EventListModel extends WlModelAbstract
 
   /**
    * List of IDs to include/exclude virtual events.
-   * If the only ID is {@link YesNoSid::YES}, only virtual events are included.
-   * If the only ID is {@link YesNoSid::NO}, only in-person events are included.
+   *
    * Otherwise, no filtering is done.
    *
    * @get get
diff --git a/WellnessLiving/Wl/Field/WlFieldGeneralSid.php b/WellnessLiving/Wl/Field/WlFieldGeneralSid.php
index 0597c0c1..5cc3831f 100644
--- a/WellnessLiving/Wl/Field/WlFieldGeneralSid.php
+++ b/WellnessLiving/Wl/Field/WlFieldGeneralSid.php
@@ -2,8 +2,6 @@
 
 namespace WellnessLiving\Wl\Field;
 
-use WellnessLiving\Wl\Login\Type\SystemSid;
-
 /**
  * List of general fields in user's profile.
  *
@@ -83,7 +81,7 @@ class WlFieldGeneralSid
   const REFERRER = 12;
 
   /**
-   * Client status (client/member types). System default client/member types see {@link SystemSid}.
+   * Client status (client/member types).
    */
   const STATUS = 14;
 
diff --git a/WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php b/WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php
deleted file mode 100644
index 9a98ae14..00000000
--- a/WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Integration\Autymate;
-
-/**
- * List of modes used to access Autymate.
- */
-class AutymateAccessModeSid
-{
-  /**
-   * Access Autymate to create an initial enrollment.
-   */
-  const ENROLL = 1;
-
-  /**
-   * Access Autymate to view the dashboard.
-   */
-  const VIEW = 2;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php b/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php
index 36494170..f0c897d4 100644
--- a/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php
+++ b/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php
@@ -12,8 +12,6 @@ class AutymateActivateModel extends WlModelAbstract
   /**
    * The mode of the request.
    *
-   * One of {@link AutymateAccessModeSid} constants.
-   *
    * @get get
    * @var int
    */
@@ -22,8 +20,6 @@ class AutymateActivateModel extends WlModelAbstract
   /**
    * The new status of the enrollment. If `0`, the current status is returned.
    *
-   * One of {@link AutymateStatusSid} constants.
-   *
    * @get get,result
    * @var int
    */
diff --git a/WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php b/WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php
deleted file mode 100644
index f200aea4..00000000
--- a/WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Integration\Autymate;
-
-/**
- * List of statuses of an Autymate enrollment notification.
- */
-class AutymateStatusSid
-{
-  /**
-   * Autymation enrollment is active.
-   */
-  const ACTIVE = 1;
-
-  /**
-   * Autymation enrollment is no longer active.
-   */
-  const INACTIVE = 2;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php b/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php
index 33a82447..dbde70b5 100644
--- a/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php
@@ -3,9 +3,6 @@
 namespace WellnessLiving\Wl\Login\Attendance\Add;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Login\Attendance\AddOptionSid;
-use WellnessLiving\Wl\Mode\ModeSid;
-use WellnessLiving\Wl\Visit\WlVisitSid;
 
 /**
  * Adds a client to an attendance list.
@@ -72,7 +69,6 @@ class AddModel extends WlModelAbstract
 
   /**
    * Determines how the payment was handled for the session.
-   * One of the {@link AddOptionSid} constants.
    *
    * @post post
    * @var int
@@ -81,7 +77,7 @@ class AddModel extends WlModelAbstract
 
   /**
    * Determines how the session was booked.
-   * One of the {@link ModeSid} constants.
+   *
    * We recommend using the `WEB_BACKEND` value.
    *
    * @post post
@@ -91,7 +87,6 @@ class AddModel extends WlModelAbstract
 
   /**
    * The status of the visit.
-   * One of the {@link WlVisitSid} constants.
    *
    * @post result
    * @var int
diff --git a/WellnessLiving/Wl/Login/Attendance/AddOptionSid.php b/WellnessLiving/Wl/Login/Attendance/AddOptionSid.php
deleted file mode 100644
index 629a8b1c..00000000
--- a/WellnessLiving/Wl/Login/Attendance/AddOptionSid.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Attendance;
-
-/**
- * List of options to add client to attendance list.
- */
-class AddOptionSid
-{
-  /**
-   * Add client to attendance list and charge his account.
-   */
-  const DEBIT = 2;
-
-  /**
-   * Add client to attendance list and pay now.
-   */
-  const PAY = 3;
-
-  /**
-   * Add client to attendance list without payment.
-   */
-  const UNPAID = 1;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
index d8c6e0b3..32b58636 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Login\Attendance;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Schedule\Page\WlVisitNoteSid;
 use WellnessLiving\Wl\WlSaleSid;
 use WellnessLiving\Wl\WlServiceSid;
 
@@ -238,7 +237,7 @@ class AttendanceInfoByTokenModel extends WlModelAbstract
   public $i_duration;
 
   /**
-   * Type of note. One of {@link WlVisitNoteSid} constants. <tt>false</tt> if notes not allowed.
+   * Type of note. <tt>false</tt> if notes not allowed.
    *
    * @get result
    * @var int|false
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php
index a201ddc4..8ad53718 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Login\Attendance;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Schedule\Page\WlVisitNoteSid;
 use WellnessLiving\Wl\WlSaleSid;
 use WellnessLiving\Wl\WlServiceSid;
 
@@ -237,7 +236,7 @@ class AttendanceInfoModel extends WlModelAbstract
   public $i_duration;
 
   /**
-   * Type of note. One of {@link WlVisitNoteSid} constants. <tt>false</tt> if notes not allowed.
+   * Type of note. <tt>false</tt> if notes not allowed.
    *
    * @get result
    * @var int|false
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php
index bd9d9df9..6bcc0955 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php
@@ -4,7 +4,6 @@
 
 use WellnessLiving\Core\a\AGenderSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Visit\WlVisitSid;
 use WellnessLiving\Wl\WlProgramSid;
 
 /**
@@ -76,7 +75,7 @@ class AttendanceListByTokenModel extends WlModelAbstract
    *   <dt>int <var>id_program</var></dt>
    *   <dd>The program ID of the Purchase Option. One of the {@link WlProgramSid} constants.</dd>
    *   <dt>int <var>id_visit</var></dt>
-   *   <dd>The status of the visit. One of the {@link WlVisitSid} constants.</dd>
+   *   <dd>The status of the visit.</dd>
    *   <dt>bool <var>is_attend</var></dt>
    *   <dd>This will be <tt>true</tt> if the client has attended the visit.</dd>
    *   <dt>bool <var>is_duration_pass</var></dt>
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php
index 14157c9e..579eaf81 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php
@@ -4,7 +4,6 @@
 
 use WellnessLiving\Core\a\AGenderSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Visit\WlVisitSid;
 use WellnessLiving\Wl\WlProgramSid;
 
 /**
@@ -75,7 +74,7 @@ class AttendanceListModel extends WlModelAbstract
    *   <dt>int <var>id_program</var></dt>
    *   <dd>The program ID of the Purchase Option. One of the {@link WlProgramSid} constants.</dd>
    *   <dt>int <var>id_visit</var></dt>
-   *   <dd>The status of the visit. One of the {@link WlVisitSid} constants.</dd>
+   *   <dd>The status of the visit.</dd>
    *   <dt>bool <var>is_attend</var></dt>
    *   <dd>This will be <tt>true</tt> if the client has attended the visit.</dd>
    *   <dt>bool <var>is_duration_pass</var></dt>
diff --git a/WellnessLiving/Wl/Login/Member/MemberValidate63Model.php b/WellnessLiving/Wl/Login/Member/MemberValidate63Model.php
new file mode 100644
index 00000000..38d0fa1a
--- /dev/null
+++ b/WellnessLiving/Wl/Login/Member/MemberValidate63Model.php
@@ -0,0 +1,110 @@
+<?php
+
+namespace WellnessLiving\Wl\Login\Member;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Checking whether there is something that prevents the user from using the business.
+ */
+class MemberValidate63Model extends WlModelAbstract
+{
+  /**
+   * List of fields if the user has empty profile fields, which are required for booking.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_empty_fields_booking = [];
+
+  /**
+   * List of fields if the user has empty profile fields, which are required for registration.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_empty_fields_registration = [];
+
+  /**
+   * List of fields if the user has empty profile fields, which are required.
+   *
+   * @get result
+   * @var array
+   */
+  public $a_empty_fields_required = [];
+
+  /**
+   * `true` If the user has credit cards on profile, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_credit_card = false;
+
+  /**
+   * `true` if the user has an outstanding contract, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_outstanding_contract = false;
+
+  /**
+   * `true` If the user has an outstanding waiver for the business, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_outstanding_waiver = false;
+
+  /**
+   * `true` If the user has pending registration quizzes to complete, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $has_pending_quizzes = false;
+
+  /**
+   * `true` If the user has to provide credit card details before booking, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_booking_require_card = false;
+
+  /**
+   * `true` If the user has to provide credit card details to finish their registration, otherwise `false`.
+   *
+   * @get result
+   * @var bool
+   */
+  public $is_register_require_card = false;
+
+  /**
+   * Key of the business.
+   *
+   * @get get
+   * @var string
+   */
+  public $k_business = '0';
+
+  /**
+   * Home user`s location.
+   * `null` if user has not home location.
+   *
+   * @get result
+   * @var string|null
+   */
+  public $k_location = null;
+
+  /**
+   * The user's key.
+   *
+   * @get get
+   * @var string
+   */
+  public $uid = '0';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Member/MemberValidateModel.php b/WellnessLiving/Wl/Login/Member/MemberValidateModel.php
index 77be264d..ad63af63 100644
--- a/WellnessLiving/Wl/Login/Member/MemberValidateModel.php
+++ b/WellnessLiving/Wl/Login/Member/MemberValidateModel.php
@@ -6,6 +6,8 @@
 
 /**
  * Checking whether there is something that prevents the user from using the business.
+ *
+ * @deprecated Use instead {@link MemberValidate63Model}.
  */
 class MemberValidateModel extends WlModelAbstract
 {
diff --git a/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php b/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php
index 1390052c..57297ee2 100644
--- a/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php
+++ b/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Login\Promotion\Convert;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Promotion\Convert\PromotionConvertSid;
 use WellnessLiving\Wl\WlProgramSid;
 
 /**
@@ -75,7 +74,7 @@ class ConvertModel extends WlModelAbstract
   public $dl_hold_start = '';
 
   /**
-   * The conversion ID. One of the {@link PromotionConvertSid} constants.
+   * The conversion ID.
    *
    * @get result
    * @post get
@@ -84,7 +83,7 @@ class ConvertModel extends WlModelAbstract
   public $id_convert = null;
 
   /**
-   * When conversion should be done. One of the {@link ConvertWhenSid} constants.
+   * When conversion should be done.
    *
    * `null` if it's not set yet.
    *
diff --git a/WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php b/WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php
deleted file mode 100644
index e55e29cb..00000000
--- a/WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Promotion\Convert;
-
-/**
- * Different types of conversion behavior: when and how it should be converted.
- */
-class ConvertWhenSid
-{
-  /**
-   * Purchase Option converts one day after the scheduled expiration date and the client is charged for the new purchase option.
-   */
-  const EXPIRATION_PAID = 1;
-
-  /**
-   * Purchase Option converts now and the client is not charged for the new Purchase Option.
-   */
-  const NOW_FREE = 2;
-
-  /**
-   * Purchase Option converts now and the client is changed for the new Purchase Option.
-   */
-  const NOW_PAID = 3;
-
-  /**
-   * Purchase Option converts on the specified date and the client is charged for the new Purchase Option.
-   */
-  const SCHEDULE_PAID = 4;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Type/LoginTypeModel.php b/WellnessLiving/Wl/Login/Type/LoginTypeModel.php
index e6c721d8..3a6da498 100644
--- a/WellnessLiving/Wl/Login/Type/LoginTypeModel.php
+++ b/WellnessLiving/Wl/Login/Type/LoginTypeModel.php
@@ -18,7 +18,7 @@ class LoginTypeModel extends WlModelAbstract
    * <dl>
    *   <dt>bool <var>id_client_type</var></dt>
    *   <dd>
-   *     System ID. One of {@link SystemSid} constants.
+   *     System ID.
    *   </dd>
    *   <dt>bool <var>is_member</var></dt>
    *   <dd>
diff --git a/WellnessLiving/Wl/Login/Type/SystemSid.php b/WellnessLiving/Wl/Login/Type/SystemSid.php
deleted file mode 100644
index 21ac6bf5..00000000
--- a/WellnessLiving/Wl/Login/Type/SystemSid.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Login\Type;
-
-/**
- * System default client/member types.
- *
- * If user purchases any membership it becomes member.
- * If user purchases any pass it becomes client.
- *
- * Last ID: 3.
- */
-class SystemSid
-{
-  /**
-   * Active client or member.
-   */
-  const ACTIVE = 1;
-
-  /**
-   * Inactive client or member.
-   */
-  const INACTIVE = 2;
-
-  /**
-   * Newcomer, who has not bought anything that can make him a regular client of the business.
-   */
-  const PROSPECT = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Mode/ModeSid.php b/WellnessLiving/Wl/Mode/ModeSid.php
deleted file mode 100644
index b0c585f0..00000000
--- a/WellnessLiving/Wl/Mode/ModeSid.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Mode;
-
-/**
- * The source of visit.
- *
- * Last used ID: 25.
- */
-class ModeSid
-{
-  /**
-   * Registered through <tt>Azure</tt>.
-   */
-  const AZURE = 21;
-
-  /**
-   * Visit has been created by <tt>CENTRED</tt>.
-   */
-  const CENTRED = 23;
-
-  /**
-   * Visit has been created by <tt>ClassPass</tt>.
-   */
-  const CLASSPASS_BOOKING = 8;
-
-  /**
-   * Debt paid via collections.
-   */
-  const COLLECTIONS = 22;
-
-  /**
-   * Action made via email.
-   */
-  const EMAIL = 18;
-
-  /**
-   * Indicating that the source is Facebook.
-   */
-  const FACEBOOK = 20;
-
-  /**
-   * Indicating that the source is Google.
-   */
-  const GOOGLE = 19;
-
-  /**
-   * Visit has been created by Google Booking Service.
-   */
-  const GOOGLE_BOOKING = 7;
-
-  /**
-   * Visit has been created by <tt>GymPass</tt>.
-   */
-  const GYMPASS_BOOKING = 14;
-
-  /**
-   * Visit was created during import.
-   */
-  const IMPORT = 5;
-
-  /**
-   * Action made via microsite.
-   *
-   * It is also names as directory listing.
-   */
-  const MICROSITE = 12;
-
-  /**
-   * Indicating that the source is Microsoft.
-   */
-  const MICROSOFT = 24;
-
-  /**
-   * Client booked session on My Presence Site.
-   */
-  const MY_PRESENCE_SITE = 13;
-
-  /**
-   * Action made via SMS.
-   */
-  const SMS = 17;
-
-  /**
-   * Staff booked session from spa backend.
-   */
-  const SPA_BACKEND = 4;
-
-  /**
-   * Client booked session from spa frontend.
-   */
-  const SPA_FRONTEND = 3;
-
-  /**
-   * Created by system.
-   */
-  const SYSTEM = 10;
-
-  /**
-   * Means that we did not define mode.
-   */
-  const UNDEFINED = 6;
-
-  /**
-   * Client booked session from Attendance Web App.
-   */
-  const WEB_APP_ATTENDANCE = 16;
-
-  /**
-   * Client checked-in for the session through Check-In Web App.
-   */
-  const WEB_APP_CHECK_IN = 15;
-
-  /**
-   * Staff booked session for client from website backend.
-   */
-  const WEB_BACKEND = 2;
-
-  /**
-   * Client booked session from website frontend.
-   */
-  const WEB_FRONTEND = 1;
-
-  /**
-   * Action made via widget (purchase, book etc).
-   */
-  const WIDGET = 11;
-
-  /**
-   * Action from Zapier.
-   */
-  const ZAPIER = 25;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Account/AccountModel.php b/WellnessLiving/Wl/Pay/Account/AccountModel.php
index d23498ee..c348368e 100644
--- a/WellnessLiving/Wl/Pay/Account/AccountModel.php
+++ b/WellnessLiving/Wl/Pay/Account/AccountModel.php
@@ -2,7 +2,6 @@
 
 namespace WellnessLiving\Wl\Pay\Account;
 
-use WellnessLiving\Core\Locale\CurrencySid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -19,7 +18,7 @@ class AccountModel extends WlModelAbstract
    *     int <var>id_currency</var>
    *   </dt>
    *   <dd>
-   *     Currency ID. One of {@link CurrencySid} constant.
+   *     Currency ID.
    *   </dd>
    *   <dt>
    *     string <var>k_currency</var>
diff --git a/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php b/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
index a5a695a8..23ff2720 100644
--- a/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
+++ b/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
@@ -4,7 +4,6 @@
 
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Fills a user account with a specified payment.
@@ -148,7 +147,7 @@ class ChargeModel extends WlModelAbstract
   public $a_pay_form = [];
 
   /**
-   * The source mode key. One of the {@link ModeSid} constants.
+   * The source mode key.
    *
    * @post post
    * @var int
diff --git a/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php b/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
index 650ed301..3acc60ac 100644
--- a/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
+++ b/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
@@ -2,7 +2,6 @@
 
 namespace WellnessLiving\Wl\Pay\Form;
 
-use WellnessLiving\Core\Locale\LocaleSid;
 use WellnessLiving\Core\a\ACardSystemSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\WlPayMethodSid;
@@ -123,7 +122,6 @@ class EnvironmentModel extends WlModelAbstract
    *
    * @get result
    * @var int|null
-   * @see LocaleSid
    */
   public $id_locale;
 
diff --git a/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSDeviceTypeSid.php b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSDeviceTypeSid.php
new file mode 100644
index 00000000..cc2a39f8
--- /dev/null
+++ b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSDeviceTypeSid.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace WellnessLiving\Wl\Pay\Processor\Nuvei\Code;
+
+/**
+ * CS Device Type code class.
+ *
+ * Last used ID: 2
+ */
+class CSDeviceTypeSid
+{
+  /**
+   * Indicate the package is initialed from register end.
+   */
+  const REGISTER_INDENTIFICATION = 1;
+
+  /**
+   * Indicate communication is initialed from terminal end.
+   */
+  const TERMINAL_INDENTIFICATION = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSExchangeActionSid.php b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSExchangeActionSid.php
new file mode 100644
index 00000000..3406e973
--- /dev/null
+++ b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSExchangeActionSid.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace WellnessLiving\Wl\Pay\Processor\Nuvei\Code;
+
+/**
+ * CS Exchange Action code class.
+ *
+ * Last used ID: 7
+ */
+class CSExchangeActionSid
+{
+  /**
+   * Cancel the previous transaction.
+   */
+  const CANCEL_TRANSACTION = 1;
+
+  /**
+   * For cancel transaction. It causes this transaction in cancellation status.
+   */
+  const FORCE_CANCEL_TRANSACTION = 2;
+
+  /**
+   * Update status.
+   */
+  const NOTIFY = 3;
+
+  /**
+   * Wait for response from `RecipientParty`.
+   */
+  const POLL_THE_RESPONSE = 4;
+
+  /**
+   * Retrieve the request/response from cloud.
+   */
+  const RECOVER_REQUEST_RESPONSE = 5;
+
+  /**
+   * Retrieve the response from cloud.
+   */
+  const RETRIEVE_RESPONSE = 6;
+
+  /**
+   * Check the terminal status.
+   */
+  const STATUS_CHECK = 7;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSExchangeTypeSid.php b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSExchangeTypeSid.php
new file mode 100644
index 00000000..80707467
--- /dev/null
+++ b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSExchangeTypeSid.php
@@ -0,0 +1,63 @@
+<?php
+
+namespace WellnessLiving\Wl\Pay\Processor\Nuvei\Code;
+
+/**
+ * CS Exchange Type class.
+ *
+ * Last used ID: 10
+ */
+class CSExchangeTypeSid
+{
+  /**
+   * Accept the request from terminal.
+   */
+  const ACCEPT = 1;
+
+  /**
+   * Transaction cannot be cancelled.
+   */
+  const CANNOT_CANCEL = 2;
+
+  /**
+   * Register receives the response from terminal and ACK to cloud.
+   */
+  const COMPLETION = 3;
+
+  /**
+   * Duplicate transaction found.
+   */
+  const DUPLICATION = 4;
+
+  /**
+   * Cloud receives Auth from register.
+   */
+  const INITIATED = 5;
+
+  /**
+   * A pending transaction on the cloud.
+   */
+  const PENDING = 6;
+
+  /**
+   * Terminal sends response to cloud.
+   */
+  const RESPONSE = 7;
+
+  /**
+   * Timeout/ Expired.
+   */
+  const TIMEOUT = 8;
+
+  /**
+   * Transaction has been cancelled.
+   */
+  const TRANSACTION_CANCELLED = 9;
+
+  /**
+   * Transaction not found.
+   */
+  const TRANSACTION_NOT_FOUND = 10;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSMessageFunctionSid.php b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSMessageFunctionSid.php
new file mode 100644
index 00000000..80896e81
--- /dev/null
+++ b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSMessageFunctionSid.php
@@ -0,0 +1,188 @@
+<?php
+
+namespace WellnessLiving\Wl\Pay\Processor\Nuvei\Code;
+
+/**
+ * CS Message Function code class.
+ *
+ * Last used ID: 35
+ */
+class CSMessageFunctionSid
+{
+  /**
+   * Request for reconciliation.
+   */
+  const BATCH_SETTLEMENT_REQUEST = 12;
+
+  /**
+   * Response for reconciliation.
+   */
+  const BATCH_SETTLEMENT_RESPONSE = 11;
+
+  /**
+   * Payment card (credit or debit).
+   */
+  const CARD = 35;
+
+  /**
+   * Request to complete Pre-Auth.
+   */
+  const COMPLETION_REQUEST = 4;
+
+  /**
+   * Response to pre-auth completion request.
+   */
+  const COMPLETION_RESPONSE = 3;
+
+  /**
+   * Send financial data from terminal to point of sale.
+   */
+  const FINANCIAL_SALE_TO_POS = 7;
+
+  /**
+   * Request for authorization with financial capture.
+   */
+  const PRE_AUTH_REQUEST = 6;
+
+  /**
+   * Response for authorization with financial capture.
+   */
+  const PRE_AUTH_RESPONSE = 5;
+
+  /**
+   * Request for Refund.
+   */
+  const REFUND_REQUEST = 14;
+
+  /**
+   * Response for Refund.
+   */
+  const REFUND_RESPONSE = 13;
+
+  /**
+   * Request for reporting.
+   */
+  const REPORT_REQUEST = 16;
+
+  /**
+   * Report response.
+   */
+  const REPORT_RESPONSE = 15;
+
+  /**
+   * Request ticket info from POS.
+   */
+  const REQUEST_ALL_TICKET_TO_POI = 29;
+
+  /**
+   * Request for Crypto Currency.
+   */
+  const REQUEST_CRYPTO_TO_POI = 33;
+
+  /**
+   * Notify Ticket # and amount which terminal doing.
+   */
+  const REQUEST_SALE_WITH_TICKET_TO_POS = 28;
+
+  /**
+   * Request all ticket/invoice list from POS.
+   */
+  const REQUEST_TABLET_TO_POI = 25;
+
+  /**
+   * Unlock Ticket Response from Register.
+   */
+  const REQUEST_UNLOCK_TICKET_TO_POS = 32;
+
+  /**
+   * Response from point of sale to terminal.
+   */
+  const RESPONSE_CONFIRM_FROM_POS = 8;
+
+  /**
+   * Response to Crypto Currency.
+   */
+  const RESPONSE_CRYPTO_FROM_POS = 34;
+
+  /**
+   * Response from Cloud Server.
+   */
+  const RESPONSE_SALE_FROM_POS = 27;
+
+  /**
+   * Response to invoice/ticket detail list to terminal.
+   */
+  const RESPONSE_TABLE_FROM_POS = 26;
+
+  /**
+   * Response to ticket detail list to terminal.
+   */
+  const RESPONSE_TICKET_FROM_POS = 30;
+
+  /**
+   * Request all ticket/invoice list from POS.
+   */
+  const RESPONSE_UNLOCK_TICKET_FROM_POS = 31;
+
+  /**
+   * Advice for reversal with financial capture.
+   */
+  const REVERSAL_REQUEST = 10;
+
+  /**
+   * Advice response for reversal with financial capture.
+   */
+  const REVERSAL_RESPONSE = 9;
+
+  /**
+   * Request for Sale without financial capture.
+   */
+  const SALE_REQUEST = 1;
+
+  /**
+   * Response for Sale without financial capture.
+   */
+  const SALE_RESPONSE = 2;
+
+  /**
+   * Request the management of a session: login, logout and diagnosis services. Initiated by the Sale system.
+   */
+  const SESSION_MANAGEMENT_REQUEST = 20;
+
+  /**
+   * For PAT request.
+   */
+  const SESSION_MANAGEMENT_REQUEST_Q = 18;
+
+  /**
+   * Response to a session management request to initiate/terminate a session.
+   */
+  const SESSION_MANAGEMENT_RESPONSE = 19;
+
+  /**
+   * For PAT response.
+   */
+  const SESSION_MANAGEMENT_RESPONSE_P = 17;
+
+  /**
+   * For TIP adjustment.
+   */
+  const TIP_ADJUSTMENT_REQUEST = 22;
+
+  /**
+   * For TIP adjustment.
+   */
+  const TIP_ADJUSTMENT_RESPONSE = 21;
+
+  /**
+   * Only for Tip adjustment on terminal end.
+   */
+  const TIP_ADJUSTMENT_SYNC_REQUEST = 24;
+
+  /**
+   * Only for Tip adjustment on terminal end from register.
+   */
+  const TIP_ADJUSTMENT_SYNC_RESPONSE = 23;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSResponseReasonSid.php b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSResponseReasonSid.php
new file mode 100644
index 00000000..bfb26d35
--- /dev/null
+++ b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSResponseReasonSid.php
@@ -0,0 +1,100 @@
+<?php
+
+namespace WellnessLiving\Wl\Pay\Processor\Nuvei\Code;
+
+/**
+ * CS Response reason code class.
+ *
+ * Last used ID: 16
+ */
+class CSResponseReasonSid
+{
+  /**
+   * The Initiator of the request has sent an Abort message request, which was accepted and processed.
+   */
+  const ABORTED = 1;
+
+  /**
+   * The system is busy, try later.
+   */
+  const BUSY = 2;
+
+  /**
+   * The user has aborted the transaction on the PED keyboard, for instance during PIN entering.
+   */
+  const CANCEL = 3;
+
+  /**
+   * Device out of order.
+   */
+  const DEVICE_OUT = 4;
+
+  /**
+   * If the Input Device request a `NotifyCardInputFlag` and the Customer enters a card in the card reader without answers to the Input command,
+   * the terminal abort the Input command processing,
+   * and answer a dedicated `ErrorCondition` value in the Input response message.
+   */
+  const INSERTED_CARD = 5;
+
+  /**
+   * The card entered by the Customer cannot be processed by the terminal because this card is not configured in the system.
+   */
+  const INVALID_CARD = 6;
+
+  /**
+   * The transaction is still in progress and then the command cannot be processed.
+   */
+  const IN_PROGRESS = 15;
+
+  /**
+   * Not logged in.
+   */
+  const LOGGED_OUT = 7;
+
+  /**
+   * A service request is sent during a Service dialogue.
+   * A combination of services not possible to provide.
+   * During the `DeviceInitialisationCardReader` message processing,
+   * the user has entered a card which has to be protected by the terminal,
+   * and cannot be processed with this device request from the external, and then the Sale System.
+   */
+  const NOT_ALLOWED = 8;
+
+  /**
+   * The transaction is not found (e.g. for a reversal or a repeat).
+   */
+  const NOT_FOUND = 12;
+
+  /**
+   * Some sale items are not payable by the card proposed by the Customer.
+   */
+  const PAYMENT_RESTRICTION = 10;
+
+  /**
+   * The transaction is refused by the host or by the local rules associated to the card or the terminal.
+   */
+  const REFUSAL = 11;
+
+  /**
+   * The hardware is not available (absent, not configured...).
+   */
+  const UNAVAILABLE_DEVICE = 13;
+
+  /**
+   * The service is not available (not implemented, not configured, protocol version too old...).
+   */
+  const UNAVAILABLE_SERVICE = 14;
+
+  /**
+   * Acquirer or any host is unreachable or has not answered to an online request, so is considered as temporary unavailable.
+   * Depending on the Sale context, the request could be repeated (to be compared with "Refusal").
+   */
+  const UNREACHABLE_HOST = 9;
+
+  /**
+   * The user has entered the PIN on the PED keyboard and the verification fails.
+   */
+  const WRONG_PIN = 16;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSResponseSid.php b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSResponseSid.php
new file mode 100644
index 00000000..22b11320
--- /dev/null
+++ b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSResponseSid.php
@@ -0,0 +1,115 @@
+<?php
+
+namespace WellnessLiving\Wl\Pay\Processor\Nuvei\Code;
+
+/**
+ * CS Response code class.
+ *
+ * Last used ID: 20
+ */
+class CSResponseSid
+{
+  /**
+   * Service has been successfully provided.
+   */
+  const APPROVED = 1;
+
+  /**
+   * Transaction cannot be cancelled.
+   */
+  const CANNOT_CANCEL = 2;
+
+  /**
+   * Service is declined.
+   */
+  const DECLINED = 3;
+
+  /**
+   * Device is busy.
+   */
+  const DEVICE_BUSY = 4;
+
+  /**
+   * Duplicate transmission.
+   */
+  const DUPLICATE_TRANSMISSION = 5;
+
+  /**
+   * Invalid identification data for the sender.
+   */
+  const INITIATING_PARTY = 6;
+
+  /**
+   * Invalid envelope of the message.
+   */
+  const INVALID_MESSAGE = 7;
+
+  /**
+   * Type of message the recipient receives is unknown or unsupported.
+   */
+  const MESSAGE_TYPE = 8;
+
+  /**
+   * NO Ticket/Emtpy.
+   */
+  const NO_TICKET = 9;
+
+  /**
+   * Invalid message: At least one of the data element or data structure is not present,
+   * the format, or the content of one data element or one data structure is not correct.
+   */
+  const PARSING_ERROR = 10;
+
+  /**
+   * Version of the protocol couldn't be supported by the recipient.
+   */
+  const PROTOCOL_VERSION = 11;
+
+  /**
+   * Invalid identification data for the receiver.
+   */
+  const RECIPIENT_PARTY = 12;
+
+  /**
+   * Ticket is locked.
+   */
+  const TICKET_LOCKED = 13;
+
+  /**
+   * Timeout error.
+   */
+  const TIMEOUT_ERROR = 14;
+
+  /**
+   * Transaction has been cancelled.
+   */
+  const TRANSACTION_CANCELLED = 16;
+
+  /**
+   * There is an unfinish transactions.
+   */
+  const TRANSACTION_IN_PROCESS = 15;
+
+  /**
+   * Transaction has been cancelled.
+   */
+  const TRANSACTION_NOT_FOUND = 17;
+
+  /**
+   * Not possible to process the message, for instance the security module is unavailable,
+   * the hardware is unavailable, or there is a problem of resource.
+   */
+  const UNABLE_TO_PROCESS = 18;
+
+  /**
+   * No relationship between register and terminal.
+   */
+  const UNMAPPED = 19;
+
+  /**
+   * Transaction with unadjusted tip.
+   */
+  const UN_ADJUSTED_TIP = 20;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSServiceContentSid.php b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSServiceContentSid.php
new file mode 100644
index 00000000..e5672542
--- /dev/null
+++ b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSServiceContentSid.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace WellnessLiving\Wl\Pay\Processor\Nuvei\Code;
+
+/**
+ * CS Service Content code class.
+ *
+ * Last used ID: 6
+ */
+class CSServiceContentSid
+{
+  /**
+   * The Sale System requests to the terminal to perform a payment (Purchase/ Refund/PWCB/MOTO Payment/...).
+   */
+  const FINANCIAL_PAYMENT_REQUEST = 4;
+
+  /**
+   * The terminal sends a response to a payment request (Purchase/refund/ PWCB/MOTO Payment/...).
+   */
+  const FINANCIAL_PAYMENT_RESPONSE = 2;
+
+  /**
+   * The Sale System request to the terminal different kinds of transaction reconciliation.
+   */
+  const FINANCIAL_RECONCILIATION_REQUEST = 6;
+
+  /**
+   * The terminal sends a response to a reconciliation request.
+   */
+  const FINANCIAL_RECONCILIATION_RESPONSE = 1;
+
+  /**
+   * The Sale System requests to the terminal to perform a reversal partial or complete to cancel a former payment service.
+   */
+  const FINANCIAL_REVERSAL_REQUEST = 5;
+
+  /**
+   * The terminal sends a response to a reversal request.
+   */
+  const FINANCIAL_REVERSAL_RESPONSE = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSTransactionTypeSid.php b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSTransactionTypeSid.php
new file mode 100644
index 00000000..26be8812
--- /dev/null
+++ b/WellnessLiving/Wl/Pay/Processor/Nuvei/Code/CSTransactionTypeSid.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace WellnessLiving\Wl\Pay\Processor\Nuvei\Code;
+
+/**
+ * CS Transaction Type code class.
+ *
+ * Last used ID: 7
+ */
+class CSTransactionTypeSid
+{
+  /**
+   * Balance enquiry.
+   */
+  const BALANCE = 1;
+
+  /**
+   * Card Payment.
+   */
+  const CARD_PAYMENT = 2;
+
+  /**
+   * Card Verification.
+   */
+  const CARD_VERIFICATION = 3;
+
+  /**
+   * Cash Payment.
+   */
+  const CASH_PAYMENT = 7;
+
+  /**
+   * Quasi-Cash.
+   */
+  const QUASI_CASH = 4;
+
+  /**
+   * Refund Transaction.
+   */
+  const REFUND = 5;
+
+  /**
+   * Outstanding Reservation transactions.
+   */
+  const RESERVATION = 6;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Profile/Activity/ElementModel.php b/WellnessLiving/Wl/Profile/Activity/ElementModel.php
index 5733f468..96171cc8 100644
--- a/WellnessLiving/Wl/Profile/Activity/ElementModel.php
+++ b/WellnessLiving/Wl/Profile/Activity/ElementModel.php
@@ -4,7 +4,6 @@
 
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Login\WlLoginActivityTypeSid;
-use WellnessLiving\Wl\WlDesignIconSid;
 
 /**
  * Returns detailed information about a single client activity.
@@ -84,7 +83,7 @@ class ElementModel extends WlModelAbstract
   public $i_spend;
 
   /**
-   * The ID of the icon that should be shown for this activity. One of {@link WlDesignIconSid} constants.
+   * The ID of the icon that should be shown for this activity.
    *
    * This will be `null` is no special icon for this activity.
    *
diff --git a/WellnessLiving/Wl/Profile/Contract/ContractModel.php b/WellnessLiving/Wl/Profile/Contract/ContractModel.php
index 83ae6470..93a06588 100644
--- a/WellnessLiving/Wl/Profile/Contract/ContractModel.php
+++ b/WellnessLiving/Wl/Profile/Contract/ContractModel.php
@@ -75,7 +75,7 @@ class ContractModel extends WlModelAbstract
 
   /**
    * The key of the purchase item in the database.
-   * The item key. Depends of {@link ContractModel::$id_purchase_item} property.
+   * The item key. Depends on {@link ContractModel::$id_purchase_item} property.
    *
    * @get get
    * @var string
diff --git a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
index bd26455a..59486a5c 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
@@ -5,7 +5,6 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Field\WlFieldGeneralSid;
 use WellnessLiving\Wl\Field\WlFieldTypeSid;
-use WellnessLiving\Wl\Profile\RegisterSourceSid;
 
 /**
  * An endpoint that displays client profile information.
@@ -111,11 +110,10 @@ class EditByTokenModel extends WlModelAbstract
 
   /**
    * Registration source ID.
-   * One of {@link RegisterSourceSid} constants.
    *
    * Used only to register new clients.
    * * If the client is already authorized, the field value will not be used.
-   * * If the client is not authorized and no value is set, {@link RegisterSourceSid::SELF} will be used.
+   * *
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Profile/Edit/EditModel.php b/WellnessLiving/Wl/Profile/Edit/EditModel.php
index 84519060..6a6e7e19 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditModel.php
@@ -6,7 +6,6 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Field\WlFieldGeneralSid;
 use WellnessLiving\Wl\Field\WlFieldTypeSid;
-use WellnessLiving\Wl\Profile\RegisterSourceSid;
 
 /**
  * Gets information about a client profile. This endpoint can also edit or create a profile.
@@ -138,11 +137,10 @@ class EditModel extends WlModelAbstract
 
   /**
    * Registration source ID.
-   * One of {@link RegisterSourceSid} constants.
    *
    * Used only to register new clients.
    * * If the client is already authorized, the field value will not be used.
-   * * If the client is not authorized and no value is set, {@link RegisterSourceSid::SELF} will be used.
+   * *
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php b/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
index 4f78bc70..37372ed3 100644
--- a/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
+++ b/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
@@ -4,7 +4,6 @@
 
 use WellnessLiving\Core\Quiz\ResponseStatusSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Quiz\Response\SourceSid;
 
 /**
  * Retrieves a list of a user's quiz responses.
@@ -22,7 +21,7 @@ class ResponseListModel extends WlModelAbstract
    *  <dt>string <var>dtl_date</var></dt>
    *  <dd>The date of the request to fill out a quiz form.</dd>
    *  <dt>int <var>id_source</var></dt>
-   *  <dd>The place where the request to fill out a quiz form occurred. One of the {@link SourceSid} constants.</dd>
+   *  <dd>The place where the request to fill out a quiz form occurred.</dd>
    *  <dt>bool <var>is_private</var></dt>
    *  <dd>
    *    Determines whether the form can be viewed by staff member only after confirmation.
@@ -58,7 +57,7 @@ class ResponseListModel extends WlModelAbstract
    *  <dt>string <var>dtl_date</var></dt>
    *  <dd>The date of the request to fill out a quiz form.</dd>
    *  <dt>int <var>id_source</var></dt>
-   *  <dd>The place where the request to fill out the quiz form occurred. One of the {@link SourceSid} constants.</dd>
+   *  <dd>The place where the request to fill out the quiz form occurred.</dd>
    *  <dt>int <var>id_status</var></dt>
    *  <dd>Status of the response. One of {@link ResponseStatusSid} constants.</dd>
    *  <dt>bool <var>is_private</var></dt>
diff --git a/WellnessLiving/Wl/Profile/RegisterSourceSid.php b/WellnessLiving/Wl/Profile/RegisterSourceSid.php
deleted file mode 100644
index afa4d848..00000000
--- a/WellnessLiving/Wl/Profile/RegisterSourceSid.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Profile;
-
-/**
- * List of sources from where the user registers.
- */
-class RegisterSourceSid
-{
-  /**
-   * Source when user register during purchase or booking.
-   *
-   * <b>
-   *  Don't use for edit existing user profile.
-   *  Used only to register new clients during booking or purchase.
-   * </b>
-   */
-  const BOOKING_AND_PURCHASE = 1;
-
-  /**
-   * Source when user register on self registration web app, self registration web app URL etc.
-   *
-   * <b>Don't use for edit existing user profile.</b>
-   */
-  const SELF = 2;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php b/WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php
deleted file mode 100644
index aaf7da69..00000000
--- a/WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Promotion\Convert;
-
-/**
- * List of options to convert promotion.
- *
- * Last used ID: 3.
- */
-class PromotionConvertSid
-{
-  /**
-   * Promotion conversion downgraded.
-   */
-  const DOWNGRADE = 1;
-
-  /**
-   * Type of the promotion conversion.
-   */
-  const EQUAL_VALUE = 2;
-
-  /**
-   * Promotion conversion upgraded.
-   */
-  const UPGRADE = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php b/WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php
deleted file mode 100644
index 3f9fc4b2..00000000
--- a/WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Promotion\Edit\Limit\Cycle;
-
-/**
- * Attendance Restriction cycle type.
- */
-class Sid
-{
-  /**
-   * Attendance Restriction is applied at the start of the calendar cycle.
-   */
-  const CALENDAR = 1;
-
-  /**
-   * Attendance Restriction is applied at the start of the payment cycle.
-   */
-  const PAYMENT = 2;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php b/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php
index 5e1b6225..bf34372f 100644
--- a/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php
+++ b/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php
@@ -5,7 +5,6 @@
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Event\EventListModel;
-use WellnessLiving\Wl\Promotion\Edit\Limit\Cycle\Sid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlDurationTypeSid;
 use WellnessLiving\Wl\WlProgramCategorySid;
@@ -123,7 +122,7 @@ class PromotionIndexModel extends WlModelAbstract
    *         {@link ADurationSid::MONTH}, {@link ADurationSid::YEAR}.
    *       </dd>
    *       <dt>int <var>id_limit_cycle</var></dt>
-   *       <dd>The type of the limit cycle {@link Sid}.</dd>
+   *
    *       <dt>bool <var>is_reconcile_visit</var></dt>
    *       <dd>Determines whether to reconcile unpaid sessions on restrictions reset.</dd>
    *       <dt>bool <var>is_roll_over_expire</var></dt>
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index bbfc957b..2c9d006e 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -142,6 +142,17 @@ class QuizElementModel extends WlModelAbstract
    */
   public $k_business = '';
 
+  /**
+   * Business type key.
+   *
+   * `null` if not initialized.
+   *
+   * @get result
+   * @post post
+   * @var string|null
+   */
+  public $k_business_type = null;
+
   /**
    * Quiz key.
    *
diff --git a/WellnessLiving/Wl/Quiz/Response/SourceSid.php b/WellnessLiving/Wl/Quiz/Response/SourceSid.php
deleted file mode 100644
index 13122776..00000000
--- a/WellnessLiving/Wl/Quiz/Response/SourceSid.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Quiz\Response;
-
-/**
- * List of sources where quiz response can be generated.
- *
- * Last used ID: 6
- */
-class SourceSid
-{
-  /**
-   * Quiz response received during booking process.
-   */
-  const BOOKING = 2;
-
-  /**
-   * Quiz response was imported.
-   */
-  const IMPORT = 6;
-
-  /**
-   * Quiz response received by kiosk mode link.
-   */
-  const KIOSK = 7;
-
-  /**
-   * Quiz response received by direct link.
-   */
-  const LINK = 1;
-
-  /**
-   * Quiz response received by direct link.
-   *
-   * @title Studio
-   */
-  const MANUAL = 5;
-
-  /**
-   * Quiz response received during purchase process.
-   */
-  const PURCHASE = 4;
-
-  /**
-   * Quiz response received during registration process.
-   */
-  const REGISTRATION = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Report/WlReportSid.php b/WellnessLiving/Wl/Report/WlReportSid.php
index afad3c9a..39081d21 100644
--- a/WellnessLiving/Wl/Report/WlReportSid.php
+++ b/WellnessLiving/Wl/Report/WlReportSid.php
@@ -1358,11 +1358,17 @@ abstract class WlReportSid
 
   /**
    * Detailed revenue by service.
+   *
+   * @title Revenue by Service
+   * @deprecated Report is refactored into new core.
    */
   const VISIT_REVENUE_DETAIL = 58;
 
   /**
    * Service revenue analysis.
+   *
+   * @title Service Revenue Summary
+   * @deprecated Report is refactored into new core.
    */
   const VISIT_REVENUE_LIST = 57;
 
diff --git a/WellnessLiving/Wl/Resource/Image/ImageIconSid.php b/WellnessLiving/Wl/Resource/Image/ImageIconSid.php
deleted file mode 100644
index 5208f6f4..00000000
--- a/WellnessLiving/Wl/Resource/Image/ImageIconSid.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Resource\Image;
-
-/**
- * Predefined icons for assets.
- *
- * Last used ID: 29.
- */
-class ImageIconSid
-{
-  /**
-   * Training bench.
-   */
-  const BENCH = 1;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_1 = 2;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_2 = 3;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_3 = 4;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_4 = 5;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_5 = 6;
-
-  /**
-   * Exercise bike.
-   */
-  const BIKE_6 = 7;
-
-  /**
-   * Boot.
-   */
-  const BOOT = 8;
-
-  /**
-   * Door.
-   */
-  const DOOR = 9;
-
-  /**
-   * Fan.
-   */
-  const FAN_1 = 10;
-
-  /**
-   * Fan.
-   */
-  const FAN_2 = 11;
-
-  /**
-   * Man.
-   */
-  const MAN = 12;
-
-  /**
-   * Mat.
-   */
-  const MAT = 13;
-
-  /**
-   * Mirror.
-   */
-  const MIRROR = 14;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_1 = 15;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_2 = 16;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_3 = 17;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_4 = 18;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_5 = 19;
-
-  /**
-   * Orbitrack.
-   */
-  const ORBITRACK_6 = 20;
-
-  /**
-   * Boxing punch.
-   */
-  const PUNCH_1 = 21;
-
-  /**
-   * Boxing punch.
-   */
-  const PUNCH_2 = 22;
-
-  /**
-   * Rectangle.
-   */
-  const RECTANGLE = 23;
-
-  /**
-   * Loudspeaker.
-   */
-  const SPEAKER = 24;
-
-  /**
-   * Treadmill.
-   */
-  const TREADMILL_1 = 25;
-
-  /**
-   * Treadmill.
-   */
-  const TREADMILL_2 = 26;
-
-  /**
-   * TV.
-   */
-  const TV = 27;
-
-  /**
-   * Twines.
-   */
-  const TWINE = 28;
-
-  /**
-   * Weight.
-   */
-  const WEIGHT = 29;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Resource/Image/ImageShapeSid.php b/WellnessLiving/Wl/Resource/Image/ImageShapeSid.php
deleted file mode 100644
index 7d85e73a..00000000
--- a/WellnessLiving/Wl/Resource/Image/ImageShapeSid.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Resource\Image;
-
-/**
- * The kinds of shapes that can be used as an assets' images.
- */
-class ImageShapeSid
-{
-  /**
-   * Circle.
-   */
-  const CIRCLE = 1;
-
-  /**
-   * Rectangle.
-   */
-  const RECTANGLE = 2;
-
-  /**
-   * Square.
-   */
-  const SQUARE = 3;
-
-  /**
-   * Triangle.
-   */
-  const TRIANGLE = 4;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Resource/Layout/LayoutModel.php b/WellnessLiving/Wl/Resource/Layout/LayoutModel.php
index b79f8bab..b5657a64 100644
--- a/WellnessLiving/Wl/Resource/Layout/LayoutModel.php
+++ b/WellnessLiving/Wl/Resource/Layout/LayoutModel.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Resource\Layout;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Resource\Image\ImageIconSid;
 
 /**
  * Displays information about an asset layout.
@@ -82,25 +81,25 @@ class LayoutModel extends WlModelAbstract
    *     float <var>f_height</var>
    *   </dt>
    *   <dd>
-   *     The height for the shape {@link LayoutShapeSid::RECTANGLE}. Empty for other shapes.
+   * Empty for other shapes.
    *   </dd>
    *   <dt>
    *     float <var>f_width</var>
    *   </dt>
    *   <dd>
-   *     The width for the shape {@link LayoutShapeSid::RECTANGLE}. Empty for other shapes.
+   * Empty for other shapes.
    *   </dd>
    *   <dt>
    *     int <var>i_degree_from</var>
    *   </dt>
    *   <dd>
-   *     The start angle for the shape {@link LayoutShapeSid::PIE}. Empty for other shapes.
+   * Empty for other shapes.
    *   </dd>
    *   <dt>
    *     int <var>i_degree_to</var>
    *   </dt>
    *   <dd>
-   *     The start angle for shape {@link LayoutShapeSid::PIE}. Empty for other shapes.
+   * Empty for other shapes.
    *   </dd>
    *   <dt>
    *     int <var>i_left</var>
@@ -112,8 +111,8 @@ class LayoutModel extends WlModelAbstract
    *     int <var>i_radius</var>
    *   </dt>
    *   <dd>
-   *     The radius for shapes {@link LayoutShapeSid::PIE} and
-   *     {@link LayoutShapeSid::CIRCLE}. Empty for other shapes.
+   *     The radius for shapes {@link \Wl\Resource\Layout\Shape\LayoutShapeSid::PIE} and
+   * Empty for other shapes.
    *   </dd>
    *   <dt>
    *     int <var>i_top</var>
@@ -125,7 +124,7 @@ class LayoutModel extends WlModelAbstract
    *     int <var>id_resource_layout_shape</var>
    *   </dt>
    *   <dd>
-   *     The shape type ID. One of the {@link LayoutShapeSid} constants.
+   *     The shape type ID.
    *   </dd>
    *   <dt>
    *     string <var>k_resource_layout_shape</var>
@@ -189,7 +188,7 @@ class LayoutModel extends WlModelAbstract
    *     int <var>id_shape_icon</var>
    *   </dt>
    *   <dd>
-   *     The icon ID. One of the {@link ImageIconSid} constants.
+   *     The icon ID.
    *   </dd>
    * </dl>
    *
diff --git a/WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php b/WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php
deleted file mode 100644
index e88644b2..00000000
--- a/WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Resource\Layout;
-
-/**
- * Types of the shapes.
- */
-class LayoutShapeSid
-{
-  /**
-   * Circles.
-   */
-  const CIRCLE = 2;
-
-  /**
-   * Pies.
-   */
-  const PIE = 3;
-
-  /**
-   * Rectangles and squares.
-   */
-  const RECTANGLE = 1;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Review/ReviewList/ReviewListModel.php b/WellnessLiving/Wl/Review/ReviewList/ReviewListModel.php
index 26e7fe3c..09546416 100644
--- a/WellnessLiving/Wl/Review/ReviewList/ReviewListModel.php
+++ b/WellnessLiving/Wl/Review/ReviewList/ReviewListModel.php
@@ -149,9 +149,7 @@ class ReviewListModel extends WlModelAbstract
   public $i_page = null;
 
   /**
-   * The order in which the review should be arranged. One of the {@link ReviewOrderSid} constants.
-   *
-   * If not passed use default order {@link ReviewOrderSid::LATEST}.
+   * The order in which the review should be arranged.
    *
    * @get get
    * @var int|null
diff --git a/WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php b/WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php
deleted file mode 100644
index abcc67f1..00000000
--- a/WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Review\ReviewList;
-
-/**
- * List of possible order for gets review.
- */
-class ReviewOrderSid
-{
-  /**
-   * Ascending sort review by date.
-   */
-  const LATEST = 1;
-
-  /**
-   * Ascending sort review by date.
-   */
-  const NEGATIVE = 3;
-
-  /**
-   * Descending sort review by date.
-   */
-  const OLDEST = 4;
-
-  /**
-   * Descending sort review by date.
-   */
-  const POSITIVE = 2;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php b/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
index 474c79e0..8de95400 100644
--- a/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
+++ b/WellnessLiving/Wl/Schedule/ClassView/DenyReasonSid.php
@@ -5,7 +5,7 @@
 /**
  * Reasons why the client can't book this class.
  *
- * Last used ID: 21
+ * Last used ID: 23
  */
 class DenyReasonSid
 {
@@ -34,6 +34,11 @@ class DenyReasonSid
    */
   const AGREE_NX = 5;
 
+  /**
+   * Client has unpaid fees.
+   */
+  const BALANCE_NEGATIVE = 22;
+
   /**
    * Client is already booked for this session.
    */
@@ -99,6 +104,11 @@ class DenyReasonSid
    */
   const NOT_BOOKABLE = 18;
 
+  /**
+   * Online booking is disabled for this type of client.
+   */
+  const NOT_BOOKABLE_BY_TYPE = 23;
+
   /**
    * Required personal details missing.
    */
diff --git a/WellnessLiving/Wl/Schedule/Design/OptionSid.php b/WellnessLiving/Wl/Schedule/Design/OptionSid.php
deleted file mode 100644
index 7102300b..00000000
--- a/WellnessLiving/Wl/Schedule/Design/OptionSid.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Schedule\Design;
-
-/**
- * Appointment display option.
- *
- * Last used ID: 3
- */
-class OptionSid
-{
-  /**
-   * Appointment name in header.
-   */
-  const APPOINTMENT_NAME = 1;
-
-  /**
-   * Client name in header.
-   */
-  const CLIENT_NAME = 3;
-
-  /**
-   * Staff name in header.
-   */
-  const STAFF_NAME = 2;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/Page/PageElementModel.php b/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
index f4cc0379..7f4afcd8 100644
--- a/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
+++ b/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
@@ -3,8 +3,6 @@
 namespace WellnessLiving\Wl\Schedule\Page;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Virtual\VirtualProviderSid;
-use WellnessLiving\Wl\Visit\WlVisitSid;
 
 /**
  * Returns information about a specified visit.
@@ -17,7 +15,7 @@ class PageElementModel extends WlModelAbstract
    *     int <var>id_visit</var>
    *   </dt>
    *   <dd>
-   *     Visit status. One of {@link WlVisitSid} constants.
+   *     Visit status.
    *   </dd>
    *   <dt>
    *     bool <var>is_confirmed</var>
@@ -163,6 +161,16 @@ class PageElementModel extends WlModelAbstract
    */
   public $html_special;
 
+  /**
+   * Capacity of the service.
+   *
+   * <tt>null</tt> means that capacity is not set.
+   *
+   * @get result
+   * @var int|null
+   */
+  public $i_capacity = null;
+
   /**
    * The scheduled duration of the visit.
    * <tt>0</tt> means that session duration is hidden.
@@ -182,7 +190,6 @@ class PageElementModel extends WlModelAbstract
 
   /**
    * The note type ID. This will be set to `null` if notes aren't allowed.
-   * This is one of the {@link WlVisitNoteSid} constants.
    *
    * This will be `null` if notes aren't allowed.
    *
@@ -192,7 +199,7 @@ class PageElementModel extends WlModelAbstract
   public $id_note;
 
   /**
-   * The virtual provider ID. One of the {@link VirtualProviderSid} constants.
+   * The virtual provider ID.
    *
    * This will be `null` for non-virtual services.
    *
@@ -202,7 +209,7 @@ class PageElementModel extends WlModelAbstract
   public $id_virtual_provider;
 
   /**
-   * The visit type ID. One of the {@link WlVisitSid} constants.
+   * The visit type ID.
    *
    * This will be `null` if not loaded yet.
    *
@@ -294,6 +301,14 @@ class PageElementModel extends WlModelAbstract
    */
   public $k_location;
 
+  /**
+   * Asset key.
+   *
+   * @get result
+   * @var ?string
+   */
+  public $k_resource;
+
   /**
    * Session key.
    *
@@ -350,6 +365,14 @@ class PageElementModel extends WlModelAbstract
    */
   public $uid;
 
+  /**
+   * Image url of the service or resource.
+   *
+   * @get result
+   * @var string
+   */
+  public $url_image = '';
+
   /**
    * Url to wait page is the beginning of an online service.
    *
diff --git a/WellnessLiving/Wl/Schedule/Page/WlVisitNoteSid.php b/WellnessLiving/Wl/Schedule/Page/WlVisitNoteSid.php
deleted file mode 100644
index ffacad10..00000000
--- a/WellnessLiving/Wl/Schedule/Page/WlVisitNoteSid.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Schedule\Page;
-
-/**
- * A list of types of visit note.
- */
-class WlVisitNoteSid
-{
-  /**
-   * The usual quick accompanying note for the customer visit.
-   */
-  const QUICK = 2;
-
-  /**
-   * Accompanying medical note for the customer visit.
-   */
-  const SOAP = 1;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
index 0855e22a..0d5a4092 100644
--- a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
+++ b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
@@ -3,8 +3,6 @@
 namespace WellnessLiving\Wl\Schedule\ScheduleList\StaffApp;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Schedule\Design\OptionSid;
-use WellnessLiving\Wl\Visit\WlVisitSid;
 use WellnessLiving\Wl\WlServiceSid;
 
 /**
@@ -34,7 +32,7 @@ class ScheduleListByTokenModel extends WlModelAbstract
    *         int <var>id_visit</var>
    *       </dt>
    *       <dd>
-   *         Visit id. One of {@link WlVisitSid} constants.
+   *         Visit id.
    *       </dd>
    *       <dt>
    *         bool <var>is_confirmed</var>
@@ -189,7 +187,7 @@ class ScheduleListByTokenModel extends WlModelAbstract
    *    <dd>
    *      Appointment title display style.
    *      Set only for appointments, for others it will be equal to 0.
-   *      Constants from {@link OptionSid}.
+   *
    *    </dd>
    *   <dt>
    *     int <var>id_service</var>
diff --git a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
index e3a92124..93599d93 100644
--- a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
+++ b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
@@ -4,8 +4,6 @@
 
 use WellnessLiving\Core\Quiz\ResponseStatusSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Schedule\Design\OptionSid;
-use WellnessLiving\Wl\Visit\WlVisitSid;
 use WellnessLiving\Wl\WlServiceSid;
 
 /**
@@ -61,7 +59,7 @@ class ScheduleListModel extends WlModelAbstract
    *         int <var>id_visit</var>
    *       </dt>
    *       <dd>
-   *         Visit id. One of {@link WlVisitSid} constants.
+   *         Visit id.
    *       </dd>
    *       <dt>
    *         bool <var>is_confirmed</var>
@@ -229,7 +227,7 @@ class ScheduleListModel extends WlModelAbstract
    *    <dd>
    *      Appointment title display style.
    *      Set only for appointments, for others it will be equal to 0.
-   *      Constants from {@link OptionSid}.
+   *
    *    </dd>
    *   <dt>
    *     int <var>id_service</var>
diff --git a/WellnessLiving/Wl/Schedule/Tab/TabModel.php b/WellnessLiving/Wl/Schedule/Tab/TabModel.php
index f09face9..783f1f50 100644
--- a/WellnessLiving/Wl/Schedule/Tab/TabModel.php
+++ b/WellnessLiving/Wl/Schedule/Tab/TabModel.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Schedule\Tab;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Classes\Tab\TabSid;
 
 /**
  * Retrieves a list of tabs for bookable services specific to the user and the location.
@@ -22,14 +21,13 @@ class TabModel extends WlModelAbstract
    *     int <var>id_class_tab_object</var>
    *   </dt>
    *   <dd>
-   *     The tab type ID which is one of the {@link TabSid} constants.
+   *
    *   </dd>
    *   <dt>
    *     int|null <var>id_class_tab_system</var>
    *   </dt>
    *   <dd>
    *     If this tab has redefined a default system Class Tab then it references a constant defined in
-   *     {@link TabSid}.
    *
    *     Otherwise, this will be `null`.
    *   </dd>
diff --git a/WellnessLiving/Wl/Service/ServiceBookFlowSid.php b/WellnessLiving/Wl/Service/ServiceBookFlowSid.php
deleted file mode 100644
index 7b57aef1..00000000
--- a/WellnessLiving/Wl/Service/ServiceBookFlowSid.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Service;
-
-/**
- * A list of client booking flow types.
- */
-class ServiceBookFlowSid
-{
-  /**
-   * Client selects the date and time and then the staff member.
-   */
-  const DATE_STAFF_ORDER = 2;
-
-  /**
-   * Client selects their preferred booking order should be staff member / calendar.
-   */
-  const PREFER_ORDER = 3;
-
-  /**
-   * Client selects the staff member and then the date and time.
-   */
-  const STAFF_DATE_ORDER = 1;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php b/WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php
deleted file mode 100644
index bab2e63d..00000000
--- a/WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Shop\Product;
-
-/**
- * Purchase restrictions.
- *
- * Last used ID: 3.
- */
-class PurchaseRestrictionSid
-{
-  /**
-   * Purchase option available for all clients.
-   */
-  const ALL = 1;
-
-  /**
-   * Purchase option introductory offer, available for new clients only.
-   */
-  const INTRODUCTORY = 2;
-
-  /**
-   * Purchase option available for clients with special login type or member group.
-   */
-  const TYPE = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php b/WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php
deleted file mode 100644
index cb1c7636..00000000
--- a/WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Video\Catalog\Filter\Sort;
-
-/**
- * List of video catalog sorting types.
- *
- * Any selected type should be sorted in descending order.
- */
-class FilterSortSid
-{
-  /**
-   * Sort alphabetically.
-   *
-   * @title Alphabetical
-   */
-  const ALPHABET = 1;
-
-  /**
-   * Sort by custom.
-   *
-   * @title Custom
-   */
-  const CUSTOM = 4;
-
-  /**
-   * Sort by most recently added.
-   *
-   * @title Most Recent
-   */
-  const RECENT = 2;
-
-  /**
-   * Sorted by number of views.
-   *
-   * @title Views
-   */
-  const VIEW = 3;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/VideoElementModel.php b/WellnessLiving/Wl/Video/VideoElementModel.php
index a1ee00fb..496b35bc 100644
--- a/WellnessLiving/Wl/Video/VideoElementModel.php
+++ b/WellnessLiving/Wl/Video/VideoElementModel.php
@@ -2,7 +2,6 @@
 
 namespace WellnessLiving\Wl\Video;
 
-use WellnessLiving\Core\Sid\YesNoSid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -153,9 +152,6 @@ class VideoElementModel extends WlModelAbstract
   public $i_watch;
 
   /**
-   * {@link YesNoSid::NO} if the video is available in all locations.
-   * {@link YesNoSid::YES} if the video is available only in certain locations.
-   *
    * @get result
    * @post post
    * @var int
diff --git a/WellnessLiving/Wl/Video/VideoListModel.php b/WellnessLiving/Wl/Video/VideoListModel.php
index 4390de19..4d9f557f 100644
--- a/WellnessLiving/Wl/Video/VideoListModel.php
+++ b/WellnessLiving/Wl/Video/VideoListModel.php
@@ -2,9 +2,7 @@
 
 namespace WellnessLiving\Wl\Video;
 
-use WellnessLiving\Core\Sid\SortOrderSid;
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Video\Catalog\Filter\Sort\FilterSortSid;
 
 /**
  * Returns a list of videos.
@@ -117,7 +115,7 @@ class VideoListModel extends WlModelAbstract
   public $i_page = null;
 
   /**
-   * Sort order ID. One of {@link SortOrderSid} constants. `null` or 0 if order is undefined and depends on sort order.
+   * Sort order ID. `null` or 0 if order is undefined and depends on sort order.
    *
    * @get get,result
    * @var int|null
@@ -126,7 +124,7 @@ class VideoListModel extends WlModelAbstract
 
   /**
    * The sorting type.
-   * A constant from {@link FilterSortSid}. `null` or 0 if sort is undefined and custom sort order is used.
+   * `null` or 0 if sort is undefined and custom sort order is used.
    *
    * @get get,result
    * @var int|null
diff --git a/WellnessLiving/Wl/Video/Watch/WatchModel.php b/WellnessLiving/Wl/Video/Watch/WatchModel.php
index 09fe7603..eabe0276 100644
--- a/WellnessLiving/Wl/Video/Watch/WatchModel.php
+++ b/WellnessLiving/Wl/Video/Watch/WatchModel.php
@@ -31,7 +31,6 @@ class WatchModel extends WlModelAbstract
    *
    * @post post
    * @var int
-   * @see WatchSourceSid
    */
   public $id_source;
 
diff --git a/WellnessLiving/Wl/Video/Watch/WatchSourceSid.php b/WellnessLiving/Wl/Video/Watch/WatchSourceSid.php
deleted file mode 100644
index 71e138cb..00000000
--- a/WellnessLiving/Wl/Video/Watch/WatchSourceSid.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Video\Watch;
-
-/**
- * List sources of the view video.
- *
- * Last used ID: 4
- */
-class WatchSourceSid
-{
-  /**
-   * Video watched from application.
-   */
-  const APP = 1;
-
-  /**
-   * Video watched from direct URL.
-   */
-  const DIRECT_URL = 2;
-
-  /**
-   * Video watched from frontend.
-   */
-  const FRONTEND = 3;
-
-  /**
-   * Source of watched is undefined.
-   *
-   * Used for old videos.
-   */
-  const UNDEFINED = 4;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Virtual/VirtualProviderSid.php b/WellnessLiving/Wl/Virtual/VirtualProviderSid.php
deleted file mode 100644
index f590d2f4..00000000
--- a/WellnessLiving/Wl/Virtual/VirtualProviderSid.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Virtual;
-
-/**
- * List of possible value of virtual integrations.
- *
- * Last used ID: 2.
- */
-class VirtualProviderSid
-{
-  /**
-   * Virtual integration non implemented.
-   */
-  const NON_INTEGRATED = 2;
-
-  /**
-   * Virtual Zoom service integration.
-   */
-  const ZOOM = 1;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Visit/VisitStatusModel.php b/WellnessLiving/Wl/Visit/VisitStatusModel.php
index 73e0e35d..207b451e 100644
--- a/WellnessLiving/Wl/Visit/VisitStatusModel.php
+++ b/WellnessLiving/Wl/Visit/VisitStatusModel.php
@@ -3,7 +3,6 @@
 namespace WellnessLiving\Wl\Visit;
 
 use WellnessLiving\WlModelAbstract;
-use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Views or changes the visit status.
@@ -92,7 +91,7 @@ class VisitStatusModel extends WlModelAbstract
 
   /**
    * The source of the visit or the visit change.
-   * One of the {@link ModeSid} constants.
+   *
    * If you're unsure about the value to use, keep the default value.
    *
    * @get result
@@ -103,7 +102,6 @@ class VisitStatusModel extends WlModelAbstract
 
   /**
    * The status of the visit.
-   * One of the {@link WlVisitSid} constants.
    *
    * @get result
    * @post post
@@ -112,7 +110,7 @@ class VisitStatusModel extends WlModelAbstract
   public $id_visit = '0';
 
   /**
-   * The status of the visit from which the transition is made. One of the {@link WlVisitSid} constants.
+   * The status of the visit from which the transition is made.
    *
    * If the visit status is passed, it will be used to check with the actual status in the database.
    * If `null`, the visit hasn't yet passed.
diff --git a/WellnessLiving/Wl/Visit/WlVisitSid.php b/WellnessLiving/Wl/Visit/WlVisitSid.php
deleted file mode 100644
index 07b64e5a..00000000
--- a/WellnessLiving/Wl/Visit/WlVisitSid.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl\Visit;
-
-/**
- * Possible states of the visit: book, attended, cancelled, etc.
- *
- * Last used ID: 8.
- */
-class WlVisitSid
-{
-  /**
-   * Client has attended the session.
-   */
-  const ATTEND = 3;
-
-  /**
-   * Active reservation means that user is going to attend the session.
-   */
-  const BOOK = 1;
-
-  /**
-   * Client has cancelled the reservation in time and without penalty.
-   */
-  const CANCEL = 6;
-
-  /**
-   * Client has cancelled his reservation too late.
-   */
-  const PENALTY = 4;
-
-  /**
-   * This state means that visit is registered, but it is unknown is it {@link WlVisitSid::ATTEND}
-   * or {@link WlVisitSid::TRUANCY} or {@link WlVisitSid::PENALTY} but definitely one of these states.
-   *
-   * The real type of this visit must be set manually by staff.
-   * Status can be changed automatically to {@link WlVisitSid::ATTEND}.
-   *
-   * @see WlVisitSid::TRUANCY
-   */
-  const PENDING = 7;
-
-  /**
-   * Visit was removed.
-   * Visits with this status are not shown anywhere in system, but still are saved in database.
-   */
-  const REMOVE = 8;
-
-  /**
-   * Client has missed the session without cancellation.
-   */
-  const TRUANCY = 5;
-
-  /**
-   * Reservation in a wait list means that user is going to attend the session if someone will cancel his reservation.
-   */
-  const WAIT = 2;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlDesignIconSid.php b/WellnessLiving/Wl/WlDesignIconSid.php
deleted file mode 100644
index 1315095f..00000000
--- a/WellnessLiving/Wl/WlDesignIconSid.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-namespace WellnessLiving\Wl;
-
-/**
- * List of available design icons.
- * Name of the class with this icon will be wl-icon-[sid]
- *
- * Last used ID 11.
- */
-class WlDesignIconSid
-{
-  /**
-   * Signs that session or pass is an appointment connected.
-   */
-  const APPOINTMENT = 4;
-
-  /**
-   * Signs that session or pass is an asset connected.
-   */
-  const ASSET = 7;
-
-  /**
-   * Signs that session or pass is a class or event connected.
-   */
-  const CLASSES = 5;
-
-  /**
-   * Cycle icon. Used, for example, to show transferred status of the promotion.
-   */
-  const CYCLE = 3;
-
-  /**
-   * Early cancel activity list icon.
-   */
-  const EARLY_CANCELED = 8;
-
-  /**
-   * Signs that session or pass is a gym visit connected.
-   */
-  const GYM_VISIT = 6;
-
-  /**
-   * Late cancel activity list icon.
-   */
-  const LATE_CANCELED = 9;
-
-  /**
-   * Piece of paper with the curved end for different text notes.
-   */
-  const NOTE = 2;
-
-  /**
-   * No show at visit activity list icon.
-   */
-  const NO_SHOW = 10;
-
-  /**
-   * Paper with medical symbolic for medical notes.
-   */
-  const SOAP = 1;
-
-  /**
-   * Clock activity list icon in SPA application.
-   */
-  const SPA_CLOCK = 11;
-}
-
-?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index c4c68d17..76fb8c71 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241024.369196';
+  const VERSION='20241112.373241';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 68f6d148c7a5519c72e441722244786d70293dfe Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 13 Nov 2024 12:19:04 +0000
Subject: [PATCH 69/71] Automatic upgrade of the SDK. Build #373448.

---
 WellnessLiving/Wl/Classes/Period/Clients/Model.php          | 2 --
 WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php | 2 --
 WellnessLiving/Wl/Profile/ProfileCreateModel.php            | 2 --
 WellnessLiving/Wl/Schedule/Page/PageElementModel.php        | 5 ++---
 WellnessLiving/WlModelRequest.php                           | 2 +-
 5 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/WellnessLiving/Wl/Classes/Period/Clients/Model.php b/WellnessLiving/Wl/Classes/Period/Clients/Model.php
index cbb057e7..65b32fa5 100644
--- a/WellnessLiving/Wl/Classes/Period/Clients/Model.php
+++ b/WellnessLiving/Wl/Classes/Period/Clients/Model.php
@@ -6,8 +6,6 @@
 
 /**
  * Class to manage class period info with Api.
- *
- * @sdk
  */
 class Model extends WlModelAbstract
 {
diff --git a/WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php b/WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php
index 03016098..5366f229 100644
--- a/WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php
+++ b/WellnessLiving/Wl/Passport/Login/Enter/PassportOtpModel.php
@@ -6,8 +6,6 @@
 
 /**
  * Entry point to verify user authorization by email and phone number via sending and checking otp code.
- *
- * @sdk
  */
 class PassportOtpModel extends WlModelAbstract
 {
diff --git a/WellnessLiving/Wl/Profile/ProfileCreateModel.php b/WellnessLiving/Wl/Profile/ProfileCreateModel.php
index 6811357a..7c7d5812 100644
--- a/WellnessLiving/Wl/Profile/ProfileCreateModel.php
+++ b/WellnessLiving/Wl/Profile/ProfileCreateModel.php
@@ -6,8 +6,6 @@
 
 /**
  * Creates user profile with minimum fields.
- *
- * @sdk
  */
 class ProfileCreateModel extends WlModelAbstract
 {
diff --git a/WellnessLiving/Wl/Schedule/Page/PageElementModel.php b/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
index 7f4afcd8..7384697b 100644
--- a/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
+++ b/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
@@ -163,8 +163,7 @@ class PageElementModel extends WlModelAbstract
 
   /**
    * Capacity of the service.
-   *
-   * <tt>null</tt> means that capacity is not set.
+   * <tt>null</tt> indicates that the capacity is not set.
    *
    * @get result
    * @var int|null
@@ -366,7 +365,7 @@ class PageElementModel extends WlModelAbstract
   public $uid;
 
   /**
-   * Image url of the service or resource.
+   * URL of the image representing the service or resource.
    *
    * @get result
    * @var string
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 76fb8c71..5659dbf8 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241112.373241';
+  const VERSION='20241113.373448';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From ae495dd662262122a05333f4c38870a3a81d1432 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Wed, 13 Nov 2024 20:15:14 +0000
Subject: [PATCH 70/71] Automatic upgrade of the SDK. Build #373612.

---
 WellnessLiving/Core/Drive/DriveTypeSid.php    |  31 ++++
 .../ImageUpload/ImageUploadTemporaryModel.php |   3 +-
 WellnessLiving/Core/Geo/ComboboxModel.php     |   3 +
 .../Core/Geo/Region/RegionModel.php           |   3 +-
 WellnessLiving/Core/Locale/CurrencySid.php    |  94 +++++++++++
 WellnessLiving/Core/Locale/LocaleSid.php      |  88 ++++++++++
 WellnessLiving/Core/Sid/SortOrderSid.php      |  21 +++
 WellnessLiving/Core/Sid/YesNoSid.php          |  21 +++
 .../Studio/Ip/Service/EditModel.php           |   4 +
 .../Studio/Ip/Service/ServiceTimeoutSid.php   |  33 ++++
 .../Studio/Ip/Service/ServiceTypeSid.php      |  44 +++++
 .../Task/Branch/BranchDeleteModeSid.php       |  26 +++
 .../Studio/Task/Branch/BranchModel.php        |  11 +-
 .../Studio/Task/Branch/BranchStatusSid.php    |  43 +++++
 .../Studio/Task/Branch/StandStatusSid.php     |  53 ++++++
 .../Generator/ReportGeneratorStatusSid.php    |  93 +++++++++++
 .../Wl/Announcement/AnnouncementListModel.php |   2 +
 .../Appointment/Book/Asset/AssetListModel.php |   9 +-
 .../Book/Asset/Service/ServiceModel.php       |   3 +
 .../Appointment/Book/Finish/Finish47Model.php |   3 +-
 .../Appointment/Book/Finish/FinishModel.php   |   6 +-
 .../Book/Finish/FinishMultipleModel.php       |   6 +-
 .../Appointment/Book/Payment/PaymentModel.php |   3 +-
 .../Book/Payment/PaymentMultipleModel.php     |   6 +-
 .../Book/Payment/PaymentPostModel.php         |   3 +-
 .../Book/Product/Product62Model.php           |   2 +
 .../Book/Purchase/PurchaseModel.php           |   3 +-
 .../Book/Service/ServiceList52Model.php       |   3 +-
 .../Book/Service/ServiceListModel.php         |   3 +-
 .../Wl/Book/Process/Frequency/RepeatModel.php |   3 +
 .../Wl/Book/Process/Info/Info54Model.php      |   6 +-
 .../Wl/Book/Process/Info/InfoModel.php        |   3 +-
 .../Wl/Book/Process/Payment/PaymentModel.php  |   3 +-
 .../Wl/Book/Process/Process54Model.php        |   9 +-
 .../Wl/Book/Process/Process59Model.php        |   7 +-
 .../Wl/Book/Process/ProcessModel.php          |   4 +-
 .../Wl/Book/Process/ProcessSpaSid.php         | 102 +++++++++++
 .../Book/Process/Purchase/Purchase56Model.php |   3 +-
 .../Book/Process/Purchase/PurchaseModel.php   |   3 +-
 .../Wl/Book/Process/Quiz/QuizModel.php        |   3 +-
 .../Book/Process/Resource/Resource54Model.php |   6 +-
 .../Book/Process/Resource/ResourceModel.php   |   3 +-
 .../Wl/Book/Process/Store/StoreModel.php      |   3 +-
 WellnessLiving/Wl/Business/BusinessModel.php  |   2 +
 WellnessLiving/Wl/Business/DataModel.php      |   4 +
 .../BusinessFranchiseLocationFormSid.php      |  41 +++++
 .../BusinessFranchiseLocationModel.php        |   4 +
 .../Location/BusinessFranchiseLocationSid.php |  34 ++++
 .../CatalogList/CatalogProductModel.php       |   7 +-
 .../Wl/Catalog/CatalogList/ElementModel.php   |   5 +-
 .../Wl/Catalog/Payment/PaymentModel.php       |   3 +-
 .../Wl/Catalog/PurchaseOptionViewSid.php      |  65 +++++++
 .../StaffApp/CatalogList/CatalogListModel.php |   3 +-
 .../Wl/Classes/Period/Clients/Model.php       |   3 +-
 WellnessLiving/Wl/Classes/RequirePaySid.php   |  32 ++++
 WellnessLiving/Wl/Classes/Tab/TabSid.php      |  33 ++++
 WellnessLiving/Wl/Collector/DebtListModel.php |   3 +-
 WellnessLiving/Wl/Collector/DebtPayModel.php  |   2 +
 .../Wl/Coupon/CouponList/ListModel.php        |   3 +-
 .../Wl/Coupon/PurchaseRestrictionSid.php      |  28 ++++
 WellnessLiving/Wl/Coupon/WlTypeSid.php        |  30 ++++
 .../Wl/Event/Book/EventView/ElementModel.php  |   3 +-
 WellnessLiving/Wl/Event/EventListModel.php    |   7 +-
 WellnessLiving/Wl/Field/WlFieldGeneralSid.php |   4 +-
 .../Autymate/AutymateAccessModeSid.php        |  21 +++
 .../Autymate/AutymateActivateModel.php        |   4 +
 .../Autymate/AutymateStatusSid.php            |  21 +++
 .../Wl/Login/Attendance/Add/AddModel.php      |   7 +-
 .../Wl/Login/Attendance/AddOptionSid.php      |  26 +++
 .../Attendance/AttendanceInfoByTokenModel.php |   3 +-
 .../Login/Attendance/AttendanceInfoModel.php  |   3 +-
 .../Attendance/AttendanceListByTokenModel.php |   3 +-
 .../Login/Attendance/AttendanceListModel.php  |   3 +-
 .../Login/Promotion/Convert/ConvertModel.php  |   5 +-
 .../Promotion/Convert/ConvertWhenSid.php      |  31 ++++
 .../Wl/Login/Type/LoginTypeModel.php          |   2 +-
 WellnessLiving/Wl/Login/Type/SystemSid.php    |  31 ++++
 WellnessLiving/Wl/Mode/ModeSid.php            | 140 ++++++++++++++++
 .../Wl/Pay/Account/AccountModel.php           |   3 +-
 .../Wl/Pay/Account/Charge/ChargeModel.php     |   3 +-
 .../Wl/Pay/Form/EnvironmentModel.php          |   2 +
 .../Wl/Profile/Activity/ElementModel.php      |   3 +-
 .../Wl/Profile/Edit/EditByTokenModel.php      |   4 +-
 WellnessLiving/Wl/Profile/Edit/EditModel.php  |   4 +-
 .../Form/Response/ResponseListModel.php       |   5 +-
 .../Wl/Profile/RegisterSourceSid.php          |  28 ++++
 .../Promotion/Convert/PromotionConvertSid.php |  28 ++++
 .../Wl/Promotion/Edit/Limit/Cycle/Sid.php     |  21 +++
 .../Promotion/Index/PromotionIndexModel.php   |   3 +-
 WellnessLiving/Wl/Quiz/Response/SourceSid.php |  50 ++++++
 .../Wl/Resource/Image/ImageIconSid.php        | 158 ++++++++++++++++++
 .../Wl/Resource/Image/ImageShapeSid.php       |  31 ++++
 .../Wl/Resource/Layout/LayoutModel.php        |  17 +-
 .../Wl/Resource/Layout/LayoutShapeSid.php     |  26 +++
 .../Wl/Review/ReviewList/ReviewListModel.php  |   4 +-
 .../Wl/Review/ReviewList/ReviewOrderSid.php   |  31 ++++
 .../Wl/Schedule/Design/OptionSid.php          |  28 ++++
 .../Wl/Schedule/Page/PageElementModel.php     |  11 +-
 .../Wl/Schedule/Page/WlVisitNoteSid.php       |  21 +++
 .../StaffApp/ScheduleListByTokenModel.php     |   6 +-
 .../StaffApp/ScheduleListModel.php            |   6 +-
 WellnessLiving/Wl/Schedule/Tab/TabModel.php   |   4 +-
 .../Wl/Service/ServiceBookFlowSid.php         |  26 +++
 .../Shop/Product/PurchaseRestrictionSid.php   |  28 ++++
 .../Catalog/Filter/Sort/FilterSortSid.php     |  41 +++++
 WellnessLiving/Wl/Video/VideoElementModel.php |   4 +
 WellnessLiving/Wl/Video/VideoListModel.php    |   6 +-
 WellnessLiving/Wl/Video/Watch/WatchModel.php  |   1 +
 .../Wl/Video/Watch/WatchSourceSid.php         |  35 ++++
 .../Wl/Virtual/VirtualProviderSid.php         |  23 +++
 WellnessLiving/Wl/Visit/VisitStatusModel.php  |   6 +-
 WellnessLiving/Wl/Visit/WlVisitSid.php        |  60 +++++++
 WellnessLiving/Wl/WlDesignIconSid.php         |  69 ++++++++
 WellnessLiving/WlModelRequest.php             |   2 +-
 114 files changed, 2111 insertions(+), 84 deletions(-)
 create mode 100644 WellnessLiving/Core/Drive/DriveTypeSid.php
 create mode 100644 WellnessLiving/Core/Locale/CurrencySid.php
 create mode 100644 WellnessLiving/Core/Locale/LocaleSid.php
 create mode 100644 WellnessLiving/Core/Sid/SortOrderSid.php
 create mode 100644 WellnessLiving/Core/Sid/YesNoSid.php
 create mode 100644 WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php
 create mode 100644 WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php
 create mode 100644 WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php
 create mode 100644 WellnessLiving/Studio/Task/Branch/BranchStatusSid.php
 create mode 100644 WellnessLiving/Studio/Task/Branch/StandStatusSid.php
 create mode 100644 WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php
 create mode 100644 WellnessLiving/Wl/Book/Process/ProcessSpaSid.php
 create mode 100644 WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php
 create mode 100644 WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php
 create mode 100644 WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php
 create mode 100644 WellnessLiving/Wl/Classes/RequirePaySid.php
 create mode 100644 WellnessLiving/Wl/Classes/Tab/TabSid.php
 create mode 100644 WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php
 create mode 100644 WellnessLiving/Wl/Coupon/WlTypeSid.php
 create mode 100644 WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php
 create mode 100644 WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php
 create mode 100644 WellnessLiving/Wl/Login/Attendance/AddOptionSid.php
 create mode 100644 WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php
 create mode 100644 WellnessLiving/Wl/Login/Type/SystemSid.php
 create mode 100644 WellnessLiving/Wl/Mode/ModeSid.php
 create mode 100644 WellnessLiving/Wl/Profile/RegisterSourceSid.php
 create mode 100644 WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php
 create mode 100644 WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php
 create mode 100644 WellnessLiving/Wl/Quiz/Response/SourceSid.php
 create mode 100644 WellnessLiving/Wl/Resource/Image/ImageIconSid.php
 create mode 100644 WellnessLiving/Wl/Resource/Image/ImageShapeSid.php
 create mode 100644 WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php
 create mode 100644 WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php
 create mode 100644 WellnessLiving/Wl/Schedule/Design/OptionSid.php
 create mode 100644 WellnessLiving/Wl/Schedule/Page/WlVisitNoteSid.php
 create mode 100644 WellnessLiving/Wl/Service/ServiceBookFlowSid.php
 create mode 100644 WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php
 create mode 100644 WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php
 create mode 100644 WellnessLiving/Wl/Video/Watch/WatchSourceSid.php
 create mode 100644 WellnessLiving/Wl/Virtual/VirtualProviderSid.php
 create mode 100644 WellnessLiving/Wl/Visit/WlVisitSid.php
 create mode 100644 WellnessLiving/Wl/WlDesignIconSid.php

diff --git a/WellnessLiving/Core/Drive/DriveTypeSid.php b/WellnessLiving/Core/Drive/DriveTypeSid.php
new file mode 100644
index 00000000..3e1a284a
--- /dev/null
+++ b/WellnessLiving/Core/Drive/DriveTypeSid.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace WellnessLiving\Core\Drive;
+
+/**
+ * List of image types.
+ */
+class DriveTypeSid
+{
+  /**
+   * Bmp image.
+   */
+  const BMP = 4;
+
+  /**
+   * Gif image.
+   */
+  const GIF = 1;
+
+  /**
+   * Jpeg image.
+   */
+  const JPEG = 2;
+
+  /**
+   * Png image.
+   */
+  const PNG = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php b/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php
index dbd9a331..4b7a02f6 100644
--- a/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php
+++ b/WellnessLiving/Core/Drive/ImageUpload/ImageUploadTemporaryModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Core\Drive\ImageUpload;
 
+use WellnessLiving\Core\Drive\DriveTypeSid;
 use WellnessLiving\WlFile;
 use WellnessLiving\WlModelAbstract;
 
@@ -69,7 +70,7 @@ class ImageUploadTemporaryModel extends WlModelAbstract
   public $i_width_src;
 
   /**
-   * The image type ID.
+   * The image type ID. One of the {@link DriveTypeSid} constants.
    *
    * @post result
    * @var int
diff --git a/WellnessLiving/Core/Geo/ComboboxModel.php b/WellnessLiving/Core/Geo/ComboboxModel.php
index eb93cf28..98c3fc4b 100644
--- a/WellnessLiving/Core/Geo/ComboboxModel.php
+++ b/WellnessLiving/Core/Geo/ComboboxModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Core\Geo;
 
+use WellnessLiving\Core\Locale\LocaleSid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -28,6 +29,8 @@ class ComboboxModel extends WlModelAbstract
   /**
    * The locale ID used as a filter. The locale is generally a country.
    *
+   * One of the {@link LocaleSid} constants.
+   *
    * This will be `0` if all locations are searched.
    *
    * @get get
diff --git a/WellnessLiving/Core/Geo/Region/RegionModel.php b/WellnessLiving/Core/Geo/Region/RegionModel.php
index 3a415b49..e96aa578 100644
--- a/WellnessLiving/Core/Geo/Region/RegionModel.php
+++ b/WellnessLiving/Core/Geo/Region/RegionModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Core\Geo\Region;
 
+use WellnessLiving\Core\Locale\LocaleSid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -52,7 +53,7 @@ class RegionModel extends WlModelAbstract
   public $a_region;
 
   /**
-   * The locale ID to find regions for.
+   * The locale ID to find regions for. One of the {@link LocaleSid} constants.
    *
    * @get get
    * @var int
diff --git a/WellnessLiving/Core/Locale/CurrencySid.php b/WellnessLiving/Core/Locale/CurrencySid.php
new file mode 100644
index 00000000..ae8f93b0
--- /dev/null
+++ b/WellnessLiving/Core/Locale/CurrencySid.php
@@ -0,0 +1,94 @@
+<?php
+
+namespace WellnessLiving\Core\Locale;
+
+/**
+ * A list of currencies.
+ *
+ * Currency constant names must comply with the standard `ISO 4217` for correct integration with other services.
+ *
+ * @link https://docs.1010data.com/1010dataReferenceManual/DataTypesAndFormats/currencyUnitCodes.html
+ *
+ * Last used ID: 16
+ */
+abstract class CurrencySid
+{
+  /**
+   * United Arab Emirates dirham.
+   */
+  const AED = 11;
+
+  /**
+   * Australian dollar.
+   */
+  const AUD = 6;
+
+  /**
+   * Canadian dollar.
+   */
+  const CAD = 4;
+
+  /**
+   * Egypt Pound.
+   */
+  const EGP = 8;
+
+  /**
+   * Euro.
+   */
+  const EUR = 13;
+
+  /**
+   * British pound.
+   */
+  const GBP = 3;
+
+  /**
+   * Kuwaiti dinar.
+   */
+  const KWD = 14;
+
+  /**
+   * Cayman Islands dollar.
+   */
+  const KYD = 5;
+
+  /**
+   * Mauritian Rupee.
+   */
+  const MUR = 16;
+
+  /**
+   * New Zealand Dollar.
+   */
+  const NZD = 10;
+
+  /**
+   * Philippines Pesco.
+   */
+  const PHP = 12;
+
+  /**
+   * Saudi Riyal.
+   */
+  const SAR = 15;
+
+  /**
+   * Unknown code.
+   *
+   * Used when currency is not specified or is not known.
+   */
+  const UNKNOWN = 2;
+
+  /**
+   * US dollars.
+   */
+  const USD = 1;
+
+  /**
+   * South African rand.
+   */
+  const ZAR = 7;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Locale/LocaleSid.php b/WellnessLiving/Core/Locale/LocaleSid.php
new file mode 100644
index 00000000..87346886
--- /dev/null
+++ b/WellnessLiving/Core/Locale/LocaleSid.php
@@ -0,0 +1,88 @@
+<?php
+
+namespace WellnessLiving\Core\Locale;
+
+/**
+ * A list of locales.
+ *
+ * Last used ID: 16
+ */
+abstract class LocaleSid
+{
+  /**
+   * Australia.
+   */
+  const AUSTRALIA = 4;
+
+  /**
+   * Canada.
+   */
+  const CANADA = 2;
+
+  /**
+   * Cayman Islands.
+   */
+  const CAYMAN = 5;
+
+  /**
+   * Cyprus.
+   */
+  const CYPRUS = 13;
+
+  /**
+   * Egypt.
+   */
+  const EGYPT = 8;
+
+  /**
+   * Kuwait
+   */
+  const KUWAIT = 14;
+
+  /**
+   * Republic of Mauritius.
+   */
+  const MAURITIUS = 16;
+
+  /**
+   * A special locale that can be used for testing or a business situated in an unknown region.
+   */
+  const NEVERLAND = 9;
+
+  /**
+   * New Zealand.
+   */
+  const NEW_ZEALAND = 10;
+
+  /**
+   * Philippines.
+   */
+  const PHILIPPINES = 12;
+
+  /**
+   * Saudi Arabia.
+   */
+  const SAUDI_ARABIA = 15;
+
+  /**
+   * South Africa.
+   */
+  const SOUTH_AFRICA = 6;
+
+  /**
+   * United Arab Emirates.
+   */
+  const UAE = 11;
+
+  /**
+   * United Kingdom.
+   */
+  const UK = 3;
+
+  /**
+   * United States of America.
+   */
+  const USA = 1;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Sid/SortOrderSid.php b/WellnessLiving/Core/Sid/SortOrderSid.php
new file mode 100644
index 00000000..8dbec01b
--- /dev/null
+++ b/WellnessLiving/Core/Sid/SortOrderSid.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace WellnessLiving\Core\Sid;
+
+/**
+ * List of possible sort order.
+ */
+class SortOrderSid
+{
+  /**
+   * Ascending order.
+   */
+  const ASC = 2;
+
+  /**
+   * Descending order.
+   */
+  const DESC = 1;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Core/Sid/YesNoSid.php b/WellnessLiving/Core/Sid/YesNoSid.php
new file mode 100644
index 00000000..a61662bd
--- /dev/null
+++ b/WellnessLiving/Core/Sid/YesNoSid.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace WellnessLiving\Core\Sid;
+
+/**
+ * A list of two answers for any question: Yes or No.
+ */
+class YesNoSid
+{
+  /**
+   * The answer is "no".
+   */
+  const NO = 2;
+
+  /**
+   * The answer is "yes".
+   */
+  const YES = 1;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Ip/Service/EditModel.php b/WellnessLiving/Studio/Ip/Service/EditModel.php
index 75366871..5219bc6d 100644
--- a/WellnessLiving/Studio/Ip/Service/EditModel.php
+++ b/WellnessLiving/Studio/Ip/Service/EditModel.php
@@ -12,6 +12,8 @@ class EditModel extends WlModelAbstract
   /**
    * Timeout of the service.
    *
+   * One of {@link ServiceTimeoutSid} constants.
+   *
    * @get result
    * @post post
    * @var int
@@ -21,6 +23,8 @@ class EditModel extends WlModelAbstract
   /**
    * Type of the service.
    *
+   * One of {@link ServiceTypeSid} constants.
+   *
    * @get result
    * @post post
    * @var int
diff --git a/WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php b/WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php
new file mode 100644
index 00000000..3bb3ed51
--- /dev/null
+++ b/WellnessLiving/Studio/Ip/Service/ServiceTimeoutSid.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace WellnessLiving\Studio\Ip\Service;
+
+/**
+ * Time during which access by IP address is granted to personnel.
+ *
+ * Minimum between two values is used.
+ */
+abstract class ServiceTimeoutSid
+{
+  /**
+   * Sensitive services that may require much work.
+   */
+  const DAY = 2;
+
+  /**
+   * Sensitive services that are used very rare.
+   */
+  const HOUR = 1;
+
+  /**
+   * Services that are not sensitive.
+   */
+  const MONTH = 4;
+
+  /**
+   * Not that sensitive services.
+   */
+  const WEEK = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php b/WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php
new file mode 100644
index 00000000..a9e9f75c
--- /dev/null
+++ b/WellnessLiving/Studio/Ip/Service/ServiceTypeSid.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace WellnessLiving\Studio\Ip\Service;
+
+/**
+ * A list of service types to which access by IP address can be managed.
+ */
+abstract class ServiceTypeSid
+{
+  /**
+   * Amazon security group.
+   *
+   * @title Amazon Security Group
+   */
+  const AMAZON_GROUP = 5;
+
+  /**
+   * Amazon IAM user.
+   *
+   * @title Amazon IAM user
+   */
+  const AMAZON_IAM = 6;
+
+  /**
+   * Amazon RDS security group.
+   */
+  const AMAZON_RDS = 1;
+
+  /**
+   * Access over SSH protocol.
+   *
+   * @title Access over SSH
+   */
+  const SSH = 2;
+
+  /**
+   * Access to SVN repository.
+   *
+   * @title Access to SVN repository
+   */
+  const SVN = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php b/WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php
new file mode 100644
index 00000000..2dcb47d3
--- /dev/null
+++ b/WellnessLiving/Studio/Task/Branch/BranchDeleteModeSid.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace WellnessLiving\Studio\Task\Branch;
+
+/**
+ *  List of the available modes for <tt>BranchDelete</tt> build.
+ */
+class BranchDeleteModeSid
+{
+  /**
+   * Deleting branch without merging changes.
+   */
+  const DELETE_NO_MERGE = 3;
+
+  /**
+   * Changes are merged. Branch is not deleted.
+   */
+  const MERGE_ONLY = 2;
+
+  /**
+   * Deleting branch with merging changes.
+   */
+  const STANDARD = 1;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Task/Branch/BranchModel.php b/WellnessLiving/Studio/Task/Branch/BranchModel.php
index 659328d6..f392469d 100644
--- a/WellnessLiving/Studio/Task/Branch/BranchModel.php
+++ b/WellnessLiving/Studio/Task/Branch/BranchModel.php
@@ -11,10 +11,13 @@ class BranchModel extends WlModelAbstract
 {
   /**
    * Information about entities necessary for the functioning of the stand.
+   * Has an arbitrary structure.
+   *
+   * `null` if not initialized and will be ignored.
    *
    * @get result
    * @put get
-   * @var array|string|null
+   * @var array|null
    */
   public $a_stand_data = null;
 
@@ -27,6 +30,10 @@ class BranchModel extends WlModelAbstract
   public $id_build_mode = 1;
 
   /**
+   * Stand status, one of {@link StandStatusSid}.
+   *
+   * `null` if not initialized and will be ignored.
+   *
    * @get get,result
    * @put get
    * @var int|null
@@ -34,6 +41,8 @@ class BranchModel extends WlModelAbstract
   public $id_stand_status = null;
 
   /**
+   * Branch status, one of {@link BranchStatusSid}.
+   *
    * @get result
    * @var int|null
    */
diff --git a/WellnessLiving/Studio/Task/Branch/BranchStatusSid.php b/WellnessLiving/Studio/Task/Branch/BranchStatusSid.php
new file mode 100644
index 00000000..7d84e7a2
--- /dev/null
+++ b/WellnessLiving/Studio/Task/Branch/BranchStatusSid.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace WellnessLiving\Studio\Task\Branch;
+
+/**
+ * Branch statuses.
+ *
+ * Last used ID: 3.
+ */
+class BranchStatusSid
+{
+  /**
+   * The branch and all related things (catalogs in the repository, site) are being created now.
+   *
+   * This action is triggered from the task page on the Studio.
+   *
+   * The branch in this status may be transitioned to:
+   * * {@link BranchStatusSid::READY} in a case when creation is successfully completed;
+   * * {@link BranchStatusSid::DELETING} in a case when creation is not completed and the branch
+   *   should be deleted before repeatedly creation.
+   */
+  const CREATING = 1;
+
+  /**
+   * The branch and all related things (catalogs in the repository, site) are being deleted now.
+   *
+   * This action is triggered from the task page on the Studio.
+   *
+   * The branch in this status may be only deleted from the database.
+   */
+  const DELETING = 3;
+
+  /**
+   * The branch and all related things (catalogs in the repository, site) are ready to use.
+   *
+   * This action is triggered from <tt>BranchCreate</tt> build.
+   *
+   * The branch in this status may be transitioned only to {@link BranchStatusSid::DELETING}.
+   */
+  const READY = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Studio/Task/Branch/StandStatusSid.php b/WellnessLiving/Studio/Task/Branch/StandStatusSid.php
new file mode 100644
index 00000000..9c37964e
--- /dev/null
+++ b/WellnessLiving/Studio/Task/Branch/StandStatusSid.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace WellnessLiving\Studio\Task\Branch;
+
+/**
+ * Stand statuses.
+ *
+ * Last used ID: 5.
+ */
+class StandStatusSid
+{
+  /**
+   * Stand is in creation process.
+   *
+   * The stand in this status may be transitioned to:
+   * * * {@link StandStatusSid::READY} in a case when creation is successfully completed.
+   * * * {@link StandStatusSid::ERROR} in a case when creation was failed with error.
+ */
+  const CREATION = 2;
+
+  /**
+   * Stand is in deletion process.
+   *
+   * The stand in this status may be transitioned to:
+   * * * {@link StandStatusSid::NOT_EXIST} in a case when deletion is successfully completed.
+   * * * {@link StandStatusSid::ERROR} in a case when deletion was failed with error.
+   */
+  const DELETION = 4;
+
+  /**
+   * Creating or deleting a stand resulted in an error
+   *
+   * The stand in this status may be transitioned to:
+   * * * {@link StandStatusSid::NOT_EXIST} if the creation or deletion process has not been completed, we must delete the stand.
+   */
+  const ERROR = 5;
+
+  /**
+   * Stand has not been created.
+   *
+   * The stand in this status may be transitioned only to {@link StandStatusSid::CREATION}.
+   */
+  const NOT_EXIST = 1;
+
+  /**
+   * Stand was created and ready for use.
+   *
+   * The stand in this status may be transitioned only to {@link StandStatusSid::DELETION}.
+   */
+  const READY = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php b/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php
new file mode 100644
index 00000000..75020784
--- /dev/null
+++ b/WellnessLiving/Thoth/ReportCore/Generator/ReportGeneratorStatusSid.php
@@ -0,0 +1,93 @@
+<?php
+
+namespace WellnessLiving\Thoth\ReportCore\Generator;
+
+/**
+ * Lists statuses of reports from point of view of its generation.
+ */
+class ReportGeneratorStatusSid
+{
+  /**
+   * Report is in an inconsistent state.
+   *
+   * There was an aborted operation which means this report is available partially.
+   *
+   * The following transitions are possible:
+   *
+   * * `ABORTED` => `DELETING` when a background task finds that this report is old and should be deleted.
+   *
+   * * `ABORTED` => `QUEUED` if user clicks to regenerate this report
+   */
+  const ABORTED = 6;
+
+  /**
+   * Current operation is being aborted now.
+   *
+   * The following transitions are possible:
+   *
+   * * `ABORTING` => `ABORTED` when current operation completes.
+   *   This transition is performed in two places: before the beginning of the actual generation,
+   *   and after completion of the generation.
+   */
+  const ABORTING = 5;
+
+  /**
+   * This report is being deleted now.
+   *
+   * The following transitions are possible:
+   *
+   * * `DELETING` => (report does not exist anymore) when deletion of this report completes.
+   */
+  const DELETING = 4;
+
+  /**
+   * This report is being generated now.
+   *
+   * This status is set when report is generated from zero point.
+   * This status basically means that not all partition of the report present.
+   * It also means that all partitions that exist have the newest values.
+   *
+   * All new reports are created in this status.
+   *
+   * The following transitions are possible:
+   *
+   * * `GENERATING` => `ABORTING` when generation of this report aborted by user.
+   * * `GENERATING` => `READY` when generation of this report completes.
+   *   This transition is performed when generation completes successfully.
+   */
+  const GENERATING = 2;
+
+  /**
+   * Generation of this report is queued.
+   * It will start automatically when generation of other reports completes.
+   *
+   * The following transitions are possible:
+   *
+   * * `QUEUED` => (report does not exist anymore) If generation of this report was aborted while no data was generated.
+   * * `QUEUED` => `ABORTED` If generation of this report was aborted while there is data from previous generation of
+   *    this report.
+   *
+   *    This transition also occurs if a report stayed in the queue more than the set duration and
+   *    there is some data left from the previous generation of this report.
+   * * `QUEUED` => `GENERATING` when there is a free thread slot to start generation of this report immediately.
+   */
+  const QUEUED = 1;
+
+  /**
+   * Generation of this report is now completed.
+   *
+   * The following transitions are possible:
+   *
+   * * `READY` => `DELETING` when a background tasks identifies that this report is old and starts deleting it.
+   *
+   * * `READY` => `QUEUED` when user clicks to regenerate this report
+   */
+  const READY = 3;
+
+  /**
+   * @inheritDoc
+   */
+  const _TRANSLATION_CONTEXT = 'Wl.Report.Generator.ReportGeneratorStatusSid';
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Announcement/AnnouncementListModel.php b/WellnessLiving/Wl/Announcement/AnnouncementListModel.php
index ca9378cb..2b82a5f2 100644
--- a/WellnessLiving/Wl/Announcement/AnnouncementListModel.php
+++ b/WellnessLiving/Wl/Announcement/AnnouncementListModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Wl\Announcement;
 
+use WellnessLiving\Core\Sid\SortOrderSid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -26,6 +27,7 @@ class AnnouncementListModel extends WlModelAbstract
    *
    * @get get,result
    * @var int|null
+   * @see SortOrderSid
    */
   public $id_order = null;
 
diff --git a/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php b/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
index 6bd4b38b..585fbf8b 100644
--- a/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Asset/AssetListModel.php
@@ -3,6 +3,9 @@
 namespace WellnessLiving\Wl\Appointment\Book\Asset;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Resource\Image\ImageIconSid;
+use WellnessLiving\Wl\Resource\Image\ImageShapeSid;
 use WellnessLiving\Wl\Service\ServicePriceSid;
 use WellnessLiving\Wl\Service\ServiceRequireSid;
 
@@ -56,9 +59,9 @@ class AssetListModel extends WlModelAbstract
    *       <dt>bool <var>is_empty</var></dt>
    *       <dd>Determines if the asset logo is empty.</dd>
    *       <dt>string <var>sid_image_icon</var></dt>
-   *       <dd>The icon name. This is only set if the image kind equals to `image`.</dd>
+   *       <dd>The icon name. String representation of one of the {@link ImageIconSid} constants. This is only set if the image kind equals to `image`.</dd>
    *       <dt>string <var>sid_image_shape</var></dt>
-   *       <dd>The shape name. This is set only if the image kind equals to `shape`.</dd>
+   *       <dd>The shape name. String representation of one of the {@link ImageShapeSid} constants. This is set only if the image kind equals to `shape`.</dd>
    *       <dt>string <var>url</var></dt>
    *       <dd>The asset logo URL.</dd>
    *     </dl>
@@ -153,6 +156,8 @@ class AssetListModel extends WlModelAbstract
   public $i_image_width = 0;
 
   /**
+   * Mode type, one of {@link ModeSid} constants.
+   *
    * @get get
    * @var int
    */
diff --git a/WellnessLiving/Wl/Appointment/Book/Asset/Service/ServiceModel.php b/WellnessLiving/Wl/Appointment/Book/Asset/Service/ServiceModel.php
index 92e71a8e..36af95e1 100644
--- a/WellnessLiving/Wl/Appointment/Book/Asset/Service/ServiceModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Asset/Service/ServiceModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Appointment\Book\Asset\Service;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Retrieves assets that are required for a service booking.
@@ -102,6 +103,8 @@ class ServiceModel extends WlModelAbstract
   public $dt_start = '';
 
   /**
+   * Mode type, one of {@link ModeSid} constants.
+   *
    * @get get
    * @var int
    */
diff --git a/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php b/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php
index c213a235..8d5455f6 100644
--- a/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Finish/Finish47Model.php
@@ -5,6 +5,7 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\Book\Question\QuestionModel;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -139,7 +140,7 @@ class Finish47Model extends WlModelAbstract
   public $a_visit = null;
 
   /**
-   * The booking mode ID.
+   * The booking mode ID. One of the {@link ModeSid} constants.
    *
    * @post post
    * @var int
diff --git a/WellnessLiving/Wl/Appointment/Book/Finish/FinishModel.php b/WellnessLiving/Wl/Appointment/Book/Finish/FinishModel.php
index 3ca75bb4..b4deffae 100644
--- a/WellnessLiving/Wl/Appointment/Book/Finish/FinishModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Finish/FinishModel.php
@@ -8,6 +8,8 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\Book\Question\QuestionModel;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
+use WellnessLiving\Wl\Classes\Tab\TabSid;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -146,7 +148,7 @@ class FinishModel extends WlModelAbstract
    *     int <var>id_class_tab</var>
    *   </dt>
    *   <dd>
-   *     The booking service type.
+   *     The booking service type. One of the {@link TabSid} constants.
    *   </dd>
    *   <dt>
    *     int [<var>id_gender_staff</var>]
@@ -298,7 +300,7 @@ class FinishModel extends WlModelAbstract
   public $a_visit;
 
   /**
-   * The booking mode ID.
+   * The booking mode ID. One of the {@link ModeSid} constants.
    *
    * @post post
    * @var int
diff --git a/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php b/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php
index db76a98e..101f76f8 100644
--- a/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Finish/FinishMultipleModel.php
@@ -7,6 +7,8 @@
 use WellnessLiving\Core\a\AGenderSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
+use WellnessLiving\Wl\Classes\Tab\TabSid;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -138,7 +140,7 @@ class FinishMultipleModel extends WlModelAbstract
    *     int <var>id_class_tab</var>
    *   </dt>
    *   <dd>
-   *     The booking service type.
+   *     The booking service type. One of the {@link TabSid} constants.
    *   </dd>
    *   <dt>
    *     int [<var>id_gender_staff</var>]
@@ -311,7 +313,7 @@ class FinishMultipleModel extends WlModelAbstract
   public $a_visit_provider = [];
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @post post
    * @var int
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
index f14c5b3b..3af4b216 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\Service\ServicePriceSid;
 
@@ -252,7 +253,7 @@ class PaymentModel extends WlModelAbstract
   public $a_uid = [];
 
   /**
-   * The key of source mode.
+   * The key of source mode. A constant of {@link ModeSid}.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
index 02720c29..3e8b67f0 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentMultipleModel.php
@@ -5,6 +5,8 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
+use WellnessLiving\Wl\Classes\Tab\TabSid;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -117,7 +119,7 @@ class PaymentMultipleModel extends WlModelAbstract
    *     int <var>id_class_tab</var>
    *   </dt>
    *   <dd>
-   *     The "Book now" tab.
+   *     The "Book now" tab. One of the {@link TabSid} constants.
    *   </dd>
    *   <dt>
    *     string <var>m_tip_appointment</var>
@@ -428,7 +430,7 @@ class PaymentMultipleModel extends WlModelAbstract
   public $a_uid = [];
 
   /**
-   * The ID of the source mode.
+   * The ID of the source mode. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
index 5920280f..9853c161 100644
--- a/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Payment/PaymentPostModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Appointment\WlAppointmentPaySid;
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\Service\ServicePriceSid;
 
@@ -249,7 +250,7 @@ class PaymentPostModel extends WlModelAbstract
   public $a_uid = [];
 
   /**
-   * The key of source mode.
+   * The key of source mode. A constant of {@link ModeSid}.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php b/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
index 065f8654..3cb8633d 100644
--- a/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Product/Product62Model.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Appointment\Book\Product;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Shop\Product\PurchaseRestrictionSid;
 
 /**
  * Returns information about service add-ons.
@@ -38,6 +39,7 @@ class Product62Model extends WlModelAbstract
   /**
    * The key of a user to show information for.
    *
+   * Products with a {@link PurchaseRestrictionSid::TYPE} restriction will be filtered out.
    * Only those products that match the client type or those that have no restrictions will be shown.
    *
    * `null` if the client is not logged in.
diff --git a/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
index dceb0db7..89227bf9 100644
--- a/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Purchase/PurchaseModel.php
@@ -4,6 +4,7 @@
 
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlProgramCategorySid;
 use WellnessLiving\Wl\WlProgramSid;
@@ -499,7 +500,7 @@ class PurchaseModel extends WlModelAbstract
   public $i_width = 0;
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @var int
diff --git a/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php b/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
index fc820596..f146b339 100644
--- a/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
+++ b/WellnessLiving/Wl/Appointment/Book/Service/ServiceList52Model.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Appointment\Book\Service;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Service\ServiceBookFlowSid;
 use WellnessLiving\Wl\Service\ServicePriceSid;
 use WellnessLiving\Wl\Service\ServiceRequireSid;
 
@@ -150,7 +151,7 @@ class ServiceList52Model extends WlModelAbstract
    *     int <var>id_book_flow</var>
    *   </dt>
    *   <dd>
-   *     The type of client booking flow.
+   *     The type of client booking flow. One of {@link ServiceBookFlowSid} constants.
    *   </dd>
    *   <dt>
    *     int <var>id_service_require</var>
diff --git a/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php b/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
index f8b1b8da..b220abd5 100644
--- a/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
+++ b/WellnessLiving/Wl/Appointment/Book/Service/ServiceListModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Appointment\Book\Service;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Service\ServiceBookFlowSid;
 use WellnessLiving\Wl\Service\ServicePriceSid;
 use WellnessLiving\Wl\Service\ServiceRequireSid;
 
@@ -149,7 +150,7 @@ class ServiceListModel extends WlModelAbstract
    *     int <var>id_book_flow</var>
    *   </dt>
    *   <dd>
-   *     The type of client booking flow.
+   *     The type of client booking flow. One of {@link ServiceBookFlowSid} constants.
    *   </dd>
    *   <dt>
    *     int <var>id_service_require</var>
diff --git a/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php b/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
index bb22537c..4e273184 100644
--- a/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
+++ b/WellnessLiving/Wl/Book/Process/Frequency/RepeatModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * For recurrent class booking returns list of visits to be created for the given settings.
@@ -109,6 +110,8 @@ class RepeatModel extends WlModelAbstract
   public $id_duration = 0;
 
   /**
+   * WellnessLiving mode, one of {@link ModeSid} constants.
+   *
    * @get get
    * @var int
    */
diff --git a/WellnessLiving/Wl/Book/Process/Info/Info54Model.php b/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
index e70423e5..3af1f388 100644
--- a/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Info/Info54Model.php
@@ -5,9 +5,13 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Book\Process\ProcessSpaSid;
+use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Offers functionality for the class booking wizard on the "Class and Location" page.
+ *
+ * When using this endpoint, take into account the {@link ProcessSpaSid::QUIZ} step.
  */
 class Info54Model extends WlModelAbstract
 {
@@ -380,7 +384,7 @@ class Info54Model extends WlModelAbstract
   public $i_wait_spot = 0;
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Info/InfoModel.php b/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
index 74589c78..f2a3596c 100644
--- a/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
+++ b/WellnessLiving/Wl/Book/Process/Info/InfoModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Offers functionality for the class booking wizard on the "Class and Location" page.
@@ -382,7 +383,7 @@ class InfoModel extends WlModelAbstract
   public $i_wait_spot = 0;
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
index a20e1b53..6afee7ca 100644
--- a/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Book/Process/Payment/PaymentModel.php
@@ -6,6 +6,7 @@
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -310,7 +311,7 @@ class PaymentModel extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Process54Model.php b/WellnessLiving/Wl/Book/Process/Process54Model.php
index caa56e88..ddc025b2 100644
--- a/WellnessLiving/Wl/Book/Process/Process54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process54Model.php
@@ -5,11 +5,15 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Classes\RequirePaySid;
 use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
+use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Performs the booking wizard steps.
  *
+ * Include the {@link ProcessSpaSid::QUIZ} step, if needed.
+ *
  * @deprecated Use {@link Process59Model} instead.
  */
 class Process54Model extends WlModelAbstract
@@ -33,7 +37,7 @@ class Process54Model extends WlModelAbstract
    *     int <var>id_book_process</var>
    *   </dt>
    *   <dd>
-   *     The step ID.
+   *     The step ID. One of the {@link ProcessSpaSid} constants.
    *   </dd>
    *   <dt>
    *     bool [<var>is_current</var>]
@@ -128,7 +132,7 @@ class Process54Model extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
@@ -138,6 +142,7 @@ class Process54Model extends WlModelAbstract
 
   /**
    * The purchase rule ID.
+   * One of the {@link RequirePaySid} constants.
    *
    * @get result
    * @var int
diff --git a/WellnessLiving/Wl/Book/Process/Process59Model.php b/WellnessLiving/Wl/Book/Process/Process59Model.php
index 54e412f7..a4ac5bb4 100644
--- a/WellnessLiving/Wl/Book/Process/Process59Model.php
+++ b/WellnessLiving/Wl/Book/Process/Process59Model.php
@@ -5,7 +5,9 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Classes\RequirePaySid;
 use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
+use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Performs the booking wizard steps.
@@ -34,7 +36,7 @@ class Process59Model extends WlModelAbstract
    *     int <var>id_book_process</var>
    *   </dt>
    *   <dd>
-   *     The step ID.
+   *     The step ID. One of the {@link ProcessSpaSid} constants.
    *   </dd>
    *   <dt>
    *     bool [<var>is_current</var>]
@@ -129,7 +131,7 @@ class Process59Model extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
@@ -139,6 +141,7 @@ class Process59Model extends WlModelAbstract
 
   /**
    * The purchase rule ID.
+   * One of the {@link RequirePaySid} constants.
    *
    * @get result
    * @var int
diff --git a/WellnessLiving/Wl/Book/Process/ProcessModel.php b/WellnessLiving/Wl/Book/Process/ProcessModel.php
index 87629170..de0c5f65 100644
--- a/WellnessLiving/Wl/Book/Process/ProcessModel.php
+++ b/WellnessLiving/Wl/Book/Process/ProcessModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Classes\RequirePaySid;
 use WellnessLiving\Wl\Family\Relation\WlFamilyRelationSid;
 
 /**
@@ -33,7 +34,7 @@ class ProcessModel extends WlModelAbstract
    *     int <var>id_book_process</var>
    *   </dt>
    *   <dd>
-   *     The step ID.
+   *     The step ID. One of the {@link ProcessSpaSid} constants.
    *   </dd>
    *   <dt>
    *     bool [<var>is_current</var>]
@@ -138,6 +139,7 @@ class ProcessModel extends WlModelAbstract
 
   /**
    * The purchase rule ID.
+   * One of the {@link RequirePaySid} constants.
    *
    * @get result
    * @var int
diff --git a/WellnessLiving/Wl/Book/Process/ProcessSpaSid.php b/WellnessLiving/Wl/Book/Process/ProcessSpaSid.php
new file mode 100644
index 00000000..80e72e19
--- /dev/null
+++ b/WellnessLiving/Wl/Book/Process/ProcessSpaSid.php
@@ -0,0 +1,102 @@
+<?php
+
+namespace WellnessLiving\Wl\Book\Process;
+
+/**
+ * Event booking process sid class
+ *
+ * Last used ID: 12.
+ */
+abstract class ProcessSpaSid
+{
+  /**
+   * Step "Class details".
+   *
+   * Special step - a container for combining other steps.
+   *
+   * This constant has been added to the SID class to match the steps interface in JS.
+   *
+   * Adding a step to the queue is done on the client side (in JS).
+   *
+   * Designed for Client Web View.
+   */
+  const DETAIL = 10;
+
+  /**
+   * Step "Documents".
+   *
+   * Special step - a container for combining other steps.
+   *
+   * This constant has been added to the SID class to match the steps interface in JS
+   *
+   * Adding a step to the queue is done on the client side (in JS).
+   *
+   * The list of steps that can be displayed on:
+   *  * {@link ProcessSpaSid::QUIZ}
+   *  * Purchase options contract
+   *
+   * Designed for Client Web View.
+   */
+  const DOCUMENT = 8;
+
+  /**
+   * Step "Frequency".
+   * It is necessary to select booking frequency.
+   *
+   * Designed for Client Web View.
+   */
+  const FREQUENCY = 9;
+
+  /**
+   * Information about the class.
+   *
+   * In the SPA app, this step combines the following steps:
+   * * {@link ProcessSpaSid::FREQUENCY}
+   * * {@link ProcessSpaSid::SESSION}
+   */
+  const INFO = 2;
+
+  /**
+   * Installment selection.
+   */
+  const INSTALLMENT = 4;
+
+  /**
+   * Sign in, Sign up, fill in all necessary account data.
+   */
+  const PASSPORT = 1;
+
+  /**
+   * Card data and the booking confirmation.
+   */
+  const PAYMENT = 5;
+
+  /**
+   * Quizzes attached to the class.
+   */
+  const QUIZ = 7;
+
+  /**
+   * Booking for.
+   */
+  const RELATION = 12;
+
+  /**
+   * Selection of assets.
+   */
+  const RESOURCE = 6;
+
+  /**
+   * Session selection step for a session event.
+   *
+   * Designed for Client Web View.
+   */
+  const SESSION = 11;
+
+  /**
+   * A list of possible Purchase Options to be bought.
+   */
+  const STORE = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
index df3c299e..2b4831e9 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/Purchase56Model.php
@@ -5,6 +5,7 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlProgramCategorySid;
 use WellnessLiving\Wl\WlProgramSid;
@@ -363,7 +364,7 @@ class Purchase56Model extends WlModelAbstract
   public $i_image_width = 0;
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
index 55151c3a..72b44bc4 100644
--- a/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
+++ b/WellnessLiving/Wl/Book/Process/Purchase/PurchaseModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlProgramCategorySid;
 use WellnessLiving\Wl\WlProgramSid;
@@ -366,7 +367,7 @@ class PurchaseModel extends WlModelAbstract
   public $i_image_width = 0;
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php b/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
index 3cac5216..995d9fb4 100644
--- a/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
+++ b/WellnessLiving/Wl/Book/Process/Quiz/QuizModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 
 /**
@@ -186,7 +187,7 @@ class QuizModel extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php b/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
index 752d1c3f..33766c85 100644
--- a/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
+++ b/WellnessLiving/Wl/Book/Process/Resource/Resource54Model.php
@@ -5,9 +5,13 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Book\Process\ProcessSpaSid;
+use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Selects assets when making a booking.
+ *
+ * Take note of the {@link ProcessSpaSid::QUIZ} step.
  */
 class Resource54Model extends WlModelAbstract
 {
@@ -247,7 +251,7 @@ class Resource54Model extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php b/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
index ad133a3f..de728de0 100644
--- a/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
+++ b/WellnessLiving/Wl/Book/Process/Resource/ResourceModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Selects assets for making a booking.
@@ -249,7 +250,7 @@ class ResourceModel extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
index 601ce143..3d3640e6 100644
--- a/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
+++ b/WellnessLiving/Wl/Book/Process/Store/StoreModel.php
@@ -6,6 +6,7 @@
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Book\Process\Purchase\Purchase56Model;
+use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Manages the booking wizard for the "Purchase Options" page.
@@ -169,7 +170,7 @@ class StoreModel extends WlModelAbstract
   public $dt_date_gmt = '';
 
   /**
-   * The mode type.
+   * The mode type. One of the {@link ModeSid} constants.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Business/BusinessModel.php b/WellnessLiving/Wl/Business/BusinessModel.php
index 7df1257c..5a5c6825 100644
--- a/WellnessLiving/Wl/Business/BusinessModel.php
+++ b/WellnessLiving/Wl/Business/BusinessModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Wl\Business;
 
+use WellnessLiving\Core\Locale\LocaleSid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -14,6 +15,7 @@ class BusinessModel extends WlModelAbstract
    *
    * @post post
    * @var int
+   * @see LocaleSid
    */
   public $id_locale;
 
diff --git a/WellnessLiving/Wl/Business/DataModel.php b/WellnessLiving/Wl/Business/DataModel.php
index 9396fcec..dc89269b 100644
--- a/WellnessLiving/Wl/Business/DataModel.php
+++ b/WellnessLiving/Wl/Business/DataModel.php
@@ -2,6 +2,8 @@
 
 namespace WellnessLiving\Wl\Business;
 
+use WellnessLiving\Core\Locale\CurrencySid;
+use WellnessLiving\Core\Locale\LocaleSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Service\ServiceSid;
 use WellnessLiving\Wl\WlRankTypeSid;
@@ -60,6 +62,7 @@ class DataModel extends WlModelAbstract
    *
    * @get result
    * @var int
+   * @see CurrencySid
    */
   public $id_currency;
 
@@ -68,6 +71,7 @@ class DataModel extends WlModelAbstract
    *
    * @get result
    * @var int
+   * @see LocaleSid
    */
   public $id_locale;
 
diff --git a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php
new file mode 100644
index 00000000..c862482b
--- /dev/null
+++ b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationFormSid.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace WellnessLiving\Wl\Business\Franchise\Location;
+
+/**
+ * A list tab.
+ *
+ * Last used ID: 4.
+ */
+class BusinessFranchiseLocationFormSid
+{
+  /**
+   * The tab country.
+   *
+   * @title country
+   */
+  const COUNTRY = 1;
+
+  /**
+   * The tab location.
+   *
+   * @title location
+   */
+  const LOCATION = 2;
+
+  /**
+   * The tab region.
+   *
+   * @title region
+   */
+  const REGION = 3;
+
+  /**
+   * The tab state/province.
+   *
+   * @title state/province
+   */
+  const STATE_PROVINCE = 4;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationModel.php b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationModel.php
index d45ec91a..f5c67ee8 100644
--- a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationModel.php
+++ b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationModel.php
@@ -165,6 +165,10 @@ class BusinessFranchiseLocationModel extends WlModelAbstract
   /**
    * Determines which locations should be returned.
    *
+   * One of the {@link BusinessFranchiseLocationSid} constants.
+   *
+   * If `null`, {@link BusinessFranchiseLocationSid::ALL} is used.
+   *
    * @get get
    * @var int
    */
diff --git a/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php
new file mode 100644
index 00000000..632addc3
--- /dev/null
+++ b/WellnessLiving/Wl/Business/Franchise/Location/BusinessFranchiseLocationSid.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace WellnessLiving\Wl\Business\Franchise\Location;
+
+/**
+ * Types of the location.
+ *
+ * Used in the {@link BusinessFranchiseLocationModel}.
+ */
+class BusinessFranchiseLocationSid
+{
+  /**
+   * All locations.
+   *
+   * @title All
+   */
+  const ALL = 1;
+
+  /**
+   * Locations without the region.
+   *
+   * @title Without region
+   */
+  const REGION_NO = 2;
+
+  /**
+   * Location with the region.
+   *
+   * @title With region
+   */
+  const REGION_YES = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php b/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
index 3a4810a0..d6d2d43c 100644
--- a/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
+++ b/WellnessLiving/Wl/Catalog/CatalogList/CatalogProductModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Wl\Catalog\CatalogList;
 
+use WellnessLiving\Core\Sid\SortOrderSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\WlSaleSid;
 
@@ -13,8 +14,8 @@ class CatalogProductModel extends WlModelAbstract
   /**
    * Categories with sort settings. Keys refer to shop category keys. Values refer to sort settings. Contains the following structure:<dl>
    *   <dt>array <var>a_order</var></dt>
-   *   <dt>int <var>id_order</var></dt><dd>The sort order.</dd>
-   *   <dt>int <var>id_sort</var></dt><dd>The sort order ID.</dd>
+   *   <dt>int <var>id_order</var></dt><dd>The sort order. One of the {@link SortOrderSid} constants.</dd>
+   *   <dt>int <var>id_sort</var></dt><dd>The sort order ID. One of the {@link SortOrderSid} constants.</dd>
    * </dl>
    *
    * @get result
@@ -36,7 +37,7 @@ class CatalogProductModel extends WlModelAbstract
    *   <dt>int <var>i_last</var></dt>
    *   <dd>The last shown product.</dd>
    *
-   *   <dt>int <var>id_order</var></dt><dd>The sort order ID.</dd>
+   *   <dt>int <var>id_order</var></dt><dd>The sort order ID. One of the {@link SortOrderSid} constants.</dd>
    *
    *   <dt>int <var>id_sort</var></dt>
    *   <dd>The sort options ID.</dd>
diff --git a/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php b/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php
index f59435d2..eaaada7e 100644
--- a/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php
+++ b/WellnessLiving/Wl/Catalog/CatalogList/ElementModel.php
@@ -4,6 +4,7 @@
 
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Catalog\PurchaseOptionViewSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlSaleSid;
 
@@ -216,7 +217,7 @@ class ElementModel extends WlModelAbstract
    *   <dd>Contains information about taxes.</dd>
    *
    *   <dt>string <var>id_purchase_option_view</var></dt>
-   *   <dd>The Purchase Option view type.</dd>
+   *   <dd>The Purchase Option view type. One of the {@link PurchaseOptionViewSid} constants.</dd>
    *
    *   <dt>string <var>m_discount_code</var></dt>
    *   <dd>The discount code amount.</dd>
@@ -379,7 +380,7 @@ class ElementModel extends WlModelAbstract
   public $id_purchase_item;
 
   /**
-   * The ID of the item view category.
+   * The ID of the item view category. One of the {@link PurchaseOptionViewSid} constants.
    *
    * @get result
    * @var int
diff --git a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
index a111c605..4107946a 100644
--- a/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
+++ b/WellnessLiving/Wl/Catalog/Payment/PaymentModel.php
@@ -6,6 +6,7 @@
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
 use WellnessLiving\Wl\Insurance\Catalog\ProgramListModel;
 use WellnessLiving\Wl\Insurance\Enrollment\Field\EnrollmentFieldListModel;
+use WellnessLiving\Wl\Mode\ModeSid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlSaleSid;
 
@@ -418,7 +419,7 @@ class PaymentModel extends WlModelAbstract
   public $f_discount_percent = 0;
 
   /**
-   * The WellnessLiving mode type (required).
+   * The WellnessLiving mode type (required). One of the {@link ModeSid} constants.
    *
    * @post get
    * @var int
diff --git a/WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php b/WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php
new file mode 100644
index 00000000..cfa4b579
--- /dev/null
+++ b/WellnessLiving/Wl/Catalog/PurchaseOptionViewSid.php
@@ -0,0 +1,65 @@
+<?php
+
+namespace WellnessLiving\Wl\Catalog;
+
+use WellnessLiving\Wl\WlProgramSid;
+
+/**
+ * A list of Purchase Option view types.
+ *
+ * Last ID: 9.
+ */
+class PurchaseOptionViewSid
+{
+  /**
+   * A single appointment reservation.
+   */
+  const APPOINTMENT = 1;
+
+  /**
+   * A single class reservation.
+   */
+  const CLASS_PERIOD = 2;
+
+  /**
+   * A gift card.
+   */
+  const COUPON = 3;
+
+  /**
+   * Enrollments. Classes where flag event is <tt>true</tt>.
+   */
+  const ENROLLMENT = 4;
+
+  /**
+   * Promotions with programs:
+   * * {@link WlProgramSid::ACCOUNT_MEMBERSHIP};
+   * * {@link WlProgramSid::CLASS_MEMBERSHIP};
+   * * {@link WlProgramSid::RESOURCE_MEMBERSHIP};
+   * * {@link WlProgramSid::SERVICE_MEMBERSHIP};
+   * * {@link WlProgramSid::VISIT_MEMBERSHIP}.
+   */
+  const MEMBERSHIP = 8;
+
+  /**
+   * Promotions with program {@link WlProgramSid::PACKAGE}.
+   */
+  const PACKAGE = 5;
+
+  /**
+   * Products (such as water, t-shirts, etc.).
+   */
+  const PRODUCT = 6;
+
+  /**
+   * Session passes.
+   */
+  const PROMOTION = 7;
+
+  /**
+   * Products available for quick buy.
+   */
+  const QUICK_BUY = 9;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php b/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
index f85867ac..2b0c354f 100644
--- a/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
+++ b/WellnessLiving/Wl/Catalog/StaffApp/CatalogList/CatalogListModel.php
@@ -6,6 +6,7 @@
 use WellnessLiving\Wl\Catalog\Payment\PaymentModel;
 use WellnessLiving\Wl\Insurance\Catalog\ProgramListModel;
 use WellnessLiving\Wl\Insurance\Enrollment\Field\EnrollmentFieldListModel;
+use WellnessLiving\Wl\Shop\Product\PurchaseRestrictionSid;
 use WellnessLiving\Wl\WlProgramSid;
 use WellnessLiving\Wl\WlSaleSid;
 
@@ -63,7 +64,7 @@ class CatalogListModel extends WlModelAbstract
    *     int <var>id_restriction</var>
    *   </dt>
    *   <dd>
-   *     The restriction ID.
+   *     The restriction ID. One of the {@link PurchaseRestrictionSid} constants.
    *   </dd>
    *   <dt>
    *     int <var>id_sale</var>
diff --git a/WellnessLiving/Wl/Classes/Period/Clients/Model.php b/WellnessLiving/Wl/Classes/Period/Clients/Model.php
index 65b32fa5..d0867b17 100644
--- a/WellnessLiving/Wl/Classes/Period/Clients/Model.php
+++ b/WellnessLiving/Wl/Classes/Period/Clients/Model.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Classes\Period\Clients;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Visit\WlVisitSid;
 
 /**
  * Class to manage class period info with Api.
@@ -35,7 +36,7 @@ class Model extends WlModelAbstract
    *   </li>
    *   <li>int <var>uid</var> User identifier.
    *   </li>
-   *   <li>string <var>visit</var> State of visit.
+   *   <li>string <var>visit</var> State of visit. String representation of constants {@link WlVisitSid}.
    *   </li>
    * </ul>
    *
diff --git a/WellnessLiving/Wl/Classes/RequirePaySid.php b/WellnessLiving/Wl/Classes/RequirePaySid.php
new file mode 100644
index 00000000..a94638af
--- /dev/null
+++ b/WellnessLiving/Wl/Classes/RequirePaySid.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace WellnessLiving\Wl\Classes;
+
+/**
+ * List of possible modes to require amount while booking a class.
+ */
+class RequirePaySid
+{
+  /**
+   * Clients can pay online or pay when they visit.
+   * If set "pay when visit" then it has additional options.
+   */
+  const ADVANCE = 3;
+
+  /**
+   * Client should leave a deposit before booking an event.
+   */
+  const DEPOSIT = 4;
+
+  /**
+   * Client must purchase online.
+   */
+  const ONLINE = 1;
+
+  /**
+   * Clients can only pay when they visit. Online payment is not available.
+   */
+  const VISIT = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Classes/Tab/TabSid.php b/WellnessLiving/Wl/Classes/Tab/TabSid.php
new file mode 100644
index 00000000..910613d4
--- /dev/null
+++ b/WellnessLiving/Wl/Classes/Tab/TabSid.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace WellnessLiving\Wl\Classes\Tab;
+
+/**
+ * List of class tab objects.
+ *
+ * Last ID: 6.
+ */
+abstract class TabSid
+{
+  /**
+   * Enrolments.
+   */
+  const ENROLLMENT = 2;
+
+  /**
+   * Bookable Assets.
+   */
+  const RESOURCE = 4;
+
+  /**
+   * Appointments.
+   */
+  const SERVICE = 3;
+
+  /**
+   * Classes.
+   */
+  const TRAINING = 1;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Collector/DebtListModel.php b/WellnessLiving/Wl/Collector/DebtListModel.php
index 53c73313..97bc1c88 100644
--- a/WellnessLiving/Wl/Collector/DebtListModel.php
+++ b/WellnessLiving/Wl/Collector/DebtListModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Wl\Collector;
 
+use WellnessLiving\Core\Locale\CurrencySid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -25,7 +26,7 @@ class DebtListModel extends WlModelAbstract
    *   <dt>string <var>dtu_cease</var></dt>
    *   <dd>The date and time in UTC when the debt was fully ceased.</dd>
    *   <dt>int <var>id_currency</var></dt>
-   *   <dd>The debt currency ID.</dd>
+   *   <dd>The debt currency ID. One of {@link CurrencySid} constants.</dd>
    *   <dt>string <var>k_business</var></dt>
    *   <dd>The business key where the debt occurred.</dd>
    *   <dt>string <var>k_collector_debt</var></dt>
diff --git a/WellnessLiving/Wl/Collector/DebtPayModel.php b/WellnessLiving/Wl/Collector/DebtPayModel.php
index 75e6885e..3865460a 100644
--- a/WellnessLiving/Wl/Collector/DebtPayModel.php
+++ b/WellnessLiving/Wl/Collector/DebtPayModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Wl\Collector;
 
+use WellnessLiving\Core\Locale\CurrencySid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\WlPayMethodSid;
 
@@ -12,6 +13,7 @@ class DebtPayModel extends WlModelAbstract
 {
   /**
    * The currency of the payment.
+   * One of {@link CurrencySid} constants.
    *
    * Important! The currency must coincide with currency of the debt that was sent to collections.
    *
diff --git a/WellnessLiving/Wl/Coupon/CouponList/ListModel.php b/WellnessLiving/Wl/Coupon/CouponList/ListModel.php
index 9c90a4d2..11dc7ba8 100644
--- a/WellnessLiving/Wl/Coupon/CouponList/ListModel.php
+++ b/WellnessLiving/Wl/Coupon/CouponList/ListModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Coupon\CouponList;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Coupon\WlTypeSid;
 
 /**
  * Retrieves a list of gift cards.
@@ -16,7 +17,7 @@ class ListModel extends WlModelAbstract
    *     int <var>id_type</var>
    *   </dt>
    *   <dd>
-   *     The type of coupon.
+   *     The type of coupon. One of {@link WlTypeSid} constants.
    *   </dd>
    *   <dt>
    *     string <var>k_coupon</var>
diff --git a/WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php b/WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php
new file mode 100644
index 00000000..e641bdfe
--- /dev/null
+++ b/WellnessLiving/Wl/Coupon/PurchaseRestrictionSid.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace WellnessLiving\Wl\Coupon;
+
+/**
+ * Purchase restrictions.
+ *
+ * Last used ID: 3.
+ */
+class PurchaseRestrictionSid
+{
+  /**
+   * Purchase option available for all clients.
+   */
+  const ALL = 1;
+
+  /**
+   * Purchase option introductory offer, available for new clients only.
+   */
+  const INTRODUCTORY = 2;
+
+  /**
+   * Purchase option available for clients with special login type or member group.
+   */
+  const TYPE = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Coupon/WlTypeSid.php b/WellnessLiving/Wl/Coupon/WlTypeSid.php
new file mode 100644
index 00000000..2629340d
--- /dev/null
+++ b/WellnessLiving/Wl/Coupon/WlTypeSid.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace WellnessLiving\Wl\Coupon;
+
+/**
+ * List of possible types of Gift Cards.
+ */
+class WlTypeSid
+{
+  /**
+   * Amount Gift Card.
+   * Only one card of this type can be created in one business.
+   */
+  const AMOUNT = 2;
+
+  /**
+   * Product Gift Card.
+   * Many cards of this type can be created in one business.
+   * Each card contains list of products.
+   */
+  const COMPONENT = 1;
+
+  /**
+   * Quick Gift Card.
+   * Only one card of this type can be created in one business.
+   */
+  const QUICK = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php b/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
index 4f3f5148..d705ee6f 100644
--- a/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
+++ b/WellnessLiving/Wl/Event/Book/EventView/ElementModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\Core\a\AGenderSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Business\Config\BusinessConfigModel;
+use WellnessLiving\Wl\Virtual\VirtualProviderSid;
 
 /**
  * Retrieves information about an event element.
@@ -392,7 +393,7 @@ class ElementModel extends WlModelAbstract
   public $i_staff_image_width = 0;
 
   /**
-   * The virtual provider ID.
+   * The virtual provider ID. One of the {@link VirtualProviderSid} constants.
    *
    * `null` if an in-person event.
    *
diff --git a/WellnessLiving/Wl/Event/EventListModel.php b/WellnessLiving/Wl/Event/EventListModel.php
index 6ed7c83b..d07366db 100644
--- a/WellnessLiving/Wl/Event/EventListModel.php
+++ b/WellnessLiving/Wl/Event/EventListModel.php
@@ -2,6 +2,8 @@
 
 namespace WellnessLiving\Wl\Event;
 
+use WellnessLiving\Core\Drive\DriveTypeSid;
+use WellnessLiving\Core\Sid\YesNoSid;
 use WellnessLiving\Core\a\ADateWeekSid;
 use WellnessLiving\Core\a\AFlagSid;
 use WellnessLiving\WlModelAbstract;
@@ -62,7 +64,7 @@ class EventListModel extends WlModelAbstract
    *     <dt>int <var>i_width_src</var></dt>
    *     <dd>The source image's width.</dd>
    *     <dt>int <var>id_type_src</var></dt>
-   *     <dd>The image type ID.</dd>
+   *     <dd>The image type ID. One of the {@link DriveTypeSid} constants.</dd>
    *     <dt>bool <var>is_resize</var></dt>
    *     <dd>This will be `true` if the image has been resized. `false` otherwise.</dd>
    *     <dt>bool <var>is_old</var></dt>
@@ -209,7 +211,8 @@ class EventListModel extends WlModelAbstract
 
   /**
    * List of IDs to include/exclude virtual events.
-   *
+   * If the only ID is {@link YesNoSid::YES}, only virtual events are included.
+   * If the only ID is {@link YesNoSid::NO}, only in-person events are included.
    * Otherwise, no filtering is done.
    *
    * @get get
diff --git a/WellnessLiving/Wl/Field/WlFieldGeneralSid.php b/WellnessLiving/Wl/Field/WlFieldGeneralSid.php
index 5cc3831f..0597c0c1 100644
--- a/WellnessLiving/Wl/Field/WlFieldGeneralSid.php
+++ b/WellnessLiving/Wl/Field/WlFieldGeneralSid.php
@@ -2,6 +2,8 @@
 
 namespace WellnessLiving\Wl\Field;
 
+use WellnessLiving\Wl\Login\Type\SystemSid;
+
 /**
  * List of general fields in user's profile.
  *
@@ -81,7 +83,7 @@ class WlFieldGeneralSid
   const REFERRER = 12;
 
   /**
-   * Client status (client/member types).
+   * Client status (client/member types). System default client/member types see {@link SystemSid}.
    */
   const STATUS = 14;
 
diff --git a/WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php b/WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php
new file mode 100644
index 00000000..9a98ae14
--- /dev/null
+++ b/WellnessLiving/Wl/Integration/Autymate/AutymateAccessModeSid.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace WellnessLiving\Wl\Integration\Autymate;
+
+/**
+ * List of modes used to access Autymate.
+ */
+class AutymateAccessModeSid
+{
+  /**
+   * Access Autymate to create an initial enrollment.
+   */
+  const ENROLL = 1;
+
+  /**
+   * Access Autymate to view the dashboard.
+   */
+  const VIEW = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php b/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php
index f0c897d4..36494170 100644
--- a/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php
+++ b/WellnessLiving/Wl/Integration/Autymate/AutymateActivateModel.php
@@ -12,6 +12,8 @@ class AutymateActivateModel extends WlModelAbstract
   /**
    * The mode of the request.
    *
+   * One of {@link AutymateAccessModeSid} constants.
+   *
    * @get get
    * @var int
    */
@@ -20,6 +22,8 @@ class AutymateActivateModel extends WlModelAbstract
   /**
    * The new status of the enrollment. If `0`, the current status is returned.
    *
+   * One of {@link AutymateStatusSid} constants.
+   *
    * @get get,result
    * @var int
    */
diff --git a/WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php b/WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php
new file mode 100644
index 00000000..f200aea4
--- /dev/null
+++ b/WellnessLiving/Wl/Integration/Autymate/AutymateStatusSid.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace WellnessLiving\Wl\Integration\Autymate;
+
+/**
+ * List of statuses of an Autymate enrollment notification.
+ */
+class AutymateStatusSid
+{
+  /**
+   * Autymation enrollment is active.
+   */
+  const ACTIVE = 1;
+
+  /**
+   * Autymation enrollment is no longer active.
+   */
+  const INACTIVE = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php b/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php
index dbde70b5..33a82447 100644
--- a/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/Add/AddModel.php
@@ -3,6 +3,9 @@
 namespace WellnessLiving\Wl\Login\Attendance\Add;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Login\Attendance\AddOptionSid;
+use WellnessLiving\Wl\Mode\ModeSid;
+use WellnessLiving\Wl\Visit\WlVisitSid;
 
 /**
  * Adds a client to an attendance list.
@@ -69,6 +72,7 @@ class AddModel extends WlModelAbstract
 
   /**
    * Determines how the payment was handled for the session.
+   * One of the {@link AddOptionSid} constants.
    *
    * @post post
    * @var int
@@ -77,7 +81,7 @@ class AddModel extends WlModelAbstract
 
   /**
    * Determines how the session was booked.
-   *
+   * One of the {@link ModeSid} constants.
    * We recommend using the `WEB_BACKEND` value.
    *
    * @post post
@@ -87,6 +91,7 @@ class AddModel extends WlModelAbstract
 
   /**
    * The status of the visit.
+   * One of the {@link WlVisitSid} constants.
    *
    * @post result
    * @var int
diff --git a/WellnessLiving/Wl/Login/Attendance/AddOptionSid.php b/WellnessLiving/Wl/Login/Attendance/AddOptionSid.php
new file mode 100644
index 00000000..629a8b1c
--- /dev/null
+++ b/WellnessLiving/Wl/Login/Attendance/AddOptionSid.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace WellnessLiving\Wl\Login\Attendance;
+
+/**
+ * List of options to add client to attendance list.
+ */
+class AddOptionSid
+{
+  /**
+   * Add client to attendance list and charge his account.
+   */
+  const DEBIT = 2;
+
+  /**
+   * Add client to attendance list and pay now.
+   */
+  const PAY = 3;
+
+  /**
+   * Add client to attendance list without payment.
+   */
+  const UNPAID = 1;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
index 32b58636..d8c6e0b3 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoByTokenModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Login\Attendance;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Schedule\Page\WlVisitNoteSid;
 use WellnessLiving\Wl\WlSaleSid;
 use WellnessLiving\Wl\WlServiceSid;
 
@@ -237,7 +238,7 @@ class AttendanceInfoByTokenModel extends WlModelAbstract
   public $i_duration;
 
   /**
-   * Type of note. <tt>false</tt> if notes not allowed.
+   * Type of note. One of {@link WlVisitNoteSid} constants. <tt>false</tt> if notes not allowed.
    *
    * @get result
    * @var int|false
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php
index 8ad53718..a201ddc4 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceInfoModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Login\Attendance;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Schedule\Page\WlVisitNoteSid;
 use WellnessLiving\Wl\WlSaleSid;
 use WellnessLiving\Wl\WlServiceSid;
 
@@ -236,7 +237,7 @@ class AttendanceInfoModel extends WlModelAbstract
   public $i_duration;
 
   /**
-   * Type of note. <tt>false</tt> if notes not allowed.
+   * Type of note. One of {@link WlVisitNoteSid} constants. <tt>false</tt> if notes not allowed.
    *
    * @get result
    * @var int|false
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php
index 6bcc0955..bd9d9df9 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceListByTokenModel.php
@@ -4,6 +4,7 @@
 
 use WellnessLiving\Core\a\AGenderSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Visit\WlVisitSid;
 use WellnessLiving\Wl\WlProgramSid;
 
 /**
@@ -75,7 +76,7 @@ class AttendanceListByTokenModel extends WlModelAbstract
    *   <dt>int <var>id_program</var></dt>
    *   <dd>The program ID of the Purchase Option. One of the {@link WlProgramSid} constants.</dd>
    *   <dt>int <var>id_visit</var></dt>
-   *   <dd>The status of the visit.</dd>
+   *   <dd>The status of the visit. One of the {@link WlVisitSid} constants.</dd>
    *   <dt>bool <var>is_attend</var></dt>
    *   <dd>This will be <tt>true</tt> if the client has attended the visit.</dd>
    *   <dt>bool <var>is_duration_pass</var></dt>
diff --git a/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php b/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php
index 579eaf81..14157c9e 100644
--- a/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php
+++ b/WellnessLiving/Wl/Login/Attendance/AttendanceListModel.php
@@ -4,6 +4,7 @@
 
 use WellnessLiving\Core\a\AGenderSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Visit\WlVisitSid;
 use WellnessLiving\Wl\WlProgramSid;
 
 /**
@@ -74,7 +75,7 @@ class AttendanceListModel extends WlModelAbstract
    *   <dt>int <var>id_program</var></dt>
    *   <dd>The program ID of the Purchase Option. One of the {@link WlProgramSid} constants.</dd>
    *   <dt>int <var>id_visit</var></dt>
-   *   <dd>The status of the visit.</dd>
+   *   <dd>The status of the visit. One of the {@link WlVisitSid} constants.</dd>
    *   <dt>bool <var>is_attend</var></dt>
    *   <dd>This will be <tt>true</tt> if the client has attended the visit.</dd>
    *   <dt>bool <var>is_duration_pass</var></dt>
diff --git a/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php b/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php
index 57297ee2..1390052c 100644
--- a/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php
+++ b/WellnessLiving/Wl/Login/Promotion/Convert/ConvertModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Login\Promotion\Convert;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Promotion\Convert\PromotionConvertSid;
 use WellnessLiving\Wl\WlProgramSid;
 
 /**
@@ -74,7 +75,7 @@ class ConvertModel extends WlModelAbstract
   public $dl_hold_start = '';
 
   /**
-   * The conversion ID.
+   * The conversion ID. One of the {@link PromotionConvertSid} constants.
    *
    * @get result
    * @post get
@@ -83,7 +84,7 @@ class ConvertModel extends WlModelAbstract
   public $id_convert = null;
 
   /**
-   * When conversion should be done.
+   * When conversion should be done. One of the {@link ConvertWhenSid} constants.
    *
    * `null` if it's not set yet.
    *
diff --git a/WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php b/WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php
new file mode 100644
index 00000000..e55e29cb
--- /dev/null
+++ b/WellnessLiving/Wl/Login/Promotion/Convert/ConvertWhenSid.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace WellnessLiving\Wl\Login\Promotion\Convert;
+
+/**
+ * Different types of conversion behavior: when and how it should be converted.
+ */
+class ConvertWhenSid
+{
+  /**
+   * Purchase Option converts one day after the scheduled expiration date and the client is charged for the new purchase option.
+   */
+  const EXPIRATION_PAID = 1;
+
+  /**
+   * Purchase Option converts now and the client is not charged for the new Purchase Option.
+   */
+  const NOW_FREE = 2;
+
+  /**
+   * Purchase Option converts now and the client is changed for the new Purchase Option.
+   */
+  const NOW_PAID = 3;
+
+  /**
+   * Purchase Option converts on the specified date and the client is charged for the new Purchase Option.
+   */
+  const SCHEDULE_PAID = 4;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Login/Type/LoginTypeModel.php b/WellnessLiving/Wl/Login/Type/LoginTypeModel.php
index 3a6da498..e6c721d8 100644
--- a/WellnessLiving/Wl/Login/Type/LoginTypeModel.php
+++ b/WellnessLiving/Wl/Login/Type/LoginTypeModel.php
@@ -18,7 +18,7 @@ class LoginTypeModel extends WlModelAbstract
    * <dl>
    *   <dt>bool <var>id_client_type</var></dt>
    *   <dd>
-   *     System ID.
+   *     System ID. One of {@link SystemSid} constants.
    *   </dd>
    *   <dt>bool <var>is_member</var></dt>
    *   <dd>
diff --git a/WellnessLiving/Wl/Login/Type/SystemSid.php b/WellnessLiving/Wl/Login/Type/SystemSid.php
new file mode 100644
index 00000000..21ac6bf5
--- /dev/null
+++ b/WellnessLiving/Wl/Login/Type/SystemSid.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace WellnessLiving\Wl\Login\Type;
+
+/**
+ * System default client/member types.
+ *
+ * If user purchases any membership it becomes member.
+ * If user purchases any pass it becomes client.
+ *
+ * Last ID: 3.
+ */
+class SystemSid
+{
+  /**
+   * Active client or member.
+   */
+  const ACTIVE = 1;
+
+  /**
+   * Inactive client or member.
+   */
+  const INACTIVE = 2;
+
+  /**
+   * Newcomer, who has not bought anything that can make him a regular client of the business.
+   */
+  const PROSPECT = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Mode/ModeSid.php b/WellnessLiving/Wl/Mode/ModeSid.php
new file mode 100644
index 00000000..62b2b20f
--- /dev/null
+++ b/WellnessLiving/Wl/Mode/ModeSid.php
@@ -0,0 +1,140 @@
+<?php
+
+namespace WellnessLiving\Wl\Mode;
+
+/**
+ * The source of visit.
+ *
+ * Last used ID: 26.
+ */
+class ModeSid
+{
+  /**
+   * Registered through <tt>Azure</tt>.
+   */
+  const AZURE = 21;
+
+  /**
+   * Visit has been created by <tt>CENTRED</tt>.
+   */
+  const CENTRED = 23;
+
+  /**
+   * Visit has been created by <tt>ClassPass</tt>.
+   */
+  const CLASSPASS_BOOKING = 8;
+
+  /**
+   * Debt paid via collections.
+   */
+  const COLLECTIONS = 22;
+
+  /**
+   * Debt paid via collections.
+   */
+  const COLLECTIONS_FUTURE = 26;
+
+  /**
+   * Action made via email.
+   */
+  const EMAIL = 18;
+
+  /**
+   * Indicating that the source is Facebook.
+   */
+  const FACEBOOK = 20;
+
+  /**
+   * Indicating that the source is Google.
+   */
+  const GOOGLE = 19;
+
+  /**
+   * Visit has been created by Google Booking Service.
+   */
+  const GOOGLE_BOOKING = 7;
+
+  /**
+   * Visit has been created by <tt>GymPass</tt>.
+   */
+  const GYMPASS_BOOKING = 14;
+
+  /**
+   * Visit was created during import.
+   */
+  const IMPORT = 5;
+
+  /**
+   * Action made via microsite.
+   *
+   * It is also names as directory listing.
+   */
+  const MICROSITE = 12;
+
+  /**
+   * Indicating that the source is Microsoft.
+   */
+  const MICROSOFT = 24;
+
+  /**
+   * Client booked session on My Presence Site.
+   */
+  const MY_PRESENCE_SITE = 13;
+
+  /**
+   * Action made via SMS.
+   */
+  const SMS = 17;
+
+  /**
+   * Staff booked session from spa backend.
+   */
+  const SPA_BACKEND = 4;
+
+  /**
+   * Client booked session from spa frontend.
+   */
+  const SPA_FRONTEND = 3;
+
+  /**
+   * Created by system.
+   */
+  const SYSTEM = 10;
+
+  /**
+   * Means that we did not define mode.
+   */
+  const UNDEFINED = 6;
+
+  /**
+   * Client booked session from Attendance Web App.
+   */
+  const WEB_APP_ATTENDANCE = 16;
+
+  /**
+   * Client checked-in for the session through Check-In Web App.
+   */
+  const WEB_APP_CHECK_IN = 15;
+
+  /**
+   * Staff booked session for client from website backend.
+   */
+  const WEB_BACKEND = 2;
+
+  /**
+   * Client booked session from website frontend.
+   */
+  const WEB_FRONTEND = 1;
+
+  /**
+   * Action made via widget (purchase, book etc).
+   */
+  const WIDGET = 11;
+
+  /**
+   * Action from Zapier.
+   */
+  const ZAPIER = 25;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Pay/Account/AccountModel.php b/WellnessLiving/Wl/Pay/Account/AccountModel.php
index c348368e..d23498ee 100644
--- a/WellnessLiving/Wl/Pay/Account/AccountModel.php
+++ b/WellnessLiving/Wl/Pay/Account/AccountModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Wl\Pay\Account;
 
+use WellnessLiving\Core\Locale\CurrencySid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -18,7 +19,7 @@ class AccountModel extends WlModelAbstract
    *     int <var>id_currency</var>
    *   </dt>
    *   <dd>
-   *     Currency ID.
+   *     Currency ID. One of {@link CurrencySid} constant.
    *   </dd>
    *   <dt>
    *     string <var>k_currency</var>
diff --git a/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php b/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
index 23ff2720..a5a695a8 100644
--- a/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
+++ b/WellnessLiving/Wl/Pay/Account/Charge/ChargeModel.php
@@ -4,6 +4,7 @@
 
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Business\BusinessPaymentCaptcha;
+use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Fills a user account with a specified payment.
@@ -147,7 +148,7 @@ class ChargeModel extends WlModelAbstract
   public $a_pay_form = [];
 
   /**
-   * The source mode key.
+   * The source mode key. One of the {@link ModeSid} constants.
    *
    * @post post
    * @var int
diff --git a/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php b/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
index 3acc60ac..650ed301 100644
--- a/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
+++ b/WellnessLiving/Wl/Pay/Form/EnvironmentModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Wl\Pay\Form;
 
+use WellnessLiving\Core\Locale\LocaleSid;
 use WellnessLiving\Core\a\ACardSystemSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\WlPayMethodSid;
@@ -122,6 +123,7 @@ class EnvironmentModel extends WlModelAbstract
    *
    * @get result
    * @var int|null
+   * @see LocaleSid
    */
   public $id_locale;
 
diff --git a/WellnessLiving/Wl/Profile/Activity/ElementModel.php b/WellnessLiving/Wl/Profile/Activity/ElementModel.php
index 96171cc8..5733f468 100644
--- a/WellnessLiving/Wl/Profile/Activity/ElementModel.php
+++ b/WellnessLiving/Wl/Profile/Activity/ElementModel.php
@@ -4,6 +4,7 @@
 
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Login\WlLoginActivityTypeSid;
+use WellnessLiving\Wl\WlDesignIconSid;
 
 /**
  * Returns detailed information about a single client activity.
@@ -83,7 +84,7 @@ class ElementModel extends WlModelAbstract
   public $i_spend;
 
   /**
-   * The ID of the icon that should be shown for this activity.
+   * The ID of the icon that should be shown for this activity. One of {@link WlDesignIconSid} constants.
    *
    * This will be `null` is no special icon for this activity.
    *
diff --git a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
index 59486a5c..bd26455a 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditByTokenModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Field\WlFieldGeneralSid;
 use WellnessLiving\Wl\Field\WlFieldTypeSid;
+use WellnessLiving\Wl\Profile\RegisterSourceSid;
 
 /**
  * An endpoint that displays client profile information.
@@ -110,10 +111,11 @@ class EditByTokenModel extends WlModelAbstract
 
   /**
    * Registration source ID.
+   * One of {@link RegisterSourceSid} constants.
    *
    * Used only to register new clients.
    * * If the client is already authorized, the field value will not be used.
-   * *
+   * * If the client is not authorized and no value is set, {@link RegisterSourceSid::SELF} will be used.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Profile/Edit/EditModel.php b/WellnessLiving/Wl/Profile/Edit/EditModel.php
index 6a6e7e19..84519060 100644
--- a/WellnessLiving/Wl/Profile/Edit/EditModel.php
+++ b/WellnessLiving/Wl/Profile/Edit/EditModel.php
@@ -6,6 +6,7 @@
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Field\WlFieldGeneralSid;
 use WellnessLiving\Wl\Field\WlFieldTypeSid;
+use WellnessLiving\Wl\Profile\RegisterSourceSid;
 
 /**
  * Gets information about a client profile. This endpoint can also edit or create a profile.
@@ -137,10 +138,11 @@ class EditModel extends WlModelAbstract
 
   /**
    * Registration source ID.
+   * One of {@link RegisterSourceSid} constants.
    *
    * Used only to register new clients.
    * * If the client is already authorized, the field value will not be used.
-   * *
+   * * If the client is not authorized and no value is set, {@link RegisterSourceSid::SELF} will be used.
    *
    * @get get
    * @post get
diff --git a/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php b/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
index 37372ed3..4f78bc70 100644
--- a/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
+++ b/WellnessLiving/Wl/Profile/Form/Response/ResponseListModel.php
@@ -4,6 +4,7 @@
 
 use WellnessLiving\Core\Quiz\ResponseStatusSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Quiz\Response\SourceSid;
 
 /**
  * Retrieves a list of a user's quiz responses.
@@ -21,7 +22,7 @@ class ResponseListModel extends WlModelAbstract
    *  <dt>string <var>dtl_date</var></dt>
    *  <dd>The date of the request to fill out a quiz form.</dd>
    *  <dt>int <var>id_source</var></dt>
-   *  <dd>The place where the request to fill out a quiz form occurred.</dd>
+   *  <dd>The place where the request to fill out a quiz form occurred. One of the {@link SourceSid} constants.</dd>
    *  <dt>bool <var>is_private</var></dt>
    *  <dd>
    *    Determines whether the form can be viewed by staff member only after confirmation.
@@ -57,7 +58,7 @@ class ResponseListModel extends WlModelAbstract
    *  <dt>string <var>dtl_date</var></dt>
    *  <dd>The date of the request to fill out a quiz form.</dd>
    *  <dt>int <var>id_source</var></dt>
-   *  <dd>The place where the request to fill out the quiz form occurred.</dd>
+   *  <dd>The place where the request to fill out the quiz form occurred. One of the {@link SourceSid} constants.</dd>
    *  <dt>int <var>id_status</var></dt>
    *  <dd>Status of the response. One of {@link ResponseStatusSid} constants.</dd>
    *  <dt>bool <var>is_private</var></dt>
diff --git a/WellnessLiving/Wl/Profile/RegisterSourceSid.php b/WellnessLiving/Wl/Profile/RegisterSourceSid.php
new file mode 100644
index 00000000..afa4d848
--- /dev/null
+++ b/WellnessLiving/Wl/Profile/RegisterSourceSid.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace WellnessLiving\Wl\Profile;
+
+/**
+ * List of sources from where the user registers.
+ */
+class RegisterSourceSid
+{
+  /**
+   * Source when user register during purchase or booking.
+   *
+   * <b>
+   *  Don't use for edit existing user profile.
+   *  Used only to register new clients during booking or purchase.
+   * </b>
+   */
+  const BOOKING_AND_PURCHASE = 1;
+
+  /**
+   * Source when user register on self registration web app, self registration web app URL etc.
+   *
+   * <b>Don't use for edit existing user profile.</b>
+   */
+  const SELF = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php b/WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php
new file mode 100644
index 00000000..aaf7da69
--- /dev/null
+++ b/WellnessLiving/Wl/Promotion/Convert/PromotionConvertSid.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace WellnessLiving\Wl\Promotion\Convert;
+
+/**
+ * List of options to convert promotion.
+ *
+ * Last used ID: 3.
+ */
+class PromotionConvertSid
+{
+  /**
+   * Promotion conversion downgraded.
+   */
+  const DOWNGRADE = 1;
+
+  /**
+   * Type of the promotion conversion.
+   */
+  const EQUAL_VALUE = 2;
+
+  /**
+   * Promotion conversion upgraded.
+   */
+  const UPGRADE = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php b/WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php
new file mode 100644
index 00000000..3f9fc4b2
--- /dev/null
+++ b/WellnessLiving/Wl/Promotion/Edit/Limit/Cycle/Sid.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace WellnessLiving\Wl\Promotion\Edit\Limit\Cycle;
+
+/**
+ * Attendance Restriction cycle type.
+ */
+class Sid
+{
+  /**
+   * Attendance Restriction is applied at the start of the calendar cycle.
+   */
+  const CALENDAR = 1;
+
+  /**
+   * Attendance Restriction is applied at the start of the payment cycle.
+   */
+  const PAYMENT = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php b/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php
index bf34372f..5e1b6225 100644
--- a/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php
+++ b/WellnessLiving/Wl/Promotion/Index/PromotionIndexModel.php
@@ -5,6 +5,7 @@
 use WellnessLiving\Core\a\ADurationSid;
 use WellnessLiving\WlModelAbstract;
 use WellnessLiving\Wl\Event\EventListModel;
+use WellnessLiving\Wl\Promotion\Edit\Limit\Cycle\Sid;
 use WellnessLiving\Wl\Purchase\Item\WlPurchaseItemSid;
 use WellnessLiving\Wl\WlDurationTypeSid;
 use WellnessLiving\Wl\WlProgramCategorySid;
@@ -122,7 +123,7 @@ class PromotionIndexModel extends WlModelAbstract
    *         {@link ADurationSid::MONTH}, {@link ADurationSid::YEAR}.
    *       </dd>
    *       <dt>int <var>id_limit_cycle</var></dt>
-   *
+   *       <dd>The type of the limit cycle {@link Sid}.</dd>
    *       <dt>bool <var>is_reconcile_visit</var></dt>
    *       <dd>Determines whether to reconcile unpaid sessions on restrictions reset.</dd>
    *       <dt>bool <var>is_roll_over_expire</var></dt>
diff --git a/WellnessLiving/Wl/Quiz/Response/SourceSid.php b/WellnessLiving/Wl/Quiz/Response/SourceSid.php
new file mode 100644
index 00000000..13122776
--- /dev/null
+++ b/WellnessLiving/Wl/Quiz/Response/SourceSid.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace WellnessLiving\Wl\Quiz\Response;
+
+/**
+ * List of sources where quiz response can be generated.
+ *
+ * Last used ID: 6
+ */
+class SourceSid
+{
+  /**
+   * Quiz response received during booking process.
+   */
+  const BOOKING = 2;
+
+  /**
+   * Quiz response was imported.
+   */
+  const IMPORT = 6;
+
+  /**
+   * Quiz response received by kiosk mode link.
+   */
+  const KIOSK = 7;
+
+  /**
+   * Quiz response received by direct link.
+   */
+  const LINK = 1;
+
+  /**
+   * Quiz response received by direct link.
+   *
+   * @title Studio
+   */
+  const MANUAL = 5;
+
+  /**
+   * Quiz response received during purchase process.
+   */
+  const PURCHASE = 4;
+
+  /**
+   * Quiz response received during registration process.
+   */
+  const REGISTRATION = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Resource/Image/ImageIconSid.php b/WellnessLiving/Wl/Resource/Image/ImageIconSid.php
new file mode 100644
index 00000000..5208f6f4
--- /dev/null
+++ b/WellnessLiving/Wl/Resource/Image/ImageIconSid.php
@@ -0,0 +1,158 @@
+<?php
+
+namespace WellnessLiving\Wl\Resource\Image;
+
+/**
+ * Predefined icons for assets.
+ *
+ * Last used ID: 29.
+ */
+class ImageIconSid
+{
+  /**
+   * Training bench.
+   */
+  const BENCH = 1;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_1 = 2;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_2 = 3;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_3 = 4;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_4 = 5;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_5 = 6;
+
+  /**
+   * Exercise bike.
+   */
+  const BIKE_6 = 7;
+
+  /**
+   * Boot.
+   */
+  const BOOT = 8;
+
+  /**
+   * Door.
+   */
+  const DOOR = 9;
+
+  /**
+   * Fan.
+   */
+  const FAN_1 = 10;
+
+  /**
+   * Fan.
+   */
+  const FAN_2 = 11;
+
+  /**
+   * Man.
+   */
+  const MAN = 12;
+
+  /**
+   * Mat.
+   */
+  const MAT = 13;
+
+  /**
+   * Mirror.
+   */
+  const MIRROR = 14;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_1 = 15;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_2 = 16;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_3 = 17;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_4 = 18;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_5 = 19;
+
+  /**
+   * Orbitrack.
+   */
+  const ORBITRACK_6 = 20;
+
+  /**
+   * Boxing punch.
+   */
+  const PUNCH_1 = 21;
+
+  /**
+   * Boxing punch.
+   */
+  const PUNCH_2 = 22;
+
+  /**
+   * Rectangle.
+   */
+  const RECTANGLE = 23;
+
+  /**
+   * Loudspeaker.
+   */
+  const SPEAKER = 24;
+
+  /**
+   * Treadmill.
+   */
+  const TREADMILL_1 = 25;
+
+  /**
+   * Treadmill.
+   */
+  const TREADMILL_2 = 26;
+
+  /**
+   * TV.
+   */
+  const TV = 27;
+
+  /**
+   * Twines.
+   */
+  const TWINE = 28;
+
+  /**
+   * Weight.
+   */
+  const WEIGHT = 29;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Resource/Image/ImageShapeSid.php b/WellnessLiving/Wl/Resource/Image/ImageShapeSid.php
new file mode 100644
index 00000000..7d85e73a
--- /dev/null
+++ b/WellnessLiving/Wl/Resource/Image/ImageShapeSid.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace WellnessLiving\Wl\Resource\Image;
+
+/**
+ * The kinds of shapes that can be used as an assets' images.
+ */
+class ImageShapeSid
+{
+  /**
+   * Circle.
+   */
+  const CIRCLE = 1;
+
+  /**
+   * Rectangle.
+   */
+  const RECTANGLE = 2;
+
+  /**
+   * Square.
+   */
+  const SQUARE = 3;
+
+  /**
+   * Triangle.
+   */
+  const TRIANGLE = 4;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Resource/Layout/LayoutModel.php b/WellnessLiving/Wl/Resource/Layout/LayoutModel.php
index b5657a64..b79f8bab 100644
--- a/WellnessLiving/Wl/Resource/Layout/LayoutModel.php
+++ b/WellnessLiving/Wl/Resource/Layout/LayoutModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Resource\Layout;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Resource\Image\ImageIconSid;
 
 /**
  * Displays information about an asset layout.
@@ -81,25 +82,25 @@ class LayoutModel extends WlModelAbstract
    *     float <var>f_height</var>
    *   </dt>
    *   <dd>
-   * Empty for other shapes.
+   *     The height for the shape {@link LayoutShapeSid::RECTANGLE}. Empty for other shapes.
    *   </dd>
    *   <dt>
    *     float <var>f_width</var>
    *   </dt>
    *   <dd>
-   * Empty for other shapes.
+   *     The width for the shape {@link LayoutShapeSid::RECTANGLE}. Empty for other shapes.
    *   </dd>
    *   <dt>
    *     int <var>i_degree_from</var>
    *   </dt>
    *   <dd>
-   * Empty for other shapes.
+   *     The start angle for the shape {@link LayoutShapeSid::PIE}. Empty for other shapes.
    *   </dd>
    *   <dt>
    *     int <var>i_degree_to</var>
    *   </dt>
    *   <dd>
-   * Empty for other shapes.
+   *     The start angle for shape {@link LayoutShapeSid::PIE}. Empty for other shapes.
    *   </dd>
    *   <dt>
    *     int <var>i_left</var>
@@ -111,8 +112,8 @@ class LayoutModel extends WlModelAbstract
    *     int <var>i_radius</var>
    *   </dt>
    *   <dd>
-   *     The radius for shapes {@link \Wl\Resource\Layout\Shape\LayoutShapeSid::PIE} and
-   * Empty for other shapes.
+   *     The radius for shapes {@link LayoutShapeSid::PIE} and
+   *     {@link LayoutShapeSid::CIRCLE}. Empty for other shapes.
    *   </dd>
    *   <dt>
    *     int <var>i_top</var>
@@ -124,7 +125,7 @@ class LayoutModel extends WlModelAbstract
    *     int <var>id_resource_layout_shape</var>
    *   </dt>
    *   <dd>
-   *     The shape type ID.
+   *     The shape type ID. One of the {@link LayoutShapeSid} constants.
    *   </dd>
    *   <dt>
    *     string <var>k_resource_layout_shape</var>
@@ -188,7 +189,7 @@ class LayoutModel extends WlModelAbstract
    *     int <var>id_shape_icon</var>
    *   </dt>
    *   <dd>
-   *     The icon ID.
+   *     The icon ID. One of the {@link ImageIconSid} constants.
    *   </dd>
    * </dl>
    *
diff --git a/WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php b/WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php
new file mode 100644
index 00000000..e88644b2
--- /dev/null
+++ b/WellnessLiving/Wl/Resource/Layout/LayoutShapeSid.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace WellnessLiving\Wl\Resource\Layout;
+
+/**
+ * Types of the shapes.
+ */
+class LayoutShapeSid
+{
+  /**
+   * Circles.
+   */
+  const CIRCLE = 2;
+
+  /**
+   * Pies.
+   */
+  const PIE = 3;
+
+  /**
+   * Rectangles and squares.
+   */
+  const RECTANGLE = 1;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Review/ReviewList/ReviewListModel.php b/WellnessLiving/Wl/Review/ReviewList/ReviewListModel.php
index 09546416..26e7fe3c 100644
--- a/WellnessLiving/Wl/Review/ReviewList/ReviewListModel.php
+++ b/WellnessLiving/Wl/Review/ReviewList/ReviewListModel.php
@@ -149,7 +149,9 @@ class ReviewListModel extends WlModelAbstract
   public $i_page = null;
 
   /**
-   * The order in which the review should be arranged.
+   * The order in which the review should be arranged. One of the {@link ReviewOrderSid} constants.
+   *
+   * If not passed use default order {@link ReviewOrderSid::LATEST}.
    *
    * @get get
    * @var int|null
diff --git a/WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php b/WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php
new file mode 100644
index 00000000..abcc67f1
--- /dev/null
+++ b/WellnessLiving/Wl/Review/ReviewList/ReviewOrderSid.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace WellnessLiving\Wl\Review\ReviewList;
+
+/**
+ * List of possible order for gets review.
+ */
+class ReviewOrderSid
+{
+  /**
+   * Ascending sort review by date.
+   */
+  const LATEST = 1;
+
+  /**
+   * Ascending sort review by date.
+   */
+  const NEGATIVE = 3;
+
+  /**
+   * Descending sort review by date.
+   */
+  const OLDEST = 4;
+
+  /**
+   * Descending sort review by date.
+   */
+  const POSITIVE = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/Design/OptionSid.php b/WellnessLiving/Wl/Schedule/Design/OptionSid.php
new file mode 100644
index 00000000..7102300b
--- /dev/null
+++ b/WellnessLiving/Wl/Schedule/Design/OptionSid.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace WellnessLiving\Wl\Schedule\Design;
+
+/**
+ * Appointment display option.
+ *
+ * Last used ID: 3
+ */
+class OptionSid
+{
+  /**
+   * Appointment name in header.
+   */
+  const APPOINTMENT_NAME = 1;
+
+  /**
+   * Client name in header.
+   */
+  const CLIENT_NAME = 3;
+
+  /**
+   * Staff name in header.
+   */
+  const STAFF_NAME = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/Page/PageElementModel.php b/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
index 7384697b..673b454b 100644
--- a/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
+++ b/WellnessLiving/Wl/Schedule/Page/PageElementModel.php
@@ -3,6 +3,8 @@
 namespace WellnessLiving\Wl\Schedule\Page;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Virtual\VirtualProviderSid;
+use WellnessLiving\Wl\Visit\WlVisitSid;
 
 /**
  * Returns information about a specified visit.
@@ -15,7 +17,7 @@ class PageElementModel extends WlModelAbstract
    *     int <var>id_visit</var>
    *   </dt>
    *   <dd>
-   *     Visit status.
+   *     Visit status. One of {@link WlVisitSid} constants.
    *   </dd>
    *   <dt>
    *     bool <var>is_confirmed</var>
@@ -189,6 +191,7 @@ class PageElementModel extends WlModelAbstract
 
   /**
    * The note type ID. This will be set to `null` if notes aren't allowed.
+   * This is one of the {@link WlVisitNoteSid} constants.
    *
    * This will be `null` if notes aren't allowed.
    *
@@ -198,7 +201,7 @@ class PageElementModel extends WlModelAbstract
   public $id_note;
 
   /**
-   * The virtual provider ID.
+   * The virtual provider ID. One of the {@link VirtualProviderSid} constants.
    *
    * This will be `null` for non-virtual services.
    *
@@ -208,7 +211,7 @@ class PageElementModel extends WlModelAbstract
   public $id_virtual_provider;
 
   /**
-   * The visit type ID.
+   * The visit type ID. One of the {@link WlVisitSid} constants.
    *
    * This will be `null` if not loaded yet.
    *
@@ -301,7 +304,7 @@ class PageElementModel extends WlModelAbstract
   public $k_location;
 
   /**
-   * Asset key.
+   * Resource key.
    *
    * @get result
    * @var ?string
diff --git a/WellnessLiving/Wl/Schedule/Page/WlVisitNoteSid.php b/WellnessLiving/Wl/Schedule/Page/WlVisitNoteSid.php
new file mode 100644
index 00000000..ffacad10
--- /dev/null
+++ b/WellnessLiving/Wl/Schedule/Page/WlVisitNoteSid.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace WellnessLiving\Wl\Schedule\Page;
+
+/**
+ * A list of types of visit note.
+ */
+class WlVisitNoteSid
+{
+  /**
+   * The usual quick accompanying note for the customer visit.
+   */
+  const QUICK = 2;
+
+  /**
+   * Accompanying medical note for the customer visit.
+   */
+  const SOAP = 1;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
index 0d5a4092..0855e22a 100644
--- a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
+++ b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListByTokenModel.php
@@ -3,6 +3,8 @@
 namespace WellnessLiving\Wl\Schedule\ScheduleList\StaffApp;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Schedule\Design\OptionSid;
+use WellnessLiving\Wl\Visit\WlVisitSid;
 use WellnessLiving\Wl\WlServiceSid;
 
 /**
@@ -32,7 +34,7 @@ class ScheduleListByTokenModel extends WlModelAbstract
    *         int <var>id_visit</var>
    *       </dt>
    *       <dd>
-   *         Visit id.
+   *         Visit id. One of {@link WlVisitSid} constants.
    *       </dd>
    *       <dt>
    *         bool <var>is_confirmed</var>
@@ -187,7 +189,7 @@ class ScheduleListByTokenModel extends WlModelAbstract
    *    <dd>
    *      Appointment title display style.
    *      Set only for appointments, for others it will be equal to 0.
-   *
+   *      Constants from {@link OptionSid}.
    *    </dd>
    *   <dt>
    *     int <var>id_service</var>
diff --git a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
index 93599d93..e3a92124 100644
--- a/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
+++ b/WellnessLiving/Wl/Schedule/ScheduleList/StaffApp/ScheduleListModel.php
@@ -4,6 +4,8 @@
 
 use WellnessLiving\Core\Quiz\ResponseStatusSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Schedule\Design\OptionSid;
+use WellnessLiving\Wl\Visit\WlVisitSid;
 use WellnessLiving\Wl\WlServiceSid;
 
 /**
@@ -59,7 +61,7 @@ class ScheduleListModel extends WlModelAbstract
    *         int <var>id_visit</var>
    *       </dt>
    *       <dd>
-   *         Visit id.
+   *         Visit id. One of {@link WlVisitSid} constants.
    *       </dd>
    *       <dt>
    *         bool <var>is_confirmed</var>
@@ -227,7 +229,7 @@ class ScheduleListModel extends WlModelAbstract
    *    <dd>
    *      Appointment title display style.
    *      Set only for appointments, for others it will be equal to 0.
-   *
+   *      Constants from {@link OptionSid}.
    *    </dd>
    *   <dt>
    *     int <var>id_service</var>
diff --git a/WellnessLiving/Wl/Schedule/Tab/TabModel.php b/WellnessLiving/Wl/Schedule/Tab/TabModel.php
index 783f1f50..f09face9 100644
--- a/WellnessLiving/Wl/Schedule/Tab/TabModel.php
+++ b/WellnessLiving/Wl/Schedule/Tab/TabModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Schedule\Tab;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Classes\Tab\TabSid;
 
 /**
  * Retrieves a list of tabs for bookable services specific to the user and the location.
@@ -21,13 +22,14 @@ class TabModel extends WlModelAbstract
    *     int <var>id_class_tab_object</var>
    *   </dt>
    *   <dd>
-   *
+   *     The tab type ID which is one of the {@link TabSid} constants.
    *   </dd>
    *   <dt>
    *     int|null <var>id_class_tab_system</var>
    *   </dt>
    *   <dd>
    *     If this tab has redefined a default system Class Tab then it references a constant defined in
+   *     {@link TabSid}.
    *
    *     Otherwise, this will be `null`.
    *   </dd>
diff --git a/WellnessLiving/Wl/Service/ServiceBookFlowSid.php b/WellnessLiving/Wl/Service/ServiceBookFlowSid.php
new file mode 100644
index 00000000..7b57aef1
--- /dev/null
+++ b/WellnessLiving/Wl/Service/ServiceBookFlowSid.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace WellnessLiving\Wl\Service;
+
+/**
+ * A list of client booking flow types.
+ */
+class ServiceBookFlowSid
+{
+  /**
+   * Client selects the date and time and then the staff member.
+   */
+  const DATE_STAFF_ORDER = 2;
+
+  /**
+   * Client selects their preferred booking order should be staff member / calendar.
+   */
+  const PREFER_ORDER = 3;
+
+  /**
+   * Client selects the staff member and then the date and time.
+   */
+  const STAFF_DATE_ORDER = 1;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php b/WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php
new file mode 100644
index 00000000..bab2e63d
--- /dev/null
+++ b/WellnessLiving/Wl/Shop/Product/PurchaseRestrictionSid.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace WellnessLiving\Wl\Shop\Product;
+
+/**
+ * Purchase restrictions.
+ *
+ * Last used ID: 3.
+ */
+class PurchaseRestrictionSid
+{
+  /**
+   * Purchase option available for all clients.
+   */
+  const ALL = 1;
+
+  /**
+   * Purchase option introductory offer, available for new clients only.
+   */
+  const INTRODUCTORY = 2;
+
+  /**
+   * Purchase option available for clients with special login type or member group.
+   */
+  const TYPE = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php b/WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php
new file mode 100644
index 00000000..cb1c7636
--- /dev/null
+++ b/WellnessLiving/Wl/Video/Catalog/Filter/Sort/FilterSortSid.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace WellnessLiving\Wl\Video\Catalog\Filter\Sort;
+
+/**
+ * List of video catalog sorting types.
+ *
+ * Any selected type should be sorted in descending order.
+ */
+class FilterSortSid
+{
+  /**
+   * Sort alphabetically.
+   *
+   * @title Alphabetical
+   */
+  const ALPHABET = 1;
+
+  /**
+   * Sort by custom.
+   *
+   * @title Custom
+   */
+  const CUSTOM = 4;
+
+  /**
+   * Sort by most recently added.
+   *
+   * @title Most Recent
+   */
+  const RECENT = 2;
+
+  /**
+   * Sorted by number of views.
+   *
+   * @title Views
+   */
+  const VIEW = 3;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Video/VideoElementModel.php b/WellnessLiving/Wl/Video/VideoElementModel.php
index 496b35bc..a1ee00fb 100644
--- a/WellnessLiving/Wl/Video/VideoElementModel.php
+++ b/WellnessLiving/Wl/Video/VideoElementModel.php
@@ -2,6 +2,7 @@
 
 namespace WellnessLiving\Wl\Video;
 
+use WellnessLiving\Core\Sid\YesNoSid;
 use WellnessLiving\WlModelAbstract;
 
 /**
@@ -152,6 +153,9 @@ class VideoElementModel extends WlModelAbstract
   public $i_watch;
 
   /**
+   * {@link YesNoSid::NO} if the video is available in all locations.
+   * {@link YesNoSid::YES} if the video is available only in certain locations.
+   *
    * @get result
    * @post post
    * @var int
diff --git a/WellnessLiving/Wl/Video/VideoListModel.php b/WellnessLiving/Wl/Video/VideoListModel.php
index 4d9f557f..4390de19 100644
--- a/WellnessLiving/Wl/Video/VideoListModel.php
+++ b/WellnessLiving/Wl/Video/VideoListModel.php
@@ -2,7 +2,9 @@
 
 namespace WellnessLiving\Wl\Video;
 
+use WellnessLiving\Core\Sid\SortOrderSid;
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Video\Catalog\Filter\Sort\FilterSortSid;
 
 /**
  * Returns a list of videos.
@@ -115,7 +117,7 @@ class VideoListModel extends WlModelAbstract
   public $i_page = null;
 
   /**
-   * Sort order ID. `null` or 0 if order is undefined and depends on sort order.
+   * Sort order ID. One of {@link SortOrderSid} constants. `null` or 0 if order is undefined and depends on sort order.
    *
    * @get get,result
    * @var int|null
@@ -124,7 +126,7 @@ class VideoListModel extends WlModelAbstract
 
   /**
    * The sorting type.
-   * `null` or 0 if sort is undefined and custom sort order is used.
+   * A constant from {@link FilterSortSid}. `null` or 0 if sort is undefined and custom sort order is used.
    *
    * @get get,result
    * @var int|null
diff --git a/WellnessLiving/Wl/Video/Watch/WatchModel.php b/WellnessLiving/Wl/Video/Watch/WatchModel.php
index eabe0276..09fe7603 100644
--- a/WellnessLiving/Wl/Video/Watch/WatchModel.php
+++ b/WellnessLiving/Wl/Video/Watch/WatchModel.php
@@ -31,6 +31,7 @@ class WatchModel extends WlModelAbstract
    *
    * @post post
    * @var int
+   * @see WatchSourceSid
    */
   public $id_source;
 
diff --git a/WellnessLiving/Wl/Video/Watch/WatchSourceSid.php b/WellnessLiving/Wl/Video/Watch/WatchSourceSid.php
new file mode 100644
index 00000000..71e138cb
--- /dev/null
+++ b/WellnessLiving/Wl/Video/Watch/WatchSourceSid.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace WellnessLiving\Wl\Video\Watch;
+
+/**
+ * List sources of the view video.
+ *
+ * Last used ID: 4
+ */
+class WatchSourceSid
+{
+  /**
+   * Video watched from application.
+   */
+  const APP = 1;
+
+  /**
+   * Video watched from direct URL.
+   */
+  const DIRECT_URL = 2;
+
+  /**
+   * Video watched from frontend.
+   */
+  const FRONTEND = 3;
+
+  /**
+   * Source of watched is undefined.
+   *
+   * Used for old videos.
+   */
+  const UNDEFINED = 4;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Virtual/VirtualProviderSid.php b/WellnessLiving/Wl/Virtual/VirtualProviderSid.php
new file mode 100644
index 00000000..f590d2f4
--- /dev/null
+++ b/WellnessLiving/Wl/Virtual/VirtualProviderSid.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace WellnessLiving\Wl\Virtual;
+
+/**
+ * List of possible value of virtual integrations.
+ *
+ * Last used ID: 2.
+ */
+class VirtualProviderSid
+{
+  /**
+   * Virtual integration non implemented.
+   */
+  const NON_INTEGRATED = 2;
+
+  /**
+   * Virtual Zoom service integration.
+   */
+  const ZOOM = 1;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Visit/VisitStatusModel.php b/WellnessLiving/Wl/Visit/VisitStatusModel.php
index 207b451e..73e0e35d 100644
--- a/WellnessLiving/Wl/Visit/VisitStatusModel.php
+++ b/WellnessLiving/Wl/Visit/VisitStatusModel.php
@@ -3,6 +3,7 @@
 namespace WellnessLiving\Wl\Visit;
 
 use WellnessLiving\WlModelAbstract;
+use WellnessLiving\Wl\Mode\ModeSid;
 
 /**
  * Views or changes the visit status.
@@ -91,7 +92,7 @@ class VisitStatusModel extends WlModelAbstract
 
   /**
    * The source of the visit or the visit change.
-   *
+   * One of the {@link ModeSid} constants.
    * If you're unsure about the value to use, keep the default value.
    *
    * @get result
@@ -102,6 +103,7 @@ class VisitStatusModel extends WlModelAbstract
 
   /**
    * The status of the visit.
+   * One of the {@link WlVisitSid} constants.
    *
    * @get result
    * @post post
@@ -110,7 +112,7 @@ class VisitStatusModel extends WlModelAbstract
   public $id_visit = '0';
 
   /**
-   * The status of the visit from which the transition is made.
+   * The status of the visit from which the transition is made. One of the {@link WlVisitSid} constants.
    *
    * If the visit status is passed, it will be used to check with the actual status in the database.
    * If `null`, the visit hasn't yet passed.
diff --git a/WellnessLiving/Wl/Visit/WlVisitSid.php b/WellnessLiving/Wl/Visit/WlVisitSid.php
new file mode 100644
index 00000000..07b64e5a
--- /dev/null
+++ b/WellnessLiving/Wl/Visit/WlVisitSid.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace WellnessLiving\Wl\Visit;
+
+/**
+ * Possible states of the visit: book, attended, cancelled, etc.
+ *
+ * Last used ID: 8.
+ */
+class WlVisitSid
+{
+  /**
+   * Client has attended the session.
+   */
+  const ATTEND = 3;
+
+  /**
+   * Active reservation means that user is going to attend the session.
+   */
+  const BOOK = 1;
+
+  /**
+   * Client has cancelled the reservation in time and without penalty.
+   */
+  const CANCEL = 6;
+
+  /**
+   * Client has cancelled his reservation too late.
+   */
+  const PENALTY = 4;
+
+  /**
+   * This state means that visit is registered, but it is unknown is it {@link WlVisitSid::ATTEND}
+   * or {@link WlVisitSid::TRUANCY} or {@link WlVisitSid::PENALTY} but definitely one of these states.
+   *
+   * The real type of this visit must be set manually by staff.
+   * Status can be changed automatically to {@link WlVisitSid::ATTEND}.
+   *
+   * @see WlVisitSid::TRUANCY
+   */
+  const PENDING = 7;
+
+  /**
+   * Visit was removed.
+   * Visits with this status are not shown anywhere in system, but still are saved in database.
+   */
+  const REMOVE = 8;
+
+  /**
+   * Client has missed the session without cancellation.
+   */
+  const TRUANCY = 5;
+
+  /**
+   * Reservation in a wait list means that user is going to attend the session if someone will cancel his reservation.
+   */
+  const WAIT = 2;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/WlDesignIconSid.php b/WellnessLiving/Wl/WlDesignIconSid.php
new file mode 100644
index 00000000..1315095f
--- /dev/null
+++ b/WellnessLiving/Wl/WlDesignIconSid.php
@@ -0,0 +1,69 @@
+<?php
+
+namespace WellnessLiving\Wl;
+
+/**
+ * List of available design icons.
+ * Name of the class with this icon will be wl-icon-[sid]
+ *
+ * Last used ID 11.
+ */
+class WlDesignIconSid
+{
+  /**
+   * Signs that session or pass is an appointment connected.
+   */
+  const APPOINTMENT = 4;
+
+  /**
+   * Signs that session or pass is an asset connected.
+   */
+  const ASSET = 7;
+
+  /**
+   * Signs that session or pass is a class or event connected.
+   */
+  const CLASSES = 5;
+
+  /**
+   * Cycle icon. Used, for example, to show transferred status of the promotion.
+   */
+  const CYCLE = 3;
+
+  /**
+   * Early cancel activity list icon.
+   */
+  const EARLY_CANCELED = 8;
+
+  /**
+   * Signs that session or pass is a gym visit connected.
+   */
+  const GYM_VISIT = 6;
+
+  /**
+   * Late cancel activity list icon.
+   */
+  const LATE_CANCELED = 9;
+
+  /**
+   * Piece of paper with the curved end for different text notes.
+   */
+  const NOTE = 2;
+
+  /**
+   * No show at visit activity list icon.
+   */
+  const NO_SHOW = 10;
+
+  /**
+   * Paper with medical symbolic for medical notes.
+   */
+  const SOAP = 1;
+
+  /**
+   * Clock activity list icon in SPA application.
+   */
+  const SPA_CLOCK = 11;
+}
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 5659dbf8..5334b922 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241113.373448';
+  const VERSION='20241113.373612';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.

From 82e5434bd7736269f1fec7184598ae2fc512bf61 Mon Sep 17 00:00:00 2001
From: "sdk.wellnessliving" <integrations@wellnessliving.com>
Date: Thu, 14 Nov 2024 23:00:27 +0000
Subject: [PATCH 71/71] Automatic upgrade of the SDK. Build #373948.

---
 .../Passport/Login/SignOut/SignOutModel.php   | 14 ++++++++++
 .../Purchase/Receipt/PurchaseReceiptModel.php | 26 ++++++++++++-------
 WellnessLiving/Wl/Quiz/QuizElementModel.php   |  2 +-
 WellnessLiving/WlModelRequest.php             |  2 +-
 4 files changed, 33 insertions(+), 11 deletions(-)
 create mode 100644 WellnessLiving/Core/Passport/Login/SignOut/SignOutModel.php

diff --git a/WellnessLiving/Core/Passport/Login/SignOut/SignOutModel.php b/WellnessLiving/Core/Passport/Login/SignOut/SignOutModel.php
new file mode 100644
index 00000000..90c587f6
--- /dev/null
+++ b/WellnessLiving/Core/Passport/Login/SignOut/SignOutModel.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace WellnessLiving\Core\Passport\Login\SignOut;
+
+use WellnessLiving\WlModelAbstract;
+
+/**
+ * Signs user out.
+ */
+class SignOutModel extends WlModelAbstract
+{
+  }
+
+?>
\ No newline at end of file
diff --git a/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php b/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
index 9459a75c..0e143e9f 100644
--- a/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
+++ b/WellnessLiving/Wl/Purchase/Receipt/PurchaseReceiptModel.php
@@ -36,7 +36,7 @@ class PurchaseReceiptModel extends WlModelAbstract
    * @get result
    * @var array
    */
-  public $a_account_rest;
+  public $a_account_rest = [];
 
   /**
    * Information about the business.
@@ -102,7 +102,7 @@ class PurchaseReceiptModel extends WlModelAbstract
    * @get result
    * @var array
    */
-  public $a_business;
+  public $a_business = [];
 
   /**
    * Payment transaction information. Every element has the following keys:
@@ -130,7 +130,7 @@ class PurchaseReceiptModel extends WlModelAbstract
    * @get result
    * @var array
    */
-  public $a_card;
+  public $a_card = [];
 
   /**
    * Information about the customer.
@@ -164,7 +164,7 @@ class PurchaseReceiptModel extends WlModelAbstract
    * @get result
    * @var array
    */
-  public $a_customer;
+  public $a_customer = [];
 
   /**
    * A list of payment methods for the current purchase. Every element has the following keys:
@@ -192,7 +192,7 @@ class PurchaseReceiptModel extends WlModelAbstract
    * @get result
    * @var array
    */
-  public $a_pay_method;
+  public $a_pay_method = [];
 
   /**
    * Complete information about price information for the purchase.
@@ -250,7 +250,7 @@ class PurchaseReceiptModel extends WlModelAbstract
    * @get result
    * @var array
    */
-  public $a_price;
+  public $a_price = [];
 
   /**
    * A list of purchase items. Every element has the following keys:
@@ -341,12 +341,18 @@ class PurchaseReceiptModel extends WlModelAbstract
    *   <dd>
    *     The description of the purchase item.
    *   </dd>
+   *   <dt>
+   *     string <var>url_print</var>
+   *   </dt>
+   *   <dd>
+   *     The URL to print. Only available if the purchase item is a coupon (gift card).
+   *   </dd>
    * </dl>
    *
    * @get result
    * @var array[]
    */
-  public $a_purchase_item;
+  public $a_purchase_item = [];
 
   /**
    * The local date of the purchase in MySQL format.
@@ -373,8 +379,10 @@ class PurchaseReceiptModel extends WlModelAbstract
   public $html_receipt;
 
   /**
-   * Whether the print receipt URL requires authentication. If `true`, the URL contains a token that temporarily
-   * allows access to the print receipt without a login. `false` otherwise.
+   * Whether {@link PurchaseReceiptModel::$url_print} and {@link PurchaseReceiptModel::$url_print_receipt} require authentication.
+   *
+   * If `true`, the URL contains a token that allows temporary access to the page without logging in. If 'false', the
+   * page requires authentication.
    *
    * @get get
    * @var bool
diff --git a/WellnessLiving/Wl/Quiz/QuizElementModel.php b/WellnessLiving/Wl/Quiz/QuizElementModel.php
index 2c9d006e..e8f02cdd 100644
--- a/WellnessLiving/Wl/Quiz/QuizElementModel.php
+++ b/WellnessLiving/Wl/Quiz/QuizElementModel.php
@@ -143,7 +143,7 @@ class QuizElementModel extends WlModelAbstract
   public $k_business = '';
 
   /**
-   * Business type key.
+   * Business type key. Used only for forms in the system business.
    *
    * `null` if not initialized.
    *
diff --git a/WellnessLiving/WlModelRequest.php b/WellnessLiving/WlModelRequest.php
index 5334b922..cd0f19be 100644
--- a/WellnessLiving/WlModelRequest.php
+++ b/WellnessLiving/WlModelRequest.php
@@ -12,7 +12,7 @@ class WlModelRequest
   /**
    * SDK version number.
    */
-  const VERSION='20241113.373612';
+  const VERSION='20241114.373948';
 
   /**
    * A list of headers for the API request. See {@link CURLOPT_HTTPHEADER}.