Athelas Enterprise API

Bearer-token REST API for Athelas Remote Patient Monitoring. Authenticate via /auth/login (60-minute tokens), then create and manage patients, sites, and prescribers, verify shipping addresses, queue cellular RPM devices for drop shipment, and read device test results. Device readings can also be pushed to clients through the Test Results Webhook.

OpenAPI Specification

athelas-enterprise-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Athelas Enterprise API
  version: '1.0'
  description: Athelas Enterprise Remote Patient Monitoring (RPM) API. Manage patients, sites, prescribers,
    RPM device shipping, and test results. Harvested verbatim from the per-operation OpenAPI blocks published
    on the Athelas ReadMe developer hub.
servers:
- url: https://api.athelas.com/enterprise/v1
  description: Production
- url: https://staging-api.athelas.com/enterprise/v1
  description: Staging
security:
- bearerAuth: []
paths:
  /auth/login:
    post:
      summary: Login
      description: 'Authenticate to the Athelas API & recieve a Bearer token to perform all future requests.
        All authorization tokens expire after 60 minutes.


        Please note that the demo login info that we have provided here will always yield you the Athelas
        Demo Token, which can be used on the other sections of this website.'
      operationId: login
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - email
              - password
              properties:
                email:
                  type: string
                  description: Email ID of the user attempting login
                  default: elizabeth.blackwell@getathelas.com
                password:
                  type: string
                  description: Password of the user attempting login
                  default: LicensedToPracticeNotToKill
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n\t\"token\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5d\"\
                    \n}"
              schema:
                type: object
                properties:
                  token:
                    type: string
                    example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5d
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /patients/create:
    post:
      summary: Create
      description: Create patients
      operationId: create
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - first_name
              - last_name
              - site_id
              - prescriber_id
              - gender
              - phone_number
              - address
              - condition1
              - condition2
              - date_of_birth
              - insurance_company
              - insurance_policy_number
              - first_test
              - blood_pressure_test
              - weight_test
              - glucose_test
              - is_weight_blind
              properties:
                first_name:
                  type: string
                  description: First name of the patient
                  default: Priyanka
                last_name:
                  type: string
                  description: Last name or surname of the patient
                  default: Mehta
                site_id:
                  type: integer
                  description: ID of the site that this patient belongs to
                  default: 524
                  format: int32
                prescriber_id:
                  type: integer
                  description: ID of the prescriber associated with this patient
                  default: 4904
                  format: int32
                gender:
                  type: string
                  description: Gender of the patient
                  default: F
                phone_number:
                  type: string
                  description: Phone number of the patient
                  default: '14089259401'
                address:
                  type: string
                  description: Full address of the patient (for shipping purposes)
                  default: 160 S Whisman Rd, Mountain View, CA 94014
                condition1:
                  type: string
                  description: ICD-10 code for underlying condition
                  default: I10
                condition2:
                  type: string
                  description: Secondary ICD-10 code for underlying condition
                  default: I11
                date_of_birth:
                  type: string
                  description: Date of birth of patient
                  default: '1991-10-11'
                insurance_company:
                  type: string
                  description: Insurance company name
                  default: Aetna
                insurance_policy_number:
                  type: string
                  description: Insurance policy of patient
                  default: W23423466
                first_test:
                  type: string
                  description: What the first device to send the patient should be. One of [ BLOOD_PRESSURE,
                    WEIGHT, GLUCOSE ]
                  default: BLOOD_PRESSURE
                blood_pressure_test:
                  type: boolean
                  description: Whether to send a blood pressure cuff for this patient.  True or False
                  default: true
                weight_test:
                  type: boolean
                  description: Whether to send a weighing scale for this patient.  True or False
                  default: false
                glucose_test:
                  type: boolean
                  description: Whether to send a glucometer for this patient.  True or False
                  default: false
                is_weight_blind:
                  type: boolean
                  description: Whether the weighing scale should be blinded. Blinded weighing scales will
                    not show the weight to the patient.  True or False
                  default: false
                ship_rpm_devices:
                  type: boolean
                  description: Whether the devices for this patient should be queued for shipping immediately
                  default: false
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n   \"id\": 10,\n   \"first_name\": \"Priyanka\",\n   \"last_name\": \"Mehta\"\
                    ,\n   \"site_id\": 524,\n   \"prescriber_id\": 4904,\n   \"gender\": \"F\",\n   \"\
                    phone_number\": \"14089259401\",\n   \"address\": \"160 S Whisman Rd, Mountain View,\
                    \ CA 94041\",\n   \"address_valid\": \"True\",\n   \"condition_1\": \"I10\",\n   \"\
                    condition_2\": \"I11\",\n   \"date_of_birth\": \"1991-10-11\",\n   \"first_test\"\
                    : \"BLOOD_PRESSURE\",\n   \"blood_pressure_test\": true,\n   \"weight_test\": false,\n\
                    \   \"glucose_test\": false,\n   \"is_weight_blind\": false\n}\n"
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    example: 10
                    default: 0
                  first_name:
                    type: string
                    example: Priyanka
                  last_name:
                    type: string
                    example: Mehta
                  site_id:
                    type: integer
                    example: 524
                    default: 0
                  prescriber_id:
                    type: integer
                    example: 4904
                    default: 0
                  gender:
                    type: string
                    example: F
                  phone_number:
                    type: string
                    example: '14089259401'
                  address:
                    type: string
                    example: 160 S Whisman Rd, Mountain View, CA 94041
                  address_valid:
                    type: string
                    example: 'True'
                  condition_1:
                    type: string
                    example: I10
                  condition_2:
                    type: string
                    example: I11
                  date_of_birth:
                    type: string
                    example: '1991-10-11'
                  first_test:
                    type: string
                    example: BLOOD_PRESSURE
                  blood_pressure_test:
                    type: boolean
                    example: true
                    default: true
                  weight_test:
                    type: boolean
                    example: false
                    default: true
                  glucose_test:
                    type: boolean
                    example: false
                    default: true
                  is_weight_blind:
                    type: boolean
                    example: false
                    default: true
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /patients/{id}/update:
    post:
      summary: Update
      description: Update patient
      operationId: edit
      parameters:
      - name: id
        in: path
        description: ID of patient to be updated
        schema:
          type: integer
          format: int32
          default: 10
        required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                  description: First name of the patient
                  default: Priyanka
                last_name:
                  type: string
                  description: Last name or surname of the patient
                  default: Mehta
                site_id:
                  type: integer
                  description: ID of the site that this patient belongs to
                  default: 524
                  format: int32
                prescriber_id:
                  type: integer
                  description: ID of the prescriber associated with this patient
                  default: 4904
                  format: int32
                gender:
                  type: string
                  description: Gender of the patient
                  default: F
                phone_number:
                  type: string
                  description: Phone number of the patient
                  default: '14089259401'
                address:
                  type: string
                  description: Full address of the patient (for shipping purposes)
                  default: 160 S Whisman Rd, Mountain View, CA
                condition_1:
                  type: string
                  description: ICD-10 code for underlying condition
                  default: I10
                condition_2:
                  type: string
                  description: Secondary ICD-10 code for underlying condition
                  default: I11
                date_of_birth:
                  type: string
                  description: Date of birth of patient
                  default: '1991-10-11'
                insurance_company:
                  type: string
                  description: Insurance company name
                  default: Aetna
                insurance_policy_number:
                  type: string
                  description: Insurance policy of patient
                  default: W23423466
                first_test:
                  type: string
                  description: What the first device to send the patient should be. One of [ BLOOD_PRESSURE,
                    WEIGHT, GLUCOSE ]
                  default: BLOOD_PRESSURE
                blood_pressure_test:
                  type: boolean
                  description: Whether to send a blood pressure cuff for this patient.  True or False
                  default: true
                weight_test:
                  type: string
                  description: Whether to send a weighing scale for this patient.  True or False
                  default: 'false'
                glucose_test:
                  type: string
                  description: Whether to send a glucometer for this patient.  True or False
                  default: 'false'
                is_weight_blind:
                  type: string
                  description: Whether the weighing scale should be blinded. Blinded weighing scales will
                    not show the weight to the patient.  True or False
                  default: 'false'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n   \"id\": 10,\n   \"first_name\": \"Priyanka\",\n   \"last_name\": \"Mehta\"\
                    ,\n   \"site_id\": 524,\n   \"prescriber_id\": 4904,\n   \"gender\": \"F\",\n   \"\
                    phone_number\": \"14089259401\",\n   \"address\": \"160 S Whisman Rd, Mountain View,\
                    \ CA 94041\",\n   \"address_valid\": \"True\",\n   \"condition_1\": \"I10\",\n   \"\
                    condition_2\": \"I11\",\n   \"date_of_birth\": \"1991-10-11\",\n   \"first_test\"\
                    : \"BLOOD_PRESSURE\",\n   \"blood_pressure_test\": true,\n   \"weight_test\": false,\n\
                    \   \"glucose_test\": false,\n   \"is_weight_blind\": false\n}\n"
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    example: 10
                    default: 0
                  first_name:
                    type: string
                    example: Priyanka
                  last_name:
                    type: string
                    example: Mehta
                  site_id:
                    type: integer
                    example: 524
                    default: 0
                  prescriber_id:
                    type: integer
                    example: 4904
                    default: 0
                  gender:
                    type: string
                    example: F
                  phone_number:
                    type: string
                    example: '14089259401'
                  address:
                    type: string
                    example: 160 S Whisman Rd, Mountain View, CA 94041
                  address_valid:
                    type: string
                    example: 'True'
                  condition_1:
                    type: string
                    example: I10
                  condition_2:
                    type: string
                    example: I11
                  date_of_birth:
                    type: string
                    example: '1991-10-11'
                  first_test:
                    type: string
                    example: BLOOD_PRESSURE
                  blood_pressure_test:
                    type: boolean
                    example: true
                    default: true
                  weight_test:
                    type: boolean
                    example: false
                    default: true
                  glucose_test:
                    type: boolean
                    example: false
                    default: true
                  is_weight_blind:
                    type: boolean
                    example: false
                    default: true
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /patients/{id}/activate:
    post:
      summary: Activate
      description: Activate a patient.
      operationId: activate-1
      parameters:
      - name: id
        in: path
        description: ID of the patient to activate
        schema:
          type: integer
          format: int32
          default: 625
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /patients/{id}/deactivate:
    post:
      summary: Deactivate
      description: 'Deactivate a patient. This ensures the following will happen: The patient will be
        removed from all enrollment flows. No further messages will go out to the given patient.'
      operationId: deactivate
      parameters:
      - name: id
        in: path
        description: ID of patient to deactivate
        schema:
          type: string
          default: '543'
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /patients/{id}:
    get:
      summary: Get
      description: Fetch the patient object
      operationId: get
      parameters:
      - name: id
        in: path
        description: ID of Patient to fetch Patient object for
        schema:
          type: integer
          format: int32
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"id\": 10,\n  \"first_name\": \"John\",\n  \"last_name\": \"Smith\",\n\
                    \  \"site_id\": 245,\n  \"prescriber_id\": 23,\n  \"gender\": \"M\",\n  \"phone_number\"\
                    : \"14088962343\",\n  \"address\": \"160 S Whisman Rd, Mountain View, CA 94041\",\n\
                    \  \"address_valid\": \"True\",\n  \"condition_1\": \"I10\",\n  \"condition_2\": \"\
                    I11\",\n  \"date_of_birth\": \"1991-10-11\",\n  \"first_test\": \"BLOOD_PRESSURE\"\
                    ,\n  \"blood_pressure_test\": true,\n  \"weight_test\": true,\n  \"glucose_test\"\
                    : false,\n  \"is_weight_blind\": false,\n}\n"
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /patients/{id}/test_results:
    get:
      summary: View Test Results
      description: View all the test results for a given patient. The list is sorted by most recent first.
      operationId: view-test-results
      parameters:
      - name: id
        in: path
        description: ID of the patient for which the results are being queried
        schema:
          type: string
          default: '524'
        required: true
      responses:
        '300':
          description: '300'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n   \"id\": 10,\n   \"patient_id\": 25,\n   \"test_type\": \"BLOOD_PRESSURE\"\
                    ,\n   \"systolic\": 120,\n   \"diastolic\": 80,\n   \"units\": \"mmHg\",\n   \"created_at\"\
                    : \"2021-10-12 01:52:30.612685\"\n},\n{\n   \"id\": 11,\n   \"patient_id\": 25,\n\
                    \   \"test_type\": \"WEIGHT\",\n   \"weight\": 95,\n   \"units\": \"pounds\",\n  \
                    \ \"created_at\": \"2021-10-12 01:52:30.612685\"\n},\n{\n   \"id\": 12,\n   \"patient_id\"\
                    : 25,\n   \"test_type\": \"GLUCOSE\",\n   \"blood_glucose\": \"10\",\n   \"units\"\
                    : \"mmol/L\",\n   \"created_at\": \"2021-10-12 01:52:30.612685\"\n}\n"
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /patients/{id}/verify_address:
    post:
      summary: Verify Address
      description: ''
      operationId: verify-address
      parameters:
      - name: id
        in: path
        description: Patient ID
        schema:
          type: integer
          format: int32
          default: 524
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"message\": \"Queued address verification. Check /address_verified to\
                    \ see updated address verification status.\"\n}"
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Queued address verification. Check /address_verified to see updated address
                      verification status.
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /patients/{id}/address_verified:
    get:
      summary: Address Verified
      description: Check if the address verification that you queued manually has been successful
      operationId: address-verified
      parameters:
      - name: id
        in: path
        description: Patient ID
        schema:
          type: integer
          format: int32
          default: 524
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n\t\"address_verified\": true\n}"
              schema:
                type: object
                properties:
                  address_verified:
                    type: boolean
                    example: true
                    default: true
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /sites/create:
    post:
      summary: Create
      description: Create a site object. Sites are associated with a set of patients.
      operationId: create-1
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - address
              - active
              - user_id
              - organization_id
              properties:
                name:
                  type: string
                  description: The site's name
                  default: Valley Clinic
                address:
                  type: string
                  description: The site's address
                  default: 160 S Whisman Rd, Mountain View, 94041
                active:
                  type: boolean
                  description: Whether or not the site is to be set to active (can be updated later)
                  default: true
                user_id:
                  type: integer
                  description: ID of the user that will effectively own the site
                  default: 1
                  format: int32
                organization_id:
                  type: integer
                  description: ID of the Organization that this site will belong to (usually provided
                    by Athelas Internal)
                  default: 1
                  format: int32
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n   \"id\": 43,\n   \"name\": \"Valley Clinic\",\n   \"address\": \"160 S\
                    \ Whisman Rd, Mountain View, 94041\",\n   \"active\": true\n}\n"
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    example: 43
                    default: 0
                  name:
                    type: string
                    example: Valley Clinic
                  address:
                    type: string
                    example: 160 S Whisman Rd, Mountain View, 94041
                  active:
                    type: boolean
                    example: true
                    default: true
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /sites/{id}/update:
    post:
      summary: Update
      description: Edit a site object. Sites are associated with a set of patients.
      operationId: edit-1
      parameters:
      - name: id
        in: path
        description: ID of the site to update
        schema:
          type: string
          default: '43'
        required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The site's name
                  default: Valley Clinic Two
                address:
                  type: string
                  description: The site's address
                  default: 160 S Whisman Rd, Mountain View, 94041
                active:
                  type: boolean
                  description: Whether or not the site is to be set to active (can be updated later)
                  default: false
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n   \"id\": 43,\n   \"name\": \"Valley Clinic Two\",\n   \"address\": \"160\
                    \ S Whisman Rd, Mountain View, 94041\",\n   \"active\": true\n}\n"
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    example: 43
                    default: 0
                  name:
                    type: string
                    example: Valley Clinic Two
                  address:
                    type: string
                    example: 160 S Whisman Rd, Mountain View, 94041
                  active:
                    type: boolean
                    example: true
                    default: true
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /sites/{id}:
    get:
      summary: Get
      description: Get a site object.
      operationId: get-1
      parameters:
      - name: id
        in: path
        description: ID of the site requested
        schema:
          type: string
          default: '43'
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n   \"id\": 43,\n   \"name\": \"Valley Clinic\",\n   \"address\": \"160 S\
                    \ Whisman Rd, Mountain View, 94041\",\n   \"active\": true\n}\n"
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    example: 43
                    default: 0
                  name:
                    type: string
                    example: Valley Clinic
                  address:
                    type: string
                    example: 160 S Whisman Rd, Mountain View, 94041
                  active:
                    type: boolean
                    example: true
                    default: true
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /sites/{id}/patients:
    get:
      summary: Get Patients
      description: Get a list of patient ids in a site.
      operationId: get-patients
      parameters:
      - name: id
        in: path
        description: ID of the site to get all patient ids from
        schema:
          type: integer
          format: int32
          default: 20
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n   \"site_id\": 20,\n   \"patient_ids\": [\n       23,\n       25,\n    \
                    \   12\n   ]\n}"
              schema:
                type: object
                properties:
                  site_id:
                    type: integer
                    example: 20
                    default: 0
                  patient_ids:
                    type: array
                    items:
                      type: integer
                      example: 23
                      default: 0
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
  /sites/{id}/prescribers:
    get:
      summary: Get Prescribers
      description: Get a list of prescriber ids in a site.
      operationId: get-prescribers
      parameters:
      - name: id
        in: path
        description: ID of the site to get prescribers for
        schema:
          type: integer
          format: int32
          default: 20
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n   \"site_id\": 20,\n   \"prescriber_ids\": [\n       125,\n       342,\n\
                    \       121\n   ]\n}"
              schema:
                type: object
                properties:
                  site_id:
                    type: integer
                    example: 20
                    default: 0
                  prescriber_ids:
                    type: array
                    items:
                      type: integer
                      example: 125
                      default: 0
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
             

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/athelas/refs/heads/main/openapi/athelas-enterprise-openapi.yml