1"use strict";(self.webpackChunkdeveloper_portal=self.webpackChunkdeveloper_portal||[]).push([[7434],{93939:e=>{e.exports=JSON.parse('{"url":"redocusaurus/getting-started-spec.yaml","themeId":"theme-redoc","isSpecFile":true,"spec":{"openapi":"3.0.0","info":{"version":"2.0","title":"Getting Started with Setster API - Developer\'s Guide","description":"Begin your journey with Setster\'s API. This guide provides step-by-step instructions for initial setup, authentication, and basic requests to kickstart your application\'s integration."},"servers":[{"url":"https://www.setster.com/api/v2"}],"tags":[{"name":"About Webhooks","description":"## What Are Webhooks?\\n\\nA webhook is an endpoint on your server that receives requests from Setster, notifying you about events that happen on your account, such as an appointment change. Once a webhook is set up, Setster will begin sending data to your server when it\'s available, with no further requests required as a one-way data sharing mechanism. Webhook events trigger the data to be sent to your server\'s endpoint via a POST request. In short, webhooks make getting near real-time data changes effortless. If this sounds too complicated, you may be looking to use the [Setster Zapier integration](https://support.setster.com/hc/en-us/articles/115002406753-Setster-and-Zapier) instead.\\n\\n### Webhook Event Triggers\\n\\nEvents trigger a webhook to send data to your application. For each Setster webhook, you create you can opt-in to one, multiple, or all events.\\n\\nThe Setster API fires webhooks for the following appointment events:\\n\\n| Event Name | Related Endpoint |\\n| ------------------------- | --------------------------------------------------------------------- |\\n| `appointment.created` | [Appointment Creation](/docs/api#operation/createAppointment) |\\n| `appointment.updated` | [Appointment Updated](/docs/api#operation/updateAppointment) |\\n| `appointment.deleted` | [Appointment Deleted](/docs/api#operation/deleteAppointment) |\\n| `appointment.rescheduled` | [Appointment Rescheduled](/docs/api/reschedule) |\\n| `appointment.reminder` | [Appointment Reminder](/docs/api#operation/createAppointmentReminder) |\\n| `appointment.canceled` | [Appointment Canceled](/docs/api/cancel) |\\n| `*` | Subscribe to all events |\\n\\n## How to Setup a Webhook\\n\\n1. Add a public endpoint on your server\\n2. Test your new endpoint\\n3. Configure webhook details\\n4. Create Setster webhook\\n5. Test webhook integration\\n\\n### Add New Endpoint\\n\\nTo set up a webhook, you\'ll need to add a new publicly accessible endpoint to your server. Setster will send unauthenticated POST requests to this endpoint, which could be written in Ruby, PHP, Node.js, or any server-side language.\\n\\n### Test Your Endpoint\\n\\nTest that your endpoint is public and can receive POST requests by sending a test request in your terminal or using a request client like Postman.\\n\\n### Configure Webhook Details\\n\\nAn example request body for creating a webhook is structured as follows:\\n\\n```JSON\\n{\\n \\"company_id\\": 24232,\\n \\"target_url\\": \\"\\",\\n \\"events\\": [\\n \\"appointment.created\\",\\n {\\n \\"event\\": \\"appointment.rescheduled\\",\\n \\"active\\": 0\\n }\\n ],\\n \\"active\\": 1\\n}\\n```\\n\\nIn this request body the **target_url**, **company_id**, and **events** array are required and the request must include your [session_token](/docs/api/appointment-booking#tag/Authentication-Token) retreived from authenticating your Setster API key.\\n\\n- Register your `target_url`. This is the new endpoint you created on your server for Setster to POST event data to.\\n- Enter your `company_id`. Your company id is returned from the [Authentication request](/docs/api/appointment-booking#tag/Authentication-Token).\\n- Select which events from the list of available events you\'d like to be sent to your `target_url` and add them to the `events` array\\n\\n[See Create a Webhook](/docs/api/webhooks/#tag/Webhooks/operation/createWebhook) for full the full webhook specification.\\n\\nOnce you\'ve finished editing all of the details you\'d like to add to your webhook, you\'re ready to make a POST request with the **/createWebhook** Setster endpoint. For sample request code [See Create a Webhook](/docs/api/webhooks/#tag/Webhooks/operation/createWebhook).\\n\\n### Test webhook integration\\n\\nTo test your webhook integration, make a test appointment change in the API that would trigger the event type(s) you\'ve added to your webhook(s).\\n\\n## Change Webhook Url\\n\\nAt some point in t
1ime, you may need to change your webhook. To do so you\'ll need to send a PUT request to the [/subscribe/{id}](/docs/api/webhooks/#tag/Webhooks/operation/updateWebhook) endpoint ensuring to update the `target_url` to your new server endpoint.\\n\\n0 - 1 - 2 - 3 - 4 - 6 - 8 - 9 - 10 - 11 - checked in 12 - just arrived 13 - delayed\\n\\n| Status Code | Status Definition |\\n| ----------- | ---------------------------------------------------------------- |\\n| `0` | Waiting email confirmation from the client |\\n| `1` | Email confirmed but not validated by the admin/provider |\\n| `2` | Email confirmed and validated or paid |\\n| `3` | Declined or canceled |\\n| `4` | Busy time imported from external sources (e.g., Google calendar) |\\n| `6` | Busy time imported from Zapier |\\n| `8` | Completed |\\n| `9` | No show (the scheduled event did not take place) |\\n| `10` | In progress |\\n| `11` | Checked-in |\\n| `12` | Just arrived |\\n| `13` | Delayed |\\n"},{"name":"Getting Started Intro","x-displayName":"Introduction","description":"The Setster API is used to control your account\'s data programmatically. The API is organized around REST and standard HTTP verbs. A consistent envelope is used for all responses alongside response codes to indicate the status of the message and any error codes. JSON is returned on all our API responses with a consistent structure for all messages.\\n\\n# Requirements\\n\\n- All requests to the API must be made using HTTPS.\\n- Majority of API endpoints authenticated\\n- All requests require your account\'s `company_id` to be included\\n- All POST and PUT should be made via `application/json`\\n\\n# Response Format\\n\\nAll responses include a statusCode, description, and some data.\\n\\n- The statusCode may be `null` or `0` for a successful operation\\n- Date formats may be returned with slight variations depending on the endpoint\\n- Resource IDs are returned as strings.\\n\\n| StatusCode | Description |\\n| ---------- | ---------------------- |\\n| 0 | OK |\\n| 1 | INVALID_PARAMETERS |\\n| 2 | INVALID_CREDENTIALS |\\n| 3 | ACCOUNT_NOT_ACTIVE |\\n| 4 | INTERNAL_ERROR |\\n| 5 | ERROR_SAVING_ENTITY |\\n| 6 | ERROR_DELETING |\\n| 7 | NOT_FOUND |\\n| 8 | NOT_ALLOWED |\\n| 9 | SLOT_NOT_AVAILABLE | Timeslot unavailable. See [Create Appointment](#operation/createAppointment) for detailed error messages |\\n| 10 | SLOT_OCCUPIED |\\n| 11 | ACCOUNTS_LIMIT_REACHED |\\n\\n# Authenticate\\n\\nTo use the Setster API, you will need the API key that you can find within your [Setster account](https://www.setster.com/signup). Treat your Setster API key as you would any other password taking care to never expose it in any public website\'s client-side code.\\n\\nThe first step to using the Setster API is to use your key to obtain a session token. To authenticate, you\'ll need to make a request to the [/account/authenticate](/docs/api#operation/createSessionTokenAuthenticate) endpoint with your API key and the email tied to your Setster account. The returned `session_token` and `company_id` are used for all API calls.\\n\\n```bash\\ncurl --location --request POST \'https://www.setster.com/api/v2/account/authenticate?email=EMAIL&token=TOKEN\'\\n```\\n\\n## Session Token Refresh\\n\\nWhen the session token expires, a 403 Forbidden response will be received, indicating the need for re-authentication and retrieval of a new token to maintain the connection. Instead of reauthenticating at regular intervals, it is advisable to perform this action as needed.\\n\\n# Errors & Debugging\\n\\nOccasionally you might encounter errors, but if something seems to be working incorrectly, please reach out to Setster support at [email protected].\\n\\n| Error Code | Error Type |\\n| ---------- | ---------------------------------- |\\n| 400 | Bad or invalid request |\\n| 401 | Unauthorized |\\n| 404 | Not Found |\\n| 500 | Internal Server Error Server error |\\n\\nWe recommend using the Setster Postman collection for debugging requests.\\n"},{"name":"Reschedule","description":"Modify appointment to reschedule it."},{"name":"Cancel","description":"Modify appointment to cancel it."},{"name":"Account","description":"This object is the Setster account created within the Setster service. \\nYou will need a Setster account to test or perform actions with API, and you can signup here.\\nAn account can be a parent account or a child account (sub-account).\\nThe account will hold general company information and various account-level settings that play an integral part in the booking logic."},{"name":"Authentication Token","x-displayName":"Get Session Token","description":"\x3c!-- ReDoc-Inject: <security-definitions> --\x3e"},{"name":"Select Location","x-displayName":"Select Location","description":"If the account has multiple locations, you\'ll need to retrieve them and select the one you\'ll book the appointment at. \\nIf the account has only one location, this step can be skipped, and the system will book the appointment within the single location."},{"name":"Select Employee","x-displayName":"Select Employee (Optional)","description":"If the user experience requires a specific employee to be selected during the booking flow, use this call to get the list of available employees. \\nThis step is optional if the account only has one employee or a specific employee is not required to be selected. In that case, the appointment will be assigned to the appropriate employee based on a round-robin approach. "},{"name":"Select Services","x-displayName":"Select Services","description":"Each service record has a `location_links` property that defines the links between the service, the employees, and the locations. This is how the system determines which service is offered at what location and by whom.\\n\\nThis information is used when displaying a list of available locations, services, and employees to the user to select when booking an appointment.\\nThis parameter is also available for the employee entity."},{"name":"Select Availability","x-displayName":"Select Availability","de
1scription":"Get the availability for the selected location(optional), employee(optional), service, and day/week.\\n\\n - If the location is not specified, then the default location for that company will be assigned. \\n - If the employee is not specified, then the pooled availability of all employees will be returned."},{"name":"Create Appointment","x-displayName":"Create an Appointment","description":"Once you have all the above selected, you\'re ready to construct the request to create a new appointment. Setster requires the name and email address of the client at a minimum to save an appointment. You can optionally include additional information like phone, address, and other information that can be passed using [Custom Fields](/docs/api#tag/Custom-Fields).\\n"},{"name":"Appointment","description":"An appointment (also known as a meeting or scheduled event) is the desired outcome of the booking.\\nEach appointment is assigned an ID and is linked to a client. Clients are created or updated with each appointment saved.\\n\\n"},{"name":"Availability","description":"The availability object is available times an appointment can be scheduled or booked. Each appointment saved will require an availability (the date and time of the appointment or meeting).\\n\\nFor availability to be retrieved during booking, it requires a service, location, and employee (optional) to be stated. \\n\\nAvailability also controls the public holidays set on the account level, preventing these days from being available."},{"name":"Client","description":"A client is automatically created or updated with each appointment saved. They are assigned an ID based on their unique email address."},{"name":"Custom Fields","description":"Custom fields, also known as booking forms in the Setster plug-and-play widget, are additional data sets saved with each appointment. These can be general questions asked clients during booking, for example: \\"How did you hear about us?\\" or they can be hidden data passed with the appointment, for example, \\"Order ID\\".\\n\\nKeep in mind the phone and address inputs within an appointment are considered custom fields as well."},{"name":"Employee","description":"An employee or also know as a staff member or a service provider can mean different things in different business models:\\n\\n1. An actual person who accepts appointments or manages a team. Each employee will have their own calendar and their own schedule and services they offer and can be linked to single or multiple locations. An assistant or receptionist that does not accept appointments is still considered an employee but will need to be set as INACTIVE \\"status\\": false. This employee can be named; for example: \\"John Smith\\" or can be generic such as \\"Support Person 1\\".\\n\\n2. Group or department, so if your business operates in teams or departments for a single appointment, this team is considered a single employee. They offer services as a group, and their calendar and schedule are combined\u2014for example, the \\"HR Department\\".\\n\\n3. A virtual entity, for example, if you rent out meeting rooms, an employee, in this case, is the room. The meeting room will have a calendar for others to book a time on. In this case, you would name the employee \\"Meeting Room A\\" for example.\\n\\nKeep in mind if your business operates generically, you can name your staff to match. For example \\"Clerk\\" or \\"Shopping Assistant\\". You can also opt to allow clients to pick an employee during booking or automatically assign appointments to the appropriate employee using a round-robin approach."},{"name":"Location","description":"A location is the defined place where the appointment or the meeting will take place, and multiple locations can be created within an account.\\nA location can be:\\n1. A physical or a geographical location of your business - If you meet with clients at your business, then this is considered a physical location. A physical location requires a full address. \\n\\n2. A virtual location - If you meet clients virtually, on the phone, or at their own location (home or office), then this is considered a virtual location. \\n\\n3. A department in your business - If you offer different services per department, then you can use the location feature to separate these departments. In this case, a location can be either geographical or virtual, depending on where you will be meeting.\\n\\n"},{"name":"Service","description":"\\nThe services are offerings of a company or catalog of available appointment pr meeting types. The service is a required field when booking an appointment and offers the most flexibility in booking logic and appointment settings.\\nA service can be:\\n1. A primary offering and relies on the employee availability for booking.\\n2. An event - relies on a
1set schedule that occurs at specific dates and times. This can be a single occurring event like a conference, or a recurring time, for example, mornings only on specific days. set_schedule=true\\n3. An add-on or sub-service to a service is an additional service the client can opt to add during booking. This adds additional time to the appointment duration. is_subservice=true"},{"name":"Time Zones","description":"Setster saves each appointment with a timezone that is correlated to an internal Setster timezone ID. When creating an appointment, you can specify the timezone ID (client\'s time zone or location time zone), and the API response will include the timezone ID, timezone details, and the offset in seconds."},{"name":"Webhooks","description":"Webhooks \\nReceive notifications with webhooks\\nSetster offers webhooks to notify your application when an event happens within your account. Webhooks are especially useful for asynchronous events and building workflows within your application. For example, a new appointment is created and triggers a set of customer communications within your application.\\n\\n\\n"},{"name":"Account Model","x-displayName":"Account","description":"# Account Info\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/Account\\" />\\n\\n# Business Info\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/AccountBusinessInfo\\" />\\n\\n# Options\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/AccountOptions\\" />\\n\\n# Personal Info\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/AccountPersonalInfo\\" />\\n"},{"name":"Appointment Model","x-displayName":"Appointment","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/Appointment\\" />"},{"name":"Availability Model","x-displayName":"Availability","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/AvailabilityDetails\\" />"},{"name":"Client Model","x-displayName":"Client","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/Client\\" />"},{"name":"Custom Field Model","x-displayName":"Custom Fields","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/CustomField\\" />"},{"name":"Employee Model","x-displayName":"Employee","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/Employee\\" />\\n\\n# Availability\\n<SchemaDefinition schemaRef=\\"#/components/schemas/EmployeeAvailability\\" />"},{"name":"Location Model","x-displayName":"Location","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/Location\\" />"},{"name":"Service Model","x-displayName":"Service","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/Service\\" />\\n\\n# Schedule\\n<SchemaDefinition schemaRef=\\"#/components/schemas/ServiceSchedule\\" />"},{"name":"Time Zone Model","x-displayName":"Time Zones","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/TimeZone\\" />\\n\\n# Time\\n<SchemaDefinition schemaRef=\\"#/components/schemas/Time\\" />"},{"name":"Webhooks Model","x-displayName":"Webhooks","description":"\\n# Write\\n<SchemaDefinition schemaRef=\\"#/components/schemas/WriteWebhook\\" />\\n\\n# Read\\n<SchemaDefinition schemaRef=\\"#/components/schemas/ReadWebhook\\" />\\n\\n# Event\\n<SchemaDefinition schemaRef=\\"#/components/schemas/WebhookEvent\\" />"},{"name":"Configuration","description":"# Settings File\\nThe settings file is a json file where we can set different parameters which we use in the widget. When cloning the git project under config/src folder you will find a settings.json file. This file is added to git, so we don\u2019t modify this for now. In order to overwrite the settings file you need to create a settings.local.json file. The settings from the local file will overwrite everything that exists in the settings.json file.\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/Settings\\" />\\n\\n# Steps\\nOur widget supports different types of steps that you can add. Each step type has parameters that will be on each step as well as parameters that are specific to a certain step type. Below we will explain each step type:\\n\\
1n## Info\\nThis step is a presentational step only. It shows an information page where you can inform the user about different things. It is mostly used as an ending step if the user selects a sequence of different steps that lead to a point where you are not allowed to make an appointment.\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/Info\\" />\\n\\n\\n## Tiles\\nThis step can be used to show a grid of tiles from which the user can select. This step can be a multi tile select step or a single tile select step.\\n\\n<img src=\'/docs/images/tilesSnippet.png\' alt=\'tiles img\'/>\\n\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/Tiles\\" />\\n\\n## Image Map\\nThis step can be used to create an image map. It is used to create different click-able areas on an image. This will allow to create a more visual experience for different approaches (selecting a parking lot, a seat at a table, etc.). Note that this is a presentational step and it is not tied down to the availability. For the example of parking lots, if a lot is selected on a previous appointment, we can\u2019t show it as taken.\\n\\n<img src=\'/docs/images/ImageMapSnippet.png\' alt=\'Image Map\'/>\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/ImageMap\\" />\\n\\n## Locations\\nThis step can be used to show the locations that are defined in Setster as a list. This step is tied down to Setster API and it fetches information from Setster.\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/Locations\\" />\\n\\n## Locations Map\\nThis step can be used to show the locations that are defined in Setster on a Google Map. This step is tied down to Setster API and it fetches information from Setster. When using this step, you have to also define the \u201cgoogleMapOptions\u201d parameter.\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/LocationsMap\\" />\\n\\n## Calendar\\nThis step can be used to show the Setster booking calendar step. This step is tied down to Setster API and it fetches information from Setster. Also, this step is mandatory as this is the step that will lead you to the submit page.\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/Calendar\\" />\\n\\n## Services\\nThis step can be used to show the services that are defined in Setster as a list. This step is tied down to Setster API and it fetches information from Setster.\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/Services\\" />\\n\\n## Staff\\nThis step can be used to show the staff members that are defined in Setster as a list. This step is tied down to Setster API and it fetches information from Setster.\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/Staff\\" />\\n\\n## Filters\\nFilters are a way to filter the result fetched from Setster. They are available as a parameter on the following step types: \u2018locations\u2019, \u2018locations-map\u2019, \u2018services\u2019 and \u2018staff\u2019. Filters are being applied to the step inside which they are defined. We will start with a full example and describe what each parameter does and after that go over some other examples of use.\\n\\n<SchemaDefinition schemaRef=\\"#/components/schemas/Filters\\" />"},{"name":"Authentication","description":"\x3c!-- ReDoc-Inject: <security-definitions> --\x3e"},{"name":"API Key","description":"In order to use the Setster API you will need the API key that you can find within your Setster account. The Setster API works on HTTPS only.\\n<div class=\\"ui red icon message\\"> <div class=\\"content\\"> <i class=\\"info icon\\"></i> <p> Never expose your API key in any public website\'s client-side code. </p> </div> </div>\\n<br> <br> <img src=\\"/docs/images/GetAPIKey.png\\" alt=\\"Get API Key\\"></img>"},{"name":"Getting Started General","x-displayName":"Getting Started","description":"Setster\u2019s scheduling platform employs a RESTful API that is easily deployed, secure and highly scalable to meet enterprise needs.\\n\\nYou can schedule thousands of appointments, remotely manage all of their parameters, track all user activity and plug Setster within your business workflow. In layman terms, with Setster, you can add massive scheduling capacity anywhere within your enterprise.\\n\\n\\
1n# Create Account\\nThe first step to getting started using Setster to solve your complex scheduling needs is to create an account. The intuitive onboarding will walk you through adding all of the details about your business, locations, services, and staff that are a core component of developing your custom scheduling experience.\\n\\n\\n<button name=\\"button\\" onclick=\\"window.open(\'https://setster.com/signup\')\\" class=\\"setster-btn\\">Sign Up</button>"},{"name":"Getting Started API","x-displayName":"Getting Started","description":"Setster\'s scheduling platform employs a RESTful API that is easily deployed, secure, and highly scalable to meet enterprise needs.\\n\\nYou can schedule thousands of appointments, remotely manage all of their parameters, track all user activity and plug Setster within your business workflow. In layman\'s terms, with Setster, you can add massive scheduling capacity anywhere within your enterprise.\\n\\n# Create Account\\n\\nThe first step to getting started using Setster to solve your complex scheduling needs is to create an account. The intuitive onboarding will walk you through adding all of the details about your business, locations, services, and staff that are a core component of developing your custom scheduling experience.\\n\\n<button name=\\"button\\" onclick=\\"window.open(\'https://www.setster.com/signup\')\\" class=\\"setster-btn\\">Sign Up</button>\\n\\n# API Key\\n\\nTo use the Setster API, you will need the API key found within your Setster account. The Setster API works on HTTPS only.\\n\\n<div class=\\"ui red icon message\\">\\n <div class=\\"content\\"> \\n <i class=\\"info icon\\"></i>\\n <p>\\n Never expose your API key in any public website\'s client-side code.\\n </p>\\n </div>\\n</div>\\n\\n<br/>\\n<br/>\\n<img src=\\"/docs/images/GetAPIKey.png\\" alt=\\"Get API Key\\"/>\\n\\n# Postman Collection\\n\\nIn this guide, we\'ll be using a Postman Collection to test out sending requests to the Setster API with a final goal of creating a new appointment.\\n\\n**Download and Import Collection**\\nTo use the provided Postman Collection, you\'ll need to import it into your workspace. Detailed instructions on importing collections can be found at the official <a href=\\"https://learning.postman.com/docs/getting-started/importing-and-exporting/importing-and-exporting-overview/\\" target=\\"_blank\\">Postman docs here</a>.\\n\\n<a class=\\"btn btn-danger setster-btn\\" style=\\"color:white;\\" role=\\"button\\" href=\\"/docs/Setster Scheduling API.postman_collection.json\\" download=\\"Setster Scheduling API.postman_collection.json\\">Download Postman Collection</a>\\n\\n## Structure\\n\\nFor the purpose of this getting started guide, we\'ll be working within the **Basic Appointment Booking** folder.\\n\\n<img src=\\"/docs/images/collectionFolders.png\\" alt=\\"Collection Variables\\" style=\\"max-width:500px\\"/>\\n\\n## Collection Variables\\n\\nIn this collection we\'ll be making use of <a href=\\"https://learning.postman.com/docs/sending-requests/variables/#defining-collection-variables\\" target=\\"_blank\\">Collection Variables</a> to store data that we retrieve from a sequence of requests. To access and edit these variables edit the collection details and navigate to the variables section.\\n\\n<img src=\\"/docs/images/collectionVariables.png\\" alt=\\"Collection Variables\\" style=\\"max-width:500px\\"/>\\n\\n## Authenticate\\n\\nAuthenticate your key to get your session token. We\'ll use the session_token property from this response to send to all future requests.\\n\\n### Using Postman\\n\\n1. Import the [Postman Collection](#section/Postman-Collection) and locate the **Basic Appointment Booking** folder.\\n2. Before making your first request, you\'ll need to update the `email` and `API_TOKEN` [collection variables](#section/Postman-Collection/Collection-Variables).\\n3. Open the **Auth Get Session Token** POST request from within the **1. Get Session Token** folder\\n4. Click the **Send** button to run the authentication POST request\\n5. Your **SESSION_TOKEN** and **company_id** will automatically set in the collection variables after the initial authentication request.\\n6. Open the collection variables to confirm the **SESSION_TOKEN**, and **company_id** values are now populated before moving forward.\\n\\n<div class=\\"ui yellow icon message\\">\\n <div class=\\"content\\"> \\n <i class=\\"info icon\\"></i>\\n <p>\\n The <b>SESSION_TOKEN</b> and <b>company_id</b> variables will be required params in all subsequent requests.\\n </p>\\n </div>\\n</div>\\n"},{"name":"Getting Started Booking","x-displayName":"Widget Setup","description":"\\nSetster\u2019s scheduling platform employs a RESTful API that is easily deployed, secure and highly scalable to meet enterprise needs.\\n\\nYou can schedule thousands of appointments, remotely manage all of their parameters, track all user activity and plug Setster within your business workflow. In layman terms, with Setster, you can add massive scheduling capacity anywhere within your enterprise.\\n\\n## Requirements\\n\\n- [ ] Confirm Node v10.13.0 is installed and being used in your project directory\\n- [ ] Confirm NPM is installed\\n- [ ] Confirm Yarn is installed\\n- [ ] <a href=\\"https://github.com/boxador/setster-widget\\" target=\\"_blank\\">Clone the setster-widget repo</a>
1\\n- [ ] Install dependencies\\n- [ ] Start app\\n\\n### __1. <a href=\\"https://nodejs.org/en/blog/release/v10.13.0/\\" target=\\"_blank\\">Install Node v10.13.0</a>__ \\nYour machine may already have a pre-installed version of Node. However, you may need to install the `v10.13.0` version which is required for creating a Setster Booking Widget.\\n\\n#### Check Node Version\\nIn the terminal for your project, the following command should list what version of node you\'re currently using. If it doesn\'t print your current node version then you\'ll need to install Node.\\n\\nIn your terminal run:\\n```\\nnode -v\\n```\\n\\n##### Install Node\\nIf the above command does not print out a node version you\'ll need to install Node.\\n\\n<button name=\\"button\\" onclick=\\"window.open(\'https://nodejs.org/en/blog/release/v10.13.0/\')\\" class=\\"setster-btn\\">Install Node v10.13.0</button>\\n\\n##### Switch Node Version\\nIf you already have Node installed, but it\'s the not right version it\'s advisable to use a version manager like <a href=\\"https://github.com/nvm-sh/nvm/blob/master/README.md\\" target=\\"_blank\\">nvm</a> (Node Version Manager) to switch the `v10.13.0` Node version from your project directory.\\n\\nOnce nvm is installed you can install the `v10.13.0` version and switch to using it in your project by running:\\n```\\nnvm install v10.13.0\\nnvm use v10.13.0\\n```\\nThen, confirm the correct Node version is selected by running:\\n```\\nnvm list\\n```\\nor\\n```\\nnode -v\\n```\\n\\n\u2139 _Now you will be able to easily install and switch between different Node versions using nvm._\\n\\n\\n#### <a href=\\"https://www.npmjs.com/get-npm\\" target=\\"_blank\\">Confirm NPM Installation</a>\\nNpm should automatically install on your machine upon installing node. In your terminal run this command to check if it is properly installed:\\n```\\nnpm -v\\n```\\nIf this command does not return the npm version <a href=\\"https://www.npmjs.com/get-npm\\" target=\\"_blank\\">debug and install npm here</a>.\\n\\n#### <a href=\\"https://classic.yarnpkg.com/en/docs/install/#mac-stable\\" target=\\"_blank\\">Install Yarn</a>\\nWe\'ll be using yarn to install our dependencies, but this can also be done using npm.\\n\\nTo install Yarn run:\\n```\\nnpm install --global yarn\\n```\\n\\nThen check the installed version of yarn with this command in your terminal:\\n```\\nyarn -v\\n```\\n\\n***\\n\\n## Local Setup\\n\\nThe first step to getting started using Setster to solve your complex scheduling needs is to create an account. The intuitive onboarding will walk you through adding all of the details about your business, locations, services, and staff that are a core component of developing your custom scheduling experience.\\n\\n### Clone the setster-widget repo found here\\n<button name=\\"button\\" onclick=\\"window.open(\'https://github.com/boxador/setster-widget\')\\" class=\\"setster-btn\\">Clone Booking Widget Repo</button>\\n\\n### Install dependencies\\nMove inside the new created folder after you cloned the repo. From inside the folder you need to run the following commands from the terminal:\\n```\\nyarn install\\n```\\n\\n### Start app\\nAfter everything is installed you can either start the widget in development mode or build the widget. When building the widget, the code will be minified and concatenated and everything will be moved inside the \u201cbuild\u201d folder. All files from the \u201cbuild\u201d folder can be moved to a server which will have to serve the app.html file (or you can open the file in a browser). That is the entry point of the widget. When testing it is better to start the widget in development mode. This will create a web server and serve the widget from https://localhost:8081\\n\\n```\\n#Build\\nyarn build:staging\\n \\n#Run in development mode\\nyarn start:dev\\n```\\n"}
1,{"name":"Core Concepts Booking","x-displayName":"Concepts","description":"A summary of responses can be configured to show on the final appointment booking screen (as shown below).\\n<img src=\\"/images/Summary.png\\" alt=\\"Summary\\" style=\\"padding-top:15px;\\" />"},{"name":"Structure Booking","x-displayName":"Structure","description":"## Config\\nIn this workspace we have everything that is related to configuring the widget. In here you can add a custom local config file as well as custom theme files.\\n\\n### File Structure\\n\\n```\\nconfig\\n\u251c\u2500\u2500\u2500cert/ /* Optional: Development ssl certificate */\\n\u2502 \u251c\u2500\u2500\u2500csr.pem\\n\u2502 \u251c\u2500\u2500\u2500key.pem\\n\u2502 \u2514\u2500\u2500\u2500server.crt\\n\u251c\u2500\u2500\u2500src/\\n\u2502 \u251c\u2500\u2500\u2500theme/ /* Configure theme styles */\\n\u2502 \u2502 \u2514\u2500\u2500\u2500defaultTheme.ts\\n\u2502 \u251c\u2500\u2500\u2500build.ts\\n\u2502 \u251c\u2500\u2500\u2500constants.ts\\n\u2502 \u251c\u2500\u2500\u2500settings.json\\n\u2502 \u251c\u2500\u2500\u2500settings.local.json /* Add new configuration */\\n\u2502 \u2514\u2500\u2500\u2500settings.ts\\n\u251c\u2500\u2500\u2500package.json\\n\u251c\u2500\u2500\u2500tsconfig.json\\n\u2514\u2500\u2500\u2500webpack.config.ts\\n```\\n\\n#### Cert\\nThis folder keeps an https certificate that is used when starting the widget in development mode so that it runs on https.\\n\\n#### Src \\nThis is the main folder of the Config workspace. In this folder you need to create a settings.local.json file which will overwrite the default settings.json file. This file will have all the settings needed for the widget.\\n\\n#### Theme \\nIn this folder we have the defaultTheme.ts file which is the default widget theme file. In this folder you can add different theme files to fully customize the widget style. When adding a new theme file you need to duplicate the defaultTheme.ts file and change its name. There are more things to do when creating a new theme file but we will need to create a command which will automate the process as it is a bit cumbersome to do it manually.\\nIn order for the widget to use the new theme you need to specify the file name in the settings.json file under the \u201ctheme\u201d parameter. You need to specify only the file name without the extension.\\n\\n#### Settings.json\\nThis is the default settings file. Right now it has settings set in it but in the end this will be empty and we will automatically create a settings.local.json file so that there is no need to create it manually. \\n\\n\\n## Web\\nThis workspace was added in order for users to extend the core components in case they want to add custom functionality. This feature is not yet developed but we will try to figure out how to do that. For now, in here we keep the initialization files. The app is started from this workspace. We also keep assets that users will want to add to the default theme and also assets that can be used in the settings file, like tiles images and icons.\\n\\n### File Structure\\n\\n```\\nweb\\n\u251c\u2500\u2500\u2500assets/\\n\u2502 \u2514\u2500\u2500\u2500img/\\n\u251c\u2500\u2500\u2500public/\\n\u2502 \u2514\u2500\u2500\u2500index.html\\n\u251c\u2500\u2500\u2500src/\\n\u2502 \u251c\u2500\u2500\u2500templates/\\n\u2502 \u2502 \u2514\u2500\u2500\u2500app.html\\n\u2502 \u251c\u2500\u2500\u2500App.tsx\\n\u2502 \u251c\u2500\u2500\u2500index.css\\n\u2502 \u251c\u2500\u2500\u2500index.tsx\\n\u2502 \u2514\u2500\u2500\u2500react-app-env.d.ts\\n\u251c\u2500\u2500\u2500.eslintcache\\n\u251c\u2500\u2500\u2500README\\n\u251c\u2500\u2500\u2500package.json\\n\u2514\u2500\u2500\u2500tsconfig.json\\n```\\n\\n### Assets\\nIn this folder user can add assets like images that will be transferred to the build folder. Thse assets can be used in different steps configured in the settings.jsonjson) file. Also they can be used in the custom themes that users can create.\\n\\n### Src\\nThis folder keeps the application initialization file. From this folder the app is being initialized.\\n\\n<hr>\\n\\n## Core\\nIn this workspace we have the core components of the widget. This area will need to remain unedited by the users if they want to have forward compatibility with changes that we will add in the future. Users can modify or add files to this folder but they will need to take care of fixing conflicts that will arise when we do more commits along the way. I will explain each folder/file in this workspace at a later date as this is not yet finished and modifications will still be done to this workspace. \\n\\n### File Structure\\n\\n```\\ncore\\n\u251c\u2500\u2500\u2500src/\\n\u2502 \u251c\u2500\u2500\u2500components/\\n\u2502 \u2502 \u251c\u2500\u2500\u2500Calendar/\\n\u2502 \u2502 \u2502 \u251c\u2500\u2500\u2500SetsterCalendar.tsx\\n\u2502 \u2502 \u2502 \u251c\u2500\u2500\u2500SetsterCalendarMonth.tsx\\n\u2502 \u2502 \u2502 \u251c\u2500\u2500\u2500SetsterCalendarMonths.tsx\\n\u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500SetsterCalendarTimezone.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500Cancel.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500ImageMap.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500Info.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500Interogations.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500List.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500Loading.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500LocationsMap.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500Navigator.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500Reschedule.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500StepNavigation.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500Submit.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500Success.tsx\\n\u2502 \u2502 \u2514\u2500\u2500\u2500Tiles.tsx\\n\u2502 \u251c\u2500\u2500\u2500hooks/\\n\u2502 \u2502 \u251c\u2500\u2500\u2500filters.ts\\n\u2502 \u2502 \u251c\u2500\u2500\u2500linksCheck.ts\\n\u2502 \u2502 \u251c\u2500\u2500\u2500stripe.tsx\\n\u2502 \u2502 \u251c\u2500\u2500\u2500subItemsCheck.ts\\n\u2502 \u2502 \u2514\u2500\u2500\u2500widgetSize.ts\\n\u2502 \u251c\u2500\u2500\u2500interfaces/\\n\u2502 \u2502 \u251c\u2500\u2500\u2500location.interface.ts\\
1n\u2502 \u2502 \u251c\u2500\u2500\u2500provider.interface.ts\\n\u2502 \u2502 \u2514\u2500\u2500\u2500service.interface.ts\\n\u2502 \u251c\u2500\u2500\u2500statemanagement/\\n\u2502 \u2502 \u251c\u2500\u2500\u2500actions/\\n\u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500AppStateActions.ts\\n\u2502 \u2502 \u251c\u2500\u2500\u2500contexts/\\n\u2502 \u2502 \u2502 \u251c\u2500\u2500\u2500AnimationContext.ts\\n\u2502 \u2502 \u2502 \u251c\u2500\u2500\u2500AppContext.ts\\n\u2502 \u2502 \u2502 \u251c\u2500\u2500\u2500PersistentContext.ts\\n\u2502 \u2502 \u2502 \u251c\u2500\u2500\u2500StripeContext.ts\\n\u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500StylesContext.ts\\n\u2502 \u2502 \u251c\u2500\u2500\u2500reducers/\\n\u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500AppReducer.ts\\n\u2502 \u2502 \u2514\u2500\u2500\u2500states/\\n\u2502 \u2502 \u251c\u2500\u2500\u2500AnimationState.ts\\n\u2502 \u2502 \u251c\u2500\u2500\u2500AppState.ts\\n\u2502 \u2502 \u2514\u2500\u2500\u2500PersistentState.ts\\n\u251c\u2500\u2500\u2500package.json\\n\u2514\u2500\u2500\u2500tsconfig.json\\n```"},{"name":"Syncing Data","x-displayName":"Syncing Setster Data","description":""},{"name":"Getting Started Reschedule Appointment","x-displayName":"Reschedule Appointment","description":"## Rescheduling Appointments\\n\\nRescheduling is moving an appointment to a different date, time, location, or service. A `PUT` is used to edit the parameters of an existing appointment.\\n\\nSteps to reschedule an appointment:\\n\\n1. Make a GET request to [List Appointments](/docs/api#operation/listAppointments) to retrieve appointments - You may wish to include a client email, or client ID o narrow the appointments to a specific user.\\n2. Locate the appointment you would like to update from the list of appointments in the response body.\\n3. Take note of the appointment `id`, `service_id`, and other parameters for later use.\\n4. Make a GET request to [Get Availability](/docs/api#operation/listAvailability) of the appointment\'s selected service by including the `service_id` you previously noted.\\n5. Once you\'ve found the desired available date and time, take note of the `day`, `month`, `year`, and `time`.\\n6. Construct the `start_date` that will be used in the next request by combining the `day`, `month`, `year`, and `time` into a string formatted as **\\"yyyy-mm-dd hh:mm:ss\\"**. For example: 2019-09-01 12:00\\n7. Finally, you\'re ready to make a PUT request to the [Modify Appointment Endpoint](/docs/api#operation/updateAppointment) to update the appointment time - completing the rescheduling process.\\n\\n## Update and Reschedule Your Appointment\\n\\nAfter completing the previous steps you should make a `PUT` request to the `https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&company_id=COMPANY_ID&id=ID` replacing the `id` path parameter with the appointment id.\\n\\n```json\\n{\\n \\"company_id\\": \\"{{company_id}}\\",\\n \\"client_email\\": \\"<string>\\",\\n \\"client_name\\": \\"<string>\\",\\n \\"service_id\\": \\"{{service_id}}\\",\\n \\"start_date\\": \\"{{start_date}}\\",\\n \\"client_phone\\": \\"<string>\\",\\n \\"client_address\\": \\"<string>\\",\\n \\"employee_id\\": \\"<long>\\",\\n \\"location_id\\": \\"<long>\\",\\n \\"duration\\": 15,\\n \\"note\\": \\"<string>\\",\\n \\"subservices\\": \\"<string>\\",\\n \\"paid\\": false,\\n \\"price\\": 0,\\n \\"custom_data\\": \\"<object>\\",\\n \\"timezone_id\\": \\"<integer>\\"\\n}\\n```\\n"},{"name":"Getting Started Cancel Appointment","x-displayName":"Cancel Appointment","description":"## Canceling Appointments\\n\\nCanceling an appointment keeps a record of the appointment and amends the status to Canceled. Canceling is different from deleting an appointment which will completely erase the appointment from the Setster database.\\n\\nThe steps to cancel an appointment are as follows:\\n\\n1. Make a GET request to [List Appointments](/docs/api#operation/listAppointments) to retrieve appointments - You may wish to include a client email, or client ID o narrow the appointments to a specific user.\\n2. Locate the appointment you would like to cancel from the list of appointments in the response body.\\n3. Take note of the appointment\'s `id` for later use.\\n4. To cancel, you\'ll need to update the appointment\'s status to `\\"status\\": 3`. The complete list of appointment status codes are listed below.\\n5. Finally, you\'re ready to make a PUT request to the [Modify Appointment Endpoint](/docs/api#operation/updateAppointment) to update the appointment status to `3` - completing the appointment cancellation process.\\n\\n## Update Appointment Status to Canceled\\n\\nAfter completing the previous steps you should make a `PUT` request to the `https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&company_id=COMPANY_ID&id=ID` replacing the `id` path parameter with the appointment id.\\n\\n```json\\n{\\n \\"status\\": 3, // Status code 3 to cancel appointment\\n \\"company_id\\": \\"{{company_id}}\\",\\n \\"client_email\\": \\"<string>\\",\\n \\"client_name\\": \\"<string>\\",\\n \\"service_id\\": \\"<integer>\\",\\n \\"start_date\\": \\"<integer>\\",\\n \\"client_phone\\": \\"<string>\\",\\n \\"client_address\\": \\"<string>\\",\\n \\"employee_id\\": \\"<long>\\",\\n \\"location_id\\": \\"<long>\\",\\n \\"duration\\": 15,\\n \\"note\\": \\"<string>\\",\\n \\"subservices\\": \\"<integer>\\",\\n \\"paid\\": false,\\n \\"price\\": 0,\\n \\"custom_data\\": \\"<object>\\",\\n \\"timezone_id\\": \\"<integer>\\"\\n}
1\\n```\\n\\n## Appointment Status Codes\\n\\n| Status Code | Status Definition |\\n| ----------- | ---------------------------------------------------------------- |\\n| `0` | Waiting for email confirmation from the client |\\n| `1` | Email confirmed but not validated by the admin/provider |\\n| `2` | Email confirmed and validated or paid |\\n| `3` | **Declined or canceled** |\\n| `4` | Busy time imported from external sources (e.g., Google calendar) |\\n| `6` | Busy time imported from Zapier |\\n| `8` | Completed |\\n| `9` | No show (the scheduled event did not take place) |\\n| `10` | In progress |\\n| `11` | Checked-in |\\n| `12` | Just arrived |\\n| `13` | Delayed |\\n\\n## Rescheduling Appointments\\n\\nRescheduling is moving an appointment to a different date, time, location, or service. A `PUT` is used to edit the parameters of an existing appointment.\\n\\nSteps to reschedule an appointment:\\n\\n1. Make a GET request to [List Appointments](/docs/api#operation/listAppointments) to retrieve appointments - You may wish to include a client email, or client ID o narrow the appointments to a specific user.\\n2. Locate the appointment you would like to update from the list of appointments in the response body.\\n3. Take note of the appointment `id`, `service_id`, and other parameters for later use.\\n4. Make a GET request to [Get Availability](/docs/api#operation/listAvailability) of the appointment\'s selected service by including the `service_id` you previously noted.\\n5. Once you\'ve found the desired available date and time, take note of the `day`, `month`, `year`, and `time`.\\n6. Construct the `start_date` that will be used in the next request by combining the `day`, `month`, `year`, and `time` into a string formatted as **\\"yyyy-mm-dd hh:mm:ss\\"**. For example: 2019-09-01 12:00\\n7. Finally, you\'re ready to make a PUT request to the [Modify Appointment Endpoint](/docs/api#operation/updateAppointment) to update the appointment time - completing the rescheduling process.\\n\\n## Update and Reschedule Your Appointment\\n\\nAfter completing the previous steps you should make a `PUT` request to the `https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&company_id=COMPANY_ID&id=ID` replacing the `id` path parameter with the appointment id.\\n\\n```json\\n{\\n \\"company_id\\": \\"{{company_id}}\\",\\n \\"client_email\\": \\"<string>\\",\\n \\"client_name\\": \\"<string>\\",\\n \\"service_id\\": \\"{{service_id}}\\",\\n \\"start_date\\": \\"{{start_date}}\\",\\n \\"client_phone\\": \\"<string>\\",\\n \\"client_address\\": \\"<string>\\",\\n \\"employee_id\\": \\"<long>\\",\\n \\"location_id\\": \\"<long>\\",\\n \\"duration\\": 15,\\n \\"note\\": \\"<string>\\",\\n \\"subservices\\": \\"<string>\\",\\n \\"paid\\": false,\\n \\"price\\": 0,\\n \\"custom_data\\": \\"<object>\\",\\n \\"timezone_id\\": \\"<integer>\\"\\n}\\n```\\n"}],"x-tagGroups":[{"name":"Getting Started","tags":["Getting Started Intro"]}],"paths":{"/account/authenticate":{"post":{"tags":["Account","Authentication Token"],"summary":"Authenticate","description":"The first step to using the Setster API is to authenticate.\\nAuthentication is done using your secret API Key and the account-owner email.\\nIn the returned response, the session_token should be used for all consecutive API calls.\\nPlease note the session, and the session_token expires periodically, and re-authentication will be required. We recommended you follow standard practices and develop an authentication methodology within your application to keep the connection open.\\n\\n## Session Token Refresh\\n\\nWhen the session token expires, a 403 Forbidden response will be received, indicating the need for re-authentication and retrieval of a new token to maintain the connection. Instead of reauthenticating at regular intervals, it is advisable to perform this action as needed.\\n","operationId":"createSessionTokenAuthenticate","parameters":[{"in":"query","name":"email","description":"Account owner email address","required":true,"schema":{"type":"string","format":"email"}},{"in":"query","name":"token","description":"API key","required":true,"schema":{"type":"string"}},{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"integer","example":2343},"company_id":{"type":"integer","example":2423},"account_type":{"type":"integer","example":4},"enable_locations":{"type":"boolean"},"intuit_user_id":{"type":"integer","example":null},"nick_name":{"type":"string","example":"demo-api"},"is_owner":{"type":"boolean"},"enabled":{"type":"boolean"}}},"session_token":{"type":"string","example":"bl0l9e0g9t1lvul5fg635jre32"}}}}}]}}}},"401":{"description":"Account is not active or Incorrect API key","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer","example":3},"statusDescriptions":{"type":"string","example":"Account is not active"},"data":{"type":"object","nullable":true}}}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/account/authenticate?session_token=SESSION_TOKEN&email=EMAIL&token=TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/account/authenticate?session_token=SESSION_TOKEN&email=EMAIL&token=TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/authenticate?session_token=SESSION_TOKEN&email=EMAIL&token=TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/authenticate?session_token=SESSION_TOKEN&email=EMAIL&token=TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/authenticate?session_token=SESSION_TOKEN&email=EMAIL&token=TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account":{"get":{"tags":["Account"],"summary":"Get Account Summary","de
1scription":"Retrieve a specific account\'s summary.","operationId":"getAccountInfoSummary","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"allOf":[{"type":"object","required":["company_name","nick_name"],"properties":{"company_name":{"type":"string","description":"The name of the company","example":"Apple"},"nick_name":{"type":"string","description":"The unique nickname of the account. Also create\'s the account\'s profile page `https://nickname.setster.com`. May contain only letters and digits","example":"apple"},"website":{"type":"string","format":"uri","description":"The company\'s website URL.","example":"www.example.com"},"contact":{"type":"string","format":"email","description":"The company\'s main email address."},"facebook":{"type":"string","format":"uri","description":"The Facebook company page URL.","example":"www.facebook.com/company"},"linkedin":{"type":"string","format":"uri","description":"The Linkedin company page URL.","example":"www.linkedin.com/company"},"twitter":{"type":"string","format":"uri","description":"The Twitter account URL of the company.","example":"www.twitter.com/company"},"skype_name":{"type":"string","description":"The Skype nickname of the company Skype account.","example":"nickname"},"yelp":{"type":"string","description":"The company\'s Yelp page URL","example":"www.yelp.com/company"},"pinterest":{"type":"string","description":"The company\'s Pinterest page URL","example":"www.pinterest.com/company"},"vimeo":{"type":"string","description":"The company\'s Vimeo page URL","example":"www.vimeo.com/company"},"youtube":{"type":"string","description":"The company\'s YouTube channel URL","example":"www.youtube.com/company"},"phone":{"type":"string","description":"The main business phone number","example":"(310) 123-4567"},"timezone_id":{"type":"integer","default":553,"description":"The account\'s set timezone ID"},"fax":{"type":"string","description":"The main business fax number","example":"(310) 123-4568"},"industry":{"type":"string"},"logo":{"type":"string"},"paragraph":{"type":"string","description":"The company\'s about us section. Optional content visitble to users during booking an appointment","example":"We are a...."},"business_hours":{"type":"string","description":"The company\'s main business hours.","example":"Monday - Friday 9am - 5pm","writeOnly":true}}},{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Contact of the main and default employee. Together with the password is used as user name"},"password":{"type":"string","format":"password","description":"Used along with the account email","example":"i39j02ksnfj40f"},"first_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"last_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"phone":{"type":"string","description":"Business phone","example":""}}},{"type":"object","required":["company_id","email","password"],"properties":{"id":{"type":"integer","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The unique ID of the account","example":2345,"readOnly":true},"created_by":{"type":"integer","format":"int64","description":"The ID of the company owner/main employee","example":1242,"readOnly":true},"address_city":{"type":"string","description":"The city in the account address","example":"Los Angeles"},"address_country":{"type":"string","description":"The country of the account address.","example":"USA"},"address_state":{"type":"string","description":"The state of the account address","example":"California"},"address_street1":{"type":"string","description":"The street address of the account address","example":"123 Street"},"address_street2":{"type":"string","description":"The street address line 2 of the account address","example":"Unit B"},"addresszip":{"type":"string","description":"The zip code of the account address.","example":"90210"},"send_to_contact":{"type":"integer","default":0},"show_map_profile":{"type":"boolean","default":false,"description":"Shows or hides the company map view on the profile page"},"splash":{"type":"string"},"map_url":{"type":"string","format":"uri","description":"The Google map URL for the account address.","example":"https://goo.gl/maps/qpuAvyPizfgP5FbN7"},"return_url":{"type":"string","description":"The URL a user will be directed to after booking an appointment","example":"https://www.google.com/"},"policies":{"type":"string","description":"The company\'s booking policy. Optional content visitble to users during booking an appointment","example":"We accept bookings for specific services only and you\'re..."},"account_type":{"type":"integer","format":"int32","description":"The subscription plan of the account.","example":"0","enum":[0,1,2,4,5,6]},"date_created":{"type":"string","format":"date-time","readOnly":true,"description":"The date the account was created"},"no_views":{"type":"string","readOnly":true,"description":"The number of times the account\'s booking widget was loaded/viewd."},"notify_app_unconfirmed":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unconfirmed appointments"},"notify_app_unpaid":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unpaid appointments"},"lang":{"type":"string","enum":["en","fr","es"],"description":"The language of the account","default":"en"},"enable_locations":{"type":"boolean","description":"An account has multiple location creation previlidges","default":true},"capture_leads":{"type":"string"},"settings":{"type":"string","format":"json","readOnly":true},"status":{"type":"integer","default":0,"readOnly":true},"directory":{"type":"integer","default":0},"max_providers":{"type":"integer","format":"int32","description":"The number of licenses the account is susubscribed/paying for.","default":0},"business_hours_label":{"type":"string","description":"The label for the company\'s main business hours."},"policies_label":{"type":"string","description":"The label for the company\'s booking policy."},"paragraph_label":{"type":"string","description":"The label for the company\'s account section."},"timezone":{"type":"integer","format":"int32","description":"The GMT offset in minutes of the account\'s timezone","example":-480,"default":0},"exchange_sync_settings":{"type":"object","readOnly":true,"description":"Microsoft Exchange c
1alendar sync settings.","properties":{"host":{"type":"string"},"account":{"type":"string"},"password":{"type":"string","format":"password"},"sync_period":{"type":"integer"}}}}}]}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/account?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/account?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account?session_token=SESSION_TOKEN\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"post":{"tags":["Account"],"summary":"Create a Sub-Account","description":"Create a child account under an existing parent account.\\n<div class=\'ui grey icon message\'><div class=\'content\'><i class=\'info icon\'></i><p>Requires sub-account privileges. To activate sub-account privileges, please contact the Setster support team.</p></div></div>","operationId":"createSubAccount","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_name","nick_name","company_id","email","password"],"properties":{"company_name":{"type":"string","description":"The name of the company","example":"Apple"},"nick_name":{"type":"string","description":"The unique nickname of the account. Also create\'s the account\'s profile page `https://nickname.setster.com`. May contain only letters and digits","example":"apple"},"website":{"type":"string","format":"uri","description":"The company\'s website URL.","example":"www.example.com"},"contact":{"type":"string","format":"email","description":"The company\'s main email address."},"facebook":{"type":"string","format":"uri","description":"The Facebook company page URL.","example":"www.facebook.com/company"},"linkedin":{"type":"string","format":"uri","description":"The Linkedin company page URL.","example":"www.linkedin.com/company"},"twitter":{"type":"string","format":"uri","description":"The Twitter account URL of the company.","example":"www.twitter.com/company"},"skype_name":{"type":"string","description":"The Skype nickname of the company Skype account.","example":"nickname"},"yelp":{"type":"string","description":"The company\'s Yelp page URL","example":"www.yelp.com/company"},"pinterest":{"type":"string","description":"The company\'s Pinterest page URL","example":"www.pinterest.com/company"},"vimeo":{"type":"string","description":"The company\'s Vimeo page URL","example":"www.vimeo.com/company"},"youtube":{"type":"string","description":"The company\'s YouTube channel URL","example":"www.youtube.com/company"},"phone":{"type":"string","description":"The main business phone number","example":"(310) 123-4567"},"timezone_id":{"type":"integer","default":553,"description":"The account\'s set timezone ID"},"fax":{"type":"string","description":"The main business fax number","example":"(310) 123-4568"},"industry":{"type":"string"},"logo":{"type":"string"},"paragraph":{"type":"string","description":"The company\'s about us section. Optional content visitble to users during booking an appointment","example":"We are a...."},"business_hours":{"type":"string","description":"The company\'s main business hours.","example":"Monday - Friday 9am - 5pm","writeOnly":true},"email":{"type":"string","format":"email","description":"Contact of the main and default employee. Together with the password is used as user name"},"password":{"type":"string","format":"password","description":"Used along with the account email","example":"i39j02ksnfj40f"},"first_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"last_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"id":{"type":"integer","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The unique ID of the account","example":2345,"readOnly":true},"created_by":{"type":"integer","format":"int64","description":"The ID of the company owner/main employee","example":1242,"readOnly":true},"address_city":{"type":"string","description":"The city in the account address","example":"Los Angeles"},"address_country":{"type":"string","description":"The country of the account address.","example":"USA"},"address_state":{"type":"string","description":"The state of the account address","example":"California"},"address_street1":{"type":"string","description":"The street address of the account address","example":"123 Street"},"address_street2":{"type":"string","description":"The street address line 2 of the account address","example":"Unit B"},"addresszip":{"type":"string","description":"The zip code of the account address.","example":"90210"},"send_to_contact":{"type":"integer","default":0},"show_map_profile":{"type":"boolean","default":false,"description":"Shows or hides the company map view on the profile page"},"splash":{"type":"string"},"map_url":{"type":"string","format":"uri","description":"The Google map URL for the account address.","example":"https://goo.gl/maps/qpuAvyPizfgP5FbN7"},"return_url":{"type":"string","description":"The URL a user will be directed to after booking an appointment","example":"https://www.google.com/"},"policies":{"type":"string","description":"The company\'s booking policy. Optional content visitble to users during booking an appointment","example":"We accept bookings for specific services only and you\'re..."},"account_type":{"type":"integer","format":"int32","description":"The subscription plan of the account.","example":"0","enum":[0,1,2,4,5,6]},"date_created":{"type":"string","format":"date-time","readOnly":true,"description":"The date the account was created"},"no_views":{"type":"string","readOnly":true,"description":"The number of times the account\'s booking widget was loaded/viewd."},"notify_app_unconfirmed":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unconfirmed appointments"},"notify_app_unpaid":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unpaid appointments"},"lang":{"type":"string","enum":["en","fr","es"],"description":"The language of the account","default":"en"},"enable_locations":{"type":"boolean","description":"An account has multiple location creation previlidges","default":true},"capture_leads":{"type":"string"},"settings":{"type":"string","format":"json","readOnly":true},"status":{"type":"integer","default":0,"readOnly":true},"directory":{"type":"integer","default":0},"max_providers":{"type":"integer","format":"int32","description":"The number of licenses the account is susubscribed/paying for.","default":0},"business_hours_label":{"type":"string","description":"The label for the company\'s main business hours."},"policies_label":{"type":"string","description":"The label for the company\'s booking policy."},"paragraph_label":{"type":"string","description":"The label for the company\'s account section."},"timezone":{"type":"integer","format":"int32","description":"The GMT offset in minutes of the account\'s timezone","example":-480,"default":0},"exchange_sync_settings":{"type":"object","readOnly":true,"description":"Microsoft Exchange c
1alendar sync settings.","properties":{"host":{"type":"string"},"account":{"type":"string"},"password":{"type":"string","format":"password"},"sync_period":{"type":"integer"}}}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"allOf":[{"type":"object","required":["company_name","nick_name"],"properties":{"company_name":{"type":"string","description":"The name of the company","example":"Apple"},"nick_name":{"type":"string","description":"The unique nickname of the account. Also create\'s the account\'s profile page `https://nickname.setster.com`. May contain only letters and digits","example":"apple"},"website":{"type":"string","format":"uri","description":"The company\'s website URL.","example":"www.example.com"},"contact":{"type":"string","format":"email","description":"The company\'s main email address."},"facebook":{"type":"string","format":"uri","description":"The Facebook company page URL.","example":"www.facebook.com/company"},"linkedin":{"type":"string","format":"uri","description":"The Linkedin company page URL.","example":"www.linkedin.com/company"},"twitter":{"type":"string","format":"uri","description":"The Twitter account URL of the company.","example":"www.twitter.com/company"},"skype_name":{"type":"string","description":"The Skype nickname of the company Skype account.","example":"nickname"},"yelp":{"type":"string","description":"The company\'s Yelp page URL","example":"www.yelp.com/company"},"pinterest":{"type":"string","description":"The company\'s Pinterest page URL","example":"www.pinterest.com/company"},"vimeo":{"type":"string","description":"The company\'s Vimeo page URL","example":"www.vimeo.com/company"},"youtube":{"type":"string","description":"The company\'s YouTube channel URL","example":"www.youtube.com/company"},"phone":{"type":"string","description":"The main business phone number","example":"(310) 123-4567"},"timezone_id":{"type":"integer","default":553,"description":"The account\'s set timezone ID"},"fax":{"type":"string","description":"The main business fax number","example":"(310) 123-4568"},"industry":{"type":"string"},"logo":{"type":"string"},"paragraph":{"type":"string","description":"The company\'s about us section. Optional content visitble to users during booking an appointment","example":"We are a...."},"business_hours":{"type":"string","description":"The company\'s main business hours.","example":"Monday - Friday 9am - 5pm","writeOnly":true}}},{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Contact of the main and default employee. Together with the password is used as user name"},"password":{"type":"string","format":"password","description":"Used along with the account email","example":"i39j02ksnfj40f"},"first_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"last_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"phone":{"type":"string","description":"Business phone","example":""}}},{"type":"object","required":["company_id","email","password"],"properties":{"id":{"type":"integer","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The unique ID of the account","example":2345,"readOnly":true},"created_by":{"type":"integer","format":"int64","description":"The ID of the company owner/main employee","example":1242,"readOnly":true},"address_city":{"type":"string","description":"The city in the account address","example":"Los Angeles"},"address_country":{"type":"string","description":"The country of the account address.","example":"USA"},"address_state":{"type":"string","description":"The state of the account address","example":"California"},"address_street1":{"type":"string","description":"The street address of the account address","example":"123 Street"},"address_street2":{"type":"string","description":"The street address line 2 of the account address","example":"Unit B"},"addresszip":{"type":"string","description":"The zip code of the account address.","example":"90210"},"send_to_contact":{"type":"integer","default":0},"show_map_profile":{"type":"boolean","default":false,"description":"Shows or hides the company map view on the profile page"},"splash":{"type":"string"},"map_url":{"type":"string","format":"uri","description":"The Google map URL for the account address.","example":"https://goo.gl/maps/qpuAvyPizfgP5FbN7"},"return_url":{"type":"string","description":"The URL a user will be directed to after booking an appointment","example":"https://www.google.com/"},"policies":{"type":"string","description":"The company\'s booking policy. Optional content visitble to users during booking an appointment","example":"We accept bookings for specific services only and you\'re..."},"account_type":{"type":"integer","format":"int32","description":"The subscription plan of the account.","example":"0","enum":[0,1,2,4,5,6]},"date_created":{"type":"string","format":"date-time","readOnly":true,"description":"The date the account was created"},"no_views":{"type":"string","readOnly":true,"description":"The number of times the account\'s booking widget was loaded/viewd."},"notify_app_unconfirmed":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unconfirmed appointments"},"notify_app_unpaid":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unpaid appointments"},"lang":{"type":"string","enum":["en","fr","es"],"description":"The language of the account","default":"en"},"enable_locations":{"type":"boolean","description":"An account has multiple location creation previlidges","default":true},"capture_leads":{"type":"string"},"settings":{"type":"string","format":"json","readOnly":true},"status":{"type":"integer","default":0,"readOnly":true},"directory":{"type":"integer","default":0},"max_providers":{"type":"integer","format":"int32","description":"The number of licenses the account is susubscribed/paying for.","default":0},"business_hours_label":{"type":"string","description":"The label for the company\'s main business hours."},"policies_label":{"type":"string","description":"The label for the company\'s booking policy."},"paragraph_label":{"type":"string","description":"The label for the company\'s account section."},"timezone":{"type":"integer","format":"int32","description":"The GMT offset in minutes of the account\'s timezone","example":-480,"default":0},"exchange_sync_settings":{"type":"object","readOnly":true,"description":"Microsoft Exchange c
1alendar sync settings.","properties":{"host":{"type":"string"},"account":{"type":"string"},"password":{"type":"string","format":"password"},"sync_period":{"type":"integer"}}}}}]}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/account?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/account?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/companies":{"get":{"tags":["Account"],"summary":"List Sub-Accounts","description":"Get a list of all sub-accounts and their attributes.","operationId":"listSubAccounts","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"company_id":{"type":"integer","example":"655"},"company_name":{"type":"string","example":"Apple Company"}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/account/companies?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/account/companies?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/companies?session_token=SESSION_TOKEN\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/companies?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/companies?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/saveBussinessInfo":{"post":{"tags":["Account"],"summary":"Modify Business Info","description":"Modify the attributes of the business profile.","operationId":"updateAccountBusinessInfo","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_name","nick_name"],"properties":{"company_name":{"type":"string","description":"The name of the company","example":"Apple"},"nick_name":{"type":"string","description":"The unique nickname of the account. Also create\'s the account\'s profile page `https://nickname.setster.com`. May contain only letters and digits","example":"apple"},"website":{"type":"string","format":"uri","description":"The company\'s website URL.","example":"www.example.com"},"contact":{"type":"string","format":"email","description":"The company\'s main email address."},"facebook":{"type":"string","format":"uri","description":"The Facebook company page URL.","example":"www.facebook.com/company"},"linkedin":{"type":"string","format":"uri","description":"The Linkedin company page URL.","example":"www.linkedin.com/company"},"twitter":{"type":"string","format":"uri","description":"The Twitter account URL of the company.","example":"www.twitter.com/company"},"skype_name":{"type":"string","description":"The Skype nickname of the company Skype account.","example":"nickname"},"yelp":{"type":"string","description":"The company\'s Yelp page URL","example":"www.yelp.com/company"},"pinterest":{"type":"string","description":"The company\'s Pinterest page URL","example":"www.pinterest.com/company"},"vimeo":{"type":"string","description":"The company\'s Vimeo page URL","example":"www.vimeo.com/company"},"youtube":{"type":"string","description":"The company\'s YouTube channel URL","example":"www.youtube.com/company"},"phone":{"type":"string","description":"The main business phone number","example":"(310) 123-4567"},"timezone_id":{"type":"integer","default":553,"description":"The account\'s set timezone ID"},"fax":{"type":"string","description":"The main business fax number","example":"(310) 123-4568"},"industry":{"type":"string"},"logo":{"type":"string"},"paragraph":{"type":"string","description":"The company\'s about us section. Optional content visitble to users during booking an appointment","example":"We are a...."},"business_hours":{"type":"string","description":"The company\'s main business hours.","example":"Monday - Friday 9am - 5pm","writeOnly":true}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"allOf":[{"type":"object","required":["company_name","nick_name"],"properties":{"company_name":{"type":"string","description":"The name of the company","example":"Apple"},"nick_name":{"type":"string","description":"The unique nickname of the account. Also create\'s the account\'s profile page `https://nickname.setster.com`. May contain only letters and digits","example":"apple"},"website":{"type":"string","format":"uri","description":"The company\'s website URL.","example":"www.example.com"},"contact":{"type":"string","format":"email","description":"The company\'s main email address."},"facebook":{"type":"string","format":"uri","description":"The Facebook company page URL.","example":"www.facebook.com/company"},"linkedin":{"type":"string","format":"uri","description":"The Linkedin company page URL.","example":"www.linkedin.com/company"},"twitter":{"type":"string","format":"uri","description":"The Twitter account URL of the company.","example":"www.twitter.com/company"},"skype_name":{"type":"string","description":"The Skype nickname of the company Skype account.","example":"nickname"},"yelp":{"type":"string","description":"The company\'s Yelp page URL","example":"www.yelp.com/company"},"pinterest":{"type":"string","description":"The company\'s Pinterest page URL","example":"www.pinterest.com/company"},"vimeo":{"type":"string","description":"The company\'s Vimeo page URL","example":"www.vimeo.com/company"},"youtube":{"type":"string","description":"The company\'s YouTube channel URL","example":"www.youtube.com/company"},"phone":{"type":"string","description":"The main business phone number","example":"(310) 123-4567"},"timezone_id":{"type":"integer","default":553,"description":"The account\'s set timezone ID"},"fax":{"type":"string","description":"The main business fax number","example":"(310) 123-4568"},"industry":{"type":"string"},"logo":{"type":"string"},"paragraph":{"type":"string","description":"The company\'s about us section. Optional content visitble to users during booking an appointment","example":"We are a...."},"business_hours":{"type":"string","description":"The company\'s main business hours.","example":"Monday - Friday 9am - 5pm","writeOnly":true}}},{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Contact of the main and default employee. Together with the password is used as user name"},"password":{"type":"string","format":"password","description":"Used along with the account email","example":"i39j02ksnfj40f"},"first_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"last_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"phone":{"type":"string","description":"Business phone","example":""}}},{"type":"object","required":["company_id","email","password"],"properties":{"id":{"type":"integer","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The unique ID of the account","example":2345,"readOnly":true},"created_by":{"type":"integer","format":"int64","description":"The ID of the company owner/main employee","example":1242,"readOnly":true},"address_city":{"type":"string","description":"The city in the account address","example":"Los Angeles"},"address_country":{"type":"string","description":"The country of the account address.","example":"USA"},"address_state":{"type":"string","description":"The state of the account address","example":"California"},"address_street1":{"type":"string","description":"The street address of the account address","example":"123 Street"},"address_street2":{"type":"string","description":"The street address line 2 of the account address","example":"Unit B"},"addresszip":{"type":"string","description":"The zip code of the account address.","example":"90210"},"send_to_contact":{"type":"integer","default":0},"show_map_profile":{"type":"boolean","default":false,"description":"Shows or hides the company map view on the profile page"},"splash":{"type":"string"},"map_url":{"type":"string","format":"uri","description":"The Google map URL for the account address.","example":"https://goo.gl/maps/qpuAvyPizfgP5FbN7"},"return_url":{"type":"string","description":"The URL a user will be directed to after booking an appointment","example":"https://www.google.com/"},"policies":{"type":"string","description":"The company\'s booking policy. Optional content visitble to users during booking an appointment","example":"We accept bookings for specific services only and you\'re..."},"account_type":{"type":"integer","format":"int32","description":"The subscription plan of the account.","example":"0","enum":[0,1,2,4,5,6]},"date_created":{"type":"string","format":"date-time","readOnly":true,"description":"The date the account was created"},"no_views":{"type":"string","readOnly":true,"description":"The number of times the account\'s booking widget was loaded/viewd."},"notify_app_unconfirmed":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unconfirmed appointments"},"notify_app_unpaid":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unpaid appointments"},"lang":{"type":"string","enum":["en","fr","es"],"description":"The language of the account","default":"en"},"enable_locations":{"type":"boolean","description":"An account has multiple location creation previlidges","default":true},"capture_leads":{"type":"string"},"settings":{"type":"string","format":"json","readOnly":true},"status":{"type":"integer","default":0,"readOnly":true},"directory":{"type":"integer","default":0},"max_providers":{"type":"integer","format":"int32","description":"The number of licenses the account is susubscribed/paying for.","default":0},"business_hours_label":{"type":"string","description":"The label for the company\'s main business hours."},"policies_label":{"type":"string","description":"The label for the company\'s booking policy."},"paragraph_label":{"type":"string","description":"The label for the company\'s account section."},"timezone":{"type":"integer","format":"int32","description":"The GMT offset in minutes of the account\'s timezone","example":-480,"default":0},"exchange_sync_settings":{"type":"object","readOnly":true,"description":"Microsoft Exchange c
1alendar sync settings.","properties":{"host":{"type":"string"},"account":{"type":"string"},"password":{"type":"string","format":"password"},"sync_period":{"type":"integer"}}}}}]}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/account/saveBussinessInfo?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/account/saveBussinessInfo?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/saveBussinessInfo?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/saveBussinessInfo?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/saveBussinessInfo?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/getAccountInfo":{"get":{"tags":["Account"],"summary":"Get Full Account Data","description":"Retrieve a specific account\'s complete data.","operationId":"getFullAccountInfo","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"allOf":[{"allOf":[{"type":"object","required":["company_name","nick_name"],"properties":{"company_name":{"type":"string","description":"The name of the company","example":"Apple"},"nick_name":{"type":"string","description":"The unique nickname of the account. Also create\'s the account\'s profile page `https://nickname.setster.com`. May contain only letters and digits","example":"apple"},"website":{"type":"string","format":"uri","description":"The company\'s website URL.","example":"www.example.com"},"contact":{"type":"string","format":"email","description":"The company\'s main email address."},"facebook":{"type":"string","format":"uri","description":"The Facebook company page URL.","example":"www.facebook.com/company"},"linkedin":{"type":"string","format":"uri","description":"The Linkedin company page URL.","example":"www.linkedin.com/company"},"twitter":{"type":"string","format":"uri","description":"The Twitter account URL of the company.","example":"www.twitter.com/company"},"skype_name":{"type":"string","description":"The Skype nickname of the company Skype account.","example":"nickname"},"yelp":{"type":"string","description":"The company\'s Yelp page URL","example":"www.yelp.com/company"},"pinterest":{"type":"string","description":"The company\'s Pinterest page URL","example":"www.pinterest.com/company"},"vimeo":{"type":"string","description":"The company\'s Vimeo page URL","example":"www.vimeo.com/company"},"youtube":{"type":"string","description":"The company\'s YouTube channel URL","example":"www.youtube.com/company"},"phone":{"type":"string","description":"The main business phone number","example":"(310) 123-4567"},"timezone_id":{"type":"integer","default":553,"description":"The account\'s set timezone ID"},"fax":{"type":"string","description":"The main business fax number","example":"(310) 123-4568"},"industry":{"type":"string"},"logo":{"type":"string"},"paragraph":{"type":"string","description":"The company\'s about us section. Optional content visitble to users during booking an appointment","example":"We are a...."},"business_hours":{"type":"string","description":"The company\'s main business hours.","example":"Monday - Friday 9am - 5pm","writeOnly":true}}},{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Contact of the main and default employee. Together with the password is used as user name"},"password":{"type":"string","format":"password","description":"Used along with the account email","example":"i39j02ksnfj40f"},"first_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"last_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"phone":{"type":"string","description":"Business phone","example":""}}},{"type":"object","required":["company_id","email","password"],"properties":{"id":{"type":"integer","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The unique ID of the account","example":2345,"readOnly":true},"created_by":{"type":"integer","format":"int64","description":"The ID of the company owner/main employee","example":1242,"readOnly":true},"address_city":{"type":"string","description":"The city in the account address","example":"Los Angeles"},"address_country":{"type":"string","description":"The country of the account address.","example":"USA"},"address_state":{"type":"string","description":"The state of the account address","example":"California"},"address_street1":{"type":"string","description":"The street address of the account address","example":"123 Street"},"address_street2":{"type":"string","description":"The street address line 2 of the account address","example":"Unit B"},"addresszip":{"type":"string","description":"The zip code of the account address.","example":"90210"},"send_to_contact":{"type":"integer","default":0},"show_map_profile":{"type":"boolean","default":false,"description":"Shows or hides the company map view on the profile page"},"splash":{"type":"string"},"map_url":{"type":"string","format":"uri","description":"The Google map URL for the account address.","example":"https://goo.gl/maps/qpuAvyPizfgP5FbN7"},"return_url":{"type":"string","description":"The URL a user will be directed to after booking an appointment","example":"https://www.google.com/"},"policies":{"type":"string","description":"The company\'s booking policy. Optional content visitble to users during booking an appointment","example":"We accept bookings for specific services only and you\'re..."},"account_type":{"type":"integer","format":"int32","description":"The subscription plan of the account.","example":"0","enum":[0,1,2,4,5,6]},"date_created":{"type":"string","format":"date-time","readOnly":true,"description":"The date the account was created"},"no_views":{"type":"string","readOnly":true,"description":"The number of times the account\'s booking widget was loaded/viewd."},"notify_app_unconfirmed":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unconfirmed appointments"},"notify_app_unpaid":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unpaid appointments"},"lang":{"type":"string","enum":["en","fr","es"],"description":"The language of the account","default":"en"},"enable_locations":{"type":"boolean","description":"An account has multiple location creation previlidges","default":true},"capture_leads":{"type":"string"},"settings":{"type":"string","format":"json","readOnly":true},"status":{"type":"integer","default":0,"readOnly":true},"directory":{"type":"integer","default":0},"max_providers":{"type":"integer","format":"int32","description":"The number of licenses the account is susubscribed/paying for.","default":0},"business_hours_label":{"type":"string","description":"The label for the company\'s main business hours."},"policies_label":{"type":"string","description":"The label for the company\'s booking policy."},"paragraph_label":{"type":"string","description":"The label for the company\'s account section."},"timezone":{"type":"integer","format":"int32","description":"The GMT offset in minutes of the account\'s timezone","example":-480,"default":0},"exchange_sync_settings":{"type":"object","readOnly":true,"description":"Microsoft Exchange c
1alendar sync settings.","properties":{"host":{"type":"string"},"account":{"type":"string"},"password":{"type":"string","format":"password"},"sync_period":{"type":"integer"}}}}}]},{"type":"object","properties":{"holidays":{"type":"array","items":{"type":"string"}},"business_hours":{"type":"string"},"company_business_hours":{"type":"string"}}}]}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/account/getAccountInfo?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/account/getAccountInfo?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/getAccountInfo?session_token=SESSION_TOKEN\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/getAccountInfo?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/getAccountInfo?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/saveOptions":{"post":{"tags":["Account"],"summary":"Modify Booking Options","description":"Modify the set booking options.","operationId":"updateBookingOptions","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"company_id":{"type":"integer","example":654},"email_settings":{"type":"object","writeOnly":true,"required":["company_id","widget_send_client_emails","widget_send_provider_emails","send_reminder"],"properties":{"widget_send_client_emails":{"type":"integer","enum":[0,1]},"widget_send_provider_emails":{"type":"integer","enum":[0,1]},"send_reminder":{"type":"integer"}}},"currency":{"type":"string","example":"USD"},"hide_contact":{"type":"boolean","default":0},"hide_about":{"type":"boolean","default":0},"show_email":{"type":"boolean","default":0},"show_provider_image":{"type":"boolean","default":0},"providers_tab_option":{"type":"string","example":"2"},"select_single_service":{"type":"boolean","default":1},"default_calendar_view":{"type":"string","enum":["d","w"],"default":"d"},"month_view_availability":{"type":"integer","example":1},"email_confirmation":{"type":"integer","example":1},"book_another_appointment":{"type":"boolean","default":0},"display_google_map_on_locations":{"type":"boolean","default":0},"hide_timezone_alert":{"type":"boolean","example":0},"select_single_location":{"type":"boolean","default":1},"show_in_host_or_client_time":{"type":"boolean","default":0},"email_timezone_alert":{"type":"boolean","default":0},"widget_customBookingFields":{"type":"string","example":"a:4:{s:13:\\"provider_date\\";i:1;s:13:\\"provider_time\\";i:1;s:8:\\"location\\";i:1;s:7:\\"service\\";i:1;}"},"enable_mobile_widget":{"type":"boolean","default":1},"any_available_provider":{"type":"string","example":"1"},"show_staff_photo":{"type":"boolean","example":1},"auto_confirm":{"type":"boolean","example":0},"prior_notice":{"type":"integer","example":0},"prior_cancel_appointment":{"type":"integer","example":0},"prior_reschedule_appointment":{"type":"integer","example":0},"duration_padding":{"type":"integer","example":30},"start_step":{"type":"integer","example":0},"after_notice":{"type":"integer","example":0},"allow_cash_payment":{"type":"boolean","example":0},"waiting_list":{"type":"boolean","example":0},"layout_params":{"type":"string","example":"a:5:{s:14:\\"overlay_option\\";s:7:\\"overlay\\";s:8:\\"position\\";s:5:\\"right\\";s:11:\\"button_name\\";s:11:\\"Appointment\\";s:12:\\"button_color\\";s:6:\\"ff0000\\";s:13:\\"locations_map\\";i:0;}"},"style_params":{"type":"string","default":""},"new_style":{"type":"integer","example":1},"new_mobile_style":{"type":"integer","example":1},"widget_send_client_emails":{"type":"boolean","example":1},"widget_send_provider_emails":{"type":"boolean","example":1},"send_reminder":{"type":"boolean","example":24},"notify_app_unconfirmed":{"type":"boolean","example":1},"send_to_contact":{"type":"boolean","example":0},"notify_app_unpaid":{"type":"boolean","example":1},"lang":{"type":"string","default":"en"},"timezone_id":{"type":"integer","example":553},"currenciesStripe":{"type":"array","items":{"type":"string"},"example":["AED","AFN","ALL"]},"currenciesPaypal":{"type":"array","items":{"type":"string"},"example":["AED","AFN","ALL"]},"stripe_client_id":{"type":"string","example":"ca_3zSQAHuNlO64Jsfg45Tk8vdfg2A"}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"company_id":{"type":"integer","example":654},"email_settings":{"type":"object","writeOnly":true,"required":["company_id","widget_send_client_emails","widget_send_provider_emails","send_reminder"],"properties":{"widget_send_client_emails":{"type":"integer","enum":[0,1]},"widget_send_provider_emails":{"type":"integer","enum":[0,1]},"send_reminder":{"type":"integer"}}},"currency":{"type":"string","example":"USD"},"hide_contact":{"type":"boolean","default":0},"hide_about":{"type":"boolean","default":0},"show_email":{"type":"boolean","default":0},"show_provider_image":{"type":"boolean","default":0},"providers_tab_option":{"type":"string","example":"2"},"select_single_service":{"type":"boolean","default":1},"default_calendar_view":{"type":"string","enum":["d","w"],"default":"d"},"month_view_availability":{"type":"integer","example":1},"email_confirmation":{"type":"integer","example":1},"book_another_appointment":{"type":"boolean","default":0},"display_google_map_on_locations":{"type":"boolean","default":0},"hide_timezone_alert":{"type":"boolean","example":0},"select_single_location":{"type":"boolean","default":1},"show_in_host_or_client_time":{"type":"boolean","default":0},"email_timezone_alert":{"type":"boolean","default":0},"widget_customBookingFields":{"type":"string","example":"a:4:{s:13:\\"provider_date\\";i:1;s:13:\\"provider_time\\";i:1;s:8:\\"location\\";i:1;s:7:\\"service\\";i:1;}"},"enable_mobile_widget":{"type":"boolean","default":1},"any_available_provider":{"type":"string","example":"1"},"show_staff_photo":{"type":"boolean","example":1},"auto_confirm":{"type":"boolean","example":0},"prior_notice":{"type":"integer","example":0},"prior_cancel_appointment":{"type":"integer","example":0},"prior_reschedule_appointment":{"type":"integer","example":0},"duration_padding":{"type":"integer","example":30},"start_step":{"type":"integer","example":0},"after_notice":{"type":"integer","example":0},"allow_cash_payment":{"type":"boolean","example":0},"waiting_list":{"type":"boolean","example":0},"layout_params":{"type":"string","example":"a:5:{s:14:\\"overlay_option\\";s:7:\\"overlay\\";s:8:\\"position\\";s:5:\\"right\\";s:11:\\"button_name\\";s:11:\\"Appointment\\";s:12:\\"button_color\\";s:6:\\"ff0000\\";s:13:\\"locations_map\\";i:0;}"},"style_params":{"type":"string","default":""},"new_style":{"type":"integer","example":1},"new_mobile_style":{"type":"integer","example":1},"widget_send_client_emails":{"type":"boolean","example":1},"widget_send_provider_emails":{"type":"boolean","example":1},"send_reminder":{"type":"boolean","example":24},"notify_app_unconfirmed":{"type":"boolean","example":1},"send_to_contact":{"type":"boolean","example":0},"notify_app_unpaid":{"type":"boolean","example":1},"lang":{"type":"string","default":"en"},"timezone_id":{"type":"integer","example":553},"currenciesStripe":{"type":"array","items":{"type":"string"},"example":["AED","AFN","ALL"]},"currenciesPaypal":{"type":"array","items":{"type":"string"},"example":["AED","AFN","ALL"]},"stripe_client_id":{"type":"string","example":"ca_3zSQAHuNlO64Jsfg45Tk8vdfg2A"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/account/saveOptions?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/account/saveOptions?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/saveOptions?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/saveOptions?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/saveOptions?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/getOptions":{"get":{"tags":["Account"],"summary":"Get Booking Options","description":"Get the currently set booking options.","operationId":"getBookingOptions","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"company_id":{"type":"integer","example":654},"email_settings":{"type":"object","writeOnly":true,"required":["company_id","widget_send_client_emails","widget_send_provider_emails","send_reminder"],"properties":{"widget_send_client_emails":{"type":"integer","enum":[0,1]},"widget_send_provider_emails":{"type":"integer","enum":[0,1]},"send_reminder":{"type":"integer"}}},"currency":{"type":"string","example":"USD"},"hide_contact":{"type":"boolean","default":0},"hide_about":{"type":"boolean","default":0},"show_email":{"type":"boolean","default":0},"show_provider_image":{"type":"boolean","default":0},"providers_tab_option":{"type":"string","example":"2"},"select_single_service":{"type":"boolean","default":1},"default_calendar_view":{"type":"string","enum":["d","w"],"default":"d"},"month_view_availability":{"type":"integer","example":1},"email_confirmation":{"type":"integer","example":1},"book_another_appointment":{"type":"boolean","default":0},"display_google_map_on_locations":{"type":"boolean","default":0},"hide_timezone_alert":{"type":"boolean","example":0},"select_single_location":{"type":"boolean","default":1},"show_in_host_or_client_time":{"type":"boolean","default":0},"email_timezone_alert":{"type":"boolean","default":0},"widget_customBookingFields":{"type":"string","example":"a:4:{s:13:\\"provider_date\\";i:1;s:13:\\"provider_time\\";i:1;s:8:\\"location\\";i:1;s:7:\\"service\\";i:1;}"},"enable_mobile_widget":{"type":"boolean","default":1},"any_available_provider":{"type":"string","example":"1"},"show_staff_photo":{"type":"boolean","example":1},"auto_confirm":{"type":"boolean","example":0},"prior_notice":{"type":"integer","example":0},"prior_cancel_appointment":{"type":"integer","example":0},"prior_reschedule_appointment":{"type":"integer","example":0},"duration_padding":{"type":"integer","example":30},"start_step":{"type":"integer","example":0},"after_notice":{"type":"integer","example":0},"allow_cash_payment":{"type":"boolean","example":0},"waiting_list":{"type":"boolean","example":0},"layout_params":{"type":"string","example":"a:5:{s:14:\\"overlay_option\\";s:7:\\"overlay\\";s:8:\\"position\\";s:5:\\"right\\";s:11:\\"button_name\\";s:11:\\"Appointment\\";s:12:\\"button_color\\";s:6:\\"ff0000\\";s:13:\\"locations_map\\";i:0;}"},"style_params":{"type":"string","default":""},"new_style":{"type":"integer","example":1},"new_mobile_style":{"type":"integer","example":1},"widget_send_client_emails":{"type":"boolean","example":1},"widget_send_provider_emails":{"type":"boolean","example":1},"send_reminder":{"type":"boolean","example":24},"notify_app_unconfirmed":{"type":"boolean","example":1},"send_to_contact":{"type":"boolean","example":0},"notify_app_unpaid":{"type":"boolean","example":1},"lang":{"type":"string","default":"en"},"timezone_id":{"type":"integer","example":553},"currenciesStripe":{"type":"array","items":{"type":"string"},"example":["AED","AFN","ALL"]},"currenciesPaypal":{"type":"array","items":{"type":"string"},"example":["AED","AFN","ALL"]},"stripe_client_id":{"type":"string","example":"ca_3zSQAHuNlO64Jsfg45Tk8vdfg2A"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/account/getOptions?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/account/getOptions?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/getOptions?session_token=SESSION_TOKEN\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/getOptions?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/getOptions?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestR
1esponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/savePersonalInfo":{"post":{"tags":["Account"],"summary":"Modify Personal Info","description":"Modify the attributes of the account owner.","operationId":"updatePersonalInfo","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Contact of the main and default employee. Together with the password is used as user name"},"password":{"type":"string","format":"password","description":"Used along with the account email","example":"i39j02ksnfj40f"},"first_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"last_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"phone":{"type":"string","description":"Business phone","example":""}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"allOf":[{"type":"object","required":["company_name","nick_name"],"properties":{"company_name":{"type":"string","description":"The name of the company","example":"Apple"},"nick_name":{"type":"string","description":"The unique nickname of the account. Also create\'s the account\'s profile page `https://nickname.setster.com`. May contain only letters and digits","example":"apple"},"website":{"type":"string","format":"uri","description":"The company\'s website URL.","example":"www.example.com"},"contact":{"type":"string","format":"email","description":"The company\'s main email address."},"facebook":{"type":"string","format":"uri","description":"The Facebook company page URL.","example":"www.facebook.com/company"},"linkedin":{"type":"string","format":"uri","description":"The Linkedin company page URL.","example":"www.linkedin.com/company"},"twitter":{"type":"string","format":"uri","description":"The Twitter account URL of the company.","example":"www.twitter.com/company"},"skype_name":{"type":"string","description":"The Skype nickname of the company Skype account.","example":"nickname"},"yelp":{"type":"string","description":"The company\'s Yelp page URL","example":"www.yelp.com/company"},"pinterest":{"type":"string","description":"The company\'s Pinterest page URL","example":"www.pinterest.com/company"},"vimeo":{"type":"string","description":"The company\'s Vimeo page URL","example":"www.vimeo.com/company"},"youtube":{"type":"string","description":"The company\'s YouTube channel URL","example":"www.youtube.com/company"},"phone":{"type":"string","description":"The main business phone number","example":"(310) 123-4567"},"timezone_id":{"type":"integer","default":553,"description":"The account\'s set timezone ID"},"fax":{"type":"string","description":"The main business fax number","example":"(310) 123-4568"},"industry":{"type":"string"},"logo":{"type":"string"},"paragraph":{"type":"string","description":"The company\'s about us section. Optional content visitble to users during booking an appointment","example":"We are a...."},"business_hours":{"type":"string","description":"The company\'s main business hours.","example":"Monday - Friday 9am - 5pm","writeOnly":true}}},{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Contact of the main and default employee. Together with the password is used as user name"},"password":{"type":"string","format":"password","description":"Used along with the account email","example":"i39j02ksnfj40f"},"first_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"last_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"phone":{"type":"string","description":"Business phone","example":""}}},{"type":"object","required":["company_id","email","password"],"properties":{"id":{"type":"integer","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The unique ID of the account","example":2345,"readOnly":true},"created_by":{"type":"integer","format":"int64","description":"The ID of the company owner/main employee","example":1242,"readOnly":true},"address_city":{"type":"string","description":"The city in the account address","example":"Los Angeles"},"address_country":{"type":"string","description":"The country of the account address.","example":"USA"},"address_state":{"type":"string","description":"The state of the account address","example":"California"},"address_street1":{"type":"string","description":"The street address of the account address","example":"123 Street"},"address_street2":{"type":"string","description":"The street address line 2 of the account address","example":"Unit B"},"addresszip":{"type":"string","description":"The zip code of the account address.","example":"90210"},"send_to_contact":{"type":"integer","default":0},"show_map_profile":{"type":"boolean","default":false,"description":"Shows or hides the company map view on the profile page"},"splash":{"type":"string"},"map_url":{"type":"string","format":"uri","description":"The Google map URL for the account address.","example":"https://goo.gl/maps/qpuAvyPizfgP5FbN7"},"return_url":{"type":"string","description":"The URL a user will be directed to after booking an appointment","example":"https://www.google.com/"},"policies":{"type":"string","description":"The company\'s booking policy. Optional content visitble to users during booking an appointment","example":"We accept bookings for specific services only and you\'re..."},"account_type":{"type":"integer","format":"int32","description":"The subscription plan of the account.","example":"0","enum":[0,1,2,4,5,6]},"date_created":{"type":"string","format":"date-time","readOnly":true,"description":"The date the account was created"},"no_views":{"type":"string","readOnly":true,"description":"The number of times the account\'s booking widget was loaded/viewd."},"notify_app_unconfirmed":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unconfirmed appointments"},"notify_app_unpaid":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unpaid appointments"},"lang":{"type":"string","enum":["en","fr","es"],"description":"The language of the account","default":"en"},"enable_locations":{"type":"boolean","description":"An account has multiple location creation previlidges","default":true},"capture_leads":{"type":"string"},"settings":{"type":"string","format":"json","readOnly":true},"status":{"type":"integer","default":0,"readOnly":true},"directory":{"type":"integer","default":0},"max_providers":{"type":"integer","format":"int32","description":"The number of licenses the account is susubscribed/paying for.","default":0},"business_hours_label":{"type":"string","description":"The label for the company\'s main business hours."},"policies_label":{"type":"string","description":"The label for the company\'s booking policy."},"paragraph_label":{"type":"string","description":"The label for the company\'s account section."},"timezone":{"type":"integer","format":"int32","description":"The GMT offset in minutes of the account\'s timezone","example":-480,"default":0},"exchange_sync_settings":{"type":"object","readOnly":true,"description":"Microsoft Exchange c
1alendar sync settings.","properties":{"host":{"type":"string"},"account":{"type":"string"},"password":{"type":"string","format":"password"},"sync_period":{"type":"integer"}}}}}]}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/account/savePersonalInfo?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/account/savePersonalInfo?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/savePersonalInfo?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/savePersonalInfo?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/savePersonalInfo?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/getPersonalInfo":{"get":{"tags":["Account"],"summary":"Get Account Owner Info","description":"Get the personal information of the account owner and the used licenses of the account.","operationId":"getPersonalInfo","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string","format":"email"},"phone":{"type":"string","example":"07563463575"},"first_name":{"type":"string","example":"John"},"last_name":{"type":"string","example":"Doe"},"permissions":{"type":"string","example":"availability,appointments,get_widget,promote"},"authority":{"type":"string","example":"ROLE_NORMA"},"is_owner":{"type":"boolean","example":0},"status":{"type":"integer","example":0},"currency":{"type":"string","example":"USD"},"can_login":{"type":"boolean","example":1},"used_licenses":{"type":"integer","example":5},"locations":{"type":"integer","example":3},"employees":{"type":"integer","example":5},"company_id":{"type":"integer","example":423}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/account/getPersonalInfo?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/account/getPersonalInfo?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/getPersonalInfo?session_token=SESSION_TOKEN\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/getPersonalInfo?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/getPersonalInfo?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/uploadLogo":{"post":{"tags":["Account"],"summary":"Upload an Account Logo","description":"Add or update the account logo.","operationId":"uploadAccountLogo","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"logo":{"type":"string"}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"upload_id":{"type":"integer"},"file_name":{"type":"string"},"file_location":{"type":"string"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/account/uploadLogo?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/account/uploadLogo?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/uploadLogo?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/uploadLogo?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/uploadLogo?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/getStripe":{"get":{"tags":["Account"],"summary":"Get Stripe Data","operationId":"getStripeInfo","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"stripePublishableKey":{"type":"string"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/account/getStripe?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/account/getStripe?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/getStripe?session_token=SESSION_TOKEN\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/getStripe?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/getStripe?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Get Stripe connection data."}},"/account/getPaypal":{"get":{"tags":["Account"],"summary":"Get PayPal Email","operationId":"getPaypalEmail","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"paypal_email":{"type":"string","format":"email"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/account/getPaypal?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/account/getPaypal?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/getPaypal?session_token=SESSION_TOKEN\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/getPaypal?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/getPaypal?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Get the PayPal email address of the account."}},"/account/getWidgetCode":{"get":{"tags":["Account"],"summary":"Get Widget Code","operationId":"getWidgetCode","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"overlay_option","schema":{"type":"string","default":"overlay"},"in":"query"},{"name":"position","schema":{"type":"string","default":"right"},"in":"query"},{"name":"button_name","schema":{"type":"string","default":"Appointment"},"in":"query"},{"name":"button_color","schema":{"type":"string","default":"ff0000"},"in":"query"},{"name":"defaultService","schema":{"type":"string"},"allowEmptyValue":true,"in":"query"},{"name":"defaultProvider","schema":{"type":"string"},"allowEmptyValue":true,"in":"query"},{"name":"defaultLocation","schema":{"type":"string"},"allowEmptyValue":true,"in":"query"},{"name":"returnUrl","schema":{"format":"url","type":"string"},"allowEmptyValue":true,"in":"query"},{"name":"locations_map","schema":{"type":"integer","default":0},"example":0,"in":"query"},{"name":"no_code","schema":{"type":"integer","default":0},"example":0,"in":"query"},{"name":"send_to","schema":{"type":"string","format":"email"},"in":"query"}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"html":{"type":"string","format":"html","example":"\x3c!-- Begin Setster Widget --\x3e\\\\n<script type=\\\\\\"text/javascript\\\\\\"\\ncharset=\\\\\\"utf-8\\\\\\">\\\\n var is_ssl = (\\\\\\"https:\\\\\\" == document.location.protocol);\\\\n\\n var setsHost = is_ssl ? \\\\\\"https://www.setster.com/widget/\\\\\\" :\\n \\\\\\"https://www.setster.com/widget/\\\\\\";\\\\n document.write(unescape(\\\\\\"%3Cscript\\n src=\'\\\\\\" + setsHost + \\\\\\"js/setster_over.js?v=2\'\\n type=\'text/javascript\'%3E%3C/script%3E\\\\\\"));\\\\n<\/script>\\\\n\\\\n\\n <script type=\\\\\\"text/javascript\\\\\\" charset=\\\\\\"utf-8\\\\\\">\\\\n\\n var setster_widget_options = {};\\\\n\\\\n setster_widget_options.display =\\n \\\\\\"overlay\\\\\\"; \\\\n setster_widget_options.uri = \\\\\\"boxadoro\\\\\\";\\\\n\\n setster_widget_options.placement = \\\\\\"right\\\\\\"; \\\\n\\n setster_widget_options.buttonName = \\\\\\"Appointment\\\\\\"; \\\\n\\n setster_widget_options.setsterURL = setsHost; \\\\n var setster_widget =\\n new Setster.setster_widget(setster_widget_options);\\\\n<\/script>\\\\n\\n \x3c!-- End Setster Widget --\x3e\\\\n\\"\\
1n"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/account/getWidgetCode?session_token=SESSION_TOKEN&overlay_option=OVERLAY_OPTION&position=POSITION&button_name=BUTTON_NAME&button_color=BUTTON_COLOR&defaultService=DEFAULTSERVICE&defaultProvider=DEFAULTPROVIDER&defaultLocation=DEFAULTLOCATION&returnUrl=RETURNURL&locations_map=LOCATIONS_MAP&no_code=NO_CODE&send_to=SEND_TO\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/account/getWidgetCode?session_token=SESSION_TOKEN&overlay_option=OVERLAY_OPTION&position=POSITION&button_name=BUTTON_NAME&button_color=BUTTON_COLOR&defaultService=DEFAULTSERVICE&defaultProvider=DEFAULTPROVIDER&defaultLocation=DEFAULTLOCATION&returnUrl=RETURNURL&locations_map=LOCATIONS_MAP&no_code=NO_CODE&send_to=SEND_TO\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/getWidgetCode?session_token=SESSION_TOKEN&overlay_option=OVERLAY_OPTION&position=POSITION&button_name=BUTTON_NAME&button_color=BUTTON_COLOR&defaultService=DEFAULTSERVICE&defaultProvider=DEFAULTPROVIDER&defaultLocation=DEFAULTLOCATION&returnUrl=RETURNURL&locations_map=LOCATIONS_MAP&no_code=NO_CODE&send_to=SEND_TO\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/getWidgetCode?session_token=SESSION_TOKEN&overlay_option=OVERLAY_OPTION&position=POSITION&button_name=BUTTON_NAME&button_color=BUTTON_COLOR&defaultService=DEFAULTSERVICE&defaultProvider=DEFAULTPROVIDER&defaultLocation=DEFAULTLOCATION&returnUrl=RETURNURL&locations_map=LOCATIONS_MAP&no_code=NO_CODE&send_to=SEND_TO\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/getWidgetCode?session_token=SESSION_TOKEN&overlay_option=OVERLAY_OPTION&position=POSITION&button_name=BUTTON_NAME&button_color=BUTTON_COLOR&defaultService=DEFAULTSERVICE&defaultProvider=DEFAULTPROVIDER&defaultLocation=DEFAULTLOCATION&returnUrl=RETURNURL&locations_map=LOCATIONS_MAP&no_code=NO_CODE&send_to=SEND_TO\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Get a copy of the Setster plug-and-play widget code. Find more info on the Setster widget here."}},"/account/request_password_reset":{"post":{"tags":["Account"],"summary":"Request password reset","description":"Initiates the password reset process. In order to reset the password a pre request must be made.","operationId":"requestPasswordReset","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"email","schema":{"type":"string","format":"email"},"example":"[email protected]","required":true,"in":"query"},{"name":"confirmation_url","schema":{"type":"string","format":"uri"},"required":true,"in":"query","example":"www.test_confirmation_url.com","description":"The base url used to generate the confirmation link in the email message that is sent to the client. Confirmation link = confirmation_url + \'?email={userEmail}&hash_code={hashCode}\'"}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0},"statusDescriptions":{"type":"string","example":"Confirmation email sent","description":"Description of the status"},"data":{"type":"object","nullable":true}}}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/account/request_password_reset?session_token=SESSION_TOKEN&email=EMAIL&confirmation_url=CONFI
1RMATION_URL\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/account/request_password_reset?session_token=SESSION_TOKEN&email=EMAIL&confirmation_url=CONFIRMATION_URL\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/request_password_reset?session_token=SESSION_TOKEN&email=EMAIL&confirmation_url=CONFIRMATION_URL\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/request_password_reset?session_token=SESSION_TOKEN&email=EMAIL&confirmation_url=CONFI
1RMATION_URL\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/request_password_reset?session_token=SESSION_TOKEN&email=EMAIL&confirmation_url=CONFIRMATION_URL\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/logout":{"get":{"tags":["Account"],"summary":"Logout","operationId":"getAccountLogout","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"responses":{"301":{"description":"Logout successful"}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/account/logout?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/account/logout?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/logout?session_token=SESSION_TOKEN\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/logout?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/logout?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Perform an account log out and terminate the current active session."}},"/account/reset_password":{"post":{"tags":["Account"],"summary":"Reset Password","description":"Modifies the account owner\'s password using the valid hash_code that was used when initiating the password reset process. The Request Password Reset call should be performed beforehand.\\n\\n ","operationId":"updateAccountPassword","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"email","schema":{"type":"string","format":"email"},"required":true,"in":"query","example":"[email protected]"},{"name":"hash_code","schema":{"type":"string"},"required":true,"in":"query","example":"test_hash_code"},{"name":"new_password","schema":{"type":"string","format":"password"},"required":true,"in":"query","example":"test_new_password"}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0},"statusDescriptions":{"type":"string","example":"Password changed","description":"Description of the status"},"data":{"type":"object","nullable":true}}}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/account/reset_password?session_token=SESSION_TOKEN&email=EMAIL&hash_code=HASH_CODE&new_password=NEW_PASSWORD\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/account/reset_password?session_token=SESSION_TOKEN&email=EMAIL&hash_code=HASH_CODE&new_password=NEW_PASSWORD\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/reset_password?session_token=SESSION_TOKEN&email=EMAIL&hash_code=HASH_CODE&new_password=NEW_PASSWORD\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/reset_password?session_token=SESSION_TOKEN&email=EMAIL&hash_code=HASH_CODE&new_password=NEW_PASSWORD\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/reset_password?session_token=SESSION_TOKEN&email=EMAIL&hash_code=HASH_CODE&new_password=NEW_PASSWORD\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/checknickname/{nickname}":{"get":{"tags":["Account"],"summary":"Check Nickname Availability","de
1scription":"Check whether a nickname (nick_name) is already in use. Nicknames within the Setster service must be unique and create the URL under the Setster domain. Example demo.setster.com.","operationId":"checkNicknameAvailability","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"nickname","in":"path","required":true,"example":"johndoe","schema":{"type":"string"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0},"statusDescriptions":{"type":"string","example":"nick_name already exists","description":"Description of the status"},"data":{"type":"object","nullable":true}}}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/account/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/account/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/account/checkemail/{email}":{"get":{"tags":["Account"],"summary":"Check Email Availability","description":"Check whether an email is already in use. Emails within the Setster service are required to be unique.","operationId":"checkEmailAvailability","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"email","in":"path","required":true,"example":"[email protected]","schema":{"type":"string","format":"email"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0},"statusDescriptions":{"type":"string","example":"nick_name already exists","description":"Description of the status"},"data":{"type":"object","nullable":true}}}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/account/checkemail/{email}?session_token=SESSION_TOKEN&email=EMAIL\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/account/checkemail/{email}?session_token=SESSION_TOKEN&email=EMAIL\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/account/checkemail/{email}?session_token=SESSION_TOKEN&email=EMAIL\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/account/checkemail/{email}?session_token=SESSION_TOKEN&email=EMAIL\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/account/checkemail/{email}?session_token=SESSION_TOKEN&email=EMAIL\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/location":{"get":{"tags":["Location","Select Location"],"summary":"List Locations","description":"Get a list of all locations and their attributes.","operationId":"listLocations","security":[{"session_token":[]}],"parameters":[{"name":"id","in":"query","description":"Location ID","schema":{"type":"integer"}},{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}
1,{"name":"name","in":"query","schema":{"type":"string"}},{"name":"description","in":"query","schema":{"type":"string"}},{"name":"street1","in":"query","schema":{"type":"string"}},{"name":"street2","in":"query","schema":{"type":"string"}},{"name":"city","in":"query","schema":{"type":"string"}},{"name":"state","in":"query","schema":{"type":"string"}},{"name":"zip","in":"query","schema":{"type":"string"}},{"name":"phone","in":"query","schema":{"type":"string"}},{"name":"email","in":"query","schema":{"type":"string"}},{"name":"website","in":"query","schema":{"type":"string"}},{"name":"lat","in":"query","schema":{"type":"number"}},{"name":"lng","in":"query","schema":{"type":"number"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"tags","in":"query","schema":{"type":"string"}},{"name":"photo","in":"query","schema":{"type":"string"}},{"name":"paypal_email","in":"query","schema":{"type":"string"}},{"name":"timezone_id","in":"query","description":"The timezone id","schema":{"type":"integer"}},{"name":"virtual","in":"query","schema":{"type":"boolean"}},{"name":"tmp_default","in":"query","schema":{"type":"boolean"}},{"name":"has_links","in":"query","schema":{"type":"boolean"}},{"name":"include_links","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","name"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the location","example":12345,"readOnly":true},"name":{"type":"string","description":"Name of the location","example":"Spa center"},"description":{"type":"string","description":"Description of the location","default":""},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that owns the location. Field is writable when entity is owned by child accounts.","example":432},"is_main":{"type":"boolean","readOnly":true,"default":false,"description":"Whether this is the main location for the company (the location created on registration)"},"virtual":{"type":"boolean","default":false},"street1":{"type":"string","description":"Address line 1","example":"13 Beverly"},"street2":{"type":"string","description":"Address line 2","example":""},"city":{"type":"string","description":"City","example":"New York"},"state":{"type":"string","description":"State","example":"NY"},"zip":{"type":"string","description":"Zip","example":"10501"},"country":{"type":"string","description":"Country","example":""},"photo":{"type":"string","format":"uri","description":"Photo URL","example":""},"phone":{"type":"string","description":"Phone number","default":""},"email":{"type":"string","format":"email","description":"Email address"},"website":{"type":"string","format":"uri","description":"Website URL","example":""},"tags":{"type":"string","default":""},"paypal_email":{"type":"string","format":"email","description":"The PayPal account used for payments for the appointments that are booked on this location. If empty, the company account will be used."},"timezone_id":{"type":"string","description":"The ID of the time zone","example":553},"lat":{"type":"number","format":"float","description":"The latitude of the location automatically calculated based on its address"},"lng":{"type":"number","format":"float","description":"The longitude of the location automatically calculated based on its address"},"update_lat_lng":{"type":"boolean","description":"Available only on update. If true (1) then the lat and lng values will be automatically calculated","default":false,"writeOnly":true},"ord":{"type":"integer","default":0,"readOnly":true},"links":{"anyOf":[{"type":"string"},{"type":"object"}],"description":"Links with employees and services.\\n\\nIf *links: \\\\\\"all\\\\\\"*, all providers and services will be linked to this location.\\n\\nIf *links: {EMPLOYEE_ID: \\\\\\"all\\\\\\"}*, all services will be linked to this location for the provider with EMPLOYEE_ID id.\\n\\nIf *links: {\\\\\\"all\\\\\\": {SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }}*, the services with id\'s SERVICE_ID_1, SERVICE_ID_2, ... will be linked to this location for all the providers\\n\\
1nIf *links: {\\\\\\"EMPLOYEE_ID_1\\\\\\": { SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }, \\\\\\"EMPLOYEE_ID_2\\\\\\": { SERVICE_ID_3: 1, SERVICE_ID_4: 1, ... }, ... }*, the specified services will be linked with the specified providers\\n","example":{"344":{"4433":1,"4823":1},"345":"all","all":{"4532":1,"5432":1}},"writeOnly":true}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/location?session_token=SESSION_TOKEN&id=ID&name=NAME&description=DESCRIPTION&street1=STREET1&street2=STREET2&city=CITY&state=STATE&zip=ZIP&phone=PHONE&email=EMAIL&website=WEBSITE&lat=LAT&lng=LNG&country=COUNTRY&tags=TAGS&photo=PHOTO&paypal_email=PAYPAL_EMAIL&timezone_id=TIMEZONE_ID&virtual=VIRTUAL&tmp_default=TMP_DEFAULT&has_links=HAS_LINKS&include_links=INCLUDE_LINKS\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/location?session_token=SESSION_TOKEN&id=ID&name=NAME&description=DESCRIPTION&street1=STREET1&street2=STREET2&city=CITY&state=STATE&zip=ZIP&phone=PHONE&email=EMAIL&website=WEBSITE&lat=LAT&lng=LNG&country=COUNTRY&tags=TAGS&photo=PHOTO&paypal_email=PAYPAL_EMAIL&timezone_id=TIMEZONE_ID&virtual=VIRTUAL&tmp_default=TMP_DEFAULT&has_links=HAS_LINKS&include_links=INCLUDE_LINKS\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/location?session_token=SESSION_TOKEN&id=ID&name=NAME&description=DESCRIPTION&street1=STREET1&street2=STREET2&city=CITY&state=STATE&zip=ZIP&phone=PHONE&email=EMAIL&website=WEBSITE&lat=LAT&lng=LNG&country=COUNTRY&tags=TAGS&photo=PHOTO&paypal_email=PAYPAL_EMAIL&timezone_id=TIMEZONE_ID&virtual=VIRTUAL&tmp_default=TMP_DEFAULT&has_links=HAS_LINKS&include_links=INCLUDE_LINKS\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/location?session_token=SESSION_TOKEN&id=ID&name=NAME&description=DESCRIPTION&street1=STREET1&street2=STREET2&city=CITY&state=STATE&zip=ZIP&phone=PHONE&email=EMAIL&website=WEBSITE&lat=LAT&lng=LNG&country=COUNTRY&tags=TAGS&photo=PHOTO&paypal_email=PAYPAL_EMAIL&timezone_id=TIMEZONE_ID&virtual=VIRTUAL&tmp_default=TMP_DEFAULT&has_links=HAS_LINKS&include_links=INCLUDE_LINKS\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/location?session_token=SESSION_TOKEN&id=ID&name=NAME&description=DESCRIPTION&street1=STREET1&street2=STREET2&city=CITY&state=STATE&zip=ZIP&phone=PHONE&email=EMAIL&website=WEBSITE&lat=LAT&lng=LNG&country=COUNTRY&tags=TAGS&photo=PHOTO&paypal_email=PAYPAL_EMAIL&timezone_id=TIMEZONE_ID&virtual=VIRTUAL&tmp_default=TMP_DEFAULT&has_links=HAS_LINKS&include_links=INCLUDE_LINKS\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"post":{"tags":["Location"],"summary":"Create a Location","description":"Create a new location.","operationId":"createLocation","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","name"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the location","example":12345,"readOnly":true},"name":{"type":"string","description":"Name of the location","example":"Spa center"},"description":{"type":"string","description":"Description of the location","default":""},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that owns the location. Field is writable when entity is owned by child accounts.","example":432},"is_main":{"type":"boolean","readOnly":true,"default":false,"description":"Whether this is the main location for the company (the location created on registration)"},"virtual":{"type":"boolean","default":false},"street1":{"type":"string","description":"Address line 1","example":"13 Beverly"},"street2":{"type":"string","description":"Address line 2","example":""},"city":{"type":"string","description":"City","example":"New York"},"state":{"type":"string","description":"State","example":"NY"},"zip":{"type":"string","description":"Zip","example":"10501"},"country":{"type":"string","description":"Country","example":""},"photo":{"type":"string","format":"uri","description":"Photo URL","example":""},"phone":{"type":"string","description":"Phone number","default":""},"email":{"type":"string","format":"email","description":"Email address"},"website":{"type":"string","format":"uri","description":"Website URL","example":""},"tags":{"type":"string","default":""},"paypal_email":{"type":"string","format":"email","description":"The PayPal account used for payments for the appointments that are booked on this location. If empty, the company account will be used."},"timezone_id":{"type":"string","description":"The ID of the time zone","example":553},"lat":{"type":"number","format":"float","description":"The latitude of the location automatically calculated based on its address"},"lng":{"type":"number","format":"float","description":"The longitude of the location automatically calculated based on its address"},"update_lat_lng":{"type":"boolean","description":"Available only on update. If true (1) then the lat and lng values will be automatically calculated","default":false,"writeOnly":true},"ord":{"type":"integer","default":0,"readOnly":true},"links":{"anyOf":[{"type":"string"},{"type":"object"}],"description":"Links with employees and services.\\n\\nIf *links: \\\\\\"all\\\\\\"*, all providers and services will be linked to this location.\\n\\nIf *links: {EMPLOYEE_ID: \\\\\\"all\\\\\\"}*, all services will be linked to this location for the provider with EMPLOYEE_ID id.\\n\\nIf *links: {\\\\\\"all\\\\\\": {SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }}*, the services with id\'s SERVICE_ID_1, SERVICE_ID_2, ... will be linked to this location for all the providers\\n\\
1nIf *links: {\\\\\\"EMPLOYEE_ID_1\\\\\\": { SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }, \\\\\\"EMPLOYEE_ID_2\\\\\\": { SERVICE_ID_3: 1, SERVICE_ID_4: 1, ... }, ... }*, the specified services will be linked with the specified providers\\n","example":{"344":{"4433":1,"4823":1},"345":"all","all":{"4532":1,"5432":1}},"writeOnly":true}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","name"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the location","example":12345,"readOnly":true},"name":{"type":"string","description":"Name of the location","example":"Spa center"},"description":{"type":"string","description":"Description of the location","default":""},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that owns the location. Field is writable when entity is owned by child accounts.","example":432},"is_main":{"type":"boolean","readOnly":true,"default":false,"description":"Whether this is the main location for the company (the location created on registration)"},"virtual":{"type":"boolean","default":false},"street1":{"type":"string","description":"Address line 1","example":"13 Beverly"},"street2":{"type":"string","description":"Address line 2","example":""},"city":{"type":"string","description":"City","example":"New York"},"state":{"type":"string","description":"State","example":"NY"},"zip":{"type":"string","description":"Zip","example":"10501"},"country":{"type":"string","description":"Country","example":""},"photo":{"type":"string","format":"uri","description":"Photo URL","example":""},"phone":{"type":"string","description":"Phone number","default":""},"email":{"type":"string","format":"email","description":"Email address"},"website":{"type":"string","format":"uri","description":"Website URL","example":""},"tags":{"type":"string","default":""},"paypal_email":{"type":"string","format":"email","description":"The PayPal account used for payments for the appointments that are booked on this location. If empty, the company account will be used."},"timezone_id":{"type":"string","description":"The ID of the time zone","example":553},"lat":{"type":"number","format":"float","description":"The latitude of the location automatically calculated based on its address"},"lng":{"type":"number","format":"float","description":"The longitude of the location automatically calculated based on its address"},"update_lat_lng":{"type":"boolean","description":"Available only on update. If true (1) then the lat and lng values will be automatically calculated","default":false,"writeOnly":true},"ord":{"type":"integer","default":0,"readOnly":true},"links":{"anyOf":[{"type":"string"},{"type":"object"}],"description":"Links with employees and services.\\n\\nIf *links: \\\\\\"all\\\\\\"*, all providers and services will be linked to this location.\\n\\nIf *links: {EMPLOYEE_ID: \\\\\\"all\\\\\\"}*, all services will be linked to this location for the provider with EMPLOYEE_ID id.\\n\\nIf *links: {\\\\\\"all\\\\\\": {SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }}*, the services with id\'s SERVICE_ID_1, SERVICE_ID_2, ... will be linked to this location for all the providers\\n\\nIf *links: {\\\\\\"EMPLOYEE_ID_1\\\\\\": { SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }, \\\\\\"EMPLOYEE_ID_2\\\\\\": { SERVICE_ID_3: 1, SERVICE_ID_4: 1, ... }, ... }*, the specified services will be linked with the specified providers\\n","example":{"344":{"4433":1,"4823":1},"345":"all","all":{"4532":1,"5432":1}},"writeOnly":true}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/location?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/location?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/location?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/location?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/location?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/location/{id}":{"get":{"tags":["Location"],"summary":"Get a Location","operationId":"getLocation","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"required":true,"name":"id","in":"path","description":"Location id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","name"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the location","example":12345,"readOnly":true},"name":{"type":"string","description":"Name of the location","example":"Spa center"},"description":{"type":"string","description":"Description of the location","default":""},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that owns the location. Field is writable when entity is owned by child accounts.","example":432},"is_main":{"type":"boolean","readOnly":true,"default":false,"description":"Whether this is the main location for the company (the location created on registration)"},"virtual":{"type":"boolean","default":false},"street1":{"type":"string","description":"Address line 1","example":"13 Beverly"},"street2":{"type":"string","description":"Address line 2","example":""},"city":{"type":"string","description":"City","example":"New York"},"state":{"type":"string","description":"State","example":"NY"},"zip":{"type":"string","description":"Zip","example":"10501"},"country":{"type":"string","description":"Country","example":""},"photo":{"type":"string","format":"uri","description":"Photo URL","example":""},"phone":{"type":"string","description":"Phone number","default":""},"email":{"type":"string","format":"email","description":"Email address"},"website":{"type":"string","format":"uri","description":"Website URL","example":""},"tags":{"type":"string","default":""},"paypal_email":{"type":"string","format":"email","description":"The PayPal account used for payments for the appointments that are booked on this location. If empty, the company account will be used."},"timezone_id":{"type":"string","description":"The ID of the time zone","example":553},"lat":{"type":"number","format":"float","description":"The latitude of the location automatically calculated based on its address"},"lng":{"type":"number","format":"float","description":"The longitude of the location automatically calculated based on its address"},"update_lat_lng":{"type":"boolean","description":"Available only on update. If true (1) then the lat and lng values will be automatically calculated","default":false,"writeOnly":true},"ord":{"type":"integer","default":0,"readOnly":true},"links":{"anyOf":[{"type":"string"},{"type":"object"}],"description":"Links with employees and services.\\n\\nIf *links: \\\\\\"all\\\\\\"*, all providers and services will be linked to this location.\\n\\nIf *links: {EMPLOYEE_ID: \\\\\\"all\\\\\\"}*, all services will be linked to this location for the provider with EMPLOYEE_ID id.\\n\\nIf *links: {\\\\\\"all\\\\\\": {SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }}*, the services with id\'s SERVICE_ID_1, SERVICE_ID_2, ... will be linked to this location for all the providers\\n\\
1nIf *links: {\\\\\\"EMPLOYEE_ID_1\\\\\\": { SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }, \\\\\\"EMPLOYEE_ID_2\\\\\\": { SERVICE_ID_3: 1, SERVICE_ID_4: 1, ... }, ... }*, the specified services will be linked with the specified providers\\n","example":{"344":{"4433":1,"4823":1},"345":"all","all":{"4532":1,"5432":1}},"writeOnly":true}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Get the attributes of a specific location."},"put":{"tags":["Location"],"summary":"Modify a Location","operationId":"updateLocation","description":"Modify the attributes of an existing location.","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Location id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","name"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the location","example":12345,"readOnly":true},"name":{"type":"string","description":"Name of the location","example":"Spa center"},"description":{"type":"string","description":"Description of the location","default":""},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that owns the location. Field is writable when entity is owned by child accounts.","example":432},"is_main":{"type":"boolean","readOnly":true,"default":false,"description":"Whether this is the main location for the company (the location created on registration)"},"virtual":{"type":"boolean","default":false},"street1":{"type":"string","description":"Address line 1","example":"13 Beverly"},"street2":{"type":"string","description":"Address line 2","example":""},"city":{"type":"string","description":"City","example":"New York"},"state":{"type":"string","description":"State","example":"NY"},"zip":{"type":"string","description":"Zip","example":"10501"},"country":{"type":"string","description":"Country","example":""},"photo":{"type":"string","format":"uri","description":"Photo URL","example":""},"phone":{"type":"string","description":"Phone number","default":""},"email":{"type":"string","format":"email","description":"Email address"},"website":{"type":"string","format":"uri","description":"Website URL","example":""},"tags":{"type":"string","default":""},"paypal_email":{"type":"string","format":"email","description":"The PayPal account used for payments for the appointments that are booked on this location. If empty, the company account will be used."},"timezone_id":{"type":"string","description":"The ID of the time zone","example":553},"lat":{"type":"number","format":"float","description":"The latitude of the location automatically calculated based on its address"},"lng":{"type":"number","format":"float","description":"The longitude of the location automatically calculated based on its address"},"update_lat_lng":{"type":"boolean","description":"Available only on update. If true (1) then the lat and lng values will be automatically calculated","default":false,"writeOnly":true},"ord":{"type":"integer","default":0,"readOnly":true},"links":{"anyOf":[{"type":"string"},{"type":"object"}],"description":"Links with employees and services.\\n\\nIf *links: \\\\\\"all\\\\\\"*, all providers and services will be linked to this location.\\n\\nIf *links: {EMPLOYEE_ID: \\\\\\"all\\\\\\"}*, all services will be linked to this location for the provider with EMPLOYEE_ID id.\\n\\nIf *links: {\\\\\\"all\\\\\\": {SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }}*, the services with id\'s SERVICE_ID_1, SERVICE_ID_2, ... will be linked to this location for all the providers\\n\\
1nIf *links: {\\\\\\"EMPLOYEE_ID_1\\\\\\": { SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }, \\\\\\"EMPLOYEE_ID_2\\\\\\": { SERVICE_ID_3: 1, SERVICE_ID_4: 1, ... }, ... }*, the specified services will be linked with the specified providers\\n","example":{"344":{"4433":1,"4823":1},"345":"all","all":{"4532":1,"5432":1}},"writeOnly":true}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","name"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the location","example":12345,"readOnly":true},"name":{"type":"string","description":"Name of the location","example":"Spa center"},"description":{"type":"string","description":"Description of the location","default":""},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that owns the location. Field is writable when entity is owned by child accounts.","example":432},"is_main":{"type":"boolean","readOnly":true,"default":false,"description":"Whether this is the main location for the company (the location created on registration)"},"virtual":{"type":"boolean","default":false},"street1":{"type":"string","description":"Address line 1","example":"13 Beverly"},"street2":{"type":"string","description":"Address line 2","example":""},"city":{"type":"string","description":"City","example":"New York"},"state":{"type":"string","description":"State","example":"NY"},"zip":{"type":"string","description":"Zip","example":"10501"},"country":{"type":"string","description":"Country","example":""},"photo":{"type":"string","format":"uri","description":"Photo URL","example":""},"phone":{"type":"string","description":"Phone number","default":""},"email":{"type":"string","format":"email","description":"Email address"},"website":{"type":"string","format":"uri","description":"Website URL","example":""},"tags":{"type":"string","default":""},"paypal_email":{"type":"string","format":"email","description":"The PayPal account used for payments for the appointments that are booked on this location. If empty, the company account will be used."},"timezone_id":{"type":"string","description":"The ID of the time zone","example":553},"lat":{"type":"number","format":"float","description":"The latitude of the location automatically calculated based on its address"},"lng":{"type":"number","format":"float","description":"The longitude of the location automatically calculated based on its address"},"update_lat_lng":{"type":"boolean","description":"Available only on update. If true (1) then the lat and lng values will be automatically calculated","default":false,"writeOnly":true},"ord":{"type":"integer","default":0,"readOnly":true},"links":{"anyOf":[{"type":"string"},{"type":"object"}],"description":"Links with employees and services.\\n\\nIf *links: \\\\\\"all\\\\\\"*, all providers and services will be linked to this location.\\n\\nIf *links: {EMPLOYEE_ID: \\\\\\"all\\\\\\"}*, all services will be linked to this location for the provider with EMPLOYEE_ID id.\\n\\nIf *links: {\\\\\\"all\\\\\\": {SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }}*, the services with id\'s SERVICE_ID_1, SERVICE_ID_2, ... will be linked to this location for all the providers\\n\\nIf *links: {\\\\\\"EMPLOYEE_ID_1\\\\\\": { SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }, \\\\\\"EMPLOYEE_ID_2\\\\\\": { SERVICE_ID_3: 1, SERVICE_ID_4: 1, ... }, ... }*, the specified services will be linked with the specified providers\\n","example":{"344":{"4433":1,"4823":1},"345":"all","all":{"4532":1,"5432":1}},"writeOnly":true}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request PUT \'https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'PUT\',\\n \'url\': \'https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"PUT\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Put.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.PUT);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"delete":{"tags":["Location"],"summary":"Delete a Location","operationId":"deleteLocation","description":"Delete an existing location.","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Location id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","nullable":true}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request DELETE \'https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'DELETE\',\\n \'url\': \'https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"DELETE\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Delete.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/location/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.DELETE);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/location/assignServices":{"post":{"tags":["Location"],"summary":"Link a location to all services and employees","description":"Link or assign a specific location to all existing employees and services.","operationId":"updateLocationServicesOrEmployees","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"location_id","in":"query","description":"Location id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","example":{"45634":[232,34534]},"description":"The following format is used:\\n`{ PROVIDER_ID: [ SERVICE_1, SERVICE_2, ...]}`\\nTo assign services to all providers at a location use:\\n`{0: [SERVICE_1, SERVICE_2, ...]}`\\n","properties":{}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","example":null}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/location/assignServices?session_token=SESSION_TOKEN&location_id=LOCATION_ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/location/assignServices?session_token=SESSION_TOKEN&location_id=LOCATION_ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/location/assignServices?session_token=SESSION_TOKEN&location_id=LOCATION_ID\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/location/assignServices?session_token=SESSION_TOKEN&location_id=LOCATION_ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/location/assignServices?session_token=SESSION_TOKEN&location_id=LOCATION_ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/location/uploadPhoto":{"post":{"tags":["Location"],"summary":"Upload a Location Photo","description":"Add or update the image of a specific location.","operationId":"updateLocationPhoto","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"location","in":"query","description":"Location id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"photo":{"type":"string","format":"binary"}}},"encoding":{"photo":{"contentType":"image/png, image/jpeg"}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"upload_id":{"type":"integer","format":"int64","example":32412},"file_name":{"type":"string","example":"avatar.png"},"file_location":{"type":"string","example":"/admin/images/clients/"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/location/uploadPhoto?session_token=SESSION_TOKEN&location=LOCATION\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/location/uploadPhoto?session_token=SESSION_TOKEN&location=LOCATION\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/location/uploadPhoto?session_token=SESSION_TOKEN&location=LOCATION\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/location/uploadPhoto?session_token=SESSION_TOKEN&location=LOCATION\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/location/uploadPhoto?session_token=SESSION_TOKEN&location=LOCATION\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/location/removePhoto":{"post":{"tags":["Location"],"summary":"Delete a Location Photo","description":"Delete the image of a specific location.","operationId":"removeLocationPhoto","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"location","in":"query","description":"Location id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["file_name"],"properties":{"file_name":{"type":"string"}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"typ
1e":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","example":null}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/location/removePhoto?session_token=SESSION_TOKEN&location=LOCATION\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/location/removePhoto?session_token=SESSION_TOKEN&location=LOCATION\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/location/removePhoto?session_token=SESSION_TOKEN&location=LOCATION\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/location/removePhoto?session_token=SESSION_TOKEN&location=LOCATION\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/location/removePhoto?session_token=SESSION_TOKEN&location=LOCATION\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/location/updateOrder":{"post":{"tags":["Location"],"summary":"Update Location\'s Sort Order","description":"Change the sort order of the locations in the list.","operationId":"updateLocationOrder","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["id","ord"],"properties":{"id":{"type":"integer","example":27864,"description":"Location id"},"ord":{"type":"integer","example":3,"description":"The order number in the list"}}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","example":null}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/location/updateOrder?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/location/updateOrder?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/location/updateOrder?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/location/updateOrder?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/location/updateOrder?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/employee":{"get":{"tags":["Employee","Select Employee"],"summary":"List Employees","description":"Get a list of all employees and their attributes.","operationId":"listEmployees","security":[{"session_token":[]}],"parameters":[{"name":"id","in":"query","description":"Employee id","schema":{"type":"integer"}},{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"statuses","in":"query","description":"By default only active employees are returned. This filter allows to return all the employees, including the inactive ones","schema":{"type":"string","enum":["all"]}},{"name":"status","in":"query","schema":{"type":"integer","enum":[0,1]}},{"name":"include_links","in":"query","schema":{"type":"boolean"}},{"name":"email","in":"query","schema":{"type":"string"}}
1,{"name":"first_name","in":"query","schema":{"type":"string"}},{"name":"last_name","in":"query","schema":{"type":"string"}},{"name":"job","in":"query","schema":{"type":"string"}},{"name":"bio","in":"query","schema":{"type":"string"}},{"name":"phone","in":"query","schema":{"type":"string"}},{"name":"photo_url","in":"query","schema":{"type":"string"}},{"name":"public_email","in":"query","schema":{"type":"boolean"}},{"name":"public_phone","in":"query","schema":{"type":"boolean"}},{"name":"receivesms","in":"query","schema":{"type":"boolean"}},{"name":"sms_email","in":"query","schema":{"type":"string"}},{"name":"intuit_user_id","in":"query","schema":{"type":"string"}},{"name":"ipp_mode","in":"query","schema":{"type":"integer"}},{"name":"intuit_auth_id","in":"query","schema":{"type":"string"}},{"name":"intuit_realm_id","in":"query","schema":{"type":"string"}},{"name":"intuit_ticket_id","in":"query","schema":{"type":"string"}},{"name":"newsletter","in":"query","schema":{"type":"boolean"}},{"name":"is_owner","in":"query","schema":{"type":"boolean"}},{"name":"ics_service","in":"query","schema":{"type":"string"}},{"name":"ics_export_service","in":"query","schema":{"type":"string"}},{"name":"ics_url","in":"query","schema":{"type":"string"}},{"name":"ics_export_hash","in":"query","schema":{"type":"string"}},{"name":"google_export_canceled","in":"query","schema":{"type":"boolean"}},{"name":"google_export_add_pt","in":"query","schema":{"type":"boolean"}},{"name":"username","in":"query","schema":{"type":"string"}},{"name":"nickname","in":"query","schema":{"type":"string"}},{"name":"linkedin","in":"query","schema":{"type":"string","format":"uri"}},{"name":"yelp","in":"query","schema":{"type":"string","format":"uri"}},{"name":"pinterest","in":"query","schema":{"type":"string","format":"uri"}},{"name":"vimeo","in":"query","schema":{"type":"string","format":"uri"}},{"name":"youtube","in":"query","schema":{"type":"string","format":"uri"}},{"name":"twitter","in":"query","schema":{"type":"string","format":"uri"}},{"name":"facebook","in":"query","schema":{"type":"string","format":"uri"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","email","first_name","last_name","links"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the employee","example":1234,"readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company of the employee. Field is writable when entity is owned by child account.","example":3214},"email":{"type":"string","format":"email","description":"Unique Email address of the employee"},"first_name":{"type":"string","description":"First Name","example":"John"},"last_name":{"type":"string","description":"Last Name","example":"Doe"},"job":{"type":"string","description":"Job name","example":"Accountant"},"bio":{"type":"string","description":"Bio"},"phone":{"type":"string","description":"Phone number","example":""},"photo_url":{"type":"string","format":"uri","description":"Photo URL","example":""},"public_email":{"type":"boolean","description":"Whether or not the employee\'s email will be displayed on the widget","default":false},"public_phone":{"type":"boolean","default":false},"status":{"type":"boolean","description":"Employee status: active / inactive","default":false},"username":{"type":"string","description":"Automatically generated based on the first and last names","example":"","readOnly":true},"nickname":{"type":"string","description":"Unique nickname per company. May contain only letters, digits, the dot character and the underline character.","example":""},"linkedin":{"type":"string","format":"uri","description":"LinkedIn URL","default":""},"yelp":{"type":"string","format":"uri"},"pinterest":{"type":"string","format":"uri"},"vimeo":{"type":"string","format":"uri"},"youtube":{"type":"string","format":"uri"},"twitter":{"type":"string","format":"uri","description":"Twitter URL","example":""},"facebook":{"type":"string","format":"uri","description":"Facebook URL","example":""},"receivesms":{"type":"boolean","description":"If true (1) then the employee will receive an SMS message informing them about new appointments","default":false},"sms_email":{"type":"string","format":"email","description":"The SMS service to be used in the following format: [email protected]. Note: the number keyword will be replaced with the employee\'s phone number before the SMS is sent.","example":"[email protected]"},"intuit_user_id":{"type":"string"},"ipp_mode":{"type":"integer"},"intuit_auth_id":{"type":"string"},"intuit_db_id":{"type":"string"},"intuit_realm_id":{"type":"string"},"intuit_ticket_id":{"type":"string"},"newsletter":{"type":"integer"},"is_owner":{"type":"boolean","description":"Whether the employee is the owner of the company (the employee created at signup). By updating the value for a created employee, areas from permissions can be managed for (all - 1/own - 0) account(s)","default":false,"readOnly":true},"ics_service":{"type":"integer","format":"int32","description":"Import calendar source type. Possible values: 0 - Not set 1 - Google 2 - Outlook or other public URL calendar source (ics) 3 - Exc
1hange","default":0,"enum":[0,1,2,3]},"ics_export_service":{"type":"integer","format":"int32","description":"Export calendar source type. Possible values: 0 - Not set 1 - Outlook 2 - Ical 3 - Google 4 - Yahoo 5 - MSN 6 - ICalDav","enum":[0,1,2,3,4,5,6],"default":0},"ics_url":{"type":"string","format":"uri","description":"iCalendar public url used as import source."},"ics_export_hash":{"type":"string"},"google_export_canceled":{"type":"integer","default":0},"google_export_add_pt":{"type":"integer","default":0},"ord":{"type":"integer","readOnly":true,"default":0},"ics_export_url":{"type":"string","description":"iCalendar public url used as export source.","readOnly":true},"permissions":{"type":"string","description":"Lable(s) for different application sections. In order to set permission an employee must have a user(can_login - 1). Possible values: locations, providers, services, availability, appointments, get_widget, promote, clients, overview, calendar, settings, profile, account","example":"locations, providers"},"can_login":{"type":"boolean","description":"Whether the employee can login to his account or not. An employee that cannot login will not have access to the API.","readOnly":true,"example":1},"password":{"type":"string","writeOnly":true},"send_invite_email":{"type":"boolean","description":"Available only when creating a new employee - will send an email to the email address of the newly created employee","writeOnly":true},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer"}}},"writeOnly":true,"description":"Links with locations and services","example":{"[LOCATION_ID]":{"[SERVICE_ID]":1}}}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/employee?session_token=SESSION_TOKEN&id=ID&statuses=STATUSES&status=STATUS&include_links=INCLUDE_LINKS&email=EMAIL&first_name=FIRST_NAME&last_name=LAST_NAME&job=JOB&bio=BIO&phone=PHONE&photo_url=PHOTO_URL&public_email=PUBLIC_EMAIL&public_phone=PUBLIC_PHONE&receivesms=RECEIVESMS&sms_email=SMS_EMAIL&intuit_user_id=INTUIT_USER_ID&ipp_mode=IPP_MODE&intuit_auth_id=INTUIT_AUTH_ID&intuit_realm_id=INTUIT_REALM_ID&intuit_ticket_id=INTUIT_TICKET_ID&newsletter=NEWSLETTER&is_owner=IS_OWNER&ics_service=ICS_SERVICE&ics_export_service=ICS_EXPORT_SERVICE&ics_url=ICS_URL&ics_export_hash=ICS_EXPORT_HASH&google_export_canceled=GOOGLE_EXPORT_CANCELED&google_export_add_pt=GOOGLE_EXPORT_ADD_PT&username=USERNAME&nickname=NICKNAME&linkedin=LINKEDIN&yelp=YELP&pinterest=PINTEREST&vimeo=VIMEO&youtube=YOUTUBE&twitter=TWITTER&facebook=FACEBOOK\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/employee?session_token=SESSION_TOKEN&id=ID&statuses=STATUSES&status=STATUS&include_links=INCLUDE_LINKS&email=EMAIL&first_name=FIRST_NAME&last_name=LAST_NAME&job=JOB&bio=BIO&phone=PHONE&photo_url=PHOTO_URL&public_email=PUBLIC_EMAIL&public_phone=PUBLIC_PHONE&receivesms=RECEIVESMS&sms_email=SMS_EMAIL&intuit_user_id=INTUIT_USER_ID&ipp_mode=IPP_MODE&intuit_auth_id=INTUIT_AUTH_ID&intuit_realm_id=INTUIT_REALM_ID&intuit_ticket_id=INTUIT_TICKET_ID&newsletter=NEWSLETTER&is_owner=IS_OWNER&ics_service=ICS_SERVICE&ics_export_service=ICS_EXPORT_SERVICE&ics_url=ICS_URL&ics_export_hash=ICS_EXPORT_HASH&google_export_canceled=GOOGLE_EXPORT_CANCELED&google_export_add_pt=GOOGLE_EXPORT_ADD_PT&username=USERNAME&nickname=NICKNAME&linkedin=LINKEDIN&yelp=YELP&pinterest=PINTEREST&vimeo=VIMEO&youtube=YOUTUBE&twitter=TWITTER&facebook=FACEBOOK\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee?session_token=SESSION_TOKEN&id=ID&statuses=STATUSES&status=STATUS&include_links=INCLUDE_LINKS&email=EMAIL&first_name=FIRST_NAME&last_name=LAST_NAME&job=JOB&bio=B
1IO&phone=PHONE&photo_url=PHOTO_URL&public_email=PUBLIC_EMAIL&public_phone=PUBLIC_PHONE&receivesms=RECEIVESMS&sms_email=SMS_EMAIL&intuit_user_id=INTUIT_USER_ID&ipp_mode=IPP_MODE&intuit_auth_id=INTUIT_AUTH_ID&intuit_realm_id=INTUIT_REALM_ID&intuit_ticket_id=INTUIT_TICKET_ID&newsletter=NEWSLETTER&is_owner=IS_OWNER&ics_service=ICS_SERVICE&ics_export_service=ICS_EXPORT_SERVICE&ics_url=ICS_URL&ics_export_hash=ICS_EXPORT_HASH&google_export_canceled=GOOGLE_EXPORT_CANCELED&google_export_add_pt=GOOGLE_EXPORT_ADD_PT&username=USERNAME&nickname=NICKNAME&linkedin=LINKEDIN&yelp=YELP&pinterest=PINTEREST&vimeo=VIMEO&youtube=YOUTUBE&twitter=TWITTER&facebook=FACEBOOK\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee?session_token=SESSION_TOKEN&id=ID&statuses=STATUSES&status=STATUS&include_links=INCLUDE_LINKS&email=EMAIL&first_name=FIRST_NAME&last_name=LAST_NAME&job=JOB&bio=BIO&phone=PHONE&photo_url=PHOTO_URL&public_email=PUBLIC_EMAIL&public_phone=PUBLIC_PHONE&receivesms=RECEIVESMS&sms_email=SMS_EMAIL&intuit_user_id=INTUIT_USER_ID&ipp_mode=IPP_MODE&intuit_auth_id=INTUIT_AUTH_ID&intuit_realm_id=INTUIT_REALM_ID&intuit_ticket_id=INTUIT_TICKET_ID&newsletter=NEWSLETTER&is_owner=IS_OWNER&ics_service=ICS_SERVICE&ics_export_service=ICS_EXPORT_SERVICE&ics_url=ICS_URL&ics_export_hash=ICS_EXPORT_HASH&google_export_canceled=GOOGLE_EXPORT_CANCELED&google_export_add_pt=GOOGLE_EXPORT_ADD_PT&username=USERNAME&nickname=NICKNAME&linkedin=LINKEDIN&yelp=YELP&pinterest=PINTEREST&vimeo=VIMEO&youtube=YOUTUBE&twitter=TWITTER&facebook=FACEBOOK\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee?session_token=SESSION_TOKEN&id=ID&statuses=STATUSES&status=STATUS&include_links=INCLUDE_LINKS&email=EMAIL&first_name=FIRST_NAME&last_name=LAST_NAME&job=JOB&bio=BIO&phone=PHONE&photo_url=PHOTO_URL&public_email=PUBLIC_EMAIL&public_phone=PUBLIC_PHONE&receivesms=RECEIVESMS&sms_email=SMS_EMAIL&intuit_user_id=INTUIT_USER_ID&ipp_mode=IPP_MODE&intuit_auth_id=INTUIT_AUTH_ID&intuit_realm_id=INTUIT_REALM_ID&intuit_ticket_id=INTUIT_TICKET_ID&newsletter=NEWSLETTER&is_owner=IS_OWNER&ics_service=ICS_SERVICE&ics_export_service=ICS_EXPORT_SERVICE&ics_url=ICS_URL&ics_export_hash=ICS_EXPORT_HASH&google_export_canceled=GOOGLE_EXPORT_CANCELED&google_export_add_pt=GOOGLE_EXPORT_ADD_PT&username=USERNAME&nickname=NICKNAME&linkedin=LINKEDIN&yelp=YELP&pinterest=PINTEREST&vimeo=VIMEO&youtube=YOUTUBE&twitter=TWITTER&facebook=FACEBOOK\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"post":{"tags":["Employee"],"summary":"Create an Employee","description":"Create a new employee.","operationId":"createEmployee","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","email","first_name","last_name","links"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the employee","example":1234,"readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company of the employee. Field is writable when entity is owned by child account.","example":3214},"email":{"type":"string","format":"email","description":"Unique Email address of the employee"},"first_name":{"type":"string","description":"First Name","example":"John"},"last_name":{"type":"string","description":"Last Name","example":"Doe"},"job":{"type":"string","description":"Job name","example":"Accountant"},"bio":{"type":"string","description":"Bio"},"phone":{"type":"string","description":"Phone number","example":""},"photo_url":{"type":"string","format":"uri","description":"Photo URL","example":""},"public_email":{"type":"boolean","description":"Whether or not the employee\'s email will be displayed on the widget","default":false},"public_phone":{"type":"boolean","default":false},"status":{"type":"boolean","description":"Employee status: active / inactive","default":false},"username":{"type":"string","description":"Automatically generated based on the first and last names","example":"","readOnly":true},"nickname":{"type":"string","description":"Unique nickname per company. May contain only letters, digits, the dot character and the underline character.","example":""},"linkedin":{"type":"string","format":"uri","description":"LinkedIn URL","default":""},"yelp":{"type":"string","format":"uri"},"pinterest":{"type":"string","format":"uri"},"vimeo":{"type":"string","format":"uri"},"youtube":{"type":"string","format":"uri"},"twitter":{"type":"string","format":"uri","description":"Twitter URL","example":""},"facebook":{"type":"string","format":"uri","description":"Facebook URL","example":""},"receivesms":{"type":"boolean","description":"If true (1) then the employee will receive an SMS message informing them about new appointments","default":false},"sms_email":{"type":"string","format":"email","description":"The SMS service to be used in the following format: [email protected]. Note: the number keyword will be replaced with the employee\'s phone number before the SMS is sent.","example":"[email protected]"},"intuit_user_id":{"type":"string"},"ipp_mode":{"type":"integer"},"intuit_auth_id":{"type":"string"},"intuit_db_id":{"type":"string"},"intuit_realm_id":{"type":"string"},"intuit_ticket_id":{"type":"string"},"newsletter":{"type":"integer"},"is_owner":{"type":"boolean","description":"Whether the employee is the owner of the company (the employee created at signup). By updating the value for a created employee, areas from permissions can be managed for (all - 1/own - 0) account(s)","default":false,"readOnly":true},"ics_service":{"type":"integer","format":"int32","description":"Import calendar source type. Possible values: 0 - Not set 1 - Google 2 - Outlook or other public URL calendar source (ics) 3 - Exc
1hange","default":0,"enum":[0,1,2,3]},"ics_export_service":{"type":"integer","format":"int32","description":"Export calendar source type. Possible values: 0 - Not set 1 - Outlook 2 - Ical 3 - Google 4 - Yahoo 5 - MSN 6 - ICalDav","enum":[0,1,2,3,4,5,6],"default":0},"ics_url":{"type":"string","format":"uri","description":"iCalendar public url used as import source."},"ics_export_hash":{"type":"string"},"google_export_canceled":{"type":"integer","default":0},"google_export_add_pt":{"type":"integer","default":0},"ord":{"type":"integer","readOnly":true,"default":0},"ics_export_url":{"type":"string","description":"iCalendar public url used as export source.","readOnly":true},"permissions":{"type":"string","description":"Lable(s) for different application sections. In order to set permission an employee must have a user(can_login - 1). Possible values: locations, providers, services, availability, appointments, get_widget, promote, clients, overview, calendar, settings, profile, account","example":"locations, providers"},"can_login":{"type":"boolean","description":"Whether the employee can login to his account or not. An employee that cannot login will not have access to the API.","readOnly":true,"example":1},"password":{"type":"string","writeOnly":true},"send_invite_email":{"type":"boolean","description":"Available only when creating a new employee - will send an email to the email address of the newly created employee","writeOnly":true},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer"}}},"writeOnly":true,"description":"Links with locations and services","example":{"[LOCATION_ID]":{"[SERVICE_ID]":1}}}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","email","first_name","last_name","links"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the employee","example":1234,"readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company of the employee. Field is writable when entity is owned by child account.","example":3214},"email":{"type":"string","format":"email","description":"Unique Email address of the employee"},"first_name":{"type":"string","description":"First Name","example":"John"},"last_name":{"type":"string","description":"Last Name","example":"Doe"},"job":{"type":"string","description":"Job name","example":"Accountant"},"bio":{"type":"string","description":"Bio"},"phone":{"type":"string","description":"Phone number","example":""},"photo_url":{"type":"string","format":"uri","description":"Photo URL","example":""},"public_email":{"type":"boolean","description":"Whether or not the employee\'s email will be displayed on the widget","default":false},"public_phone":{"type":"boolean","default":false},"status":{"type":"boolean","description":"Employee status: active / inactive","default":false},"username":{"type":"string","description":"Automatically generated based on the first and last names","example":"","readOnly":true},"nickname":{"type":"string","description":"Unique nickname per company. May contain only letters, digits, the dot character and the underline character.","example":""},"linkedin":{"type":"string","format":"uri","description":"LinkedIn URL","default":""},"yelp":{"type":"string","format":"uri"},"pinterest":{"type":"string","format":"uri"},"vimeo":{"type":"string","format":"uri"},"youtube":{"type":"string","format":"uri"},"twitter":{"type":"string","format":"uri","description":"Twitter URL","example":""},"facebook":{"type":"string","format":"uri","description":"Facebook URL","example":""},"receivesms":{"type":"boolean","description":"If true (1) then the employee will receive an SMS message informing them about new appointments","default":false},"sms_email":{"type":"string","format":"email","description":"The SMS service to be used in the following format: [email protected]. Note: the number keyword will be replaced with the employee\'s phone number before the SMS is sent.","example":"[email protected]"},"intuit_user_id":{"type":"string"},"ipp_mode":{"type":"integer"},"intuit_auth_id":{"type":"string"},"intuit_db_id":{"type":"string"},"intuit_realm_id":{"type":"string"},"intuit_ticket_id":{"type":"string"},"newsletter":{"type":"integer"},"is_owner":{"type":"boolean","description":"Whether the employee is the owner of the company (the employee created at signup). By updating the value for a created employee, areas from permissions can be managed for (all - 1/own - 0) account(s)","default":false,"readOnly":true},"ics_service":{"type":"integer","format":"int32","description":"Import calendar source type. Possible values: 0 - Not set 1 - Google 2 - Outlook or other public URL calendar source (ics) 3 - Exc
1hange","default":0,"enum":[0,1,2,3]},"ics_export_service":{"type":"integer","format":"int32","description":"Export calendar source type. Possible values: 0 - Not set 1 - Outlook 2 - Ical 3 - Google 4 - Yahoo 5 - MSN 6 - ICalDav","enum":[0,1,2,3,4,5,6],"default":0},"ics_url":{"type":"string","format":"uri","description":"iCalendar public url used as import source."},"ics_export_hash":{"type":"string"},"google_export_canceled":{"type":"integer","default":0},"google_export_add_pt":{"type":"integer","default":0},"ord":{"type":"integer","readOnly":true,"default":0},"ics_export_url":{"type":"string","description":"iCalendar public url used as export source.","readOnly":true},"permissions":{"type":"string","description":"Lable(s) for different application sections. In order to set permission an employee must have a user(can_login - 1). Possible values: locations, providers, services, availability, appointments, get_widget, promote, clients, overview, calendar, settings, profile, account","example":"locations, providers"},"can_login":{"type":"boolean","description":"Whether the employee can login to his account or not. An employee that cannot login will not have access to the API.","readOnly":true,"example":1},"password":{"type":"string","writeOnly":true},"send_invite_email":{"type":"boolean","description":"Available only when creating a new employee - will send an email to the email address of the newly created employee","writeOnly":true},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer"}}},"writeOnly":true,"description":"Links with locations and services","example":{"[LOCATION_ID]":{"[SERVICE_ID]":1}}}}}}}}]}}},"links":{"CreateEmployee":{"operationId":"getEmployeeDetails","parameters":{"id":"$response.body#/data/0/id"},"description":"# Testing Links \\n This is a test."}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/employee?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/employee?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/employee/{id}":{"get":{"tags":["Employee"],"summary":"Get an Employee","operationId":"getEmployeeDetails","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Employee id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","email","first_name","last_name","links"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the employee","example":1234,"readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company of the employee. Field is writable when entity is owned by child account.","example":3214},"email":{"type":"string","format":"email","description":"Unique Email address of the employee"},"first_name":{"type":"string","description":"First Name","example":"John"},"last_name":{"type":"string","description":"Last Name","example":"Doe"},"job":{"type":"string","description":"Job name","example":"Accountant"},"bio":{"type":"string","description":"Bio"},"phone":{"type":"string","description":"Phone number","example":""},"photo_url":{"type":"string","format":"uri","description":"Photo URL","example":""},"public_email":{"type":"boolean","description":"Whether or not the employee\'s email will be displayed on the widget","default":false},"public_phone":{"type":"boolean","default":false},"status":{"type":"boolean","description":"Employee status: active / inactive","default":false},"username":{"type":"string","description":"Automatically generated based on the first and last names","example":"","readOnly":true},"nickname":{"type":"string","description":"Unique nickname per company. May contain only letters, digits, the dot character and the underline character.","example":""},"linkedin":{"type":"string","format":"uri","description":"LinkedIn URL","default":""},"yelp":{"type":"string","format":"uri"},"pinterest":{"type":"string","format":"uri"},"vimeo":{"type":"string","format":"uri"},"youtube":{"type":"string","format":"uri"},"twitter":{"type":"string","format":"uri","description":"Twitter URL","example":""},"facebook":{"type":"string","format":"uri","description":"Facebook URL","example":""},"receivesms":{"type":"boolean","description":"If true (1) then the employee will receive an SMS message informing them about new appointments","default":false},"sms_email":{"type":"string","format":"email","description":"The SMS service to be used in the following format: [email protected]. Note: the number keyword will be replaced with the employee\'s phone number before the SMS is sent.","example":"[email protected]"},"intuit_user_id":{"type":"string"},"ipp_mode":{"type":"integer"},"intuit_auth_id":{"type":"string"},"intuit_db_id":{"type":"string"},"intuit_realm_id":{"type":"string"},"intuit_ticket_id":{"type":"string"},"newsletter":{"type":"integer"},"is_owner":{"type":"boolean","description":"Whether the employee is the owner of the company (the employee created at signup). By updating the value for a created employee, areas from permissions can be managed for (all - 1/own - 0) account(s)","default":false,"readOnly":true},"ics_service":{"type":"integer","format":"int32","description":"Import calendar source type. Possible values: 0 - Not set 1 - Google 2 - Outlook or other public URL calendar source (ics) 3 - Exc
1hange","default":0,"enum":[0,1,2,3]},"ics_export_service":{"type":"integer","format":"int32","description":"Export calendar source type. Possible values: 0 - Not set 1 - Outlook 2 - Ical 3 - Google 4 - Yahoo 5 - MSN 6 - ICalDav","enum":[0,1,2,3,4,5,6],"default":0},"ics_url":{"type":"string","format":"uri","description":"iCalendar public url used as import source."},"ics_export_hash":{"type":"string"},"google_export_canceled":{"type":"integer","default":0},"google_export_add_pt":{"type":"integer","default":0},"ord":{"type":"integer","readOnly":true,"default":0},"ics_export_url":{"type":"string","description":"iCalendar public url used as export source.","readOnly":true},"permissions":{"type":"string","description":"Lable(s) for different application sections. In order to set permission an employee must have a user(can_login - 1). Possible values: locations, providers, services, availability, appointments, get_widget, promote, clients, overview, calendar, settings, profile, account","example":"locations, providers"},"can_login":{"type":"boolean","description":"Whether the employee can login to his account or not. An employee that cannot login will not have access to the API.","readOnly":true,"example":1},"password":{"type":"string","writeOnly":true},"send_invite_email":{"type":"boolean","description":"Available only when creating a new employee - will send an email to the email address of the newly created employee","writeOnly":true},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer"}}},"writeOnly":true,"description":"Links with locations and services","example":{"[LOCATION_ID]":{"[SERVICE_ID]":1}}}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Get the attributes of a specific employee."},"put":{"tags":["Employee"],"summary":"Modify an Employee","description":"Modify the attributes of an existing employee.","operationId":"updateEmployee","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Employee id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","email","first_name","last_name","links"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the employee","example":1234,"readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company of the employee. Field is writable when entity is owned by child account.","example":3214},"email":{"type":"string","format":"email","description":"Unique Email address of the employee"},"first_name":{"type":"string","description":"First Name","example":"John"},"last_name":{"type":"string","description":"Last Name","example":"Doe"},"job":{"type":"string","description":"Job name","example":"Accountant"},"bio":{"type":"string","description":"Bio"},"phone":{"type":"string","description":"Phone number","example":""},"photo_url":{"type":"string","format":"uri","description":"Photo URL","example":""},"public_email":{"type":"boolean","description":"Whether or not the employee\'s email will be displayed on the widget","default":false},"public_phone":{"type":"boolean","default":false},"status":{"type":"boolean","description":"Employee status: active / inactive","default":false},"username":{"type":"string","description":"Automatically generated based on the first and last names","example":"","readOnly":true},"nickname":{"type":"string","description":"Unique nickname per company. May contain only letters, digits, the dot character and the underline character.","example":""},"linkedin":{"type":"string","format":"uri","description":"LinkedIn URL","default":""},"yelp":{"type":"string","format":"uri"},"pinterest":{"type":"string","format":"uri"},"vimeo":{"type":"string","format":"uri"},"youtube":{"type":"string","format":"uri"},"twitter":{"type":"string","format":"uri","description":"Twitter URL","example":""},"facebook":{"type":"string","format":"uri","description":"Facebook URL","example":""},"receivesms":{"type":"boolean","description":"If true (1) then the employee will receive an SMS message informing them about new appointments","default":false},"sms_email":{"type":"string","format":"email","description":"The SMS service to be used in the following format: [email protected]. Note: the number keyword will be replaced with the employee\'s phone number before the SMS is sent.","example":"[email protected]"},"intuit_user_id":{"type":"string"},"ipp_mode":{"type":"integer"},"intuit_auth_id":{"type":"string"},"intuit_db_id":{"type":"string"},"intuit_realm_id":{"type":"string"},"intuit_ticket_id":{"type":"string"},"newsletter":{"type":"integer"},"is_owner":{"type":"boolean","description":"Whether the employee is the owner of the company (the employee created at signup). By updating the value for a created employee, areas from permissions can be managed for (all - 1/own - 0) account(s)","default":false,"readOnly":true},"ics_service":{"type":"integer","format":"int32","description":"Import calendar source type. Possible values: 0 - Not set 1 - Google 2 - Outlook or other public URL calendar source (ics) 3 - Exc
1hange","default":0,"enum":[0,1,2,3]},"ics_export_service":{"type":"integer","format":"int32","description":"Export calendar source type. Possible values: 0 - Not set 1 - Outlook 2 - Ical 3 - Google 4 - Yahoo 5 - MSN 6 - ICalDav","enum":[0,1,2,3,4,5,6],"default":0},"ics_url":{"type":"string","format":"uri","description":"iCalendar public url used as import source."},"ics_export_hash":{"type":"string"},"google_export_canceled":{"type":"integer","default":0},"google_export_add_pt":{"type":"integer","default":0},"ord":{"type":"integer","readOnly":true,"default":0},"ics_export_url":{"type":"string","description":"iCalendar public url used as export source.","readOnly":true},"permissions":{"type":"string","description":"Lable(s) for different application sections. In order to set permission an employee must have a user(can_login - 1). Possible values: locations, providers, services, availability, appointments, get_widget, promote, clients, overview, calendar, settings, profile, account","example":"locations, providers"},"can_login":{"type":"boolean","description":"Whether the employee can login to his account or not. An employee that cannot login will not have access to the API.","readOnly":true,"example":1},"password":{"type":"string","writeOnly":true},"send_invite_email":{"type":"boolean","description":"Available only when creating a new employee - will send an email to the email address of the newly created employee","writeOnly":true},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer"}}},"writeOnly":true,"description":"Links with locations and services","example":{"[LOCATION_ID]":{"[SERVICE_ID]":1}}}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","email","first_name","last_name","links"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the employee","example":1234,"readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company of the employee. Field is writable when entity is owned by child account.","example":3214},"email":{"type":"string","format":"email","description":"Unique Email address of the employee"},"first_name":{"type":"string","description":"First Name","example":"John"},"last_name":{"type":"string","description":"Last Name","example":"Doe"},"job":{"type":"string","description":"Job name","example":"Accountant"},"bio":{"type":"string","description":"Bio"},"phone":{"type":"string","description":"Phone number","example":""},"photo_url":{"type":"string","format":"uri","description":"Photo URL","example":""},"public_email":{"type":"boolean","description":"Whether or not the employee\'s email will be displayed on the widget","default":false},"public_phone":{"type":"boolean","default":false},"status":{"type":"boolean","description":"Employee status: active / inactive","default":false},"username":{"type":"string","description":"Automatically generated based on the first and last names","example":"","readOnly":true},"nickname":{"type":"string","description":"Unique nickname per company. May contain only letters, digits, the dot character and the underline character.","example":""},"linkedin":{"type":"string","format":"uri","description":"LinkedIn URL","default":""},"yelp":{"type":"string","format":"uri"},"pinterest":{"type":"string","format":"uri"},"vimeo":{"type":"string","format":"uri"},"youtube":{"type":"string","format":"uri"},"twitter":{"type":"string","format":"uri","description":"Twitter URL","example":""},"facebook":{"type":"string","format":"uri","description":"Facebook URL","example":""},"receivesms":{"type":"boolean","description":"If true (1) then the employee will receive an SMS message informing them about new appointments","default":false},"sms_email":{"type":"string","format":"email","description":"The SMS service to be used in the following format: [email protected]. Note: the number keyword will be replaced with the employee\'s phone number before the SMS is sent.","example":"[email protected]"},"intuit_user_id":{"type":"string"},"ipp_mode":{"type":"integer"},"intuit_auth_id":{"type":"string"},"intuit_db_id":{"type":"string"},"intuit_realm_id":{"type":"string"},"intuit_ticket_id":{"type":"string"},"newsletter":{"type":"integer"},"is_owner":{"type":"boolean","description":"Whether the employee is the owner of the company (the employee created at signup). By updating the value for a created employee, areas from permissions can be managed for (all - 1/own - 0) account(s)","default":false,"readOnly":true},"ics_service":{"type":"integer","format":"int32","description":"Import calendar source type. Possible values: 0 - Not set 1 - Google 2 - Outlook or other public URL calendar source (ics) 3 - Exc
1hange","default":0,"enum":[0,1,2,3]},"ics_export_service":{"type":"integer","format":"int32","description":"Export calendar source type. Possible values: 0 - Not set 1 - Outlook 2 - Ical 3 - Google 4 - Yahoo 5 - MSN 6 - ICalDav","enum":[0,1,2,3,4,5,6],"default":0},"ics_url":{"type":"string","format":"uri","description":"iCalendar public url used as import source."},"ics_export_hash":{"type":"string"},"google_export_canceled":{"type":"integer","default":0},"google_export_add_pt":{"type":"integer","default":0},"ord":{"type":"integer","readOnly":true,"default":0},"ics_export_url":{"type":"string","description":"iCalendar public url used as export source.","readOnly":true},"permissions":{"type":"string","description":"Lable(s) for different application sections. In order to set permission an employee must have a user(can_login - 1). Possible values: locations, providers, services, availability, appointments, get_widget, promote, clients, overview, calendar, settings, profile, account","example":"locations, providers"},"can_login":{"type":"boolean","description":"Whether the employee can login to his account or not. An employee that cannot login will not have access to the API.","readOnly":true,"example":1},"password":{"type":"string","writeOnly":true},"send_invite_email":{"type":"boolean","description":"Available only when creating a new employee - will send an email to the email address of the newly created employee","writeOnly":true},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer"}}},"writeOnly":true,"description":"Links with locations and services","example":{"[LOCATION_ID]":{"[SERVICE_ID]":1}}}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request PUT \'https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'PUT\',\\n \'url\': \'https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"PUT\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Put.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.PUT);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"delete":{"tags":["Employee"],"summary":"Delete an Employee","description":"Delete an existing employee.","operationId":"deleteEmployee","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Employee id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","nullable":true}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request DELETE \'https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'DELETE\',\\n \'url\': \'https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"DELETE\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Delete.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.DELETE);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/employee/{id}/assignAvailability":{"put":{"tags":["Employee"],"summary":"Update availability","de
1scription":"Update or change the availability (working hours or available times) of a specific employee.","operationId":"updateEmployeeAvailability","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Employee id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id"],"properties":{"company_id":{"description":"Company id","type":"integer","format":"int64","example":1234},"availabilities":{"type":"array","items":{"type":"object","required":["repeat","type","start_date","end_date","days"],"properties":{"repeat":{"type":"integer","enum":[1,2],"description":"1 - weekly/ 2 - Date interval","example":1},"type":{"type":"boolean","description":"0 - Available/ 1 - Out of Office","example":0},"start_date":{"type":"string","format":"date","example":"12/1/2015"},"end_date":{"type":"string","format":"date","example":"12/31/2015"},"location_id":{"type":"integer","description":"optional for single location enabled","example":2144},"days":{"type":"object","example":{"mo":{"time":[["10:00","18:00"],["22:00","23:00"]]},"tu":{"time":[["14:00","18:00"],["20:00","23:00"]]}}}}}}},"description":"The following format is used:\\n`{ LOCATION_ID: [ SERVICE_1, SERVICE_2, ...]}`\\nTo assign services to all locations for an employee:\\n`{0: [SERVICE_1, SERVICE_2, ...]}`\\n"}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","nullable":true}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request PUT \'https://www.setster.com/api/v2/employee/{id}/assignAvailability?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'PUT\',\\n \'url\': \'https://www.setster.com/api/v2/employee/{id}/assignAvailability?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/{id}/assignAvailability?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"PUT\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/{id}/assignAvailability?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Put.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/{id}/assignAvailability?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.PUT);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/employee/assignServices":{"post":{"tags":["Employee"],"summary":"Link an employee to all locations and services","description":"Link or assign a specific employee to all existing locations and services.","operationId":"updateEmployeeServicesOrLocations","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"employee_id","in":"query","description":"Employee id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","example":{"45634":[232,34534]},"description":"The following format is used:\\n`{ LOCATION_ID: [ SERVICE_1, SERVICE_2, ...]}`\\nTo assign services to all locations for an employee:\\n`{0: [SERVICE_1, SERVICE_2, ...]}`\\n"},"properties":{}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","example":null}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/employee/assignServices?session_token=SESSION_TOKEN&employee_id=EMPLOYEE_ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/employee/assignServices?session_token=SESSION_TOKEN&employee_id=EMPLOYEE_ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/assignServices?session_token=SESSION_TOKEN&employee_id=EMPLOYEE_ID\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/assignServices?session_token=SESSION_TOKEN&employee_id=EMPLOYEE_ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/assignServices?session_token=SESSION_TOKEN&employee_id=EMPLOYEE_ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/employee/sync/{id}":{"get":{"tags":["Employee"],"summary":"Sync Employee Calendar","description":"Force the calendar sync to occur for a specific employee.\\nPlease note this option is only available if the employee is syncing with an Internet Calendar or Google Calendar and is not available for Microsoft Calendars as they rely on Microsoft\'s PUSH functionality.","o
1perationId":"syncEmployee","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Employee id","schema":{"type":"integer","format":"int64"}},{"name":"export","in":"query","description":"If not present default action is the import","schema":{"type":"boolean","example":1}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0},"statusDescriptions":{"type":"string","example":"SYNCED","description":"Description of the status"},"data":{"type":"object","nullable":true}}}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/employee/sync/{id}?session_token=SESSION_TOKEN&id=ID&export=EXPORT\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/employee/sync/{id}?session_token=SESSION_TOKEN&id=ID&export=EXPORT\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/sync/{id}?session_token=SESSION_TOKEN&id=ID&export=EXPORT\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/sync/{id}?session_token=SESSION_TOKEN&id=ID&export=EXPORT\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/sync/{id}?session_token=SESSION_TOKEN&id=ID&export=EXPORT\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/employee/getAvailabilityTime/{id}":{"get":{"tags":["Employee"],"summary":"Get availability time","description":"Get the availability of a specific employee in dates and times format.","operationId":"getEmployeeAvailabilityTime","security":[{"session_token":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Employee id","schema":{"type":"integer"}},{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"availabilities":{"type":"array","items":{"type":"object","required":["repeat","type","start_date","end_date","days"],"properties":{"repeat":{"type":"integer","enum":[1,2],"description":"1 - weekly/ 2 - Date interval","example":1},"type":{"type":"boolean","description":"0 - Available/ 1 - Out of Office","example":0},"start_date":{"type":"string","format":"date","example":"12/1/2015"},"end_date":{"type":"string","format":"date","example":"12/31/2015"},"location_id":{"type":"integer","description":"optional for single location enabled","example":2144},"days":{"type":"object","example":{"mo":{"time":[["10:00","18:00"],["22:00","23:00"]]},"tu":{"time":[["14:00","18:00"],["20:00","23:00"]]}}}}}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/employee/getAvailabilityTime/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/employee/getAvailabilityTime/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/getAvailabilityTime/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/getAvailabilityTime/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/getAvailabilityTime/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/employee/getAvailability":{"get":{"tags":["Employee"],"summary":"Get availability","de
1scription":"Get the availability of a specific employee in boxes format.","operationId":"listEmployeeAvailability","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"employee_id","in":"query","required":true,"description":"Employee id","schema":{"type":"integer","format":"int64"}},{"name":"location_id","in":"query","required":true,"description":"Location id","schema":{"type":"integer","format":"int64"}},{"name":"start_date","in":"query","required":true,"description":"Start Date","schema":{"type":"string"}},{"name":"end_date","in":"query","required":true,"description":"End Date","schema":{"type":"string"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"start_date":{"type":"string","example":"2018-09-01 12:12:12"},"end_date":{"type":"string","example":"2018-09-03 12:12:12"},"boxes":{"type":"object","example":{"1":100,"2":1}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/employee/getAvailability?employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&start_date=START_DATE&end_date=END_DATE\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/employee/getAvailability?employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&start_date=START_DATE&end_date=END_DATE\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/getAvailability?employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&start_date=START_DATE&end_date=END_DATE\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/getAvailability?employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&start_date=START_DATE&end_date=END_DATE\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/getAvailability?employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&start_date=START_DATE&end_date=END_DATE\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/employee/uploadPhoto":{"post":{"tags":["Employee"],"summary":"Upload an Employee Photo","description":"Add or update the image of a specific employee.","operationId":"uploadEmployeePhoto","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"provider","in":"query","description":"Employee id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"photo":{"type":"string","format":"binary"}}},"encoding":{"photo":{"contentType":"image/png, image/jpeg"}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"upload_id":{"type":"integer","format":"int64","example":32412},"file_name":{"type":"string","example":"avatar.png"},"file_location":{"type":"string","example":"/admin/images/clients/"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/employee/uploadPhoto?session_token=SESSION_TOKEN&provider=PROVIDER\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/employee/uploadPhoto?session_token=SESSION_TOKEN&provider=PROVIDER\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/uploadPhoto?session_token=SESSION_TOKEN&provider=PROVIDER\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/uploadPhoto?session_token=SESSION_TOKEN&provider=PROVIDER\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/uploadPhoto?session_token=SESSION_TOKEN&provider=PROVIDER\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/employee/removePhoto":{"post":{"tags":["Employee"],"summary":"Delete an Employee Photo","description":"Delete the image of a specific employee.","operationId":"deleteEmployeePhoto","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"provider","in":"query","description":"Employee id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["file_name"],"properties":{"file_name":{"type":"string"},"provider":{"type":"integer","description":"Employee Id","example":2342}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","example":null}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/employee/removePhoto?session_token=SESSION_TOKEN&provider=PROVIDER\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/employee/removePhoto?session_token=SESSION_TOKEN&provider=PROVIDER\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/removePhoto?session_token=SESSION_TOKEN&provider=PROVIDER\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/removePhoto?session_token=SESSION_TOKEN&provider=PROVIDER\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/removePhoto?session_token=SESSION_TOKEN&provider=PROVIDER\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/employee/updateOrder":{"post":{"tags":["Employee"],"summary":"Update Employee\'s Sort Order","description":"Change the sort order of the employees in the list.","operationId":"updateEmployeeOrder","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["id","ord"],"properties":{"id":{"type":"integer","example":27864,"description":"Employee id"},"ord":{"type":"integer","example":3,"description":"The order number in the list"}}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","example":null}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/employee/updateOrder?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/employee/updateOrder?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/updateOrder?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/updateOrder?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/updateOrder?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/employee/checknickname/{nickname}":{"get":{"tags":["Employee"],"summary":"Check Nickname Availability","de
1scription":"Check whether a specific nickname is available to use.\\n","operationId":"getEmployeeNicknameAvailability","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"nickname","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0},"statusDescriptions":{"type":"string","example":"SYNCED","description":"nick_name already exists"},"data":{"type":"object","nullable":true}}}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/employee/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/employee/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/employee/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/employee/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/employee/checknickname/{nickname}?session_token=SESSION_TOKEN&nickname=NICKNAME\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/availability":{"get":{"tags":["Availability","Select Availability"],"summary":"Get Availability","description":"Get the available times to schedule an appointment.","operationId":"listAvailability","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"service_id","in":"query","required":true,"example":2116,"description":"The ID of the selected service","schema":{"type":"integer","format":"int64"}},{"name":"subservices","in":"query","example":[2116,231],"description":"The IDs of the selected subservices","style":"form","schema":{"type":"array","items":{"type":"integer"}}},{"name":"location_id","in":"query","example":2116,"description":"The ID of the selected location","schema":{"type":"integer","format":"int64"}},{"name":"provider_id","in":"query","example":2116,"description":"The ID of the provider (employee)","schema":{"type":"integer","format":"int64"}},{"name":"start_date","in":"query","required":true,"example":"2014-05-15","description":"(YYYY-mm-dd) The day for which the availability is requested","schema":{"type":"string","format":"date"}},{"name":"t","in":"query","required":true,"description":" - If \'weekly\', then the availability for the whole week of \'start_date\' will be returned.\\n- If \'daily\', only the availability for \'start_date\' will be returned","example":"daily","schema":{"type":"string","enum":["daily","weekly"]}},{"name":"return","in":"query","required":true,"description":" - If \'boxes\', the availability will be returned as a set of boxes representing fractions of an hour.\\n- If \'times\', the availability will be returned as times when the availability slots begin. ","example":"boxes","schema":{"type":"string","enum":["boxes","times"]}}
1,{"name":"timezone_id","in":"query","description":"The ID of the timezone relative to which the availability is calculated. Defaults to the location timezone.","schema":{"type":"integer","format":"int32"},"example":553},{"name":"first_available","in":"query","description":"When there is no availability from start_date to the end of the interval(t - daily/weekly), whole agenda is scanned until a first available time slot is returned.","schema":{"type":"boolean"}},{"name":"available_seats","in":"query","description":"Retrieve available seats for an appointment start time. This will return the number of seats for an employee. If none is provided, a random employee will be selected and the number of seats for that employee will be returned.","schema":{"type":"boolean"}},{"name":"total_seats","in":"query","description":"Use this parameter to get the total number of seats for all employees","schema":{"type":"boolean"}},{"name":"no_of_weeks","in":"query","description":"Used to retreive the availability for one month. Accepted values are between 1 and 5","schema":{"type":"integer","minimum":1,"maximum":5},"example":4}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"interval":{"type":"integer","format":"int32","description":"The length (in minutes) of the appointment","example":60},"boxInterval":{"type":"integer","format":"int32","description":"Relevant only if return=boxes and represents the number of minutes in one box","example":5},"padding":{"type":"integer","format":"int32","description":"Relevant only if return=boxes and represents the number of minutes between two adjacent appointments","example":0},"day":{"type":"integer","format":"int32","description":"Selected day","example":15},"month":{"type":"integer","format":"int32","description":"Selected month","example":8},"year":{"type":"integer","format":"int32","description":"Selected year","example":2012},"times":{"type":"array","description":"Hash table of the start times of the available appointment slots, grouped by date","items":{"type":"string","example":"09:00:00"}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/availability?service_id=SERVICE_ID&subservices=SUBSERVICES&location_id=LOCATION_ID&provider_id=PROVIDER_ID&start_date=START_DATE&t=T&return=RETURN&timezone_id=TIMEZONE_ID&first_available=FIRST_AVAILABLE&available_seats=AVAILABLE_SEATS&total_seats=TOTAL_SEATS&no_of_weeks=NO_OF_WEEKS\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/availability?service_id=SERVICE_ID&subservices=SUBSERVICES&location_id=LOCATION_ID&provider_id=PROVIDER_ID&start_date=START_DATE&t=T&return=RETURN&timezone_id=TIMEZONE_ID&first_available=FIRST_AVAILABLE&available_seats=AVAILABLE_SEATS&total_seats=TOTAL_SEATS&no_of_weeks=NO_OF_WEEKS\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/availability?service_id=SERVICE_ID&subservices=SUBSERVICES&location_id=LOCATION_ID&provider_id=PROVIDER_ID&start_date=START_DATE&t=T&return=RETURN&timezone_id=TIMEZONE_ID&first_available=FIRST_AVAILABLE&available_seats=AVAILABLE_SEATS&total_seats=TOTAL_SEATS&no_of_weeks=NO_OF_WEEKS\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/availability?service_id=SERVICE_ID&subservices=SUBSERVICES&location_id=LOCATION_ID&provider_id=PROVIDER_ID&start_date=START_DATE&t=T&return=RETURN&timezone_id=TIMEZONE_ID&first_available=FIRST_AVAILABLE&available_seats=AVAILABLE_SEATS&total_seats=TOTAL_SEATS&no_of_weeks=NO_OF_WEEKS\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/availability?service_id=SERVICE_ID&subservices=SUBSERVICES&location_id=LOCATION_ID&provider_id=PROVIDER_ID&start_date=START_DATE&t=T&return=RETURN&timezone_id=TIMEZONE_ID&first_available=FIRST_AVAILABLE&available_seats=AVAILABLE_SEATS&total_seats=TOTAL_SEATS&no_of_weeks=NO_OF_WEEKS\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/availability/saveHoliday":{"post":{"tags":["Availability"],"summary":"Create a Holiday","description":"Create a new holiday.","operationId":"createHoliday","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the holiday","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","example":24232},"name":{"type":"string","example":"Christmas"},"type":{"type":"integer","enum":[1,2],"description":"The type of the holiday:\\n* `1` - holidays that have variable dates. Example: Thanksgiving, which is celebrated in U.S. on the fourth Thursday in November\\n* `2` - holidays with fixed dates. Example: Christmas\\n"},"start_date":{"type":"string","format":"date-time","example":"2018-12-25 00:00:00","description":"The date and time when the holiday starts. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"end_date":{"type":"string","format":"date-time","example":"2018-12-26 23:59:59","description":"The date and time when the holiday ends. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"day_in_week":{"type":"integer","enum":[0,1,2,3,4,5,6],"description":"The number of weekday. Only for holidays with `type = 1`.\\n* `0` - Monday\\n* `1` - Tuesday\\n* ...\\n* `6` - Sunday\\n"},"month":{"type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,10,11],"description":"The number of weekday. Only for holidays with `type = 1`\\n* `0` - January\\n* `1` - February\\n* ...\\n* `11` - December\\n"},"day_order":{"type":"integer","enum":[0,1,2,3,4],"description":"The order number of the weekday selected by `week_in_day` in the month
1selected by `month`. Only for holidays with `type = 1`\\n* `0` - First\\n* `1` - Second\\n* `2` - Third\\n* `3` - Fourth\\n* `4` - Last\\n"},"year":{"type":"integer","readOnly":true,"description":"The current year. Only for holidays with `type = 1`"},"caption":{"type":"string","readOnly":true,"example":"Dec 25th 2018 (Christmas)"},"enabled":{"type":"number","enum":[0,1],"default":1},"timestamp":{"type":"number","description":"The timestamp of the holiday\'s start date in the current year","example":1542844800}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the holiday","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","example":24232},"name":{"type":"string","example":"Christmas"},"type":{"type":"integer","enum":[1,2],"description":"The type of the holiday:\\n* `1` - holidays that have variable dates. Example: Thanksgiving, which is celebrated in U.S. on the fourth Thursday in November\\n* `2` - holidays with fixed dates. Example: Christmas\\n"},"start_date":{"type":"string","format":"date-time","example":"2018-12-25 00:00:00","description":"The date and time when the holiday starts. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"end_date":{"type":"string","format":"date-time","example":"2018-12-26 23:59:59","description":"The date and time when the holiday ends. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"day_in_week":{"type":"integer","enum":[0,1,2,3,4,5,6],"description":"The number of weekday. Only for holidays with `type = 1`.\\n* `0` - Monday\\n* `1` - Tuesday\\n* ...\\n* `6` - Sunday\\n"},"month":{"type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,10,11],"description":"The number of weekday. Only for holidays with `type = 1`\\n* `0` - January\\n* `1` - February\\n* ...\\n* `11` - December\\n"},"day_order":{"type":"integer","enum":[0,1,2,3,4],"description":"The order number of the weekday selected by `week_in_day` in the month selected by `month`. Only for holidays with `type = 1`\\n* `0` - First\\n* `1` - Second\\n* `2` - Third\\n* `3` - Fourth\\n* `4` - Last\\n"},"year":{"type":"integer","readOnly":true,"description":"The current year. Only for holidays with `type = 1`"},"caption":{"type":"string","readOnly":true,"example":"Dec 25th 2018 (Christmas)"},"enabled":{"type":"number","enum":[0,1],"default":1},"timestamp":{"type":"number","description":"The timestamp of the holiday\'s start date in the current year","example":1542844800}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/availability/saveHoliday?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/availability/saveHoliday?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/availability/saveHoliday?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/availability/saveHoliday?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/availability/saveHoliday?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/availability/saveHoliday/{id}":{"post":{"tags":["Availability"],"summary":"Modify a Holiday","description":"Modify the attributes of an existing holiday.","operationId":"updateHoliday","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","description":"Holiday id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the holiday","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","example":24232},"name":{"type":"string","example":"Christmas"},"type":{"type":"integer","enum":[1,2],"description":"The type of the holiday:\\n* `1` - holidays that have variable dates. Example: Thanksgiving, which is celebrated in U.S. on the fourth Thursday in November\\n* `2` - holidays with fixed dates. Example: Christmas\\n"},"start_date":{"type":"string","format":"date-time","example":"2018-12-25 00:00:00","description":"The date and time when the holiday starts. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"end_date":{"type":"string","format":"date-time","example":"2018-12-26 23:59:59","description":"The date and time when the holiday ends. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"day_in_week":{"type":"integer","enum":[0,1,2,3,4,5,6],"description":"The number of weekday. Only for holidays with `type = 1`.\\n* `0` - Monday\\n* `1` - Tuesday\\n* ...\\n* `6` - Sunday\\n"},"month":{"type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,10,11],"description":"The number of weekday. Only for holidays with `type = 1`\\n* `0` - January\\n* `1` - February\\n* ...\\n* `11` - December\\n"},"day_order":{"type":"integer","enum":[0,1,2,3,4],"description":"The order number of the weekday selected by `week_in_day` in the month
1selected by `month`. Only for holidays with `type = 1`\\n* `0` - First\\n* `1` - Second\\n* `2` - Third\\n* `3` - Fourth\\n* `4` - Last\\n"},"year":{"type":"integer","readOnly":true,"description":"The current year. Only for holidays with `type = 1`"},"caption":{"type":"string","readOnly":true,"example":"Dec 25th 2018 (Christmas)"},"enabled":{"type":"number","enum":[0,1],"default":1},"timestamp":{"type":"number","description":"The timestamp of the holiday\'s start date in the current year","example":1542844800}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the holiday","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","example":24232},"name":{"type":"string","example":"Christmas"},"type":{"type":"integer","enum":[1,2],"description":"The type of the holiday:\\n* `1` - holidays that have variable dates. Example: Thanksgiving, which is celebrated in U.S. on the fourth Thursday in November\\n* `2` - holidays with fixed dates. Example: Christmas\\n"},"start_date":{"type":"string","format":"date-time","example":"2018-12-25 00:00:00","description":"The date and time when the holiday starts. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"end_date":{"type":"string","format":"date-time","example":"2018-12-26 23:59:59","description":"The date and time when the holiday ends. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"day_in_week":{"type":"integer","enum":[0,1,2,3,4,5,6],"description":"The number of weekday. Only for holidays with `type = 1`.\\n* `0` - Monday\\n* `1` - Tuesday\\n* ...\\n* `6` - Sunday\\n"},"month":{"type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,10,11],"description":"The number of weekday. Only for holidays with `type = 1`\\n* `0` - January\\n* `1` - February\\n* ...\\n* `11` - December\\n"},"day_order":{"type":"integer","enum":[0,1,2,3,4],"description":"The order number of the weekday selected by `week_in_day` in the month selected by `month`. Only for holidays with `type = 1`\\n* `0` - First\\n* `1` - Second\\n* `2` - Third\\n* `3` - Fourth\\n* `4` - Last\\n"},"year":{"type":"integer","readOnly":true,"description":"The current year. Only for holidays with `type = 1`"},"caption":{"type":"string","readOnly":true,"example":"Dec 25th 2018 (Christmas)"},"enabled":{"type":"number","enum":[0,1],"default":1},"timestamp":{"type":"number","description":"The timestamp of the holiday\'s start date in the current year","example":1542844800}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request POST \'https://www.setster.com/api/v2/availability/saveHoliday/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/availability/saveHoliday/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/availability/saveHoliday/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/availability/saveHoliday/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/availability/saveHoliday/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/availability/getHoliday":{"get":{"tags":["Availability"],"summary":"List Holidays","description":"Get a list of all holidays and their attributes.","operationId":"listHolidays","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the holiday","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","example":24232},"name":{"type":"string","example":"Christmas"},"type":{"type":"integer","enum":[1,2],"description":"The type of the holiday:\\n* `1` - holidays that have variable dates. Example: Thanksgiving, which is celebrated in U.S. on the fourth Thursday in November\\n* `2` - holidays with fixed dates. Example: Christmas\\n"},"start_date":{"type":"string","format":"date-time","example":"2018-12-25 00:00:00","description":"The date and time when the holiday starts. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"end_date":{"type":"string","format":"date-time","example":"2018-12-26 23:59:59","description":"The date and time when the holiday ends. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"day_in_week":{"type":"integer","enum":[0,1,2,3,4,5,6],"description":"The number of weekday. Only for holidays with `type = 1`.\\n* `0` - Monday\\n* `1` - Tuesday\\n* ...\\n* `6` - Sunday\\n"},"month":{"type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,10,11],"description":"The number of weekday. Only for holidays with `type = 1`\\n* `0` - January\\n* `1` - February\\n* ...\\n* `11` - December\\n"},"day_order":{"type":"integer","enum":[0,1,2,3,4],"description":"The order number of the weekday selected by `week_in_day` in the month
1selected by `month`. Only for holidays with `type = 1`\\n* `0` - First\\n* `1` - Second\\n* `2` - Third\\n* `3` - Fourth\\n* `4` - Last\\n"},"year":{"type":"integer","readOnly":true,"description":"The current year. Only for holidays with `type = 1`"},"caption":{"type":"string","readOnly":true,"example":"Dec 25th 2018 (Christmas)"},"enabled":{"type":"number","enum":[0,1],"default":1},"timestamp":{"type":"number","description":"The timestamp of the holiday\'s start date in the current year","example":1542844800}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/availability/getHoliday?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/availability/getHoliday?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/availability/getHoliday?session_token=SESSION_TOKEN\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/availability/getHoliday?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/availability/getHoliday?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/availability/getHoliday/{id}":{"get":{"tags":["Availability"],"summary":"Get a Holiday","description":"Get the attributes of a specific holiday.","operationId":"getHoliday","security":[{"session_token":[]}],"parameters":[{"name":"id","in":"path","description":"Holiday id","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the holiday","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","example":24232},"name":{"type":"string","example":"Christmas"},"type":{"type":"integer","enum":[1,2],"description":"The type of the holiday:\\n* `1` - holidays that have variable dates. Example: Thanksgiving, which is celebrated in U.S. on the fourth Thursday in November\\n* `2` - holidays with fixed dates. Example: Christmas\\n"},"start_date":{"type":"string","format":"date-time","example":"2018-12-25 00:00:00","description":"The date and time when the holiday starts. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"end_date":{"type":"string","format":"date-time","example":"2018-12-26 23:59:59","description":"The date and time when the holiday ends. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"day_in_week":{"type":"integer","enum":[0,1,2,3,4,5,6],"description":"The number of weekday. Only for holidays with `type = 1`.\\n* `0` - Monday\\n* `1` - Tuesday\\n* ...\\n* `6` - Sunday\\n"},"month":{"type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,10,11],"description":"The number of weekday. Only for holidays with `type = 1`\\n* `0` - January\\n* `1` - February\\n* ...\\n* `11` - December\\n"},"day_order":{"type":"integer","enum":[0,1,2,3,4],"description":"The order number of the weekday selected by `week_in_day` in the month
1selected by `month`. Only for holidays with `type = 1`\\n* `0` - First\\n* `1` - Second\\n* `2` - Third\\n* `3` - Fourth\\n* `4` - Last\\n"},"year":{"type":"integer","readOnly":true,"description":"The current year. Only for holidays with `type = 1`"},"caption":{"type":"string","readOnly":true,"example":"Dec 25th 2018 (Christmas)"},"enabled":{"type":"number","enum":[0,1],"default":1},"timestamp":{"type":"number","description":"The timestamp of the holiday\'s start date in the current year","example":1542844800}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/availability/getHoliday/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/availability/getHoliday/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/availability/getHoliday/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/availability/getHoliday/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/availability/getHoliday/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/availability/deleteHoliday/{ids}":{"post":{"tags":["Availability"],"summary":"Delete Holidays","description":"Delete one or more existing holidays.","operationId":"deleteHoliday","security":[{"session_token":[]}],"parameters":[{"name":"ids","in":"path","description":"A list of holiday ids, separated by comma.\\nExample:\\n* 234,345\\n* 234\\n","required":true,"schema":{"type":"string"},"example":"234,543"},{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"boolean"}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request POST \'https://www.setster.com/api/v2/availability/deleteHoliday/{ids}?session_token=SESSION_TOKEN&ids=IDS\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/availability/deleteHoliday/{ids}?session_token=SESSION_TOKEN&ids=IDS\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/availability/deleteHoliday/{ids}?session_token=SESSION_TOKEN&ids=IDS\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/availability/deleteHoliday/{ids}?session_token=SESSION_TOKEN&ids=IDS\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/availability/deleteHoliday/{ids}?session_token=SESSION_TOKEN&ids=IDS\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/service":{"get":{"tags":["Service","Select Services"],"summary":"List Services","description":"Get a list of all services and their attributes.","operationId":"listServices","security":[{"session_token":[]}],"parameters":[{"name":"id","in":"query","description":"Service id","schema":{"type":"integer"}},{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"location_id","in":"query","description":"Location id","schema":{"type":"integer"}},{"name":"active_services","in":"query","description":"Return only active services","schema":{"type":"boolean","default":false}},{"name":"description","in":"query","schema":{"type":"string"}},{"name":"auto_confirm","in":"query","schema":{"type":"boolean"}},{"name":"is_subservice","in":"query","schema":{"type":"boolean"}},{"name":"duration","in":"query","schema":{"type":"integer","multipleOf":15}},{"name":"duration_padding","in":"query","schema":{"type":"integer","multipleOf":5}},{"name":"max_clients","in":"query","schema":{"type":"integer"}},{"name":"prior_notice","in":"query","schema":{"type":"integer"}},{"name":"after_notice","in":"query","schema":{"type":"integer"}},{"name":"cancel_appointment","in":"query","schema":{"type":"integer"}},{"name":"reschedule_appointment","in":"query","schema":{"type":"integer"}},{"name":"send_reminder","in":"query","schema":{"type":"integer"}},{"name":"start_step","in":"query","schema":{"type":"integer","multipleOf":5}},{"name":"set_schedule","in":"query","schema":{"type":"integer"}},{"name":"price","in":"query","schema":{"type":"integer"}},{"name":"payment_min_amount","in":"query","schema":{"type":"number"}},{"name":"allow_cash_payment","in":"query","schema":{"type":"boolean"}},{"name":"group_session","in":"query","schema":{"type":"integer"}},{"name":"waiting_list","in":"query","schema":{"type":"integer"}},{"name":"client_instructions","in":"query","schema":{"type":"string"}},{"name":"widget_message","in":"query","schema":{"type":"string"}},{"name":"password","in":"query","schema":{"type":"string"}},{"name":"active_from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"active_until","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"active_interval_status","in":"query","schema":{"type":"boolean"}},{"name":"status","in":"query","schema":{"type":"boolean"}},{"name":"photo","in":"query","schema":{"type":"string"}},{"name":"active_rules","in":"query","schema":{"type":"boolean"}},{"name":"tmp_default","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","name","duration"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the service","readOnly":true,"example":1234},"name":{"type":"string","description":"The name of the service","example":"Default service"},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the service belongs to. Field is writable when entity is owned by child account","example":5678},"duration":{"type":"integer","format":"int32","multipleOf":15,"description":"The duration of the service in minutes","default":60},"description":{"type":"string","description":"The description of the service","example":"This service should be used in testing only"},"auto_confirm":{"type":"boolean","description":"If true (1) then the appointments made for the service will be automatically confirmed. If false (0) then the appointments must be confirmed by the provider.","default":false},"is_subservice":{"type":"boolean","description":"If true (1) the service will be an additional service, otherwise it will be a base service.","default":false},"require_addon":{"type":"integer","description":"If set to 1, requires at least one add-on (subservice) to be selected when booking this service. Only enforced if the service has linked add-ons.","enum":[0,1],"default":0},"duration_padding":{"type":"integer","format":"int32","multipleOf":5,"description":"The minimum number of minutes between two adjacent appointments","default":0},"max_clients":{"type":"integer","default":0},"prior_notice":{"type":"integer","description":"The minimum number of hours the appointment has to be scheduled before the scheduled time","default":0},"after_notice":{"type":"integer","description":"The maximum number of days the appointment has to be scheduled after the scheduled time","default":0},"cancel_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can cancel the appointment. If 0 the client cannot cancel the appointment.","default":0},"reschedule_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"send_reminder":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"start_step":{"type":"integer","multipleOf":5,"description":"Number of minutes.\\nIf this field has a value different than 0, then the clients can choose any start time (in increments equal to the value of the field) for their appointment in the availability zone.\\nIf the value of the field is 0, then the clients can select only predefined time slots for the appointments.\\n","default":0},"set_schedule":{"type":"boolean","description":"If `true` the service can only be performed on the schedule times. If `true`, availability can be added to the service through the `schedule` field","default":false},"schedule":{"type":"array","items":{"type":"object","properties":{"repeat":{"type":"integer","enum":[0,1,2],"description":"0 - one-time event / 1 - weekly / 2 - monthly","example":1},"start_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`","example":"01/06/2019"},"start_time":{"type":"object","description":"the start hour in the day","example":{"hour":9,"min":0,"am":"am"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"end_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`. Used only if `repeat = 1` or `repeat = 2`","example":"01/12/2019"},"end_time":{"type":"object","description":"the end hour in the day","example":{"hour":5,"min":0,"am":"pm"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"days":{"type":"object","example":{"2":1,"3":1,"4":1,"5":1,"6":1},"additionalProperties":{"type":"integer"},"description":"A list of day numbers for the days when the service is available, of the form: `{\\"index1\\": 1,\\"index2\\": 1,...}`.\\nIgnored when repeat = 0. If `repeat = 1`, `index1, index2,...` represents the day number in the week.\\nIf `repeat = 2`, it represents the day number in the month.\\n"}}},"description":"The service can only be performed on the following times. The `set_schedule` needs to be set to `true` for this field to be considered."},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"writeOnly":true,"description":"Links with locations and employees.\\nThe links property may contain more than one of the above structures:\\n{\\"[EMPLOYEE_ID]\\" : {\\"[LOCATION_ID]\\":1}}\\n","example":{"13367":{"16982":1,"19281":0,"19387":0,"19540":0}}},"price":{"type":"number","format":"float","description":"The price of the service","default":0},"payment_min_amount":{"type":"number","format":"double","description":"The minimum amount required for the payment to be valid","default":0},"allow_cash_payment":{"type":"boolean","description":"Whether or not to allow the client to skip the online payment and pay with cash","default":false},"group_session":{"type":"integer","default":0,"description":"The number of appointments that can be scheduled in the same time slot."},"waiting_list":{"type":"integer","default":0},"client_instructions":{"type":"string","description":"The message sent to the client in the confirmation email (after the client verifies his/her email address)"},"widget_message":{"type":"string","description":"The message displayed on the widget after the client books an appointments"},"password":{"type":"string"},"ord":{"type":"integer","description":"The order number of the service","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"The time when the service was created"},"active_from":{"type":"string","format":"date","nullable":true,"description":"The date when the service starts to show up on the widget. If this field is null, then there will be no limit on the start date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_until":{"type":"string","format":"date","nullable":true,"description":"The date when the service stops being displayed on the widget. If this field is null, then there will be no limit on the end date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_interval_status":{"type":"boolean","default":true},"status":{"type":"boolean","description":"If 0 the service will not appear on the widget.","default":true},"active_rules":{"type":"integer","default":1},"photo":{"type":"string"}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/service?session_token=SESSION_TOKEN&id=ID&location_id=LOCATION_ID&active_services=ACTIVE_SERVICES&description=DESCRIPTION&auto_confirm=AUTO_CONFIRM&is_subservice=IS_SUBSERVICE&duration=DURATION&duration_padding=DURATION_PADDING&max_clients=MAX_CLIENTS&prior_notice=PRIOR_NOTICE&after_notice=AFTER_NOTICE&cancel_appointment=CANCEL_APPOINTMENT&reschedule_appointment=RESCHEDULE_APPOINTMENT&send_reminder=SEND_REMINDER&start_step=START_STEP&set_schedule=SET_SCHEDULE&price=PRICE&payment_min_amount=PAYMENT_MIN_AMOUNT&allow_cash_payment=ALLOW_CASH_PAYMENT&group_session=GROUP_SESSION&waiting_list=WAITING_LIST&client_instructions=CLIENT_INSTRUCTIONS&widget_message=WIDGET_MESSAGE&password=PASSWORD&active_from=ACTIVE_FROM&active_until=ACTIVE_UNTIL&active_interval_status=ACTIVE_INTERVAL_STATUS&status=STATUS&photo=PHOTO&active_rules=ACTIVE_RULES&tmp_default=TMP_DEFAULT\'"},{"lang":"Node","source":"var request = re
1quire(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/service?session_token=SESSION_TOKEN&id=ID&location_id=LOCATION_ID&active_services=ACTIVE_SERVICES&description=DESCRIPTION&auto_confirm=AUTO_CONFIRM&is_subservice=IS_SUBSERVICE&duration=DURATION&duration_padding=DURATION_PADDING&max_clients=MAX_CLIENTS&prior_notice=PRIOR_NOTICE&after_notice=AFTER_NOTICE&cancel_appointment=CANCEL_APPOINTMENT&reschedule_appointment=RESCHEDULE_APPOINTMENT&send_reminder=SEND_REMINDER&start_step=START_STEP&set_schedule=SET_SCHEDULE&price=PRICE&payment_min_amount=PAYMENT_MIN_AMOUNT&allow_cash_payment=ALLOW_CASH_PAYMENT&group_session=GROUP_SESSION&waiting_list=WAITING_LIST&client_instructions=CLIENT_INSTRUCTIONS&widget_message=WIDGET_MESSAGE&password=PASSWORD&active_from=ACTIVE_FROM&active_until=ACTIVE_UNTIL&active_interval_status=ACTIVE_INTERVAL_STATUS&status=STATUS&photo=PHOTO&active_rules=ACTIVE_RULES&tmp_default=TMP_DEFAULT\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/service?session_token=SESSION_TOKEN&id=ID&location_id=LOCATION_ID&active_services=ACTIVE_SERVICES&description=DESCRIPTION&auto_confirm=AUTO_CONFIRM&is_subservice=IS_SUBSERVICE&duration=DURATION&duration_padding=DURATION_PADDING&max_clients=MAX_CLIENTS&prior_notice=PRIOR_NOTICE&after_notice=AFTER_NOTICE&cancel_appointment=CANCEL_APPOINTMENT&reschedule_appointment=RESCHEDULE_APPOINTMENT&send_reminder=SEND_REMINDER&start_step=START_STEP&set_schedule=SET_SCHEDULE&price=PRICE&payment_min_amount=PAYMENT_MIN_AMOUNT&allow_cash_payment=ALLOW_CASH_PAYMENT&group_session=GROUP_SESSION&waiting_list=WAITING_LIST&client_instructions=CLIENT_INSTRUCTIONS&widget_message=WIDGET_MESSAGE&password=PASSWORD&active_from=ACTIVE_FROM&active_until=ACTIVE_UNTIL&active_interval_status=ACTIVE_INTERVAL_STATUS&status=STATUS&photo=PHOTO&active_rules=ACTIVE_RULES&tmp_default=TMP_DEFAULT\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/service?session_token=SESSION_TOKEN&id=ID&location_id=LOCATION_ID&active_services=ACTIVE_SERVICES&description=DESCRIPTION&auto_confirm=AUTO_CONFIRM&is_subservice=IS_SUBSERVICE&duration=DURATION&duration_padding=DURATION_PADDING&max_clients=MAX_CLIENTS&prior_notice=PRIOR_NOTICE&after_notice=AFTER_NOTICE&cancel_appointment=CANCEL_APPOINTMENT&reschedule_appointment=RESCHEDULE_APPOINTMENT&send_reminder=SEND_REMINDER&start_step=START_STEP&set_schedule=SET_SCHEDULE&price=PRICE&payment_min_amount=PAYMENT_MIN_AMOUNT&allow_cash_payment=ALLOW_CASH_PAYMENT&group_session=GROUP_SESSION&waiting_list=WAITING_LIST&client_instructions=CLIENT_INSTRUCTIONS&widget_message=WIDGET_MESSAGE&password=PASSWORD&active_from=ACTIVE_FROM&active_until=ACTIVE_UNTIL&active_interval_status=ACTIVE_INTERVAL_STATUS&status=STATUS&photo=PHOTO&active_rules=ACTIVE_RULES&tmp_default=TMP_DEFAULT\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/service?session_token=SESSION_TOKEN&id=ID&location_id=LOCATION_ID&active_services=ACTIVE_SERVICES&description=DESCRIPTION&auto_confirm=AUTO_CONFIRM&is_subservice=IS_SUBSERVICE&duration=DURATION&duration_padding=DURATION_PADDING&max_clients=MAX_CLIENTS&prior_notice=PRIOR_NOTICE&after_notice=AFTER_NOTICE&cancel_appointment=CANCEL_APPOINTMENT&reschedule_appointment=RESCHEDULE_APPOINTMENT&send_reminder=SEND_REMINDER&start_step=START_STEP&set_schedule=SET_SCHEDULE&price=PRICE&payment_min_amount=PAYMENT_MIN_AMOUNT&allow_cash_payment=ALLOW_CASH_PAYMENT&group_session=GROUP_SESSION&waiting_list=WAITING_LIST&client_instructions=CLIENT_INSTRUCTIONS&widget_message=WIDGET_MESSAGE&password=PASSWORD&active_from=ACTIVE_FROM&active_until=ACTIVE_UNTIL&active_interval_status=ACTIVE_INTERVAL_STATUS&status=STATUS&photo=PHOTO&active_rules=ACTIVE_RULES&tmp_default=TMP_DEFAULT\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"post":{"tags":["Service"],"summary":"Create a Service","description":"Create a new service.","operationId":"createService","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","name","duration"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the service","readOnly":true,"example":1234},"name":{"type":"string","description":"The name of the service","example":"Default service"},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the service belongs to. Field is writable when entity is owned by child account","example":5678},"duration":{"type":"integer","format":"int32","multipleOf":15,"description":"The duration of the service in minutes","default":60},"description":{"type":"string","description":"The description of the service","example":"This service should be used in testing only"},"auto_confirm":{"type":"boolean","description":"If true (1) then the appointments made for the service will be automatically confirmed. If false (0) then the appointments must be confirmed by the provider.","default":false},"is_subservice":{"type":"boolean","description":"If true (1) the service will be an additional service, otherwise it will be a base service.","default":false},"require_addon":{"type":"integer","description":"If set to 1, requires at least one add-on (subservice) to be selected when booking this service. Only enforced if the service has linked add-ons. Uses global default from widget_settings unless service has active_rules=1.","enum":[0,1],"default":0},"duration_padding":{"type":"integer","format":"int32","multipleOf":5,"description":"The minimum number of minutes between two adjacent appointments","default":0},"max_clients":{"type":"integer","default":0},"prior_notice":{"type":"integer","description":"The minimum number of hours the appointment has to be scheduled before the scheduled time","default":0},"after_notice":{"type":"integer","description":"The maximum number of days the appointment has to be scheduled after the scheduled time","default":0},"cancel_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can cancel the appointment. If 0 the client cannot cancel the appointment.","default":0},"reschedule_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"send_reminder":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"start_step":{"type":"integer","multipleOf":5,"description":"Number of minutes.\\nIf this field has a value different than 0, then the clients can choose any start time (in increments equal to the value of the field) for their appointment in the availability zone.\\nIf the value of the field is 0, then the clients can select only predefined time slots for the appointments.\\n","default":0},"set_schedule":{"type":"boolean","description":"If `true` the service can only be performed on the schedule times. If `true`, availability can be added to the service through the `schedule` field","default":false},"schedule":{"type":"array","items":{"type":"object","properties":{"repeat":{"type":"integer","enum":[0,1,2],"description":"0 - one-time event / 1 - weekly / 2 - monthly","example":1},"start_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`","example":"01/06/2019"},"start_time":{"type":"object","description":"the start hour in the day","example":{"hour":9,"min":0,"am":"am"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"end_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`. Used only if `repeat = 1` or `repeat = 2`","example":"01/12/2019"},"end_time":{"type":"object","description":"the end hour in the day","example":{"hour":5,"min":0,"am":"pm"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"days":{"type":"object","example":{"2":1,"3":1,"4":1,"5":1,"6":1},"additionalProperties":{"type":"integer"},"description":"A list of day numbers for the days when the service is available, of the form: `{\\"index1\\": 1,\\"index2\\": 1,...}`.\\nIgnored when repeat = 0. If `repeat = 1`, `index1, index2,...` represents the day number in the week.\\nIf `repeat = 2`, it represents the day number in the month.\\n"}}},"description":"The service can only be performed on the following times. The `set_schedule` needs to be set to `true` for this field to be considered."},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"writeOnly":true,"description":"Links with locations and employees.\\nThe links property may contain more than one of the above structures:\\n{\\"[EMPLOYEE_ID]\\" : {\\"[LOCATION_ID]\\":1}}\\n","example":{"13367":{"16982":1,"19281":0,"19387":0,"19540":0}}},"price":{"type":"number","format":"float","description":"The price of the service","default":0},"payment_min_amount":{"type":"number","format":"double","description":"The minimum amount required for the payment to be valid","default":0},"allow_cash_payment":{"type":"boolean","description":"Whether or not to allow the client to skip the online payment and pay with cash","default":false},"group_session":{"type":"integer","default":0,"description":"The number of appointments that can be scheduled in the same time slot."},"waiting_list":{"type":"integer","default":0},"client_instructions":{"type":"string","description":"The message sent to the client in the confirmation email (after the client verifies his/her email address)"},"widget_message":{"type":"string","description":"The message displayed on the widget after the client books an appointments"},"password":{"type":"string"},"ord":{"type":"integer","description":"The order number of the service","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"The time when the service was created"},"active_from":{"type":"string","format":"date","nullable":true,"description":"The date when the service starts to show up on the widget. If this field is null, then there will be no limit on the start date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_until":{"type":"string","format":"date","nullable":true,"description":"The date when the service stops being displayed on the widget. If this field is null, then there will be no limit on the end date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_interval_status":{"type":"boolean","default":true},"status":{"type":"boolean","description":"If 0 the service will not appear on the widget.","default":true},"active_rules":{"type":"integer","default":1},"photo":{"type":"string"}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","name","duration"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the service","readOnly":true,"example":1234},"name":{"type":"string","description":"The name of the service","example":"Default service"},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the service belongs to. Field is writable when entity is owned by child account","example":5678},"duration":{"type":"integer","format":"int32","multipleOf":15,"description":"The duration of the service in minutes","default":60},"description":{"type":"string","description":"The description of the service","example":"This service should be used in testing only"},"auto_confirm":{"type":"boolean","description":"If true (1) then the appointments made for the service will be automatically confirmed. If false (0) then the appointments must be confirmed by the provider.","default":false},"is_subservice":{"type":"boolean","description":"If true (1) the service will be an additional service, otherwise it will be a base service.","default":false},"require_addon":{"type":"integer","description":"If set to 1, requires at least one add-on (subservice) to be selected when booking this service. Only enforced if the service has linked add-ons.","enum":[0,1],"default":0},"duration_padding":{"type":"integer","format":"int32","multipleOf":5,"description":"The minimum number of minutes between two adjacent appointments","default":0},"max_clients":{"type":"integer","default":0},"prior_notice":{"type":"integer","description":"The minimum number of hours the appointment has to be scheduled before the scheduled time","default":0},"after_notice":{"type":"integer","description":"The maximum number of days the appointment has to be scheduled after the scheduled time","default":0},"cancel_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can cancel the appointment. If 0 the client cannot cancel the appointment.","default":0},"reschedule_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"send_reminder":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"start_step":{"type":"integer","multipleOf":5,"description":"Number of minutes.\\nIf this field has a value different than 0, then the clients can choose any start time (in increments equal to the value of the field) for their appointment in the availability zone.\\nIf the value of the field is 0, then the clients can select only predefined time slots for the appointments.\\n","default":0},"set_schedule":{"type":"boolean","description":"If `true` the service can only be performed on the schedule times. If `true`, availability can be added to the service through the `schedule` field","default":false},"schedule":{"type":"array","items":{"type":"object","properties":{"repeat":{"type":"integer","enum":[0,1,2],"description":"0 - one-time event / 1 - weekly / 2 - monthly","example":1},"start_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`","example":"01/06/2019"},"start_time":{"type":"object","description":"the start hour in the day","example":{"hour":9,"min":0,"am":"am"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"end_date":{"type":"str
1ing","format":"date","description":"a date string with the format `day/month/year`. Used only if `repeat = 1` or `repeat = 2`","example":"01/12/2019"},"end_time":{"type":"object","description":"the end hour in the day","example":{"hour":5,"min":0,"am":"pm"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"days":{"type":"object","example":{"2":1,"3":1,"4":1,"5":1,"6":1},"additionalProperties":{"type":"integer"},"description":"A list of day numbers for the days when the service is available, of the form: `{\\"index1\\": 1,\\"index2\\": 1,...}`.\\nIgnored when repeat = 0. If `repeat = 1`, `index1, index2,...` represents the day number in the week.\\nIf `repeat = 2`, it represents the day number in the month.\\n"}}},"description":"The service can only be performed on the following times. The `set_schedule` needs to be set to `true` for this field to be considered."},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"writeOnly":true,"description":"Links with locations and employees.\\nThe links property may contain more than one of the above structures:\\n{\\"[EMPLOYEE_ID]\\" : {\\"[LOCATION_ID]\\":1}}\\n","example":{"13367":{"16982":1,"19281":0,"19387":0,"19540":0}}},"price":{"type":"number","format":"float","description":"The price of the service","default":0},"payment_min_amount":{"type":"number","format":"double","description":"The minimum amount required for the payment to be valid","default":0},"allow_cash_payment":{"type":"boolean","description":"Whether or not to allow the client to skip the online payment and pay with cash","default":false},"group_session":{"type":"integer","default":0,"description":"The number of appointments that can be scheduled in the same time slot."},"waiting_list":{"type":"integer","default":0},"client_instructions":{"type":"string","description":"The message sent to the client in the confirmation email (after the client verifies his/her email address)"},"widget_message":{"type":"string","description":"The message displayed on the widget after the client books an appointments"},"password":{"type":"string"},"ord":{"type":"integer","description":"The order number of the service","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"The time when the service was created"},"active_from":{"type":"string","format":"date","nullable":true,"description":"The date when the service starts to show up on the widget. If this field is null, then there will be no limit on the start date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_until":{"type":"string","format":"date","nullable":true,"description":"The date when the service stops being displayed on the widget. If this field is null, then there will be no limit on the end date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_interval_status":{"type":"boolean","default":true},"status":{"type":"boolean","description":"If 0 the service will not appear on the widget.","default":true},"active_rules":{"type":"integer","default":1},"photo":{"type":"string"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/service?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/service?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/service?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/service?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/service?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/service/{id}":{"get":{"tags":["Service"],"summary":"Get a Service","operationId":"getService","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","description":"Service id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","name","duration"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the service","readOnly":true,"example":1234},"name":{"type":"string","description":"The name of the service","example":"Default service"},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the service belongs to. Field is writable when entity is owned by child account","example":5678},"duration":{"type":"integer","format":"int32","multipleOf":15,"description":"The duration of the service in minutes","default":60},"description":{"type":"string","description":"The description of the service","example":"This service should be used in testing only"},"auto_confirm":{"type":"boolean","description":"If true (1) then the appointments made for the service will be automatically confirmed. If false (0) then the appointments must be confirmed by the provider.","default":false},"is_subservice":{"type":"boolean","description":"If true (1) the service will be an additional service, otherwise it will be a base service.","default":false},"require_addon":{"type":"integer","description":"If set to 1, requires at least one add-on (subservice) to be selected when booking this service. Only enforced if the service has linked add-ons.","enum":[0,1],"default":0},"duration_padding":{"type":"integer","format":"int32","multipleOf":5,"description":"The minimum number of minutes between two adjacent appointments","default":0},"max_clients":{"type":"integer","default":0},"prior_notice":{"type":"integer","description":"The minimum number of hours the appointment has to be scheduled before the scheduled time","default":0},"after_notice":{"type":"integer","description":"The maximum number of days the appointment has to be scheduled after the scheduled time","default":0},"cancel_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can cancel the appointment. If 0 the client cannot cancel the appointment.","default":0},"reschedule_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"send_reminder":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"start_step":{"type":"integer","multipleOf":5,"description":"Number of minutes.\\nIf this field has a value different than 0, then the clients can choose any start time (in increments equal to the value of the field) for their appointment in the availability zone.\\nIf the value of the field is 0, then the clients can select only predefined time slots for the appointments.\\n","default":0},"set_schedule":{"type":"boolean","description":"If `true` the service can only be performed on the schedule times. If `true`, availability can be added to the service through the `schedule` field","default":false},"schedule":{"type":"array","items":{"type":"object","properties":{"repeat":{"type":"integer","enum":[0,1,2],"description":"0 - one-time event / 1 - weekly / 2 - monthly","example":1},"start_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`","example":"01/06/2019"},"start_time":{"type":"object","description":"the start hour in the day","example":{"hour":9,"min":0,"am":"am"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"end_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`. Used only if `repeat = 1` or `repeat = 2`","example":"01/12/2019"},"end_time":{"type":"object","description":"the end hour in the day","example":{"hour":5,"min":0,"am":"pm"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"days":{"type":"object","example":{"2":1,"3":1,"4":1,"5":1,"6":1},"additionalProperties":{"type":"integer"},"description":"A list of day numbers for the days when the service is available, of the form: `{\\"index1\\": 1,\\"index2\\": 1,...}`.\\nIgnored when repeat = 0. If `repeat = 1`, `index1, index2,...` represents the day number in the week.\\nIf `repeat = 2`, it represents the day number in the month.\\n"}}},"description":"The service can only be performed on the following times. The `set_schedule` needs to be set to `true` for this field to be considered."},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"writeOnly":true,"description":"Links with locations and employees.\\nThe links property may contain more than one of the above structures:\\n{\\"[EMPLOYEE_ID]\\" : {\\"[LOCATION_ID]\\":1}}\\n","example":{"13367":{"16982":1,"19281":0,"19387":0,"19540":0}}},"price":{"type":"number","format":"float","description":"The price of the service","default":0},"payment_min_amount":{"type":"number","format":"double","description":"The minimum amount required for the payment to be valid","default":0},"allow_cash_payment":{"type":"boolean","description":"Whether or not to allow the client to skip the online payment and pay with cash","default":false},"group_session":{"type":"integer","default":0,"description":"The number of appointments that can be scheduled in the same time slot."},"waiting_list":{"type":"integer","default":0},"client_instructions":{"type":"string","description":"The message sent to the client in the confirmation email (after the client verifies his/her email address)"},"widget_message":{"type":"string","description":"The message displayed on the widget after the client books an appointments"},"password":{"type":"string"},"ord":{"type":"integer","description":"The order number of the service","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"The time when the service was created"},"active_from":{"type":"string","format":"date","nullable":true,"description":"The date when the service starts to show up on the widget. If this field is null, then there will be no limit on the start date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_until":{"type":"string","format":"date","nullable":true,"description":"The date when the service stops being displayed on the widget. If this field is null, then there will be no limit on the end date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_interval_status":{"type":"boolean","default":true},"status":{"type":"boolean","description":"If 0 the service will not appear on the widget.","default":true},"active_rules":{"type":"integer","default":1},"photo":{"type":"string"}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Get the attributes of a specific service."},"put":{"tags":["Service"],"summary":"Modify a Service","description":"Modify the attributes of an existing service.","operationId":"updateService","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Service id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","name","duration"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the service","readOnly":true,"example":1234},"name":{"type":"string","description":"The name of the service","example":"Default service"},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the service belongs to. Field is writable when entity is owned by child account","example":5678},"duration":{"type":"integer","format":"int32","multipleOf":15,"description":"The duration of the service in minutes","default":60},"description":{"type":"string","description":"The description of the service","example":"This service should be used in testing only"},"auto_confirm":{"type":"boolean","description":"If true (1) then the appointments made for the service will be automatically confirmed. If false (0) then the appointments must be confirmed by the provider.","default":false},"is_subservice":{"type":"boolean","description":"If true (1) the service will be an additional service, otherwise it will be a base service.","default":false},"require_addon":{"type":"integer","description":"If set to 1, requires at least one add-on (subservice) to be selected when booking this service. Only enforced if the service has linked add-ons. Uses global
1 default from widget_settings unless service has active_rules=1.","enum":[0,1],"default":0},"duration_padding":{"type":"integer","format":"int32","multipleOf":5,"description":"The minimum number of minutes between two adjacent appointments","default":0},"max_clients":{"type":"integer","default":0},"prior_notice":{"type":"integer","description":"The minimum number of hours the appointment has to be scheduled before the scheduled time","default":0},"after_notice":{"type":"integer","description":"The maximum number of days the appointment has to be scheduled after the scheduled time","default":0},"cancel_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can cancel the appointment. If 0 the client cannot cancel the appointment.","default":0},"reschedule_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"send_reminder":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"start_step":{"type":"integer","multipleOf":5,"description":"Number of minutes.\\nIf this field has a value different than 0, then the clients can choose any start time (in increments equal to the value of the field) for their appointment in the availability zone.\\nIf the value of the field is 0, then the clients can select only predefined time slots for the appointments.\\n","default":0},"set_schedule":{"type":"boolean","description":"If `true` the service can only be performed on the schedule times. If `true`, availability can be added to the service through the `schedule` field","default":false},"schedule":{"type":"array","items":{"type":"object","properties":{"repeat":{"type":"integer","enum":[0,1,2],"description":"0 - one-time event / 1 - weekly / 2 - monthly","example":1},"start_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`","example":"01/06/2019"},"start_time":{"type":"object","description":"the start hour in the day","example":{"hour":9,"min":0,"am":"am"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"end_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`. Used only if `repeat = 1` or `repeat = 2`","example":"01/12/2019"},"end_time":{"type":"object","description":"the end hour in the day","example":{"hour":5,"min":0,"am":"pm"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"days":{"type":"object","example":{"2":1,"3":1,"4":1,"5":1,"6":1},"additionalProperties":{"type":"integer"},"description":"A list of day numbers for the days when the service is available, of the form: `{\\"index1\\": 1,\\"index2\\": 1,...}`.\\nIgnored when repeat = 0. If `repeat = 1`, `index1, index2,...` represents the day number in the week.\\nIf `repeat = 2`, it represents the day number in the month.\\n"}}},"description":"The service can only be performed on the following times. The `set_schedule` needs to be set to `true` for this field to be considered."},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"writeOnly":true,"description":"Links with locations and employees.\\nThe links property may contain more than one of the above structures:\\n{\\"[EMPLOYEE_ID]\\" : {\\"[LOCATION_ID]\\":1}}\\n","example":{"13367":{"16982":1,"19281":0,"19387":0,"19540":0}}},"price":{"type":"number","format":"float","description":"The price of the service","default":0},"payment_min_amount":{"type":"number","format":"double","description":"The minimum amount required for the payment to be valid","default":0},"allow_cash_payment":{"type":"boolean","description":"Whether or not to allow the client to skip the online payment and pay with cash","default":false},"group_session":{"type":"integer","default":0,"description":"The number of appointments that can be scheduled in the same time slot."},"waiting_list":{"type":"integer","default":0},"client_instructions":{"type":"string","description":"The message sent to the client in the confirmation email (after the client verifies his/her email address)"},"widget_message":{"type":"string","description":"The message displayed on the widget after the client books an appointments"},"password":{"type":"string"},"ord":{"type":"integer","description":"The order number of the service","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"The time when the service was created"},"active_from":{"type":"string","format":"date","nullable":true,"description":"The date when the service starts to show up on the widget. If this field is null, then there will be no limit on the start date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_until":{"type":"string","format":"date","nullable":true,"description":"The date when the service stops being displayed on the widget. If this field is null, then there will be no limit on the end date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_interval_status":{"type":"boolean","default":true},"status":{"type":"boolean","description":"If 0 the service will not appear on the widget.","default":true},"active_rules":{"type":"integer","default":1},"photo":{"type":"string"}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","name","duration"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the service","readOnly":true,"example":1234},"name":{"type":"string","description":"The name of the service","example":"Default service"},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the service belongs to. Field is writable when entity is owned by child account","example":5678},"duration":{"type":"integer","format":"int32","multipleOf":15,"description":"The duration of the service in minutes","default":60},"description":{"type":"string","description":"The description of the service","example":"This service should be used in testing only"},"auto_confirm":{"type":"boolean","description":"If true (1) then the appointments made for the service will be automatically confirmed. If false (0) then the appointments must be confirmed by the provider.","default":false},"is_subservice":{"type":"boolean","description":"If true (1) the service will be an additional service, otherwise it will be a base service.","default":false},"require_addon":{"type":"integer","description":"If set to 1, requires at least one add-on (subservice) to be selected when booking this service. Only enforced if the service has linked add-ons.","enum":[0,1],"default":0},"duration_padding":{"type":"integer","format":"int32","multipleOf":5,"description":"The minimum number of minutes between two adjacent appointments","default":0},"max_clients":{"type":"integer","default":0},"prior_notice":{"type":"integer","description":"The minimum number of hours the appointment has to be scheduled before the scheduled time","default":0},"after_notice":{"type":"integer","description":"The maximum number of days the appointment has to be scheduled after the scheduled time","default":0},"cancel_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can cancel the appointment. If 0 the client cannot cancel the appointment.","default":0},"reschedule_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"send_reminder":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"start_step":{"type":"integer","multipleOf":5,"description":"Number of minutes.\\nIf this field has a value different than 0, then the clients can choose any start time (in increments equal to the value of the field) for their appointment in the availability zone.\\nIf the value of the field is 0, then the clients can select only predefined time slots for the appointments.\\n","default":0},"set_schedule":{"type":"boolean","description":"If `true` the service can only be performed on the schedule times. If `true`, availability can be added to the service through the `schedule` field","default":false},"schedule":{"type":"array","items":{"type":"object","properties":{"repeat":{"type":"integer","enum":[0,1,2],"description":"0 - one-time event / 1 - weekly / 2 - monthly","example":1},"start_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`","example":"01/06/2019"},"start_time":{"type":"object","description":"the start hour in the day","example":{"hour":9,"min":0,"am":"am"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"end_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`. Used only if `repeat = 1` or `repeat = 2`","example":"01/12/2019"},"end_time":{"type":"object","description":"the end hour in the day","example":{"hour":5,"min":0,"am":"pm"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"days":{"type":"object","example":{"2":1,"3":1,"4":1,"5":1,"6":1},"additionalProperties":{"type":"integer"},"description":"A list of day numbers for the days when the service is available, of the form: `{\\"index1\\": 1,\\"index2\\": 1,...}`.\\nIgnored when repeat = 0. If `repeat = 1`, `index1, index2,...` represents the day number in the week.\\nIf `repeat = 2`, it represents the day number in the month.\\n"}}},"description":"The service can only be performed on the following times. The `set_schedule` needs to be set to `true` for this field to be considered."},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"writeOnly":true,"description":"Links with locations and employees.\\nThe links property may contain more than one of the above structures:\\n{\\"[EMPLOYEE_ID]\\" : {\\"[LOCATION_ID]\\":1}}\\n","example":{"13367":{"16982":1,"19281":0,"19387":0,"19540":0}}},"price":{"type":"number","format":"float","description":"The price of the service","default":0},"payment_min_amount":{"type":"number","format":"double","description":"The minimum amount required for the payment to be valid","default":0},"allow_cash_payment":{"type":"boolean","description":"Whether or not to allow the client to skip the online payment and pay with cash","default":false},"group_session":{"type":"integer","default":0,"description":"The number of appointments that can be scheduled in the same time slot."},"waiting_list":{"type":"integer","default":0},"client_instructions":{"type":"string","description":"The message sent to the client in the confirmation email (after the client verifies his/her email address)"},"widget_message":{"type":"string","description":"The message displayed on the widget after the client books an appointments"},"password":{"type":"string"},"ord":{"type":"integer","description":"The order number of the service","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"The time when the service was created"},"active_from":{"type":"string","format":"date","nullable":true,"description":"The date when the service starts to show up on the widget. If this field is null, then there will be no limit on the start date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_until":{"type":"string","format":"date","nullable":true,"description":"The date when the service stops being displayed on the widget. If this field is null, then there will be no limit on the end date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_interval_status":{"type":"boolean","default":true},"status":{"type":"boolean","description":"If 0 the service will not appear on the widget.","default":true},"active_rules":{"type":"integer","default":1},"photo":{"type":"string"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request PUT \'https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'PUT\',\\n \'url\': \'https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"PUT\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Put.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.PUT);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"delete":{"tags":["Service"],"summary":"Delete a Service","description":"Delete an existing service.","operationId":"deleteService","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Service id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","nullable":true}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request DELETE \'https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'m
1ethod\': \'DELETE\',\\n \'url\': \'https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"DELETE\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Delete.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/service/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.DELETE);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/service/uploadPhoto":{"post":{"tags":["Service"],"summary":"Upload a Service Photo","description":"Add or update the image of a specific service.","operationId":"createServicePhoto","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"service","in":"query","description":"Service id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"photo":{"type":"string","format":"binary"}}},"encoding":{"photo":{"contentType":"image/png, image/jpeg"}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"upload_id":{"type":"integer","format":"int64","example":32412},"file_name":{"type":"string","example":"avatar.png"},"file_location":{"type":"string","example":"/admin/images/clients/"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/service/uploadPhoto?session_token=SESSION_TOKEN&service=SERVICE\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/service/uploadPhoto?session_token=SESSION_TOKEN&service=SERVICE\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/service/uploadPhoto?session_token=SESSION_TOKEN&service=SERVICE\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/service/uploadPhoto?session_token=SESSION_TOKEN&service=SERVICE\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/service/uploadPhoto?session_token=SESSION_TOKEN&service=SERVICE\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/service/removePhoto":{"post":{"tags":["Service"],"summary":"Delete a Service Photo","description":"Delete the image of a specific service.","operationId":"deleteServicePhoto","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"service","in":"query","description":"Service id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["file_name"],"properties":{"file_name":{"type":"string"},"service":{"type":"integer","description":"Service Id","example":2342}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","example":null}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/service/removePhoto?session_token=SESSION_TOKEN&service=SERVICE\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/service/removePhoto?session_token=SESSION_TOKEN&service=SERVICE\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/service/removePhoto?session_token=SESSION_TOKEN&service=SERVICE\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/service/removePhoto?session_token=SESSION_TOKEN&service=SERVICE\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/service/removePhoto?session_token=SESSION_TOKEN&service=SERVICE\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/service/updateOrder":{"post":{"tags":["Service"],"summary":"Update Services Sort Order","description":"Change the sort order of the services in the list.","operationId":"updateServiceOrder","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["id","ord"],"properties":{"id":{"type":"integer","example":27864,"description":"Service id"},"ord":{"type":"integer","example":3,"description":"The order number in the list"}}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","example":null}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/service/updateOrder?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/service/updateOrder?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/service/updateOrder?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/service/updateOrder?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/service/updateOrder?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/appointment":{"get":{"tags":["Appointment"],"summary":"List Appointments","description":"Get a list of all appointments (upcoming and past) and their attributes.\\nWe advise using filters to fetch appointments for specific date ranges or different attributes.\\nBy default, getting the appointments list will include a 48 hour offset to allow for timezone conversions.\\n","operationId":"listAppointments","security":[{"session_token":[]}],"parameters":[{"name":"id","in":"query","description":"The appointment id","schema":{"type":"integer"}},{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"employee_id","in":"query","schema":{"type":"integer"}},{"name":"location_id","in":"query","schema":{"type":"integer"}},{"name":"service_id","in":"query","schema":{"type":"integer"}},{"name":"client_id","in":"query","schema":{"type":"integer"}},{"name":"timezone_id","in":"query","description":"Returns appointments date fields with specified time offset","schema":{"type":"integer","example":553}},{"name":"ews_id","in":"query","schema":{"deprecated":true,"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"only_exact_dates","in":"query","description":"When `only_exact_dates` is set to `\'true\'` and is paired with `timezone_id`, `start_date`, and `end_date` the appointments listed will only be appointments that are within the date range for the given timezone. When `only_exact_dates` is set to `\'false\'` or excluded entirely, appointments will be listed including a 48 hour offset to allow for timezone conversions.","schema":{"type":"string","example":"true"}},{"name":"search_text","in":"query","schema":{"type":"string"}}
1,{"name":"client_name","in":"query","schema":{"type":"string"}},{"name":"client_email","in":"query","schema":{"type":"string"}},{"name":"custom_field_1","in":"query","schema":{"type":"string","deprecated":true}},{"name":"custom_field_2","in":"query","schema":{"type":"string","deprecated":true}},{"name":"custom_field_3","in":"query","schema":{"type":"string","deprecated":true}},{"name":"custom_field_4","in":"query","schema":{"type":"string","deprecated":true}},{"name":"custom_field_5","in":"query","schema":{"type":"string","deprecated":true}},{"name":"cf_ids","in":"query","description":"Comma separated list of custom field ids","schema":{"type":"string","example":"custom_field_1,custom_field_2"}},{"name":"cf_search","in":"query","description":"Text that should be searched in the custom fields","schema":{"type":"string","example":"Some text to search"}},{"name":"cf_search_precision","in":"query","description":"The type of precision to use when searching in custom fields.","schema":{"type":"string","enum":["exact","fuzzy"],"default":"exact"}},{"name":"cf_search_operand","in":"query","description":"The type of operand to use when multiple custom fields ids are used. When using \'and\' all custom fields must match, when using \'or\' at least one custom field must match.","schema":{"type":"string","enum":["and","or"],"default":"and"}},{"name":"start_date","in":"query","schema":{"type":"string"}},{"name":"end_date","in":"query","schema":{"type":"string"}},{"name":"paid","in":"query","schema":{"type":"integer","enum":[0,1]}},{"name":"start","in":"query","description":"List pager","schema":{"type":"integer","default":0}},{"name":"end","in":"query","description":"List pager / \'all\' - no limit","schema":{"oneOf":[{"type":"integer"},{"type":"string","enum":["all"]}],"default":100}},{"name":"updated_after","in":"query","description":"Lower date limit for which the appointment was updated","schema":{"type":"string","format":"date-time"}},{"name":"updated_before","in":"query","description":"Upper date limit for which the appointment was updated","schema":{"type":"string","format":"date-time"}},{"name":"created_after","in":"query","description":"Lower date limit for which the appointment was created","schema":{"type":"string","format":"date-time"}},{"name":"created_before","in":"query","description":"Upper date limit for which the appointment was created","schema":{"type":"string","format":"date-time"}},{"name":"num_results","in":"query","description":"If 1, the call returns only the number of appointments found","schema":{"type":"integer","default":0,"enum":[0,1]}},{"name":"sort_by","in":"query","schema":{"type":"string","default":"start_date","enum":["start_date","created"]}},{"name":"sort_order","in":"query","schema":{"type":"string","default":"asc","enum":["asc","desc"]}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"last_updated":{"type":"string","format":"date-time","example":"2024-03-15 16:00:50","description":"The date and time when the latest change was made to the appointment","readOnly":true},"created_at":{"type":"string","format":"date-time","example":"2024-03-15 16:00:50","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"x-additionalPropertiesName":"field index","description":"The `field index` is an integer string custom_fields object property name and represents the order of the booking form fields displayed in your [dashboard]((https://www.setster.com/admin/settings/customize/booking-form/). The field index count starts with the first field sown with a `key` value under it.\\n\\n**<u>NOTICE</u>**\\n**The field index count excludes the default uneditable fields Full Name and Email.**\\n\\n**Example:** The first field shown in your [dashboard](https://www.setster.com/admin/settings/customize/booking-form/) with a `key` under it would have the field index of `\\"1\\"`. The second field with a `key` under it would have a field index of `\\"2\\"` and so on.\\n\\nDeleting or modifying a custom field may impact the field indexes. When changes are made ensure all custom_fields field indexes are still correct.","type":"array","items":[{"oneOf":[{"type":"string","title":"value","description":"The input value either filled
1in by the client at the time of booking or set upon appointment update via the API.\\n\\n*The field value can be updated only with a reschedule action.*"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.\\n\\n*The field value can be updated only with a reschedule action.*","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}}]},{"type":"string","title":"label","description":"The displayed input label of the booking form field."},{"type":"string","title":"type","description":"*Note: Only used for hidden fields.*\\n\\nSet to `\\"h\\"` if the field is hidden."}]},"description":"The values of the booking form fields filled by the client.\\n\\nCustom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).","x-example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"custom_data":{"type":"object","additionalProperties":{"description":"Every form field on your booking form added in the Setster dashboard has an assigned customizable `key`. This `key` should match the property name you add to your custom_data object.\\n\\nSome address and phone field keys include a numeric value at the end like `address_1234` or `phone_1234`. Newer accounts\' address and phone field keys are `address` and `phone` by default.\\n\\nAlways confirm your fields\' key structure in your dashboard\'s booking form before adding custom data.","x-additionalPropertiesName":"key","anyOf":[{"type":"string","title":"Text","description":"A text input field. ","example":"Lorem Ipsum"},{"type":"string","title":"Multiline","description":"A multi-line input field. ","example":"Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."},{"type":"string","title":"Phone","description":"Some accounts\' phone field keys include a numeric value at the end like `phone_1234` while newer accounts\' phone field keys are `phone` by default.","example":"555-555-5555"},{"type":"string","title":"Email","description":"An email input field.","example":"[email protected]"},{"type":"string","title":"Hidden","description":"A hidden input field that allows you to add supplemental data behind the scenes.","example":"Lorem Ipsum"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}},{"type":"string","title":"Title","description":"A text input field. ","example":"Lorem Ipsum"},{"oneOf":[{"type":"string","title":"Dropdown (Single Select)","description":"A dropdown field configured for single selection. The value should be one of the options defined in the custom field\'s `options` property.","example":"Option A"},{"type":"array","title":"Dropdown (Multi-Select)","description":"A dropdown field configured for multi-selection. The value should be an array of selected options from the custom field\'s `options` property.","items":{"type":"string"},"example":["Option A","Option C"]}]}]},"description":"Replaces the deprecated `custom_fields` property.\\n\\nCustom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).\\n\\nExpects an object c
1ontaining key values pairs where the `key` matches one of your booking form field keys and the value is any custom data value."},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/appointment?session_token=SESSION_TOKEN&id=ID&employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&service_id=SERVICE_ID&client_id=CLIENT_ID&timezone_id=TIMEZONE_ID&status=STATUS&search_text=SEARCH_TEXT&client_name=CLIENT_NAME&client_email=CLIENT_EMAIL&custom_field_1=CUSTOM_FIELD_1&custom_field_2=CUSTOM_FIELD_2&custom_field_3=CUSTOM_FIELD_3&custom_field_4=CUSTOM_FIELD_4&custom_field_5=CUSTOM_FIELD_5&start_date=START_DATE&end_date=END_DATE&paid=PAID&start=START&end=END&updated_after=UPDATED_AFTER&updated_before=UPDATED_BEFORE&created_after=CREATED_AFTER&created_before=CREATED_BEFORE&num_results=NUM_RESULTS&sort_by=SORT_BY&sort_order=SORT_ORDER\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/appointment?session_token=SESSION_TOKEN&id=ID&employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&service_id=SERVICE_ID&client_id=CLIENT_ID&timezone_id=TIMEZONE_ID&status=STATUS&search_text=SEARCH_TEXT&client_name=CLIENT_NAME&client_email=CLIENT_EMAIL&custom_field_1=CUSTOM_FIELD_1&custom_field_2=CUSTOM_FIELD_2&custom_field_3=CUSTOM_FIELD_3&custom_field_4=CUSTOM_FIELD_4&custom_field_5=CUSTOM_FIELD_5&start_date=START_DATE&end_date=END_DATE&paid=PAID&start=START&end=END&updated_after=UPDATED_AFTER&updated_before=UPDATED_BEFORE&created_after=CREATED_AFTER&created_before=CREATED_BEFORE&num_results=NUM_RESULTS&sort_by=SORT_BY&sort_order=SORT_ORDER\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment?session_token=SESSION_TOKEN&id=ID&employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&service_id=SERVICE_ID&client_id=CLIENT_ID&timezone_id=TIMEZONE_ID&status=STATUS&search_text=SEARCH_TEXT&client_name=CLIENT_NAME&client_email=CLIENT_EMAIL&custom_field_1=CUSTOM_FIELD_1&custom_field_2=CUSTOM_FIELD_2&custom_field_3=CUSTOM_FIELD_3&custom_field_4=CUSTOM_FIELD_4&custom_field_5=CUSTOM_FIELD_5&start_date=START_DATE&end_date=END_DATE&paid=PAID&start=START&end=END&updated_after=UPDATED_AFTER&updated_before=UPDATED_BEFORE&created_after=CREATED_AFTER&created_before=CREATED_BEFORE&num_results=NUM_RESULTS&sort_by=SORT_BY&sort_order=SORT_ORDER\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment?session_token=SESSION_TOKEN&id=ID&employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&service_id=SERVICE_ID&client_id=CLIENT_ID&timezone_id=TIMEZONE_ID&status=STATUS&search_text=SEARCH_TEXT&client_name=CLIENT_NAME&client_email=CLIENT_EMAIL&custom_field_1=CUSTOM_FIELD_1&custom_field_2=CUSTOM_FIELD_2&custom_field_3=CUSTOM_FIELD_3&custom_field_4=CUSTOM_FIELD_4&custom_field_5=CUSTOM_FIELD_5&start_date=START_DATE&end_date=END_DATE&paid=PAID&start=START&end=END&updated_after=UPDATED_AFTER&updated_before=UPDATED_BEFORE&created_after=CREATED_AFTER&created_before=CREATED_BEFORE&num_results=NUM_RESULTS&sort_by=SORT_BY&sort_order=SORT_ORDER\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment?session_token=SESSION_TOKEN&id=ID&employee_id=EMPLOYEE_ID&location_id=LOCATION_ID&service_id=SERVICE_ID&client_id=CLIENT_ID&timezone_id=TIMEZONE_ID&status=STATUS&search_text=SEARCH_TEXT&client_name=CLIENT_NAME&client_email=CLIENT_EMAIL&custom_field_1=CUSTOM_FIELD_1&custom_field_2=CUSTOM_FIELD_2&custom_field_3=CUSTOM_FIELD_3&custom_field_4=CUSTOM_FIELD_4&custom_field_5=CUSTOM_FIELD_5&start_date=START_DATE&end_date=END_DATE&paid=PAID&start=START&end=END&updated_after=UPDATED_AFTER&updated_before=UPDATED_BEFORE&created_after=CREATED_AFTER&created_before=CREATED_BEFORE&num_results=NUM_RESULTS&sort_by=SORT_BY&sort_order=SORT_ORDER\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"post":{"tags":["Appointment","Create Appointment"],"summary":"Create an Appointment","description":"Create a new appointment.\\n\\n## Timeslot Availability Errors\\n\\nWhen creating an appointment, the API validates that the requested timeslot is available. If the timeslot is not available, the API returns `statusCode: 9` (SLOT_NOT_AVAILABLE) with one of the following `statusDescription` messages:\\n\\n| Message | Description |\\n|---------|-------------|\\n| `Timeslot is not available` | General unavailability (e.g., outside business hours, employee not working, slot already booked) |\\n| `Timeslot is not available - time in the past` | The requested appointment time has already passed |\\n| `Timeslot is not available - prior notice X hours` | The appointment doesn\'t meet the minimum lead time requirement, where X is the configured prior notice in hours |\\n\\n### Validation Order\\n\\nThe availability checks occur in the following order:\\n1. **Time in the past check** - Verifies the requested time hasn\'t already passed\\n2. **Prior notice check*
1* - Verifies the appointment meets the minimum lead time requirement configured in the service/widget settings\\n3. **Other availability checks** - Verifies business hours, employee availability, and slot conflicts","operationId":"createAppointment","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"in":"query","name":"validate_custom_fields","description":"When set to `1`, enables strict validation of custom fields in the `custom_data` object. This enforces:\\n\\n- **Required field validation**: Returns an error if any custom field marked as required is missing or empty\\n- **Length validation**: Returns an error if any field value exceeds the maximum length configured for that field\\n- **Dropdown options validation**: Validates that values for dropdown fields (type 7) match the allowed options\\n\\nWhen validation fails, the API returns an error with details about which fields failed validation.","required":false,"schema":{"type":"integer","enum":[0,1],"default":0,"example":1}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","deprecated":true,"default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"x-additionalPropertiesName":"field index","description":"The `field index` is an integer string custom_fields object property name and represents the order of the booking form fields displayed in your [dashboard]((https://www.setster.com/admin/settings/customize/booking-form/). The field index count starts with the first field sown with a `key` value under it.\\n\\n**<u>NOTICE</u>**\\n**The field index count excludes the default uneditable fields Full Name and Email.**\\n\\n**Example:** The first field shown in your [dashboard](https://www.setster.com/admin/settings/customize/booking-form/) with a `key` under it would have the field index of `\\"1\\"`. The second field with a `key` under it would have a field index of `\\"2\\"` and so on.\\n\\nDeleting or modifying a custom field may impact the field indexes. When changes are made ensure all custom_fields field indexes are still correct.","type":"array","items":[{"oneOf":[{"type":"string","title":"value","description":"The input value either filled
1in by the client at the time of booking or set upon appointment update via the API.\\n\\n*The field value can be updated only with a reschedule action.*"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.\\n\\n*The field value can be updated only with a reschedule action.*","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}}]},{"type":"string","title":"label","description":"The displayed input label of the booking form field."},{"type":"string","title":"type","description":"*Note: Only used for hidden fields.*\\n\\nSet to `\\"h\\"` if the field is hidden."}]},"description":"The values of the booking form fields filled by the client.\\n\\nCustom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).","x-example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"custom_data":{"x-example":{"phone":"555-555-5555","address":{"street":"1234 1st Street","suite":"567","city":"San Francisco","state":"California","zip":"12345"},"custom_field":"Custom field value","dropdown_single":"Option A","dropdown_multi":["Option A","Option C"]},"type":"object","additionalProperties":{"description":"Every form field on your booking form added in the Setster dashboard has an assigned customizable `key`. This `key` should match the property name you add to your custom_data object.\\n\\nSome address and phone field keys include a numeric value at the end like `address_1234` or `phone_1234`. Newer accounts\' address and phone field keys are `address` and `phone` by default.\\n\\nAlways confirm your fields\' key structure in your dashboard\'s booking form before adding custom data.","x-additionalPropertiesName":"key","anyOf":[{"type":"string","title":"Text","description":"A text input field. ","example":"Lorem Ipsum"},{"type":"string","title":"Multiline","description":"A multi-line input field. ","example":"Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."},{"type":"string","title":"Phone","description":"Some accounts\' phone field keys include a numeric value at the end like `phone_1234` while newer accounts\' phone field keys are `phone` by default.","example":"555-555-5555"},{"type":"string","title":"Email","description":"An email input field.","example":"[email protected]"},{"type":"string","title":"Hidden","description":"A hidden input field that allows you to add supplemental data behind the scenes.","example":"Lorem Ipsum"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}},{"type":"string","title":"Title","description":"A text input field. ","example":"Lorem Ipsum"},{"oneOf":[{"type":"string","title":"Dropdown (Single Select)","description":"A dropdown field configured for single selection. The value should be one of the options defined in the custom field\'s `options` property.","example":"Option A"},{"type":"array","title":"Dropdown (Multi-Select)","description":"A dropdown field configured for multi-selection. The value should be an array of selected options from the custom field\'s `options` property.","items":{"type":"string"},"example":["Option A","Option C"]}]}]},"description":"Replaces the deprecated `custom_fields` property.\\n\\nCustom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).\\n\\nExpects an object c
1ontaining key values pairs where the `key` matches one of your booking form field keys and the value is any custom data value."},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}}}}},"responses":{"200":{"description":"The appointment has been created","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"x-additionalPropertiesName":"field index","description":"The `field index` is an integer string custom_fields object property name and represents the order of the booking form fields displayed in your [dashboard]((https://www.setster.com/admin/settings/customize/booking-form/). The field index count starts with the first field sown with a `key` value under it.\\n\\n**<u>NOTICE</u>**\\n**The field index count excludes the default uneditable fields Full Name and Email.**\\n\\n**Example:** The first field shown in your [dashboard](https://www.setster.com/admin/settings/customize/booking-form/) with a `key` under it would have the field index of `\\"1\\"`. The second field with a `key` under it would have a field index of `\\"2\\"` and so on.\\n\\nDeleting or modifying a custom field may impact the field indexes. When changes are made ensure all custom_fields field indexes are still correct.","type":"array","items":[{"oneOf":[{"type":"string","title":"value","description":"The input value either filled
1in by the client at the time of booking or set upon appointment update via the API.\\n\\n*The field value can be updated only with a reschedule action.*"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.\\n\\n*The field value can be updated only with a reschedule action.*","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}}]},{"type":"string","title":"label","description":"The displayed input label of the booking form field."},{"type":"string","title":"type","description":"*Note: Only used for hidden fields.*\\n\\nSet to `\\"h\\"` if the field is hidden."}]},"description":"The values of the booking form fields filled by the client.\\n\\nCustom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).","x-example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"custom_data":{"type":"object","additionalProperties":{"description":"Every form field on your booking form added in the Setster dashboard has an assigned customizable `key`. This `key` should match the property name you add to your custom_data object.\\n\\nSome address and phone field keys include a numeric value at the end like `address_1234` or `phone_1234`. Newer accounts\' address and phone field keys are `address` and `phone` by default.\\n\\nAlways confirm your fields\' key structure in your dashboard\'s booking form before adding custom data.","x-additionalPropertiesName":"key","anyOf":[{"type":"string","title":"Text","description":"A text input field. ","example":"Lorem Ipsum"},{"type":"string","title":"Multiline","description":"A multi-line input field. ","example":"Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."},{"type":"string","title":"Phone","description":"Some accounts\' phone field keys include a numeric value at the end like `phone_1234` while newer accounts\' phone field keys are `phone` by default.","example":"555-555-5555"},{"type":"string","title":"Email","description":"An email input field.","example":"[email protected]"},{"type":"string","title":"Hidden","description":"A hidden input field that allows you to add supplemental data behind the scenes.","example":"Lorem Ipsum"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}},{"type":"string","title":"Title","description":"A text input field. ","example":"Lorem Ipsum"},{"oneOf":[{"type":"string","title":"Dropdown (Single Select)","description":"A dropdown field configured for single selection. The value should be one of the options defined in the custom field\'s `options` property.","example":"Option A"},{"type":"array","title":"Dropdown (Multi-Select)","description":"A dropdown field configured for multi-selection. The value should be an array of selected options from the custom field\'s `options` property.","items":{"type":"string"},"example":["Option A","Option C"]}]}]},"description":"Replaces the deprecated `custom_fields` property.\\n\\nCustom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).\\n\\nExpects an object c
1ontaining key values pairs where the `key` matches one of your booking form field keys and the value is any custom data value."},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}}}}]}}}},"403":{"description":"The appointment can not be created","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","nullable":true}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/appointment?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/appointment?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/appointment/{id}":{"get":{"tags":["Appointment"],"summary":"Get an Appointment","operationId":"getAppointment","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Appointment id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"provider_email":{"type":"string","format":"email","description":"The email of the provider/employee that the appointment was made for","example":"[email protected]"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"last_updated":{"type":"string","format":"date-time","description":"The date and time when the latest change was made to the appointment","example":"2024-03-15 16:00:50","readOnly":true},"created_at":{"type":"string","example":"2024-03-15 16:00:50","format":"date-time","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"x-additionalPropertiesName":"field index","description":"The `field index` is an integer string custom_fields object property name and represents the order of the booking form fields displayed in your [dashboard]((https://www.setster.com/admin/settings/customize/booking-form/). The field index count starts with the first field sown with a `key` value under it.\\n\\n**<u>NOTICE</u>**\\n**The field index count excludes the default uneditable fields Full Name and Email.**\\n\\n**Example:** The first field shown in your [dashboard](https://www.setster.com/admin/settings/customize/booking-form/) with a `key` under it would have the field index of `\\"1\\"`. The second field with a `key` under it would have a field index of `\\"2\\"` and so on.\\n\\nDeleting or modifying a custom field may impact the field indexes. When changes are made ensure all custom_fields field indexes are still correct.","type":"array","items":[{"oneOf":[{"type":"string","title":"value","description":"The input value either filled
1in by the client at the time of booking or set upon appointment update via the API.\\n\\n*The field value can be updated only with a reschedule action.*"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.\\n\\n*The field value can be updated only with a reschedule action.*","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}}]},{"type":"string","title":"label","description":"The displayed input label of the booking form field."},{"type":"string","title":"type","description":"*Note: Only used for hidden fields.*\\n\\nSet to `\\"h\\"` if the field is hidden."}]},"description":"The values of the booking form fields filled by the client.\\n\\nCustom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).","x-example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"custom_data":{"type":"object","additionalProperties":{"description":"Every form field on your booking form added in the Setster dashboard has an assigned customizable `key`. This `key` should match the property name you add to your custom_data object.\\n\\nSome address and phone field keys include a numeric value at the end like `address_1234` or `phone_1234`. Newer accounts\' address and phone field keys are `address` and `phone` by default.\\n\\nAlways confirm your fields\' key structure in your dashboard\'s booking form before adding custom data.","x-additionalPropertiesName":"key","anyOf":[{"type":"string","title":"Text","description":"A text input field. ","example":"Lorem Ipsum"},{"type":"string","title":"Multiline","description":"A multi-line input field. ","example":"Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."},{"type":"string","title":"Phone","description":"Some accounts\' phone field keys include a numeric value at the end like `phone_1234` while newer accounts\' phone field keys are `phone` by default.","example":"555-555-5555"},{"type":"string","title":"Email","description":"An email input field.","example":"[email protected]"},{"type":"string","title":"Hidden","description":"A hidden input field that allows you to add supplemental data behind the scenes.","example":"Lorem Ipsum"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}},{"type":"string","title":"Title","description":"A text input field. ","example":"Lorem Ipsum"},{"oneOf":[{"type":"string","title":"Dropdown (Single Select)","description":"A dropdown field configured for single selection. The value should be one of the options defined in the custom field\'s `options` property.","example":"Option A"},{"type":"array","title":"Dropdown (Multi-Select)","description":"A dropdown field configured for multi-selection. The value should be an array of selected options from the custom field\'s `options` property.","items":{"type":"string"},"example":["Option A","Option C"]}]}]},"description":"Replaces the deprecated `custom_fields` property.\\n\\nCustom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).\\n\\nExpects an object c
1ontaining key values pairs where the `key` matches one of your booking form field keys and the value is any custom data value."},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Get the details of a specific appointment."},"put":{"tags":["Appointment","Cancel","Reschedule"],"summary":"Modify an Appointment","description":"Modify the attributes for an existing appointment. Most commonly used to reschedule the appointment to a different date and time or to modify the appointment status.\\n\\n<div class=\'ui grey icon message\'>\\n<div class=\'content\'>\\n <div class=\\"header\\">\\n <i class=\'small paper plane outline\\n icon\'>\\n </i>\\n Triggers Client Notification\\n</div>\\n <p>By default triggers an email and SMS if configured. <a href=\\"https://support.setster.com/hc/en-us/sections/360004456154-Email-and-SMS-Notifications\\" target=\\"_blank\\" style=\\"color: #636d82 !important\\">Learn More</a></p></div></div>\\n\\n## Timeslot Availability Errors (Rescheduling)\\n\\nWhen rescheduling an appointment to a new time, the API validates that the requested timeslot is available. If the timeslot is not available, the API returns `statusCode: 9` (SLOT_NOT_AVAILABLE) with one of the following `statusDescription` messages:\\n\\n| Message | Description |\\n|---------|-------------|\\n| `Timeslot is not available` | General unavailability (e.g., outside business hours, employee not working, slot already booked) |\\n| `Timeslot is not available - time in the past` | The requested appointment time has already passed |\\n| `Timeslot is not available - prior notice X hours` | The appointment doesn\'t meet the minimum lead time requirement, where X is the configured prior notice in hours |\\n\\n### Validation Order\\n\\nThe availability checks occur in the following order:\\n1. **Time in the past check** - Verifies the requested time hasn\'t already passed\\n2. **Prior notice check** - Verifies the appointment meets the minimum lead time requirement configured in the service/widget settings\\n3. **Other availability checks** - Verifies business hours, employee availability, and slot conflicts\\n","operationId":"updateAppointment","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"in":"query","name":"validate_custom_fields","description":"When set to `1`, enables strict validation of custom fields in the `custom_data` object. This enforces:\\n\\n- **Required field validation**: Returns an error if any custom field marked as required is missing or empty\\n- **Length validation**: Returns an error if any field value exceeds the maximum length configured for that field\\n- **Dropdown options validation**: Validates that values for dropdown fields (type 7) match the allowed options\\n\\nWhen validation fails, the API returns an error with details about which fields failed validation.","required":false,"schema":{"type":"integer","enum":[0,1],"default":0,"example":1}}
1,{"name":"id","in":"path","required":true,"description":"Appointment id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"last_updated":{"type":"string","format":"date-time","example":"2024-03-15 16:00:50","description":"The date and time when the latest change was made to the appointment","readOnly":true},"created_at":{"type":"string","example":"2024-03-15 16:00:50","format":"date-time","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","deprecated":true,"default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"x-additionalPropertiesName":"field index","description":"The `field index` is an integer string custom_fields object property name and represents the order of the booking form fields displayed in your [dashboard]((https://www.setster.com/admin/settings/customize/booking-form/). The field index count starts with the first field sown with a `key` value under it.\\n\\n**<u>NOTICE</u>**\\n**The field index count excludes the default uneditable fields Full Name and Email.**\\n\\n**Example:** The first field shown in your [dashboard](https://www.setster.com/admin/settings/customize/booking-form/) with a `key` under it would have the field index of `\\"1\\"`. The second field with a `key` under it would have a field index of `\\"2\\"` and so on.\\n\\nDeleting or modifying a custom field may impact the field indexes. When changes are made ensure all custom_fields field indexes are still correct.","type":"array","items":[{"oneOf":[{"type":"string","title":"value","description":"The input value either filled
1in by the client at the time of booking or set upon appointment update via the API.\\n\\n*The field value can be updated only with a reschedule action.*"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.\\n\\n*The field value can be updated only with a reschedule action.*","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}}]},{"type":"string","title":"label","description":"The displayed input label of the booking form field."},{"type":"string","title":"type","description":"*Note: Only used for hidden fields.*\\n\\nSet to `\\"h\\"` if the field is hidden."}]},"description":"The values of the booking form fields filled by the client.\\n\\nCustom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).","x-example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"custom_data":{"type":"object","additionalProperties":{"description":"Every form field on your booking form added in the Setster dashboard has an assigned customizable `key`. This `key` should match the property name you add to your custom_data object.\\n\\nSome address and phone field keys include a numeric value at the end like `address_1234` or `phone_1234`. Newer accounts\' address and phone field keys are `address` and `phone` by default.\\n\\nAlways confirm your fields\' key structure in your dashboard\'s booking form before adding custom data.","x-additionalPropertiesName":"key","anyOf":[{"type":"string","title":"Text","description":"A text input field. ","example":"Lorem Ipsum"},{"type":"string","title":"Multiline","description":"A multi-line input field. ","example":"Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."},{"type":"string","title":"Phone","description":"Some accounts\' phone field keys include a numeric value at the end like `phone_1234` while newer accounts\' phone field keys are `phone` by default.","example":"555-555-5555"},{"type":"string","title":"Email","description":"An email input field.","example":"[email protected]"},{"type":"string","title":"Hidden","description":"A hidden input field that allows you to add supplemental data behind the scenes.","example":"Lorem Ipsum"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}},{"type":"string","title":"Title","description":"A text input field. ","example":"Lorem Ipsum"},{"oneOf":[{"type":"string","title":"Dropdown (Single Select)","description":"A dropdown field configured for single selection. The value should be one of the options defined in the custom field\'s `options` property.","example":"Option A"},{"type":"array","title":"Dropdown (Multi-Select)","description":"A dropdown field configured for multi-selection. The value should be an array of selected options from the custom field\'s `options` property.","items":{"type":"string"},"example":["Option A","Option C"]}]}]},"description":"Replaces the deprecated `custom_fields` property.\\n\\nCustom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).\\n\\nExpects an object c
1ontaining key values pairs where the `key` matches one of your booking form field keys and the value is any custom data value."},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"old_id":{"type":"integer","format":"int64","readOnly":true,"description":"Previous Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"last_updated":{"type":"string","example":"2024-03-15 16:00:50","format":"date-time","description":"The date and time when the latest change was made to the appointment","readOnly":true},"created_at":{"type":"string","example":"2024-03-15 16:00:50","format":"date-time","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"x-additionalPropertiesName":"field index","description":"The `field index` is an integer string custom_fields object property name and represents the order of the booking form fields displayed in your [dashboard]((https://www.setster.com/admin/settings/customize/booking-form/). The field index count starts with the first field sown with a `key` value under it.\\n\\n**<u>NOTICE</u>**\\n**The field index count excludes the default uneditable fields Full Name and Email.**\\n\\n**Example:** The first field shown in your [dashboard](https://www.setster.com/admin/settings/customize/booking-form/) with a `key` under it would have the field index of `\\"1\\"`. The second field with a `key` under it would have a field index of `\\"2\\"` and so on.\\n\\nDeleting or modifying a custom field may impact the field indexes. When changes are made ensure all custom_fields field indexes are still correct.","type":"array","items":[{"oneOf":[{"type":"string","title":"value","description":"The input value either filled
1in by the client at the time of booking or set upon appointment update via the API.\\n\\n*The field value can be updated only with a reschedule action.*"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.\\n\\n*The field value can be updated only with a reschedule action.*","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}}]},{"type":"string","title":"label","description":"The displayed input label of the booking form field."},{"type":"string","title":"type","description":"*Note: Only used for hidden fields.*\\n\\nSet to `\\"h\\"` if the field is hidden."}]},"description":"The values of the booking form fields filled by the client.\\n\\nCustom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).","x-example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"custom_data":{"type":"object","additionalProperties":{"description":"Every form field on your booking form added in the Setster dashboard has an assigned customizable `key`. This `key` should match the property name you add to your custom_data object.\\n\\nSome address and phone field keys include a numeric value at the end like `address_1234` or `phone_1234`. Newer accounts\' address and phone field keys are `address` and `phone` by default.\\n\\nAlways confirm your fields\' key structure in your dashboard\'s booking form before adding custom data.","x-additionalPropertiesName":"key","anyOf":[{"type":"string","title":"Text","description":"A text input field. ","example":"Lorem Ipsum"},{"type":"string","title":"Multiline","description":"A multi-line input field. ","example":"Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."},{"type":"string","title":"Phone","description":"Some accounts\' phone field keys include a numeric value at the end like `phone_1234` while newer accounts\' phone field keys are `phone` by default.","example":"555-555-5555"},{"type":"string","title":"Email","description":"An email input field.","example":"[email protected]"},{"type":"string","title":"Hidden","description":"A hidden input field that allows you to add supplemental data behind the scenes.","example":"Lorem Ipsum"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}},{"type":"string","title":"Title","description":"A text input field. ","example":"Lorem Ipsum"},{"oneOf":[{"type":"string","title":"Dropdown (Single Select)","description":"A dropdown field configured for single selection. The value should be one of the options defined in the custom field\'s `options` property.","example":"Option A"},{"type":"array","title":"Dropdown (Multi-Select)","description":"A dropdown field configured for multi-selection. The value should be an array of selected options from the custom field\'s `options` property.","items":{"type":"string"},"example":["Option A","Option C"]}]}]},"description":"Replaces the deprecated `custom_fields` property.\\n\\nCustom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).\\n\\nExpects an object c
1ontaining key values pairs where the `key` matches one of your booking form field keys and the value is any custom data value."},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request PUT \'https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'PUT\',\\n \'url\': \'https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"PUT\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Put.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.PUT);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"delete":{"tags":["Appointment"],"summary":"Delete an Appointment","description":"Delete an existing appointment. \\nThis action is permanent and non-reversible. Consider using the cancel or decline endpoint instead of deleting an appointment.","operationId":"deleteAppointment","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Appointment id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","nullable":true}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request DELETE \'https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'DELETE\',\\n \'url\': \'https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"DELETE\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Delete.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.DELETE);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/appointment/listView":{"get":{"tags":["Appointment"],"summary":"List Appointments (Paginated)","operationId":"listAppointmentsPaginated","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"location_id","in":"query","description":"Location ID","schema":{"type":"integer","default":0}}
1,{"name":"employee_id","in":"query","description":"Employee ID","schema":{"type":"integer","default":0}},{"name":"skip","in":"query","description":"The number of results to skip","schema":{"type":"integer","default":0}},{"name":"count","in":"query","description":"The number of results to return","schema":{"type":"integer","default":10}},{"name":"q","in":"query","description":"Search query","schema":{"type":"string","default":""}},{"name":"start_date","in":"query","description":"Start date","schema":{"type":"string","default":""}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"last_updated":{"type":"string","format":"date-time","example":"2024-03-15 16:00:50","description":"The date and time when the latest change was made to the appointment","readOnly":true},"created_at":{"type":"string","format":"date-time","example":"2024-03-15 16:00:50","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"x-additionalPropertiesName":"field index","description":"The `field index` is an integer string custom_fields object property name and represents the order of the booking form fields displayed in your [dashboard]((https://www.setster.com/admin/settings/customize/booking-form/). The field index count starts with the first field sown with a `key` value under it.\\n\\n**<u>NOTICE</u>**\\n**The field index count excludes the default uneditable fields Full Name and Email.**\\n\\n**Example:** The first field shown in your [dashboard](https://www.setster.com/admin/settings/customize/booking-form/) with a `key` under it would have the field index of `\\"1\\"`. The second field with a `key` under it would have a field index of `\\"2\\"` and so on.\\n\\nDeleting or modifying a custom field may impact the field indexes. When changes are made ensure all custom_fields field indexes are still correct.","type":"array","items":[{"oneOf":[{"type":"string","title":"value","description":"The input value either filled
1in by the client at the time of booking or set upon appointment update via the API.\\n\\n*The field value can be updated only with a reschedule action.*"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.\\n\\n*The field value can be updated only with a reschedule action.*","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}}]},{"type":"string","title":"label","description":"The displayed input label of the booking form field."},{"type":"string","title":"type","description":"*Note: Only used for hidden fields.*\\n\\nSet to `\\"h\\"` if the field is hidden."}]},"description":"The values of the booking form fields filled by the client.\\n\\nCustom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).","x-example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"custom_data":{"type":"object","additionalProperties":{"description":"Every form field on your booking form added in the Setster dashboard has an assigned customizable `key`. This `key` should match the property name you add to your custom_data object.\\n\\nSome address and phone field keys include a numeric value at the end like `address_1234` or `phone_1234`. Newer accounts\' address and phone field keys are `address` and `phone` by default.\\n\\nAlways confirm your fields\' key structure in your dashboard\'s booking form before adding custom data.","x-additionalPropertiesName":"key","anyOf":[{"type":"string","title":"Text","description":"A text input field. ","example":"Lorem Ipsum"},{"type":"string","title":"Multiline","description":"A multi-line input field. ","example":"Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."},{"type":"string","title":"Phone","description":"Some accounts\' phone field keys include a numeric value at the end like `phone_1234` while newer accounts\' phone field keys are `phone` by default.","example":"555-555-5555"},{"type":"string","title":"Email","description":"An email input field.","example":"[email protected]"},{"type":"string","title":"Hidden","description":"A hidden input field that allows you to add supplemental data behind the scenes.","example":"Lorem Ipsum"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}},{"type":"string","title":"Title","description":"A text input field. ","example":"Lorem Ipsum"},{"oneOf":[{"type":"string","title":"Dropdown (Single Select)","description":"A dropdown field configured for single selection. The value should be one of the options defined in the custom field\'s `options` property.","example":"Option A"},{"type":"array","title":"Dropdown (Multi-Select)","description":"A dropdown field configured for multi-selection. The value should be an array of selected options from the custom field\'s `options` property.","items":{"type":"string"},"example":["Option A","Option C"]}]}]},"description":"Replaces the deprecated `custom_fields` property.\\n\\nCustom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).\\n\\nExpects an object c
1ontaining key values pairs where the `key` matches one of your booking form field keys and the value is any custom data value."},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}}},"last_rows":{"type":"integer","example":100}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/appointment/listView?session_token=SESSION_TOKEN&location_id=LOCATION_ID&employee_id=EMPLOYEE_ID&skip=SKIP&count=COUNT&q=Q&start_date=START_DATE\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/appointment/listView?session_token=SESSION_TOKEN&location_id=LOCATION_ID&employee_id=EMPLOYEE_ID&skip=SKIP&count=COUNT&q=Q&start_date=START_DATE\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment/listView?session_token=SESSION_TOKEN&location_id=LOCATION_ID&employee_id=EMPLOYEE_ID&skip=SKIP&count=COUNT&q=Q&start_date=START_DATE\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment/listView?session_token=SESSION_TOKEN&location_id=LOCATION_ID&employee_id=EMPLOYEE_ID&skip=SKIP&count=COUNT&q=Q&start_date=START_DATE\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment/listView?session_token=SESSION_TOKEN&location_id=LOCATION_ID&employee_id=EMPLOYEE_ID&skip=SKIP&count=COUNT&q=Q&start_date=START_DATE\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Get a list of appointments and their attributes in a paginated format. Requires multiple calls."}},"/appointment/verify":{"post":{"tags":["Appointment"],"summary":"Verify appointment","description":"Using this endpoint you can verify an appointment. This will initiate the verification system of an appointment. The client for that appointment will receive a \u201cVerification required\u201d email which will guide him in the verification process. ","operationId":"createAppointmentVerification","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"appointment_id":{"type":"integer","example":123}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"last_updated":{"type":"string","format":"date-time","example":"2024-03-15 16:00:50","description":"The date and time when the latest change was made to the appointment","readOnly":true},"created_at":{"type":"string","example":"2024-03-15 16:00:50","format":"date-time","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"x-additionalPropertiesName":"field index","description":"The `field index` is an integer string custom_fields object property name and represents the order of the booking form fields displayed in your [dashboard]((https://www.setster.com/admin/settings/customize/booking-form/). The field index count starts with the first field sown with a `key` value under it.\\n\\n**<u>NOTICE</u>**\\n**The field index count excludes the default uneditable fields Full Name and Email.**\\n\\n**Example:** The first field shown in your [dashboard](https://www.setster.com/admin/settings/customize/booking-form/) with a `key` under it would have the field index of `\\"1\\"`. The second field with a `key` under it would have a field index of `\\"2\\"` and so on.\\n\\nDeleting or modifying a custom field may impact the field indexes. When changes are made ensure all custom_fields field indexes are still correct.","type":"array","items":[{"oneOf":[{"type":"string","title":"value","description":"The input value either filled
1in by the client at the time of booking or set upon appointment update via the API.\\n\\n*The field value can be updated only with a reschedule action.*"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.\\n\\n*The field value can be updated only with a reschedule action.*","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}}]},{"type":"string","title":"label","description":"The displayed input label of the booking form field."},{"type":"string","title":"type","description":"*Note: Only used for hidden fields.*\\n\\nSet to `\\"h\\"` if the field is hidden."}]},"description":"The values of the booking form fields filled by the client.\\n\\nCustom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).","x-example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"custom_data":{"type":"object","additionalProperties":{"description":"Every form field on your booking form added in the Setster dashboard has an assigned customizable `key`. This `key` should match the property name you add to your custom_data object.\\n\\nSome address and phone field keys include a numeric value at the end like `address_1234` or `phone_1234`. Newer accounts\' address and phone field keys are `address` and `phone` by default.\\n\\nAlways confirm your fields\' key structure in your dashboard\'s booking form before adding custom data.","x-additionalPropertiesName":"key","anyOf":[{"type":"string","title":"Text","description":"A text input field. ","example":"Lorem Ipsum"},{"type":"string","title":"Multiline","description":"A multi-line input field. ","example":"Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."},{"type":"string","title":"Phone","description":"Some accounts\' phone field keys include a numeric value at the end like `phone_1234` while newer accounts\' phone field keys are `phone` by default.","example":"555-555-5555"},{"type":"string","title":"Email","description":"An email input field.","example":"[email protected]"},{"type":"string","title":"Hidden","description":"A hidden input field that allows you to add supplemental data behind the scenes.","example":"Lorem Ipsum"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}},{"type":"string","title":"Title","description":"A text input field. ","example":"Lorem Ipsum"},{"oneOf":[{"type":"string","title":"Dropdown (Single Select)","description":"A dropdown field configured for single selection. The value should be one of the options defined in the custom field\'s `options` property.","example":"Option A"},{"type":"array","title":"Dropdown (Multi-Select)","description":"A dropdown field configured for multi-selection. The value should be an array of selected options from the custom field\'s `options` property.","items":{"type":"string"},"example":["Option A","Option C"]}]}]},"description":"Replaces the deprecated `custom_fields` property.\\n\\nCustom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).\\n\\nExpects an object c
1ontaining key values pairs where the `key` matches one of your booking form field keys and the value is any custom data value."},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/appointment/verify?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/appointment/verify?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment/verify?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment/verify?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment/verify?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/appointment/confirm":{"post":{"tags":["Appointment"],"summary":"Confirm an Appointment","description":"Confirm an existing appointment. View appointment status for definitions of available statuses.\\n\\n<div class=\'ui grey icon message\'>\\n<div class=\'content\'>\\n <div class=\\"header\\">\\n <i class=\'small paper plane outline\\n icon\'>\\n </i>\\n Triggers Client Notification\\n</div>\\n <p>By default triggers an email and SMS if configured. <a href=\\"https://support.setster.com/hc/en-us/sections/360004456154-Email-and-SMS-Notifications\\" target=\\"_blank\\" style=\\"color: #636d82 !important\\">Learn More</a></p></div></div>\\n","operationId":"createAppointmentConfirmation","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"appointment_id":{"type":"integer","example":123}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"last_updated":{"type":"string","example":"2024-03-15 16:00:50","format":"date-time","description":"The date and time when the latest change was made to the appointment","readOnly":true},"created_at":{"type":"string","example":"2024-03-15 16:00:50","format":"date-time","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"x-additionalPropertiesName":"field index","description":"The `field index` is an integer string custom_fields object property name and represents the order of the booking form fields displayed in your [dashboard]((https://www.setster.com/admin/settings/customize/booking-form/). The field index count starts with the first field sown with a `key` value under it.\\n\\n**<u>NOTICE</u>**\\n**The field index count excludes the default uneditable fields Full Name and Email.**\\n\\n**Example:** The first field shown in your [dashboard](https://www.setster.com/admin/settings/customize/booking-form/) with a `key` under it would have the field index of `\\"1\\"`. The second field with a `key` under it would have a field index of `\\"2\\"` and so on.\\n\\nDeleting or modifying a custom field may impact the field indexes. When changes are made ensure all custom_fields field indexes are still correct.","type":"array","items":[{"oneOf":[{"type":"string","title":"value","description":"The input value either filled
1in by the client at the time of booking or set upon appointment update via the API.\\n\\n*The field value can be updated only with a reschedule action.*"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.\\n\\n*The field value can be updated only with a reschedule action.*","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}}]},{"type":"string","title":"label","description":"The displayed input label of the booking form field."},{"type":"string","title":"type","description":"*Note: Only used for hidden fields.*\\n\\nSet to `\\"h\\"` if the field is hidden."}]},"description":"The values of the booking form fields filled by the client.\\n\\nCustom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).","x-example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/appointment/confirm?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/appointment/confirm?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment/confirm?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment/confirm?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment/confirm?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/appointment/decline":{"post":{"tags":["Appointment"],"summary":"Decline an Appointment","description":"Decline an existing appointment. View appointment status for definitions of available statuses.\\n\\n<div class=\'ui grey icon message\'>\\n<div class=\'content\'>\\n <div class=\\"header\\">\\n <i class=\'small paper plane outline\\n icon\'>\\n </i>\\n Triggers Client Notification\\n</div>\\n <p>By default triggers an email and SMS if configured. <a href=\\"https://support.setster.com/hc/en-us/sections/360004456154-Email-and-SMS-Notifications\\" target=\\"_blank\\" style=\\"color: #636d82 !important\\">Learn More</a></p></div></div>\\n","operationId":"updateAppointmentDeclined","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["appointment_id","reason"],"properties":{"appointment_id":{"type":"integer","example":123},"reason":{"type":"string"}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"last_updated":{"type":"string","example":"2024-03-15 16:00:50","format":"date-time","description":"The date and time when the latest change was made to the appointment","readOnly":true},"created_at":{"type":"string","example":"2024-03-15 16:00:50","format":"date-time","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"x-additionalPropertiesName":"field index","description":"The `field index` is an integer string custom_fields object property name and represents the order of the booking form fields displayed in your [dashboard]((https://www.setster.com/admin/settings/customize/booking-form/). The field index count starts with the first field sown with a `key` value under it.\\n\\n**<u>NOTICE</u>**\\n**The field index count excludes the default uneditable fields Full Name and Email.**\\n\\n**Example:** The first field shown in your [dashboard](https://www.setster.com/admin/settings/customize/booking-form/) with a `key` under it would have the field index of `\\"1\\"`. The second field with a `key` under it would have a field index of `\\"2\\"` and so on.\\n\\nDeleting or modifying a custom field may impact the field indexes. When changes are made ensure all custom_fields field indexes are still correct.","type":"array","items":[{"oneOf":[{"type":"string","title":"value","description":"The input value either filled
1in by the client at the time of booking or set upon appointment update via the API.\\n\\n*The field value can be updated only with a reschedule action.*"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.\\n\\n*The field value can be updated only with a reschedule action.*","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}}]},{"type":"string","title":"label","description":"The displayed input label of the booking form field."},{"type":"string","title":"type","description":"*Note: Only used for hidden fields.*\\n\\nSet to `\\"h\\"` if the field is hidden."}]},"description":"The values of the booking form fields filled by the client.\\n\\nCustom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).","x-example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"custom_data":{"type":"object","additionalProperties":{"description":"Every form field on your booking form added in the Setster dashboard has an assigned customizable `key`. This `key` should match the property name you add to your custom_data object.\\n\\nSome address and phone field keys include a numeric value at the end like `address_1234` or `phone_1234`. Newer accounts\' address and phone field keys are `address` and `phone` by default.\\n\\nAlways confirm your fields\' key structure in your dashboard\'s booking form before adding custom data.","x-additionalPropertiesName":"key","anyOf":[{"type":"string","title":"Text","description":"A text input field. ","example":"Lorem Ipsum"},{"type":"string","title":"Multiline","description":"A multi-line input field. ","example":"Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."},{"type":"string","title":"Phone","description":"Some accounts\' phone field keys include a numeric value at the end like `phone_1234` while newer accounts\' phone field keys are `phone` by default.","example":"555-555-5555"},{"type":"string","title":"Email","description":"An email input field.","example":"[email protected]"},{"type":"string","title":"Hidden","description":"A hidden input field that allows you to add supplemental data behind the scenes.","example":"Lorem Ipsum"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}},{"type":"string","title":"Title","description":"A text input field. ","example":"Lorem Ipsum"},{"oneOf":[{"type":"string","title":"Dropdown (Single Select)","description":"A dropdown field configured for single selection. The value should be one of the options defined in the custom field\'s `options` property.","example":"Option A"},{"type":"array","title":"Dropdown (Multi-Select)","description":"A dropdown field configured for multi-selection. The value should be an array of selected options from the custom field\'s `options` property.","items":{"type":"string"},"example":["Option A","Option C"]}]}]},"description":"Replaces the deprecated `custom_fields` property.\\n\\nCustom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).\\n\\nExpects an object c
1ontaining key values pairs where the `key` matches one of your booking form field keys and the value is any custom data value."},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/appointment/decline?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/appointment/decline?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment/decline?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment/decline?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment/decline?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/appointment/upcoming":{"get":{"tags":["Appointment"],"summary":"Get Upcoming Appointments","description":"List all existing future/upcoming appointments. Future appointments have a start date and time after the API call\'s date and time.\\nThis returns appointments with the statuses Unverified, Unconfirmed, and Confirmed only\u2014view appointment status for definitions of available statuses.","operationId":"listUpcomingAppointments","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"skip","in":"query","schema":{"type":"integer"}},{"name":"count","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"last_rows":{"type":"boolean"},"records":{"type":"array","items":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"last_updated":{"type":"string","format":"date-time","example":"2024-03-15 16:00:50","description":"The date and time when the latest change was made to the appointment","readOnly":true},"created_at":{"type":"string","format":"date-time","example":"2024-03-15 16:00:50","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The values of the custom fields filled by the client. The field can be updated only with a reschedule action.\\n\\nFormat: {\\"FIELD_INDEX\\":[\\"VALUE\\",\\"LABEL\\",\\"TYPE\\"], ...}, with TYPE being set only for hidden fields when it takes the value \\"h\\"\\n\\n- `FIELD_INDEX`: the custom field index as defined by the user.\\n- `VALUE`: the value filled
1in by the client. If the custom field type is Address, then this field will be a JSON array with 5 elements: address, apt, city, state/province and zip, in this order\\n- `LABEL`: the label of the custom field\\n- `TYPE`: has a single possible value - \\"h\\" - and is present only for hidden fields\\n","example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"custom_data":{"type":"object","additionalProperties":{"description":"Every form field on your booking form added in the Setster dashboard has an assigned customizable `key`. This `key` should match the property name you add to your custom_data object.\\n\\nSome address and phone field keys include a numeric value at the end like `address_1234` or `phone_1234`. Newer accounts\' address and phone field keys are `address` and `phone` by default.\\n\\nAlways confirm your fields\' key structure in your dashboard\'s booking form before adding custom data.","x-additionalPropertiesName":"key","anyOf":[{"type":"string","title":"Text","description":"A text input field. ","example":"Lorem Ipsum"},{"type":"string","title":"Multiline","description":"A multi-line input field. ","example":"Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."},{"type":"string","title":"Phone","description":"Some accounts\' phone field keys include a numeric value at the end like `phone_1234` while newer accounts\' phone field keys are `phone` by default.","example":"555-555-5555"},{"type":"string","title":"Email","description":"An email input field.","example":"[email protected]"},{"type":"string","title":"Hidden","description":"A hidden input field that allows you to add supplemental data behind the scenes.","example":"Lorem Ipsum"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}},{"type":"string","title":"Title","description":"A text input field. ","example":"Lorem Ipsum"},{"oneOf":[{"type":"string","title":"Dropdown (Single Select)","description":"A dropdown field configured for single selection. The value should be one of the options defined in the custom field\'s `options` property.","example":"Option A"},{"type":"array","title":"Dropdown (Multi-Select)","description":"A dropdown field configured for multi-selection. The value should be an array of selected options from the custom field\'s `options` property.","items":{"type":"string"},"example":["Option A","Option C"]}]}]},"description":"Replaces the deprecated `custom_fields` property.\\n\\nCustom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).\\n\\nExpects an object c
1ontaining key values pairs where the `key` matches one of your booking form field keys and the value is any custom data value."},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/appointment/upcoming?session_token=SESSION_TOKEN&skip=SKIP&count=COUNT\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/appointment/upcoming?session_token=SESSION_TOKEN&skip=SKIP&count=COUNT\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment/upcoming?session_token=SESSION_TOKEN&skip=SKIP&count=COUNT\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment/upcoming?session_token=SESSION_TOKEN&skip=SKIP&count=COUNT\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment/upcoming?session_token=SESSION_TOKEN&skip=SKIP&count=COUNT\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/appointment/hash/{id}":{"get":{"tags":["Appointment"],"summary":"Get hash key for an appointment","description":"Get the hash key for an existing appointment.","operationId":"getAppointmentHashByAppointmentId","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","required":true,"in":"path","schema":{"type":"integer"}},{"name":"hash_type","in":"query","schema":{"type":"string","enum":["cancel","reschedule","confirm"],"default":"reschedule"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"string","description":"The hash key","example":"bkl43mfgn43k"}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/appointment/hash/{id}?session_token=SESSION_TOKEN&id=ID&hash_type=HASH_TYPE\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/appointment/hash/{id}?session_token=SESSION_TOKEN&id=ID&hash_type=HASH_TYPE\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment/hash/{id}?session_token=SESSION_TOKEN&id=ID&hash_type=HASH_TYPE\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment/hash/{id}?session_token=SESSION_TOKEN&id=ID&hash_type=HASH_TYPE\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment/hash/{id}?session_token=SESSION_TOKEN&id=ID&hash_type=HASH_TYPE\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/appointment/sendReminder":{"post":{"tags":["Appointment"],"summary":"Send Appointment Reminder","description":"Trigger an a reminder email and SMS (if configured) for a specific appointment.\\n\\n<div class=\'ui grey icon message\'>\\n<div class=\'content\'>\\n <div class=\\"header\\">\\n <i class=\'small paper plane outline\\n icon\'>\\n </i>\\n Triggers Client Notification\\n</div>\\n <p>By default triggers an email and SMS if configured. <a href=\\"https://support.setster.com/hc/en-us/sections/360004456154-Email-and-SMS-Notifications\\" target=\\"_blank\\" style=\\"color: #636d82 !important\\">Learn More</a></p></div></div>\\n","operationId":"createAppointmentReminder","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["appointment_id","reason"],"properties":{"appointment_id":{"type":"integer","example":123},"send_to":{"type":"string","enum":["client","provider","both"],"default":"both"}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0},"statusDescriptions":{"type":"string","example":"Sent to provider/client/provider and client","description":"Description of the status"},"data":{"type":"object","nullable":true}}}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/appointment/sendReminder?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/appointment/sendReminder?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/appointment/sendReminder?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/appointment/sendReminder?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/appointment/sendReminder?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/customfield":{"get":{"tags":["Custom Fields"],"summary":"List Custom Fields","description":"Get a list of all custom fields and their attributes.","operationId":"listCustomFields","security":[{"session_token":[]}],"parameters":[{"name":"id","in":"query","description":"Custom field id","schema":{"type":"integer"}},{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"label","in":"query","schema":{"type":"string"}},{"name":"length","in":"query","schema":{"type":"integer"}},{"name":"type","in":"query","schema":{"type":"integer"}},{"name":"required","in":"query","schema":{"type":"integer"}},{"name":"status","in":"query","schema":{"type":"integer"}},{"name":"visibility","in":"query","schema":{"type":"integer"}},{"name":"readonly","in":"query","schema":{"type":"integer"}},{"name":"removable","in":"query","schema":{"type":"integer"}},{"name":"readonly_type","in":"query","schema":{"type":"integer"}},{"name":"hint","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","label","length","type","required","ord","status","visibility","readonly","hint"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the custom field","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the custom field belongs to"},"label":{"type":"string","description":"The label of the custom field"},"length":{"type":"integer","description":"The max string length of the custom field"},"type":{"type":"integer","description":"Type of the custom field. Possible values:\\n\\n- 0 - text\\n- 1 - multiline\\n- 2 - phone\\n- 3 - email\\n- 4 - hidden\\n- 5 - address\\n- 6 - title\\n- 7 - dropdown\\n","enum":[0,1,2,3,4,5,6,7],"default":0},"required":{"type":"boolean","description":"If the custom field is mandatory in the booking form","default":false},"ord":{"type":"integer","description":"The order in layout"},"status":{"type":"boolean","description":"The enabled/disabled status."},"visibility":{"type":"integer","enum":[1,2,3],"description":"Places where the custom field is visible. Possible values:\\n - 1 - Appointment submit form\\n - 2 - Contact form\\n - 3 - Both forms\\n"},"readonly":{"type":"boolean","description":"The readonly property of the custom field form.","default":false},"removable":{"type":"boolean","default":false},"readonly_type":{"type":"integer"},"hint":{"type":"string","description":"The hint property of the custom field form"},"options":{"type":"string","description":"Dropdown options stored as a pipe-delimited string. Only present when type is 7 (dropdown).","example":"Option A|Option B|Option C"},"multiselect":{"type":"integer","description":"For dropdown fields (type 7), determines if multiple options can be selected. 0 = single select, 1 = multi-select.","enum":[0,1],"default":0}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/customfield?session_token=SESSION_TOKEN&id=ID&label=LABEL&length=LENGTH&type=TYPE&required=REQUIRED&status=STATUS&visibility=VISIBILITY&readonly=READONLY&removable=REMOVABLE&readonly_type=READONLY_TYPE&hint=HINT\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/customfield?session_token=SESSION_TOKEN&id=ID&label=LABEL&length=LENGTH&type=TYPE&required=REQUIRED&status=STATUS&visibility=VISIBILITY&readonly=READONLY&removable=REMOVABLE&readonly_type=READONLY_TYPE&hint=HINT\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/customfield?session_token=SESSION_TOKEN&id=ID&label=LABEL&length=LENGTH&type=TYPE&required=REQUIRED&status=STATUS&visibility=VISIBILITY&readonly=READONLY&removable=REMOVABLE&readonly_type=READONLY_TYPE&hint=HINT\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/customfield?session_token=SESSION_TOKEN&id=ID&label=LABEL&length=LENGTH&type=TYPE&required=REQUIRED&status=STATUS&visibility=VISIBILITY&readonly=READONLY&removable=REMOVABLE&readonly_type=READONLY_TYPE&hint=HINT\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/customfield?session_token=SESSION_TOKEN&id=ID&label=LABEL&length=LENGTH&type=TYPE&required=REQUIRED&status=STATUS&visibility=VISIBILITY&readonly=READONLY&removable=REMOVABLE&readonly_type=READONLY_TYPE&hint=HINT\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"post":{"tags":["Custom Fields"],"summary":"Create a Custom Field","description":"Create a new custom field.","operationId":"createCustomField","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","label","length","type","required","ord","status","visibility","readonly","hint"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the custom field","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the custom field belongs to"},"label":{"type":"string","description":"The label of the custom field"},"length":{"type":"integer","description":"The max string length of the custom field"},"type":{"type":"integer","description":"Type of the custom field. Possible values:\\n\\n- 0 - text\\n- 1 - multiline\\n- 2 - phone\\n- 3 - email\\n- 4 - hidden\\n- 5 - address\\n- 6 - title\\n- 7 - dropdown\\n","enum":[0,1,2,3,4,5,6,7],"default":0},"required":{"type":"boolean","description":"If the custom field is mandatory in the booking form","default":false},"ord":{"type":"integer","description":"The order in layout"},"status":{"type":"boolean","description":"The enabled/disabled status."},"visibility":{"type":"integer","enum":[1,2,3],"description":"Places where the custom field is visible. Possible values:\\n - 1 - Appointment submit form\\n - 2 - Contact form\\n - 3 - Both forms\\n"},"readonly":{"type":"boolean","description":"The readonly property of the custom field form.","default":false},"removable":{"type":"boolean","default":false},"readonly_type":{"type":"integer"},"hint":{"type":"string","description":"The hint property of the custom field form"},"options":{"type":"string","description":"Dropdown options stored as a pipe-delimited string. Required when type is 7 (dropdown). Example: `Option1|Option2|Opt
1ion3`","example":"Option A|Option B|Option C"},"multiselect":{"type":"integer","description":"For dropdown fields (type 7), determines if multiple options can be selected. 0 = single select, 1 = multi-select.","enum":[0,1],"default":0}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","label","length","type","required","ord","status","visibility","readonly","hint"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the custom field","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the custom field belongs to"},"label":{"type":"string","description":"The label of the custom field"},"length":{"type":"integer","description":"The max string length of the custom field"},"type":{"type":"integer","description":"Type of the custom field. Possible values:\\n\\n- 0 - text\\n- 1 - multiline\\n- 2 - phone\\n- 3 - email\\n- 4 - hidden\\n- 5 - address\\n- 6 - title\\n- 7 - dropdown\\n","enum":[0,1,2,3,4,5,6,7],"default":0},"required":{"type":"boolean","description":"If the custom field is mandatory in the booking form","default":false},"ord":{"type":"integer","description":"The order in layout"},"status":{"type":"boolean","description":"The enabled/disabled status."},"visibility":{"type":"integer","enum":[1,2,3],"description":"Places where the custom field is visible. Possible values:\\n - 1 - Appointment submit form\\n - 2 - Contact form\\n - 3 - Both forms\\n"},"readonly":{"type":"boolean","description":"The readonly property of the custom field form.","default":false},"removable":{"type":"boolean","default":false},"readonly_type":{"type":"integer"},"hint":{"type":"string","description":"The hint property of the custom field form"},"options":{"type":"string","description":"Dropdown options stored as a pipe-delimited string. Required when type is 7 (dropdown).","example":"Option A|Option B|Option C"},"multiselect":{"type":"integer","description":"For dropdown fields (type 7), determines if multiple options can be selected. 0 = single select, 1 = multi-select.","enum":[0,1],"default":0}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/customfield?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/customfield?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/customfield?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/customfield?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/customfield?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/customfield/{id}":{"get":{"tags":["Custom Fields"],"summary":"Get a Custom Field","operationId":"getCustomField","
1security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Custom Field id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","label","length","type","required","ord","status","visibility","readonly","hint"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the custom field","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the custom field belongs to"},"label":{"type":"string","description":"The label of the custom field"},"length":{"type":"integer","description":"The max string length of the custom field"},"type":{"type":"integer","description":"Type of the custom field. Possible values:\\n\\n- 0 - text\\n- 1 - multiline\\n- 2 - phone\\n- 3 - email\\n- 4 - hidden\\n- 5 - address\\n- 6 - title\\n- 7 - dropdown\\n","enum":[0,1,2,3,4,5,6,7],"default":0},"required":{"type":"boolean","description":"If the custom field is mandatory in the booking form","default":false},"ord":{"type":"integer","description":"The order in layout"},"status":{"type":"boolean","description":"The enabled/disabled status."},"visibility":{"type":"integer","enum":[1,2,3],"description":"Places where the custom field is visible. Possible values:\\n - 1 - Appointment submit form\\n - 2 - Contact form\\n - 3 - Both forms\\n"},"readonly":{"type":"boolean","description":"The readonly property of the custom field form.","default":false},"removable":{"type":"boolean","default":false},"readonly_type":{"type":"integer"},"hint":{"type":"string","description":"The hint property of the custom field form"},"options":{"type":"string","description":"Dropdown options stored as a pipe-delimited string. Only present when type is 7 (dropdown).","example":"Option A|Option B|Option C"},"multiselect":{"type":"integer","description":"For dropdown fields (type 7), determines if multiple options can be selected. 0 = single select, 1 = multi-select.","enum":[0,1],"default":0}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Get the attributes of a specific custom field."},"put":{"tags":["Custom Fields"],"summary":"Modify a Custom Field","description":"Modify the attributes of an existing custom field.","operationId":"updateCustomField","
1security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Custom field id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","label","length","type","required","ord","status","visibility","readonly","hint"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the custom field","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the custom field belongs to"},"label":{"type":"string","description":"The label of the custom field"},"length":{"type":"integer","description":"The max string length of the custom field"},"type":{"type":"integer","description":"Type of the custom field. Possible values:\\n\\n- 0 - text\\n- 1 - multiline\\n- 2 - phone\\n- 3 - email\\n- 4 - hidden\\n- 5 - address\\n- 6 - title\\n- 7 - dropdown\\n","enum":[0,1,2,3,4,5,6,7],"default":0},"required":{"type":"boolean","description":"If the custom field is mandatory in the booking form","default":false},"ord":{"type":"integer","description":"The order in layout"},"status":{"type":"boolean","description":"The enabled/disabled status."},"visibility":{"type":"integer","enum":[1,2,3],"description":"Places where the custom field is visible. Possible values:\\n - 1 - Appointment submit form\\n - 2 - Contact form\\n - 3 - Both forms\\n"},"readonly":{"type":"boolean","description":"The readonly property of the custom field form.","default":false},"removable":{"type":"boolean","default":false},"readonly_type":{"type":"integer"},"hint":{"type":"string","description":"The hint property of the custom field form"},"options":{"type":"string","description":"Dropdown options stored as a pipe-delimited string. Required when type is 7 (dropdown). Example: `Option1|Option2|Option3`","example":"Option A|Option B|Option C"},"multiselect":{"type":"integer","description":"For dropdown fields (type 7), determines if multiple options can be selected. 0 = single select, 1 = multi-select.","enum":[0,1],"default":0}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","label","length","type","required","ord","status","visibility","readonly","hint"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the custom field","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the custom field belongs to"},"label":{"type":"string","description":"The label of the custom field"},"length":{"type":"integer","description":"The max string length of the custom field"},"type":{"type":"integer","description":"Type of the custom field. Possible values:\\n\\n- 0 - text\\n- 1 - multiline\\n- 2 - phone\\n- 3 - email\\n- 4 - hidden\\n- 5 - address\\n- 6 - title\\n- 7 - dropdown\\n","enum":[0,1,2,3,4,5,6,7],"default":0},"required":{"type":"boolean","description":"If the custom field is mandatory in the booking form","default":false},"ord":{"type":"integer","description":"The order in layout"},"status":{"type":"boolean","description":"The enabled/disabled status."},"visibility":{"type":"integer","enum":[1,2,3],"description":"Places where the custom field is visible. Possible values:\\n - 1 - Appointment submit form\\n - 2 - Contact form\\n - 3 - Both forms\\n"},"readonly":{"type":"boolean","description":"The readonly property of the custom field form.","default":false},"removable":{"type":"boolean","default":false},"readonly_type":{"type":"integer"},"hint":{"type":"string","description":"The hint property of the custom field form"},"options":{"type":"string","description":"Dropdown options stored as a pipe-delimited string. Required when type is 7 (dropdown).","example":"Option A|Option B|Option C"},"multiselect":{"type":"integer","description":"For dropdown fields (type 7), determines if multiple options can be selected. 0 = single select, 1 = multi-select.","enum":[0,1],"default":0}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request PUT \'https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'PUT\',\\n \'url\': \'https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"PUT\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Put.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.PUT);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"delete":{"tags":["Custom Fields"],"summary":"Delete a Custom Field","description":"Delete a specific custom field.","operationId":"deleteCustomField","
1security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Custom field id","schema":{"type":"integer"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","nullable":true}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request DELETE \'https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'DELETE\',\\n \'url\': \'https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"DELETE\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Delete.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/customfield/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.DELETE);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/customfield/bulksave":{"post":{"tags":["Custom Fields"],"summary":"Create or Modify Multiple Custom Fields","description":"Create or modify multiple custom fields.","operationId":"createOrUpdateAllCustomFields","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["company_id","label","length","type","required","ord","status","visibility","readonly","hint"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the custom field","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the custom field belongs to"},"label":{"type":"string","description":"The label of the custom field"},"length":{"type":"integer","description":"The max string length of the custom field"},"type":{"type":"integer","description":"Type of the custom field. Possible values:\\n\\n- 0 - text\\n- 1 - multiline\\n- 2 - phone\\n- 3 - email\\n- 4 - hidden\\n- 5 - address\\n- 6 - title\\n- 7 - dropdown\\n","enum":[0,1,2,3,4,5,6,7],"default":0},"required":{"type":"boolean","description":"If the custom field is mandatory in the booking form","default":false},"ord":{"type":"integer","description":"The order in layout"},"status":{"type":"boolean","description":"The enabled/disabled status."},"visibility":{"type":"integer","enum":[1,2,3],"description":"Places where the custom field is visible. Possible values:\\n - 1 - Appointment submit form\\n - 2 - Contact form\\n - 3 - Both forms\\n"},"readonly":{"type":"boolean","description":"The readonly property of the custom field form.","default":false},"removable":{"type":"boolean","default":false},"readonly_type":{"type":"integer"},"hint":{"type":"string","description":"The hint property of the custom field form"},"options":{"type":"string","description":"Pipe-delimited list of options for dropdown fields (type 7). Example: \\"Option A|Option B|Option C\\""},"multiselect":{"type":"integer","enum":[0,1],"default":0,"description":"For dropdown fields (type 7): 0 = single select, 1 = multi-select"}}
1}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","label","length","type","required","ord","status","visibility","readonly","hint"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the custom field","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the custom field belongs to"},"label":{"type":"string","description":"The label of the custom field"},"length":{"type":"integer","description":"The max string length of the custom field"},"type":{"type":"integer","description":"Type of the custom field. Possible values:\\n\\n- 0 - text\\n- 1 - multiline\\n- 2 - phone\\n- 3 - email\\n- 4 - hidden\\n- 5 - address\\n- 6 - title\\n- 7 - dropdown\\n","enum":[0,1,2,3,4,5,6,7],"default":0},"required":{"type":"boolean","description":"If the custom field is mandatory in the booking form","default":false},"ord":{"type":"integer","description":"The order in layout"},"status":{"type":"boolean","description":"The enabled/disabled status."},"visibility":{"type":"integer","enum":[1,2,3],"description":"Places where the custom field is visible. Possible values:\\n - 1 - Appointment submit form\\n - 2 - Contact form\\n - 3 - Both forms\\n"},"readonly":{"type":"boolean","description":"The readonly property of the custom field form.","default":false},"removable":{"type":"boolean","default":false},"readonly_type":{"type":"integer"},"hint":{"type":"string","description":"The hint property of the custom field form"},"options":{"type":"string","description":"Pipe-delimited list of options for dropdown fields (type 7). Example: \\"Option A|Option B|Option C\\""},"multiselect":{"type":"integer","enum":[0,1],"default":0,"description":"For dropdown fields (type 7): 0 = single select, 1 = multi-select"}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/customfield/bulksave?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/customfield/bulksave?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/customfield/bulksave?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/customfield/bulksave?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/customfield/bulksave?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/client":{"get":{"tags":["Client"],"summary":"List Clients","description":"Get a list of all clients and their attributes.","operationId":"listClients","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"q","in":"query","description":"Search string","schema":{"type":"string"}},{"name":"start","in":"query","description":"List pager","schema":{"type":"integer","default":0}}
1,{"name":"end","in":"query","description":"List pager / \'all\' - no limit","schema":{"type":"integer","default":100}},{"name":"client_id","in":"query","schema":{"type":"integer"}},{"name":"employee_id","in":"query","schema":{"type":"integer"}},{"name":"email","in":"query","schema":{"type":"string"}},{"name":"name","in":"query","schema":{"type":"string"}},{"name":"phone","in":"query","schema":{"type":"string"}},{"name":"last_app_date","in":"query","schema":{"type":"string"}},{"name":"notes","in":"query","schema":{"type":"string"}},{"name":"preferences","in":"query","schema":{"type":"string"}},{"name":"address","in":"query","schema":{"type":"string"}},{"name":"address2","in":"query","schema":{"type":"string"}},{"name":"city","in":"query","schema":{"type":"string"}},{"name":"state","in":"query","schema":{"type":"string"}},{"name":"zip","in":"query","schema":{"type":"string"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"gender","in":"query","schema":{"type":"string"}},{"name":"birthday","in":"query","schema":{"type":"string"}},{"name":"client_since","in":"query","schema":{"type":"string"}},{"name":"accept_emails","in":"query","schema":{"type":"string"}},{"name":"photo","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","employee_id","email","name"],"properties":{"client_id":{"type":"integer","format":"int64","description":"Unique ID of the client","readOnly":true,"example":3213},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the client belongs to","readOnly":true,"example":24232},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee that the client is associated with","readOnly":true,"example":5323},"email":{"type":"string","format":"email","description":"The email of the client"},"name":{"type":"string","description":"The full name of the client","example":"Test Client"},"phone":{"type":"string","description":"Client\'s phone number","example":"3445323523"},"last_app_date":{"type":"string","format":"date-time","description":"The date and time of the last appointment made by the client","readOnly":true},"date_created":{"type":"string","format":"date-time","description":"The date and time when the record was created.","readOnly":true},"notes":{"type":"string"},"preferences":{"type":"string"},"address":{"type":"string","description":"Client\'s address","example":"City country"},"address2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zip":{"type":"string"},"country":{"type":"string"},"gender":{"type":"string","nullable":true,"enum":["m","f"],"description":"The gender of the client"},"birthday":{"type":"string","format":"date","description":"Only the day and month are relevant"},"cient_since":{"type":"string","format":"date","description":"The date the client first scheduled an appointment or was created. This field is editable.\\n"},"accept_emails":{"type":"boolean","description":"Whether or not the client accepts email marketing"},"photo":{"type":"string","description":"The base name of the photo file. If not null or empty, it can be used to get the client photo:\\n- `small`: 65x65 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/s_[photo]\\n- `medium`: 100x100 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/m_[photo]\\n- `large`: 300x300 (not cropped) https://www.setster.com/admin/images/clients/l_[photo]\\n"}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/client?session_token=SESSION_TOKEN&q=Q&start=START&end=END&client_id=CLIENT_ID&employee_id=EMPLOYEE_ID&email=EMAIL&name=NAME&phone=PHONE&last_app_date=LAST_APP_DATE¬es=NOTES&preferences=PREFERENCES&address=ADDRESS&address2=ADDRESS2&city=CITY&state=STATE&zip=ZIP&country=COUNTRY&gender=GENDER&birthday=BIRTHDAY&client_since=CLIENT_S
1INCE&accept_emails=ACCEPT_EMAILS&photo=PHOTO\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/client?session_token=SESSION_TOKEN&q=Q&start=START&end=END&client_id=CLIENT_ID&employee_id=EMPLOYEE_ID&email=EMAIL&name=NAME&phone=PHONE&last_app_date=LAST_APP_DATE¬es=NOTES&preferences=PREFERENCES&address=ADDRESS&address2=ADDRESS2&city=CITY&state=STATE&zip=ZIP&country=COUNTRY&gender=GENDER&birthday=BIRTHDAY&client_since=CLIENT_SINCE&accept_emails=ACCEPT_EMAILS&photo=PHOTO\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/client?session_token=SESSION_TOKEN&q=Q&start=START&end=END&client_id=CLIENT_ID&employee_id=EMPLOYEE_ID&email=EMAIL&name=NAME&phone=PHONE&last_app_date=LAST_APP_DATE¬es=NOTES&preferences=PREFERENCES&address=ADDRESS&address2=ADDRESS2&city=CITY&state=STATE&zip=ZIP&country=COUNTRY&gender=GENDER&birthday=BIRTHDAY&client_since=CLIENT_SINCE&accept_emails=ACCEPT_EMAILS&photo=PHOTO\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/client?session_token=SESSION_TOKEN&q=Q&start=START&end=END&client_id=CLIENT_ID&employee_id=EMPLOYEE_ID&email=EMAIL&name=NAME&phone=PHONE&last_app_date=LAST_APP_DATE¬es=NOTES&preferences=PREFERENCES&address=ADDRESS&address2=ADDRESS2&city=CITY&state=STATE&zip=ZIP&country=COUNTRY&gender=GENDER&birthday=BIRTHDAY&client_since=CLIENT_SINCE&accept_emails=ACCEPT_EMAILS&photo=PHOTO\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/client?session_token=SESSION_TOKEN&q=Q&start=START&end=END&client_id=CLIENT_ID&employee_id=EMPLOYEE_ID&email=EMAIL&name=NAME&phone=PHONE&last_app_date=LAST_APP_DATE¬es=NOTES&preferences=PREFERENCES&address=ADDRESS&address2=ADDRESS2&city=CITY&state=STATE&zip=ZIP&country=COUNTRY&gender=GENDER&birthday=BIRTHDAY&client_since=CLIENT_SINCE&accept_emails=ACCEPT_EMAILS&photo=PHOTO\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"post":{"tags":["Client"],"summary":"Create a Client","description":"Create a new client.","operationId":"createClient","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","employee_id","email","name"],"properties":{"client_id":{"type":"integer","format":"int64","description":"Unique ID of the client","readOnly":true,"example":3213},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the client belongs to","readOnly":true,"example":24232},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee that the client is associated with","readOnly":true,"example":5323},"email":{"type":"string","format":"email","description":"The email of the client"},"name":{"type":"string","description":"The full name of the client","example":"Test Client"},"phone":{"type":"string","description":"Client\'s phone number","example":"3445323523"},"last_app_date":{"type":"string","format":"date-time","description":"The date and time of the last appointment made by the client","readOnly":true},"date_created":{"type":"string","format":"date-time","description":"The date and time when the record was created.","readOnly":true},"notes":{"type":"string"},"preferences":{"type":"string"},"address":{"type":"string","description":"Client\'s address","example":"City country"},"address2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zip":{"type":"string"},"country":{"type":"string"},"gender":{"type":"string","nullable":true,"enum":["m","f"],"description":"The gender of the client"},"birthday":{"type":"string","format":"date","description":"Only the day and month are relevant"},"cient_since":{"type":"string","format":"date","description":"The date the client first scheduled an appointment or was created. This field is editable.\\n"},"accept_emails":{"type":"boolean","description":"Whether or not the client accepts email marketing"},"photo":{"type":"string","description":"The base name of the photo file. If not null or empty, it can be used to get the client photo:\\n- `small`: 65x65 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/s_[photo]\\n- `medium`: 100x100 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/m_[photo]\\n- `large`: 300x300 (not cropped) https://www.setster.com/admin/images/clients/l_[photo]\\n"}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","employee_id","email","name"],"properties":{"client_id":{"type":"integer","format":"int64","description":"Unique ID of the client","readOnly":true,"example":3213},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the client belongs to","readOnly":true,"example":24232},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee that the client is associated with","readOnly":true,"example":5323},"email":{"type":"string","format":"email","description":"The email of the client"},"name":{"type":"string","description":"The full name of the client","example":"Test Client"},"phone":{"type":"string","description":"Client\'s phone number","example":"3445323523"},"last_app_date":{"type":"string","format":"date-time","description":"The date and time of the last appointment made by the client","readOnly":true},"date_created":{"type":"string","format":"date-time","description":"The date and time when the record was created.","readOnly":true},"notes":{"type":"string"},"preferences":{"type":"string"},"address":{"type":"string","description":"Client\'s address","example":"City country"},"address2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zip":{"type":"string"},"country":{"type":"string"},"gender":{"type":"string","nullable":true,"enum":["m","f"],"description":"The gender of the client"},"birthday":{"type":"string","format":"date","description":"Only the day and month are relevant"},"cient_since":{"type":"string","format":"date","description":"The date the client first scheduled an appointment or was created. This field is editable.\\n"},"accept_emails":{"type":"boolean","description":"Whether or not the client accepts email marketing"},"photo":{"type":"string","description":"The base name of the photo file. If not null or empty, it can be used to get the client photo:\\n- `small`: 65x65 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/s_[photo]\\n- `medium`: 100x100 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/m_[photo]\\n- `large`: 300x300 (not cropped) https://www.setster.com/admin/images/clients/l_[photo]\\n"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/client?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/client?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/client?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/client?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/client?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/client/{id}":{"get":{"tags":["Client"],"summary":"Get a Client","operationId":"getClient","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Client id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","employee_id","email","name"],"properties":{"client_id":{"type":"integer","format":"int64","description":"Unique ID of the client","readOnly":true,"example":3213},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the client belongs to","readOnly":true,"example":24232},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee that the client is associated with","readOnly":true,"example":5323},"email":{"type":"string","format":"email","description":"The email of the client"},"name":{"type":"string","description":"The full name of the client","example":"Test Client"},"phone":{"type":"string","description":"Client\'s phone number","example":"3445323523"},"last_app_date":{"type":"string","format":"date-time","description":"The date and time of the last appointment made by the client","readOnly":true},"date_created":{"type":"string","format":"date-time","description":"The date and time when the record was created.","readOnly":true},"notes":{"type":"string"},"preferences":{"type":"string"},"address":{"type":"string","description":"Client\'s address","example":"City country"},"address2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zip":{"type":"string"},"country":{"type":"string"},"gender":{"type":"string","nullable":true,"enum":["m","f"],"description":"The gender of the client"},"birthday":{"type":"string","format":"date","description":"Only the day and month are relevant"},"cient_since":{"type":"string","format":"date","description":"The date the client first scheduled an appointment or was created. This field is editable.\\n"},"accept_emails":{"type":"boolean","description":"Whether or not the client accepts email marketing"},"photo":{"type":"string","description":"The base name of the photo file. If not null or empty, it can be used to get the client photo:\\n- `small`: 65x65 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/s_[photo]\\n- `medium`: 100x100 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/m_[photo]\\n- `large`: 300x300 (not cropped) https://www.setster.com/admin/images/clients/l_[photo]\\n"}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Get the attributes of a specific client."},"put":{"tags":["Client"],"summary":"Modify a Client","description":"Modify the attributes of an existing client.","operationId":"updateClient","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Client id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","employee_id","email","name"],"properties":{"client_id":{"type":"integer","format":"int64","description":"Unique ID of the client","readOnly":true,"example":3213},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the client belongs to","readOnly":true,"example":24232},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee that the client is associated with","readOnly":true,"example":5323},"email":{"type":"string","format":"email","description":"The email of the client"},"name":{"type":"string","description":"The full name of the client","example":"Test Client"},"phone":{"type":"string","description":"Client\'s phone number","example":"3445323523"},"last_app_date":{"type":"string","format":"date-time","description":"The date and time of the last appointment made by the client","readOnly":true},"date_created":{"type":"string","format":"date-time","description":"The date and time when the record was created.","readOnly":true},"notes":{"type":"string"},"preferences":{"type":"string"},"address":{"type":"string","description":"Client\'s address","example":"City country"},
1"address2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zip":{"type":"string"},"country":{"type":"string"},"gender":{"type":"string","nullable":true,"enum":["m","f"],"description":"The gender of the client"},"birthday":{"type":"string","format":"date","description":"Only the day and month are relevant"},"cient_since":{"type":"string","format":"date","description":"The date the client first scheduled an appointment or was created. This field is editable.\\n"},"accept_emails":{"type":"boolean","description":"Whether or not the client accepts email marketing"},"photo":{"type":"string","description":"The base name of the photo file. If not null or empty, it can be used to get the client photo:\\n- `small`: 65x65 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/s_[photo]\\n- `medium`: 100x100 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/m_[photo]\\n- `large`: 300x300 (not cropped) https://www.setster.com/admin/images/clients/l_[photo]\\n"}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","employee_id","email","name"],"properties":{"client_id":{"type":"integer","format":"int64","description":"Unique ID of the client","readOnly":true,"example":3213},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the client belongs to","readOnly":true,"example":24232},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee that the client is associated with","readOnly":true,"example":5323},"email":{"type":"string","format":"email","description":"The email of the client"},"name":{"type":"string","description":"The full name of the client","example":"Test Client"},"phone":{"type":"string","description":"Client\'s phone number","example":"3445323523"},"last_app_date":{"type":"string","format":"date-time","description":"The date and time of the last appointment made by the client","readOnly":true},"date_created":{"type":"string","format":"date-time","description":"The date and time when the record was created.","readOnly":true},"notes":{"type":"string"},"preferences":{"type":"string"},"address":{"type":"string","description":"Client\'s address","example":"City country"},"address2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zip":{"type":"string"},"country":{"type":"string"},"gender":{"type":"string","nullable":true,"enum":["m","f"],"description":"The gender of the client"},"birthday":{"type":"string","format":"date","description":"Only the day and month are relevant"},"cient_since":{"type":"string","format":"date","description":"The date the client first scheduled an appointment or was created. This field is editable.\\n"},"accept_emails":{"type":"boolean","description":"Whether or not the client accepts email marketing"},"photo":{"type":"string","description":"The base name of the photo file. If not null or empty, it can be used to get the client photo:\\n- `small`: 65x65 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/s_[photo]\\n- `medium`: 100x100 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/m_[photo]\\n- `large`: 300x300 (not cropped) https://www.setster.com/admin/images/clients/l_[photo]\\n"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request PUT \'https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'PUT\',\\n \'url\': \'https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"PUT\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Put.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.PUT);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"delete":{"tags":["Client"],"summary":"Delete a Client","description":"Delete an existing client.","operationId":"deleteClient","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"Client id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","nullable":true}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request DELETE \'https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'DELETE\',\\n \'url\': \'https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"DELETE\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Delete.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/client/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.DELETE);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/client/uploadPicture":{"post":{"tags":["Client"],"summary":"Upload a Client Photo","description":"Using this endpoint you can add/update the client picture","operationId":"uploadClientPhoto","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"photo":{"type":"string","format":"binary"}}},"encoding":{"photo":{"contentType":"image/png, image/jpeg"}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"upload_id":{"type":"integer","format":"int64","example":32412},"file_name":{"type":"string","example":"avatar.png"},"file_location":{"type":"string","example":"/admin/images/clients/"}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/client/uploadPicture?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/client/uploadPicture?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/client/uploadPicture?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/client/uploadPicture?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/client/uploadPicture?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/tz/list":{"get":{"tags":["Time Zones"],"summary":"List Time Zones","description":"Get a list of available Setster time zones.","operationId":"listTimeZones","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"reverse_caption","in":"query","description":"Get the caption with a different format","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","additionalProperties":{"type":"object","properties":{"gmt":{"type":"integer","format":"int32","description":"Offset value in seconds","example":-240},"caption":{"type":"string","description":"Description","example":"GMT -04:00 US/Canad
1a/Eastern, Colombia, Peru (EDT)"},"dbName":{"type":"string","description":"Mysql standard name","example":"US/Eastern"},"short":{"type":"string","description":"Short description","example":"GMT -04:00"},"friendly":{"type":"string","description":"Short/friendly description","example":"GMT-04:00"}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/tz/list?session_token=SESSION_TOKEN&reverse_caption=REVERSE_CAPTION\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/tz/list?session_token=SESSION_TOKEN&reverse_caption=REVERSE_CAPTION\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/tz/list?session_token=SESSION_TOKEN&reverse_caption=REVERSE_CAPTION\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/tz/list?session_token=SESSION_TOKEN&reverse_caption=REVERSE_CAPTION\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/tz/list?session_token=SESSION_TOKEN&reverse_caption=REVERSE_CAPTION\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/tz/data":{"get":{"tags":["Time Zones"],"summary":"Get Time Zone Offset","description":"Get the offset of a specific time zone.","operationId":"getTimezone","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"query","description":"The timezone id","schema":{"type":"integer","default":553}},{"name":"time","in":"query","description":"The timestamp at which the offset whould be calculated","schema":{"type":"integer","default":1536583485}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"object","properties":{"offset":{"type":"integer","example":3600}}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/tz/data?session_token=SESSION_TOKEN&id=ID&time=TIME\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/tz/data?session_token=SESSION_TOKEN&id=ID&time=TIME\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/tz/data?session_token=SESSION_TOKEN&id=ID&time=TIME\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/tz/data?session_token=SESSION_TOKEN&id=ID&time=TIME\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/tz/data?session_token=SESSION_TOKEN&id=ID&time=TIME\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/subscribe":{"get":{"tags":["Webhooks"],"summary":"List Webhooks","description":"Get a list of created webhooks and their attributes.","operationId":"listWebhooks","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"target_url","in":"query","schema":{"type":"string","format":"uri"}},{"name":"active","in":"query","schema":{"type":"integer","enum":[0,1]}},{"name":"verification_key","in":"query","schema":{"type":"string"}},{"name":"created_at","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"updated_at","in":"query","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","target_url"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the webHook subscriber","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","description":"The ID of the company","example":24232},"target_url":{"type":"string","format":"uri","default":""},"events":{"type":"array","readOnly":true,"description":"The list of events","items":{"type":"object","properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the webHook event","readOnly":true,"example":13425},"event":{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","appointment.canceled","*"]},"active":{"type":"integer","enum":[0,1],"default":1},"created_at":{"type":"string","format":"date-time","readOnly":true}}}},"active":{"type":"integer","enum":[0,1],"default":1},"verification_key":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request GET \'https://www.setster.com/api/v2/subscribe?session_token=SESSION_TOKEN&target_url=TARGET_URL&active=ACTIVE&verification_key=VERIFICATION_KEY&created_at=CREATED_AT&updated_at=UPDATED_AT\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/subscribe?session_token=SESSION_TOKEN&target_url=TARGET_URL&active=ACTIVE&verification_key=VERIFICATION_KEY&created_at=CREATED_AT&updated_at=UPDATED_AT\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/subscribe?session_token=SESSION_TOKEN&target_url=TARGET_URL&active=ACTIVE&verification_key=VERIFICATION_KEY&created_at=CREATED_AT&updated_at=UPDATED_AT\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/subscribe?session_token=SESSION_TOKEN&target_url=TARGET_URL&active=ACTIVE&verification_key=VERIFICATION_KEY&created_at=CREATED_AT&updated_at=UPDATED_AT\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/subscribe?session_token=SESSION_TOKEN&target_url=TARGET_URL&active=ACTIVE&verification_key=VERIFICATION_KEY&created_at=CREATED_AT&updated_at=UPDATED_AT\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"post":{"tags":["Webhooks"],"summary":"Create a Webhook","description":"Create a new webhook.","operationId":"createWebhook","parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}}],"security":[{"session_token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","target_url"],"properties":{"company_id":{"type":"integer","format":"int64","description":"The ID of the company","example":24232},"target_url":{"type":"string","format":"uri","default":""},"events":{"type":"array","description":"The list of events. The currently supported events are:\\n\\n 1. `appointment.created`\\n 2. `appointment.updated`\\n 3. `appointment.deleted`\\n 4. `appointment.rescheduled`\\n 5. `appointment.reminder`\\n 6. `appointment.canceled`\\n 7. `*`\\n\\n The \\"`*`\\" event means that you will subscribe to all currently supported\\n events as well as future added events.\\n","example":["appointment.created",{"event":"appointment.rescheduled","active":0}],"items":{"oneOf":[{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","appointment.canceled","*"]},{"type":"object","properties":{"event":{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","appointment.canceled","*"]},"active":{"type":"integer","enum":[0,1],"default":1}}}]}},"active":{"type":"integer","enum":[0,1],"default":1}}}}}},"responses":{"201":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","target_url"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the webHook subscriber","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","description":"The ID of the company","example":24232},"target_url":{"type":"string","format":"uri","default":""},"events":{"type":"array","readOnly":true,"description":"The list of events","items":{"type":"object","properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the webHook event","readOnly":true,"example":13425},"event":{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","appointment.canceled","*"]},"active":{"type":"integer","enum":[0,1],"default":1},"created_at":{"type":"string","format":"date-time","readOnly":true}}}},"active":{"type":"integer","enum":[0,1],"default":1},"verification_key":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location --request POST \'https://www.setster.com/api/v2/subscribe?session_token=SESSION_TOKEN\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'POST\',\\n \'url\': \'https://www.setster.com/api/v2/subscribe?session_token=SESSION_TOKEN\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/subscribe?session_token=SESSION_TOKEN\\")\\n .method(\\"POST\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/subscribe?session_token=SESSION_TOKEN\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Post.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/subscribe?session_token=SESSION_TOKEN\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.POST);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}},"/subscribe/{id}":{"get":{"tags":["Webhooks"],"summary":"Get a Webhook","operationId":"getWebhook","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"WebHook id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["company_id","target_url"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the webHook subscriber","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","description":"The ID of the company","example":24232},"target_url":{"type":"string","format":"uri","default":""},"events":{"type":"array","readOnly":true,"description":"The list of events","items":{"type":"object","properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the webHook event","readOnly":true,"example":13425},"event":{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","app
1ointment.canceled","*"]},"active":{"type":"integer","enum":[0,1],"default":1},"created_at":{"type":"string","format":"date-time","readOnly":true}}}},"active":{"type":"integer","enum":[0,1],"default":1},"verification_key":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request GET \'https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'GET\',\\n \'url\': \'https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"GET\\", null)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Get.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.GET);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}],"description":"Get the attributes of a specific webhook."},"put":{"tags":["Webhooks"],"summary":"Modify a Webhook","description":"Modify the attributes for an existing webhook.","operationId":"updateWebhook","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"WebHook id","schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["company_id","target_url"],"properties":{"company_id":{"type":"integer","format":"int64","description":"The ID of the company","example":24232},"target_url":{"type":"string","format":"uri","default":""},"events":{"type":"array","description":"The list of events. The currently supported events are:\\n\\n 1. `appointment.created`\\n 2. `appointment.updated`\\n 3. `appointment.deleted`\\n 4. `appointment.rescheduled`\\n 5. `appointment.reminder`\\n 6. `appointment.canceled`\\n 7. `*`\\n\\n The \\"`*`\\" event means that you will subscribe to all currently supported\\n events as well as future added events.\\n","example":["appointment.created",{"event":"appointment.rescheduled","active":0}],"items":{"oneOf":[{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","appointment.canceled","*"]},{"type":"object","properties":{"event":{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","appointment.canceled","*"]},"active":{"type":"integer","enum":[0,1],"default":1}}}]}},"active":{"type":"integer","enum":[0,1],"default":1}}}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","required":["company_id","target_url"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the webHook subscriber","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","description":"The ID of the company","example":24232},"target_url":{"type":"string","format":"uri","default":""},"events":{"type":"array","readOnly":true,"description":"The list of events","items":{"type":"object","properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the webHook event","readOnly":true,"example":13425},"event":{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","appointment.canceled","*"]},"active":{"type":"integer","enum":[0,1],"default":1},"created_at":{"type":"string","format":"date-time","readOnly":true}}}},"active":{"type":"integer","enum":[0,1],"default":1},"verification_key":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request PUT \'https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'PUT\',\\n \'url\': \'https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"PUT\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Put.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.PUT);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]},"delete":{"tags":["Webhooks"],"summary":"Delete a Webhook","description":"Delete an existing webhook.","operationId":"deleteWebhook","security":[{"session_token":[]}],"parameters":[{"in":"query","name":"company_id","description":"The unique ID of the account. Account ID.","required":true,"schema":{"type":"integer","format":"int64","example":2345,"readOnly":true}},{"name":"id","in":"path","required":true,"description":"WebHook id","schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},{"type":"object","properties":{"data":{"type":"object","nullable":true}}}]}}}}},"x-codeSamples":[{"lang":"curl","source":"curl --location -g --request DELETE \'https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\'"},{"lang":"Node","source":"var request = require(\'request\');\\nvar options = {\\n \'method\': \'DELETE\',\\n \'url\': \'https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\',\\n \'headers\': {\\n }\\n};\\nrequest(options, function (error, response) {\\n if (error) throw new Error(error);\\n console.log(response.body);\\n});\\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient().newBuilder()\\n .build();\\nMediaType mediaType = MediaType.parse(\\"text/plain\\");\\nRequestBody body = RequestBody.create(mediaType, \\"\\");\\nRequest request = new Request.Builder()\\n .url(\\"https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n .method(\\"DELETE\\", body)\\n .build();\\nResponse response = client.newCall(request).execute();"},{"lang":"Ruby","source":"require \\"uri\\"\\nrequire \\"net/http\\"\\n\\nurl = URI(\\"https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\\")\\n\\nhttps = Net::HTTP.new(url.host, url.port)\\nhttps.use_ssl = true\\n\\nrequest = Net::HTTP::Delete.new(url)\\n\\nresponse = https.request(request)\\nputs response.read_body\\n"},{"lang":"C#","source":"var client = new RestClient(\\"https://www.setster.com/api/v2/subscribe/{id}?session_token=SESSION_TOKEN&id=ID\\");\\nclient.Timeout = -1;\\nvar request = new RestRequest(Method.DELETE);\\nIRestResponse response = client.Execute(request);\\nConsole.WriteLine(response.Content);"}]}}},"components":{"securitySchemes":{"session_token":{"type":"apiKey","name":"session_token","in":"query","description":"To get the session_token, first you need to make a POST\\nrequest to \\"account/authenticate\\" using your API key or\\nusername and password. The session token is the element\\n\\"data.session_token\\" from the response.\\n"}}
1,"schemas":{"Account":{"allOf":[{"type":"object","required":["company_name","nick_name"],"properties":{"company_name":{"type":"string","description":"The name of the company","example":"Apple"},"nick_name":{"type":"string","description":"The unique nickname of the account. Also create\'s the account\'s profile page `https://nickname.setster.com`. May contain only letters and digits","example":"apple"},"website":{"type":"string","format":"uri","description":"The company\'s website URL.","example":"www.example.com"},"contact":{"type":"string","format":"email","description":"The company\'s main email address."},"facebook":{"type":"string","format":"uri","description":"The Facebook company page URL.","example":"www.facebook.com/company"},"linkedin":{"type":"string","format":"uri","description":"The Linkedin company page URL.","example":"www.linkedin.com/company"},"twitter":{"type":"string","format":"uri","description":"The Twitter account URL of the company.","example":"www.twitter.com/company"},"skype_name":{"type":"string","description":"The Skype nickname of the company Skype account.","example":"nickname"},"yelp":{"type":"string","description":"The company\'s Yelp page URL","example":"www.yelp.com/company"},"pinterest":{"type":"string","description":"The company\'s Pinterest page URL","example":"www.pinterest.com/company"},"vimeo":{"type":"string","description":"The company\'s Vimeo page URL","example":"www.vimeo.com/company"},"youtube":{"type":"string","description":"The company\'s YouTube channel URL","example":"www.youtube.com/company"},"phone":{"type":"string","description":"The main business phone number","example":"(310) 123-4567"},"timezone_id":{"type":"integer","default":553,"description":"The account\'s set timezone ID"},"fax":{"type":"string","description":"The main business fax number","example":"(310) 123-4568"},"industry":{"type":"string"},"logo":{"type":"string"},"paragraph":{"type":"string","description":"The company\'s about us section. Optional content visitble to users during booking an appointment","example":"We are a...."},"business_hours":{"type":"string","description":"The company\'s main business hours.","example":"Monday - Friday 9am - 5pm","writeOnly":true}}},{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Contact of the main and default employee. Together with the password is used as user name"},"password":{"type":"string","format":"password","description":"Used along with the account email","example":"i39j02ksnfj40f"},"first_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"last_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"phone":{"type":"string","description":"Business phone","example":""}}},{"type":"object","required":["company_id","email","password"],"properties":{"id":{"type":"integer","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The unique ID of the account","example":2345,"readOnly":true},"created_by":{"type":"integer","format":"int64","description":"The ID of the company owner/main employee","example":1242,"readOnly":true},"address_city":{"type":"string","description":"The city in the account address","example":"Los Angeles"},"address_country":{"type":"string","description":"The country of the account address.","example":"USA"},"address_state":{"type":"string","description":"The state of the account address","example":"California"},"address_street1":{"type":"string","description":"The street address of the account address","example":"123 Street"},"address_street2":{"type":"string","description":"The street address line 2 of the account address","example":"Unit B"},"addresszip":{"type":"string","description":"The zip code of the account address.","example":"90210"},"send_to_contact":{"type":"integer","default":0},"show_map_profile":{"type":"boolean","default":false,"description":"Shows or hides the company map view on the profile page"},"splash":{"type":"string"},"map_url":{"type":"string","format":"uri","description":"The Google map URL for the account address.","example":"https://goo.gl/maps/qpuAvyPizfgP5FbN7"},"return_url":{"type":"string","description":"The URL a user will be directed to after booking an appointment","example":"https://www.google.com/"},"policies":{"type":"string","description":"The company\'s booking policy. Optional content visitble to users during booking an appointment","example":"We accept bookings for specific services only and you\'re..."},"account_type":{"type":"integer","format":"int32","description":"The subscription plan of the account.","example":"0","enum":[0,1,2,4,5,6]},"date_created":{"type":"string","format":"date-time","readOnly":true,"description":"The date the account was created"},"no_views":{"type":"string","readOnly":true,"description":"The number of times the account\'s booking widget was loaded/viewd."},"notify_app_unconfirmed":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unconfirmed appointments"},"notify_app_unpaid":{"type":"boolean","default":true,"description":"Notify the staff/employees of new unpaid appointments"},"lang":{"type":"string","enum":["en","fr","es"],"description":"The language of the account","default":"en"},"enable_locations":{"type":"boolean","description":"An account has multiple location creation previlidges","default":true},"capture_leads":{"type":"string"},"settings":{"type":"string","format":"json","readOnly":true},"status":{"type":"integer","default":0,"readOnly":true},"directory":{"type":"integer","default":0},"max_providers":{"type":"integer","format":"int32","description":"The number of licenses the account is susubscribed/paying for.","default":0},"business_hours_label":{"type":"string","description":"The label for the company\'s main business hours."},"policies_label":{"type":"string","description":"The label for the company\'s booking policy."},"paragraph_label":{"type":"string","description":"The label for the company\'s account section."},"timezone":{"type":"integer","format":"int32","description":"The GMT offset in minutes of the account\'s timezone","example":-480,"default":0},"exchange_sync_settings":{"type":"object","readOnly":true,"description":"Microsoft Exchange c
1alendar sync settings.","properties":{"host":{"type":"string"},"account":{"type":"string"},"password":{"type":"string","format":"password"},"sync_period":{"type":"integer"}}}}}]},"AccountBusinessInfo":{"type":"object","required":["company_name","nick_name"],"properties":{"company_name":{"type":"string","description":"The name of the company","example":"Apple"},"nick_name":{"type":"string","description":"The unique nickname of the account. Also create\'s the account\'s profile page `https://nickname.setster.com`. May contain only letters and digits","example":"apple"},"website":{"type":"string","format":"uri","description":"The company\'s website URL.","example":"www.example.com"},"contact":{"type":"string","format":"email","description":"The company\'s main email address."},"facebook":{"type":"string","format":"uri","description":"The Facebook company page URL.","example":"www.facebook.com/company"},"linkedin":{"type":"string","format":"uri","description":"The Linkedin company page URL.","example":"www.linkedin.com/company"},"twitter":{"type":"string","format":"uri","description":"The Twitter account URL of the company.","example":"www.twitter.com/company"},"skype_name":{"type":"string","description":"The Skype nickname of the company Skype account.","example":"nickname"},"yelp":{"type":"string","description":"The company\'s Yelp page URL","example":"www.yelp.com/company"},"pinterest":{"type":"string","description":"The company\'s Pinterest page URL","example":"www.pinterest.com/company"},"vimeo":{"type":"string","description":"The company\'s Vimeo page URL","example":"www.vimeo.com/company"},"youtube":{"type":"string","description":"The company\'s YouTube channel URL","example":"www.youtube.com/company"},"phone":{"type":"string","description":"The main business phone number","example":"(310) 123-4567"},"timezone_id":{"type":"integer","default":553,"description":"The account\'s set timezone ID"},"fax":{"type":"string","description":"The main business fax number","example":"(310) 123-4568"},"industry":{"type":"string"},"logo":{"type":"string"},"paragraph":{"type":"string","description":"The company\'s about us section. Optional content visitble to users during booking an appointment","example":"We are a...."},"business_hours":{"type":"string","description":"The company\'s main business hours.","example":"Monday - Friday 9am - 5pm","writeOnly":true}}},"AccountOptions":{"type":"object","properties":{"company_id":{"type":"integer","example":654},"email_settings":{"type":"object","writeOnly":true,"required":["company_id","widget_send_client_emails","widget_send_provider_emails","send_reminder"],"properties":{"widget_send_client_emails":{"type":"integer","enum":[0,1]},"widget_send_provider_emails":{"type":"integer","enum":[0,1]},"send_reminder":{"type":"integer"}}},"currency":{"type":"string","example":"USD"},"hide_contact":{"type":"boolean","default":0},"hide_about":{"type":"boolean","default":0},"show_email":{"type":"boolean","default":0},"show_provider_image":{"type":"boolean","default":0},"providers_tab_option":{"type":"string","example":"2"},"select_single_service":{"type":"boolean","default":1},"default_calendar_view":{"type":"string","enum":["d","w"],"default":"d"},"month_view_availability":{"type":"integer","example":1},"email_confirmation":{"type":"integer","example":1},"book_another_appointment":{"type":"boolean","default":0},"display_google_map_on_locations":{"type":"boolean","default":0},"hide_timezone_alert":{"type":"boolean","example":0},"select_single_location":{"type":"boolean","default":1},"show_in_host_or_client_time":{"type":"boolean","default":0},"email_timezone_alert":{"type":"boolean","default":0},"widget_customBookingFields":{"type":"string","example":"a:4:{s:13:\\"provider_date\\";i:1;s:13:\\"provider_time\\";i:1;s:8:\\"location\\";i:1;s:7:\\"service\\";i:1;}"},"enable_mobile_widget":{"type":"boolean","default":1},"any_available_provider":{"type":"string","example":"1"},"show_staff_photo":{"type":"boolean","example":1},"auto_confirm":{"type":"boolean","example":0},"prior_notice":{"type":"integer","example":0},"prior_cancel_appointment":{"type":"integer","example":0},"prior_reschedule_appointment":{"type":"integer","example":0},"duration_padding":{"type":"integer","example":30},"start_step":{"type":"integer","example":0},"after_notice":{"type":"integer","example":0},"allow_cash_payment":{"type":"boolean","example":0},"waiting_list":{"type":"boolean","example":0},"layout_params":{"type":"string","example":"a:5:{s:14:\\"overlay_option\\";s:7:\\"overlay\\";s:8:\\"position\\";s:5:\\"right\\";s:11:\\"button_name\\";s:11:\\"Appointment\\";s:12:\\"button_color\\";s:6:\\"ff0000\\";s:13:\\"locations_map\\";i:0;}"},"style_params":{"type":"string","default":""},"new_style":{"type":"integer","example":1},"new_mobile_style":{"type":"integer","example":1},"widget_send_client_emails":{"type":"boolean","example":1},"widget_send_provider_emails":{"type":"boolean","example":1},"send_reminder":{"type":"boolean","example":24},"notify_app_unconfirmed":{"type":"boolean","example":1},"send_to_contact":{"type":"boolean","example":0},"notify_app_unpaid":{"type":"boolean","example":1},"lang":{"type":"string","default":"en"},"timezone_id":{"type":"integer","example":553},"currenciesStripe":{"type":"array","items":{"type":"string"},"example":["AED","AFN","ALL"]},"currenciesPaypal":{"type":"array","items":{"type":"string"},"example":["AED","AFN","ALL"]},"stripe_client_id":{"type":"string","example":"ca_3zSQAHuNlO64Jsfg45Tk8vdfg2A"}}},"AccountPersonalInfo":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Contact of the main and default employee. Together with the password is used as user name"},"password":{"type":"string","format":"password","description":"Used along with the account email","example":"i39j02ksnfj40f"},"first_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"last_name":{"type":"string","description":"Personal info for the main/default employee","example":""},"phone":{"type":"string","description":"Business phone","example":""}}},"Location":{"type":"object","required":["company_id","name"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the location","example":12345,"readOnly":true},"name":{"type":"string","description":"Name of the location","example":"Spa center"},"description":{"type":"string","description":"Description of the location","default":""},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that owns the location. Field is writable when entity is owned by child accounts.","example":432},"is_main":{"type":"boolean","readOnly":true,"default":false,"description":"Whether this is the main location for the company (the location created on registration)"},"virtual":{"type":"boolean","default":false},"street1":{"type":"string","description":"Address line 1","example":"13 Beverly"},"street2":{"type":"string","description":"Address line 2","example":""},"city":{"type":"string","description":"City","example":"New York"},"state":{"type":"string","description":"State","example":"NY"},"zip":{"type":"string","description":"Zip","example":"10501"},"country":{"type":"string","description":"Country","example":""},"photo":{"type":"string","format":"uri","description":"Photo URL","example":""},"phone":{"type":"string","description":"Phone number","default":""},"email":{"type":"string","format":"email","description":"Email address"},"website":{"type":"string","format":"uri","description":"Website URL","example":""},"tags":{"type":"string","default":""},"paypal_email":{"type":"string","format":"email","description":"The PayPal account used for payments for the appointments that are booked on this location. If empty, the company account will be used."},"timezone_id":{"type":"string","description":"The ID of the time zone","example":553},"lat":{"type":"number","format":"float","description":"The latitude of the location automatically calculated based on its address"},"lng":{"type":"number","format":"float","description":"The longitude of the location automatically calculated based on its address"},"update_lat_lng":{"type":"boolean","description":"Available only on update. If true (1) then the lat and lng values will be automatically calculated","default":false,"writeOnly":true},"ord":{"type":"integer","default":0,"readOnly":true},"links":{"anyOf":[{"type":"string"},{"type":"object"}],"description":"Links with employees and services.\\n\\nIf *links: \\\\\\"all\\\\\\"*, all providers and services will be linked to this location.\\n\\nIf *links: {EMPLOYEE_ID: \\\\\\"all\\\\\\"}*, all services will be linked to this location for the provider with EMPLOYEE_ID id.\\n\\nIf *links: {\\\\\\"all\\\\\\": {SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }}*, the services with id\'s SERVICE_ID_1, SERVICE_ID_2, ... will be linked to this location for all the providers\\n\\
1nIf *links: {\\\\\\"EMPLOYEE_ID_1\\\\\\": { SERVICE_ID_1: 1, SERVICE_ID_2: 1, ... }, \\\\\\"EMPLOYEE_ID_2\\\\\\": { SERVICE_ID_3: 1, SERVICE_ID_4: 1, ... }, ... }*, the specified services will be linked with the specified providers\\n","example":{"344":{"4433":1,"4823":1},"345":"all","all":{"4532":1,"5432":1}},"writeOnly":true}}},"Employee":{"type":"object","required":["company_id","email","first_name","last_name","links"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the employee","example":1234,"readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company of the employee. Field is writable when entity is owned by child account.","example":3214},"email":{"type":"string","format":"email","description":"Unique Email address of the employee"},"first_name":{"type":"string","description":"First Name","example":"John"},"last_name":{"type":"string","description":"Last Name","example":"Doe"},"job":{"type":"string","description":"Job name","example":"Accountant"},"bio":{"type":"string","description":"Bio"},"phone":{"type":"string","description":"Phone number","example":""},"photo_url":{"type":"string","format":"uri","description":"Photo URL","example":""},"public_email":{"type":"boolean","description":"Whether or not the employee\'s email will be displayed on the widget","default":false},"public_phone":{"type":"boolean","default":false},"status":{"type":"boolean","description":"Employee status: active / inactive","default":false},"username":{"type":"string","description":"Automatically generated based on the first and last names","example":"","readOnly":true},"nickname":{"type":"string","description":"Unique nickname per company. May contain only letters, digits, the dot character and the underline character.","example":""},"linkedin":{"type":"string","format":"uri","description":"LinkedIn URL","default":""},"yelp":{"type":"string","format":"uri"},"pinterest":{"type":"string","format":"uri"},"vimeo":{"type":"string","format":"uri"},"youtube":{"type":"string","format":"uri"},"twitter":{"type":"string","format":"uri","description":"Twitter URL","example":""},"facebook":{"type":"string","format":"uri","description":"Facebook URL","example":""},"receivesms":{"type":"boolean","description":"If true (1) then the employee will receive an SMS message informing them about new appointments","default":false},"sms_email":{"type":"string","format":"email","description":"The SMS service to be used in the following format: [email protected]. Note: the number keyword will be replaced with the employee\'s phone number before the SMS is sent.","example":"[email protected]"},"intuit_user_id":{"type":"string"},"ipp_mode":{"type":"integer"},"intuit_auth_id":{"type":"string"},"intuit_db_id":{"type":"string"},"intuit_realm_id":{"type":"string"},"intuit_ticket_id":{"type":"string"},"newsletter":{"type":"integer"},"is_owner":{"type":"boolean","description":"Whether the employee is the owner of the company (the employee created at signup). By updating the value for a created employee, areas from permissions can be managed for (all - 1/own - 0) account(s)","default":false,"readOnly":true},"ics_service":{"type":"integer","format":"int32","description":"Import calendar source type. Possible values: 0 - Not set 1 - Google 2 - Outlook or other public URL calendar source (ics) 3 - Exchange","default":0,"enum":[0,1,2,3]},"ics_export_service":{"type":"integer","format":"int32","description":"Export calendar source type. Possible values: 0 - Not set 1 - Outlook 2 - Ical 3 - Google 4 - Yahoo 5 - MSN 6 - ICalDav","enum":[0,1,2,3,4,5,6],"default":0},"ics_url":{"type":"string","format":"uri","description":"iCalendar public url used as import source."},"ics_export_hash":{"type":"string"},"google_export_canceled":{"type":"integer","default":0},"google_export_add_pt":{"type":"integer","default":0},"ord":{"type":"integer","readOnly":true,"default":0},"ics_export_url":{"type":"string","description":"iCalendar public url used as export source.","readOnly":true},"permissions":{"type":"string","description":"Lable(s) for different application sections. In order to set permission an employee must have a user(can_login - 1). Possible values: locations, providers, services, availability, appointments, get_widget, promote, clients, overview, calendar, settings, profile, account","example":"locations, providers"},"can_login":{"type":"boolean","description":"Whether the employee can login to his account or not. An employee that cannot login
1will not have access to the API.","readOnly":true,"example":1},"password":{"type":"string","writeOnly":true},"send_invite_email":{"type":"boolean","description":"Available only when creating a new employee - will send an email to the email address of the newly created employee","writeOnly":true},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer"}}},"writeOnly":true,"description":"Links with locations and services","example":{"[LOCATION_ID]":{"[SERVICE_ID]":1}}}}},"EmployeeAvailability":{"type":"object","required":["repeat","type","start_date","end_date","days"],"properties":{"repeat":{"type":"integer","enum":[1,2],"description":"1 - weekly/ 2 - Date interval","example":1},"type":{"type":"boolean","description":"0 - Available/ 1 - Out of Office","example":0},"start_date":{"type":"string","format":"date","example":"12/1/2015"},"end_date":{"type":"string","format":"date","example":"12/31/2015"},"location_id":{"type":"integer","description":"optional for single location enabled","example":2144},"days":{"type":"object","example":{"mo":{"time":[["10:00","18:00"],["22:00","23:00"]]},"tu":{"time":[["14:00","18:00"],["20:00","23:00"]]}}}}},"Service":{"type":"object","required":["company_id","name","duration"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the service","readOnly":true,"example":1234},"name":{"type":"string","description":"The name of the service","example":"Default service"},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the service belongs to. Field is writable when entity is owned by child account","example":5678},"duration":{"type":"integer","format":"int32","multipleOf":15,"description":"The duration of the service in minutes","default":60},"description":{"type":"string","description":"The description of the service","example":"This service should be used in testing only"},"auto_confirm":{"type":"boolean","description":"If true (1) then the appointments made for the service will be automatically confirmed. If false (0) then the appointments must be confirmed by the provider.","default":false},"is_subservice":{"type":"boolean","description":"If true (1) the service will be an additional service, otherwise it will be a base service.","default":false},"require_addon":{"type":"integer","description":"If set to 1, requires at least one add-on (subservice) to be selected when booking this service. Only enforced if the service has linked add-ons. Uses global default from widget_settings unless service has active_rules=1.","enum":[0,1],"default":0},"duration_padding":{"type":"integer","format":"int32","multipleOf":5,"description":"The minimum number of minutes between two adjacent appointments","default":0},"max_clients":{"type":"integer","default":0},"prior_notice":{"type":"integer","description":"The minimum number of hours the appointment has to be scheduled before the scheduled time","default":0},"after_notice":{"type":"integer","description":"The maximum number of days the appointment has to be scheduled after the scheduled time","default":0},"cancel_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can cancel the appointment. If 0 the client cannot cancel the appointment.","default":0},"reschedule_appointment":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"send_reminder":{"type":"integer","description":"The minimum number of hours before the appointment until the client can reschedule the appointment. If 0, the client cannot reschedule.","default":0},"start_step":{"type":"integer","multipleOf":5,"description":"Number of minutes.\\nIf this field has a value different than 0, then the clients can choose any start time (in increments equal to the value of the field) for their appointment in the availability zone.\\nIf the value of the field is 0, then the clients can select only predefined time slots for the appointments.\\n","default":0},"set_schedule":{"type":"boolean","description":"If `true` the service can only be performed on the schedule times. If `true`, availability can be added to the service through the `schedule` field","default":false},"schedule":{"type":"array","items":{"type":"object","properties":{"repeat":{"type":"integer","enum":[0,1,2],"description":"0 - one-time event / 1 - weekly / 2 - monthly","example":1},"start_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`","example":"01/06/2019"},"start_time":{"type":"object","description":"the start hour in the day","example":{"hour":9,"min":0,"am":"am"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"end_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`. Used only if `repeat = 1` or `repeat = 2`","example":"01/12/2019"},"end_time":{"type":"object","description":"the end hour in the day","example":{"hour":5,"min":0,"am":"pm"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"days":{"type":"object","example":{"2":1,"3":1,"4":1,"5":1,"6":1},"additionalProperties":{"type":"integer"},"description":"A list of day numbers for the days when the service is available, of the form: `{\\"index1\\": 1,\\"index2\\": 1,...}`.\\nIgnored when repeat = 0. If `repeat = 1`, `index1, index2,...` represents the day number in the week.\\nIf `repeat = 2`, it represents the day number in the month.\\n"}}},"description":"The service can only be performed on the following times. The `set_schedule` needs to be set to `true` for this field to be considered."},"links":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"writeOnly":true,"description":"Links with locations and employees.\\nThe links property may contain more than one of the above structures:\\n{\\"[EMPLOYEE_ID]\\" : {\\"[LOCATION_ID]\\":1}}\\n","example":{"13367":{"16982":1,"19281":0,"19387":0,"19540":0}}},"price":{"type":"number","format":"float","description":"The price of the service","default":0},"payment_min_amount":{"type":"number","format":"double","description":"The minimum amount required for the payment to be valid","default":0},"allow_cash_payment":{"type":"boolean","description":"Whether or not to allow the client to skip the online payment and pay with cash","default":false},"group_session":{"type":"integer","default":0,"description":"The number of appointments that can be scheduled in the same time slot."},"waiting_list":{"type":"integer","default":0},"client_instructions":{"type":"string","description":"The message sent to the client in the confirmation email (after the client verifies his/her email address)"},"widget_message":{"type":"string","description":"The message displayed on the widget after the client books an appointments"},"password":{"type":"string"},"ord":{"type":"integer","description":"The order number of the service","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true,"description":"The time when the service was created"},"active_from":{"type":"string","format":"date","nullable":true,"description":"The date when the service starts to show up on the widget. If this field is null, then there will be no limit on the start date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_until":{"type":"string","format":"date","nullable":true,"description":"The date when the service stops being displayed on the widget. If this field is null, then there will be no limit on the end date.\\n\\nTo set the field to null, set it to the empty string when updating the service.\\n"},"active_interval_status":{"type":"boolean","default":true},"status":{"type":"boolean","description":"If 0 the service will not appear on the widget.","default":true},"active_rules":{"type":"integer","default":1},"photo":{"type":"string"}}}
1,"ServiceSchedule":{"type":"object","properties":{"repeat":{"type":"integer","enum":[0,1,2],"description":"0 - one-time event / 1 - weekly / 2 - monthly","example":1},"start_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`","example":"01/06/2019"},"start_time":{"type":"object","description":"the start hour in the day","example":{"hour":9,"min":0,"am":"am"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"end_date":{"type":"string","format":"date","description":"a date string with the format `day/month/year`. Used only if `repeat = 1` or `repeat = 2`","example":"01/12/2019"},"end_time":{"type":"object","description":"the end hour in the day","example":{"hour":5,"min":0,"am":"pm"},"required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"days":{"type":"object","example":{"2":1,"3":1,"4":1,"5":1,"6":1},"additionalProperties":{"type":"integer"},"description":"A list of day numbers for the days when the service is available, of the form: `{\\"index1\\": 1,\\"index2\\": 1,...}`.\\nIgnored when repeat = 0. If `repeat = 1`, `index1, index2,...` represents the day number in the week.\\nIf `repeat = 2`, it represents the day number in the month.\\n"}}},"Appointment":{"type":"object","required":["company_id","client_email","client_name","service_id","start_date"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique ID of the appointment","example":2342},"client_id":{"type":"integer","format":"int64","readOnly":true,"description":"The ID of the client that made the appointment","example":23113},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the appointment belongs to. Field is writable when entity is owned by child account","example":3123},"client_email":{"type":"string","format":"email","description":"The email of the client that made the appointment"},"client_name":{"type":"string","description":"The client name","example":"Test Client"},"client_phone":{"type":"string","description":"The client phone number","example":"12345678"},"client_address":{"type":"string","description":"The client address"},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee (provider) that the appointment is made for","example":12412},"provider_email":{"type":"string","format":"email","description":"The email of the provider/employee that the appointment was made for","example":"[email protected]"},"location_id":{"type":"integer","format":"int64","description":"The ID of the location where the appointment will take place at","example":54232},"service_id":{"type":"integer","format":"int64","description":"The ID of the service that the appointment is made for","example":453},"start_date":{"type":"string","example":"2019-09-01 12:00","description":"The date and time when the appointment is scheduled to start.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"end_date":{"type":"string","readOnly":true,"example":"2019-09-01 13:00","description":"The date and time when the appointment is scheduled to end.\\nThe time is local to the company timezone or the location timezone (if the location is in a different timezone).\\nThe format of the date is `yyyy-mm-dd hh:mm:ss`\\n"},"length":{"type":"integer","readOnly":true,"description":"The duration of the appointment (in milliseconds). Example: 30 minutes = 1800000 milliseconds.","example":1800000},"duration":{"type":"integer","format":"int32","writeOnly":true,"multipleOf":15,"description":"The duration of the appointment in minutes","default":15},"duration_padding":{"type":"integer","description":"The appointment time padding (in seconds) - the number of seconds, before and after an appointment, that cannon be used for another appointment","readOnly":true,"default":0},"note":{"type":"string","description":"Custom client message","nullable":true},"status":{"type":"integer","description":"Appointment status. Possible values:\\n\\n - 0 - waiting email confirmation from the client\\n - 1 - email confirmed but not validated by the admin/provider\\n - 2 - email confirmed and validated or paid\\n - 3 - declined or canceled\\n - 4 - busy time imported from external sources (e.g. google)\\n - 6 - busy time imported from Zapier\\n - 8 - completed\\n - 9 - no show (the scheduled event did not take place)\\n - 10 - in progress\\n - 11 - checked in\\n - 12 - just arrived\\n - 13 - delayed\\n","enum":[0,1,2,3,4,6,8,9,10,11,12,13]},"type":{"type":"string","description":"The name of the service with ID service_id","readOnly":true},"last_updated":{"type":"string","format":"date-time","description":"The date and time when the latest change was made to the appointment","example":"2024-03-15 16:00:50","readOnly":true},"created_at":{"type":"string","format":"date-time","example":"2024-03-15 16:00:50","readOnly":true},"subservices":{"type":"string","description":"IDs of sub services that were selected for the appointment separated by comma"},"paid":{"type":"boolean","description":"Whether the appointment has been paid or not, if the service requires a payment.","default":false},"price":{"type":"integer","default":0},"ews_id":{"type":"string","deprecated":true,"default":""},"custom_fields":{"type":"object","deprecated":true,"additionalProperties":{"x-additionalPropertiesName":"field index","description":"The `field index` is an integer string custom_fields object property name and represents the order of the booking form fields displayed in your [dashboard]((https://www.setster.com/admin/settings/customize/booking-form/). The field index count starts with the first field sown with a `key` value under it.\\n\\n**<u>NOTICE</u>**\\n**The field index count excludes the default uneditable fields Full Name and Email.**\\n\\n**Example:** The first field shown in your [dashboard](https://www.setster.com/admin/settings/customize/booking-form/) with a `key` under it would have the field index of `\\"1\\"`. The second field with a `key` under it would have a field index of `\\"2\\"` and so on.\\n\\nDeleting or modifying a custom field may impact the field indexes. When changes are made ensure all custom_fields field indexes are still correct.","type":"array","items":[{"oneOf":[{"type":"string","title":"value","description":"The input value either filled
1in by the client at the time of booking or set upon appointment update via the API.\\n\\n*The field value can be updated only with a reschedule action.*"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.\\n\\n*The field value can be updated only with a reschedule action.*","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}}]},{"type":"string","title":"label","description":"The displayed input label of the booking form field."},{"type":"string","title":"type","description":"*Note: Only used for hidden fields.*\\n\\nSet to `\\"h\\"` if the field is hidden."}]},"description":"The values of the booking form fields filled by the client.\\n\\nCustom fields are tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).","x-example":{"1":["(01512) 793246","Work Phone"],"2":[["201 S. Division St.","500","Ann Arbor","MI","48104"],"Full Address"],"3":["123ABC","Coupon Code","h"]}},"custom_data":{"type":"object","additionalProperties":{"description":"Every form field on your booking form added in the Setster dashboard has an assigned customizable `key`. This `key` should match the property name you add to your custom_data object.\\n\\nSome address and phone field keys include a numeric value at the end like `address_1234` or `phone_1234`. Newer accounts\' address and phone field keys are `address` and `phone` by default.\\n\\nAlways confirm your fields\' key structure in your dashboard\'s booking form before adding custom data.","x-additionalPropertiesName":"key","anyOf":[{"type":"string","title":"Text","description":"A text input field. ","example":"Lorem Ipsum"},{"type":"string","title":"Multiline","description":"A multi-line input field. ","example":"Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."},{"type":"string","title":"Phone","description":"Some accounts\' phone field keys include a numeric value at the end like `phone_1234` while newer accounts\' phone field keys are `phone` by default.","example":"555-555-5555"},{"type":"string","title":"Email","description":"An email input field.","example":"[email protected]"},{"type":"string","title":"Hidden","description":"A hidden input field that allows you to add supplemental data behind the scenes.","example":"Lorem Ipsum"},{"type":"object","title":"Address","description":"Some accounts\' address field keys include a numeric value at the end like `address_1234` while newer accounts\' address field keys are `address` by default.","properties":{"street":{"type":"string","example":"1234 1st Street"},"suite":{"type":"string","example":"567"},"city":{"type":"string","example":"San Francisco"},"state":{"type":"string","example":"California"},"zip":{"type":"string","example":"12345"}}},{"type":"string","title":"Title","description":"A text input field. ","example":"Lorem Ipsum"},{"oneOf":[{"type":"string","title":"Dropdown (Single)","description":"A dropdown field with single selection. The value must be one of the options defined in the custom field configuration.","example":"Option A"},{"type":"array","title":"Dropdown (Multi)","description":"A dropdown field with multi-selection enabled. The value is an array of selected options from the options defined in the custom field configuration.","items":{"type":"string"},"example":["Option A","Option B"]}]}]},"description":"Replaces the deprecated `custom_fields` property.\\n\\nCustom data is tied to your Setster Booking Form. New custom data can be added by creating a new field in the Setster dashboard under [Booking Form](https://www.setster.com/admin/settings/customize/booking-form/).\\n\\nExpects an object c
1ontaining key values pairs where the `key` matches one of your booking form field keys and the value is any custom data value."},"timezone_short":{"type":"string","description":"The time zone short name (e.g. PST or GMT+4)","readOnly":true,"example":"GMT -05:00"},"timezone_offset_seconds":{"type":"integer","description":"The time zone offset in seconds","example":-18000,"readOnly":true},"timezone_id":{"type":"integer","format":"int32","description":"The ID of the time zone in our database","example":553}}},"CustomField":{"type":"object","required":["company_id","label","length","type","required","ord","status","visibility","readonly","hint"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the custom field","readOnly":true},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the custom field belongs to"},"label":{"type":"string","description":"The label of the custom field"},"length":{"type":"integer","description":"The max string length of the custom field"},"type":{"type":"integer","description":"Type of the custom field. Possible values:\\n\\n- 0 - text\\n- 1 - multiline\\n- 2 - phone\\n- 3 - email\\n- 4 - hidden\\n- 5 - address\\n- 6 - title\\n- 7 - dropdown\\n","enum":[0,1,2,3,4,5,6,7],"default":0},"required":{"type":"boolean","description":"If the custom field is mandatory in the booking form","default":false},"ord":{"type":"integer","description":"The order in layout"},"status":{"type":"boolean","description":"The enabled/disabled status."},"visibility":{"type":"integer","enum":[1,2,3],"description":"Places where the custom field is visible. Possible values:\\n - 1 - Appointment submit form\\n - 2 - Contact form\\n - 3 - Both forms\\n"},"readonly":{"type":"boolean","description":"The readonly property of the custom field form.","default":false},"removable":{"type":"boolean","default":false},"readonly_type":{"type":"integer"},"hint":{"type":"string","description":"The hint property of the custom field form"},"options":{"type":"string","description":"Dropdown options stored as a pipe-delimited string. Required when type is 7 (dropdown). Example: `Option1|Option2|Option3`","example":"Option A|Option B|Option C"},"multiselect":{"type":"integer","description":"For dropdown fields (type 7), determines if multiple options can be selected. 0 = single select, 1 = multi-select.","enum":[0,1],"default":0}}},"Client":{"type":"object","required":["company_id","employee_id","email","name"],"properties":{"client_id":{"type":"integer","format":"int64","description":"Unique ID of the client","readOnly":true,"example":3213},"company_id":{"type":"integer","format":"int64","description":"The ID of the company that the client belongs to","readOnly":true,"example":24232},"employee_id":{"type":"integer","format":"int64","description":"The ID of the employee that the client is associated with","readOnly":true,"example":5323},"email":{"type":"string","format":"email","description":"The email of the client"},"name":{"type":"string","description":"The full name of the client","example":"Test Client"},"phone":{"type":"string","description":"Client\'s phone number","example":"3445323523"},"last_app_date":{"type":"string","format":"date-time","description":"The date and time of the last appointment made by the client","readOnly":true},"date_created":{"type":"string","format":"date-time","description":"The date and time when the record was created.","readOnly":true},"notes":{"type":"string"},"preferences":{"type":"string"},"address":{"type":"string","description":"Client\'s address","example":"City country"},"address2":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zip":{"type":"string"},"country":{"type":"string"},"gender":{"type":"string","nullable":true,"enum":["m","f"],"description":"The gender of the client"},"birthday":{"type":"string","format":"date","description":"Only the day and month are relevant"},"cient_since":{"type":"string","format":"date","description":"The date the client first scheduled an appointment or was created. This field is editable.\\n"},"accept_emails":{"type":"boolean","description":"Whether or not the client accepts email marketing"},"photo":{"type":"string","description":"The base name of the photo file. If not null or empty, it can be used to get the client photo:\\n- `small`: 65x65 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/s_[photo]\\n- `medium`: 100x100 (cropped to aspect ratio) https://www.setster.com/admin/images/clients/m_[photo]\\n- `large`: 300x300 (not cropped) https://www.setster.com/admin/images/clients/l_[photo]\\n"}}},"Holiday":{"type":"object","required":["company_id"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the holiday","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","example":24232},"name":{"type":"string","example":"Christmas"},"type":{"type":"integer","enum":[1,2],"description":"The type of the holiday:\\n* `1` - holidays that have variable dates. Example: Thanksgiving, which is celebrated in U.S. on the fourth Thursday in November\\n* `2` - holidays with fixed dates. Example: Christmas\\n"},"start_date":{"type":"string","format":"date-time","example":"2018-12-25 00:00:00","description":"The date and time when the holiday starts. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"end_date":{"type":"string","format":"date-time","example":"2018-12-26 23:59:59","description":"The date and time when the holiday ends. It can be used in the request for creating or updating holidays only for holidays with `type = 2`. For holidays with `type = 1`, the start date is calculated based on the values of `day_in_week`, `month` and `day_order`"},"day_in_week":{"type":"integer","enum":[0,1,2,3,4,5,6],"description":"The number of weekday. Only for holidays with `type = 1`.\\n* `0` - Monday\\n* `1` - Tuesday\\n* ...\\n* `6` - Sunday\\n"},"month":{"type":"integer","enum":[0,1,2,3,4,5,6,7,8,9,10,11],"description":"The number of weekday. Only for holidays with `type = 1`\\n* `0` - January\\n* `1` - February\\n* ...\\n* `11` - December\\n"},"day_order":{"type":"integer","enum":[0,1,2,3,4],"description":"The order number of the weekday selected by `week_in_day` in the month
1selected by `month`. Only for holidays with `type = 1`\\n* `0` - First\\n* `1` - Second\\n* `2` - Third\\n* `3` - Fourth\\n* `4` - Last\\n"},"year":{"type":"integer","readOnly":true,"description":"The current year. Only for holidays with `type = 1`"},"caption":{"type":"string","readOnly":true,"example":"Dec 25th 2018 (Christmas)"},"enabled":{"type":"number","enum":[0,1],"default":1},"timestamp":{"type":"number","description":"The timestamp of the holiday\'s start date in the current year","example":1542844800}}},"AvailabilityDetails":{"type":"object","properties":{"interval":{"type":"integer","format":"int32","description":"The length (in minutes) of the appointment","example":60},"boxInterval":{"type":"integer","format":"int32","description":"Relevant only if return=boxes and represents the number of minutes in one box","example":5},"padding":{"type":"integer","format":"int32","description":"Relevant only if return=boxes and represents the number of minutes between two adjacent appointments","example":0},"day":{"type":"integer","format":"int32","description":"Selected day","example":15},"month":{"type":"integer","format":"int32","description":"Selected month","example":8},"year":{"type":"integer","format":"int32","description":"Selected year","example":2012},"times":{"type":"array","description":"Hash table of the start times of the available appointment slots, grouped by date","items":{"type":"string","example":"09:00:00"}}}},"Time":{"type":"object","required":["hour","min","am"],"properties":{"hour":{"type":"integer","example":9},"min":{"type":"integer","example":0},"am":{"type":"string","enum":["am","pm"],"example":"am"}}},"TimeZone":{"type":"object","properties":{"gmt":{"type":"integer","format":"int32","description":"Offset value in seconds","example":-240},"caption":{"type":"string","description":"Description","example":"GMT -04:00 US/Canada/Eastern, Colombia, Peru (EDT)"},"dbName":{"type":"string","description":"Mysql standard name","example":"US/Eastern"},"short":{"type":"string","description":"Short description","example":"GMT -04:00"},"friendly":{"type":"string","description":"Short/friendly description","example":"GMT-04:00"}}},"WriteWebhook":{"type":"object","required":["company_id","target_url"],"properties":{"company_id":{"type":"integer","format":"int64","description":"The ID of the company","example":24232},"target_url":{"type":"string","format":"uri","default":""},"events":{"type":"array","description":"The list of events. The currently supported events are:\\n\\n 1. `appointment.created`\\n 2. `appointment.updated`\\n 3. `appointment.deleted`\\n 4. `appointment.rescheduled`\\n 5. `appointment.reminder`\\n 6. `appointment.canceled`\\n 7. `*`\\n\\n The \\"`*`\\" event means that you will subscribe to all currently supported\\n events as well as future added events.\\n","example":["appointment.created",{"event":"appointment.rescheduled","active":0}],"items":{"oneOf":[{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","appointment.canceled","*"]},{"type":"object","properties":{"event":{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","appointment.canceled","*"]},"active":{"type":"integer","enum":[0,1],"default":1}}}]}},"active":{"type":"integer","enum":[0,1],"default":1}}},"ReadWebhook":{"type":"object","required":["company_id","target_url"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the Webhook subscriber","readOnly":true,"example":13425},"company_id":{"type":"integer","format":"int64","description":"The ID of the company","example":24232},"target_url":{"type":"string","format":"uri","default":""},"events":{"type":"array","readOnly":true,"description":"The list of events","items":{"type":"object","properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the Webhook event","readOnly":true,"example":13425},"event":{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","appointment.canceled","*"]},"active":{"type":"integer","enum":[0,1],"default":1},"created_at":{"type":"string","format":"date-time","readOnly":true}}}},"active":{"type":"integer","enum":[0,1],"default":1},"verification_key":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}}},"WebhookEvent":{"type":"object","properties":{"id":{"type":"integer","format":"int64","description":"Unique ID of the Webhook event","readOnly":true,"example":13425},"event":{"type":"string","example":"appointment.created","enum":["appointment.created","appointment.updated","appointment.deleted","appointment.rescheduled","appointment.reminder","appointment.canceled","*"]},"active":{"type":"integer","enum":[0,1],"default":1},"created_at":{"type":"string","format":"date-time","readOnly":true}}},"ResponseStatus":{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","description":"Status of the operation","example":0,"enum":[{"OK":0,"INVALID_PARAMETERS":1,"INVALID_CREDENTIALS":2,"ACCOUNT_NOT_ACTIVE":3,"INTERNAL_ERROR":4,"ERROR_SAVING_ENTITY":5,"ERROR_DELETING":6,"NOT_FOUND":7,"NOT_ALLOWED":8,"SLOT_NOT_AVAILABLE":9,"SLOT_OCCUPIED":10,"ACCOUNTS_LIMIT_REACHED":11}]},"statusDescriptions":{"type":"string","example":"OK","description":"Description of the status"}}},"UploadedFile":{"type":"object","properties":{"upload_id":{"type":"integer","format":"int64","example":32412},"file_name":{"type":"string","example":"avatar.png"},"file_location":{"type":"string","example":"/admin/images/clients/"}}}}}}}')}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.