{
  "swagger": "2.0",
  "info": {
    "version": "4",
    "title": "Brickwork Software API",
    "description": "The Brickwork Software API v4 (BETA) provides an interface for managing appointments, user and service availability, customers of appointments, transactions, and appointment related notifications information in Brickwork. This API will need to be used in conjunction with the Brickwork v3 API, which remains the primary interface for managing users, events & RSVPs, customers of events, services, questions, features, and store infomation and can be found at http://production.brickworksoftware.com/api_docs/.\n\nExample\n  curl -i https://api.brickworksoftware.com/v4/customers \\\n    -H \"Authorization: Bearer mytoken123\"\n",
    "x-logo": {
      "url": "https://www.brickworksoftware.com/wp-content/themes/marketing/img/assets/logo.svg"
    }
  },
  "host": "api.brickworksoftware.com",
  "basePath": "/v4",
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "securityDefinitions": {
    "Bearer": {
      "type": "apiKey",
      "name": "Authorization",
      "in": "header"
    }
  },
  "paths": {
    "/appointments": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Retrieve all existing appointments.",
        "summary": "Get Appointments",
        "tags": [
          "appointments"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/QueryId"
          },
          {
            "$ref": "#/parameters/QueryScheduledStartDate"
          },
          {
            "$ref": "#/parameters/QueryScheduledEndDate"
          },
          {
            "$ref": "#/parameters/QueryActualStartDate"
          },
          {
            "$ref": "#/parameters/QueryActualEndDate"
          },
          {
            "$ref": "#/parameters/QueryStartDateRange"
          },
          {
            "$ref": "#/parameters/QueryEndDateRange"
          },
          {
            "$ref": "#/parameters/QueryPerPage"
          },
          {
            "$ref": "#/parameters/QueryPageAfter"
          },
          {
            "$ref": "#/parameters/QueryOrderBy"
          },
          {
            "$ref": "#/parameters/QueryOrder"
          },
          {
            "$ref": "#/parameters/QueryOrganizationId"
          },
          {
            "$ref": "#/parameters/QueryAppointmentStatus"
          },
          {
            "$ref": "#/parameters/QueryResourceUriIndex"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundAppointmentArray"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "post": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Create a new appointment.",
        "summary": "Create an Appointment",
        "tags": [
          "appointments"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/AppointmentBodyPost"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleAppointment"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/appointments/{id}": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Retrieve a specific appointment.",
        "summary": "Get Appointment",
        "tags": [
          "appointments"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Id"
          },
          {
            "$ref": "#/parameters/QueryMock"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundSingleAppointment"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "patch": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Update a specific appointment.",
        "summary": "Update Appointment",
        "tags": [
          "appointments"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Id"
          },
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/AppointmentBodyPatch"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleAppointment"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/appointments/{appointmentId}/answers": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Get all existing answers",
        "summary": "Get answers",
        "tags": [
          "answers"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/QueryId"
          },
          {
            "$ref": "#/parameters/AppointmentId"
          },
          {
            "$ref": "#/parameters/QueryQuestionId"
          },
          {
            "$ref": "#/parameters/QueryCustomerId"
          },
          {
            "$ref": "#/parameters/QueryQuestionKey"
          },
          {
            "$ref": "#/parameters/QueryQuestionType"
          },
          {
            "$ref": "#/parameters/QueryPerPage"
          },
          {
            "$ref": "#/parameters/QueryPageAfter"
          },
          {
            "$ref": "#/parameters/QueryOrderBy"
          },
          {
            "$ref": "#/parameters/QueryOrder"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundAnswerArray"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "post": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Create an answer",
        "summary": "Create an answer",
        "tags": [
          "answers"
        ],
        "operationId": "createAnswer",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/AppointmentId"
          },
          {
            "$ref": "#/parameters/AppointmentAnswerBodyPost"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleAnswer"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/appointments/{appointmentId}/answers/{id}": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Get an answer by UUID",
        "summary": "Get answer",
        "tags": [
          "answers"
        ],
        "operationId": "getAnswer",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Id"
          },
          {
            "$ref": "#/parameters/AppointmentId"
          },
          {
            "$ref": "#/parameters/QueryMock"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleAnswer"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "patch": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "update an answer by UUID",
        "summary": "Update Answer",
        "tags": [
          "answers"
        ],
        "operationId": "updateAnswer",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Id"
          },
          {
            "$ref": "#/parameters/AppointmentId"
          },
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/AppointmentAnswerBodyPatch"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleAnswer"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/authentication/refresh": {
      "post": {
        "description": "Refresh Token route for unexpired tokens, token expires in 1 hour, the max age of the token is set at 2 days",
        "summary": "Refresh Token endpoint",
        "tags": [
          "authentication"
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/JwtResponseSimple"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/authentication/legacy": {
      "post": {
        "description": "Authenticate using basic authentication (legacy api), token expires in 1 hour, the max age of the token is set at 2 days",
        "summary": "Basic Authentication endpoint (legacy api)",
        "tags": [
          "authentication"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/BasicAuthBody"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/JwtResponseSimple"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/customers": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Retrieve all existing customers that were created via this API. Customers created through APIv3 (http://production.brickworksoftware.com/api_docs/) are not included.",
        "summary": "Get Customers",
        "tags": [
          "customers"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryId"
          },
          {
            "$ref": "#/parameters/QueryFirstName"
          },
          {
            "$ref": "#/parameters/QueryLastName"
          },
          {
            "$ref": "#/parameters/QueryEmail"
          },
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/QueryPerPage"
          },
          {
            "$ref": "#/parameters/QueryPageAfter"
          },
          {
            "$ref": "#/parameters/QueryOrder"
          },
          {
            "$ref": "#/parameters/QueryOrderBy"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundCustomerArray"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "post": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Create a new customer. When creating a customer you should include at least one of either `email`, `phoneNumber` or `firstName & lastName`.",
        "summary": "Create customer",
        "tags": [
          "customers"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/CustomerBody"
          },
          {
            "$ref": "#/parameters/QueryMock"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundCustomerSingle"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/customers/{id}": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Retrieve a specific customer.",
        "summary": "Get Customer",
        "tags": [
          "customers"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Id"
          },
          {
            "$ref": "#/parameters/QueryMock"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundCustomerSingle"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "patch": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Update an existing customer.",
        "summary": "Update Customer",
        "tags": [
          "customers"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Id"
          },
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/CustomerBody"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundCustomerSingle"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/hours": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Get all existing availability.",
        "summary": "Get Hours",
        "tags": [
          "hours"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/QueryResourceUriIndex"
          },
          {
            "$ref": "#/parameters/QueryPerPage"
          },
          {
            "$ref": "#/parameters/QueryPageAfter"
          },
          {
            "$ref": "#/parameters/QueryDate"
          },
          {
            "$ref": "#/parameters/QueryDayOfWeek"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundHourArray"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "post": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Create a new availability",
        "summary": "Create Hour",
        "tags": [
          "hours"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/HourPostBody"
          },
          {
            "$ref": "#/parameters/QueryMock"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleHour"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/hours/resourceTimeslots": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Retrieve available timeslots for a specific resource URI.",
        "summary": "Get Resource Timeslots",
        "tags": [
          "hours"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/QueryResourceUri"
          },
          {
            "$ref": "#/parameters/QueryStartDateTime"
          },
          {
            "$ref": "#/parameters/QueryInclude"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundResourceTimeslotArray"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/hours/{id}": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Retrieve a specific availability record.",
        "summary": "Get Hour",
        "tags": [
          "hours"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/HourId"
          },
          {
            "$ref": "#/parameters/QueryMock"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundSingleHour"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "delete": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Delete a specifific availability record.",
        "summary": "Delete Hour",
        "tags": [
          "hours"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/HourId"
          },
          {
            "$ref": "#/parameters/QueryMock"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/DeleteResponse"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "patch": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Update a specific availability record.",
        "summary": "Update Hour",
        "tags": [
          "hours"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/HourId"
          },
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/HourPatchBody"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleHour"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/notifications/actions": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Get all existing actions.",
        "summary": "Get Actions",
        "tags": [
          "notifications"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/QueryId"
          },
          {
            "$ref": "#/parameters/QueryOrganizationId"
          },
          {
            "$ref": "#/parameters/QueryPerPage"
          },
          {
            "$ref": "#/parameters/QueryPageAfter"
          },
          {
            "$ref": "#/parameters/QueryOrder"
          },
          {
            "$ref": "#/parameters/QueryOrderBy"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundActionArray"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "post": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Create a new action.",
        "summary": "Create Action",
        "tags": [
          "notifications"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/ActionBody"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleAction"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/notifications/actions/{id}": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Get an exisiting action by UUID.",
        "summary": "Get a single Action",
        "tags": [
          "notifications"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/Id"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundSingleAction"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "patch": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Update an existing action by UUID",
        "summary": "Update Action",
        "tags": [
          "notifications"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Id"
          },
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/ActionBody"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleAction"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/notifications/templates": {
      "x-swagger-router-controller": "templates",
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Get all existing templates",
        "summary": "Get Templates",
        "tags": [
          "notifications"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/QueryId"
          },
          {
            "$ref": "#/parameters/QueryOrganizationId"
          },
          {
            "$ref": "#/parameters/QueryPerPage"
          },
          {
            "$ref": "#/parameters/QueryPageAfter"
          },
          {
            "$ref": "#/parameters/QueryOrder"
          },
          {
            "$ref": "#/parameters/QueryOrderBy"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundTemplateArray"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "post": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Create a new template",
        "summary": "Create Template",
        "tags": [
          "notifications"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TemplatePostBody"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleTemplate"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/notifications/templates/{id}": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Get an exisiting template by UUID",
        "summary": "Get a single Template",
        "tags": [
          "notifications"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/Id"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundSingleTemplate"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "patch": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Update an existing template by UUID",
        "summary": "Update Template",
        "tags": [
          "notifications"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/Id"
          },
          {
            "$ref": "#/parameters/TemplatePatchBody"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleTemplate"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/notifications/event_types": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Retrieve all event types.",
        "summary": "Get Event Types",
        "tags": [
          "notifications"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/QueryPerPage"
          },
          {
            "$ref": "#/parameters/QueryPageAfter"
          },
          {
            "$ref": "#/parameters/QueryOrder"
          },
          {
            "$ref": "#/parameters/QueryOrderBy"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundEventTypeArray"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/transactions": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Retrieve all existing transactions. A transaction is a purchase made by a customer.",
        "summary": "Get Transactions",
        "tags": [
          "transactions"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/QueryId"
          },
          {
            "$ref": "#/parameters/QueryOrganizationId"
          },
          {
            "$ref": "#/parameters/QueryCustomerId"
          },
          {
            "$ref": "#/parameters/QueryAppointmentId"
          },
          {
            "$ref": "#/parameters/QueryPerPage"
          },
          {
            "$ref": "#/parameters/QueryPageAfter"
          },
          {
            "$ref": "#/parameters/QueryOrder"
          },
          {
            "$ref": "#/parameters/QueryOrderBy"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundTransactionArray"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "post": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Create a new transaction",
        "summary": "Create Transaction",
        "tags": [
          "transactions"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/TransactionBody"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleTransaction"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/transactions/{id}": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Retrieve a specific transaction",
        "summary": "Get a single Transaction",
        "tags": [
          "transactions"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/Id"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundSingleTransaction"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "patch": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Update a single transaction by UUID",
        "summary": "Update Transaction",
        "tags": [
          "transactions"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Id"
          },
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/TransactionBody"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundSingleTransaction"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/translations": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Retrieve all existing translations",
        "summary": "Get Translations",
        "tags": [
          "translations"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/QueryMock"
          },
          {
            "$ref": "#/parameters/QueryId"
          },
          {
            "$ref": "#/parameters/QueryResourceUriIndex"
          },
          {
            "$ref": "#/parameters/QueryLocale"
          },
          {
            "$ref": "#/parameters/QueryKey"
          },
          {
            "$ref": "#/parameters/QueryPerPage"
          },
          {
            "$ref": "#/parameters/QueryPageAfter"
          },
          {
            "$ref": "#/parameters/QueryOrder"
          },
          {
            "$ref": "#/parameters/QueryOrderBy"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/FoundTranslationArray"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "post": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Create translation",
        "summary": "Create translation",
        "tags": [
          "translations"
        ],
        "operationId": "createTranslation",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TranslationPostBody"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundTranslationSingle"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    },
    "/translations/{id}": {
      "get": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "Retrieve an exisiting translation by UUID",
        "summary": "Get Translation",
        "tags": [
          "translations"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Id"
          },
          {
            "$ref": "#/parameters/QueryMock"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundTranslationSingle"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      },
      "patch": {
        "security": [
          {
            "Bearer": []
          }
        ],
        "description": "update a translation by UUID",
        "summary": "Update Translation",
        "tags": [
          "translations"
        ],
        "operationId": "updateTranslation",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Id"
          },
          {
            "$ref": "#/parameters/TranslationPatchBody"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/FoundTranslationSingle"
          },
          "401": {
            "$ref": "#/responses/Found401Errors"
          },
          "403": {
            "$ref": "#/responses/Found403Errors"
          },
          "404": {
            "$ref": "#/responses/Found404Errors"
          },
          "500": {
            "$ref": "#/responses/Found500Errors"
          }
        }
      }
    }
  },
  "parameters": {
    "AppointmentBodyPost": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/AppointmentPost"
      }
    },
    "AppointmentBodyPatch": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/AppointmentPatch"
      }
    },
    "TranslationPatchBody": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/TranslationPatch"
      }
    },
    "TranslationPostBody": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/TranslationPostBodyData"
      }
    },
    "AppointmentAnswerBodyPost": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/AppointmentAnswerPost"
      }
    },
    "AppointmentAnswerBodyPatch": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/AppointmentAnswerPatch"
      }
    },
    "BasicAuthBody": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/BasicAuth"
      }
    },
    "CustomerBody": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/Customer"
      }
    },
    "HourPostBody": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/HourPost"
      }
    },
    "HourPatchBody": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/HourPatch"
      }
    },
    "ActionBody": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/Action"
      }
    },
    "TemplatePostBody": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/TemplatePostData"
      }
    },
    "TemplatePatchBody": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/TemplatePatchData"
      }
    },
    "TransactionBody": {
      "name": "body",
      "in": "body",
      "required": true,
      "schema": {
        "$ref": "#/definitions/Transaction"
      }
    },
    "Id": {
      "name": "id",
      "in": "path",
      "required": true,
      "type": "string",
      "format": "uuid",
      "description": "Primary UUID in the path"
    },
    "HourId": {
      "name": "id",
      "in": "path",
      "required": true,
      "type": "string",
      "format": "uuid",
      "description": "Primary UUID in the path"
    },
    "AppointmentId": {
      "name": "appointmentId",
      "in": "path",
      "required": true,
      "type": "string",
      "format": "uuid",
      "description": "Parent Appointment UUID for the resource in the path"
    },
    "QueryId": {
      "name": "id",
      "in": "query",
      "required": false,
      "type": "array",
      "collectionFormat": "csv",
      "items": {
        "type": "string",
        "format": "uuid"
      }
    },
    "QueryMock": {
      "name": "mock",
      "in": "query",
      "required": false,
      "type": "boolean",
      "description": "Return mock data"
    },
    "QueryOrganizationId": {
      "name": "organizationId",
      "in": "query",
      "required": false,
      "type": "string",
      "format": "uuid",
      "description": "Query by organization UUID"
    },
    "QueryPerPage": {
      "name": "perPage",
      "in": "query",
      "required": false,
      "default": 10,
      "type": "integer",
      "format": "int32",
      "description": "Query parameter to set the number of results per page"
    },
    "QueryPageAfter": {
      "name": "pageAfter",
      "in": "query",
      "required": false,
      "type": "string",
      "description": "Query parameter to set the token for the next page of results"
    },
    "QueryOrderBy": {
      "name": "orderBy",
      "in": "query",
      "required": false,
      "type": "string",
      "description": "Field by which to order results"
    },
    "QueryOrder": {
      "name": "order",
      "in": "query",
      "required": false,
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ],
      "description": "Specify the order of the returned data based on the field specified in \"orderBy\"."
    },
    "QueryCustomerId": {
      "name": "customerId",
      "in": "query",
      "required": false,
      "type": "string",
      "format": "uuid",
      "description": "Query by customer uuid"
    },
    "QueryScheduledStartDate": {
      "name": "scheduledStartDateTime",
      "in": "query",
      "required": false,
      "type": "string",
      "format": "date-time",
      "description": "This is the date and time that an appointment is scheduled to start."
    },
    "QueryScheduledEndDate": {
      "name": "scheduledEndDateTime",
      "in": "query",
      "required": false,
      "type": "string",
      "format": "date-time",
      "description": "This is the date and time that an appointment is scheduled to end."
    },
    "QueryActualStartDate": {
      "name": "actualStartDateTime",
      "in": "query",
      "required": false,
      "type": "string",
      "format": "date-time",
      "description": "This is the date and time that an appointment actually started. This field should not be set until the appointment has started."
    },
    "QueryActualEndDate": {
      "name": "actualEndDateTime",
      "in": "query",
      "required": false,
      "type": "string",
      "format": "date-time",
      "description": "This is the date and time that an appointment actually ended. This field should not be set until the appointment has ended."
    },
    "QueryAppointmentStatus": {
      "name": "status",
      "in": "query",
      "required": false,
      "type": "string",
      "description": "Query by the current status appointment status. Valid options are \"requested, confirmed, canceled, checkedIn, noShow, occurred\""
    },
    "QueryStartDateRange": {
      "name": "startDateRange",
      "in": "query",
      "required": false,
      "type": "string",
      "format": "date-time",
      "description": "Limit your query to appointments with scheduledStartDateTime or scheduledEndDateTime falling between queryStartDateRange and queryEndDateRange"
    },
    "QueryEndDateRange": {
      "name": "endDateRange",
      "in": "query",
      "required": false,
      "type": "string",
      "format": "date-time",
      "description": "Limit your query to appointments with scheduledStartDateTime or scheduledEndDateTime falling between queryStartDateRange and queryEndDateRange"
    },
    "QueryQuestionId": {
      "name": "questionId",
      "in": "query",
      "required": false,
      "type": "string",
      "format": "uuid",
      "description": "Query by question uuid"
    },
    "QueryQuestionKey": {
      "name": "questionKey",
      "in": "query",
      "required": false,
      "type": "string",
      "description": "Query by question key"
    },
    "QueryQuestionType": {
      "name": "questionType",
      "in": "query",
      "required": false,
      "type": "string",
      "description": "Query by question type"
    },
    "QueryResourceUri": {
      "name": "resourceUri",
      "in": "query",
      "required": true,
      "type": "string",
      "items": {
        "type": "string"
      }
    },
    "QueryResourceUriIndex": {
      "name": "resourceUri",
      "in": "query",
      "required": false,
      "type": "string",
      "format": "string",
      "description": "Query by resourceUri"
    },
    "QueryDate": {
      "name": "date",
      "in": "query",
      "required": false,
      "type": "array",
      "collectionFormat": "csv",
      "description": "Query parameter to filter by date",
      "items": {
        "type": "string"
      }
    },
    "QueryDayOfWeek": {
      "name": "dayOfWeek",
      "in": "query",
      "required": false,
      "type": "array",
      "collectionFormat": "csv",
      "description": "Query parameter to filter by dayOfWeek 1 (Monday) through 7 (Sunday).",
      "items": {
        "type": "integer"
      }
    },
    "QueryStartDateTime": {
      "name": "startDateTime",
      "in": "query",
      "required": true,
      "type": "string",
      "format": "date-time"
    },
    "QueryInclude": {
      "name": "include",
      "in": "query",
      "required": false,
      "type": "array",
      "collectionFormat": "csv",
      "description": "Resource types to include",
      "items": {
        "type": "string"
      }
    },
    "QueryAppointmentId": {
      "name": "appointmentId",
      "in": "query",
      "required": false,
      "description": "Query by appointment UUID",
      "type": "array",
      "collectionFormat": "csv",
      "items": {
        "type": "string",
        "format": "uuid"
      }
    },
    "QueryKey": {
      "name": "key",
      "in": "query",
      "description": "Query by translation keys",
      "required": false,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "QueryLocale": {
      "name": "locale",
      "in": "query",
      "required": false,
      "type": "string",
      "format": "string",
      "description": "Query by translation locale"
    },
    "QueryFirstName": {
      "name": "firstName",
      "in": "query",
      "required": false,
      "type": "string",
      "description": "Query by resource first name"
    },
    "QueryLastName": {
      "name": "lastName",
      "in": "query",
      "required": false,
      "type": "string",
      "description": "Query by resource last name"
    },
    "QueryEmail": {
      "name": "email",
      "in": "query",
      "required": false,
      "type": "string",
      "description": "Query by resource email"
    }
  },
  "definitions": {
    "Link": {
      "title": "Link Object",
      "description": "Link object for resource meta data",
      "type": "object",
      "properties": {
        "self": {
          "type": "string"
        }
      }
    },
    "Error": {
      "title": "Error",
      "description": "Expected error response object",
      "type": "object",
      "properties": {
        "status": {
          "description": "Status of the error",
          "type": "integer"
        },
        "title": {
          "description": "Title of the error",
          "type": "string"
        },
        "detail": {
          "description": "Detailed explanation of the error",
          "type": "string"
        },
        "meta": {
          "description": "Optional meta data for the error",
          "type": "object"
        }
      }
    },
    "ErrorArray": {
      "title": "Errors",
      "description": "Array of error response objects",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Error"
      }
    },
    "Pagination": {
      "title": "Pagination",
      "type": "object",
      "properties": {
        "self": {
          "description": "Link to current page of data response",
          "type": "string"
        },
        "next": {
          "description": "Link to next page of data response",
          "type": "string"
        }
      },
      "required": [
        "self"
      ]
    },
    "TimeslotsLinks": {
      "title": "Pagination",
      "type": "object",
      "properties": {
        "self": {
          "description": "Link to current page of data response",
          "type": "string"
        }
      },
      "required": [
        "self"
      ]
    },
    "OrganizationRelationship": {
      "description": "Organization that the resource belongs to",
      "type": "object",
      "properties": {
        "data": {
          "properties": {
            "type": {
              "description": "Type of the organization",
              "type": "string",
              "example": "organizations"
            },
            "id": {
              "description": "UUID of the organization",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9c"
            }
          }
        }
      }
    },
    "AppointmentPost": {
      "title": "Request object for creating an appointment",
      "type": "object",
      "description": "Request body for an appointment",
      "properties": {
        "data": {
          "$ref": "#/definitions/AppointmentPostData"
        }
      }
    },
    "AppointmentPatch": {
      "title": "Request object for updating an appointment",
      "type": "object",
      "description": "Request body for an appointment",
      "properties": {
        "data": {
          "$ref": "#/definitions/AppointmentPatchData"
        }
      }
    },
    "AppointmentPostData": {
      "title": "Appointment data",
      "description": "Data object expected to create an appointment",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string",
          "example": "appointments"
        },
        "attributes": {
          "description": "Attributes of an appointment resource",
          "type": "object",
          "properties": {
            "organizationId": {
              "description": "UUID of the organization to which this appointment belongs",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9c"
            },
            "organizationAppointmentId": {
              "description": "The organization's internally identifiable ID of the appointment",
              "type": "string"
            },
            "scheduledStartDateTime": {
              "description": "Scheduled appointment start dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "scheduledEndDateTime": {
              "description": "Scheduled appointment end dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "actualStartDateTime": {
              "description": "Actual appointment start dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "actualEndDateTime": {
              "description": "Actual appointment end dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "answers": {
              "description": "Customer's answers to questions associated with the appointment",
              "type": "array",
              "items": {
                "type": "object"
              }
            },
            "resources": {
              "description": "Types and UUIDs of the appointment resources",
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "type": {
                    "description": "Type of resource",
                    "type": "string",
                    "enum": [
                      "locations",
                      "users",
                      "customers",
                      "services"
                    ],
                    "example": "customers"
                  },
                  "id": {
                    "description": "UUID of resource",
                    "type": "string",
                    "format": "uuid",
                    "example": "00000000-0000-0000-0000-000000000067"
                  }
                }
              }
            },
            "status": {
              "description": "Appointment status",
              "type": "string",
              "enum": [
                "occurred",
                "requested",
                "confirmed",
                "canceled",
                "checkedIn",
                "noShow"
              ]
            },
            "customerMessage": {
              "description": "A customer message containing any comments about the appointment",
              "type": "string"
            }
          },
          "required": [
            "organizationId",
            "scheduledStartDateTime",
            "scheduledEndDateTime",
            "status",
            "resources"
          ]
        }
      }
    },
    "AppointmentPatchData": {
      "title": "Appointment data",
      "description": "Data object expected to update an appointment",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string",
          "example": "appointments"
        },
        "attributes": {
          "description": "Attributes of an appointment resource",
          "type": "object",
          "properties": {
            "organizationAppointmentId": {
              "description": "Internally identifiable organization appointment ID of the appointment",
              "type": "string"
            },
            "scheduledStartDateTime": {
              "description": "Scheduled appointment start dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "scheduledEndDateTime": {
              "description": "Scheduled appointment end dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "actualStartDateTime": {
              "description": "Actual appointment start dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "actualEndDateTime": {
              "description": "Actual appointment end dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "answers": {
              "description": "Customer's answers to questions associated with the appointment",
              "type": "array",
              "items": {
                "type": "object"
              }
            },
            "resources": {
              "description": "Types and UUIDs of the appointment resources",
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "type": {
                    "description": "Type of resource",
                    "type": "string",
                    "enum": [
                      "locations",
                      "users",
                      "customers",
                      "services"
                    ],
                    "example": "customers"
                  },
                  "id": {
                    "description": "UUID of resource",
                    "type": "string",
                    "format": "uuid",
                    "example": "00000000-0000-0000-0000-000000000067"
                  }
                }
              }
            },
            "status": {
              "description": "Appointment status",
              "type": "string",
              "enum": [
                "occurred",
                "requested",
                "confirmed",
                "canceled",
                "checkedIn",
                "noShow"
              ]
            },
            "customerMessage": {
              "description": "A customer message containing any comments about the appointment",
              "type": "string"
            }
          }
        }
      }
    },
    "AppointmentDataResponse": {
      "title": "Data Response",
      "description": "Expected data response object for an appointment",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string"
        },
        "id": {
          "description": "UUID of resource; additional resource attributes will also be returned",
          "type": "string",
          "format": "uuid"
        },
        "attributes": {
          "description": "Attributes of resource",
          "type": "object",
          "properties": {
            "organizationAppointmentId": {
              "description": "Internally identifiable organization's ID for the appointment",
              "type": "string"
            },
            "createdAt": {
              "description": "Appointment creation Date",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "updatedAt": {
              "description": "Appointment last updated Date",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "scheduledStartDateTime": {
              "description": "Scheduled appointment start dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "scheduledEndDateTime": {
              "description": "Scheduled appointment end dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "actualStartDateTime": {
              "description": "Actual appointment start dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "actualEndDateTime": {
              "description": "Actual appointment end dateTime",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "status": {
              "description": "Appointment status",
              "type": "string",
              "enum": [
                "occurred",
                "requested",
                "confirmed",
                "canceled",
                "checkedIn",
                "noShow"
              ]
            },
            "customerMessage": {
              "description": "A customer message containing any comments about the appointment",
              "type": "string"
            },
            "updatedBy": {
              "description": "The UUID of the user that most recently updated the appointment",
              "type": [
                "string",
                null
              ],
              "format": "uuid"
            },
            "createdBy": {
              "description": "The UUID of the user that created the appointment",
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "relationships": {
          "$ref": "#/definitions/AppointmentRelationships"
        },
        "links": {
          "$ref": "#/definitions/Link"
        }
      }
    },
    "AppointmentDataResponseArray": {
      "title": "Data Responses",
      "description": "Array of data response objects",
      "type": "array",
      "items": {
        "$ref": "#/definitions/AppointmentDataResponse"
      }
    },
    "AppointmentRelationships": {
      "title": "Appointment Relationships",
      "description": "Relationships of an appointment",
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/OrganizationRelationship"
        },
        "resources": {
          "properties": {
            "data": {
              "$ref": "#/definitions/ResourcesRelationship"
            }
          }
        },
        "answers": {
          "properties": {
            "data": {
              "$ref": "#/definitions/AnswersRelationship"
            }
          }
        }
      }
    },
    "AnswersRelationship": {
      "description": "Customer's answers to questions associated with the appointment",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "description": "Type of the answer",
            "type": "string",
            "example": "answers"
          },
          "id": {
            "description": "UUID of the answer",
            "type": "string",
            "format": "uuid",
            "example": "00000000-0000-0000-0000-000000000069"
          }
        }
      }
    },
    "ResourcesRelationship": {
      "description": "Types and UUIDs of the appointment resources",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "description": "Type of resource",
            "type": "string",
            "enum": [
              "locations",
              "users",
              "customers",
              "services"
            ],
            "example": "customers"
          },
          "id": {
            "description": "UUID of resource",
            "type": "string",
            "format": "uuid",
            "example": "00000000-0000-0000-0000-000000000069"
          }
        }
      }
    },
    "AppointmentAnswerPost": {
      "title": "Request object for creating an answer",
      "type": "object",
      "description": "Request body for an answer",
      "properties": {
        "data": {
          "$ref": "#/definitions/AppointmentAnswerPostData"
        }
      }
    },
    "AppointmentAnswerPatch": {
      "title": "Request object for updating an answer",
      "type": "object",
      "description": "Request body for an answer",
      "properties": {
        "data": {
          "$ref": "#/definitions/AppointmentAnswerPatchData"
        }
      }
    },
    "AppointmentAnswerPostData": {
      "title": "Answer data",
      "description": "Object expected to create an answer",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string",
          "example": "answers"
        },
        "attributes": {
          "description": "Attributes of an answer resource",
          "type": "object",
          "properties": {
            "questionId": {
              "description": "Id of the question an answer belongs to",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9d"
            },
            "customerId": {
              "description": "Id of the customer an answer belongs to",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9e"
            },
            "questionKey": {
              "description": "Query for all the answers for a question",
              "type": "string"
            },
            "questionType": {
              "description": "Type of question",
              "type": "string"
            },
            "answer": {
              "description": "Answer",
              "type": "object"
            },
            "questionSnapshot": {
              "description": "Question",
              "type": "object"
            }
          },
          "required": [
            "questionId",
            "customerId",
            "answer",
            "questionKey",
            "questionType",
            "questionSnapshot"
          ]
        }
      }
    },
    "AppointmentAnswerPatchData": {
      "title": "Answer data",
      "description": "Object expected to update an answer",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string",
          "example": "answers"
        },
        "attributes": {
          "description": "Attributes of an answer resource",
          "type": "object",
          "properties": {
            "appointmentId": {
              "description": "Id of the appointment an answer belongs to",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9c"
            },
            "questionId": {
              "description": "Id of the question an answer belongs to",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9d"
            },
            "customerId": {
              "description": "Id of the customer an answer belongs to",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9e"
            },
            "questionKey": {
              "description": "Query for all the answers for a question",
              "type": "string"
            },
            "questionType": {
              "description": "Type of question",
              "type": "string"
            },
            "answer": {
              "description": "Answer",
              "type": "object"
            },
            "questionSnapshot": {
              "description": "Question",
              "type": "object"
            }
          }
        }
      }
    },
    "AppointmentAnswerDataResponse": {
      "title": "Answer Data Response",
      "description": "Expected data response object for an answer",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string"
        },
        "id": {
          "description": "ID of resource; additional resource attributes will also be returned",
          "type": "string",
          "format": "uuid"
        },
        "attributes": {
          "description": "Attributes of resource",
          "type": "object",
          "properties": {
            "questionKey": {
              "description": "Query for all the answers for a question",
              "type": "string"
            },
            "questionType": {
              "description": "Type of question",
              "type": "string"
            },
            "answer": {
              "description": "Answer",
              "type": "object"
            },
            "questionSnapshot": {
              "description": "Question",
              "type": "object"
            },
            "createdAt": {
              "description": "Answer creation Date",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "updatedAt": {
              "description": "Answer last updated Date",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            }
          }
        },
        "relationships": {
          "$ref": "#/definitions/AppointmentAnswerRelationships"
        },
        "links": {
          "$ref": "#/definitions/Link"
        }
      }
    },
    "AppointmentAnswerRelationships": {
      "title": "Answer Relationships",
      "description": "Relationships of an answer",
      "type": "object",
      "properties": {
        "question": {
          "properties": {
            "data": {
              "$ref": "#/definitions/AppointmentAnswerQuestionsRelationship"
            }
          }
        },
        "appointment": {
          "properties": {
            "data": {
              "$ref": "#/definitions/AppointmentAnswerAppointmentsRelationship"
            }
          }
        },
        "customer": {
          "properties": {
            "data": {
              "$ref": "#/definitions/AppointmentAnswerCustomersRelationship"
            }
          }
        }
      },
      "required": [
        "question",
        "appointment",
        "customer"
      ]
    },
    "AppointmentAnswerQuestionsRelationship": {
      "description": "Question associated with the answer",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string",
          "example": "questions"
        },
        "id": {
          "description": "UUID the resource",
          "type": "string",
          "format": "uuid",
          "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9c"
        }
      }
    },
    "AppointmentAnswerAppointmentsRelationship": {
      "description": "Appointments associated with the answer",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string",
          "example": "appointments"
        },
        "id": {
          "description": "UUID of resource",
          "type": "string",
          "format": "uuid",
          "example": "00000000-0000-0000-0000-000000000069"
        }
      }
    },
    "AppointmentAnswerCustomersRelationship": {
      "description": "Customer associated with the answer",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string",
          "example": "customers"
        },
        "id": {
          "description": "UUID of resource",
          "type": "string",
          "format": "uuid",
          "example": "00000000-0000-0000-0000-000000000069"
        }
      }
    },
    "AppointmentAnswerDataResponseArray": {
      "title": "Data Responses",
      "description": "Array of answer data response objects",
      "type": "array",
      "items": {
        "$ref": "#/definitions/AppointmentAnswerDataResponse"
      }
    },
    "BasicAuth": {
      "type": "object",
      "description": "Request body for basic authentication",
      "properties": {
        "username": {
          "description": "Username of the user attempting to authenticate",
          "type": "string"
        },
        "password": {
          "description": "Password of the user attempting to authenticate",
          "type": "string"
        },
        "companyApiRoot": {
          "description": "Company's root URL",
          "type": "string"
        }
      },
      "required": [
        "username",
        "password",
        "companyApiRoot"
      ]
    },
    "Customer": {
      "title": "Request object for creating a customer",
      "type": "object",
      "description": "Request body for customer",
      "properties": {
        "data": {
          "$ref": "#/definitions/CustomerData"
        }
      }
    },
    "CustomerData": {
      "title": "Customer data",
      "type": "object",
      "description": "Request body to create customer",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string",
          "example": "customer"
        },
        "attributes": {
          "description": "Attributes of a customer resource",
          "type": "object",
          "properties": {
            "organizationId": {
              "description": "UUID of the organization to which an customer belongs",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9c"
            },
            "firstName": {
              "description": "First name of the customer",
              "type": "string"
            },
            "lastName": {
              "description": "Last name of the customer",
              "type": "string"
            },
            "email": {
              "description": "Customer's email address",
              "type": "string"
            },
            "organizationCustomerId": {
              "description": "Organization's own ID for customer",
              "type": "string"
            },
            "phoneNumber": {
              "description": "Customer's phone number",
              "type": "string"
            },
            "customerNotes": {
              "description": "Notes about the customer",
              "type": "string"
            },
            "locale": {
              "description": "Locale of the customer",
              "type": "string"
            }
          },
          "required": [
            "organizationId"
          ]
        }
      }
    },
    "CustomerDataResponse": {
      "title": "Data Response",
      "description": "Expected data response object",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string"
        },
        "id": {
          "description": "UUID of resource; additional resource attributes will also be returned",
          "type": "string",
          "format": "uuid"
        },
        "attributes": {
          "description": "Attributes of resource",
          "type": "object",
          "properties": {
            "firstName": {
              "description": "First name of the customer",
              "type": "string"
            },
            "lastName": {
              "description": "Last name of the customer",
              "type": "string"
            },
            "email": {
              "description": "Customer's email address",
              "type": "string"
            },
            "organizationCustomerId": {
              "description": "Organization's own ID for customer",
              "type": "string"
            },
            "phoneNumber": {
              "description": "Customer's phone number",
              "type": "string"
            },
            "customerNotes": {
              "description": "Notes about the customer",
              "type": "string"
            },
            "locale": {
              "description": "Locale of the customer",
              "type": "string"
            },
            "createdAt": {
              "description": "Date the resource was logged",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "updatedAt": {
              "description": "Date the resource was last modified",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "createdBy": {
              "description": "User who created the customer resource",
              "type": "string",
              "format": "uuid"
            },
            "updatedBy": {
              "description": "User who updated the customer resource",
              "type": [
                "string",
                null
              ],
              "format": "uuid"
            }
          }
        },
        "relationships": {
          "$ref": "#/definitions/CustomerRelationships"
        },
        "links": {
          "$ref": "#/definitions/Link"
        }
      }
    },
    "CustomerRelationships": {
      "title": "Customer Relationships",
      "description": "Relationships of a customer",
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/OrganizationRelationship"
        }
      },
      "required": [
        "organization"
      ]
    },
    "CustomerDataResponseArray": {
      "title": "Data Responses",
      "description": "Array of data response objects",
      "type": "array",
      "items": {
        "$ref": "#/definitions/CustomerDataResponse"
      }
    },
    "HourPost": {
      "type": "object",
      "description": "Request body for creating availability",
      "properties": {
        "data": {
          "type": "object",
          "description": "The data object",
          "properties": {
            "type": {
              "description": "Type of resource",
              "type": "string"
            },
            "attributes": {
              "description": "Attributes of resource",
              "type": "object",
              "properties": {
                "startTime": {
                  "description": "Start time (in the record timeZone)",
                  "type": "string",
                  "example": "17:00:00"
                },
                "endTime": {
                  "description": "End time (in the record timeZone)",
                  "type": "string",
                  "example": "23:00:00"
                },
                "timeZone": {
                  "description": "Time zone of the hour record",
                  "type": "string",
                  "example": "America/New_York"
                },
                "date": {
                  "description": "This attribute, along with `dayOfWeek` determines whether availability is recurring or special. If `date` is null, availability is is recurring on given `dayOfWeek`.  If `date` is populated, availability applies specifically on given `date`.  One of the two attributes is required.",
                  "type": [
                    "string",
                    null
                  ],
                  "example": "2017-10-11"
                },
                "dayOfWeek": {
                  "description": "Day of week by index. If set, it must be 1 (Monday) through 7 (Sunday). This attribute, along with `date`, determines whether availability is recurring or special. If `date` is null, availability is recurring on the given `dayOfWeek`.  If `date` is populated, availability applies specifically on given `date`.  One of the two attributes is required.",
                  "type": [
                    "integer",
                    null
                  ],
                  "example": 1
                },
                "available": {
                  "description": "Whether the record indicates that the resource is available or not available.",
                  "type": "boolean"
                },
                "resourceUri": {
                  "description": "URI of resource. resourceUri is the canonical URI for the specific resource being referenced.  The resourceUri must be fully formed showing all relationships to related resources, beginning with the organization.  The resourceUri must begin with a leading `/` and cannot end with a trailing `/`. So, the resourceUri for the service with the UUID `2c3cb017-e4ab-41b1-ba5e-e60095e6f1e4` at the location with the UUID `4610e604-b8d9-49c6-81ee-d76ba9e91304` for the organization with the UUID `0575d50d-7725-4e96-92e0-6aef720763fa` would be `/organizations/0575d50d-7725-4e96-92e0-6aef720763fa/locations/4610e604-b8d9-49c6-81ee-d76ba9e91304/services/2c3cb017-e4ab-41b1-ba5e-e60095e6f1e4`",
                  "type": "string",
                  "example": "/organizations/f759af6a-2d8d-42b4-8a63-a17582404a9d/locations/f759af6a-2d8d-42b4-8a63-a17582404a9d"
                }
              },
              "required": [
                "startTime",
                "endTime",
                "timeZone",
                "available",
                "resourceUri"
              ]
            }
          }
        }
      }
    },
    "HourPatch": {
      "type": "object",
      "description": "Request body for updating availability",
      "properties": {
        "data": {
          "type": "object",
          "description": "The data object",
          "properties": {
            "type": {
              "description": "Type of resource",
              "type": "string"
            },
            "attributes": {
              "description": "Attributes of resource",
              "type": "object",
              "properties": {
                "startTime": {
                  "description": "Start time (in the record timeZone)",
                  "type": "string",
                  "example": "17:00:00"
                },
                "endTime": {
                  "description": "End time (in the record timeZone)",
                  "type": "string",
                  "example": "23:00:00"
                },
                "timeZone": {
                  "description": "Time zone of the hour record",
                  "type": "string",
                  "example": "America/New_York"
                },
                "date": {
                  "description": "This attribute, along with `dayOfWeek` determines whether availability is recurring or special. If `date` is null, availability is is recurring on given `dayOfWeek`.  If `date` is populated, availability applies specifically on given `date`.  One of the two attributes is required.",
                  "type": [
                    "string",
                    null
                  ],
                  "example": "2017-10-11"
                },
                "dayOfWeek": {
                  "description": "Day of week by index. If set, it must be 1 (Monday) through 7 (Sunday). This attribute, along with `date`, determines whether availability is recurring or special. If `date` is null, availability is recurring on the given `dayOfWeek`.  If `date` is populated, availability applies specifically on given `date`.  One of the two attributes is required.",
                  "type": [
                    "integer",
                    null
                  ],
                  "example": 1
                },
                "available": {
                  "description": "Whether the record indicates that the resource is available or not available.",
                  "type": "boolean"
                },
                "resourceUri": {
                  "description": "URI of resource. resourceUri is the canonical URI for the specific resource being referenced.  The resourceUri must be fully formed showing all relationships to related resources, beginning with the organization.  The resourceUri must begin with a leading `/` and cannot end with a trailing `/`. So, the resourceUri for the service with the UUID `2c3cb017-e4ab-41b1-ba5e-e60095e6f1e4` at the location with the UUID `4610e604-b8d9-49c6-81ee-d76ba9e91304` for the organization with the UUID `0575d50d-7725-4e96-92e0-6aef720763fa` would be `/organizations/0575d50d-7725-4e96-92e0-6aef720763fa/locations/4610e604-b8d9-49c6-81ee-d76ba9e91304/services/2c3cb017-e4ab-41b1-ba5e-e60095e6f1e4`",
                  "type": "string",
                  "example": "/organizations/f759af6a-2d8d-42b4-8a63-a17582404a9d/locations/f759af6a-2d8d-42b4-8a63-a17582404a9d"
                }
              }
            }
          }
        }
      }
    },
    "HourDataResponse": {
      "title": "Data Response",
      "description": "Expected data response object",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string"
        },
        "id": {
          "description": "UUID of resource; additional resource attributes will also be returned",
          "type": "string",
          "format": "uuid"
        },
        "attributes": {
          "description": "Attributes of resource",
          "type": "object",
          "properties": {
            "startTime": {
              "description": "Start time (in the record timeZone)",
              "type": "string",
              "example": "17:00:00"
            },
            "endTime": {
              "description": "End time (in the record timeZone)",
              "type": "string",
              "example": "23:00:00"
            },
            "timeZone": {
              "description": "Time zone of the hour record",
              "type": "string",
              "example": "America/New_York"
            },
            "date": {
              "description": "This attribute, along with `dayOfWeek` determines whether availability is recurring or special. If `date` is null, availability is is recurring on given `dayOfWeek`.  If `date` is populated, availability applies specifically on given `date`.  One of the two attributes is required.",
              "type": [
                "string",
                null
              ],
              "example": "2017-10-11"
            },
            "dayOfWeek": {
              "description": "Day of week by index. If set, it must be 1 (Monday) through 7 (Sunday). This attribute, along with `date`, determines whether availability is recurring or special. If `date` is null, availability is recurring on the given `dayOfWeek`.  If `date` is populated, availability applies specifically on given `date`.  One of the two attributes is required.",
              "type": [
                "integer",
                null
              ],
              "example": 1
            },
            "available": {
              "description": "Whether the record indicates that the resource is available or not available.",
              "type": "boolean"
            },
            "resourceUri": {
              "description": "URI of resource. resourceUri is the canonical URI for the specific resource being referenced.  The resourceUri must be fully formed showing all relationships to related resources, beginning with the organization.  The resourceUri must begin with a leading `/` and cannot end with a trailing `/`. So, the resourceUri for the service with the UUID `2c3cb017-e4ab-41b1-ba5e-e60095e6f1e4` at the location with the UUID `4610e604-b8d9-49c6-81ee-d76ba9e91304` for the organization with the UUID `0575d50d-7725-4e96-92e0-6aef720763fa` would be `/organizations/0575d50d-7725-4e96-92e0-6aef720763fa/locations/4610e604-b8d9-49c6-81ee-d76ba9e91304/services/2c3cb017-e4ab-41b1-ba5e-e60095e6f1e4`",
              "type": "string",
              "example": "/organizations/f759af6a-2d8d-42b4-8a63-a17582404a9d/locations/f759af6a-2d8d-42b4-8a63-a17582404a9d"
            },
            "createdAt": {
              "description": "Date the resource was logged",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "updatedAt": {
              "description": "Date the resource was last modified",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "createdBy": {
              "description": "User who created the hour resource",
              "type": "string",
              "format": "uuid"
            },
            "updatedBy": {
              "description": "User who updated the hour resource",
              "type": [
                "string",
                null
              ],
              "format": "uuid"
            }
          }
        },
        "relationships": {
          "description": "Relationships of availability",
          "type": "object"
        },
        "links": {
          "$ref": "#/definitions/Link"
        }
      }
    },
    "HourDataResponseArray": {
      "title": "Data Responses",
      "description": "Array of data response objects",
      "type": "array",
      "items": {
        "$ref": "#/definitions/HourDataResponse"
      }
    },
    "DataResourceTimeslotResponse": {
      "title": "Data Response",
      "description": "Expected data response object",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string",
          "example": "resourceTimeslots"
        },
        "id": {
          "description": "UUID of resource",
          "type": "string",
          "example": "2018-02-03T10:00:00Z/2018-02-03T10:30:00Z"
        },
        "attributes": {
          "description": "Attributes of resource",
          "type": "object",
          "properties": {
            "startTime": {
              "description": "Start time of timeslot",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:00:00Z"
            },
            "endTime": {
              "description": "End time of timeslot",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            }
          }
        },
        "relationships": {
          "description": "Relationships",
          "type": "object",
          "properties": {
            "resources": {
              "description": "Array of related / available resources",
              "type": "object",
              "properties": {
                "data": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/RelatedResource"
                  },
                  "example": [
                    {
                      "id": "f6cbc9c9-86f0-4f08-b525-392034b4ac26",
                      "type": "locations"
                    },
                    {
                      "id": "f6cbc9c9-86f0-4f08-b525-3920jdfjs777",
                      "type": "services"
                    }
                  ]
                }
              }
            }
          }
        },
        "links": {
          "$ref": "#/definitions/Link"
        }
      }
    },
    "RelatedResource": {
      "title": "Related Resource",
      "description": "Related / available resource",
      "type": "object",
      "properties": {
        "id": {
          "description": "UUID of resource",
          "type": "string",
          "format": "uuid",
          "example": "f6cbc9c9-86f0-4f08-b525-392034b4ac26"
        },
        "type": {
          "description": "Type of resource",
          "type": "string",
          "enum": [
            "locations",
            "users",
            "customers",
            "services"
          ],
          "example": "locations"
        }
      }
    },
    "DataResponseResourceTimeslotArray": {
      "title": "Data Responses",
      "description": "Array of data response objects",
      "type": "array",
      "items": {
        "$ref": "#/definitions/DataResourceTimeslotResponse"
      }
    },
    "IncludedResourceArray": {
      "title": "included",
      "type": "array",
      "items": {
        "$ref": "#/definitions/IncludedResource"
      }
    },
    "IncludedResource": {
      "title": "Included Resource",
      "description": "Included Resource Object",
      "type": "object",
      "properties": {
        "id": {
          "description": "UUID of resource",
          "type": "string",
          "format": "uuid",
          "example": "f759af6a-2d8d-42b4-8a63-a17582404a9d"
        },
        "type": {
          "description": "Type of resource",
          "type": "string",
          "enum": [
            "locations",
            "users",
            "customers",
            "services"
          ],
          "example": "services"
        },
        "attributes": {
          "title": "Included resource attributes",
          "description": "The attributes of the included resource object",
          "type": "object"
        },
        "links": {
          "$ref": "#/definitions/Link"
        }
      }
    },
    "Action": {
      "type": "object",
      "description": "Request body for creating an action",
      "properties": {
        "data": {
          "type": "object",
          "description": "The data object",
          "properties": {
            "type": {
              "description": "Type of resource",
              "type": "string"
            },
            "attributes": {
              "description": "Attributes of resource",
              "type": "object",
              "properties": {
                "organizationId": {
                  "description": "UUID of the organization to which this action belongs.",
                  "type": "string",
                  "format": "uuid",
                  "example": "00000000-0000-0000-0000-000000000067"
                },
                "type": {
                  "description": "The type of action",
                  "type": "string",
                  "enum": [
                    "email",
                    "webhook"
                  ]
                },
                "target": {
                  "description": "Array of target(s) for this action. To add a custom target, you must add customTarget as the value for this field and add your custom target to the customTarget field",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "The target for this action",
                    "enum": [
                      "appointmentCustomer",
                      "appointmentAssociate",
                      "appointmentStoreManager",
                      "customTarget"
                    ]
                  },
                  "example": [
                    "appointmentCustomer",
                    "appointmentAssociate"
                  ]
                },
                "eventType": {
                  "description": "Array of eventType(s) for this action. The action will be triggered when any one of the selected eventTypes occurs.",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "The event type of this action",
                    "enum": [
                      "appointmentCanceled",
                      "appointmentCheckedIn",
                      "appointmentCompleted",
                      "appointmentConfirmed",
                      "appointmentNoShow",
                      "appointmentOneHourPrior",
                      "appointmentOneWeekAfter",
                      "appointmentReassigned",
                      "appointmentRequested",
                      "appointmentTwentyFourHourAfter",
                      "appointmentTwentyFourHourPrior",
                      "appointmentUpdated"
                    ]
                  },
                  "example": [
                    "appointmentRequested",
                    "appointmentNoShow"
                  ]
                },
                "resourceFilter": {
                  "description": "Array of resourceUri(s) for which the action will be triggered. An empty array indicates that the action will trigger for any resource. Including multiple resourceUris indicated that the action will trigger for each resource. Currently, this only supports resourceUris which only include an organization and service.",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "URI of resource",
                    "example": "/organizations/f759af6a-2d8d-42b4-8a63-a17582404a9d/services/759af6a-2d8d-42b4-8a63-a17582404a9d"
                  }
                },
                "customTarget": {
                  "description": "Array of custom target(s). You must select customTarget as your \"target\" value and add that value here to be valid",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "The customTarget for this action."
                  },
                  "example": [
                    "associate@example.com",
                    "customer@example.com"
                  ]
                },
                "templateId": {
                  "description": "The UUID of the template you wish to associate with this action. Required for action type 'email'",
                  "type": "string",
                  "format": "uuid",
                  "example": "00000000-0000-0000-0000-000000000067"
                },
                "enabled": {
                  "description": "Whether this action is enabled",
                  "type": "boolean",
                  "default": false
                }
              },
              "required": [
                "organizationId",
                "type",
                "target"
              ]
            }
          }
        }
      }
    },
    "ActionDataResponseArray": {
      "title": "Data Responses",
      "description": "Array of data response objects",
      "type": "array",
      "items": {
        "$ref": "#/definitions/ActionDataResponse"
      }
    },
    "ActionDataResponse": {
      "title": "Action Data Response",
      "description": "Expected data response object for an action",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string"
        },
        "id": {
          "description": "UUID of resource; additional resource attributes will also be returned",
          "type": "string",
          "format": "uuid",
          "example": "00000000-0000-0000-0000-000000000067"
        },
        "attributes": {
          "description": "Attributes of resource",
          "type": "object",
          "properties": {
            "type": {
              "description": "Type of action",
              "type": "string",
              "enum": [
                "email",
                "webhook"
              ]
            },
            "target": {
              "description": "Array of target(s) for this action. To add a custom target, you must add customTarget as the value for this field and add your custom target to the customTarget field",
              "type": "array",
              "items": {
                "type": "string",
                "description": "The target for this action. Valid options are",
                "enum": [
                  "appointmentCustomer",
                  "appointmentAssociate",
                  "appointmentStoreManager",
                  "customTarget"
                ]
              },
              "example": [
                "appointmentCustomer",
                "appointmentAssociate"
              ]
            },
            "eventType": {
              "description": "Array of eventType(s) for this action",
              "type": "array",
              "items": {
                "type": "string",
                "description": "The event type of this action",
                "enum": [
                  "appointmentCanceled",
                  "appointmentCheckedIn",
                  "appointmentCompleted",
                  "appointmentConfirmed",
                  "appointmentNoShow",
                  "appointmentOneHourPrior",
                  "appointmentOneWeekAfter",
                  "appointmentReassigned",
                  "appointmentRequested",
                  "appointmentTwentyFourHourAfter",
                  "appointmentTwentyFourHourPrior",
                  "appointmentUpdated"
                ],
                "example": [
                  "appointmentRequested",
                  "appointmentNoShow"
                ]
              }
            },
            "resourceFilter": {
              "description": "Array of resourceUri(s) for which the action will be triggered. An empty array indicates that the action will trigger for any resource. Including multiple resourceUris indicated that the action will trigger for each resource. Currently, this only supports resourceUris which only include an organization and service.",
              "type": "array",
              "items": {
                "type": "string",
                "description": "URI of resource",
                "example": "/organizations/f759af6a-2d8d-42b4-8a63-a17582404a9d/services/759af6a-2d8d-42b4-8a63-a17582404a9d"
              }
            },
            "customTarget": {
              "description": "Array of custom target(s). You must select customTarget as your \"target\" value and add that value here to be valid",
              "type": "array",
              "items": {
                "type": "string",
                "description": "The customTarget for this action."
              },
              "example": [
                "associate@example.com",
                "customer@example.com"
              ]
            },
            "enabled": {
              "description": "Whether this action is enabled",
              "type": "boolean",
              "default": false
            },
            "createdAt": {
              "description": "Date the resource was logged",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "updatedAt": {
              "description": "Date the resource was last modified",
              "type": "string",
              "format": "date-time"
            },
            "createdBy": {
              "description": "User who created the action resource",
              "type": "string",
              "format": "uuid"
            },
            "updatedBy": {
              "description": "User who updated the action resource",
              "type": [
                "string",
                null
              ],
              "format": "uuid"
            }
          }
        },
        "relationships": {
          "$ref": "#/definitions/ActionRelationships"
        },
        "links": {
          "$ref": "#/definitions/Link"
        }
      }
    },
    "ActionRelationships": {
      "title": "Action Relationships",
      "description": "Relationships of an action",
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/OrganizationRelationship"
        },
        "template": {
          "properties": {
            "data": {
              "$ref": "#/definitions/TemplateRelationship"
            }
          }
        }
      },
      "required": [
        "organization",
        "template"
      ]
    },
    "TemplateRelationship": {
      "description": "Template that is associated with the action",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string",
          "example": "templates"
        },
        "id": {
          "description": "UUID of the resource",
          "type": "string",
          "format": "uuid",
          "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9c"
        }
      }
    },
    "TemplatePostData": {
      "type": "object",
      "description": "Request body for creating a template",
      "properties": {
        "data": {
          "type": "object",
          "description": "The data object",
          "properties": {
            "type": {
              "description": "Type of resource",
              "type": "string"
            },
            "attributes": {
              "description": "Attributes of resource",
              "type": "object",
              "properties": {
                "name": {
                  "description": "The name for this template",
                  "type": "string",
                  "example": "Appointment created email"
                },
                "organizationId": {
                  "description": "UUID of the organization to which a template belongs",
                  "type": "string",
                  "format": "uuid",
                  "example": "d4330e08-b2db-401d-acf5-255396c656c1"
                },
                "type": {
                  "description": "The type of template",
                  "type": "string",
                  "enum": [
                    "email"
                  ]
                },
                "attachIcs": {
                  "description": "Whether this template should have an ics",
                  "type": "boolean",
                  "default": false
                }
              },
              "required": [
                "name",
                "organizationId",
                "type"
              ]
            }
          }
        }
      }
    },
    "TemplatePatchData": {
      "type": "object",
      "description": "Request body for updating a template",
      "properties": {
        "data": {
          "type": "object",
          "description": "The data object",
          "properties": {
            "type": {
              "description": "Type of resource",
              "type": "string"
            },
            "attributes": {
              "description": "Attributes of resource",
              "type": "object",
              "properties": {
                "name": {
                  "description": "The name for this template",
                  "type": "string"
                },
                "type": {
                  "description": "The type of template",
                  "type": "string",
                  "enum": [
                    "email"
                  ]
                },
                "attachIcs": {
                  "description": "Whether this template should have an ics",
                  "type": "boolean",
                  "default": false
                }
              }
            }
          }
        }
      }
    },
    "TemplateDataResponseArray": {
      "title": "Data Responses",
      "description": "Array of data response objects",
      "type": "array",
      "items": {
        "$ref": "#/definitions/TemplateDataResponse"
      }
    },
    "TemplateDataResponse": {
      "title": "Event Rule Data Response",
      "description": "Expected data response object for an event rule",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string"
        },
        "id": {
          "description": "UUID of resource; additional resource attributes will also be returned",
          "type": "string",
          "format": "uuid",
          "example": "8858216c-9aeb-404c-8b88-b56bdb9ba6f2"
        },
        "attributes": {
          "description": "Attributes of resource",
          "type": "object",
          "properties": {
            "name": {
              "description": "The name for this template",
              "type": "string"
            },
            "organizationId": {
              "description": "UUID of the organization to which this template belongs",
              "type": "string",
              "format": "uuid",
              "example": "67f5943cf991e36b9ad30d74be5c6e2ba040aea5"
            },
            "type": {
              "description": "The type of template",
              "type": "string",
              "enum": [
                "email"
              ]
            },
            "subjectTranslationKey": {
              "description": "The subjectTranslationKey of the template. The subjectTranslationKey must already exist. Only applicable when type is set to email",
              "default": "templates.subject",
              "type": "string"
            },
            "bodyTranslationKey": {
              "description": "The bodyTranslationKey of the template. The bodyTranslationKey must already exist.",
              "default": "templates.body",
              "type": "string"
            },
            "icsTitleTranslationKey": {
              "description": "The icsTitleTranslationKey of the template. The icsTitleTranslationKey must already exist.",
              "default": "templates.ics.title",
              "type": "string"
            },
            "icsDescriptionTranslationKey": {
              "description": "The template icsDescriptionTranslationKey of the template. The icsDescriptionTranslationKey must already exist.",
              "default": "templates.ics.description",
              "type": "string"
            },
            "icsLocationTranslationKey": {
              "description": "The template icsLocationTranslationKey of the template. The icsLocationTranslationKey must already exist.",
              "default": "templates.ics.location",
              "type": "string"
            },
            "attachIcs": {
              "description": "Whether this template should have an ics",
              "default": false,
              "type": "boolean"
            },
            "createdAt": {
              "description": "Date the resource was logged",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "updatedAt": {
              "description": "Date the resource was last modified",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "createdBy": {
              "description": "User who created the template resource",
              "type": "string",
              "format": "uuid"
            },
            "updatedBy": {
              "description": "User who updated the template resource",
              "type": [
                "string",
                null
              ],
              "format": "uuid"
            }
          }
        },
        "relationships": {
          "$ref": "#/definitions/TemplateRelationships"
        },
        "links": {
          "$ref": "#/definitions/Link"
        }
      }
    },
    "TemplateRelationships": {
      "title": "Template Relationships",
      "description": "Relationships of a template",
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/OrganizationRelationship"
        }
      },
      "required": [
        "organization"
      ]
    },
    "EventTypeDataResponseArray": {
      "title": "Data Responses",
      "description": "Array of data response objects",
      "type": "array",
      "items": {
        "$ref": "#/definitions/EventTypeDataResponse"
      }
    },
    "EventTypeDataResponse": {
      "title": "EventType Data Response",
      "description": "Expected data response object for an event",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string"
        },
        "id": {
          "description": "UUID of resource; additional resource attributes will also be returned",
          "type": "string",
          "format": "uuid",
          "example": "00000000-0000-0000-0000-000000000067"
        },
        "attributes": {
          "description": "Attributes of resource",
          "type": "object",
          "properties": {
            "name": {
              "description": "Type of event",
              "type": "string",
              "example": "appointmentConfirmed"
            }
          }
        },
        "relationships": {
          "description": "Relationships of an action",
          "type": "object"
        },
        "links": {
          "$ref": "#/definitions/Link"
        }
      }
    },
    "TransactionData": {
      "title": "Transaction data",
      "description": "Date object expected to create a transaction",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string",
          "example": "transaction"
        },
        "attributes": {
          "description": "Attributes of a transaction resource",
          "type": "object",
          "properties": {
            "organizationId": {
              "description": "UUID of the organization to which this transaction belongs",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9c"
            },
            "customerId": {
              "description": "UUID of the customer that made the transaction",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9c"
            },
            "appointmentId": {
              "description": "UUID of the appointment during which this transaction was made",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9c"
            },
            "organizationTransactionId": {
              "description": "Organization's internally identifiable ID of the transaction",
              "type": "string"
            },
            "amount": {
              "description": "The transaction amount in the smallest denomination of the currency system (e.g cent)",
              "type": "integer",
              "format": "int32",
              "example": 50050
            }
          },
          "required": [
            "organizationId",
            "customerId",
            "amount"
          ]
        }
      }
    },
    "Transaction": {
      "title": "Request object for creating a transaction",
      "type": "object",
      "description": "Request body for a permission",
      "properties": {
        "data": {
          "$ref": "#/definitions/TransactionData"
        }
      }
    },
    "TransactionDataResponseArray": {
      "title": "Data Responses",
      "description": "Array of data response objects",
      "type": "array",
      "items": {
        "$ref": "#/definitions/TransactionDataResponse"
      }
    },
    "TransactionDataResponse": {
      "title": "Data Response",
      "description": "Expected data response object for a Transaction",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string"
        },
        "id": {
          "description": "UUID of resource; additional resource attributes will also be returned",
          "type": "string",
          "format": "uuid"
        },
        "attributes": {
          "description": "Attributes of resource",
          "type": "object",
          "properties": {
            "organizationTransactionId": {
              "description": "Organization's internally identifiable ID of the transaction",
              "type": "string"
            },
            "amount": {
              "description": "Transaction amount in the smallest denomination of the currency system (e.g cent)",
              "type": "integer",
              "format": "int32"
            },
            "currency": {
              "description": "The currency of the transaction",
              "type": "string",
              "example": "USD"
            },
            "createdAt": {
              "description": "Date the resource was logged",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "updatedAt": {
              "description": "Date the resource was last modified",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "createdBy": {
              "description": "User who created the transaction resource",
              "type": "string",
              "format": "uuid"
            },
            "updatedBy": {
              "description": "User who updated the transaction resource",
              "type": [
                "string",
                null
              ],
              "format": "uuid"
            }
          }
        },
        "relationships": {
          "$ref": "#/definitions/TransactionRelationships"
        },
        "links": {
          "$ref": "#/definitions/Link"
        }
      }
    },
    "TransactionRelationships": {
      "title": "Customer Relationships",
      "description": "Relationships of a customer",
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/OrganizationRelationship"
        },
        "customer": {
          "properties": {
            "data": {
              "$ref": "#/definitions/CustomerRelationship"
            }
          }
        },
        "appointment": {
          "properties": {
            "data": {
              "$ref": "#/definitions/AppointmentRelationship"
            }
          }
        }
      },
      "required": [
        "organization",
        "customer",
        "appointment"
      ]
    },
    "CustomerRelationship": {
      "description": "Customer that the resource belongs to",
      "type": "object",
      "properties": {
        "data": {
          "properties": {
            "type": {
              "description": "Type of resource",
              "type": "string",
              "example": "customers"
            },
            "id": {
              "description": "UUID of the resource",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9c"
            }
          }
        }
      }
    },
    "AppointmentRelationship": {
      "description": "Appointment that the customer belongs to",
      "type": "object",
      "properties": {
        "data": {
          "properties": {
            "type": {
              "description": "Type of resource",
              "type": "string",
              "example": "appointments"
            },
            "id": {
              "description": "UUID of the resource",
              "type": "string",
              "format": "uuid",
              "example": "bdb88373-bf66-4bfc-a4f8-3a35be5c2f9c"
            }
          }
        }
      }
    },
    "TranslationPatch": {
      "title": "Request object for updating a translation",
      "type": "object",
      "description": "Request body for translation",
      "properties": {
        "data": {
          "$ref": "#/definitions/TranslationPatchData"
        }
      }
    },
    "TranslationPatchData": {
      "title": "Translation data",
      "description": "Date object expected to update a translation",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string"
        },
        "attributes": {
          "description": "Attributes of resource",
          "type": "object",
          "properties": {
            "value": {
              "description": "Value for a key Attribute",
              "type": "string",
              "example": "templates.subject"
            }
          }
        }
      }
    },
    "TranslationPostBodyData": {
      "type": "object",
      "description": "Request body for creating a translation",
      "properties": {
        "data": {
          "type": "object",
          "description": "The data object",
          "properties": {
            "type": {
              "description": "Type of resource",
              "type": "string"
            },
            "attributes": {
              "description": "Attributes of resource",
              "type": "object",
              "properties": {
                "locale": {
                  "description": "locale of translation",
                  "type": "string",
                  "example": "en"
                },
                "key": {
                  "description": "key of the translation",
                  "type": "string",
                  "example": "notifications.templates.subject"
                },
                "value": {
                  "description": "value of the translation",
                  "type": "string",
                  "example": "Store"
                },
                "resourceUri": {
                  "description": "resourceUri of the translation",
                  "type": "string",
                  "example": "/organizations/d94a0a2e-2e06-4037-9fd1-7b73ba298858/templates/d94a0a2e-2e06-4037-9fd1-7b73ba298858"
                }
              },
              "required": [
                "key",
                "value",
                "locale"
              ]
            }
          }
        }
      }
    },
    "TranslationDataResponse": {
      "title": "Data Response",
      "description": "Expected data response object for a translation",
      "type": "object",
      "properties": {
        "type": {
          "description": "Type of resource",
          "type": "string"
        },
        "id": {
          "description": "UUID of resource; additional resource attributes will also be returned",
          "type": "string",
          "format": "uuid"
        },
        "attributes": {
          "description": "Attributes of resource",
          "type": "object",
          "properties": {
            "locale": {
              "description": "Locale of translation",
              "type": "string"
            },
            "key": {
              "description": "Translation key",
              "type": "string"
            },
            "value": {
              "description": "Translated text",
              "type": "string"
            },
            "resourceUri": {
              "description": "resourceUri of the translation",
              "type": "string",
              "example": "/organizations/246c77ac-eaf6-4ec5-bfe2-57f91cd50a35/templates/00000000-0000-0000-0000-000000000067"
            },
            "createdAt": {
              "description": "Date the resource was created",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "updatedAt": {
              "description": "Date the resource was last modified",
              "type": "string",
              "format": "date-time",
              "example": "2018-02-03T10:30:00Z"
            },
            "createdBy": {
              "description": "User who created the translation resource",
              "type": "string",
              "format": "uuid"
            },
            "updatedBy": {
              "description": "User who updated the translation resource",
              "type": [
                "string",
                null
              ],
              "format": "uuid"
            }
          },
          "required": [
            "key",
            "value",
            "locale"
          ]
        },
        "relationships": {
          "$ref": "#/definitions/v1.0_TranslationRelationships"
        },
        "links": {
          "description": "Links for resource",
          "type": "string",
          "items": {
            "$ref": "#/definitions/Link"
          }
        }
      }
    },
    "v1.0_TranslationRelationships": {
      "title": "Translation Relationships",
      "description": "Relationships of translation",
      "type": "object",
      "properties": {
        "organization": {
          "$ref": "#/definitions/OrganizationRelationship"
        }
      },
      "required": [
        "organization"
      ]
    },
    "TranslationDataResponseArray": {
      "title": "Data Responses",
      "description": "Array of data response objects",
      "type": "array",
      "items": {
        "$ref": "#/definitions/TranslationDataResponse"
      }
    }
  },
  "responses": {
    "DeleteResponse": {
      "description": "Returns the UUID of deleted resource",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "description": "The data object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "example": "00000000-0000-0000-0000-000000000067"
              }
            }
          }
        }
      }
    },
    "Found401Errors": {
      "description": "Unauthorized",
      "schema": {
        "type": "object",
        "properties": {
          "errors": {
            "$ref": "#/definitions/ErrorArray"
          }
        },
        "example": {
          "errors": [
            {
              "status": 401,
              "title": "Unauthorized",
              "detail": "Error Detail Information",
              "meta": {}
            }
          ]
        }
      }
    },
    "Found403Errors": {
      "description": "Forbidden",
      "schema": {
        "type": "object",
        "properties": {
          "errors": {
            "$ref": "#/definitions/ErrorArray"
          }
        },
        "example": {
          "errors": [
            {
              "status": 403,
              "title": "Forbidden",
              "detail": "Error Detail Information",
              "meta": {}
            }
          ]
        }
      }
    },
    "Found404Errors": {
      "description": "Not Found",
      "schema": {
        "type": "object",
        "properties": {
          "errors": {
            "$ref": "#/definitions/ErrorArray"
          }
        },
        "example": {
          "errors": [
            {
              "status": 404,
              "title": "Not Found",
              "detail": "Error Detail Information",
              "meta": {}
            }
          ]
        }
      }
    },
    "Found500Errors": {
      "description": "Internal Server Error",
      "schema": {
        "type": "object",
        "properties": {
          "errors": {
            "$ref": "#/definitions/ErrorArray"
          }
        },
        "example": {
          "errors": [
            {
              "status": 500,
              "title": "Internal Server Error",
              "detail": "Error Detail Information",
              "meta": {}
            }
          ]
        }
      }
    },
    "FoundSingleAppointment": {
      "description": "Return a single data response",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/AppointmentDataResponse"
          },
          "links": {
            "$ref": "#/definitions/Link"
          }
        },
        "required": [
          "data"
        ]
      }
    },
    "FoundAppointmentArray": {
      "description": "Return an array of data responses",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/AppointmentDataResponseArray"
          },
          "links": {
            "$ref": "#/definitions/Pagination"
          }
        },
        "required": [
          "links",
          "data"
        ]
      }
    },
    "FoundSingleAnswer": {
      "description": "Return a single data response",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/AppointmentAnswerDataResponse"
          },
          "links": {
            "$ref": "#/definitions/Link"
          }
        },
        "required": [
          "data"
        ]
      }
    },
    "FoundAnswerArray": {
      "description": "Return an array of data responses",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/AppointmentAnswerDataResponseArray"
          },
          "links": {
            "$ref": "#/definitions/Pagination"
          }
        },
        "required": [
          "links",
          "data"
        ]
      }
    },
    "JwtResponseSimple": {
      "description": "Returns a JSON Web Token to be used to authorize requests",
      "schema": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "JSON Web Token that is used to authorize requests"
          },
          "tokenType": {
            "type": "string",
            "description": "Type of token that is returned"
          },
          "expiresIn": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "token",
          "tokenType",
          "expiresIn"
        ]
      }
    },
    "FoundCustomerSingle": {
      "description": "Return a single data response",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/CustomerDataResponse"
          },
          "links": {
            "$ref": "#/definitions/Link"
          }
        },
        "required": [
          "data"
        ]
      }
    },
    "FoundCustomerArray": {
      "description": "Return an array of data responses",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/CustomerDataResponseArray"
          },
          "links": {
            "$ref": "#/definitions/Pagination"
          }
        },
        "required": [
          "links",
          "data"
        ]
      }
    },
    "FoundSingleHour": {
      "description": "Return a single data response",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/HourDataResponse"
          },
          "links": {
            "$ref": "#/definitions/Link"
          }
        },
        "required": [
          "data"
        ]
      }
    },
    "FoundHourArray": {
      "description": "Return an array of data responses",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/HourDataResponseArray"
          },
          "links": {
            "$ref": "#/definitions/Pagination"
          }
        },
        "required": [
          "links",
          "data"
        ]
      }
    },
    "FoundResourceTimeslotArray": {
      "description": "Return an array of resource time slots",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/DataResponseResourceTimeslotArray"
          },
          "links": {
            "$ref": "#/definitions/TimeslotsLinks"
          },
          "included": {
            "$ref": "#/definitions/IncludedResourceArray"
          }
        },
        "required": [
          "links",
          "data",
          "included"
        ]
      }
    },
    "FoundSingleAction": {
      "description": "Return a single data response",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/ActionDataResponse"
          },
          "links": {
            "$ref": "#/definitions/Link"
          }
        },
        "required": [
          "data"
        ]
      }
    },
    "FoundActionArray": {
      "description": "Return an array of data responses",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/ActionDataResponseArray"
          },
          "links": {
            "$ref": "#/definitions/Pagination"
          }
        },
        "required": [
          "links",
          "data"
        ]
      }
    },
    "FoundSingleTemplate": {
      "description": "Return a single data response",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/TemplateDataResponse"
          },
          "links": {
            "$ref": "#/definitions/Link"
          }
        },
        "required": [
          "data"
        ]
      }
    },
    "FoundTemplateArray": {
      "description": "Return an array of data responses",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/TemplateDataResponseArray"
          },
          "links": {
            "$ref": "#/definitions/Pagination"
          }
        },
        "required": [
          "links",
          "data"
        ]
      }
    },
    "FoundEventTypeArray": {
      "description": "Return an array of data responses",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/EventTypeDataResponseArray"
          },
          "links": {
            "$ref": "#/definitions/Pagination"
          }
        },
        "required": [
          "links",
          "data"
        ]
      }
    },
    "FoundSingleTransaction": {
      "description": "Return a single data response",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/TransactionDataResponse"
          },
          "links": {
            "$ref": "#/definitions/Link"
          }
        },
        "required": [
          "data"
        ]
      }
    },
    "FoundTransactionArray": {
      "description": "Return an array of data responses",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/TransactionDataResponseArray"
          },
          "links": {
            "$ref": "#/definitions/Pagination"
          }
        },
        "required": [
          "links",
          "data"
        ]
      }
    },
    "FoundTranslationSingle": {
      "description": "Return a single data response",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/TranslationDataResponse"
          },
          "links": {
            "$ref": "#/definitions/Link"
          }
        },
        "required": [
          "data"
        ]
      }
    },
    "FoundTranslationArray": {
      "description": "Return an array of data responses",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/TranslationDataResponseArray"
          },
          "links": {
            "$ref": "#/definitions/Pagination"
          }
        },
        "required": [
          "data",
          "links"
        ]
      }
    }
  }
}
