{
  "info": {
    "name": "Weave API",
    "description": "Developer surface of the Weave customer/patient communication and payments platform for small healthcare businesses. Base URL: https://api.weaveconnect.com. Authenticated with an OAuth 2.0 bearer access token issued by Weave's OIDC provider (auth.weaveconnect.com/oauth2/default). Most requests are scoped to a location via the location_id parameter. Paths are grounded in Weave's Developer Portal client; request/response detail is modeled and should be reconciled against the login-gated reference at dp.getweave.com.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      { "key": "token", "value": "{{accessToken}}", "type": "string" }
    ]
  },
  "variable": [
    { "key": "baseUrl", "value": "https://api.weaveconnect.com", "type": "string" },
    { "key": "accessToken", "value": "", "type": "string" },
    { "key": "locationId", "value": "", "type": "string" }
  ],
  "item": [
    {
      "name": "Messaging",
      "item": [
        {
          "name": "List messages",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/messages?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "messages"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists SMS/text messages for a location."
          }
        },
        {
          "name": "Send a message",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"person_id\": \"\",\n  \"body\": \"Your appointment is confirmed.\"\n}" },
            "url": { "raw": "{{baseUrl}}/v1/messages?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "messages"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Sends an SMS/text message from the location to a patient."
          }
        },
        {
          "name": "List chart-thread messages",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/chart-messages?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "chart-messages"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists messages within a patient chart/message thread."
          }
        },
        {
          "name": "Get bulk-message quota",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/account/bulk-message-quota?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "account", "bulk-message-quota"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Returns the remaining bulk (mass-text) message quota for the account."
          }
        },
        {
          "name": "List SMS phone numbers",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/sms-phone-numbers?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "sms-phone-numbers"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists the SMS-capable phone numbers configured for the location."
          }
        },
        {
          "name": "Send a Quick Fill message",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"person_ids\": [\"\"],\n  \"body\": \"We just had an opening. Reply YES to book.\"\n}" },
            "url": { "raw": "{{baseUrl}}/api/v2/quick-fill/message/send?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["api", "v2", "quick-fill", "message", "send"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Texts an open-appointment (Quick Fill) offer to one or more contacts."
          }
        },
        {
          "name": "Get Quick Fill message history",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/api/v2/quick-fill/message/history?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["api", "v2", "quick-fill", "message", "history"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Returns the history of Quick Fill messages sent from the location."
          }
        }
      ]
    },
    {
      "name": "Phone & Calls",
      "item": [
        {
          "name": "List call records",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/call-records?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "call-records"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists inbound and outbound call records for a location."
          }
        },
        {
          "name": "List call recordings",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/call-recordings?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "call-recordings"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists available call recordings for a location."
          }
        },
        {
          "name": "Get a call recording signed URL",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/call-recording/signed-url?location_id={{locationId}}&recording_id=", "host": ["{{baseUrl}}"], "path": ["v1", "call-recording", "signed-url"], "query": [{ "key": "location_id", "value": "{{locationId}}" }, { "key": "recording_id", "value": "" }] },
            "description": "Returns a short-lived signed URL to download a specific call recording."
          }
        },
        {
          "name": "List voicemail messages",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/voicemail-messages?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "voicemail-messages"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists voicemail messages for a location."
          }
        },
        {
          "name": "List call queues",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/call-queues?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "call-queues"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists the call queues configured for a location."
          }
        },
        {
          "name": "Get call queue metrics",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/call-queues/metrics?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "call-queues", "metrics"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Returns performance metrics for the location's call queues."
          }
        },
        {
          "name": "List department phone numbers",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/department/phone-numbers?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "department", "phone-numbers"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists phone numbers assigned to departments within a location."
          }
        }
      ]
    },
    {
      "name": "Contacts",
      "item": [
        {
          "name": "List contacts",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/contacts?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "contacts"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists the contacts (patients/customers) for a location."
          }
        },
        {
          "name": "Search contacts",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"query\": \"jane\"\n}" },
            "url": { "raw": "{{baseUrl}}/v1/contacts/search?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "contacts", "search"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Searches contacts by name, phone, email, or other attributes."
          }
        },
        {
          "name": "List contact info records",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/contact-infos?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "contact-infos"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists contact-info records (phone numbers, emails) for a location's contacts."
          }
        },
        {
          "name": "Block a contact",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"person_id\": \"\"\n}" },
            "url": { "raw": "{{baseUrl}}/v1/contacts/block?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "contacts", "block"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Blocks a contact from receiving messages from the location."
          }
        },
        {
          "name": "Unblock a contact",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"person_id\": \"\"\n}" },
            "url": { "raw": "{{baseUrl}}/v1/contacts/unblock?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "contacts", "unblock"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Unblocks a previously blocked contact."
          }
        }
      ]
    },
    {
      "name": "Scheduling",
      "item": [
        {
          "name": "List appointments",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/api/v2/appointments?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["api", "v2", "appointments"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists appointments for a location within an optional date range."
          }
        },
        {
          "name": "List appointment types",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/api/v2/appointment-types?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["api", "v2", "appointment-types"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists the appointment types configured for a location."
          }
        },
        {
          "name": "List schedules",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v3/schedules?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v3", "schedules"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists provider/operatory schedules available for online booking."
          }
        },
        {
          "name": "List calendar events",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v3/calendars/events?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v3", "calendars", "events"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists calendar events for a location."
          }
        },
        {
          "name": "Submit an online booking request",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"first_name\": \"\",\n  \"last_name\": \"\",\n  \"email\": \"\",\n  \"requested_time\": \"\"\n}" },
            "url": { "raw": "{{baseUrl}}/api/v2/booking/email-request?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["api", "v2", "booking", "email-request"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Submits an online booking (appointment request) to the practice."
          }
        }
      ]
    },
    {
      "name": "Payments",
      "item": [
        {
          "name": "List payment methods",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/payment-methods?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "payment-methods"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists stored payment methods (cards on file) for a location's patients."
          }
        },
        {
          "name": "List finance-account payment methods",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/finance/account/payment_methods?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "finance", "account", "payment_methods"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists the payment methods attached to the location's Weave Payments finance account."
          }
        }
      ]
    },
    {
      "name": "Forms",
      "item": [
        {
          "name": "List forms",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/forms?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "forms"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists the digital forms configured for a location."
          }
        },
        {
          "name": "List digital form templates",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/digitalforms?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "digitalforms"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists the digital-form templates available to a location."
          }
        },
        {
          "name": "Create form links",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"form_ids\": [\"\"],\n  \"person_id\": \"\"\n}" },
            "url": { "raw": "{{baseUrl}}/v1/create-form-links?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "create-form-links"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Generates patient-facing links to one or more forms for sending."
          }
        },
        {
          "name": "Retrieve submitted forms",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/retrieve-forms?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "retrieve-forms"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Retrieves submitted form documents for a location."
          }
        },
        {
          "name": "Mark a form submission complete",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"submission_id\": \"\"\n}" },
            "url": { "raw": "{{baseUrl}}/v1/complete-form?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "complete-form"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Marks a submitted form as complete/processed."
          }
        }
      ]
    },
    {
      "name": "Reviews",
      "item": [
        {
          "name": "Get provider review data",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/provider-review?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "provider-review"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Returns review data associated with a provider/location."
          }
        },
        {
          "name": "Get review-request completion",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/review/completion?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "review", "completion"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Returns completion status/metrics for review requests sent from a location."
          }
        },
        {
          "name": "Get business listing status",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/kiosk/listing-status?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "kiosk", "listing-status"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Returns the status of the location's online business listing."
          }
        }
      ]
    },
    {
      "name": "Events",
      "item": [
        {
          "name": "List events",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/v1/events?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "events"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Lists platform events (calls, messages, appointments, payments, forms) for a location."
          }
        },
        {
          "name": "Subscribe to an event stream",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"topic\": \"message.received\"\n}" },
            "url": { "raw": "{{baseUrl}}/v1/subscribe?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "subscribe"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Subscribes a client to a single event stream/topic."
          }
        },
        {
          "name": "Subscribe to multiple event streams",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"topics\": [\"message.received\", \"call.completed\"]\n}" },
            "url": { "raw": "{{baseUrl}}/v1/subscribe/multi?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "subscribe", "multi"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Subscribes a client to multiple event streams/topics at once."
          }
        },
        {
          "name": "Unsubscribe from an event stream",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"topic\": \"message.received\"\n}" },
            "url": { "raw": "{{baseUrl}}/v1/unsubscribe?location_id={{locationId}}", "host": ["{{baseUrl}}"], "path": ["v1", "unsubscribe"], "query": [{ "key": "location_id", "value": "{{locationId}}" }] },
            "description": "Unsubscribes a client from an event stream/topic."
          }
        }
      ]
    }
  ]
}
