API End Point | Scenario | Old Behavior | New Behavior | API Docs Link |
Webstore > {api_url}/v1/guests/d2da2994-e4f0-40ea-b2cd-a771ee83707a/appointments | Related host guest token should be able to view appointments of family members | Host guest token cannot view appointment list of another user | Host guest token can view appointments of another guest if he/she is part of the relationship. | |
Webstore > {api_url}/v1/bookings/7ac33976-3af8-45b6-87f8-e82e07ce1746/slots/confirm | Guest should be able to confirm bookings for family members. | Guests cannot confirm bookings for other guests. | Guest should be able to confirm bookings for family members. | |
Webstore > {api_url}/v1/guests/d2da2994-e4f0-40ea-b2cd-a771ee83707a | Allow for relationship hosts to be able to update details of family member profiles. | Would not allow for a guest to update another guest's details | Should allow for a guest to update another guest details, if they are in a relationship and the guest token is the relationship host. | |
Webstore > {api_url}/v1/bookings/7ac33976-3af8-45b6-87f8-e82e07ce1746/slots/reserve | Guest should be able to reserve the booking for a family member. | Guest is unable to reserve appointments for other guests | Guest should be able to reserve appointments for family members. | |
{api_url}/v1/invoices/(invoice_id)/online_payments | As a security concern, few processors are restricting to show HPP in iframe while doing a manual or saved card charge. To handle this we have introduced new parameter in API response to indicates the client to load the given “hosted_payment_uri” in iframe or not. | Just constructs the hosted payment url and return in response while doing a manual or saved card charge. Earlier it doesn't indicate where to load this url. For few processors client side custom logic is written based on that it used to load. | New Parameter “load_hosted_payment_uri_in_iframe” is added in response. This response parameter indicates the client to load the given “hosted_payment_uri” in iframe or not while doing a manual or saved card charge. And custom logic from the client is removed. Add new param in response "load_hosted_payment_uri_in_iframe": true, | |
:POST {api_url}/v1/employees | If entire object of the catalog information is not provided, then the missing values in the database would be updated with default values. | The request body does not contain catalog information catalog_info - was not present "catalog_info" : { "show_in_catalog" : true, "display_name" : "catalog display name", "description" : "this is a description" } | The request body contains catalog information catalog_info has been added "catalog_info" : { "show_in_catalog" : true, "display_name" : "catalog display name", "description" : "this is a description" } | |
{api_url}/v1/invoices/d1fb6a44-0d35-4992-aa96-24b58cd79369/cancel | Guest should be able to cancel bookings for family members. | Guests cannot cancel bookings for other guests. | Guest should be able to cancel bookings for family members. | |
{api_url}/v1/guests/(guest_id)/accounts | As a security concern, few processors are restricting to show HPP in iframe while adding payment account in guest profile. To handle this we have introduced new parameter in API response to indicates the client to load the given “hosted_payment_uri” in iframe or not. | Just constructs the hosted payment url and return in response while adding payment account in guest profile. Earlier it doesn't indicate where to load this url. For few processors client side custom logic is written based on that it used to load. | New Parameter “load_hosted_payment_uri_in_iframe” is added in response. This response parameter indicates the client to load the given “hosted_payment_uri” in iframe or not while adding payment account in guest profile. And custom logic from the client is removed. Added new param in response "load_hosted_payment_uri_in_iframe": true, | |
Webstore > {api_url}/v1/guests/ef6a4b6a-8fd7-43cc-babd-dfc80da0da3b | Related host guest token should be able to view the profile details of a family member. | Guest token cannot view profile details of another user | Guest token can view another guest's profile if he/she is in a relationship with the host. | |
: PUT {api_url}/v1/employees/(employee_id) | Catalog information is an optional field so no validation should be performed in case the catalog information related field items are empty | The request body model does not contain the catalog information catalog_info - was not present "catalog_info" : { "show_in_catalog" : true, "display_name" : "catalog display name", "description" : "this is a description" } | The request body model contains the catalog information catalog_info has been added "catalog_info" : { "show_in_catalog" : true, "display_name" : "catalog display name", "description" : "this is a description" } | |
{api_url}/v1/sales/salesreport?center_id=a11f578a-1b81-4de0-8834-915f79e5362b&start_date=2018-07-22&end_date=2018-07-24&item_type=0&status=2,show_negative_qty_for_refund=1 | There is tax_break_up object which is coming as per the tax components applied on the item. If the tax applied on an item is zero, this object is empty and it is getting filled only for the items where tax is calculated and non-zero. Changed tax_break_up so that it will be consistent for all items | As per the old behaviour, tax_break_up comes as below for guest 1 invoice, “tax_break_up“: { } for guest 2 invoice “tax_break_up“: { “CGST“: 9.0000, “SGST“: 9.0000 } | There are no changes done in the Request/Response/URL of the API. Change is done in the data of tax_break_up object which shows the tax calculated component wise like below. “tax_break_up“: { “CGST“: 9.0000, “SGST“: 9.0000 } Consider sale of a product to two different guests(Guest 1 and Guest 2). The package is redeemed on the product sold to Guest1, so tax got nullified and it is zero. And there is no redemption done on the product sold to the guest 2 and tax is calculated. New behaviour: As per the new behaviour, changed tax_break_up so that it will be consistent for all items which comes as below for guest 1 invoice, “tax_break_up“: { “CGST“: 0.0000, “SGST“: 0.0000 } for guest 2 invoice “tax_break_up“: { “CGST“: 9.0000, “SGST“: 9.0000 } | |
Webstore> {api_url}/v1/bookings | A guest should be able to create bookings for family members. | A guest could not create service bookings for family members | Guest should now be able to create service bookings. | |
When org has parallel groups enabled it returns parallel group service ids in service response When we pass parallel_service_group and id to v1/bookings then it will book two services in parallel | We never used to get parallel_service_groups in services api. No support for parallel booking | New Parameter “parallel_service_groups” is added to response for v1/centers/{center_id}/services/{service_id}) api New Parameter “parallel_service_groups” is added to response for v1/centers/{center_id}/services/ api New request parameter "parallel_Service_group_:{id}}" is added to v1/bookings | ||
POST : v1/guests/{guest_id}/tier: | Even if the logged in user has the role permission, API asks for the user name and password every time. Now made changes so that user name and password are optional, and then verifying the context user permissions | Even if the logged in user has the role permission, API asks for the user name and password every time. | Verifying the context user permission if the user name and password are not received in the request | NA |
{api_url} /v1/invoices/InvoiceItem/PriceChanges?center_id={{center_id}}&therapist_id=null&service_id=null | For a given centerid, all future appointments with no discounts and adjustments made should be updated with new price where finalprice>0 | If therapistid and serviceid is not passed, throw an error that either of them has to be passed | If therapistid and serviceid is not passed, then updating future appointments of center | NA |
{api_url}/Appointments/HtmlCustomData/{InvoiceItemId}/{FormId} | Passed SourceApp from context to internal stored procedure call for form log changes. No change in request or response. | No change in behavior | No change in behavior | NA |
{api_url}/Appointments/{GuestId}/GuestHtmlCustomData | Passed SourceApp from context to internal stored procedure call for form log changes. No change in request or response. | No change in behavior | No change in behavior | NA |
{api_url}/Appointments/{AppointmentId}/CustomFormManualExpiry | Passed SourceApp from context to internal stored procedure call for form log changes. No change in request or response. | No change in behavior | No change in behavior | NA |
{api_url}/Appointments/{AppointmentId}/HtmlTagCustomData/{TagId} | Passed SourceApp from context to internal stored procedure call for form log changes. No change in request or response. | No change in behavior | No change in behavior | NA |
{api_url}/Appointments/{AppointmentId}/HtmlCustomData | Passed SourceApp from context to internal stored procedure call for form log changes. No change in request or response. | No change in behavior | No change in behavior | NA |
{api_url} /v1/reports | Need to get "report last viewed time" to reports. Can also be arranged in the order of the last viewed time. | Gets reports list with no last viewed time information | Gets reports list along with last viewed time information | NA |
{api_url}/v1/guests/{guest_id}/loyalty_forms | Passed SourceApp from context to internal stored procedure call for form log changes. No change in request or response. | No change in behavior | No change in behavior | NA |
{api_url}/v1/entities/{ServiceEntityPk}/form_data | Passed SourceApp from context to internal stored procedure call for form log changes. No change in request or response. | No change in behavior | No change in behavior | NA |
{api_url}/api/Catalog/Guests/GuestHtmlCustomData | Passed SourceApp from context to internal stored procedure call for form log changes. No change in request or response. | No change in behavior | No change in behavior | NA |
{api_url}/Catalog/Appointments/{AppointmentId}/HtmlTagCustomData/{TagId} | Passed SourceApp from context to internal stored procedure call for form log changes. No change in request or response. | No change in behavior | No change in behavior | NA |
{api_url}/Catalog/Appointments/{AppointmentId}/HtmlCustomData | Passed SourceApp from context to internal stored procedure call for form log changes. No change in request or response. | No change in behavior | No change in behavior | NA |
{api_url}/v1/opportunities | Additional details to be accessed, rather than the ones which we are getting right now | No change in the existing behavior but added extra values in request and response objects | We have added few parameters(ExpandAllIds, ExpandAllOpportunityProperties) in request body and one parameter(include_permission_level) in path parameters . We have added some more values in response which will be included in response when the parameters added in request are set to 1 . StatusId, CenterId, SalesOwnerId and DispositionId will be included in response when ExpandAllIds is set to 1 Description, PriorityId, PriorityText, NotesCount, TypeText, SourceId, SourceText will be included in response when ExpandAllOpportunityProperties is set to 1 Permission will be included in response when include_permission_level is set to 1 | NA |
{api_url} /v1/reports/memberships/schedule_collections/flat_file | Adding new request parameter partial_payment of type boolean. When partial_payment is true , then api retrieves only partially paid invoices of suspended memberships. When partial_payment is false, then api retrieves all invoices of suspended memberships. | All suspended memberships are retrieved irrespective of payment in invoices. | When partial_payment is true , then api retrieves only partially paid invoices of suspended memberships. When partial_payment is false, then api retrieves all invoices of suspended memberships. This partial_payment parameter has no effect on memberships with other than suspended status | NA |
{api_url}/v1/reports/packages/schedule_collections/flat_file | Added new column last_collection_attempted, this will get filled when scheduled payments collection was attempted. So last attempted collection date will get populated in this field. | There are no changes done in the Request/URL of the API. last_collection_attempted column will not be present in response model. | There are no changes done in the Request/URL of the API. Change done is in the response model. Added last_collection_attempted which shows date of last attempt made by scheduler to collect scheduled payment. | NA |
{api_url}/v1/integrations/1/journal_types_mapping?view_id=a11f578a-1b81-4de0-8834-915f79e5362b&employee_id=b793463d-2f03-43e5-ae47-a5a1c1be0de6 | create the list of ItemTypeJE mappin | NA | NA | NA |
{api_url}/v1/integrations/1/journal_types_mapping?view_id=a11f578a-1b81-4de0-8834-915f79e5362b&page=1&size=1 | get the list of ItemTypeJE mappings | NA | NA | NA |
{api_url}/v1/policies | Fetch configured policies | NA | NA | NA |
{api_url}/api/Catalog/Appointments/Availabletimes | When an group of empty Slotbooking model array sent from the request, response should give open slots without the availibility of service, therapist & guest. | When an array of empty slotbookings were sent from the request, it resulted in slots based on only first guest service model object. | with this change, slots would come based on array of slotbooking object | NA |
: GET {api_url}/v1/employees/(employee_id) | The response body should contain the whole catalog information sub-object | The response model does not contain the catalog information catalog_info - was not pereset "catalog_info" : { "show_in_catalog" : true, "display_name" : "catalog display name", "description" : "this is a description" } | The response model contains the catalog information catalog_info has been added "catalog_info" : { "show_in_catalog" : true, "display_name" : "catalog display name", "description" : "this is a description" } | NA |
: DELETE{api_url}/v1/employees/(employee_id)/security_roles/(role_id) | When the user does not have access to delete the role, then the API should throw an error message | NA | API is used to delete the role of an employee | NA |
{api_url}/api/Catalog/Payments/Invoice/IntializeCloudPayment | As a security concern, few processors are restricting to show HPP in iframe while doing a saved charge in webstore. To handle this we have introduced new parameter “LoadHostedPaymentURLInIframe” in API response to indicates the client to load the given “HostedPaymentURL” in iframe or not when card is associated with 3ds. | Just constructs the hosted payment url and return in response while doing a saved charge in webstore. Earlier it doesn't indicate where to load this url when card is associated with 3ds. For few processors client side custom logic is written based on that it used to load. | New Parameter “LoadHostedPaymentURLInIframe” is added in response. This response parameter indicates the client to load the given “HostedPaymentURL” in iframe or not while doing a saved charge in webstore when card is associated with 3ds. And custom logic from the client is removed. Add new param in response "LoadHostedPaymentUriInIframe": true, | NA |
{api_url}/api/Catalog/Payments/Invoice/IntializePayment | As a security concern, few processors are restricting to show HPP in iframe while doing a manual charge in webstore. To handle this we have introduced new parameter “LoadHostedPaymentURLInIframe” in API response to indicates the client to load the given “HostedPaymentURL” in iframe or not. | Just constructs the hosted payment url and return in response while doing a manual charge in webstore. Earlier it doesn't indicate where to load this url. For few processors client side custom logic is written based on that it used to load. | New Parameter “LoadHostedPaymentURLInIframe” is added in response. This response parameter indicates the client to load the given “HostedPaymentURL” in iframe or not while doing a manual charge in webstore. And custom logic from the client is removed. Add new param in response "LoadHostedPaymentUriInIframe": true, | NA |
{api_url}/api/Catalog/Payments/Guest/InitializeSaveCard | Just constructs the hosted payment url and return in response. Earlier it doesn't indicate where to load this url. For few processors client side custom logic is written based on that it used to load. | New Parameter “LoadHostedPaymentURLInIframe” is added in response. This response parameter indicates the client to load the given “HostedPaymentURL” in iframe or not. And custom logic from the client is removed. Add new param in response "LoadHostedPaymentUriInIframe": true, | NA | |
{api_url}/api/Catalog/Payments/ProcessorSettings | As a security concern, few processors are restricting to show HPP in iframe. To handle this we have introduced new parameter in API response to send redirect url or not so that final payment response is sent to the redirection url. | Retrieves all the payment processor settings. | Retrieves the processor settings required for client. In this we introduced parameter, "IsRedirectionUrlRequired" which tells webstore to pass redirection url from their side. So that if processor doesnt support loading HPP in iframe then we redirect the response to the given redirection URL. add new params to response "IsRedirectionUrlRequired": "true" | NA |
{api_url}/v1/reports/employees/sales/flat_file?page=1&size=3 | Missed to honor center level employee related setting "Free service revenue includes" in the employee sales api. Honored this setting now which will have impact on "commissionable_discount". | Consider a invoice which has item of $100. Appied a discount of $50 and paid remaining through cash. As per the old behaviour, commissionable_discount is coming as $50 irrespective of the center level employee related setting "Free service revenue includes" | Consider a invoice which has item of $100. Appied a discount of $50 and paid remaining through cash. As per the new behaviour, commissionable_discount will come as $50 if the "Manual discount" is selected in the center level employee related setting "Free service revenue includes" commissionable_discount will come as $0 if the "Manual discount" is not selected in the center level employee related setting "Free service revenue includes" | NA |
{api_url}/v1/reports/sales/cash_basis/flat_file | Fixed below two issues and there are no changes in the request/response/url structure. | Consider a invoice with two items in which one is redeemed using package and other paid using cash. Sales cash api gives two records(one for package redemption and other for cash payment).When we pass no specific payment type, it gives all payment type transactions and show Sales Collected as the amount collected in each transaction. But Sales collected is getting doubled for the payment redemption transaction which is incorrect | Consider a invoice with two items in which one is redeemed using package and other paid using cash. Sales cash api gives two records(one for package redemption and other for cash payment).When we pass no specific payment type, it gives all payment type transactions and show Sales Collected as the amount collected in each transaction. And Sales collected will the redemption amount for the package redemption transaction | NA |
{api_url}/v1/reports/collections/flat_file?page=1&size=10 | This is to fix a issue in due amount calculation. No changes in the request/response/url structures. Due not calculating correctly for the invoices which has items having same start time and redeemed from a package | Consider a invoice with two items redeemed from two different packages, collections report api gives two records(one for each package-item redemption). This api give due amount as on each transaction. Let's say redemption value of first package is 100 and the second package is 200. Now the due amount for both the transactions is coming as 300 which is incorrect | Consider a invoice with two items redeemed from two different packages, collections report api gives two records(one for each package-item redemption). This api give due amount as on each transaction. Let's say redemption value of first package is 100 and the second package is 200. As per the new behaviour, the due amount for the first package redemption is 200 and for second package redemption it is 0 | NA |
{api_url}/v1/entities/definition | When Entity is enabled for an organization and a guest has entities(ex: Pets), pet profile related APIs are introduced. | These are new APIs implemented for this hotfix. | To get list of entities for a guest, to get an attributes list for an organization, create/update pet for a guest | NA |
{api_url}/api/Catalog/Guests/UserAppointments | When form is read only, 6th bit in SCD value should be 0 | When form is read only, 6th bit in SCD value giving 1 | When form is read only, 6th bit in SCD value should be 0 | NA |
{api_url}/v1/centers/?view_id=A56292E4-8597-48A0-B139-3F0386CB8DFA&expand=taxgroups&page_num=-1 | Added tax groups list to each center response if expand array has taxgroups string and also added view_id parameter to get only centers which are in that view id. | Doesnot support taxgroups for expand parameter and view_id parameter. | supports expand= taxgroups which adds taxgroups array to that each center and if view_id is given then response contains only centers with in that view_id. | NA |
{api_url}/v1/products/vendor_center_associations | Vendor product center association | NA | NA | NA |
{api_url}/api/Catalog/Appointments/ConfirmReservation | Added entity related changes | Not supports entities | Entity mapping also works now for appointment booking | NA |
{api_url}/api/Catalog/Appointments/ReserveSlots | Pet value | NA | NA | NA |
{api_url}/v1/integrations/1/external_payment_types?view_id=a11f578a-1b81-4de0-8834-915f79e5362b&page=1&size=10 | Implemented Get External Payment types | NA | NA | NA |
{api_url}/v1/integrations/1/payment_types?view_id=a11f578a-1b81-4de0-8834-915f79e5362b&page=1&size=9 | Implemented Get Payment Types | NA | NA | NA |
Endpoint used for fetching the appointment list in CX V3. In this RequestType defines the request type is Past(0), Upcoming(1) or all(2). | Add a new enum value for Pet appointments and request it in Query parameter "RequestType" | API should return Pet appointments. | NA | |
{api_url}/v1/guests/guest_id/entities/entity_id | When Entity is enabled for an organization and a guest has entities(ex: Pets), pet profile related APIs are introduced. | These are new APIs implemented | Update the guest entity | NA |
{api_url}/v1/guests/guest_id/entities | When Entity is enabled for an organization and a guest has entities(ex: Pets), pet profile related APIs are introduced. | These are new APIs implemented | Get the list of entities for the guest | NA |
{api_url}/v1/guests/guest_id/entities | When Entity is enabled for an organization and a guest has entities(ex: Pets), pet profile related APIs are introduced. | These are new APIs implemented | Create the new entity for the guest | NA |
{api_url}/v1/integrations/1/payments_mapping?view_id=a11f578a-1b81-4de0-8834-915f79e5362b&page=1&size=5 | Implement Get payments Mapping | NA | NA | NA |
{api_url}/v1/forms/EB5D5983-20BF-4E61-ADD5-3FF1C941AE24/logs?owner_id=69CE803F-75ED-42A9-B894-976AC51067BD¢er_id=34F7B069-1BCE-4F24-B9B2-F58EBBF768F0&log_type=1 | New API to get custom form logs | New API to get custom form logs |