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