@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api OnSched Setup API
@base https://sandbox-api.onsched.com/
@version v1
@auth OAuth2
@endpoints 139
@hint download_for_search
@toc setup(139)

@endpoint GET /setup/v1/appointments
@desc List Appointments
@optional {locationId: str # id of business location, defaults to primary business location, email: str # Filter appointments by email address, lastname: str # Filter appointments by lastname or part of, serviceId: str # Filter appointments by service, calendarId: str # Filter appointments by calendar, resourceId: str # Filter appointments by resource, customerId: str # Filter appointments by customer, serviceAllocationId: str # Filter appointments by service allocation, startDate: str(date-time) # Format YYYY-MM-DD: Filter appointments by on/after startDate, endDate: str(date-time) # Format YYYY-MM-DD: Filter appointments on/before endDate, status: str # Filter appointments by status: IN, BK, CN, RE, RS, bookedBy: str # Filter appointments by user email who booked, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Success

@endpoint GET /setup/v1/appointments/{id}
@desc Get Appointment
@required {id: str # id of appointment object}
@returns(200) {object: str?, id: str?, locationId: str?, businessName: str?, calendarId: str?, serviceId: str?, serviceName: str?, serviceImageUrl: str?, resourceId: str?, resourceName: str?, resourceGroupId: str?, resourceGroupName: str?, resourceImageUrl: str?, resourceEmail: str?, customerId: str?, serviceAllocationId: str?, rescheduledId: str?, createDate: str?, startDateTime: str?, endDateTime: str?, dateInternational: str?, date: str?, time: int(int32), duration: int(int32), timezone: int(int32)?, timezoneId: str?, timezoneIana: str?, ipAddress: str?, status: str?, confirmationNumber: str?, downloadIcsUrl: str?, bookedBy: str?, onlineBooking: bool?, confirmed: bool, email: str?, name: str?, lastname: str?, firstname: str?, phone: str?, phoneType: str?, phoneExt: str?, customerMessage: str?, notes: str?, groupSize: int(int32)?, lastModifiedOn: str?, lastModifiedBy: str?, emailConfirmationSent: str?, emailReminderSent: str?, smsConfirmationSent: str?, smsReminderSent: str?, location: str?, latitude: str?, longitude: str?, stripeChargeId: str?, stripeRefundId: str?, paymentStatus: int(int32), resources: [map]?, customers: [map]?, customFields: map?, auditTrail: [map]?} # Success

@endpoint PUT /setup/v1/appointments/{id}/reassign/resource/{resourceId}
@desc Reassign Appointment
@required {id: str # id of appointment object, resourceId: str # id of target resource}
@returns(200) {object: str?, id: str?, locationId: str?, businessName: str?, calendarId: str?, serviceId: str?, serviceName: str?, serviceImageUrl: str?, resourceId: str?, resourceName: str?, resourceGroupId: str?, resourceGroupName: str?, resourceImageUrl: str?, resourceEmail: str?, customerId: str?, serviceAllocationId: str?, rescheduledId: str?, createDate: str?, startDateTime: str?, endDateTime: str?, dateInternational: str?, date: str?, time: int(int32), duration: int(int32), timezone: int(int32)?, timezoneId: str?, timezoneIana: str?, ipAddress: str?, status: str?, confirmationNumber: str?, downloadIcsUrl: str?, bookedBy: str?, onlineBooking: bool?, confirmed: bool, email: str?, name: str?, lastname: str?, firstname: str?, phone: str?, phoneType: str?, phoneExt: str?, customerMessage: str?, notes: str?, groupSize: int(int32)?, lastModifiedOn: str?, lastModifiedBy: str?, emailConfirmationSent: str?, emailReminderSent: str?, smsConfirmationSent: str?, smsReminderSent: str?, location: str?, latitude: str?, longitude: str?, stripeChargeId: str?, stripeRefundId: str?, paymentStatus: int(int32), resources: [map]?, customers: [map]?, customFields: map?, auditTrail: [map]?} # Success

@endpoint GET /setup/v1/businessusers
@desc List Users
@optional {locationId: str # id of business location, defaults to primary business location, email: str # Filter by email address, role: str # Filter user role, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Success

@endpoint POST /setup/v1/businessusers
@desc Create User
@optional {locationId: str, name: str, email: str, resourceId: str, role: str, sendRegistrationInvite: bool}
@returns(200) {object: str?, id: str?, accountId: str(uuid)?, locationId: str?, businessName: str?, email: str?, role: str?, name: str?, identityAccount: bool, resourceId: str?, resourceName: str?, permissions: [map]?} # Success

@endpoint GET /setup/v1/businessusers/{id}
@desc Get User
@required {id: str # id of businessUser object}
@returns(200) {object: str?, id: str?, accountId: str(uuid)?, locationId: str?, businessName: str?, email: str?, role: str?, name: str?, identityAccount: bool, resourceId: str?, resourceName: str?, permissions: [map]?} # Success

@endpoint PUT /setup/v1/businessusers/{id}
@desc Update User
@required {id: str}
@optional {name: str, email: str, resourceId: str, role: str, sendRegistrationInvite: bool}
@returns(200) {object: str?, id: str?, accountId: str(uuid)?, locationId: str?, businessName: str?, email: str?, role: str?, name: str?, identityAccount: bool, resourceId: str?, resourceName: str?, permissions: [map]?} # Success

@endpoint DELETE /setup/v1/businessusers/{id}
@desc Delete User
@required {id: str}
@returns(200) Success

@endpoint GET /setup/v1/businessusers/permissions
@desc List User Permissions
@optional {role: str # Filter permissions by role, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Success

@endpoint GET /setup/v1/businessusers/{email}/companies
@desc List User Companies
@required {email: str # Email of business user}
@optional {searchText: str # All or partial company name, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?, email: str?} # Success

@endpoint GET /setup/v1/calendars
@desc List Calendars
@optional {locationId: str # id of business location, defaults to primary business location, deleted: bool # Filter by deleted status, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Success

@endpoint POST /setup/v1/calendars
@desc DEPRECATING: Create
@optional {locationId: str, name: str, type: str, interval: int(int32), bookingsPerSlot: int(int32), resourceGroupId: str, availability: map{sun: map, mon: map, tue: map, wed: map, thu: map, fri: map, sat: map}}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, type: str?, primary: bool, interval: int(int32), bookingsPerSlot: int(int32), resourceGroupId: str?, deletedStatus: bool, deletedTime: str(date-time)?, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}} # Success

@endpoint GET /setup/v1/calendars/{id}
@desc Get Calendar
@required {id: str # id of calendar object}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, type: str?, primary: bool, interval: int(int32), bookingsPerSlot: int(int32), resourceGroupId: str?, deletedStatus: bool, deletedTime: str(date-time)?, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}} # Success

@endpoint PUT /setup/v1/calendars/{id}
@desc Update Calendar
@required {id: str # id of calendar object}
@optional {locationId: str, name: str, type: str, interval: int(int32), bookingsPerSlot: int(int32), resourceGroupId: str, availability: map{sun: map, mon: map, tue: map, wed: map, thu: map, fri: map, sat: map}}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, type: str?, primary: bool, interval: int(int32), bookingsPerSlot: int(int32), resourceGroupId: str?, deletedStatus: bool, deletedTime: str(date-time)?, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}} # Success

@endpoint DELETE /setup/v1/calendars/{id}
@desc Delete Calendar
@required {id: str # id of calendar object}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, type: str?, primary: bool, interval: int(int32), bookingsPerSlot: int(int32), resourceGroupId: str?, deletedStatus: bool, deletedTime: str(date-time)?, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}} # Success

@endpoint PUT /setup/v1/calendars/{id}/recover
@desc Recover Calendar
@required {id: str # id of calendar object}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, type: str?, primary: bool, interval: int(int32), bookingsPerSlot: int(int32), resourceGroupId: str?, deletedStatus: bool, deletedTime: str(date-time)?, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}} # Success

@endpoint GET /setup/v1/calendars/{id}/services
@desc List Calendar Services
@required {id: str # id of calendar object}
@optional {offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Success

@endpoint GET /setup/v1/calendars/{id}/blocks
@desc List Calendar Blocks
@required {id: str # id of calendar to list blocks}
@optional {offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Valid response
@errors {400: Missing or invalid values in the request, 401: Authorization error., 404: Resource was not found}

@endpoint GET /setup/v1/calendars/blocks/{id}
@desc Get Calendar Block
@required {id: str # id of calendarBlock object}
@returns(200) {object: str?, id: str?, locationId: str?, calendarId: str?, startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint POST /setup/v1/calendars/{id}/block
@desc Create Calendar Block
@required {id: str # id of calendar object}
@optional {startDate: str(date), endDate: str(date), startTime: int(int32), endTime: int(int32), reason: str, repeats: bool, repeat: map{frequency: str, interval: int(int32), weekdays: str, monthDay: int(int32), monthType: str}}
@returns(200) {object: str?, id: int(int32), businessId: int(int32), resourceId: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint PUT /setup/v1/calendars/block/{id}
@desc Update Calendar Block
@required {id: str # id of calendarBlock object}
@optional {startDate: str(date), endDate: str(date), startTime: int(int32), endTime: int(int32), reason: str, repeats: bool, repeat: map{frequency: str, interval: int(int32), weekdays: str, monthDay: int(int32), monthType: str}}
@returns(200) {object: str?, id: str?, locationId: str?, calendarId: str?, startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint DELETE /setup/v1/calendars/block/{id}
@desc Delete Calendar Block
@required {id: str # id of a calendarBlock object}
@returns(200) {object: str?, id: str?, locationId: str?, calendarId: str?, startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint GET /setup/v1/companies
@desc Get Company
@returns(200) {object: str?, id: str?, name: str?, registrationDate: str?, registrationEmail: str?, deletedStatus: bool, deletedTime: str?, addressLine1: str?, addressLine2: str?, city: str?, state: str?, postalCode: str?, country: str?, phone: str?, fax: str?, email: str?, website: str?, timezoneId: str?, timezoneName: str?, notificationFromEmailAddress: str?, notificationFromName: str?, clientId: str?, clientSecret: str?, bookingWebhookUrl: str?, customerWebhookUrl: str?, reminderWebhookUrl: str?, resourceWebhookUrl: str?, webhookSignatureHash: str?, disableEmailAndSmsNotifications: bool} # Success

@endpoint PUT /setup/v1/companies
@desc Update Company
@optional {name: str, registrationEmail: str, addressLine1: str, addressLine2: str, city: str, state: str, postalCode: str, country: str, phone: str, fax: str, email: str, website: str, timezoneName: str, notificationFromEmailAddress: str, notificationFromName: str, bookingWebhookUrl: str, customerWebhookUrl: str, reminderWebhookUrl: str, resourceWebhookUrl: str, webhookSignatureHash: str, disableEmailAndSmsNotifications: bool}
@returns(200) {object: str?, id: str?, name: str?, registrationDate: str?, registrationEmail: str?, deletedStatus: bool, deletedTime: str?, addressLine1: str?, addressLine2: str?, city: str?, state: str?, postalCode: str?, country: str?, phone: str?, fax: str?, email: str?, website: str?, timezoneId: str?, timezoneName: str?, notificationFromEmailAddress: str?, notificationFromName: str?, clientId: str?, clientSecret: str?, bookingWebhookUrl: str?, customerWebhookUrl: str?, reminderWebhookUrl: str?, resourceWebhookUrl: str?, webhookSignatureHash: str?, disableEmailAndSmsNotifications: bool} # Success

@endpoint POST /setup/v1/companies
@desc Create Company
@optional {name: str, registrationEmail: str, addressLine1: str, addressLine2: str, city: str, state: str, postalCode: str, country: str, phone: str, fax: str, email: str, website: str, timezoneName: str, notificationFromEmailAddress: str, notificationFromName: str, bookingWebhookUrl: str, customerWebhookUrl: str, reminderWebhookUrl: str, resourceWebhookUrl: str, webhookSignatureHash: str, disableEmailAndSmsNotifications: bool}
@returns(200) {object: str?, id: str?, name: str?, registrationDate: str?, registrationEmail: str?, deletedStatus: bool, deletedTime: str?, addressLine1: str?, addressLine2: str?, city: str?, state: str?, postalCode: str?, country: str?, phone: str?, fax: str?, email: str?, website: str?, timezoneId: str?, timezoneName: str?, notificationFromEmailAddress: str?, notificationFromName: str?, clientId: str?, clientSecret: str?, bookingWebhookUrl: str?, customerWebhookUrl: str?, reminderWebhookUrl: str?, resourceWebhookUrl: str?, webhookSignatureHash: str?, disableEmailAndSmsNotifications: bool} # Success

@endpoint GET /setup/v1/companies/domains
@desc List Company Domains
@returns(200) {object: str?, url: str?, data: [map]?} # Success

@endpoint POST /setup/v1/companies/domains
@desc Create Company Domain
@optional {domain: str}
@returns(200) {object: str?, id: str?, domain: str?} # Success

@endpoint GET /setup/v1/companies/domains/{id}
@desc Get Company Domain
@required {id: str # id of companyDomain object}
@returns(200) {object: str?, id: str?, domain: str?} # Success

@endpoint PUT /setup/v1/companies/domains/{id}
@desc Update Company Domain
@required {id: str # id of companyDomain object}
@optional {domain: str}
@returns(200) {object: str?, id: str?, domain: str?} # Success

@endpoint DELETE /setup/v1/companies/domains/{id}
@desc Delete Company Domain
@required {id: str # id of companyDomain object}
@returns(200) {object: str?, id: str?, domain: str?} # Success

@endpoint GET /setup/v1/companies/regions
@desc List Regions
@optional {offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # region object's
@errors {400: Missing or invalid values in the request, 401: Authorization error., 404: Resource was not found}

@endpoint POST /setup/v1/companies/regions
@desc Create Region
@optional {name: str}
@returns(200) {object: str?, id: str?, name: str?} # Success

@endpoint GET /setup/v1/companies/regions/{id}
@desc Get Region
@required {id: str # id of a region object}
@returns(200) {object: str?, id: str?, name: str?} # Success

@endpoint PUT /setup/v1/companies/regions/{id}
@desc Update Region
@required {id: str # id of Region}
@optional {name: str}
@returns(200) {object: str?, id: str?, name: str?} # Success

@endpoint DELETE /setup/v1/companies/regions/{id}
@desc Delete Region
@required {id: str # id of Region}
@returns(200) {object: str?, id: str?, name: str?} # Success

@endpoint GET /setup/v1/companies/email/templates
@desc List Email Templates
@returns(200) {object: str?, url: str?, total: int(int32), data: [map]?} # Success

@endpoint GET /setup/v1/companies/email/templates/{templateName}
@desc Get Email Template
@required {templateName: str # Email template name}
@returns(200) {content: str?, contentType: str?, statusCode: int(int32)?} # Success

@endpoint GET /setup/v1/companies/email/templates/master
@desc Get Master Template Settings
@returns(200) {version: str?, headerLogoHeight: str?, footerLogoHeight: str?, headerLogoPadding: str?, footerLogoPadding: str?, emailBackgroundColor: str?, emailColor: str?, emailLinkColor: str?, panelBackgroundColor: str?, panelColor: str?, panelLinkColor: str?, contentBackgroundColor: str?, contentColor: str?, contentLinkColor: str?, showHeaderLogo: bool, showFooterLogo: bool, footerFontSize: str?, privacyPolicyLink: str?, showHeaderPanel: bool, showFooterPanel: bool, showContentPanel: bool, centerEmailContent: bool, centerEmailContentPanel: bool, centerEmailFooter: bool, footerPanelEmailContact: bool, footerPanelPhoneContact: bool, footerPanelWebsiteContact: bool} # Success

@endpoint POST /setup/v1/companies/email/templates/master
@desc Create Master Template Settings
@optional {headerLogoHeight: str, footerLogoHeight: str, headerLogoPadding: str, footerLogoPadding: str, emailBackgroundColor: str, emailColor: str, emailLinkColor: str, panelBackgroundColor: str, panelColor: str, panelLinkColor: str, contentBackgroundColor: str, contentColor: str, contentLinkColor: str, showHeaderLogo: bool, showFooterLogo: bool, footerFontSize: str, privacyPolicyLink: str, showHeaderPanel: bool, showFooterPanel: bool, showContentPanel: bool, centerEmailContent: bool, centerEmailContentPanel: bool, centerEmailFooter: bool, footerPanelEmailContact: bool, footerPanelPhoneContact: bool, footerPanelWebsiteContact: bool}
@returns(200) {version: str?, headerLogoHeight: str?, footerLogoHeight: str?, headerLogoPadding: str?, footerLogoPadding: str?, emailBackgroundColor: str?, emailColor: str?, emailLinkColor: str?, panelBackgroundColor: str?, panelColor: str?, panelLinkColor: str?, contentBackgroundColor: str?, contentColor: str?, contentLinkColor: str?, showHeaderLogo: bool, showFooterLogo: bool, footerFontSize: str?, privacyPolicyLink: str?, showHeaderPanel: bool, showFooterPanel: bool, showContentPanel: bool, centerEmailContent: bool, centerEmailContentPanel: bool, centerEmailFooter: bool, footerPanelEmailContact: bool, footerPanelPhoneContact: bool, footerPanelWebsiteContact: bool} # Success

@endpoint DELETE /setup/v1/companies/email/templates/master
@desc Delete Master Template Settings
@returns(200) {version: str?, headerLogoHeight: str?, footerLogoHeight: str?, headerLogoPadding: str?, footerLogoPadding: str?, emailBackgroundColor: str?, emailColor: str?, emailLinkColor: str?, panelBackgroundColor: str?, panelColor: str?, panelLinkColor: str?, contentBackgroundColor: str?, contentColor: str?, contentLinkColor: str?, showHeaderLogo: bool, showFooterLogo: bool, footerFontSize: str?, privacyPolicyLink: str?, showHeaderPanel: bool, showFooterPanel: bool, showContentPanel: bool, centerEmailContent: bool, centerEmailContentPanel: bool, centerEmailFooter: bool, footerPanelEmailContact: bool, footerPanelPhoneContact: bool, footerPanelWebsiteContact: bool} # Success

@endpoint GET /setup/v1/companies/timezones/{date}
@desc List Time Zones
@required {date: str(date-time) # "YYYY-MM-DD: Date for timezone info"}
@returns(200) {object: str?, regions: [str]?, timezones: [map]?} # Success

@endpoint GET /setup/v1/customers
@desc List Customers
@optional {locationId: str # id of business location, defaults to primary business location, groupId: str # Filter by groupId, email: str # Filter by email address., lastname: str # Search by lastname., deleted: bool # Filter by deleted status., offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Success

@endpoint GET /setup/v1/customers/{id}
@desc Get Customer
@required {id: str # id of customer object}
@returns(200) {object: str?, id: str?, locationId: str?, businessName: str?, email: str?, name: str?, lastname: str?, firstname: str?, companyName: str?, gender: str?, birthdate: str?, lastVisitDate: str?, groupId: str?, resourceId: str?, createdOn: str?, createdBy: str?, registeredBy: str?, verifiedBy: str?, modifiedBy: str?, modifiedOn: str?, verificationDate: str?, registrationDate: str?, emailInfo: bool?, emailPromotion: bool?, disabled: bool?, inviteEmailSent: str?, welcomeEmailSent: str?, deletedStatus: bool, deletedTime: str?, notificationType: str?, subscriptionId: str?, latitude: str?, longitude: str?, stripeCustomerId: str?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, customFields: map?} # Success

@endpoint GET /setup/v1/customers/{id}/privacy
@desc Get Customer Data
@required {id: str # id of customer object}
@returns(200) {customer: map{object: str?, id: str?, locationId: str?, businessName: str?, email: str?, name: str?, lastname: str?, firstname: str?, companyName: str?, gender: str?, birthdate: str?, lastVisitDate: str?, groupId: str?, resourceId: str?, createdOn: str?, createdBy: str?, registeredBy: str?, verifiedBy: str?, modifiedBy: str?, modifiedOn: str?, verificationDate: str?, registrationDate: str?, emailInfo: bool?, emailPromotion: bool?, disabled: bool?, inviteEmailSent: str?, welcomeEmailSent: str?, deletedStatus: bool, deletedTime: str?, notificationType: str?, subscriptionId: str?, latitude: str?, longitude: str?, stripeCustomerId: str?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, customFields: map?}, appointments: [map]?} # Success

@endpoint GET /setup/v1/locations
@desc List Locations
@optional {name: str # Location name(full or partial) to filter on, serviceId: str # Find locations that offer this service, friendlyId: str # friendlyId of location, deleted: bool # Filter locations on deleted status, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Success

@endpoint POST /setup/v1/locations
@desc Create Location
@optional {name: str, adminEmail: str # Field is required., adminName: str # This field is no longer required and has been deprecated., timezoneName: str # Field is required. It is in Iana format. e.g. America/New_York. Use moment.js in your client for ease of timezone detection and selection, friendlyId: str # Use the friendlyId as an alternative to the assigned locationId Choose something easy and meaningful. Must be unique within your company. FriendlyId's are limited to maximum of 64 characters., phone: str # GroupSize Limits the number of people that can come along on a single appointment, fax: str, website: str, email: str, regionId: str, address: map{addressLine1: str, addressLine2: str, city: str, state: str, country: str, postalCode: str}, businessHours: map{mon: map, tue: map, wed: map, thu: map, fri: map, sat: map, sun: map}, settings: map{bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), enableWorldTimezones: bool, bookingTimerMins: int(int32)}, defaults: map{enableUtcTimezone: bool, customerState: bool, customerCity: bool, autoUpdateCustomer: bool, businessNotification: bool, emailInfo: bool}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint GET /setup/v1/locations/{id}
@desc Get Location
@required {id: str # id of business location, defaults to primary business location}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint PUT /setup/v1/locations/{id}
@desc Update Location
@required {id: str}
@optional {removeRegion: bool, name: str, adminEmail: str, adminName: str, timezoneName: str, friendlyId: str, phone: str, fax: str, website: str, email: str, regionId: str, address: map{addressLine1: str, addressLine2: str, city: str, state: str, country: str, postalCode: str}, businessHours: map{mon: map, tue: map, wed: map, thu: map, fri: map, sat: map, sun: map}, settings: map{bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), enableWorldTimezones: bool, bookingTimerMins: int(int32)}, defaults: map{enableUtcTimezone: bool, customerState: bool, customerCity: bool, autoUpdateCustomer: bool, businessNotification: bool, emailInfo: bool}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint DELETE /setup/v1/locations/{id}
@desc Delete Location
@required {id: str # id of business location, defaults to primary business location}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint POST /setup/v1/locations/bulk
@desc Create Locations Bulk
@optional {locations: [map{name: str, adminEmail: str, adminName: str, timezoneName: str, friendlyId: str, phone: str, fax: str, website: str, email: str, regionId: str, address: map, businessHours: map, settings: map, defaults: map, appointmentReminders: map}]}
@returns(200) Success

@endpoint PUT /setup/v1/locations/{id}/settings/scope/{settingsScope}
@desc Update Location Scope
@required {id: str, settingsScope: str}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint PUT /setup/v1/locations/{id}/holidays/{holidayId}/{closed}
@desc Update Location Holidays
@required {id: str, holidayId: str, closed: bool}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint PUT /setup/v1/locations/{id}/recover
@desc Recover Location
@required {id: str}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint GET /setup/v1/locations/{id}/services
@desc List Location Linked Services
@required {id: str # id of business location, defaults to primary business location}
@optional {offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # location service objects
@errors {400: Missing or invalid values in the request, 401: Authorization error, 404: Location was not found}

@endpoint POST /setup/v1/locations/{id}/services
@desc Create Linked Service
@required {id: str # id of business location, defaults to primary business location}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint DELETE /setup/v1/locations/{id}/services
@desc Delete Linked Services
@required {id: str # id of business location, defaults to primary business location}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint GET /setup/v1/locations/services/{id}
@desc Get Linked Service
@required {id: str # id of locationService object}
@returns(200) {object: str?, id: int(int32), serviceId: int(int32), serviceName: str?} # location service objects
@errors {400: Missing or invalid values in the request, 401: Authorization error., 404: Location was not found}

@endpoint DELETE /setup/v1/locations/services/{id}
@desc Unlink Service
@required {id: str # id of locationService object}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint POST /setup/v1/locations/{id}/uploadimage
@desc Upload Location Image
@required {id: str # id of business location, defaults to primary business location}
@optional {imageFileName: str, imageFileData: str}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint DELETE /setup/v1/locations/{id}/deleteimage
@desc Delete Location Image
@required {id: str # id of business location, defaults to primary business location}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint DELETE /setup/v1/locations/{id}/deleteallimages
@desc Delete All Location Images
@required {id: str}
@optional {uppercase: bool}
@returns(200) Success

@endpoint GET /setup/v1/locations/{id}/email/templates
@desc List Email Templates
@required {id: str}
@returns(200) {object: str?, url: str?, total: int(int32), data: [map]?} # Success

@endpoint POST /setup/v1/locations/{id}/email/templates
@desc Create Custom Template
@required {id: str # id of business location, defaults to primary business location}
@optional {templateName: str, templateContent: str}
@returns(200) {content: str?, contentType: str?, statusCode: int(int32)?} # Success

@endpoint GET /setup/v1/locations/{id}/email/templates/{templateName}
@desc Get Email Template
@required {id: str # id of business location, templateName: str # name of the email template}
@returns(200) {content: str?, contentType: str?, statusCode: int(int32)?} # Success

@endpoint DELETE /setup/v1/locations/{id}/email/templates/{templateName}
@desc Delete Custom Template
@required {id: str # id of business location, defaults to primary business location, templateName: str # Name of the email template}
@returns(200) {content: str?, contentType: str?, statusCode: int(int32)?} # Success

@endpoint GET /setup/v1/locations/{id}/email/templates/master
@desc Get Master Template Settings
@required {id: str # id of business location, defaults to primary business location}
@returns(200) {version: str?, headerLogoHeight: str?, footerLogoHeight: str?, headerLogoPadding: str?, footerLogoPadding: str?, emailBackgroundColor: str?, emailColor: str?, emailLinkColor: str?, panelBackgroundColor: str?, panelColor: str?, panelLinkColor: str?, contentBackgroundColor: str?, contentColor: str?, contentLinkColor: str?, showHeaderLogo: bool, showFooterLogo: bool, footerFontSize: str?, privacyPolicyLink: str?, showHeaderPanel: bool, showFooterPanel: bool, showContentPanel: bool, centerEmailContent: bool, centerEmailContentPanel: bool, centerEmailFooter: bool, footerPanelEmailContact: bool, footerPanelPhoneContact: bool, footerPanelWebsiteContact: bool} # Success

@endpoint POST /setup/v1/locations/{id}/email/templates/master
@desc Create Master Template Settings
@required {id: str # id of business location, defaults to primary business location}
@optional {headerLogoHeight: str, footerLogoHeight: str, headerLogoPadding: str, footerLogoPadding: str, emailBackgroundColor: str, emailColor: str, emailLinkColor: str, panelBackgroundColor: str, panelColor: str, panelLinkColor: str, contentBackgroundColor: str, contentColor: str, contentLinkColor: str, showHeaderLogo: bool, showFooterLogo: bool, footerFontSize: str, privacyPolicyLink: str, showHeaderPanel: bool, showFooterPanel: bool, showContentPanel: bool, centerEmailContent: bool, centerEmailContentPanel: bool, centerEmailFooter: bool, footerPanelEmailContact: bool, footerPanelPhoneContact: bool, footerPanelWebsiteContact: bool}
@returns(200) {version: str?, headerLogoHeight: str?, footerLogoHeight: str?, headerLogoPadding: str?, footerLogoPadding: str?, emailBackgroundColor: str?, emailColor: str?, emailLinkColor: str?, panelBackgroundColor: str?, panelColor: str?, panelLinkColor: str?, contentBackgroundColor: str?, contentColor: str?, contentLinkColor: str?, showHeaderLogo: bool, showFooterLogo: bool, footerFontSize: str?, privacyPolicyLink: str?, showHeaderPanel: bool, showFooterPanel: bool, showContentPanel: bool, centerEmailContent: bool, centerEmailContentPanel: bool, centerEmailFooter: bool, footerPanelEmailContact: bool, footerPanelPhoneContact: bool, footerPanelWebsiteContact: bool} # Success

@endpoint DELETE /setup/v1/locations/{id}/email/templates/master
@desc Delete Master Template Settings
@required {id: str # id of business location, defaults to primary business location}
@returns(200) {version: str?, headerLogoHeight: str?, footerLogoHeight: str?, headerLogoPadding: str?, footerLogoPadding: str?, emailBackgroundColor: str?, emailColor: str?, emailLinkColor: str?, panelBackgroundColor: str?, panelColor: str?, panelLinkColor: str?, contentBackgroundColor: str?, contentColor: str?, contentLinkColor: str?, showHeaderLogo: bool, showFooterLogo: bool, footerFontSize: str?, privacyPolicyLink: str?, showHeaderPanel: bool, showFooterPanel: bool, showContentPanel: bool, centerEmailContent: bool, centerEmailContentPanel: bool, centerEmailFooter: bool, footerPanelEmailContact: bool, footerPanelPhoneContact: bool, footerPanelWebsiteContact: bool} # Success

@endpoint GET /setup/v1/locations/{id}/google/service/account
@desc Google Service Account Info
@required {id: str # id of business location, defaults to primary business location}
@optional {verify: bool # When true, verifies each Resource in this location with Google Calendar Enabled using the Google API}
@returns(200) {type: str?, project_id: str?, private_key_id: str?, private_key_hash: str?, client_email: str?, client_id: str?, auth_uri: str?, token_uri: str?, auth_provider_x509_cert_url: str?, client_x509_cert_url: str?, verified_with_google: bool, messages: [str]?, errors: [str]?} # Success

@endpoint POST /setup/v1/locations/{id}/google/service/account
@desc Create Google Cal Access
@required {id: str # id of business location, defaults to primary business location}
@optional {type: str, project_id: str, private_key_id: str, private_key: str, client_email: str, client_id: str, auth_uri: str, token_uri: str, auth_provider_x509_cert_url: str, client_x509_cert_url: str}
@returns(200) {type: str?, project_id: str?, private_key_id: str?, private_key: str?, client_email: str?, client_id: str?, auth_uri: str?, token_uri: str?, auth_provider_x509_cert_url: str?, client_x509_cert_url: str?} # Success

@endpoint DELETE /setup/v1/locations/{id}/google/service/account
@desc Delete Google Cal Access
@required {id: str # id of business location, defaults to primary business location}
@returns(200) Success

@endpoint GET /setup/v1/locations/{id}/appointmentreminders
@desc Get Reminders
@required {id: str # id of business location, defaults to primary business location}
@returns(200) {emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)} # Success

@endpoint PUT /setup/v1/locations/{id}/appointmentreminders
@desc Update Reminders
@required {id: str # id of business location, defaults to primary business location}
@optional {emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}
@returns(200) {object: str?, id: str?, friendlyId: str?, companyId: str?, companyName: str?, name: str?, adminEmail: str?, adminName: str?, phone: str?, fax: str?, email: str?, website: str?, regionId: str?, logo: str?, imageUrl: str?, timezoneId: str?, timezoneIana: str?, timezoneOffset: int(int32)?, primaryBusiness: bool, primaryCalendarId: str?, latitude: num(double), longitude: num(double), travel: map{startAddress: str?, startLat: str?, startLon: str?, distance: str?, proximity: str?, units: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, businessHours: map{mon: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, tue: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, wed: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, thu: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, fri: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sat: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}, sun: map{isOpen: bool, startTime: int(int32), endTime: int(int32), is24Hours: bool}}, businessHolidays: [map]?, services: [map]?, settings: map{object: str?, companyId: str?, businessId: str?, locationId: str?, enabled: bool, familyMembersEnabled: bool, customerVerification: bool, serviceLabel: str?, resourceSelection: bool, resourceLabel: str?, resourceAnyLabel: str?, id: int(int32), defaultService: bool?, liveMode: bool?, firstAvailable: bool?, formFlow: int(int32), availabilityForm: int(int32), showServiceGroups: bool, bookWithAccount: bool, bookingPolicy: str?, bookingMessage: str?, showOnSchedLogo: bool, showBusinessLogo: bool, enableWorldTimezones: bool?, disableAuthorization: bool?, hideNavBar: bool?, hideLocationNav: bool?, hideServiceGroupsNav: bool?, hideServicesNav: bool?, hideContinueBooking: bool?, defaultToCustomerTimezone: bool, returnToService: bool, returnToAvailability: bool, hideBreadCrumbNav: bool, bookingTimerMins: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), customerBookingsPerDay: int(int32), lateCancelHours: int(int32), lateCancelAction: int(int32), lateRescheduleHours: int(int32), lateRescheduleAction: int(int32), bookingConfirmationMessage: str?}, defaults: map{object: str?, enableUtcTimezone: bool?, customerState: bool?, customerCity: bool?, autoUpdateCustomer: bool?, businessNotification: bool?, emailInfo: bool?}, appointmentReminders: map{emailFirstReminder: int(int32), emailFirstReminderInterval: int(int32), emailSecondReminder: int(int32), emailSecondReminderInterval: int(int32), smsFirstReminder: int(int32), smsFirstReminderInterval: int(int32), smsSecondReminder: int(int32), smsSecondReminderInterval: int(int32)}} # Success

@endpoint GET /setup/v1/resourcegroups
@desc List Resource Groups
@optional {locationId: str # id of business location, defaults to primary business location, deleted: bool # Filter results by deleted status, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Success

@endpoint POST /setup/v1/resourcegroups
@desc Create Resource Group
@optional {locationId: str, name: str, email: str, description: str}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, description: str?, email: str?, bookingNotification: int(int32), deletedStatus: bool, deletedTime: str(date-time)?} # Success

@endpoint GET /setup/v1/resourcegroups/{id}
@desc Get Resource Group
@required {id: str # id of resourceGroup object}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, description: str?, email: str?, bookingNotification: int(int32), deletedStatus: bool, deletedTime: str(date-time)?} # Success

@endpoint PUT /setup/v1/resourcegroups/{id}
@desc Update Resource Group
@required {id: str # id of resourcGroup object}
@optional {name: str, email: str, description: str}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, description: str?, email: str?, bookingNotification: int(int32), deletedStatus: bool, deletedTime: str(date-time)?} # Success

@endpoint DELETE /setup/v1/resourcegroups/{id}
@desc Delete Resource Group
@required {id: str # id of resourceGroup object}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, description: str?, email: str?, bookingNotification: int(int32), deletedStatus: bool, deletedTime: str(date-time)?} # Success

@endpoint PUT /setup/v1/resourcegroups/{id}/recover
@desc Recover Resource Group
@required {id: str # id of resourceGroup object}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, email: str?, groupId: int(int32)?, description: str?, imageUrl: str?, deletedStatus: bool, deletedTime: str(date-time)?, notificationType: int(int32), bookingNotification: int(int32), googleCalendarId: str?, googleCalendarAuthorized: bool, googleCalendarAuthUrl: str?, outlookCalendarId: str?, outlookCalendarAuthUrl: str?, outlookCalendarAuthorized: bool, ignoreBusinessHours: bool, gender: str?, recurringAvailability: bool?, hourly: num(double)?, calendarAvailability: int(int32), sortKey: int(int32), skypeName: str?, bioLink: str?, timezoneOffset: int(int32)?, timezoneId: str?, timezoneIana: str?, effectiveDate: str(date-time)?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, phone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, options: map{effectiveDate: str(date-time)?, notificationType: int(int32)?, displayColor: str?, googleCalendarId: str?, outlookCalendarId: str?, ignoreBusinessHours: bool?, gender: str?, hourly: num(double)?, calendarAvailability: int(int32)?, bookingNotification: int(int32)?, sortKey: int(int32)?, bioLink: str?}, services: [map]?, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint GET /setup/v1/resources
@desc List Resources
@optional {locationId: str # id of business location, defaults to primary business location, resourceGroupId: str # Filter by group Id, email: str # Filter by email address, name: str # Search by name, deleted: bool # Show by deleted status, default is false, googleAuthReturnUrl: str # Google calendar authorization return url, outlookAuthReturnUrl: str # Outlook calendar authorization return url, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max is 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # resource object
@errors {400: Missing or invalid values in the request, 404: Resource was not found}

@endpoint POST /setup/v1/resources
@desc Create Resource
@optional {googleAuthReturnUrl: str # Google calendar authorization return url, outlookAuthReturnUrl: str # Outlook calendar authorization return url, locationId: str, name: str, email: str, description: str, groupId: str, timezoneId: str, recurringAvailability: bool, serviceIds: [str], address: map{addressLine1: str, addressLine2: str, city: str, state: str, country: str, postalCode: str}, contact: map{preferredPhoneType: str, homePhone: str, mobilePhone: str, businessPhone: str, businessPhoneExt: str, skypeUsername: str, conferenceInfo: str}, availability: map{sun: map, mon: map, tue: map, wed: map, thu: map, fri: map, sat: map}, options: map{effectiveDate: str(date-time), notificationType: int(int32), displayColor: str, googleCalendarId: str, outlookCalendarId: str, ignoreBusinessHours: bool, gender: str, hourly: num(double), calendarAvailability: int(int32), bookingNotification: int(int32), sortKey: int(int32), bioLink: str} # Options for the new resource, customFields: map{field1: str, field2: str, field3: str, field4: str, field5: str, field6: str, field7: str, field8: str, field9: str, field10: str}}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, email: str?, groupId: int(int32)?, description: str?, imageUrl: str?, deletedStatus: bool, deletedTime: str(date-time)?, notificationType: int(int32), bookingNotification: int(int32), googleCalendarId: str?, googleCalendarAuthorized: bool, googleCalendarAuthUrl: str?, outlookCalendarId: str?, outlookCalendarAuthUrl: str?, outlookCalendarAuthorized: bool, ignoreBusinessHours: bool, gender: str?, recurringAvailability: bool?, hourly: num(double)?, calendarAvailability: int(int32), sortKey: int(int32), skypeName: str?, bioLink: str?, timezoneOffset: int(int32)?, timezoneId: str?, timezoneIana: str?, effectiveDate: str(date-time)?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, phone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, options: map{effectiveDate: str(date-time)?, notificationType: int(int32)?, displayColor: str?, googleCalendarId: str?, outlookCalendarId: str?, ignoreBusinessHours: bool?, gender: str?, hourly: num(double)?, calendarAvailability: int(int32)?, bookingNotification: int(int32)?, sortKey: int(int32)?, bioLink: str?}, services: [map]?, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint GET /setup/v1/resources/{id}
@desc Get Resource
@required {id: str # id of resource object}
@optional {googleAuthReturnUrl: str # Google calendar authorization return url, outlookAuthReturnUrl: str # Outlook calendar authorization return url}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, email: str?, groupId: int(int32)?, description: str?, imageUrl: str?, deletedStatus: bool, deletedTime: str(date-time)?, notificationType: int(int32), bookingNotification: int(int32), googleCalendarId: str?, googleCalendarAuthorized: bool, googleCalendarAuthUrl: str?, outlookCalendarId: str?, outlookCalendarAuthUrl: str?, outlookCalendarAuthorized: bool, ignoreBusinessHours: bool, gender: str?, recurringAvailability: bool?, hourly: num(double)?, calendarAvailability: int(int32), sortKey: int(int32), skypeName: str?, bioLink: str?, timezoneOffset: int(int32)?, timezoneId: str?, timezoneIana: str?, effectiveDate: str(date-time)?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, phone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, options: map{effectiveDate: str(date-time)?, notificationType: int(int32)?, displayColor: str?, googleCalendarId: str?, outlookCalendarId: str?, ignoreBusinessHours: bool?, gender: str?, hourly: num(double)?, calendarAvailability: int(int32)?, bookingNotification: int(int32)?, sortKey: int(int32)?, bioLink: str?}, services: [map]?, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint PUT /setup/v1/resources/{id}
@desc Update Resource
@required {id: str # id of resource object}
@optional {googleAuthReturnUrl: str # Google calendar authorization return url, outlookAuthReturnUrl: str # Outlook calendar authorization return url, locationId: str, name: str, email: str, description: str, groupId: str, timezoneId: str, recurringAvailability: bool, serviceIds: [str], address: map{addressLine1: str, addressLine2: str, city: str, state: str, country: str, postalCode: str}, contact: map{preferredPhoneType: str, homePhone: str, mobilePhone: str, businessPhone: str, businessPhoneExt: str, skypeUsername: str, conferenceInfo: str}, availability: map{sun: map, mon: map, tue: map, wed: map, thu: map, fri: map, sat: map}, options: map{effectiveDate: str(date-time), notificationType: int(int32), displayColor: str, googleCalendarId: str, outlookCalendarId: str, ignoreBusinessHours: bool, gender: str, hourly: num(double), calendarAvailability: int(int32), bookingNotification: int(int32), sortKey: int(int32), bioLink: str}, customFields: map{field1: str, field2: str, field3: str, field4: str, field5: str, field6: str, field7: str, field8: str, field9: str, field10: str}}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, email: str?, groupId: int(int32)?, description: str?, imageUrl: str?, deletedStatus: bool, deletedTime: str(date-time)?, notificationType: int(int32), bookingNotification: int(int32), googleCalendarId: str?, googleCalendarAuthorized: bool, googleCalendarAuthUrl: str?, outlookCalendarId: str?, outlookCalendarAuthUrl: str?, outlookCalendarAuthorized: bool, ignoreBusinessHours: bool, gender: str?, recurringAvailability: bool?, hourly: num(double)?, calendarAvailability: int(int32), sortKey: int(int32), skypeName: str?, bioLink: str?, timezoneOffset: int(int32)?, timezoneId: str?, timezoneIana: str?, effectiveDate: str(date-time)?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, phone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, options: map{effectiveDate: str(date-time)?, notificationType: int(int32)?, displayColor: str?, googleCalendarId: str?, outlookCalendarId: str?, ignoreBusinessHours: bool?, gender: str?, hourly: num(double)?, calendarAvailability: int(int32)?, bookingNotification: int(int32)?, sortKey: int(int32)?, bioLink: str?}, services: [map]?, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint DELETE /setup/v1/resources/{id}
@desc Delete Resource
@required {id: str # id of resource object}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, email: str?, groupId: int(int32)?, description: str?, imageUrl: str?, deletedStatus: bool, deletedTime: str(date-time)?, notificationType: int(int32), bookingNotification: int(int32), googleCalendarId: str?, googleCalendarAuthorized: bool, googleCalendarAuthUrl: str?, outlookCalendarId: str?, outlookCalendarAuthUrl: str?, outlookCalendarAuthorized: bool, ignoreBusinessHours: bool, gender: str?, recurringAvailability: bool?, hourly: num(double)?, calendarAvailability: int(int32), sortKey: int(int32), skypeName: str?, bioLink: str?, timezoneOffset: int(int32)?, timezoneId: str?, timezoneIana: str?, effectiveDate: str(date-time)?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, phone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, options: map{effectiveDate: str(date-time)?, notificationType: int(int32)?, displayColor: str?, googleCalendarId: str?, outlookCalendarId: str?, ignoreBusinessHours: bool?, gender: str?, hourly: num(double)?, calendarAvailability: int(int32)?, bookingNotification: int(int32)?, sortKey: int(int32)?, bioLink: str?}, services: [map]?, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint GET /setup/v1/resources/{id}/calendar/auth/google/{googleEmailAddress}
@desc Get Resource Google URL
@required {id: str # id of resource object, googleEmailAddress: str # Email address of Google Calendar}
@optional {googleAuthReturnUrl: str # Google calendar authorization return url}
@returns(200) {object: str?, calendarId: str?, calendarAuthUrl: str?} # Success

@endpoint GET /setup/v1/resources/{id}/calendar/auth/outlook/{outlookEmailAddress}
@desc Get Resource Outlook URL
@required {id: str # id of resource object, outlookEmailAddress: str # Email address of Outlook Calendar}
@optional {outlookAuthReturnUrl: str # Outlook calendar authorization return url}
@returns(200) {object: str?, calendarId: str?, calendarAuthUrl: str?} # Success

@endpoint GET /setup/v1/resources/timezones
@desc Get Time Zones
@returns(200) {timezoneId: str?, standardName: str?, daylightName: str?, displayName: str?, timezoneIana: str?, baseUtcOffset: int(int32), supportsDaylightSavingTime: bool} # Success

@endpoint POST /setup/v1/resources/bulk
@desc Create Resources Bulk
@optional {googleAuthReturnUrl: str # Google calendar authorization return url, outlookAuthReturnUrl: str # Outlook calendar authorization return url, resources: [map{locationId: str, name: str, email: str, description: str, groupId: str, timezoneId: str, recurringAvailability: bool, serviceIds: [str], address: map, contact: map, availability: map, options: map, customFields: map}]}
@returns(200) Success

@endpoint PUT /setup/v1/resources/bulk
@desc Update Resources Bulk
@optional {googleAuthReturnUrl: str # Google calendar authorization return url, outlookAuthReturnUrl: str # Outlook calendar authorization return url, resources: [map{id: str, name: str, email: str, description: str, groupId: str, timezoneId: str, recurringAvailability: bool, serviceIds: [str], address: map, contact: map, availability: map, options: map, customFields: map}]}
@returns(200) Success

@endpoint PUT /setup/v1/resources/{id}/reassign/appointments/{resourceId}
@desc Reassign Resource
@required {id: str # id of the original resource, resourceId: str # id of the target resource}
@optional {startDate: str(date-time) # YYYY-MM-DD, Appt range start date, endDate: str(date-time) # YYYY-MM-DD, Appt range end date, calendarId: str # CalendarId of calendar containing appointments}
@returns(200) Success

@endpoint PUT /setup/v1/resources/{id}/recover
@desc Recover Resource
@required {id: str # id of resource object}
@optional {googleAuthReturnUrl: str # Google calendar authorization return url, outlookAuthReturnUrl: str # Outlook calendar authorization return url}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, email: str?, groupId: int(int32)?, description: str?, imageUrl: str?, deletedStatus: bool, deletedTime: str(date-time)?, notificationType: int(int32), bookingNotification: int(int32), googleCalendarId: str?, googleCalendarAuthorized: bool, googleCalendarAuthUrl: str?, outlookCalendarId: str?, outlookCalendarAuthUrl: str?, outlookCalendarAuthorized: bool, ignoreBusinessHours: bool, gender: str?, recurringAvailability: bool?, hourly: num(double)?, calendarAvailability: int(int32), sortKey: int(int32), skypeName: str?, bioLink: str?, timezoneOffset: int(int32)?, timezoneId: str?, timezoneIana: str?, effectiveDate: str(date-time)?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, phone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, options: map{effectiveDate: str(date-time)?, notificationType: int(int32)?, displayColor: str?, googleCalendarId: str?, outlookCalendarId: str?, ignoreBusinessHours: bool?, gender: str?, hourly: num(double)?, calendarAvailability: int(int32)?, bookingNotification: int(int32)?, sortKey: int(int32)?, bioLink: str?}, services: [map]?, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint GET /setup/v1/resources/{id}/availability
@desc List Weekly Availability
@required {id: str # id of resource object}
@returns(200) {businessId: int(int32), resourceId: int(int32), resourceName: str?, resourceTzo: int(int32), ignoreBusinessHours: bool, weekdays: map{sun: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, mon: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, tue: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, wed: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, thu: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, fri: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, sat: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}}} # Success

@endpoint PUT /setup/v1/resources/{id}/availability
@desc Update Weekly Availability
@required {id: str # id of resource object}
@optional {sun: map{startTime: int(int32), endTime: int(int32)}, mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}}
@returns(200) {businessId: int(int32), resourceId: int(int32), resourceName: str?, resourceTzo: int(int32), ignoreBusinessHours: bool, weekdays: map{sun: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, mon: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, tue: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, wed: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, thu: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, fri: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, sat: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}}} # Success

@endpoint GET /setup/v1/resources/{id}/allocations
@desc List Resource Allocations
@required {id: str # id of resource to list allocations for}
@optional {startDate: str(date-time) # yyyy-mm-dd, filter allocations on/after startDate, endDate: str(date-time) # yyyy-mm-dd, filter on/before endDate, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # resource allocation objects
@errors {400: Missing or invalid values in the request, 401: Authorization error., 404: Resource was not found}

@endpoint POST /setup/v1/resources/{id}/allocations
@desc Create Allocation
@required {id: str # id of resource object}
@optional {startDate: str(date), endDate: str(date), startTime: int(int32), endTime: int(int32), reason: str, repeats: bool, repeat: map{frequency: str, interval: int(int32), weekdays: str, monthDay: int(int32), monthType: str}}
@returns(200) {object: str?, id: int(int32), businessId: int(int32), resourceId: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint GET /setup/v1/resources/allocations/{id}
@desc Get Allocation
@required {id: str # id of resourceAllocation object}
@returns(200) {object: str?, id: int(int32), businessId: int(int32), resourceId: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint PUT /setup/v1/resources/allocations/{id}
@desc Update Allocation
@required {id: str # id of resourceAllocation object}
@optional {startDate: str(date), endDate: str(date), startTime: int(int32), endTime: int(int32), reason: str, repeats: bool, repeat: map{frequency: str, interval: int(int32), weekdays: str, monthDay: int(int32), monthType: str}}
@returns(200) {object: str?, id: int(int32), businessId: int(int32), resourceId: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint DELETE /setup/v1/resources/allocations/{id}
@desc Delete Allocation
@required {id: str # id of resourceAllocation object}
@returns(200) {object: str?, id: int(int32), businessId: int(int32), resourceId: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint GET /setup/v1/resources/{id}/blocks
@desc List Resource Blocks
@required {id: str # id of resource to list blocks for}
@optional {startDate: str(date-time) # YYYY-MM-DD, filter blocks on/after startDate, endDate: str(date-time) # YYYY-MM-DD, filter on/before endDate, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # resource block object's
@errors {400: Missing or invalid values in the request, 401: Authorization error., 404: Resource was not found}

@endpoint GET /setup/v1/resources/blocks/{id}
@desc Get Block
@required {id: str # id of resourceBlock object}
@returns(200) {object: str?, id: int(int32), businessId: int(int32), resourceId: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint POST /setup/v1/resources/{id}/block
@desc Create Block
@required {id: str # id of resource object}
@optional {startDate: str(date), endDate: str(date), startTime: int(int32), endTime: int(int32), reason: str, allDay: bool, repeats: bool, repeat: map{frequency: str, interval: int(int32), weekdays: str, monthDay: int(int32), monthType: str}}
@returns(200) {object: str?, id: int(int32), businessId: int(int32), resourceId: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint PUT /setup/v1/resources/block/{id}
@desc Update Block
@required {id: str # id of resourceBlock object}
@optional {startDate: str(date), endDate: str(date), startTime: int(int32), endTime: int(int32), reason: str, allDay: bool, repeats: bool, repeat: map{frequency: str, interval: int(int32), weekdays: str, monthDay: int(int32), monthType: str}}
@returns(200) {object: str?, id: int(int32), businessId: int(int32), resourceId: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint DELETE /setup/v1/resources/block/{id}
@desc Delete Block
@required {id: str # id of resourceBlock object}
@returns(200) {object: str?, id: int(int32), businessId: int(int32), resourceId: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint POST /setup/v1/resources/{id}/services
@desc Create Linked Services
@required {id: str # id of resource object}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, email: str?, groupId: int(int32)?, description: str?, imageUrl: str?, deletedStatus: bool, deletedTime: str(date-time)?, notificationType: int(int32), bookingNotification: int(int32), googleCalendarId: str?, googleCalendarAuthorized: bool, googleCalendarAuthUrl: str?, outlookCalendarId: str?, outlookCalendarAuthUrl: str?, outlookCalendarAuthorized: bool, ignoreBusinessHours: bool, gender: str?, recurringAvailability: bool?, hourly: num(double)?, calendarAvailability: int(int32), sortKey: int(int32), skypeName: str?, bioLink: str?, timezoneOffset: int(int32)?, timezoneId: str?, timezoneIana: str?, effectiveDate: str(date-time)?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, phone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, options: map{effectiveDate: str(date-time)?, notificationType: int(int32)?, displayColor: str?, googleCalendarId: str?, outlookCalendarId: str?, ignoreBusinessHours: bool?, gender: str?, hourly: num(double)?, calendarAvailability: int(int32)?, bookingNotification: int(int32)?, sortKey: int(int32)?, bioLink: str?}, services: [map]?, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint PUT /setup/v1/resources/{id}/services
@desc Update Linked Services
@required {id: str # id of resource object}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, email: str?, groupId: int(int32)?, description: str?, imageUrl: str?, deletedStatus: bool, deletedTime: str(date-time)?, notificationType: int(int32), bookingNotification: int(int32), googleCalendarId: str?, googleCalendarAuthorized: bool, googleCalendarAuthUrl: str?, outlookCalendarId: str?, outlookCalendarAuthUrl: str?, outlookCalendarAuthorized: bool, ignoreBusinessHours: bool, gender: str?, recurringAvailability: bool?, hourly: num(double)?, calendarAvailability: int(int32), sortKey: int(int32), skypeName: str?, bioLink: str?, timezoneOffset: int(int32)?, timezoneId: str?, timezoneIana: str?, effectiveDate: str(date-time)?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, phone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, options: map{effectiveDate: str(date-time)?, notificationType: int(int32)?, displayColor: str?, googleCalendarId: str?, outlookCalendarId: str?, ignoreBusinessHours: bool?, gender: str?, hourly: num(double)?, calendarAvailability: int(int32)?, bookingNotification: int(int32)?, sortKey: int(int32)?, bioLink: str?}, services: [map]?, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint DELETE /setup/v1/resources/{id}/services
@desc Delete Linked Services
@required {id: str # id of resource object}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, email: str?, groupId: int(int32)?, description: str?, imageUrl: str?, deletedStatus: bool, deletedTime: str(date-time)?, notificationType: int(int32), bookingNotification: int(int32), googleCalendarId: str?, googleCalendarAuthorized: bool, googleCalendarAuthUrl: str?, outlookCalendarId: str?, outlookCalendarAuthUrl: str?, outlookCalendarAuthorized: bool, ignoreBusinessHours: bool, gender: str?, recurringAvailability: bool?, hourly: num(double)?, calendarAvailability: int(int32), sortKey: int(int32), skypeName: str?, bioLink: str?, timezoneOffset: int(int32)?, timezoneId: str?, timezoneIana: str?, effectiveDate: str(date-time)?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, phone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, options: map{effectiveDate: str(date-time)?, notificationType: int(int32)?, displayColor: str?, googleCalendarId: str?, outlookCalendarId: str?, ignoreBusinessHours: bool?, gender: str?, hourly: num(double)?, calendarAvailability: int(int32)?, bookingNotification: int(int32)?, sortKey: int(int32)?, bioLink: str?}, services: [map]?, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint POST /setup/v1/resources/{id}/uploadimage
@desc Upload Resource Image
@required {id: str # id of resource object}
@optional {imageFileName: str, imageFileData: str}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, email: str?, groupId: int(int32)?, description: str?, imageUrl: str?, deletedStatus: bool, deletedTime: str(date-time)?, notificationType: int(int32), bookingNotification: int(int32), googleCalendarId: str?, googleCalendarAuthorized: bool, googleCalendarAuthUrl: str?, outlookCalendarId: str?, outlookCalendarAuthUrl: str?, outlookCalendarAuthorized: bool, ignoreBusinessHours: bool, gender: str?, recurringAvailability: bool?, hourly: num(double)?, calendarAvailability: int(int32), sortKey: int(int32), skypeName: str?, bioLink: str?, timezoneOffset: int(int32)?, timezoneId: str?, timezoneIana: str?, effectiveDate: str(date-time)?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, phone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, options: map{effectiveDate: str(date-time)?, notificationType: int(int32)?, displayColor: str?, googleCalendarId: str?, outlookCalendarId: str?, ignoreBusinessHours: bool?, gender: str?, hourly: num(double)?, calendarAvailability: int(int32)?, bookingNotification: int(int32)?, sortKey: int(int32)?, bioLink: str?}, services: [map]?, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint DELETE /setup/v1/resources/{id}/deleteimage
@desc Delete Resource Image
@required {id: str # id of resource object}
@returns(200) {object: str?, id: str?, locationId: str?, name: str?, email: str?, groupId: int(int32)?, description: str?, imageUrl: str?, deletedStatus: bool, deletedTime: str(date-time)?, notificationType: int(int32), bookingNotification: int(int32), googleCalendarId: str?, googleCalendarAuthorized: bool, googleCalendarAuthUrl: str?, outlookCalendarId: str?, outlookCalendarAuthUrl: str?, outlookCalendarAuthorized: bool, ignoreBusinessHours: bool, gender: str?, recurringAvailability: bool?, hourly: num(double)?, calendarAvailability: int(int32), sortKey: int(int32), skypeName: str?, bioLink: str?, timezoneOffset: int(int32)?, timezoneId: str?, timezoneIana: str?, effectiveDate: str(date-time)?, contact: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?, skypeUsername: str?, conferenceInfo: str?}, phone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, address: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}, availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, options: map{effectiveDate: str(date-time)?, notificationType: int(int32)?, displayColor: str?, googleCalendarId: str?, outlookCalendarId: str?, ignoreBusinessHours: bool?, gender: str?, hourly: num(double)?, calendarAvailability: int(int32)?, bookingNotification: int(int32)?, sortKey: int(int32)?, bioLink: str?}, services: [map]?, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint GET /setup/v1/servicegroups
@desc List Service Groups
@optional {locationId: str # id of business location, defaults to primary business location, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Success

@endpoint POST /setup/v1/servicegroups
@desc Create Service Group
@optional {locationId: str, name: str, description: str, type: int(int32)}
@returns(200) {object: str?, imageUrl: str?, id: str?, companyId: str?, locationId: str?, name: str?, type: int(int32), description: str?, isDeleted: bool} # Success

@endpoint GET /setup/v1/servicegroups/{id}
@desc Get Service Group
@required {id: int(int32) # id of serviceGroup object}
@returns(200) {object: str?, imageUrl: str?, id: str?, companyId: str?, locationId: str?, name: str?, type: int(int32), description: str?, isDeleted: bool} # Success

@endpoint PUT /setup/v1/servicegroups/{id}
@desc Update Service Group
@required {id: int(int32) # id of serviceGroup object}
@optional {locationId: str, name: str, description: str, type: int(int32)}
@returns(200) {object: str?, imageUrl: str?, id: str?, companyId: str?, locationId: str?, name: str?, type: int(int32), description: str?, isDeleted: bool} # Success

@endpoint DELETE /setup/v1/servicegroups/{id}
@desc Delete Service Group
@required {id: int(int32) # id of serviceGroup object}
@returns(200) {object: str?, imageUrl: str?, id: str?, companyId: str?, locationId: str?, name: str?, type: int(int32), description: str?, isDeleted: bool} # Success

@endpoint PUT /setup/v1/servicegroups/{id}/recover
@desc Recover Service Group
@required {id: int(int32) # id of serviceGroup object}
@returns(200) {object: str?, imageUrl: str?, id: str?, companyId: str?, locationId: str?, name: str?, type: int(int32), description: str?, isDeleted: bool} # Success

@endpoint GET /setup/v1/services
@desc List Services
@optional {locationId: str # id of business location, defaults to primary business location, serviceGroupId: int(int32) # Filter services by groupId, deleted: bool # Filter by deleted status, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Success

@endpoint POST /setup/v1/services
@desc Create Service
@optional {locationId: str, name: str, description: str, type: str, duration: int(int32), bookingLimit: int(int32), bookingInterval: int(int32), maxCapacity: int(int32), maxGroupSize: int(int32), serviceGroupId: str, public: bool, mediaPageUrl: str, availability: map{sun: map, mon: map, tue: map, wed: map, thu: map, fri: map, sat: map}, settings: map{bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32)}, options: map{defaultService: bool, durationSelect: bool, durationInterval: int(int32), durationMin: int(int32), durationMax: int(int32), padding: int(int32), consumerPadding: bool}, fees: map{feeAmount: num(double), feeTaxable: bool, cancellationFeeAmount: num(double), cancellationFeeTaxable: bool, nonRefundable: bool}, customFields: map{field1: str, field2: str, field3: str, field4: str, field5: str, field6: str, field7: str, field8: str, field9: str, field10: str}}
@returns(200) {object: str?, id: str?, companyId: str?, locationId: str?, name: str?, description: str?, type: str?, imageUrl: str?, mediaPageUrl: str?, serviceGroupId: int(int32)?, serviceGroupName: str?, calendarId: str?, calendarResourceGroupId: str?, bookingLimit: int(int32), bookingInterval: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), roundRobin: int(int32), showOnline: bool, defaultService: bool, duration: int(int32), durationSelect: bool, durationMin: int(int32), durationMax: int(int32), durationInterval: int(int32), padding: int(int32), consumerPadding: bool, feeAmount: num(double), feeTaxable: bool, cancellationFeeAmount: num(double), cancellationFeeTaxable: bool, nonRefundable: bool, dailyBookingLimitCount: int(int32), dailyBookingLimitMinutes: int(int32), maxBookingLimit: int(int32), maxResourceBookingLimit: int(int32), maxCapacity: int(int32), maxGroupSize: int(int32), availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint GET /setup/v1/services/{id}
@desc Get Service
@required {id: int(int32) # id of service object}
@returns(200) {object: str?, id: str?, companyId: str?, locationId: str?, name: str?, description: str?, type: str?, imageUrl: str?, mediaPageUrl: str?, serviceGroupId: int(int32)?, serviceGroupName: str?, calendarId: str?, calendarResourceGroupId: str?, bookingLimit: int(int32), bookingInterval: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), roundRobin: int(int32), showOnline: bool, defaultService: bool, duration: int(int32), durationSelect: bool, durationMin: int(int32), durationMax: int(int32), durationInterval: int(int32), padding: int(int32), consumerPadding: bool, feeAmount: num(double), feeTaxable: bool, cancellationFeeAmount: num(double), cancellationFeeTaxable: bool, nonRefundable: bool, dailyBookingLimitCount: int(int32), dailyBookingLimitMinutes: int(int32), maxBookingLimit: int(int32), maxResourceBookingLimit: int(int32), maxCapacity: int(int32), maxGroupSize: int(int32), availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint PUT /setup/v1/services/{id}
@desc Update Service
@required {id: str}
@optional {locationId: str, name: str, description: str, type: str, duration: int(int32), bookingLimit: int(int32), bookingInterval: int(int32), maxCapacity: int(int32), maxGroupSize: int(int32), serviceGroupId: str, public: bool, mediaPageUrl: str, availability: map{sun: map, mon: map, tue: map, wed: map, thu: map, fri: map, sat: map}, settings: map{bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32)}, options: map{defaultService: bool, durationSelect: bool, durationInterval: int(int32), durationMin: int(int32), durationMax: int(int32), padding: int(int32), consumerPadding: bool}, fees: map{feeAmount: num(double), feeTaxable: bool, cancellationFeeAmount: num(double), cancellationFeeTaxable: bool, nonRefundable: bool}, customFields: map{field1: str, field2: str, field3: str, field4: str, field5: str, field6: str, field7: str, field8: str, field9: str, field10: str}}
@returns(200) {object: str?, id: str?, companyId: str?, locationId: str?, name: str?, description: str?, type: str?, imageUrl: str?, mediaPageUrl: str?, serviceGroupId: int(int32)?, serviceGroupName: str?, calendarId: str?, calendarResourceGroupId: str?, bookingLimit: int(int32), bookingInterval: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), roundRobin: int(int32), showOnline: bool, defaultService: bool, duration: int(int32), durationSelect: bool, durationMin: int(int32), durationMax: int(int32), durationInterval: int(int32), padding: int(int32), consumerPadding: bool, feeAmount: num(double), feeTaxable: bool, cancellationFeeAmount: num(double), cancellationFeeTaxable: bool, nonRefundable: bool, dailyBookingLimitCount: int(int32), dailyBookingLimitMinutes: int(int32), maxBookingLimit: int(int32), maxResourceBookingLimit: int(int32), maxCapacity: int(int32), maxGroupSize: int(int32), availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint DELETE /setup/v1/services/{id}
@desc Delete Service
@required {id: str # id of service object}
@returns(200) {object: str?, id: str?, companyId: str?, locationId: str?, name: str?, description: str?, type: str?, imageUrl: str?, mediaPageUrl: str?, serviceGroupId: int(int32)?, serviceGroupName: str?, calendarId: str?, calendarResourceGroupId: str?, bookingLimit: int(int32), bookingInterval: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), roundRobin: int(int32), showOnline: bool, defaultService: bool, duration: int(int32), durationSelect: bool, durationMin: int(int32), durationMax: int(int32), durationInterval: int(int32), padding: int(int32), consumerPadding: bool, feeAmount: num(double), feeTaxable: bool, cancellationFeeAmount: num(double), cancellationFeeTaxable: bool, nonRefundable: bool, dailyBookingLimitCount: int(int32), dailyBookingLimitMinutes: int(int32), maxBookingLimit: int(int32), maxResourceBookingLimit: int(int32), maxCapacity: int(int32), maxGroupSize: int(int32), availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint GET /setup/v1/services/{id}/resources
@desc List Resources for Service
@required {id: str # id of service object}
@optional {offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100, googleAuthReturnUrl: str # Google calendar authorization return url, outlookAuthReturnUrl: str # Outlook calendar authorization return url}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # Success

@endpoint PUT /setup/v1/services/{id}/recover
@desc Recover Service
@required {id: str}
@returns(200) {object: str?, id: str?, companyId: str?, locationId: str?, name: str?, description: str?, type: str?, imageUrl: str?, mediaPageUrl: str?, serviceGroupId: int(int32)?, serviceGroupName: str?, calendarId: str?, calendarResourceGroupId: str?, bookingLimit: int(int32), bookingInterval: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), roundRobin: int(int32), showOnline: bool, defaultService: bool, duration: int(int32), durationSelect: bool, durationMin: int(int32), durationMax: int(int32), durationInterval: int(int32), padding: int(int32), consumerPadding: bool, feeAmount: num(double), feeTaxable: bool, cancellationFeeAmount: num(double), cancellationFeeTaxable: bool, nonRefundable: bool, dailyBookingLimitCount: int(int32), dailyBookingLimitMinutes: int(int32), maxBookingLimit: int(int32), maxResourceBookingLimit: int(int32), maxCapacity: int(int32), maxGroupSize: int(int32), availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint GET /setup/v1/services/{id}/blocks
@desc List Service Blocks
@required {id: str # id of service to list blocks for}
@optional {startDate: str(date-time) # Format YYYY-MM-DD. Filter blocks on/after startDate, endDate: str(date-time) # Format YYYY-MM-DD. Filter on/before endDate, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # service block object's
@errors {400: Missing or invalid values in the request, 401: Authorization error., 404: Service was not found}

@endpoint GET /setup/v1/services/blocks/{id}
@desc Get Block
@required {id: str # id of serviceBlock object}
@returns(200) {object: str?, id: int(int32), businessId: int(int32), resourceId: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint POST /setup/v1/services/{id}/block
@desc Create Block
@required {id: str # id of service object}
@optional {locationId: str, startDate: str(date), endDate: str(date), startTime: int(int32), endTime: int(int32), reason: str, repeats: bool, repeat: map{frequency: str, interval: int(int32), weekdays: str, monthDay: int(int32), monthType: str}}
@returns(200) {object: str?, id: str?, locationId: str?, serviceId: str?, startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint PUT /setup/v1/services/block/{id}
@desc Update Block
@required {id: str # id of serviceBlock object}
@optional {startDate: str(date), endDate: str(date), startTime: int(int32), endTime: int(int32), reason: str, repeats: bool, repeat: map{frequency: str, interval: int(int32), weekdays: str, monthDay: int(int32), monthType: str}}
@returns(200) {object: str?, id: str?, locationId: str?, serviceId: str?, startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint DELETE /setup/v1/services/block/{id}
@desc Delete Block
@required {id: str # id of serviceBlock object}
@returns(200) {object: str?, id: int(int32), businessId: int(int32), resourceId: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), reason: str?, repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?} # Success

@endpoint GET /setup/v1/services/{id}/calendar
@desc Get Linked Calendar
@required {id: str # id of service object}
@optional {locationId: str # id of business location, defaults to primary business location}
@returns(200) {id: str?, locationId: str?, calendarId: str?, calendarName: str?, serviceId: str?, serviceName: str?} # Success

@endpoint POST /setup/v1/services/calendar
@desc Link Service to Calendar
@optional {locationId: str, serviceId: str, calendarId: str}
@returns(200) {id: str?, locationId: str?, calendarId: str?, calendarName: str?, serviceId: str?, serviceName: str?} # Success

@endpoint DELETE /setup/v1/services/calendar/{id}
@desc Delete Service Links
@required {id: str # id of calender to delete service links from}
@returns(200) {id: str?, locationId: str?, calendarId: str?, calendarName: str?, serviceId: str?, serviceName: str?} # Success

@endpoint GET /setup/v1/services/{id}/availability
@desc Get Weekly Availability
@required {id: str # id of service object}
@returns(200) {serviceId: int(int32), serviceName: str?, ignoreBusinessHours: bool, weekdays: map{sun: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, mon: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, tue: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, wed: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, thu: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, fri: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, sat: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}}} # Success

@endpoint PUT /setup/v1/services/{id}/availability
@desc Update Weekly Availability
@required {id: str # id of service object}
@optional {sun: map{startTime: int(int32), endTime: int(int32)}, mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}}
@returns(200) {serviceId: int(int32), serviceName: str?, ignoreBusinessHours: bool, weekdays: map{sun: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, mon: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, tue: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, wed: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, thu: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, fri: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}, sat: map{startTime: int(int32), endTime: int(int32), displayStartTime: str?, displayEndTime: str?}}} # Success

@endpoint GET /setup/v1/services/{id}/allocations
@desc List Service Allocations
@required {id: str # id of  service to list allocations for, 0 for all}
@optional {locationId: str # The id of the location. Defaults to the primary location, resourceId: str # The id of the resource to filter on, startDate: str(date-time) # Format YYYY-MM-DD. Filter appointments by on/after startDate, endDate: str(date-time) # Format YYYY-MM-DD. Filter appointments on/before endDate, offset: int(int32) # Starting row of page, default 0, limit: int(int32) # Page limit default 20, max 100}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?} # service alloaction object
@errors {400: Missing or invalid values in the request, 401: Authorization error., 404: Service was not found}

@endpoint POST /setup/v1/services/{id}/allocations
@desc Create Allocation
@required {id: str # id of service object}
@optional {locationId: str, resourceId: str, startDate: str(date), endDate: str(date), startTime: int(int32), endTime: int(int32), reason: str, bookingLimit: int(int32), repeats: bool, repeat: map{frequency: str, interval: int(int32), weekdays: str, monthDay: int(int32), monthType: str}}
@returns(200) {object: str?, id: str?, locationId: str?, timezoneOffset: int(int32)?, timezoneName: str?, serviceId: str?, serviceName: str?, serviceDescription: str?, serviceImageUrl: str?, serviceDuration: int(int32), reason: str?, bookingLimit: int(int32), bookingCount: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?, resourceId: str?, resourceName: str?, resourceDescription: str?, resourceImageUrl: str?, resourcePhone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, resourceAddress: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}} # Success

@endpoint GET /setup/v1/services/allocations/{id}
@desc Get Allocation
@required {id: str # id of serviceAllocation object}
@returns(200) {object: str?, id: str?, locationId: str?, timezoneOffset: int(int32)?, timezoneName: str?, serviceId: str?, serviceName: str?, serviceDescription: str?, serviceImageUrl: str?, serviceDuration: int(int32), reason: str?, bookingLimit: int(int32), bookingCount: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?, resourceId: str?, resourceName: str?, resourceDescription: str?, resourceImageUrl: str?, resourcePhone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, resourceAddress: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}} # Success

@endpoint PUT /setup/v1/services/allocations/{id}
@desc Update Allocation
@required {id: str # id of serviceAllocation object}
@optional {locationId: str, resourceId: str, startDate: str(date), endDate: str(date), startTime: int(int32), endTime: int(int32), reason: str, bookingLimit: int(int32), repeats: bool, repeat: map{frequency: str, interval: int(int32), weekdays: str, monthDay: int(int32), monthType: str}}
@returns(200) {object: str?, id: str?, locationId: str?, timezoneOffset: int(int32)?, timezoneName: str?, serviceId: str?, serviceName: str?, serviceDescription: str?, serviceImageUrl: str?, serviceDuration: int(int32), reason: str?, bookingLimit: int(int32), bookingCount: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?, resourceId: str?, resourceName: str?, resourceDescription: str?, resourceImageUrl: str?, resourcePhone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, resourceAddress: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}} # Success

@endpoint DELETE /setup/v1/services/allocations/{id}
@desc Delete Allocation
@required {id: str # id of serviceAllocation object}
@returns(200) {object: str?, id: str?, locationId: str?, timezoneOffset: int(int32)?, timezoneName: str?, serviceId: str?, serviceName: str?, serviceDescription: str?, serviceImageUrl: str?, serviceDuration: int(int32), reason: str?, bookingLimit: int(int32), bookingCount: int(int32), startDate: str?, endDate: str?, startTime: int(int32), endTime: int(int32), repeats: bool, repeat: map{frequency: str?, interval: int(int32), weekdays: str?, monthDay: str?, monthType: str?}, deletedStatus: bool, deletedTime: str?, resourceId: str?, resourceName: str?, resourceDescription: str?, resourceImageUrl: str?, resourcePhone: map{phoneType: str?, homePhone: str?, mobilePhone: str?, businessPhone: str?, businessPhoneExt: str?}, resourceAddress: map{addressLine1: str?, addressLine2: str?, city: str?, state: str?, country: str?, postalCode: str?}} # Success

@endpoint POST /setup/v1/services/{id}/allocations/bulk
@desc Create Allocations Bulk
@required {id: str # id of service object}
@optional {serviceAllocations: [map{locationId: str, resourceId: str, startDate: str(date), endDate: str(date), startTime: int(int32), endTime: int(int32), reason: str, bookingLimit: int(int32), repeats: bool, repeat: map}]}
@returns(200) Success

@endpoint POST /setup/v1/services/{id}/uploadimage
@desc Upload Service Image
@required {id: str # id of service object}
@optional {imageFileName: str, imageFileData: str}
@returns(200) {object: str?, id: str?, companyId: str?, locationId: str?, name: str?, description: str?, type: str?, imageUrl: str?, mediaPageUrl: str?, serviceGroupId: int(int32)?, serviceGroupName: str?, calendarId: str?, calendarResourceGroupId: str?, bookingLimit: int(int32), bookingInterval: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), roundRobin: int(int32), showOnline: bool, defaultService: bool, duration: int(int32), durationSelect: bool, durationMin: int(int32), durationMax: int(int32), durationInterval: int(int32), padding: int(int32), consumerPadding: bool, feeAmount: num(double), feeTaxable: bool, cancellationFeeAmount: num(double), cancellationFeeTaxable: bool, nonRefundable: bool, dailyBookingLimitCount: int(int32), dailyBookingLimitMinutes: int(int32), maxBookingLimit: int(int32), maxResourceBookingLimit: int(int32), maxCapacity: int(int32), maxGroupSize: int(int32), availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@endpoint DELETE /setup/v1/services/{id}/deleteimage
@desc Delete Service Image
@required {id: str # id of service object}
@returns(200) {object: str?, id: str?, companyId: str?, locationId: str?, name: str?, description: str?, type: str?, imageUrl: str?, mediaPageUrl: str?, serviceGroupId: int(int32)?, serviceGroupName: str?, calendarId: str?, calendarResourceGroupId: str?, bookingLimit: int(int32), bookingInterval: int(int32), bookAheadUnit: int(int32), bookAheadValue: int(int32), bookInAdvance: int(int32), roundRobin: int(int32), showOnline: bool, defaultService: bool, duration: int(int32), durationSelect: bool, durationMin: int(int32), durationMax: int(int32), durationInterval: int(int32), padding: int(int32), consumerPadding: bool, feeAmount: num(double), feeTaxable: bool, cancellationFeeAmount: num(double), cancellationFeeTaxable: bool, nonRefundable: bool, dailyBookingLimitCount: int(int32), dailyBookingLimitMinutes: int(int32), maxBookingLimit: int(int32), maxResourceBookingLimit: int(int32), maxCapacity: int(int32), maxGroupSize: int(int32), availability: map{mon: map{startTime: int(int32), endTime: int(int32)}, tue: map{startTime: int(int32), endTime: int(int32)}, wed: map{startTime: int(int32), endTime: int(int32)}, thu: map{startTime: int(int32), endTime: int(int32)}, fri: map{startTime: int(int32), endTime: int(int32)}, sat: map{startTime: int(int32), endTime: int(int32)}, sun: map{startTime: int(int32), endTime: int(int32)}}, customFields: map{field1: str?, field2: str?, field3: str?, field4: str?, field5: str?, field6: str?, field7: str?, field8: str?, field9: str?, field10: str?}} # Success

@end
