@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
@optional {locationId: str, email: str, lastname: str, serviceId: str, calendarId: str, resourceId: str, customerId: str, serviceAllocationId: str, startDate: str(date-time), endDate: str(date-time), status: str, bookedBy: str, offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}

@endpoint GET /setup/v1/appointments/{id}
@required {id: str}
@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]?}

@endpoint PUT /setup/v1/appointments/{id}/reassign/resource/{resourceId}
@required {id: str, resourceId: str}
@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]?}

@endpoint GET /setup/v1/businessusers
@optional {locationId: str, email: str, role: str, offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}

@endpoint POST /setup/v1/businessusers
@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]?}

@endpoint GET /setup/v1/businessusers/{id}
@required {id: str}
@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]?}

@endpoint PUT /setup/v1/businessusers/{id}
@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]?}

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

@endpoint GET /setup/v1/businessusers/permissions
@optional {role: str, offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}

@endpoint GET /setup/v1/businessusers/{email}/companies
@required {email: str}
@optional {searchText: str, offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?, email: str?}

@endpoint GET /setup/v1/calendars
@optional {locationId: str, deleted: bool, offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}

@endpoint POST /setup/v1/calendars
@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)}}}

@endpoint GET /setup/v1/calendars/{id}
@required {id: str}
@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)}}}

@endpoint PUT /setup/v1/calendars/{id}
@required {id: str}
@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)}}}

@endpoint DELETE /setup/v1/calendars/{id}
@required {id: str}
@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)}}}

@endpoint PUT /setup/v1/calendars/{id}/recover
@required {id: str}
@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)}}}

@endpoint GET /setup/v1/calendars/{id}/services
@required {id: str}
@optional {offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}

@endpoint GET /setup/v1/calendars/{id}/blocks
@required {id: str}
@optional {offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}
@errors {400, 401, 404}

@endpoint GET /setup/v1/calendars/blocks/{id}
@required {id: 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?}

@endpoint POST /setup/v1/calendars/{id}/block
@required {id: str}
@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?}

@endpoint PUT /setup/v1/calendars/block/{id}
@required {id: str}
@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?}

@endpoint DELETE /setup/v1/calendars/block/{id}
@required {id: 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?}

@endpoint GET /setup/v1/companies
@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}

@endpoint PUT /setup/v1/companies
@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}

@endpoint POST /setup/v1/companies
@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}

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

@endpoint POST /setup/v1/companies/domains
@optional {domain: str}
@returns(200) {object: str?, id: str?, domain: str?}

@endpoint GET /setup/v1/companies/domains/{id}
@required {id: str}
@returns(200) {object: str?, id: str?, domain: str?}

@endpoint PUT /setup/v1/companies/domains/{id}
@required {id: str}
@optional {domain: str}
@returns(200) {object: str?, id: str?, domain: str?}

@endpoint DELETE /setup/v1/companies/domains/{id}
@required {id: str}
@returns(200) {object: str?, id: str?, domain: str?}

@endpoint GET /setup/v1/companies/regions
@optional {offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}
@errors {400, 401, 404}

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

@endpoint GET /setup/v1/companies/regions/{id}
@required {id: str}
@returns(200) {object: str?, id: str?, name: str?}

@endpoint PUT /setup/v1/companies/regions/{id}
@required {id: str}
@optional {name: str}
@returns(200) {object: str?, id: str?, name: str?}

@endpoint DELETE /setup/v1/companies/regions/{id}
@required {id: str}
@returns(200) {object: str?, id: str?, name: str?}

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

@endpoint GET /setup/v1/companies/email/templates/{templateName}
@required {templateName: str}
@returns(200) {content: str?, contentType: str?, statusCode: int(int32)?}

@endpoint GET /setup/v1/companies/email/templates/master
@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}

@endpoint POST /setup/v1/companies/email/templates/master
@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}

@endpoint DELETE /setup/v1/companies/email/templates/master
@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}

