Weave Scheduling API

Appointments, appointment types, schedules, and calendar events.

OpenAPI Specification

weave-hq-scheduling-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Weave Contacts Scheduling API
  description: 'The Weave API is the developer surface of the Weave customer/patient communication and payments platform for small healthcare businesses (dental, optometry, veterinary, medical, and specialty practices). It exposes REST resources across messaging (SMS/text), phone and calls, contacts, scheduling and appointments, payments, digital forms, reviews, and event subscriptions.


    Base URL is https://api.weaveconnect.com. Requests are authenticated with an OAuth 2.0 bearer access token issued by Weave''s OIDC provider (https://oidc.weaveconnect.com, token endpoint under https://auth.weaveconnect.com/oauth2/default) and are scoped to a location (sub-account); the location is identified by a `location_id` query parameter or header on most endpoints.


    Grounding note: the public Weave Developer Portal (https://dp.getweave.com) requires a developer login, so the authoritative request/response schemas could not be read directly. The paths and base URL below are grounded in Weave''s own published Developer Portal client (the app''s compiled configuration and API calls against https://api.weaveconnect.com). Path coverage is therefore high-confidence, while request bodies, query parameters, and response schemas are modeled and should be reconciled against the official reference once portal access is available.'
  version: '1.0'
  contact:
    name: Weave
    url: https://www.getweave.com
  license:
    name: Proprietary
    url: https://www.getweave.com/legal/terms/
servers:
- url: https://api.weaveconnect.com
  description: Weave production API
security:
- oauth2: []
- bearerAuth: []
tags:
- name: Scheduling
  description: Appointments, appointment types, schedules, and calendar events.
paths:
  /api/v2/appointments:
    get:
      operationId: listAppointments
      tags:
      - Scheduling
      summary: List appointments
      description: Lists appointments for a location within an optional date range.
      parameters:
      - $ref: '#/components/parameters/LocationId'
      - name: start
        in: query
        required: false
        schema:
          type: string
          format: date
      - name: end
        in: query
        required: false
        schema:
          type: string
          format: date
      responses:
        '200':
          description: A list of appointments.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Appointment'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /api/v2/appointment-types:
    get:
      operationId: listAppointmentTypes
      tags:
      - Scheduling
      summary: List appointment types
      description: Lists the appointment types configured for a location.
      parameters:
      - $ref: '#/components/parameters/LocationId'
      responses:
        '200':
          description: A list of appointment types.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v3/schedules:
    get:
      operationId: listSchedules
      tags:
      - Scheduling
      summary: List schedules
      description: Lists provider/operatory schedules available for online booking.
      parameters:
      - $ref: '#/components/parameters/LocationId'
      responses:
        '200':
          description: A list of schedules.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v3/calendars/events:
    get:
      operationId: listCalendarEvents
      tags:
      - Scheduling
      summary: List calendar events
      description: Lists calendar events for a location.
      parameters:
      - $ref: '#/components/parameters/LocationId'
      responses:
        '200':
          description: A list of calendar events.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /api/v2/booking/email-request:
    post:
      operationId: createBookingEmailRequest
      tags:
      - Scheduling
      summary: Submit an online booking request
      description: Submits an online booking (appointment request) to the practice.
      parameters:
      - $ref: '#/components/parameters/LocationId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: Booking request accepted.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  responses:
    Unauthorized:
      description: Missing or invalid access token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
    Appointment:
      type: object
      properties:
        id:
          type: string
          format: uuid
        person_id:
          type: string
          format: uuid
        type:
          type: string
        status:
          type: string
        start_time:
          type: string
          format: date-time
        end_time:
          type: string
          format: date-time
        provider:
          type: string
  parameters:
    LocationId:
      name: location_id
      in: query
      required: false
      description: The Weave location (sub-account) the request is scoped to. Required on most endpoints; may alternatively be supplied via a location header.
      schema:
        type: string
        format: uuid
  securitySchemes:
    oauth2:
      type: oauth2
      description: 'OAuth 2.0 access token issued by Weave''s OIDC provider. Authorization and token endpoints are served under https://auth.weaveconnect.com/oauth2/default (issuer https://oidc.weaveconnect.com). Present as `Authorization: Bearer ACCESS_TOKEN`.'
      flows:
        authorizationCode:
          authorizationUrl: https://auth.weaveconnect.com/oauth2/default/v1/authorize
          tokenUrl: https://auth.weaveconnect.com/oauth2/default/v1/token
          scopes: {}
    bearerAuth:
      type: http
      scheme: bearer
      description: 'OAuth 2.0 bearer access token passed as `Authorization: Bearer ACCESS_TOKEN`.'