{
  "info": {
    "name": "BloomText API 1.0.0",
    "description": "Generated from the BloomText OpenAPI spec (1.0.0). Set the api_key variable to your API key. When the key reaches more than one organization, set org_id and switch on the org_id parameter. Requests whose description says BloomText turns them on are features turned on per account. Docs: https://www.bloomtext.com/developers/api/",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_key}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://api.bloomtext.com/v1"
    },
    {
      "key": "api_key",
      "value": ""
    },
    {
      "key": "org_id",
      "value": ""
    }
  ],
  "item": [
    {
      "name": "Organization",
      "item": [
        {
          "name": "Retrieve the organization",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/organization",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "organization"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the organization the API key or access token belongs to. Works with any valid credential and scope, so it's a quick way to check a key or token."
          }
        }
      ]
    },
    {
      "name": "Patients",
      "item": [
        {
          "name": "Find patients",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/patients",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patients"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                },
                {
                  "key": "phone",
                  "value": "",
                  "description": "A phone number, in any common format.",
                  "disabled": true
                },
                {
                  "key": "mrn",
                  "value": "",
                  "description": "The patient's ID in your system.",
                  "disabled": true
                },
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Finds the patients with a phone number or MRN. Pass at least one of `phone` or `mrn`; there's no way to list the whole directory. A phone number can match several patients, like a shared family phone."
          }
        },
        {
          "name": "Create a patient",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/patients",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patients"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Creates a patient, or returns the existing one that matches by MRN, then phone, then email. A new patient returns `201`; a match returns `200` with `matched_by` and doesn't change the existing record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"first_name\": \"Jane\",\n  \"last_name\": \"Doe\",\n  \"date_of_birth\": \"1986-04-12\",\n  \"phone\": \"(512) 555-0143\",\n  \"mrn\": \"MRN-20931\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Retrieve a patient",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/patients/:patientId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patients",
                ":patientId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "patientId",
                  "value": "",
                  "description": "ID of the patient."
                }
              ]
            },
            "description": "Returns a patient."
          }
        },
        {
          "name": "Update a patient",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/patients/:patientId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patients",
                ":patientId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "patientId",
                  "value": "",
                  "description": "ID of the patient."
                }
              ]
            },
            "description": "Updates the fields you send and leaves the rest unchanged.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone\": \"+15125550177\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete a patient",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/patients/:patientId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patients",
                ":patientId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "patientId",
                  "value": "",
                  "description": "ID of the patient."
                }
              ]
            },
            "description": "Deletes a patient record, as deleting a patient in BloomText does. Their conversations stay in BloomText for your records and for the staff in them. Pending campaign messages to the patient are cancelled."
          }
        }
      ]
    },
    {
      "name": "Patient imports",
      "item": [
        {
          "name": "Import patients",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/patient-imports",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patient-imports"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nStarts importing up to 10,000 patients in the background. Send JSON, or CSV with `Content-Type text/csv` and the columns first_name, last_name, dob, mrn, phone, email. Each row is matched like Create a patient.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"patients\": [\n    {\n      \"first_name\": \"Jane\",\n      \"last_name\": \"Doe\",\n      \"date_of_birth\": \"1986-04-12\",\n      \"phone\": \"(512) 555-0143\",\n      \"mrn\": \"MRN-20931\"\n    },\n    {\n      \"first_name\": \"John\",\n      \"last_name\": \"Doe\",\n      \"phone\": \"512-555-0188\",\n      \"mrn\": \"MRN-20932\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Retrieve an import",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/patient-imports/:importId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patient-imports",
                ":importId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "importId",
                  "value": "",
                  "description": "ID of the import."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nReturns an import's progress and, once it finishes, the outcome of every row."
          }
        }
      ]
    },
    {
      "name": "Patient messages",
      "item": [
        {
          "name": "List patient messages",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/patient-messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patient-messages"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                },
                {
                  "key": "after",
                  "value": "",
                  "description": "Only messages sent at or after this time. An RFC 3339 timestamp, or a date for midnight in the organization's time zone.",
                  "disabled": true
                },
                {
                  "key": "before",
                  "value": "",
                  "description": "Only messages sent before this time. Same format as `after`.",
                  "disabled": true
                },
                {
                  "key": "group_by",
                  "value": "message",
                  "description": "`message` (the default) lists messages one by one across conversations. `conversation` lists every message in the range from one conversation, then the next.",
                  "disabled": true
                },
                {
                  "key": "order",
                  "value": "desc",
                  "description": "`desc` for newest first (the default) or `asc` for oldest first. With `group_by=conversation`, it orders the conversations by their latest message and the messages within each.",
                  "disabled": true
                },
                {
                  "key": "patient_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Only conversations with this patient, on any phone number.",
                  "disabled": true
                },
                {
                  "key": "conversation_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Only messages in this conversation.",
                  "disabled": true
                },
                {
                  "key": "q",
                  "value": "",
                  "description": "Words and operators to search for, like `refill from:patient is:failed`. Supports free text, `\"exact phrases\"`, `from:`, `patient:`, `mrn:`, `phone:`, `is:failed`, `-` to negate, and `OR`; with OAuth, also `is:unread`. Use `after` and `before` for time ranges. See Search.",
                  "disabled": true
                },
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Lists messages in patient conversations in a time range, newest first, with a cursor. `group_by=message` (the default) returns them one by one; `group_by=conversation` returns every message in the range from one conversation before moving to the next. Narrow to one patient or conversation, or search with `q`. Messages include everyone's in each conversation: the patient, staff, and API keys. With an API key, pass `after`, `patient_id`, or `conversation_id`."
          }
        },
        {
          "name": "Send a message to a patient",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/patient-messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patient-messages"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Sends a message to a patient by `patient_id` or phone number, from one of the organization's numbers: `from`, else the key's default number, else the organization's only number. An organization with several numbers and no default answers 422 `from_required`. The message goes in that number's team's conversation with the patient, and comes from the API identity the key belongs to (an automated sender on the account, never a staff member); until identities are on for the account, it shows the key's name with an API marker. BloomText finds the patient (or creates one for a new phone number), finds or starts the conversation, and sends. Messages go by secure link unless `channel` is `sms`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": {\n    \"patient_id\": \"5a1c9e2b-7d44-4f1a-9c3e-2b8d6f0a1e77\"\n  },\n  \"body\": \"Hi Jane, Dr. Example moved your appointment to Friday at 9:00. Reply here with any questions.\",\n  \"channel\": \"secure\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Send messages to patients in a batch",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/messages:batch",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "messages:batch"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Sends up to 60 messages in one request. Each item is the body of a single send and is checked the same way: recipient, channel, phone number, and opt-out. The batch counts as one request toward the per-second and per-minute request limits, and each message counts toward the per-minute message limit. All of an organization's API keys share these limits. One `Idempotency-Key` covers the whole batch: retry with the same key and the same body to get the same results without sending anything twice.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messages\": [\n    {\n      \"to\": \"\",\n      \"body\": \"\",\n      \"channel\": \"secure\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Retrieve a patient message",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/patient-messages/:messageId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patient-messages",
                ":messageId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "messageId",
                  "value": "",
                  "description": "ID of the message."
                }
              ]
            },
            "description": "Returns one message in a patient conversation, with its delivery status. Use it to check whether a text reached the patient."
          }
        }
      ]
    },
    {
      "name": "Patient conversations",
      "item": [
        {
          "name": "List patient conversations",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/patient-conversations",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patient-conversations"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                },
                {
                  "key": "after",
                  "value": "",
                  "description": "Only messages sent at or after this time. An RFC 3339 timestamp, or a date for midnight in the organization's time zone.",
                  "disabled": true
                },
                {
                  "key": "before",
                  "value": "",
                  "description": "Only messages sent before this time. Same format as `after`.",
                  "disabled": true
                },
                {
                  "key": "patient_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Only conversations with this patient, on any phone number.",
                  "disabled": true
                },
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Lists patient conversations with messages in a time range, most recently active first, each with its latest message and how many messages fell in the range. Filter to one patient with `patient_id`. Every request passes `after` or `patient_id`, so a read is always bounded; there's no search by patient name."
          }
        },
        {
          "name": "Retrieve a patient conversation",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/patient-conversations/:conversationId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "patient-conversations",
                ":conversationId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "conversationId",
                  "value": "",
                  "description": "ID of the conversation."
                }
              ]
            },
            "description": "Returns a patient conversation: the patient, its phone number, and its channel."
          }
        }
      ]
    },
    {
      "name": "Phone numbers",
      "item": [
        {
          "name": "List phone numbers",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/phone-numbers",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "phone-numbers"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Lists the clinic phone numbers messages to patients can come from, each with the team it belongs to: every number in the organization. `is_default` marks the number a send uses when it leaves out `from`: the key's default number, or the organization's only number."
          }
        }
      ]
    },
    {
      "name": "Campaigns",
      "item": [
        {
          "name": "List campaigns",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/campaigns",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "campaigns"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "draft",
                  "description": "Only campaigns with this status.",
                  "disabled": true
                },
                {
                  "key": "archived",
                  "value": "false",
                  "description": "List archived campaigns instead of active ones.",
                  "disabled": true
                },
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nLists the organization's campaigns, newest first. Archived campaigns are left out unless `archived=true`."
          }
        },
        {
          "name": "Create a campaign",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/campaigns",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "campaigns"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nCreates a draft campaign. Add recipients, then start it. Every recipient gets the same message, from the phone number you choose. It's sent from the API identity the key belongs to; until identities are on for the account, it shows the key's name.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Flu shot reminders, October\",\n  \"body\": \"Flu shots are available at Northside Clinic. Reply here to book a time.\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Retrieve a campaign",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/campaigns/:campaignId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "campaigns",
                ":campaignId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "campaignId",
                  "value": "",
                  "description": "ID of the campaign."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nReturns a campaign with its progress counts."
          }
        },
        {
          "name": "Update a campaign",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/campaigns/:campaignId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "campaigns",
                ":campaignId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "campaignId",
                  "value": "",
                  "description": "ID of the campaign."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nChanges a campaign's name, message, channel, phone number, or pace while it's a draft or paused, and archives or unarchives it when it isn't running.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"send_interval_seconds\": 2\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete a campaign",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/campaigns/:campaignId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "campaigns",
                ":campaignId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "campaignId",
                  "value": "",
                  "description": "ID of the campaign."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nDeletes a draft campaign. A campaign that has started can't be deleted, because its messages are in patients' conversations; archive it instead."
          }
        },
        {
          "name": "List campaign recipients",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/campaigns/:campaignId/recipients",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "campaigns",
                ":campaignId",
                "recipients"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "pending",
                  "description": "Only recipients with this status.",
                  "disabled": true
                },
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "campaignId",
                  "value": "",
                  "description": "ID of the campaign."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nLists a campaign's recipients in the order they're sent, each with its delivery status."
          }
        },
        {
          "name": "Add campaign recipients",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/campaigns/:campaignId/recipients",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "campaigns",
                ":campaignId",
                "recipients"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "campaignId",
                  "value": "",
                  "description": "ID of the campaign."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nAdds up to 10,000 patients to a campaign that isn't completed or stopped. Unknown patient IDs, and patients already on the campaign, are skipped and listed in `skipped`. Recipients added to a running campaign are sent after the ones already waiting.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"patient_ids\": [\n    \"5a1c9e2b-7d44-4f1a-9c3e-2b8d6f0a1e77\",\n    \"9e0d3f7a-2c1b-4e8d-a5f6-7b3c2d1e0f98\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Remove campaign recipients",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/campaigns/:campaignId/recipients/remove",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "campaigns",
                ":campaignId",
                "recipients",
                "remove"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "campaignId",
                  "value": "",
                  "description": "ID of the campaign."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nRemoves patients from a campaign before they're sent. Patients already sent to are skipped and listed in `skipped`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"patient_ids\": [\n    \"5a1c9e2b-7d44-4f1a-9c3e-2b8d6f0a1e77\",\n    \"9e0d3f7a-2c1b-4e8d-a5f6-7b3c2d1e0f98\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Start a campaign",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/campaigns/:campaignId/start",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "campaigns",
                ":campaignId",
                "start"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "campaignId",
                  "value": "",
                  "description": "ID of the campaign."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nStarts sending a draft campaign, or resumes a paused one. Messages go out one at a time, `send_interval_seconds` apart."
          }
        },
        {
          "name": "Pause a campaign",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/campaigns/:campaignId/pause",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "campaigns",
                ":campaignId",
                "pause"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "campaignId",
                  "value": "",
                  "description": "ID of the campaign."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nStops sending after the message in progress. Start the campaign again to resume where it left off."
          }
        },
        {
          "name": "Stop a campaign",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/campaigns/:campaignId/stop",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "campaigns",
                ":campaignId",
                "stop"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "campaignId",
                  "value": "",
                  "description": "ID of the campaign."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nStops a running or paused campaign for good. Recipients not yet sent are cancelled. A stopped campaign can't be started again."
          }
        }
      ]
    },
    {
      "name": "Profile",
      "item": [
        {
          "name": "Retrieve the profile",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/me",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "me"
              ],
              "query": [],
              "variable": []
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nReturns the person who connected your app, their organization, the scopes they granted, and when the grant expires."
          }
        }
      ]
    },
    {
      "name": "Messages",
      "item": [
        {
          "name": "List messages",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/me/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "me",
                "messages"
              ],
              "query": [
                {
                  "key": "after",
                  "value": "",
                  "description": "Only messages sent at or after this time. An RFC 3339 timestamp, or a date for midnight in the organization's time zone.",
                  "disabled": true
                },
                {
                  "key": "before",
                  "value": "",
                  "description": "Only messages sent before this time. Same format as `after`.",
                  "disabled": true
                },
                {
                  "key": "group_by",
                  "value": "message",
                  "description": "`message` (the default) lists messages one by one across conversations. `conversation` lists every message in the range from one conversation, then the next.",
                  "disabled": true
                },
                {
                  "key": "order",
                  "value": "desc",
                  "description": "`desc` for newest first (the default) or `asc` for oldest first. With `group_by=conversation`, it orders the conversations by their latest message and the messages within each.",
                  "disabled": true
                },
                {
                  "key": "conversation_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Only messages in this conversation.",
                  "disabled": true
                },
                {
                  "key": "patient_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Only conversations with this patient, on any phone number.",
                  "disabled": true
                },
                {
                  "key": "q",
                  "value": "",
                  "description": "Words and operators to search for, like `refill from:patient is:failed`. Supports free text, `\"exact phrases\"`, `from:`, `patient:`, `mrn:`, `phone:`, `is:failed`, `-` to negate, and `OR`; with OAuth, also `is:unread`. Use `after` and `before` for time ranges. See Search.",
                  "disabled": true
                },
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nLists messages in the connected person's own conversations, team chats and patient conversations alike, in a time range, newest first, with a cursor. `group_by=message` (the default) returns them one by one; `group_by=conversation` returns every message in the range from one conversation before moving to the next. A conversation's messages include everyone's, not only the person's own."
          }
        },
        {
          "name": "Retrieve a message",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/me/messages/:messageId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "me",
                "messages",
                ":messageId"
              ],
              "query": [],
              "variable": [
                {
                  "key": "messageId",
                  "value": "",
                  "description": "ID of the message."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nReturns one message in the connected person's own conversations."
          }
        },
        {
          "name": "Send a message",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/me/conversations/:conversationId/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "me",
                "conversations",
                ":conversationId",
                "messages"
              ],
              "query": [],
              "variable": [
                {
                  "key": "conversationId",
                  "value": "",
                  "description": "ID of the conversation."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nSends a text message as the connected person in one of their own conversations, a team chat or a patient conversation, and marks it as read for them. Set `reply_to_message_id` to reply in a thread. To message a patient by patient ID or phone number, use Send a message to a patient.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"body\": \"Friday at 9:00 works. You are all set.\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Reactions",
      "item": [
        {
          "name": "List reactions",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/me/messages/:messageId/reactions",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "me",
                "messages",
                ":messageId",
                "reactions"
              ],
              "query": [
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "messageId",
                  "value": "",
                  "description": "ID of the message."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nLists the emoji reactions on a message."
          }
        },
        {
          "name": "Add a reaction",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/me/messages/:messageId/reactions",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "me",
                "messages",
                ":messageId",
                "reactions"
              ],
              "query": [],
              "variable": [
                {
                  "key": "messageId",
                  "value": "",
                  "description": "ID of the message."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nAdds an emoji reaction to a message as the user.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"emoji\": \"👍\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Remove a reaction",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/me/messages/:messageId/reactions?emoji=",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "me",
                "messages",
                ":messageId",
                "reactions"
              ],
              "query": [
                {
                  "key": "emoji",
                  "value": "",
                  "description": "The exact emoji the user reacted with.",
                  "disabled": false
                }
              ],
              "variable": [
                {
                  "key": "messageId",
                  "value": "",
                  "description": "ID of the message."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nRemoves the user's reaction from a message. Reactions have no ID of their own, so pass the exact emoji."
          }
        }
      ]
    },
    {
      "name": "Conversations",
      "item": [
        {
          "name": "List conversations",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/me/conversations",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "me",
                "conversations"
              ],
              "query": [
                {
                  "key": "after",
                  "value": "",
                  "description": "Only messages sent at or after this time. An RFC 3339 timestamp, or a date for midnight in the organization's time zone.",
                  "disabled": true
                },
                {
                  "key": "before",
                  "value": "",
                  "description": "Only messages sent before this time. Same format as `after`.",
                  "disabled": true
                },
                {
                  "key": "patient_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Only conversations with this patient, on any phone number.",
                  "disabled": true
                },
                {
                  "key": "q",
                  "value": "",
                  "description": "Words and operators to filter conversations by, like `is:unread doe`. Free text matches conversation titles and participant names. Also supports `is:unread` and `with:` a user or patient ID. See Search.",
                  "disabled": true
                },
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nLists the connected person's own conversations, team chats and patient conversations alike, with messages in a time range, most recently active first, each with its latest message and how many messages fell in the range."
          }
        },
        {
          "name": "Retrieve a conversation",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/me/conversations/:conversationId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "me",
                "conversations",
                ":conversationId"
              ],
              "query": [],
              "variable": [
                {
                  "key": "conversationId",
                  "value": "",
                  "description": "ID of the conversation."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nReturns one of the connected person's own conversations, with their unread count."
          }
        }
      ]
    },
    {
      "name": "Participants",
      "item": [
        {
          "name": "List participants",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/me/conversations/:conversationId/participants",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "me",
                "conversations",
                ":conversationId",
                "participants"
              ],
              "query": [
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "conversationId",
                  "value": "",
                  "description": "ID of the conversation."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nLists the staff and patients in a conversation."
          }
        }
      ]
    },
    {
      "name": "Users",
      "item": [
        {
          "name": "List users",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/users",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "users"
              ],
              "query": [
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nLists the staff members of the user's organization, ordered by name."
          }
        },
        {
          "name": "Retrieve a user",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/users/:userId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "users",
                ":userId"
              ],
              "query": [],
              "variable": [
                {
                  "key": "userId",
                  "value": "",
                  "description": "ID of the user."
                }
              ]
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nReturns a single staff member of the user's organization."
          }
        }
      ]
    },
    {
      "name": "Organizations",
      "item": [
        {
          "name": "List organizations",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/orgs",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orgs"
              ],
              "query": [],
              "variable": []
            },
            "description": "Lists the organizations on your account that the API key reaches, with the default organization marked. `org_id` on every other call takes one of these IDs."
          }
        }
      ]
    },
    {
      "name": "Members",
      "item": [
        {
          "name": "List members",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/members",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                },
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Lists the members of an organization by name, with their role, account role and who manages each membership: `admin` (people in BloomText), `api` (an API key) or `account` (an Owner or IT person, in every organization)."
          }
        },
        {
          "name": "Add a member",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/members",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Adds a person to an organization as a membership the API manages. A new email creates their BloomText user, owned by your account. They get an invite email only with `send_invite_email: true`. Only API keys change memberships the API made; people in BloomText see them locked as \"Managed by API\".",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Retrieve a member",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/members/:memberId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                ":memberId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "memberId",
                  "value": "",
                  "description": "The member's ID."
                }
              ]
            },
            "description": "Returns one member of the organization."
          }
        },
        {
          "name": "Update a member",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/members/:memberId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                ":memberId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "memberId",
                  "value": "",
                  "description": "The member's ID."
                }
              ]
            },
            "description": "Changes the role or title of a membership the API manages. A membership people manage in BloomText answers 409 `managed_by_admin`; an Owner or IT person's answers 409 `managed_by_account`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"role\": \"admin\",\n  \"title\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Remove a member",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/members/:memberId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "members",
                ":memberId"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                },
                {
                  "key": "confirm_delete_user",
                  "value": "false",
                  "description": "`true` to remove someone from their only organization when that deletes their BloomText user.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "memberId",
                  "value": "",
                  "description": "The member's ID."
                }
              ]
            },
            "description": "Removes a membership the API manages. When it's the person's only organization and your account owns their user, removing them deletes the user, so the call must add `confirm_delete_user=true` (it then answers `204` as for any removal); without it the call answers 409 `confirmation_required` with `reason: would_delete_user` and changes nothing."
          }
        }
      ]
    },
    {
      "name": "Teams",
      "item": [
        {
          "name": "List teams",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/teams",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "teams"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Lists the teams of an organization, its default team first."
          }
        },
        {
          "name": "Add a member to a team",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new UUID per request. See /idempotency/."
              }
            ],
            "url": {
              "raw": "{{base_url}}/teams/:teamId/members",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "teams",
                ":teamId",
                "members"
              ],
              "query": [],
              "variable": [
                {
                  "key": "teamId",
                  "value": "",
                  "description": "The team's ID."
                }
              ]
            },
            "description": "Puts a member of the team's organization on the team. Someone already on it stays as they are.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"member_id\": \"00000000-0000-0000-0000-000000000000\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Remove a member from a team",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/teams/:teamId/members/:memberId",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "teams",
                ":teamId",
                "members",
                ":memberId"
              ],
              "query": [],
              "variable": [
                {
                  "key": "teamId",
                  "value": "",
                  "description": "The team's ID."
                },
                {
                  "key": "memberId",
                  "value": "",
                  "description": "The member's ID."
                }
              ]
            },
            "description": "Takes someone the API put on a team off it. Someone people placed in BloomText answers 409 `managed_by_admin`."
          }
        }
      ]
    },
    {
      "name": "Member events",
      "item": [
        {
          "name": "List member events",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/member-events",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "member-events"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                },
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Lists membership changes in an organization: who was added, approved or removed, when, and by whom. A change an API key made names it as `API key: <name>`. Pages by membership, newest first."
          }
        }
      ]
    },
    {
      "name": "Audit events",
      "item": [
        {
          "name": "List audit events",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/audit-events",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "audit-events"
              ],
              "query": [
                {
                  "key": "org_id",
                  "value": "{{org_id}}",
                  "description": "The organization the call acts on, from List organizations. Required when an account API key reaches more than one organization; an organization key or a key limited to one organization can leave it out.",
                  "disabled": true
                },
                {
                  "key": "after",
                  "value": "",
                  "description": "Only messages sent at or after this time. An RFC 3339 timestamp, or a date for midnight in the organization's time zone.",
                  "disabled": true
                },
                {
                  "key": "before",
                  "value": "",
                  "description": "Only messages sent before this time. Same format as `after`.",
                  "disabled": true
                },
                {
                  "key": "actor_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Only events this person did, by user ID.",
                  "disabled": true
                },
                {
                  "key": "action",
                  "value": "audit_log.exported",
                  "description": "Only these actions, by dotted name. Repeat the parameter for several.",
                  "disabled": true
                },
                {
                  "key": "patient_id",
                  "value": "00000000-0000-0000-0000-000000000000",
                  "description": "Only events about this patient.",
                  "disabled": true
                },
                {
                  "key": "page[limit]",
                  "value": "50",
                  "description": "Number of records to return. Defaults to 50, maximum 100.",
                  "disabled": true
                },
                {
                  "key": "page[after]",
                  "value": "",
                  "description": "Cursor from the previous page's `pagination.next_cursor`.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "BloomText turns this on for your account when you ask: use Request access on its docs page.\n\nLists an organization's audit events, newest first, with the filters of Account → Audit: a date range, a person, actions and a patient. Each event names its action with a dotted name such as `chat.viewed`, the same name the audit log's CSV export uses. In BloomText today, Owners and IT see the audit log under Settings → Account → Audit and download it as CSV."
          }
        }
      ]
    }
  ]
}