@endpoint GET /setup/v1/companies/timezones/{date}
@required {date: str(date-time)}
@returns(200) {object: str?, regions: [str]?, timezones: [map]?}

@endpoint GET /setup/v1/customers
@optional {locationId: str, groupId: str, email: str, lastname: str, deleted: bool, offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}

@endpoint GET /setup/v1/customers/{id}
@required {id: str}
@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?}

@endpoint GET /setup/v1/customers/{id}/privacy
@required {id: str}
@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]?}

@endpoint GET /setup/v1/locations
@optional {name: str, serviceId: str, friendlyId: str, deleted: bool, offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}

@endpoint POST /setup/v1/locations
@optional {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)}}

@endpoint GET /setup/v1/locations/{id}
@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)}}

@endpoint PUT /setup/v1/locations/{id}
@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)}}

@endpoint DELETE /setup/v1/locations/{id}
@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)}}

@endpoint POST /setup/v1/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)

@endpoint PUT /setup/v1/locations/{id}/settings/scope/{settingsScope}
@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)}}

@endpoint PUT /setup/v1/locations/{id}/holidays/{holidayId}/{closed}
@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)}}

@endpoint PUT /setup/v1/locations/{id}/recover
@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)}}

@endpoint GET /setup/v1/locations/{id}/services
@required {id: str}
@optional {offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}
@errors {400, 401, 404}

@endpoint POST /setup/v1/locations/{id}/services
@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)}}

@endpoint DELETE /setup/v1/locations/{id}/services
@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)}}

@endpoint GET /setup/v1/locations/services/{id}
@required {id: str}
@returns(200) {object: str?, id: int(int32), serviceId: int(int32), serviceName: str?}
@errors {400, 401, 404}

@endpoint DELETE /setup/v1/locations/services/{id}
@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)}}

@endpoint POST /setup/v1/locations/{id}/uploadimage
@required {id: str}
@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)}}

@endpoint DELETE /setup/v1/locations/{id}/deleteimage
@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)}}

@endpoint DELETE /setup/v1/locations/{id}/deleteallimages
@required {id: str}
@optional {uppercase: bool}
@returns(200)

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

@endpoint POST /setup/v1/locations/{id}/email/templates
@required {id: str}
@optional {templateName: str, templateContent: str}
@returns(200) {content: str?, contentType: str?, statusCode: int(int32)?}

@endpoint GET /setup/v1/locations/{id}/email/templates/{templateName}
@required {id: str, templateName: str}
@returns(200) {content: str?, contentType: str?, statusCode: int(int32)?}

@endpoint DELETE /setup/v1/locations/{id}/email/templates/{templateName}
@required {id: str, templateName: str}
@returns(200) {content: str?, contentType: str?, statusCode: int(int32)?}

@endpoint GET /setup/v1/locations/{id}/email/templates/master
@required {id: str}
@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}

@endpoint POST /setup/v1/locations/{id}/email/templates/master
@required {id: str}
@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}

@endpoint DELETE /setup/v1/locations/{id}/email/templates/master
@required {id: str}
@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}

@endpoint GET /setup/v1/locations/{id}/google/service/account
@required {id: str}
@optional {verify: bool}
@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]?}

@endpoint POST /setup/v1/locations/{id}/google/service/account
@required {id: str}
@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?}

@endpoint DELETE /setup/v1/locations/{id}/google/service/account
@required {id: str}
@returns(200)

@endpoint GET /setup/v1/locations/{id}/appointmentreminders
@required {id: str}
@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)}

@endpoint PUT /setup/v1/locations/{id}/appointmentreminders
@required {id: str}
@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)}}

@endpoint GET /setup/v1/resourcegroups
@optional {locationId: str, deleted: bool, offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}

@endpoint POST /setup/v1/resourcegroups
@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)?}

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

@endpoint PUT /setup/v1/resourcegroups/{id}
@required {id: str}
@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)?}

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

@endpoint PUT /setup/v1/resourcegroups/{id}/recover
@required {id: 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?}}

