API Change Log – May 16th 2022 Release
about 3 years ago by Abhay Anumula
Check the API updates for this release.
<th style={{ textAlign: "left" }}>
Scenario
</th>
<th style={{ textAlign: "left" }}>
Earlier Behavior
</th>
<th style={{ textAlign: "left" }}>
New Behavior
</th>
<th style={{ textAlign: "left" }}>
API Documentation Link
</th>
</tr>
<td style={{ textAlign: "left" }}>
A new parameter\
"ActionId" is added\
in request object
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://dev.zenoti.com](https://dev.zenoti.com)\
/v1/reports/sales\
/cash\_basis/flat\_file
</td>
<td style={{ textAlign: "left" }}>
Added new property collected\_as\_on\_date\
in the SalesCashItem\
object and\
collected in the\
SalesCashTotal\
object of response.
</td>
<td style={{ textAlign: "left" }}>
Collected property\
shows collected\
till date and\
having a conflict\
with name and behaviour.
</td>
<td style={{ textAlign: "left" }}>
Collected till date property will show amount collected on the item till that date and collected will show that day's collected amount.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://qaapi.zenotibeta.com](https://qaapi.zenotibeta.com)\
/api/Memberships\
/GetMembershipForms?OrganizationId=\
c3df0f67-50d0-\
44e1-84d1-e5ee08af5625&\
InvoiceItemId=\
3c976353-db13-\
4443-a5fb-66d604e8f41e&\
UserMembershipId=\
cd566282-231d-\
4f8d-9112-\
9f5fb767e6fe
</td>
<td style={{ textAlign: "left" }}>
A new param is added\
in the\
response object.
</td>
<td style={{ textAlign: "left" }}>
No change.\
Added a new\
parameter to\
the response object.
</td>
<td style={{ textAlign: "left" }}>
No change. Added a new parameter to the response object.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/v1](http://devapi.zenoti.com/v1)\
/organizations\
/5528ee09-5321-\
4153-8ca7-\
31c78d757dcb\
/work\_tasks
</td>
<td style={{ textAlign: "left" }}>
Adding an optional\
parameter to get\
org work tasks\
which modifies\
the flow of fetching\
work tasks in the API.
</td>
<td style={{ textAlign: "left" }}>
Did not have the\
optional parameter\
to get org work tasks
</td>
<td style={{ textAlign: "left" }}>
Has optional parameter to get org work tasks
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://qaapi.zenotibeta.com](https://qaapi.zenotibeta.com)\
/v1\
/guests\
/017a4e11-c356-\
4144-a9d9-93df5027b1ef\
/products
</td>
<td style={{ textAlign: "left" }}>
This API is required\
to show the\
guest product history
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
This API is required to show the guest product history
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://qaapi.zenotibeta.com](https://qaapi.zenotibeta.com)\
/v1/guests\
/017a4e11-c356-\
4144-a9d9-\
93df5027b1ef\
/prepaidcards
</td>
<td style={{ textAlign: "left" }}>
Provides pagination\
support
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
In the request body user can pass page and size to get the pagination results
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://qaapi.zenotibeta.com](https://qaapi.zenotibeta.com)\
/v1/guests\
/017a4e11-c356-4144-\
a9d9-93df5027b1ef\
/gift\_cards
</td>
<td style={{ textAlign: "left" }}>
This API is required\
to separate purchased\
and received gift cards
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
User can pass filter\_by to get specific gift cards
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
http\://localhost:55244\
/v1/guests\
/5555E107-C192-\
4EDC-862E-1\
3BCE6C9153A\
/loyalty\_forms/\
details
</td>
<td style={{ textAlign: "left" }}>
Added a new parameter form\_url
</td>
<td style={{ textAlign: "left" }}>
Does not return\
form\_url parameter\
in the response
</td>
<td style={{ textAlign: "left" }}>
Returns an extra parameter form\_url in the response
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://apiurl.zenoti.com](https://apiurl.zenoti.com)\
/v1/organizations\
/settings\
/All
</td>
<td style={{ textAlign: "left" }}>
Get queue admin\
settings section
</td>
<td style={{ textAlign: "left" }}>
Queue admin\
settings section\
was not provided
</td>
<td style={{ textAlign: "left" }}>
Provided Queue admin settings section.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://devapi.zenoti.com/v1](https://devapi.zenoti.com/v1)\
/reports\
/attendance\_summary\
/flat\_file
</td>
<td style={{ textAlign: "left" }}>
Updated the API to\
support Group-by\
and Footers
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
Updated the API in order to support Group-by and Footers
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://devapi.zenoti.com](https://devapi.zenoti.com)\
/api/employees\
/0d37e402-6048-\
4ee0-b1e7-44229aae01d9
</td>
<td style={{ textAlign: "left" }}>
New parameter "is\_virtual\_employee"\
is added in response.\
It will be shown in response when Enable Waiting\
Room is enabled at\
both org and\
employee's center.\
If employee is a\
virtual employee,\
it returns true,\
otherwise false.
</td>
<td style={{ textAlign: "left" }}>
is\_virtual\_employee\
is not shown in\
response
</td>
<td style={{ textAlign: "left" }}>
is\_virtual\_employee is shown in response when org and center setting is on
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/api](http://devapi.zenoti.com/api)\
/Catalog/Appointments\
/GetWaitTimeForQueue
</td>
<td style={{ textAlign: "left" }}>
When "Require service selection while\
adding guest to\
queue" setting is\
enabled at org level\
and there is a\
configured default\
service for queue,\
send DefaultServiceForQueue in api response
</td>
<td style={{ textAlign: "left" }}>
There was no DefaultServiceFor\
Queue in API\
response
</td>
<td style={{ textAlign: "left" }}>
This will send DefaultServiceForQueue in api response.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/api](http://devapi.zenoti.com/api)\
/Appointments\
/Queue
</td>
<td style={{ textAlign: "left" }}>
We are allowing access\
of this api from MHCMA\
user token, which was unauthorised earlier
</td>
<td style={{ textAlign: "left" }}>
Trying to access\
this api with\
MHCMA token\
throws error:\
User not authorised
</td>
<td style={{ textAlign: "left" }}>
Allows accessing of this API by the MHCMA user token.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://devapi.zenoti.com/v1](https://devapi.zenoti.com/v1)\
/issues\
/issue\_id
</td>
<td style={{ textAlign: "left" }}>
New object has been\
added in response
</td>
<td style={{ textAlign: "left" }}>
Guest details\
contains "Name, Phone number and\
Guest ID
</td>
<td style={{ textAlign: "left" }}>
Guest details contains "Name, Phone number, Guest ID , Guest code and Guest email
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
https\://api/Catalog\
/Appointments\
/ReserveSlots
</td>
<td style={{ textAlign: "left" }}>
No changes required\
as they are already\
available
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/v1/organizations\
/online\_settings\
/cma
</td>
<td style={{ textAlign: "left" }}>
Fetch either published\
or draft setting\
values based\
on input.
</td>
<td style={{ textAlign: "left" }}>
Fetch published\
setting values.
</td>
<td style={{ textAlign: "left" }}>
Fetch either published or draft setting values based on input.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/v1/guests/guest\_id\
/memberships\
/user\_membership\_id\
/freeze
</td>
<td style={{ textAlign: "left" }}>
Added new parameters FreezeFeeType and\
Comments to request.\
Both parameters\
are optional.
</td>
<td style={{ textAlign: "left" }}>
Values for\
FreezeFeeType and\
Comments are 1\
and "Membership\
Frozen By Guest\
using API"\
respectively\
by default
</td>
<td style={{ textAlign: "left" }}>
If FreezeFeeType and Comments parameters are specified correctly in request they are considered else default values are considered.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/v1](http://devapi.zenoti.com/v1)\
/reports/memberships\
/schedule\_collections\
/flat\_file?page=1\&size=1
</td>
<td style={{ textAlign: "left" }}>
1. Able to get\
membership payment report by passing Invalid/Null\
/Empty values for recurrence\_statuses.\
2\)Able to get\
membership payment report by passing Null/Empty\
/without\
Collection\_status.
</td>
<td style={{ textAlign: "left" }}>
Able to get the\
report for\
above\
mentioned invalid\
parameters
</td>
<td style={{ textAlign: "left" }}>
Throws an error when we get Packages scheduled collection report with Invalid/Empty/Null value for status
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/v1](http://devapi.zenoti.com/v1)\
/reports/packages\
/schedule\_collections\
/flat\_file
</td>
<td style={{ textAlign: "left" }}>
1. Able to get\
Packages scheduled\
collection report by passing Null/Empty value\
/without passing\
Status
2. Able to get guest\
feedback report by\
passing Null/Empty\
/without passing Invoice\_status
</td>
<td style={{ textAlign: "left" }}>
Able to get the\
report for above\
mentioned invalid\
parameters
</td>
<td style={{ textAlign: "left" }}>
Throws an error when we get Packages scheduled collection report with Invalid/Empty/Null value for status
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/v1](http://devapi.zenoti.com/v1)\
/reports/feedback\
/flat\_file
</td>
<td style={{ textAlign: "left" }}>
1. Able to get guest\
feedback report by\
passing Null/Empty/\
without passing\
Invoice\_status
2\)Able to get guest\
feedback report by\
passing Invalid/Empty\
/Null\
/without passing\
Appointment\
status
</td>
<td style={{ textAlign: "left" }}>
Able to get the\
report for the\
mentioned invalid\
parameters
</td>
<td style={{ textAlign: "left" }}>
Throws an error when we get guest feedback report with Invalid/Empty/Null value for Appointment, invoice\_status
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
https\:/\
/phftest.zenotibeta.com\
/v1/tokens
</td>
<td style={{ textAlign: "left" }}>
Login policies\
enforced as a\
part of employee\
login enhancement.
</td>
<td style={{ textAlign: "left" }}>
Login policies\
were not enforced.
</td>
<td style={{ textAlign: "left" }}>
Login policies enforced as a part of employee login enhancement.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://devapi.zenoti.com/v1](https://devapi.zenoti.com/v1)\
/Centers?catalog\_enabled=\
true\&expand=\
zone\&expand=\
working\_hours\&expand=\
catalog\_settings\&size=\
100\&page=7\&services=\
71265869-8380-\
4c46-9d32-642c244dc402\&Longitude=\
78.3771953\&Latitude=\
17.4434646
</td>
<td style={{ textAlign: "left" }}>
Center amenities\
enabled at center\
settings for CMA
</td>
<td style={{ textAlign: "left" }}>
New parameters\
were missing
</td>
<td style={{ textAlign: "left" }}>
Returns 2 new parameters in response
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/v1](http://devapi.zenoti.com/v1)\
/employees\
/df13cccb-6eee-\
49ab-adbe-cb0299f896be
</td>
<td style={{ textAlign: "left" }}>
Adding a parameter\
include in payroll\
which is ON by\
default
</td>
<td style={{ textAlign: "left" }}>
Not changed the\
existing behavior\
but added extra\
values in request\
and response objects
</td>
<td style={{ textAlign: "left" }}>
Added one field (include\_in\_payroll) which is 1 by default
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/v1](http://devapi.zenoti.com/v1)\
/employees\
/df13cccb-6eee-\
49ab-adbe-\
cb0299f896be
</td>
<td style={{ textAlign: "left" }}>
Adding a parameter\
include in payroll\
which is ON by\
default
</td>
<td style={{ textAlign: "left" }}>
Not changed the\
existing behavior\
but added extra\
values in request\
and response objects
</td>
<td style={{ textAlign: "left" }}>
Added one field (include\_in\_payroll) which is 1 by default
</td>
<td style={{ textAlign: "left" }}>
[API Docs Link](https://docs.zenoti.com/#b625fbe2-e082-487d-88fd-a5fb257bb4ee)
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/v1](http://devapi.zenoti.com/v1)\
/employees
</td>
<td style={{ textAlign: "left" }}>
Adding a parameter\
include in payroll\
which is ON by\
default
</td>
<td style={{ textAlign: "left" }}>
Not changed the\
existing behavior\
but added extra\
values in request\
and response objects
</td>
<td style={{ textAlign: "left" }}>
Added one field (include\_in\_payroll) which is 1 by default
</td>
<td style={{ textAlign: "left" }}>
[API Docs Link](https://docs.zenoti.com/#7e162d15-0335-4396-8261-03eca7850dea)
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://qaaapi.zenotibeta.com](https://qaaapi.zenotibeta.com)\
/v1/guests\
/guest\_id/tier
</td>
<td style={{ textAlign: "left" }}>
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
</td>
<td style={{ textAlign: "left" }}>
Even if the logged\
in user has the role\
permission, API\
asks for the user\
name and password\
every time.
</td>
<td style={{ textAlign: "left" }}>
Verifying the context user permission if the user name and password are not received in the request
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://devapi.zenotibeta.com/v1](https://devapi.zenotibeta.com/v1)\
/invoices/InvoiceItem\
/PriceChanges
</td>
<td style={{ textAlign: "left" }}>
Given centerid, all\
future appointments\
with no discounts\
and adjustments\
made should be\
updated with new\
price where finalprice>0
</td>
<td style={{ textAlign: "left" }}>
If therapistid and\
serviceid is not passed,\
throw an error that\
either of them has\
to be passed
</td>
<td style={{ textAlign: "left" }}>
If therapistid and serviceid is not passed, then updating future appts of center
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/api](http://devapi.zenoti.com/api)\
/Appointments\
/HtmlCustomData\
/9BD7D750-B341-**4CFD**-B1A8-C3ABE4E2B4EF\
/166FB797-\
1313-41BD-9D4D-E5089B9A3FA3
</td>
<td style={{ textAlign: "left" }}>
Passed SourceApp\
from context to\
internal stored\
procedure call for\
form log changes.\
No change in request or response.
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/api](http://devapi.zenoti.com/api)\
/Appointments\
/810DF21C-9358-44B3-9A4B-F7DD152EAB0F\
/GuestHtmlCustomData
</td>
<td style={{ textAlign: "left" }}>
Passed SourceApp\
from context to\
internal stored\
procedure call for\
form log changes.\
No change in request or response.
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/api](http://devapi.zenoti.com/api)\
/Appointments\
/810DF21C-9358-44B3-9A4B-F7DD152EAB0F\
/CustomFormManualExpiry
</td>
<td style={{ textAlign: "left" }}>
Passed SourceApp\
from context to\
internal stored\
procedure call for\
form log changes.\
No change in request or response.
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/api](http://devapi.zenoti.com/api)\
/Appointments/810DF21C-9358-44B3-9A4B-F7DD152EAB0F\
/HtmlTagCustomData\
/DA457E0B-69B1-\
40D2-9A9D-1BA72C48BA66
</td>
<td style={{ textAlign: "left" }}>
Passed SourceApp\
from context to\
internal stored\
procedure call for\
form log changes.\
No change in request or response.
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/api/Appointments\
/810DF21C-9358-44B3-9A4B-F7DD152EAB0F\
/HtmlCustomData
</td>
<td style={{ textAlign: "left" }}>
Passed SourceApp\
from context to\
internal stored\
procedure call\
for form log changes.\
No change in request or response.
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/v1\
/reports
</td>
<td style={{ textAlign: "left" }}>
To get the last\
viewed time\
information of report\
to order/prioritize\
data based on that
</td>
<td style={{ textAlign: "left" }}>
No last viewed\
time for report.
</td>
<td style={{ textAlign: "left" }}>
get reports list with last viewed time information.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/v1/guests/6EC4152A-\
A671-4923-8223-B0CC405DAC74\
/loyalty\_forms
</td>
<td style={{ textAlign: "left" }}>
Passed SourceApp\
from context to\
internal stored\
procedure call for\
form log changes.\
No change in request or response.
</td>
<td style={{ textAlign: "left" }}>
No change in\
behavior
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/v1\
/entities/31\
/form\_data
</td>
<td style={{ textAlign: "left" }}>
Passed SourceApp\
from context to\
internal stored\
procedure call for\
form log changes.\
No change in request or response.
</td>
<td style={{ textAlign: "left" }}>
No change in\
behavior
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/api/Catalog\
/Guests\
/GuestHtmlCustomData
</td>
<td style={{ textAlign: "left" }}>
Passed SourceApp\
from context to\
internal stored\
procedure call for form log changes. No\
change in request or\
response.
</td>
<td style={{ textAlign: "left" }}>
No change in\
behavior
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/api](http://devapi.zenoti.com/api)\
/Catalog/Appointments\
/4E9AE2E2-C7BA-\
4DFB-919C-DE06D2610E21/\
HtmlTagCustomData\
1DDD40EE-2688-\
4FAF-9292-\
336EBED9E9D5
</td>
<td style={{ textAlign: "left" }}>
Passed SourceApp\
from context to\
internal stored\
procedure call\
for form log changes.\
No change in request or response.
</td>
<td style={{ textAlign: "left" }}>
No change in\
behavior
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/api](http://devapi.zenoti.com/api)\
/Catalog\
/Appointments\
/4E9AE2E2-C7BA-\
4DFB-919C-DE06D2610E21\
/HtmlCustomData
</td>
<td style={{ textAlign: "left" }}>
Passed SourceApp from context to internal\
stored procedure\
call for form log\
changes. No change\
in request or response.
</td>
<td style={{ textAlign: "left" }}>
No change in\
behavior
</td>
<td style={{ textAlign: "left" }}>
No change in behavior
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://devapi.zenoti.com](https://devapi.zenoti.com)\
/v1\
/invoices\
/d1fb6a44-\
0d35-4992-aa96-24b58cd79369\
/cancel
</td>
<td style={{ textAlign: "left" }}>
Guest should be\
able to cancel\
bookings for\
family members.
</td>
<td style={{ textAlign: "left" }}>
Guests cannot\
cancel bookings\
for other guests.
</td>
<td style={{ textAlign: "left" }}>
Guest should be able to cancel bookings for family members.
</td>
<td style={{ textAlign: "left" }}>
[Cancel a service booking](https://zenotiapi.readme.io/reference/cancel-a-service-booking)
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://webstoreapi.](https://webstoreapi.)\
zenoti.com/v1\
/bookings\
/7ac33976-\
3af8-45b6-\
87f8-e82e07ce1746\
/slots/\
confirm
</td>
<td style={{ textAlign: "left" }}>
Guest should be able to confirm bookings\
for family members.
</td>
<td style={{ textAlign: "left" }}>
Guests cannot\
confirm bookings\
for other guests.
</td>
<td style={{ textAlign: "left" }}>
Guest should be able to confirm bookings for family members.
</td>
<td style={{ textAlign: "left" }}>
[Confirm a service booking](https://zenotiapi.readme.io/reference/confirm-a-service-booking)
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://webstoreapi.](https://webstoreapi.)\
zenoti.com/v1\
/bookings\
/7ac33976-\
3af8-45b6-87f8-\
e82e07ce1746\
/slots/reserve
</td>
<td style={{ textAlign: "left" }}>
Guest should be able to reserve the booking\
for a family member.
</td>
<td style={{ textAlign: "left" }}>
Guest is unable to\
reserve appointments\
for other guests
</td>
<td style={{ textAlign: "left" }}>
Guest should be able to reserve appointments for family members.
</td>
<td style={{ textAlign: "left" }}>
[Reserve a slot for booking](https://zenotiapi.readme.io/reference/reserve-a-slot-for-a-service-booking)
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://webstoreapi.](https://webstoreapi.)\
zenoti.com/v1/bookings
</td>
<td style={{ textAlign: "left" }}>
A guest should be able\
to create bookings\
for family\
members.
</td>
<td style={{ textAlign: "left" }}>
A guest could create\
service bookings.
</td>
<td style={{ textAlign: "left" }}>
Guest should now be able to create service bookings.
</td>
<td style={{ textAlign: "left" }}>
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://webstoreapi.](https://webstoreapi.)\
zenoti.com/v1\
/guests/d2da2994-\
e4f0-40ea-b2cd-\
a771ee83707a\
/appointments
</td>
<td style={{ textAlign: "left" }}>
Relationship host guest\
token should be\
able to view\
appointments\
of family members
</td>
<td style={{ textAlign: "left" }}>
Guest token cannot\
view appointment\
list of another user
</td>
<td style={{ textAlign: "left" }}>
Guest token should be able to view appointments of another guest if he is part of a relationship.
</td>
<td style={{ textAlign: "left" }}>
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://webstoreapi.](https://webstoreapi.)\
zenoti.com/v1\
/guests\
/ef6a4b6a-8fd7-\
43cc-babd-dfc80da0da3b
</td>
<td style={{ textAlign: "left" }}>
Relationship Host should\
be able to view\
the profile details\
of a family member.
</td>
<td style={{ textAlign: "left" }}>
Guest token cannot\
view profile details\
of another user
</td>
<td style={{ textAlign: "left" }}>
Guest token should be allowed to view another guest's profile if he is in a relationship with the host.
</td>
<td style={{ textAlign: "left" }}>
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://webstoreapi.](https://webstoreapi.)\
zenoti.com/v1\
/guests\
/d2da2994-e4f0-\
40ea-b2cd-a771ee83707a
</td>
<td style={{ textAlign: "left" }}>
Allow for relationship\
hosts to be able to\
update details of\
family member\
profiles.
</td>
<td style={{ textAlign: "left" }}>
Would not allow for\
a guest to update\
another guest's details
</td>
<td style={{ textAlign: "left" }}>
Should allow for a guest to update another guest details, if they are in a relationship and the guest token is the relationship host.
</td>
<td style={{ textAlign: "left" }}>
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/v1/opportunities\
/OpportunityId\
/Notes
</td>
<td style={{ textAlign: "left" }}>
If the logged in user\
have Opportunity ->\
Add permission in\
Center A and\
Opportunity ->\
Edit permission in\
center B ,logged\
user must be able\
to edit the opportunity\
which belongs to\
center B from\
center A
</td>
<td style={{ textAlign: "left" }}>
API will be accessible\
only when logged\
in user have Edit\
Permission in current\
center .
</td>
<td style={{ textAlign: "left" }}>
API will be accessible even when logged in user have Add permission in current center(which is in context) and Edit permission in the center in which Opportunity belongs to .
</td>
<td style={{ textAlign: "left" }}>
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/v1](http://devapi.zenoti.com/v1)\
/opportunities\
/OpportunityId
</td>
<td style={{ textAlign: "left" }}>
If the logged in user\
have Opportunity ->\
Add permission in\
Center A and\
Opportunity ->\
Edit permission in\
center B ,logged user\
must be able to\
edit the opportunity\
present in center\
B from center A
</td>
<td style={{ textAlign: "left" }}>
API will be accessible\
only when logged in\
user have Edit\
Permission in current\
center .
</td>
<td style={{ textAlign: "left" }}>
API will be accessible even when logged in user have Add permission in current center(which is in context) and Edit permission in the center in which Opportunity belongs to .
</td>
<td style={{ textAlign: "left" }}>
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/v1/opportunities\
/OpportunityId\
/Notes
</td>
<td style={{ textAlign: "left" }}>
Should be able to get\
the notes of an\
opportunity even\
when the logged\
in user have\
Add permission
</td>
<td style={{ textAlign: "left" }}>
API is accessible\
when logged in\
user have Edit\
permission .
</td>
<td style={{ textAlign: "left" }}>
API will be accessible when logged in user have either Add or Edit permissions .
</td>
<td style={{ textAlign: "left" }}>
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/v1/opportunities
</td>
<td style={{ textAlign: "left" }}>
Excess details need\
to accessed rather\
than the ones\
which we are\
getting right now
</td>
<td style={{ textAlign: "left" }}>
Not changed the\
existing behavior\
but added extra\
values in request\
and response\
objects
</td>
<td style={{ textAlign: "left" }}>
We have added few parameters(ExpandAllIds, ExpandAllOpportunityProperties) in request body and one parameter(include\_permission\_level) in path parameters .
</td>
<td style={{ textAlign: "left" }}>
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://apiurl.zenoti.com](http://apiurl.zenoti.com)\
/v1/reports\
/packages\
/schedule\_collections\
/flat\_file
</td>
<td style={{ textAlign: "left" }}>
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.
</td>
<td style={{ textAlign: "left" }}>
There are no changes\
done in the\
Request/URL of\
the API. last\_collection\_attempted column will\
not be present in\
response model.
</td>
<td style={{ textAlign: "left" }}>
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.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/api/Catalog\
/Appointments\
/Availabletimes
</td>
<td style={{ textAlign: "left" }}>
When a group of\
empty Slotbooking\
model array sent\
from the request,\
response should\
give open slots\
without the\
availability of service,\
therapist & guest.
</td>
<td style={{ textAlign: "left" }}>
When an array of\
empty slotbookings\
were sent from the\
request, it resulted\
in slots based on\
only first guest\
service model object.
</td>
<td style={{ textAlign: "left" }}>
With this change, slots would come based on array of slotbooking object
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://qaapi.zenotibeta.com](https://qaapi.zenotibeta.com)\
/api/Catalog\
/Guests\
/UserAppointments
</td>
<td style={{ textAlign: "left" }}>
When form is read\
only, 6th bit in\
SCD value should be 0
</td>
<td style={{ textAlign: "left" }}>
When form is read\
only, 6th bit in\
SCD value giving 1
</td>
<td style={{ textAlign: "left" }}>
When form is read only, 6th bit in SCD value should be 0
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/api](http://devapi.zenoti.com/api)\
/Catalog\
/Services?CenterId=\
d1fb6a44-0d35-\
4992-aa96-24b58cd79369\&size=\
50\&OrganizationId=\
b5b9397d-d7bc-\
444d-966f-6535e83c6ac3\&category\
Type=0\&Attributes=\
21,22,23,24
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
Results not sorted\
by Service Display\
Name
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/v1/Centers?\
catalog\_enabled=\
true\&page=\
1\&search\_text=\
Hyd\&size=5
</td>
<td style={{ textAlign: "left" }}>
Able to search center\
using zipcode,\
address etc.
</td>
<td style={{ textAlign: "left" }}>
Used to return\
all centers.
</td>
<td style={{ textAlign: "left" }}>
Added searching functionality to center list API
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/v1\
/reports
</td>
<td style={{ textAlign: "left" }}>
Revamp of dashboard
</td>
<td style={{ textAlign: "left" }}>
Used to show only\
V2 reports in the list.
No "version" property in reponse.
</td>
<td style={{ textAlign: "left" }}>
Include new parameter to show V1 reports.
Version parameter in response.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com/v1](http://devapi.zenoti.com/v1)\
/centers/?view\_id=\
A56292E4-8597-\
48A0-B139-3F0386CB8DFA\&expand=\
taxgroups\&page\_num=-1
</td>
<td style={{ textAlign: "left" }}>
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.
</td>
<td style={{ textAlign: "left" }}>
Doesnot support\
taxgroups for\
expand parameter\
and view\_id parameter.
</td>
<td style={{ textAlign: "left" }}>
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.
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[http://devapi.zenoti.com](http://devapi.zenoti.com)\
/v1/products\
/AB750E76-CAB0\
-4835-810A-\
A1B0EC23916D\
/vendor\_center
* associations?page=-1\&expand=\
price\_info\&view\_id=\
99EF216E-4636-\
4680-80F9-B789AF9F5B05
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
[https://qaapi.zenotibeta.](https://qaapi.zenotibeta.)\
com\
/api/Catalog\
/Appointments/ConfirmReservation
</td>
<td style={{ textAlign: "left" }}>
Added entity related\
changes
</td>
<td style={{ textAlign: "left" }}>
Does not support entities
</td>
<td style={{ textAlign: "left" }}>
Entity mapping also works now for appointment booking
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
<tr>
<td style={{ textAlign: "left" }}>
http\:/\
/devapi.zenoti.com\
/api/Catalog\
/Services
</td>
<td style={{ textAlign: "left" }}>
Add entity related\
details
</td>
<td style={{ textAlign: "left" }}>
Pull all service listings
</td>
<td style={{ textAlign: "left" }}>
Add services listing related to entity
</td>
<td style={{ textAlign: "left" }}>
NA
</td>
</tr>
API End Points |
---|
[https://devapi.zenoti.com](https://devapi.zenoti.com) /v1/guests/guestid /loyalty\_points |