Changes

From SimplyBook.me
no edit summary
Line 83: Line 83:  
===Authentication===
 
===Authentication===
   −
Using Simplybook API methods require an authentification. To authorize in Simplybook API you need to get an access key — access-token. In order to get this access-token you should call the JSON-RPC method <code>[[Authentication#getUserToken|getUserToken]]</code> API method on https://user-api.simplybook.me/login service passing your personal API-key. You can copy your API-key at admin interface: go to the 'Plugins' link and select [[Plugins#API|API plugin]] 'Settings'.  
+
Using Simplybook API methods require an authentification. To authorize in Simplybook API you need to get an access key — access-token. In order to get this access-token you should call the JSON-RPC method <code>[[Authentication#getUserToken|getUserToken]]</code> API method on https://user-api.simplybook.me/login service passing your personal API-key. You can copy your API-key at admin interface: go to the 'Custom Features' link and select [[Custom_Features#API|API Custom Feature]] 'Settings'.  
    
== Methods ==
 
== Methods ==
Line 178: Line 178:  
specify either <code>count</code> more then 1 or valid <code>batchId</code> (only one parameter can be
 
specify either <code>count</code> more then 1 or valid <code>batchId</code> (only one parameter can be
 
specified). You should specify an <code>$additionalFields</code> parameter if service requires some additional
 
specified). You should specify an <code>$additionalFields</code> parameter if service requires some additional
fields (see [[Plugins#Additional fields|Additional fields plugin]]).To create a booking with promo code you should pass it as additional field. For example: <code>{"promocode": "some code"}</code>
+
fields (see [[Custom_Features#Additional_Fields|Additional Fields Custom feature]]).To create a booking with promo code you should pass it as additional field. For example: <code>{"promocode": "some code"}</code>
   −
If [[Plugins#Unit location|Unit location]] enabled you need to pass locations ID parameter as additional field
+
If [[Custom_Features#Unit_Location|Unit location]] enabled you need to pass locations ID parameter as additional field
 
<code>location_id</code>. For example: <code>{"location_id": "1"}</code>. Use <code>[[#isPluginActivated|isPluginActivated('location')]]</code>
 
<code>location_id</code>. For example: <code>{"location_id": "1"}</code>. Use <code>[[#isPluginActivated|isPluginActivated('location')]]</code>
to check if plugin active and <code>[[#getLocationsList|getLocationsList()]]</code> method to get list of
+
to check if Custom feature active and <code>[[#getLocationsList|getLocationsList()]]</code> method to get list of
 
available locations.
 
available locations.
   Line 326: Line 326:  
Returns Array.
 
Returns Array.
   −
Returns list of available unit ids for specified date and service from provided $unitIds list.You can use this method with location plugin.
+
Returns list of available unit ids for specified date and service from provided $unitIds list.You can use this method with location Custom Feature.
 
Returns empty array if all units are not allowed.
 
Returns empty array if all units are not allowed.
 
Eg.: <code>[1, 2, 3]</code>
 
Eg.: <code>[1, 2, 3]</code>
Line 343: Line 343:  
Returns Array.
 
Returns Array.
   −
Return additional fields for certain event if [[Plugins#Additional_fields|Additional fields plugin]] is
+
Return additional fields for certain event if [[Custom_Features#Additional_Fields|Additional Fields Custom Feature]] is
 
activated. Returns empty array otherwise. Call <code>[[#isPluginActivated|isPluginActivated('event_field')]]</code>
 
activated. Returns empty array otherwise. Call <code>[[#isPluginActivated|isPluginActivated('event_field')]]</code>
API method to check if 'event_field' plugin activated.
+
API method to check if 'event_field' Custom Feature activated.
      Line 357: Line 357:  
Returns Object|null.
 
Returns Object|null.
   −
Returns information about [[Plugins#Any_Employee_selector|Any Employee selector plugin]] configuration. Returns
+
Returns information about [[Custom_Features#Any_Employee_Selector|Any Employee selector Custom Feature]] configuration. Returns
null if plugin not enabled.Example:
+
null if Custom Feature not enabled.Example:
 
   {
 
   {
 
     "description" : "Select this option, if you want to find an available time with any of the employees",
 
     "description" : "Select this option, if you want to find an available time with any of the employees",
Line 486: Line 486:  
Returns Array.
 
Returns Array.
   −
Returns time intervals not available for bookings because of configuration of [[Plugins#Limit bookings|Limit bookings]]
+
Returns time intervals not available for bookings because of configuration of [[Custom_Features#Limit_Bookings|Limit bookings]]
plugin for period of time. Returns empty array if plugin not available.
+
Custom Feature for period of time. Returns empty array if Custom Feature not available.
      Line 553: Line 553:  
* '''unit_group_id''' an integer. Use it to get bookings assigned for certain service provider.
 
* '''unit_group_id''' an integer. Use it to get bookings assigned for certain service provider.
 
* '''event_id''' an integer. Use it to  get bookings only for certain service.
 
* '''event_id''' an integer. Use it to  get bookings only for certain service.
* '''is_confirmed''' 1 or 0. If [[Plugins#Approve booking|Approve booking]] plugin enabled then method will return confirmed bookings with approve status 'new'.
+
* '''is_confirmed''' 1 or 0. If [[Custom_Features#Approve_Bookings|Approve booking]] Custom Feature enabled then method will return confirmed bookings with approve status 'new'.
 
* '''client_id''' an integer. Use it to get bookings only for certain client.
 
* '''client_id''' an integer. Use it to get bookings only for certain client.
 
* '''order''' string either 'record_date', 'date_start' or 'date_start_asc'. By default used 'date_start' value.
 
* '''order''' string either 'record_date', 'date_start' or 'date_start_asc'. By default used 'date_start' value.
* '''booking_type''' a string. Value of this field depends on Approve booking plugin status.
+
* '''booking_type''' a string. Value of this field depends on Approve booking Custom Feature status.
*: If plugin not active:
+
*: If Custom Feature not active:
 
** '''all''' for all bookings (default value)
 
** '''all''' for all bookings (default value)
 
** '''cancelled''' alias to 'is_confirmed' equal to 0
 
** '''cancelled''' alias to 'is_confirmed' equal to 0
 
** '''non_cancelled''' alias to 'is_confirmed' equal to 1
 
** '''non_cancelled''' alias to 'is_confirmed' equal to 1
*: If plugin active:
+
*: If Custom Feature active:
 
** '''all''' for all bookings (default value)
 
** '''all''' for all bookings (default value)
 
** '''cancelled''' returns bookings with 'is_confirmed' field equals to 0 and approve booking status equals to 'cancelled' (or booking does not have any approve status)
 
** '''cancelled''' returns bookings with 'is_confirmed' field equals to 0 and approve booking status equals to 'cancelled' (or booking does not have any approve status)
Line 604: Line 604:  
Returns Array.
 
Returns Array.
   −
Returns company categories list if [[Plugins#Service categories|Service categories plugin]] is activated. Returns
+
Returns company categories list if [[Custom_Features#Service_Categories|Service Categories Custom Feature]] is activated. Returns
an error with code -32001 if plugin is not activated. Use <code>[[#isPluginActivated|isPluginActivated('event_category')]]</code>
+
an error with code -32001 if Custom Feature is not activated. Use <code>[[#isPluginActivated|isPluginActivated('event_category')]]</code>
API method to check if plugin activated.
+
API method to check if Custom Feature activated.
      Line 882: Line 882:  
Returns a list of objects represented a time intervals marked as busy in Google Calendar. Each object of result
 
Returns a list of objects represented a time intervals marked as busy in Google Calendar. Each object of result
 
contains <code>from</code> and <code>to</code> properties with datetime string as value. This method only actual if
 
contains <code>from</code> and <code>to</code> properties with datetime string as value. This method only actual if
[Plugins#Google calendar sync plugin|Google calendar sync plugin] enabled. If plugin not enabled an empty list will
+
[Custom_Features#Google_Calendar_Sync|Google calendar sync Custom Feature] enabled. If Custom Feature not enabled an empty list will
 
be returned. You should call <code>[[#isPluginActivated|isPluginActivated('google_calendar_export')]]</code> to
 
be returned. You should call <code>[[#isPluginActivated|isPluginActivated('google_calendar_export')]]</code> to
check status of the plugin. Each object of result contains <code>from</code> and <code>to</code> properties with
+
check status of the Custom Feature. Each object of result contains <code>from</code> and <code>to</code> properties with
 
datetime string as value. Please note that this method may return not actual data because data synchronization
 
datetime string as value. Please note that this method may return not actual data because data synchronization
 
between server and Google Calendar may take some time and synchronized data are cached for 15 minutes.Example:
 
between server and Google Calendar may take some time and synchronized data are cached for 15 minutes.Example:
Line 936: Line 936:  
Returns Array.
 
Returns Array.
   −
Returns available locations for company if plugin [[Plugins#Unit location|Unit location plugin]] is activated. Return
+
Returns available locations for company if Custom Feature [[Custom_Features#Unit_Location|Unit location Custom Feature]] is activated. Return
an error with code -32001 if plugin is not activated. Use <code>[[#isPluginActivated|isPluginActivated('location')]]</code>
+
an error with code -32001 if Custom Feature is not activated. Use <code>[[#isPluginActivated|isPluginActivated('location')]]</code>
API method to check if plugin activated.
+
API method to check if Custom Feature activated.
    
This method accepts two boolean flags as parameters. If '''isPublic''' flag is '''true''' then method returns only
 
This method accepts two boolean flags as parameters. If '''isPublic''' flag is '''true''' then method returns only
Line 953: Line 953:  
Returns Array.
 
Returns Array.
   −
Returns a list of all plugins associated with company with status.
+
Returns a list of all Custom Features associated with company with status.
      Line 970: Line 970:  
Returns an object with detailed information about promotion by promotion code. You can get promotion code
 
Returns an object with detailed information about promotion by promotion code. You can get promotion code
 
using <code>[[Catalogue#getPromotionList|getPromotionList]]</code> API method. If promotion record with specified
 
using <code>[[Catalogue#getPromotionList|getPromotionList]]</code> API method. If promotion record with specified
code not found then method returns an empty array (an empty object). If [[Plugins#Simply Smart Promotions|Simply Smart Promotions plugin]]
+
code not found then method returns an empty array (an empty object). If [[Custom_Features#Simply_Smart_Promotions|Simply Smart Promotions Custom Feature]]
not enabled then method returns an error with code -32001 (Plugin is not activated). Use
+
not enabled then method returns an error with code -32001 (Custom Feature is not activated). Use
<code>[[#isPluginActivated|isPluginActivated('promo')]]</code> API method call to check if plugin enabled.See [[#getPromotionList response|example]] of <code>getPromotionList</code> API method response. Please note that
+
<code>[[#isPluginActivated|isPluginActivated('promo')]]</code> API method call to check if Custom Feature enabled.See [[#getPromotionList response|example]] of <code>getPromotionList</code> API method response. Please note that
 
response contains a list of services for wich promotion discount can be applied (<code>service_ids</code> key).
 
response contains a list of services for wich promotion discount can be applied (<code>service_ids</code> key).
   Line 988: Line 988:  
Returns Array.
 
Returns Array.
   −
Return plugin status true if status active, else false. See [[#Plugin's identifiers|list of available plugin's names]].
+
Return Custom Feature status true if status active, else false. See [[#Plugin's identifiers|list of available plugin's names]].
      Line 1,083: Line 1,083:  
is an array of two objects. Both objects contains list of time slots for type <code>reserved_time</code> and type
 
is an array of two objects. Both objects contains list of time slots for type <code>reserved_time</code> and type
 
<code>not_worked_time</code>. <code>reserved_time</code> type represents time slots working time but already booked
 
<code>not_worked_time</code>. <code>reserved_time</code> type represents time slots working time but already booked
by clients. Nobody knows what kind of data represented by <code>not_worked_time</code> type. Please don't use it.If [[Plugins#Google calendar sync plugin|Google calendar sync plugin]] enabled then object with
+
by clients. Nobody knows what kind of data represented by <code>not_worked_time</code> type. Please don't use it.If [[Custom_Features#Google_Calendar_Sync|Google calendar sync Custom Feature]] enabled then object with
 
<code>reserved_time</code> type will contain not empty list of time slots marked as busy in Google calendar. Call
 
<code>reserved_time</code> type will contain not empty list of time slots marked as busy in Google calendar. Call
 
<code>[[#isPluginActivated|isPluginActivated('google_calendar_export')]]</code> API method to check if Google
 
<code>[[#isPluginActivated|isPluginActivated('google_calendar_export')]]</code> API method to check if Google
calendar sync plugin activated.
+
calendar sync Custom Feature activated.
      Line 1,167: Line 1,167:  
Eg.: <code>{'2014-05-14': ['09:00:00', ...], ...}</code>
 
Eg.: <code>{'2014-05-14': ['09:00:00', ...], ...}</code>
   −
If locations plugin activated for company you should pass a list as $unitID parameter for filter results with
+
If locations Custom Feature activated for company you should pass a list as $unitID parameter for filter results with
units available only for selected location. See [[Plugins#Unit_location|Unit location]] plugin description for
+
units available only for selected location. See [[Custom_Features#Unit_Location|Unit location]] Custom Feature description for
 
more details.
 
more details.
   Line 1,181: Line 1,181:  
Returns Array.
 
Returns Array.
   −
Returns list of available statuses or an empty list if [[Plugins#Status|Status plugin]] not enabled.
+
Returns list of available statuses or an empty list if [[/Custom_Features#Status|Status Custom feature]] not enabled.
      Line 1,301: Line 1,301:  
Returns Array.
 
Returns Array.
   −
Returns statistics about page visits if plugin [[Plugins#Visitor Counter|Visitor Counter plugin]] enabled. Returns
+
Returns statistics about page visits if Custom Feature [[Custom_Features#Visitor_Counter|Visitor Counter Custom Feature]] enabled. Returns
an empty list if plugin not enabled. Use <code>[[#isPluginActivated|isPluginActivated('counter')]]</code> API method
+
an empty list if Custom Feature not enabled. Use <code>[[#isPluginActivated|isPluginActivated('counter')]]</code> API method
call to check if plugin enabled. Results can be grouped by 'day', 'week' or 'month'. A time period depends on
+
call to check if Custom Feature enabled. Results can be grouped by 'day', 'week' or 'month'. A time period depends on
 
selected grouping parameter:* for 'day' methods returns statistics for last 31 days
 
selected grouping parameter:* for 'day' methods returns statistics for last 31 days
 
* for 'week' methods returns data last 10 weeks period
 
* for 'week' methods returns data last 10 weeks period
Line 1,390: Line 1,390:  
Returns Array.
 
Returns Array.
   −
Return busy time by unit id by GoogleCalendar plugin if enabled. Please note that this method may return not actual data because data synchronization between server and Google Calendar may take some time and synchronized data are cached for 15 minutes.
+
Return busy time by unit id by GoogleCalendar Custom Feature if enabled. Please note that this method may return not actual data because data synchronization between server and Google Calendar may take some time and synchronized data are cached for 15 minutes.
    
----
 
----
Line 1,428: Line 1,428:  
Returns Boolean.
 
Returns Boolean.
   −
Return plugin status true if status active, else false. <var>$pluginName</var> parameter is a plugin identifier.See [[Plugins|plugins]] page for full plugins description. See [[#Plugin's identifiers|list of available plugin's names]].
+
Return Custom Feature status true if status active, else false. <var>$pluginName</var> parameter is a Custom Feature identifier.See [[Custom_Features|Custom Features]] page for full Custom Features description. See [[#Plugin's identifiers|list of available plugin's names]].
      Line 1,443: Line 1,443:  
Returns Array.
 
Returns Array.
   −
Sets approve booking status to 'approved' if [[Plugins#Approve booking|Approve booking]] plugin enabled and returns
+
Sets approve booking status to 'approved' if [[Custom_Features#Approve_Bookings|Approve booking]] Custom Feature enabled and returns
list of approved booking IDs. Returns false if plugin not enabled. Use <code>[[#isPluginActivated|isPluginActivated('approve_booking')]]</code>
+
list of approved booking IDs. Returns false if Custom Feature not enabled. Use <code>[[#isPluginActivated|isPluginActivated('approve_booking')]]</code>
API method call to check if plugin enabled.
+
API method call to check if Custom Feature enabled.
      Line 1,460: Line 1,460:  
Returns Boolean.
 
Returns Boolean.
   −
Sets approve booking status to 'canceled' if [[Plugins#Approve booking|Approve booking]] plugin enabled and returns
+
Sets approve booking status to 'canceled' if [[Custom_Features#Approve_Bookings|Approve bookings]] Custom Feature enabled and returns
true. Returns false if plugin not enabled. Use <code>[[#isPluginActivated|isPluginActivated('approve_booking')]]</code>
+
true. Returns false if Custom Feature not enabled. Use <code>[[#isPluginActivated|isPluginActivated('approve_booking')]]</code>
API method call to check if plugin enabled.
+
API method call to check if Custom Feature enabled.
      Line 1,474: Line 1,474:  
Returns array.
 
Returns array.
   −
Returns list of objects with information about bookings pending approval if [[Plugins#Approve booking|Approve booking]]
+
Returns list of objects with information about bookings pending approval if [[Custom_Features#Approve_Bookings|Approve bookings]]
plugin enabled. Returns empty list if plugin not enabled. Use <code>[[#isPluginActivated|isPluginActivated('approve_booking')]]</code>
+
Custom Feature enabled. Returns empty list if Custom Feature not enabled. Use <code>[[#isPluginActivated|isPluginActivated('approve_booking')]]</code>
API method call to check if plugin enabled.
+
API method call to check if Custom Feature enabled.
      Line 1,488: Line 1,488:  
Returns Integer.
 
Returns Integer.
   −
Returns count of bookings pending approval if [[Plugins#Approve booking|Approve booking]] plugin enabled. Returns
+
Returns count of bookings pending approval if [[Custom_Features#Approve_Bookings|Approve bookings]] Custom Feature enabled. Returns
0 if plugin not enabled. Use <code>[[#isPluginActivated|isPluginActivated('approve_booking')]]</code> API method
+
0 if Custom Feature not enabled. Use <code>[[#isPluginActivated|isPluginActivated('approve_booking')]]</code> API method
call to check if plugin enabled.
+
call to check if Custom Feature enabled.
      Line 1,523: Line 1,523:     
Sets specified status for booking. Returns an error with code -32020 if logged in user don't have access to edit
 
Sets specified status for booking. Returns an error with code -32020 if logged in user don't have access to edit
bookings. This method does nothing if [[Plugins#Status|Status plugin]] not enabled.
+
bookings. This method does nothing if [[Custom_Features#Status|Status Custom feature]] not enabled.
      Line 1,549: Line 1,549:  
See [[Errors handling]] for details.
 
See [[Errors handling]] for details.
   −
* -32001 Plugin is not activated
+
* -32001 Custom Feature is not activated
 
* -32010 Some required params are missed
 
* -32010 Some required params are missed
 
* -32011 Params is not array
 
* -32011 Params is not array
Line 1,729: Line 1,729:  
* waiting_video
 
* waiting_video
   −
=====Accept payments plugin params=====
+
=====Accept payments Custom Feature params=====
   −
Read more about [[Plugins#Accept payments|Accept payments plugin configuration]].
+
Read more about [[Custom_Features#Accept_Payments|Accept Payments Custom Feature configuration]].
    
* allow_delay_payment
 
* allow_delay_payment
Line 1,762: Line 1,762:  
* liqpay_merchant_pass
 
* liqpay_merchant_pass
   −
=====Term & Conditions plugin params=====
+
=====Term & Conditions Custom Feature params=====
   −
Read more about [[Plugins#Terms and conditions|Terms and conditions plugin]].
+
Read more about [[Custom_Features#Terms_and_Conditions|Terms and Conditions Custom Feature]].
    
* user_license_text
 
* user_license_text
Line 1,771: Line 1,771:  
----
 
----
   −
===Plugin's identifiers===
+
===Custom Features' identifiers===
   −
Plugin identifier is a string constant which represents a plugin in system. These constants used in <code>[[#isPluginActivated|isPluginActivated]]</code> and <code>[[#getPluginStatuses|getPluginStatuses]]</code> API methods.
+
Custom Feature identifier is a string constant which represents a Custom Feature in system. These constants used in <code>[[#isPluginActivated|isPluginActivated]]</code> and <code>[[#getPluginStatuses|getPluginStatuses]]</code> API methods.
    
* advanced_notification
 
* advanced_notification
*:Book Soon notification system plugin
+
*:Book Soon notification system
 
* any_unit
 
* any_unit
*:Any Employee selector plugin
+
*:Any Employee selector
 
* api
 
* api
*:API plugin
+
*:API
 
* approve_booking
 
* approve_booking
*:Approve booking plugin
+
*:Approve booking
 
* back_to_site
 
* back_to_site
*:Take me back home plugin
+
*:Take me back home
 
* contact_widget
 
* contact_widget
*:Contact widget plugin
+
*:Contact widget
 
* counter
 
* counter
*:Visitor Counter plugin
+
*:Visitor Counter
 
* custom_css
 
* custom_css
*:Custom CSS plugin
+
*:Custom CSS
 
* data_security
 
* data_security
*:Clean history plugin
+
*:Clean history
 
* description
 
* description
 
*:HTML description field for events
 
*:HTML description field for events
 
* event_category
 
* event_category
*:Service categories plugin
+
*:Service categories
 
* event_field
 
* event_field
*:Additional fields plugin
+
*:Additional fields
 
* facebookImage
 
* facebookImage
*:Facebook client info plugin
+
*:Facebook client info
 
* financial_dashboard
 
* financial_dashboard
*:Insights plugin
+
*:Insights
 
* google_analytics
 
* google_analytics
*:Google Adwords and analytics plugin
+
*:Google Adwords and analytics
 
* google_calendar_export
 
* google_calendar_export
*:Google calendar sync plugin
+
*:Google calendar sync
 
* group_booking
 
* group_booking
*:Group bookings plugin
+
*:Group bookings
 
* hipaa
 
* hipaa
*:HIPAA plugin
+
*:HIPAA
 
* limit_bookings
 
* limit_bookings
*:Limit bookings plugin
+
*:Limit bookings
 
* location
 
* location
*:Unit location plugin
+
*:Unit location
 
* mobile_app_backend
 
* mobile_app_backend
*:Mobile application plugin
+
*:Mobile application
 
* multiple_booking
 
* multiple_booking
*:Multiple bookings plugin
+
*:Multiple bookings
 
* news
 
* news
*:News plugin
+
*:News
 
* paid_events
 
* paid_events
*:Accept payments plugin
+
*:Accept payments
 
* promo
 
* promo
*:Simply Smart Promotions plugin
+
*:Simply Smart Promotions
 
* recap
 
* recap
*:Daily report plugin
+
*:Daily report
 
* secure
 
* secure
*:SSL plugin
+
*:SSL
 
* status
 
* status
*:Status plugin
+
*:Status
 
* unit_colors
 
* unit_colors
*:Providers color coding plugin
+
*:Providers color coding
 
* user_license
 
* user_license
*:Terms and conditions plugin
+
*:Terms and conditions
 
* cancelation_policy
 
* cancelation_policy
 
*:Cancellation Policy
 
*:Cancellation Policy
   −
See [[Plugins]] page for description for each plugin.
+
See [[Custom_Features|Custom Features]] page for description for each Custom Feature.
    
----
 
----
Line 1,915: Line 1,915:  
   }
 
   }
   −
Location field is present in response only if [[Plugins#Unit location|Unit location plugin]] is enabled. Otherwise this field will be an empty array. If locations plugin is enabled but booking doesn't have any locations this fields also will be an empty array.
+
Location field is present in response only if [[Custom_Features#Unit_Location|Unit location Custom Feature]] is enabled. Otherwise this field will be an empty array. If locations Custom Feature is enabled but booking doesn't have any locations this fields also will be an empty array.
   −
Status field is present in response only if [[Plugins#Status|Status plugin]] is enabled. Otherwise this field will be an empty array. If plugin enabled but booking doesn't have any statues specified the default status returned.
+
Status field is present in response only if [[Custom_Features#Status|Status Custom Feature]] is enabled. Otherwise this field will be an empty array. If Custom Feature enabled but booking doesn't have any statues specified the default status returned.
   −
Price field is present in response only if [[Plugins#Accept payments|Accept payments plugin]] is enabled. Otherwise this field will be an empty array. This field contains an empty array if plugin is enabled but booking was created for a free service.
+
Price field is present in response only if [[Custom_Features#Accept_Payments|Accept payments Custom Feature]] is enabled. Otherwise this field will be an empty array. This field contains an empty array if Custom Feature is enabled but booking was created for a free service.
   −
Promo field is present in response only if [[Plugins#Simply Smart Promotions|Simply Smart Promotions plugin]] is enabled. Otherwise this field will be an empty array. This field contains false if plugin is enabled but booking was created without any promo codes.
+
Promo field is present in response only if [[Custom_Features#Simply_Smart_Promotions|Simply Smart Promotions Custom Feature]] is enabled. Otherwise this field will be an empty array. This field contains false if Custom Feature is enabled but booking was created without any promo codes.
   −
<code>additional_fields</code> field is present in response only if [[Plugins#Additional fields|Additional fields plugin]] is enabled. Otherwise this field will be an empty array. This field contains an empty array if plugin is enabled but booking was created for a service with no additional fields.
+
<code>additional_fields</code> field is present in response only if [[Custom_Features#Additional_Fields|Additional fields Custom Feature]] is enabled. Otherwise this field will be an empty array. This field contains an empty array if Custom Feature is enabled but booking was created for a service with no additional fields.
    
----
 
----