@endpoint GET /setup/v1/resources
@optional {locationId: str, resourceGroupId: str, email: str, name: str, deleted: bool, googleAuthReturnUrl: str, outlookAuthReturnUrl: str, offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}
@errors {400, 404}

@endpoint POST /setup/v1/resources
@optional {googleAuthReturnUrl: str, outlookAuthReturnUrl: str, 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?}}

@endpoint GET /setup/v1/resources/{id}
@required {id: str}
@optional {googleAuthReturnUrl: str, outlookAuthReturnUrl: 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?}}

@endpoint PUT /setup/v1/resources/{id}
@required {id: str}
@optional {googleAuthReturnUrl: str, outlookAuthReturnUrl: str, 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?}}

@endpoint DELETE /setup/v1/resources/{id}
@required {id: 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?}}

@endpoint GET /setup/v1/resources/{id}/calendar/auth/google/{googleEmailAddress}
@required {id: str, googleEmailAddress: str}
@optional {googleAuthReturnUrl: str}
@returns(200) {object: str?, calendarId: str?, calendarAuthUrl: str?}

@endpoint GET /setup/v1/resources/{id}/calendar/auth/outlook/{outlookEmailAddress}
@required {id: str, outlookEmailAddress: str}
@optional {outlookAuthReturnUrl: str}
@returns(200) {object: str?, calendarId: str?, calendarAuthUrl: str?}

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

@endpoint POST /setup/v1/resources/bulk
@optional {googleAuthReturnUrl: str, outlookAuthReturnUrl: str, 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)

@endpoint PUT /setup/v1/resources/bulk
@optional {googleAuthReturnUrl: str, outlookAuthReturnUrl: str, 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)

@endpoint PUT /setup/v1/resources/{id}/reassign/appointments/{resourceId}
@required {id: str, resourceId: str}
@optional {startDate: str(date-time), endDate: str(date-time), calendarId: str}
@returns(200)

@endpoint PUT /setup/v1/resources/{id}/recover
@required {id: str}
@optional {googleAuthReturnUrl: str, outlookAuthReturnUrl: 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?}}

@endpoint GET /setup/v1/resources/{id}/availability
@required {id: str}
@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?}}}

@endpoint PUT /setup/v1/resources/{id}/availability
@required {id: str}
@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?}}}

@endpoint GET /setup/v1/resources/{id}/allocations
@required {id: str}
@optional {startDate: str(date-time), endDate: str(date-time), offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}
@errors {400, 401, 404}

@endpoint POST /setup/v1/resources/{id}/allocations
@required {id: str}
@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?}

@endpoint GET /setup/v1/resources/allocations/{id}
@required {id: 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?}

@endpoint PUT /setup/v1/resources/allocations/{id}
@required {id: str}
@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?}

@endpoint DELETE /setup/v1/resources/allocations/{id}
@required {id: 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?}

@endpoint GET /setup/v1/resources/{id}/blocks
@required {id: str}
@optional {startDate: str(date-time), endDate: str(date-time), offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}
@errors {400, 401, 404}

@endpoint GET /setup/v1/resources/blocks/{id}
@required {id: 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?}

@endpoint POST /setup/v1/resources/{id}/block
@required {id: str}
@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?}

@endpoint PUT /setup/v1/resources/block/{id}
@required {id: str}
@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?}

@endpoint DELETE /setup/v1/resources/block/{id}
@required {id: 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?}

@endpoint POST /setup/v1/resources/{id}/services
@required {id: 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?}}

@endpoint PUT /setup/v1/resources/{id}/services
@required {id: 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?}}

@endpoint DELETE /setup/v1/resources/{id}/services
@required {id: 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?}}

@endpoint POST /setup/v1/resources/{id}/uploadimage
@required {id: str}
@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?}}

@endpoint DELETE /setup/v1/resources/{id}/deleteimage
@required {id: 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?}}

@endpoint GET /setup/v1/servicegroups
@optional {locationId: str, offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}

@endpoint POST /setup/v1/servicegroups
@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}

@endpoint GET /setup/v1/servicegroups/{id}
@required {id: int(int32)}
@returns(200) {object: str?, imageUrl: str?, id: str?, companyId: str?, locationId: str?, name: str?, type: int(int32), description: str?, isDeleted: bool}

@endpoint PUT /setup/v1/servicegroups/{id}
@required {id: int(int32)}
@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}

@endpoint DELETE /setup/v1/servicegroups/{id}
@required {id: int(int32)}
@returns(200) {object: str?, imageUrl: str?, id: str?, companyId: str?, locationId: str?, name: str?, type: int(int32), description: str?, isDeleted: bool}

@endpoint PUT /setup/v1/servicegroups/{id}/recover
@required {id: int(int32)}
@returns(200) {object: str?, imageUrl: str?, id: str?, companyId: str?, locationId: str?, name: str?, type: int(int32), description: str?, isDeleted: bool}

@endpoint GET /setup/v1/services
@optional {locationId: str, serviceGroupId: int(int32), deleted: bool, offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}

@endpoint POST /setup/v1/services
@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?}}

@endpoint GET /setup/v1/services/{id}
@required {id: int(int32)}
@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?}}

@endpoint PUT /setup/v1/services/{id}
@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?}}

@endpoint DELETE /setup/v1/services/{id}
@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?}}

@endpoint GET /setup/v1/services/{id}/resources
@required {id: str}
@optional {offset: int(int32), limit: int(int32), googleAuthReturnUrl: str, outlookAuthReturnUrl: str}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}

@endpoint PUT /setup/v1/services/{id}/recover
@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?}}

@endpoint GET /setup/v1/services/{id}/blocks
@required {id: str}
@optional {startDate: str(date-time), endDate: str(date-time), offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}
@errors {400, 401, 404}

@endpoint GET /setup/v1/services/blocks/{id}
@required {id: 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?}

@endpoint POST /setup/v1/services/{id}/block
@required {id: str}
@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?}

@endpoint PUT /setup/v1/services/block/{id}
@required {id: str}
@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?}

@endpoint DELETE /setup/v1/services/block/{id}
@required {id: 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?}

@endpoint GET /setup/v1/services/{id}/calendar
@required {id: str}
@optional {locationId: str}
@returns(200) {id: str?, locationId: str?, calendarId: str?, calendarName: str?, serviceId: str?, serviceName: str?}

@endpoint POST /setup/v1/services/calendar
@optional {locationId: str, serviceId: str, calendarId: str}
@returns(200) {id: str?, locationId: str?, calendarId: str?, calendarName: str?, serviceId: str?, serviceName: str?}

@endpoint DELETE /setup/v1/services/calendar/{id}
@required {id: str}
@returns(200) {id: str?, locationId: str?, calendarId: str?, calendarName: str?, serviceId: str?, serviceName: str?}

@endpoint GET /setup/v1/services/{id}/availability
@required {id: str}
@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?}}}

@endpoint PUT /setup/v1/services/{id}/availability
@required {id: str}
@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?}}}

@endpoint GET /setup/v1/services/{id}/allocations
@required {id: str}
@optional {locationId: str, resourceId: str, startDate: str(date-time), endDate: str(date-time), offset: int(int32), limit: int(int32)}
@returns(200) {object: str?, url: str?, hasMore: bool, count: int(int32), total: int(int32), data: [map]?}
@errors {400, 401, 404}

@endpoint POST /setup/v1/services/{id}/allocations
@required {id: str}
@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?}}

@endpoint GET /setup/v1/services/allocations/{id}
@required {id: 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?}}

@endpoint PUT /setup/v1/services/allocations/{id}
@required {id: str}
@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?}}

@endpoint DELETE /setup/v1/services/allocations/{id}
@required {id: 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?}}

@endpoint POST /setup/v1/services/{id}/allocations/bulk
@required {id: str}
@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)

@endpoint POST /setup/v1/services/{id}/uploadimage
@required {id: str}
@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?}}

@endpoint DELETE /setup/v1/services/{id}/deleteimage
@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?}}

@end
