From 57a149210f549f3c717576b8fcd771e9a83230bd Mon Sep 17 00:00:00 2001 From: fern-api <115122769+fern-api[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 20:45:06 +0000 Subject: [PATCH] Release 2.1.147 --- pyproject.toml | 2 +- reference.md | 7334 +---------------- src/vital/__init__.py | 22 +- src/vital/client.py | 4 + src/vital/core/client_wrapper.py | 2 +- src/vital/electrocardiogram/__init__.py | 2 + src/vital/electrocardiogram/client.py | 185 + src/vital/types/__init__.py | 20 +- .../types/client_facing_electrocardiogram.py | 40 + ...facing_electrocardiogram_classification.py | 25 + ...ng_electrocardiogram_inconclusive_cause.py | 25 + ...lient_facing_electrocardiogram_response.py | 20 + ...acing_electrocardiogram_source_provider.py | 7 + ...nt_facing_electrocardiogram_source_type.py | 65 + ...le.py => client_facing_menstrual_cycle.py} | 9 +- ..._facing_menstrual_cycle_source_provider.py | 7 + ...ient_facing_menstrual_cycle_source_type.py | 65 + src/vital/types/client_facing_sport.py | 6 +- src/vital/types/menstrual_cycle_response.py | 4 +- .../types/workout_column_expr_workout.py | 4 - 20 files changed, 596 insertions(+), 7252 deletions(-) create mode 100644 src/vital/electrocardiogram/__init__.py create mode 100644 src/vital/electrocardiogram/client.py create mode 100644 src/vital/types/client_facing_electrocardiogram.py create mode 100644 src/vital/types/client_facing_electrocardiogram_classification.py create mode 100644 src/vital/types/client_facing_electrocardiogram_inconclusive_cause.py create mode 100644 src/vital/types/client_facing_electrocardiogram_response.py create mode 100644 src/vital/types/client_facing_electrocardiogram_source_provider.py create mode 100644 src/vital/types/client_facing_electrocardiogram_source_type.py rename src/vital/types/{menstrual_cycle.py => client_facing_menstrual_cycle.py} (83%) create mode 100644 src/vital/types/client_facing_menstrual_cycle_source_provider.py create mode 100644 src/vital/types/client_facing_menstrual_cycle_source_type.py diff --git a/pyproject.toml b/pyproject.toml index 381d63e..7aa609b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "vital" -version = "2.1.146" +version = "2.1.147" description = "" readme = "README.md" authors = [] diff --git a/reference.md b/reference.md index 238ac2f..9815732 100644 --- a/reference.md +++ b/reference.md @@ -1170,6 +1170,102 @@ client.link.connect_demo_provider( + + + + +## Electrocardiogram +
client.electrocardiogram.get(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Get electrocardiogram summary for user_id +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from vital import Vital + +client = Vital( + api_key="YOUR_API_KEY", +) +client.electrocardiogram.get( + user_id="user_id", + start_date="start_date", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**user_id:** `str` + +
+
+ +
+
+ +**start_date:** `str` + +
+
+ +
+
+ +**end_date:** `typing.Optional[str]` + +
+
+ +
+
+ +**provider:** `typing.Optional[str]` — Provider oura/strava etc + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ +
@@ -5759,7241 +5855,3 @@ client.vitals.vo_2_max(
client.vitals.stress_level(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.stress_level( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.mindfulness_minutes(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.mindfulness_minutes( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.caffeine(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.caffeine( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.water(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.water( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.steps(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.steps( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.floors_climbed(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.floors_climbed( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.distance(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.distance( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.calories_basal(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.calories_basal( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.calories_active(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.calories_active( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.respiratory_rate(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.respiratory_rate( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.ige(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.ige( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.igg(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.igg( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.hypnogram(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.hypnogram( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.hrv(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.hrv( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.heartrate(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.heartrate( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.glucose(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.glucose( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.cholesterol_triglycerides(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.cholesterol_triglycerides( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.cholesterol_total(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.cholesterol_total( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.cholesterol_ldl(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.cholesterol_ldl( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.cholesterol_hdl(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.cholesterol_hdl( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.cholesterol(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.cholesterol( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.body_weight(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.body_weight( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.body_fat(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.body_fat( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.blood_oxygen(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.blood_oxygen( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.electrocardiogram_voltage(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.electrocardiogram_voltage( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.vitals.blood_pressure(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.vitals.blood_pressure( - user_id="user_id", - start_date="start_date", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**start_date:** `str` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**provider:** `typing.Optional[str]` — Provider oura/strava etc - -
-
- -
-
- -**end_date:** `typing.Optional[str]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -## User -
client.user.get_all(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET All users for team. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.get_all() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**offset:** `typing.Optional[int]` - -
-
- -
-
- -**limit:** `typing.Optional[int]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.create(...) -
-
- -#### 📝 Description - -
-
- -
-
- -POST Create a Vital user given a client_user_id and returns the user_id. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.create( - client_user_id="client_user_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**client_user_id:** `str` — A unique ID representing the end user. Typically this will be a user ID from your application. Personally identifiable information, such as an email address or phone number, should not be used in the client_user_id. - -
-
- -
-
- -**fallback_time_zone:** `typing.Optional[str]` - - - Fallback time zone of the user, in the form of a valid IANA tzdatabase identifier (e.g., `Europe/London` or `America/Los_Angeles`). - Used when pulling data from sources that are completely time zone agnostic (e.g., all time is relative to UTC clock, without any time zone attributions on data points). - - -
-
- -
-
- -**fallback_birth_date:** `typing.Optional[str]` — Fallback date of birth of the user, in YYYY-mm-dd format. Used for calculating max heartrate for providers that don not provide users' age. - -
-
- -
-
- -**ingestion_start:** `typing.Optional[str]` — Starting bound for user data ingestion. Data older than this date will not be ingested. - -
-
- -
-
- -**ingestion_end:** `typing.Optional[str]` — Ending bound for user data ingestion. Data from this date or later will not be ingested and the connection will be deregistered. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.get_team_metrics() -
-
- -#### 📝 Description - -
-
- -
-
- -GET metrics for team. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.get_team_metrics() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.get_user_sign_in_token(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.get_user_sign_in_token( - user_id="user_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.get_connected_providers(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET Users connected providers -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.get_connected_providers( - user_id="user_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.get(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET User details given the user_id. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.get( - user_id="user_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.delete(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.delete( - user_id="user_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.patch(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.patch( - user_id="user_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**fallback_time_zone:** `typing.Optional[str]` - - - Fallback time zone of the user, in the form of a valid IANA tzdatabase identifier (e.g., `Europe/London` or `America/Los_Angeles`). - Used when pulling data from sources that are completely time zone agnostic (e.g., all time is relative to UTC clock, without any time zone attributions on data points). - - -
-
- -
-
- -**fallback_birth_date:** `typing.Optional[str]` — Fallback date of birth of the user, in YYYY-mm-dd format. Used for calculating max heartrate for providers that don not provide users' age. - -
-
- -
-
- -**ingestion_start:** `typing.Optional[str]` — Starting bound for user data ingestion. Data older than this date will not be ingested. - -
-
- -
-
- -**ingestion_end:** `typing.Optional[str]` — Ending bound for user data ingestion. Data from this date or later will not be ingested and the connection will be deregistered. - -
-
- -
-
- -**client_user_id:** `typing.Optional[str]` — A unique ID representing the end user. Typically this will be a user ID from your application. Personally identifiable information, such as an email address or phone number, should not be used in the client_user_id. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.get_latest_user_info(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.get_latest_user_info( - user_id="user_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.create_insurance(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import ( - Address, - Gender, - ResponsibleRelationship, - Vital, - VitalCoreSchemasDbSchemasLabTestInsurancePersonDetails, -) - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.create_insurance( - user_id="user_id", - payor_code="payor_code", - member_id="member_id", - relationship=ResponsibleRelationship.SELF, - insured=VitalCoreSchemasDbSchemasLabTestInsurancePersonDetails( - first_name="first_name", - last_name="last_name", - gender=Gender.FEMALE, - address=Address( - first_line="first_line", - country="country", - zip="zip", - city="city", - state="state", - ), - dob="dob", - email="email", - phone_number="phone_number", - ), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**payor_code:** `str` - -
-
- -
-
- -**member_id:** `str` - -
-
- -
-
- -**relationship:** `ResponsibleRelationship` - -
-
- -
-
- -**insured:** `VitalCoreSchemasDbSchemasLabTestInsurancePersonDetails` - -
-
- -
-
- -**group_id:** `typing.Optional[str]` - -
-
- -
-
- -**guarantor:** `typing.Optional[GuarantorDetails]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.get_latest_insurance(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.get_latest_insurance( - user_id="user_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.upsert_user_info(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Address, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.upsert_user_info( - user_id="user_id", - first_name="first_name", - last_name="last_name", - email="email", - phone_number="phone_number", - gender="gender", - dob="dob", - address=Address( - first_line="first_line", - country="country", - zip="zip", - city="city", - state="state", - ), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**first_name:** `str` - -
-
- -
-
- -**last_name:** `str` - -
-
- -
-
- -**email:** `str` - -
-
- -
-
- -**phone_number:** `str` - -
-
- -
-
- -**gender:** `str` - -
-
- -
-
- -**dob:** `str` - -
-
- -
-
- -**address:** `Address` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.get_by_client_user_id(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET user_id from client_user_id. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.get_by_client_user_id( - client_user_id="client_user_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**client_user_id:** `str` — A unique ID representing the end user. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the client_user_id. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.deregister_provider(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Providers, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.deregister_provider( - user_id="user_id", - provider=Providers.OURA, -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**provider:** `Providers` — Provider slug. e.g., `oura`, `fitbit`, `garmin`. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.undo_delete(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.undo_delete() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `typing.Optional[str]` — User ID to undo deletion. Mutually exclusive with `client_user_id`. - -
-
- -
-
- -**client_user_id:** `typing.Optional[str]` — Client User ID to undo deletion. Mutually exclusive with `user_id`. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.user.refresh(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Trigger a manual refresh for a specific user -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.user.refresh( - user_id="user_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**timeout:** `typing.Optional[float]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -## Team -
client.team.get_link_config(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Post teams. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.team.get_link_config() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**vital_link_token:** `typing.Optional[str]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.team.get(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Get team. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.team.get( - team_id="team_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**team_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.team.get_user_by_id(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Search team users by user_id -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.team.get_user_by_id() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**query_id:** `typing.Optional[str]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.team.get_svix_url() -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.team.get_svix_url() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.team.get_source_priorities(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET source priorities. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.team.get_source_priorities() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**data_type:** `typing.Optional[str]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.team.update_source_priorities() -
-
- -#### 📝 Description - -
-
- -
-
- -Patch source priorities. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.team.update_source_priorities() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.team.get_physicians(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.team.get_physicians( - team_id="team_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**team_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -## Providers -
client.providers.get_all(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Get Provider list -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.providers.get_all() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**source_type:** `typing.Optional[str]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -## Introspect -
client.introspect.get_user_resources(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.introspect.get_user_resources() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `typing.Optional[str]` - -
-
- -
-
- -**provider:** `typing.Optional[Providers]` - -
-
- -
-
- -**user_limit:** `typing.Optional[int]` - -
-
- -
-
- -**cursor:** `typing.Optional[str]` - -
-
- -
-
- -**next_cursor:** `typing.Optional[str]` — The cursor for fetching the next page, or `null` to fetch the first page. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.introspect.get_user_historical_pulls(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.introspect.get_user_historical_pulls() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `typing.Optional[str]` - -
-
- -
-
- -**provider:** `typing.Optional[Providers]` - -
-
- -
-
- -**user_limit:** `typing.Optional[int]` - -
-
- -
-
- -**cursor:** `typing.Optional[str]` - -
-
- -
-
- -**next_cursor:** `typing.Optional[str]` — The cursor for fetching the next page, or `null` to fetch the first page. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -## LabTests -
client.lab_tests.get() -
-
- -#### 📝 Description - -
-
- -
-
- -GET all the lab tests the team has access to. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.create(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import LabTestCollectionMethod, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.create( - name="name", - method=LabTestCollectionMethod.TESTKIT, - description="description", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**name:** `str` - -
-
- -
-
- -**method:** `LabTestCollectionMethod` - -
-
- -
-
- -**description:** `str` - -
-
- -
-
- -**marker_ids:** `typing.Optional[typing.Sequence[int]]` - -
-
- -
-
- -**provider_ids:** `typing.Optional[typing.Sequence[str]]` - -
-
- -
-
- -**fasting:** `typing.Optional[bool]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_markers(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET all the markers for the given lab. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_markers() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**lab_id:** `typing.Optional[typing.Union[int, typing.Sequence[int]]]` — The identifier Vital assigned to a lab partner. - -
-
- -
-
- -**name:** `typing.Optional[str]` — The name or test code of an individual biomarker or a panel. - -
-
- -
-
- -**a_la_carte_enabled:** `typing.Optional[bool]` - -
-
- -
-
- -**page:** `typing.Optional[int]` - -
-
- -
-
- -**size:** `typing.Optional[int]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_markers_for_order_set(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import OrderSetRequest, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_markers_for_order_set( - request=OrderSetRequest(), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**request:** `OrderSetRequest` - -
-
- -
-
- -**page:** `typing.Optional[int]` - -
-
- -
-
- -**size:** `typing.Optional[int]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_markers_for_lab_test(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_markers_for_lab_test( - lab_test_id="lab_test_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**lab_test_id:** `str` - -
-
- -
-
- -**page:** `typing.Optional[int]` - -
-
- -
-
- -**size:** `typing.Optional[int]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_markers_by_lab_and_provider_id(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET a specific marker for the given lab and provider_id -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_markers_by_lab_and_provider_id( - provider_id="provider_id", - lab_id=1, -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**provider_id:** `str` - -
-
- -
-
- -**lab_id:** `int` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_labs() -
-
- -#### 📝 Description - -
-
- -
-
- -GET all the labs. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_labs() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_by_id(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET all the lab tests the team has access to. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_by_id( - lab_test_id="lab_test_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**lab_test_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_phlebotomy_appointment_availability(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Return the available time slots to book an appointment with a phlebotomist -for the given address and order. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import UsAddress, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_phlebotomy_appointment_availability( - request=UsAddress( - first_line="first_line", - city="city", - state="state", - zip_code="zip_code", - ), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**request:** `UsAddress` - -
-
- -
-
- -**start_date:** `typing.Optional[str]` — Start date for appointment availability - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.book_phlebotomy_appointment(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Book an at-home phlebotomy appointment. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import AppointmentBookingRequest, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.book_phlebotomy_appointment( - order_id="order_id", - request=AppointmentBookingRequest( - booking_key="booking_key", - ), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**request:** `AppointmentBookingRequest` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.request_phlebotomy_appointment(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Request an at-home phlebotomy appointment. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import AppointmentProvider, UsAddress, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.request_phlebotomy_appointment( - order_id="order_id", - address=UsAddress( - first_line="first_line", - city="city", - state="state", - zip_code="zip_code", - ), - provider=AppointmentProvider.GETLABS, -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**address:** `UsAddress` — At-home phlebotomy appointment address. - -
-
- -
-
- -**provider:** `AppointmentProvider` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.reschedule_phlebotomy_appointment(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Reschedule a previously booked at-home phlebotomy appointment. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import AppointmentRescheduleRequest, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.reschedule_phlebotomy_appointment( - order_id="order_id", - request=AppointmentRescheduleRequest( - booking_key="booking_key", - ), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**request:** `AppointmentRescheduleRequest` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.cancel_phlebotomy_appointment(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Cancel a previously booked at-home phlebotomy appointment. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.cancel_phlebotomy_appointment( - order_id="order_id", - cancellation_reason_id="cancellation_reason_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**cancellation_reason_id:** `str` - -
-
- -
-
- -**notes:** `typing.Optional[str]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_phlebotomy_appointment_cancellation_reason() -
-
- -#### 📝 Description - -
-
- -
-
- -Get the list of reasons for cancelling an at-home phlebotomy appointment. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_phlebotomy_appointment_cancellation_reason() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_phlebotomy_appointment(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Get the appointment associated with an order. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_phlebotomy_appointment( - order_id="order_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_area_info(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET information about an area with respect to lab-testing. - -Information returned: - -- Whether a given zip code is served by our Phlebotomy network. -- List of Lab locations in the area. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_area_info( - zip_code="zip_code", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**zip_code:** `str` — Zip code of the area to check - -
-
- -
-
- -**radius:** `typing.Optional[AllowedRadius]` — Radius in which to search in miles - -
-
- -
-
- -**lab:** `typing.Optional[ClientFacingLabs]` — Lab to check for PSCs - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_psc_info(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_psc_info( - zip_code="zip_code", - lab_id=1, -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**zip_code:** `str` — Zip code of the area to check - -
-
- -
-
- -**lab_id:** `int` — Lab ID to check for PSCs - -
-
- -
-
- -**radius:** `typing.Optional[AllowedRadius]` — Radius in which to search. (meters) - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_order_psc_info(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_order_psc_info( - order_id="order_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**radius:** `typing.Optional[AllowedRadius]` — Radius in which to search in miles - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_result_pdf(...) -
-
- -#### 📝 Description - -
-
- -
-
- -This endpoint returns the lab results for the order. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_result_pdf( - order_id="string", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_result_metadata(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Return metadata related to order results, such as lab metadata, -provider and sample dates. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_result_metadata( - order_id="order_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_result_raw(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Return both metadata and raw json test data -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_result_raw( - order_id="order_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_labels_pdf(...) -
-
- -#### 📝 Description - -
-
- -
-
- -This endpoint returns the printed labels for the order. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -import datetime - -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_labels_pdf( - order_id="string", - number_of_labels=1, - collection_date=datetime.datetime.fromisoformat( - "2024-01-15 09:30:00+00:00", - ), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` - -
-
- -
-
- -**collection_date:** `dt.datetime` — Collection date - -
-
- -
-
- -**number_of_labels:** `typing.Optional[int]` — Number of labels to generate - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_psc_appointment_availability(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_psc_appointment_availability() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**start_date:** `typing.Optional[str]` — Start date for appointment availability - -
-
- -
-
- -**site_codes:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]` — List of site codes to fetch availability for - -
-
- -
-
- -**zip_code:** `typing.Optional[str]` — Zip code of the area to check - -
-
- -
-
- -**radius:** `typing.Optional[AllowedRadius]` — Radius in which to search. (meters) - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.book_psc_appointment(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import AppointmentBookingRequest, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.book_psc_appointment( - order_id="order_id", - request=AppointmentBookingRequest( - booking_key="booking_key", - ), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**request:** `AppointmentBookingRequest` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.reschedule_psc_appointment(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import AppointmentRescheduleRequest, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.reschedule_psc_appointment( - order_id="order_id", - request=AppointmentRescheduleRequest( - booking_key="booking_key", - ), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**request:** `AppointmentRescheduleRequest` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.cancel_psc_appointment(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.cancel_psc_appointment( - order_id="order_id", - cancellation_reason_id="cancellationReasonId", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**cancellation_reason_id:** `str` - -
-
- -
-
- -**note:** `typing.Optional[str]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_psc_appointment_cancellation_reason() -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_psc_appointment_cancellation_reason() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_psc_appointment(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Get the appointment associated with an order. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_psc_appointment( - order_id="order_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_order_requistion_pdf(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET requisition pdf for an order -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_order_requistion_pdf( - order_id="string", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_order(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET individual order by ID. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_order( - order_id="order_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.create_order(...) -
-
- -#### 📝 Description - -
-
- -
-
- -POST create new order -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -import datetime - -from vital import ( - Gender, - PatientAddressCompatible, - PatientDetailsWithValidation, - Vital, -) - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.create_order( - user_id="user_id", - patient_details=PatientDetailsWithValidation( - first_name="first_name", - last_name="last_name", - dob=datetime.datetime.fromisoformat( - "2024-01-15 09:30:00+00:00", - ), - gender=Gender.FEMALE, - phone_number="phone_number", - email="email", - ), - patient_address=PatientAddressCompatible( - first_line="first_line", - city="city", - state="state", - zip="zip", - country="country", - ), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**patient_details:** `PatientDetailsWithValidation` - -
-
- -
-
- -**patient_address:** `PatientAddressCompatible` - -
-
- -
-
- -**lab_test_id:** `typing.Optional[str]` - -
-
- -
-
- -**order_set:** `typing.Optional[OrderSetRequest]` - -
-
- -
-
- -**collection_method:** `typing.Optional[LabTestCollectionMethod]` - -
-
- -
-
- -**physician:** `typing.Optional[PhysicianCreateRequest]` - -
-
- -
-
- -**health_insurance:** `typing.Optional[HealthInsuranceCreateRequest]` - -
-
- -
-
- -**priority:** `typing.Optional[bool]` — Defines whether order is priority or not. For some labs, this refers to a STAT order. - -
-
- -
-
- -**billing_type:** `typing.Optional[Billing]` - -
-
- -
-
- -**icd_codes:** `typing.Optional[typing.Sequence[str]]` - -
-
- -
-
- -**consents:** `typing.Optional[typing.Sequence[Consent]]` - -
-
- -
-
- -**activate_by:** `typing.Optional[str]` — Schedule an Order to be processed in a future date. - -
-
- -
-
- -**aoe_answers:** `typing.Optional[typing.Sequence[AoEAnswer]]` - -
-
- -
-
- -**passthrough:** `typing.Optional[str]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.cancel_order(...) -
-
- -#### 📝 Description - -
-
- -
-
- -POST cancel order -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.cancel_order( - order_id="order_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` — Your Order ID. - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.simulate_order_process(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Get available test kits. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.simulate_order_process( - order_id="order_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**order_id:** `str` - -
-
- -
-
- -**final_status:** `typing.Optional[OrderStatus]` - -
-
- -
-
- -**delay:** `typing.Optional[int]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.lab_tests.get_orders(...) -
-
- -#### 📝 Description - -
-
- -
-
- -GET many orders with filters. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.lab_tests.get_orders() - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**search_input:** `typing.Optional[str]` — Search by order id, user id, patient name, shipping dob, or shipping recipient name. - -
-
- -
-
- -**start_date:** `typing.Optional[dt.datetime]` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**end_date:** `typing.Optional[dt.datetime]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 23:59:59 - -
-
- -
-
- -**updated_start_date:** `typing.Optional[dt.datetime]` — Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**updated_end_date:** `typing.Optional[dt.datetime]` — Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be set to 00:00:00 - -
-
- -
-
- -**order_key:** `typing.Optional[LabTestsGetOrdersRequestOrderKey]` - -
-
- -
-
- -**order_direction:** `typing.Optional[LabTestsGetOrdersRequestOrderDirection]` - -
-
- -
-
- -**user_id:** `typing.Optional[str]` — Filter by user ID. - -
-
- -
-
- -**patient_name:** `typing.Optional[str]` — Filter by patient name. - -
-
- -
-
- -**shipping_recipient_name:** `typing.Optional[str]` — Filter by shipping recipient name. - -
-
- -
-
- -**order_ids:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]` — Filter by order ids. - -
-
- -
-
- -**page:** `typing.Optional[int]` - -
-
- -
-
- -**size:** `typing.Optional[int]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -## Testkit -
client.testkit.register(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -import datetime - -from vital import Gender, PatientAddressCompatible, PatientDetails, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.testkit.register( - user_id="user_id", - sample_id="sample_id", - patient_details=PatientDetails( - first_name="first_name", - last_name="last_name", - dob=datetime.datetime.fromisoformat( - "2024-01-15 09:30:00+00:00", - ), - gender=Gender.FEMALE, - phone_number="phone_number", - email="email", - ), - patient_address=PatientAddressCompatible( - first_line="first_line", - city="city", - state="state", - zip="zip", - country="country", - ), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**sample_id:** `str` - -
-
- -
-
- -**patient_details:** `PatientDetails` - -
-
- -
-
- -**patient_address:** `PatientAddressCompatible` - -
-
- -
-
- -**physician:** `typing.Optional[PhysicianCreateRequestBase]` - -
-
- -
-
- -**health_insurance:** `typing.Optional[HealthInsuranceCreateRequest]` - -
-
- -
-
- -**consents:** `typing.Optional[typing.Sequence[Consent]]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.testkit.create_order(...) -
-
- -#### 📝 Description - -
-
- -
-
- -Creates an order for an unregistered testkit -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import ShippingAddress, Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.testkit.create_order( - user_id="user_id", - lab_test_id="lab_test_id", - shipping_details=ShippingAddress( - receiver_name="receiver_name", - first_line="first_line", - city="city", - state="state", - zip="zip", - country="country", - phone_number="phone_number", - ), -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**lab_test_id:** `str` - -
-
- -
-
- -**shipping_details:** `ShippingAddress` - -
-
- -
-
- -**passthrough:** `typing.Optional[str]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -## Insurance -
client.insurance.search_payor_info(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.insurance.search_payor_info( - insurance_name="insurance_name", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**insurance_name:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.insurance.search_diagnosis(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import Vital - -client = Vital( - api_key="YOUR_API_KEY", -) -client.insurance.search_diagnosis( - diagnosis_query="diagnosis_query", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**diagnosis_query:** `str` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -## Aggregate -
client.aggregate.query_one(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from vital import ( - AggregateExpr, - AggregateExprFunc, - Period, - PeriodUnit, - Query, - RelativeTimeframe, - SleepColumnExpr, - SleepColumnExprSleep, - Vital, -) - -client = Vital( - api_key="YOUR_API_KEY", -) -client.aggregate.query_one( - user_id="user_id", - timeframe=RelativeTimeframe( - anchor="anchor", - past=Period( - unit=PeriodUnit.MINUTE, - ), - ), - queries=[ - Query( - select=[ - AggregateExpr( - arg=SleepColumnExpr( - sleep=SleepColumnExprSleep.SESSION_START, - ), - func=AggregateExprFunc.MEAN, - ) - ], - ) - ], -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**user_id:** `str` - -
-
- -
-
- -**timeframe:** `QueryBatchTimeframe` - -
-
- -
-
- -**queries:** `typing.Sequence[Query]` - -
-
- -
-
- -**config:** `typing.Optional[QueryConfig]` - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- diff --git a/src/vital/__init__.py b/src/vital/__init__.py index aa01299..7228590 100644 --- a/src/vital/__init__.py +++ b/src/vital/__init__.py @@ -64,6 +64,12 @@ ClientFacingCholesterolTimeseries, ClientFacingDiagnosisInformation, ClientFacingDistanceTimeseries, + ClientFacingElectrocardiogram, + ClientFacingElectrocardiogramClassification, + ClientFacingElectrocardiogramInconclusiveCause, + ClientFacingElectrocardiogramResponse, + ClientFacingElectrocardiogramSourceProvider, + ClientFacingElectrocardiogramSourceType, ClientFacingElectrocardiogramVoltageTimeseries, ClientFacingFloorsClimbedTimeseries, ClientFacingFood, @@ -95,6 +101,9 @@ ClientFacingMarker, ClientFacingMarkerComplete, ClientFacingMealResponse, + ClientFacingMenstrualCycle, + ClientFacingMenstrualCycleSourceProvider, + ClientFacingMenstrualCycleSourceType, ClientFacingMindfulnessMinutesTimeseries, ClientFacingNoteSample, ClientFacingNoteSampleTagsItem, @@ -272,7 +281,6 @@ ManualProviders, MarkerType, MealInDbBaseClientFacingSource, - MenstrualCycle, MenstrualCycleResponse, MenstrualFlowEntry, MenstrualFlowEntryFlow, @@ -382,6 +390,7 @@ aggregate, body, devices, + electrocardiogram, insurance, introspect, lab_tests, @@ -470,6 +479,12 @@ "ClientFacingCholesterolTimeseries", "ClientFacingDiagnosisInformation", "ClientFacingDistanceTimeseries", + "ClientFacingElectrocardiogram", + "ClientFacingElectrocardiogramClassification", + "ClientFacingElectrocardiogramInconclusiveCause", + "ClientFacingElectrocardiogramResponse", + "ClientFacingElectrocardiogramSourceProvider", + "ClientFacingElectrocardiogramSourceType", "ClientFacingElectrocardiogramVoltageTimeseries", "ClientFacingFloorsClimbedTimeseries", "ClientFacingFood", @@ -501,6 +516,9 @@ "ClientFacingMarker", "ClientFacingMarkerComplete", "ClientFacingMealResponse", + "ClientFacingMenstrualCycle", + "ClientFacingMenstrualCycleSourceProvider", + "ClientFacingMenstrualCycleSourceType", "ClientFacingMindfulnessMinutesTimeseries", "ClientFacingNoteSample", "ClientFacingNoteSampleTagsItem", @@ -680,7 +698,6 @@ "ManualProviders", "MarkerType", "MealInDbBaseClientFacingSource", - "MenstrualCycle", "MenstrualCycleResponse", "MenstrualFlowEntry", "MenstrualFlowEntryFlow", @@ -792,6 +809,7 @@ "aggregate", "body", "devices", + "electrocardiogram", "insurance", "introspect", "lab_tests", diff --git a/src/vital/client.py b/src/vital/client.py index 0e87a14..113637d 100644 --- a/src/vital/client.py +++ b/src/vital/client.py @@ -5,6 +5,7 @@ import httpx from .core.client_wrapper import SyncClientWrapper from .link.client import LinkClient +from .electrocardiogram.client import ElectrocardiogramClient from .sleep_cycle.client import SleepCycleClient from .profile.client import ProfileClient from .devices.client import DevicesClient @@ -25,6 +26,7 @@ from .aggregate.client import AggregateClient from .core.client_wrapper import AsyncClientWrapper from .link.client import AsyncLinkClient +from .electrocardiogram.client import AsyncElectrocardiogramClient from .sleep_cycle.client import AsyncSleepCycleClient from .profile.client import AsyncProfileClient from .devices.client import AsyncDevicesClient @@ -104,6 +106,7 @@ def __init__( timeout=_defaulted_timeout, ) self.link = LinkClient(client_wrapper=self._client_wrapper) + self.electrocardiogram = ElectrocardiogramClient(client_wrapper=self._client_wrapper) self.sleep_cycle = SleepCycleClient(client_wrapper=self._client_wrapper) self.profile = ProfileClient(client_wrapper=self._client_wrapper) self.devices = DevicesClient(client_wrapper=self._client_wrapper) @@ -183,6 +186,7 @@ def __init__( timeout=_defaulted_timeout, ) self.link = AsyncLinkClient(client_wrapper=self._client_wrapper) + self.electrocardiogram = AsyncElectrocardiogramClient(client_wrapper=self._client_wrapper) self.sleep_cycle = AsyncSleepCycleClient(client_wrapper=self._client_wrapper) self.profile = AsyncProfileClient(client_wrapper=self._client_wrapper) self.devices = AsyncDevicesClient(client_wrapper=self._client_wrapper) diff --git a/src/vital/core/client_wrapper.py b/src/vital/core/client_wrapper.py index 7cec062..1b27a5a 100644 --- a/src/vital/core/client_wrapper.py +++ b/src/vital/core/client_wrapper.py @@ -16,7 +16,7 @@ def get_headers(self) -> typing.Dict[str, str]: headers: typing.Dict[str, str] = { "X-Fern-Language": "Python", "X-Fern-SDK-Name": "vital", - "X-Fern-SDK-Version": "2.1.146", + "X-Fern-SDK-Version": "2.1.147", } headers["x-vital-api-key"] = self.api_key return headers diff --git a/src/vital/electrocardiogram/__init__.py b/src/vital/electrocardiogram/__init__.py new file mode 100644 index 0000000..f3ea265 --- /dev/null +++ b/src/vital/electrocardiogram/__init__.py @@ -0,0 +1,2 @@ +# This file was auto-generated by Fern from our API Definition. + diff --git a/src/vital/electrocardiogram/client.py b/src/vital/electrocardiogram/client.py new file mode 100644 index 0000000..14c7fcc --- /dev/null +++ b/src/vital/electrocardiogram/client.py @@ -0,0 +1,185 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.client_wrapper import SyncClientWrapper +import typing +from ..core.request_options import RequestOptions +from ..types.client_facing_electrocardiogram_response import ClientFacingElectrocardiogramResponse +from ..core.jsonable_encoder import jsonable_encoder +from ..core.pydantic_utilities import parse_obj_as +from ..errors.unprocessable_entity_error import UnprocessableEntityError +from ..types.http_validation_error import HttpValidationError +from json.decoder import JSONDecodeError +from ..core.api_error import ApiError +from ..core.client_wrapper import AsyncClientWrapper + + +class ElectrocardiogramClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def get( + self, + user_id: str, + *, + start_date: str, + end_date: typing.Optional[str] = None, + provider: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> ClientFacingElectrocardiogramResponse: + """ + Get electrocardiogram summary for user_id + + Parameters + ---------- + user_id : str + + start_date : str + + end_date : typing.Optional[str] + + provider : typing.Optional[str] + Provider oura/strava etc + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ClientFacingElectrocardiogramResponse + Successful Response + + Examples + -------- + from vital import Vital + + client = Vital( + api_key="YOUR_API_KEY", + ) + client.electrocardiogram.get( + user_id="user_id", + start_date="start_date", + ) + """ + _response = self._client_wrapper.httpx_client.request( + f"v2/summary/electrocardiogram/{jsonable_encoder(user_id)}", + method="GET", + params={ + "start_date": start_date, + "end_date": end_date, + "provider": provider, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return typing.cast( + ClientFacingElectrocardiogramResponse, + parse_obj_as( + type_=ClientFacingElectrocardiogramResponse, # type: ignore + object_=_response.json(), + ), + ) + if _response.status_code == 422: + raise UnprocessableEntityError( + typing.cast( + HttpValidationError, + parse_obj_as( + type_=HttpValidationError, # type: ignore + object_=_response.json(), + ), + ) + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + +class AsyncElectrocardiogramClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def get( + self, + user_id: str, + *, + start_date: str, + end_date: typing.Optional[str] = None, + provider: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> ClientFacingElectrocardiogramResponse: + """ + Get electrocardiogram summary for user_id + + Parameters + ---------- + user_id : str + + start_date : str + + end_date : typing.Optional[str] + + provider : typing.Optional[str] + Provider oura/strava etc + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ClientFacingElectrocardiogramResponse + Successful Response + + Examples + -------- + import asyncio + + from vital import AsyncVital + + client = AsyncVital( + api_key="YOUR_API_KEY", + ) + + + async def main() -> None: + await client.electrocardiogram.get( + user_id="user_id", + start_date="start_date", + ) + + + asyncio.run(main()) + """ + _response = await self._client_wrapper.httpx_client.request( + f"v2/summary/electrocardiogram/{jsonable_encoder(user_id)}", + method="GET", + params={ + "start_date": start_date, + "end_date": end_date, + "provider": provider, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return typing.cast( + ClientFacingElectrocardiogramResponse, + parse_obj_as( + type_=ClientFacingElectrocardiogramResponse, # type: ignore + object_=_response.json(), + ), + ) + if _response.status_code == 422: + raise UnprocessableEntityError( + typing.cast( + HttpValidationError, + parse_obj_as( + type_=HttpValidationError, # type: ignore + object_=_response.json(), + ), + ) + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) diff --git a/src/vital/types/__init__.py b/src/vital/types/__init__.py index 7c00538..116c07a 100644 --- a/src/vital/types/__init__.py +++ b/src/vital/types/__init__.py @@ -65,6 +65,12 @@ from .client_facing_cholesterol_timeseries import ClientFacingCholesterolTimeseries from .client_facing_diagnosis_information import ClientFacingDiagnosisInformation from .client_facing_distance_timeseries import ClientFacingDistanceTimeseries +from .client_facing_electrocardiogram import ClientFacingElectrocardiogram +from .client_facing_electrocardiogram_classification import ClientFacingElectrocardiogramClassification +from .client_facing_electrocardiogram_inconclusive_cause import ClientFacingElectrocardiogramInconclusiveCause +from .client_facing_electrocardiogram_response import ClientFacingElectrocardiogramResponse +from .client_facing_electrocardiogram_source_provider import ClientFacingElectrocardiogramSourceProvider +from .client_facing_electrocardiogram_source_type import ClientFacingElectrocardiogramSourceType from .client_facing_electrocardiogram_voltage_timeseries import ClientFacingElectrocardiogramVoltageTimeseries from .client_facing_floors_climbed_timeseries import ClientFacingFloorsClimbedTimeseries from .client_facing_food import ClientFacingFood @@ -112,6 +118,9 @@ from .client_facing_marker import ClientFacingMarker from .client_facing_marker_complete import ClientFacingMarkerComplete from .client_facing_meal_response import ClientFacingMealResponse +from .client_facing_menstrual_cycle import ClientFacingMenstrualCycle +from .client_facing_menstrual_cycle_source_provider import ClientFacingMenstrualCycleSourceProvider +from .client_facing_menstrual_cycle_source_type import ClientFacingMenstrualCycleSourceType from .client_facing_mindfulness_minutes_timeseries import ClientFacingMindfulnessMinutesTimeseries from .client_facing_note_sample import ClientFacingNoteSample from .client_facing_note_sample_tags_item import ClientFacingNoteSampleTagsItem @@ -305,7 +314,6 @@ from .manual_providers import ManualProviders from .marker_type import MarkerType from .meal_in_db_base_client_facing_source import MealInDbBaseClientFacingSource -from .menstrual_cycle import MenstrualCycle from .menstrual_cycle_response import MenstrualCycleResponse from .menstrual_flow_entry import MenstrualFlowEntry from .menstrual_flow_entry_flow import MenstrualFlowEntryFlow @@ -477,6 +485,12 @@ "ClientFacingCholesterolTimeseries", "ClientFacingDiagnosisInformation", "ClientFacingDistanceTimeseries", + "ClientFacingElectrocardiogram", + "ClientFacingElectrocardiogramClassification", + "ClientFacingElectrocardiogramInconclusiveCause", + "ClientFacingElectrocardiogramResponse", + "ClientFacingElectrocardiogramSourceProvider", + "ClientFacingElectrocardiogramSourceType", "ClientFacingElectrocardiogramVoltageTimeseries", "ClientFacingFloorsClimbedTimeseries", "ClientFacingFood", @@ -508,6 +522,9 @@ "ClientFacingMarker", "ClientFacingMarkerComplete", "ClientFacingMealResponse", + "ClientFacingMenstrualCycle", + "ClientFacingMenstrualCycleSourceProvider", + "ClientFacingMenstrualCycleSourceType", "ClientFacingMindfulnessMinutesTimeseries", "ClientFacingNoteSample", "ClientFacingNoteSampleTagsItem", @@ -685,7 +702,6 @@ "ManualProviders", "MarkerType", "MealInDbBaseClientFacingSource", - "MenstrualCycle", "MenstrualCycleResponse", "MenstrualFlowEntry", "MenstrualFlowEntryFlow", diff --git a/src/vital/types/client_facing_electrocardiogram.py b/src/vital/types/client_facing_electrocardiogram.py new file mode 100644 index 0000000..0ffe55c --- /dev/null +++ b/src/vital/types/client_facing_electrocardiogram.py @@ -0,0 +1,40 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import datetime as dt +import typing +from .client_facing_electrocardiogram_classification import ClientFacingElectrocardiogramClassification +from .client_facing_electrocardiogram_inconclusive_cause import ClientFacingElectrocardiogramInconclusiveCause +from .client_facing_electrocardiogram_source_provider import ClientFacingElectrocardiogramSourceProvider +from .client_facing_electrocardiogram_source_type import ClientFacingElectrocardiogramSourceType +from .client_facing_source import ClientFacingSource +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class ClientFacingElectrocardiogram(UniversalBaseModel): + id: str + session_start: dt.datetime + session_end: dt.datetime + voltage_sample_count: int + heart_rate_mean: typing.Optional[int] = None + sampling_frequency_hz: typing.Optional[float] = None + classification: typing.Optional[ClientFacingElectrocardiogramClassification] = None + inconclusive_cause: typing.Optional[ClientFacingElectrocardiogramInconclusiveCause] = None + algorithm_version: typing.Optional[str] = None + time_zone: typing.Optional[str] = None + source_provider: ClientFacingElectrocardiogramSourceProvider + source_type: ClientFacingElectrocardiogramSourceType + source_app_id: typing.Optional[str] = None + source_device_model: typing.Optional[str] = None + user_id: str + source: ClientFacingSource + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/vital/types/client_facing_electrocardiogram_classification.py b/src/vital/types/client_facing_electrocardiogram_classification.py new file mode 100644 index 0000000..8529ed4 --- /dev/null +++ b/src/vital/types/client_facing_electrocardiogram_classification.py @@ -0,0 +1,25 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class ClientFacingElectrocardiogramClassification(str, enum.Enum): + SINUS_RHYTHM = "sinus_rhythm" + ATRIAL_FIBRILLATION = "atrial_fibrillation" + INCONCLUSIVE = "inconclusive" + + def visit( + self, + sinus_rhythm: typing.Callable[[], T_Result], + atrial_fibrillation: typing.Callable[[], T_Result], + inconclusive: typing.Callable[[], T_Result], + ) -> T_Result: + if self is ClientFacingElectrocardiogramClassification.SINUS_RHYTHM: + return sinus_rhythm() + if self is ClientFacingElectrocardiogramClassification.ATRIAL_FIBRILLATION: + return atrial_fibrillation() + if self is ClientFacingElectrocardiogramClassification.INCONCLUSIVE: + return inconclusive() diff --git a/src/vital/types/client_facing_electrocardiogram_inconclusive_cause.py b/src/vital/types/client_facing_electrocardiogram_inconclusive_cause.py new file mode 100644 index 0000000..caa222c --- /dev/null +++ b/src/vital/types/client_facing_electrocardiogram_inconclusive_cause.py @@ -0,0 +1,25 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class ClientFacingElectrocardiogramInconclusiveCause(str, enum.Enum): + HIGH_HEART_RATE = "high_heart_rate" + LOW_HEART_RATE = "low_heart_rate" + POOR_READING = "poor_reading" + + def visit( + self, + high_heart_rate: typing.Callable[[], T_Result], + low_heart_rate: typing.Callable[[], T_Result], + poor_reading: typing.Callable[[], T_Result], + ) -> T_Result: + if self is ClientFacingElectrocardiogramInconclusiveCause.HIGH_HEART_RATE: + return high_heart_rate() + if self is ClientFacingElectrocardiogramInconclusiveCause.LOW_HEART_RATE: + return low_heart_rate() + if self is ClientFacingElectrocardiogramInconclusiveCause.POOR_READING: + return poor_reading() diff --git a/src/vital/types/client_facing_electrocardiogram_response.py b/src/vital/types/client_facing_electrocardiogram_response.py new file mode 100644 index 0000000..122865c --- /dev/null +++ b/src/vital/types/client_facing_electrocardiogram_response.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from .client_facing_electrocardiogram import ClientFacingElectrocardiogram +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class ClientFacingElectrocardiogramResponse(UniversalBaseModel): + electrocardiogram: typing.List[ClientFacingElectrocardiogram] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/vital/types/client_facing_electrocardiogram_source_provider.py b/src/vital/types/client_facing_electrocardiogram_source_provider.py new file mode 100644 index 0000000..c0d744a --- /dev/null +++ b/src/vital/types/client_facing_electrocardiogram_source_provider.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from .providers import Providers +from .labs import Labs + +ClientFacingElectrocardiogramSourceProvider = typing.Union[Providers, Labs] diff --git a/src/vital/types/client_facing_electrocardiogram_source_type.py b/src/vital/types/client_facing_electrocardiogram_source_type.py new file mode 100644 index 0000000..dba41a0 --- /dev/null +++ b/src/vital/types/client_facing_electrocardiogram_source_type.py @@ -0,0 +1,65 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class ClientFacingElectrocardiogramSourceType(str, enum.Enum): + UNKNOWN = "unknown" + PHONE = "phone" + WATCH = "watch" + APP = "app" + MULTIPLE_SOURCES = "multiple_sources" + FINGERPRICK = "fingerprick" + CUFF = "cuff" + MANUAL_SCAN = "manual_scan" + AUTOMATIC = "automatic" + SCALE = "scale" + CHEST_STRAP = "chest_strap" + RING = "ring" + LAB = "lab" + + def visit( + self, + unknown: typing.Callable[[], T_Result], + phone: typing.Callable[[], T_Result], + watch: typing.Callable[[], T_Result], + app: typing.Callable[[], T_Result], + multiple_sources: typing.Callable[[], T_Result], + fingerprick: typing.Callable[[], T_Result], + cuff: typing.Callable[[], T_Result], + manual_scan: typing.Callable[[], T_Result], + automatic: typing.Callable[[], T_Result], + scale: typing.Callable[[], T_Result], + chest_strap: typing.Callable[[], T_Result], + ring: typing.Callable[[], T_Result], + lab: typing.Callable[[], T_Result], + ) -> T_Result: + if self is ClientFacingElectrocardiogramSourceType.UNKNOWN: + return unknown() + if self is ClientFacingElectrocardiogramSourceType.PHONE: + return phone() + if self is ClientFacingElectrocardiogramSourceType.WATCH: + return watch() + if self is ClientFacingElectrocardiogramSourceType.APP: + return app() + if self is ClientFacingElectrocardiogramSourceType.MULTIPLE_SOURCES: + return multiple_sources() + if self is ClientFacingElectrocardiogramSourceType.FINGERPRICK: + return fingerprick() + if self is ClientFacingElectrocardiogramSourceType.CUFF: + return cuff() + if self is ClientFacingElectrocardiogramSourceType.MANUAL_SCAN: + return manual_scan() + if self is ClientFacingElectrocardiogramSourceType.AUTOMATIC: + return automatic() + if self is ClientFacingElectrocardiogramSourceType.SCALE: + return scale() + if self is ClientFacingElectrocardiogramSourceType.CHEST_STRAP: + return chest_strap() + if self is ClientFacingElectrocardiogramSourceType.RING: + return ring() + if self is ClientFacingElectrocardiogramSourceType.LAB: + return lab() diff --git a/src/vital/types/menstrual_cycle.py b/src/vital/types/client_facing_menstrual_cycle.py similarity index 83% rename from src/vital/types/menstrual_cycle.py rename to src/vital/types/client_facing_menstrual_cycle.py index c75f391..e0262fb 100644 --- a/src/vital/types/menstrual_cycle.py +++ b/src/vital/types/client_facing_menstrual_cycle.py @@ -12,12 +12,15 @@ from .home_progesterone_test_entry import HomeProgesteroneTestEntry from .sexual_activity_entry import SexualActivityEntry from .basal_body_temperature_entry import BasalBodyTemperatureEntry +from .client_facing_menstrual_cycle_source_provider import ClientFacingMenstrualCycleSourceProvider +from .client_facing_menstrual_cycle_source_type import ClientFacingMenstrualCycleSourceType from .client_facing_source import ClientFacingSource from ..core.pydantic_utilities import IS_PYDANTIC_V2 import pydantic -class MenstrualCycle(UniversalBaseModel): +class ClientFacingMenstrualCycle(UniversalBaseModel): + id: str period_start: str period_end: typing.Optional[str] = None cycle_end: typing.Optional[str] = None @@ -32,6 +35,10 @@ class MenstrualCycle(UniversalBaseModel): home_progesterone_test: typing.Optional[typing.List[HomeProgesteroneTestEntry]] = None sexual_activity: typing.Optional[typing.List[SexualActivityEntry]] = None basal_body_temperature: typing.Optional[typing.List[BasalBodyTemperatureEntry]] = None + source_provider: ClientFacingMenstrualCycleSourceProvider + source_type: ClientFacingMenstrualCycleSourceType + source_app_id: typing.Optional[str] = None + user_id: str source: ClientFacingSource if IS_PYDANTIC_V2: diff --git a/src/vital/types/client_facing_menstrual_cycle_source_provider.py b/src/vital/types/client_facing_menstrual_cycle_source_provider.py new file mode 100644 index 0000000..56be526 --- /dev/null +++ b/src/vital/types/client_facing_menstrual_cycle_source_provider.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from .providers import Providers +from .labs import Labs + +ClientFacingMenstrualCycleSourceProvider = typing.Union[Providers, Labs] diff --git a/src/vital/types/client_facing_menstrual_cycle_source_type.py b/src/vital/types/client_facing_menstrual_cycle_source_type.py new file mode 100644 index 0000000..5a76842 --- /dev/null +++ b/src/vital/types/client_facing_menstrual_cycle_source_type.py @@ -0,0 +1,65 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class ClientFacingMenstrualCycleSourceType(str, enum.Enum): + UNKNOWN = "unknown" + PHONE = "phone" + WATCH = "watch" + APP = "app" + MULTIPLE_SOURCES = "multiple_sources" + FINGERPRICK = "fingerprick" + CUFF = "cuff" + MANUAL_SCAN = "manual_scan" + AUTOMATIC = "automatic" + SCALE = "scale" + CHEST_STRAP = "chest_strap" + RING = "ring" + LAB = "lab" + + def visit( + self, + unknown: typing.Callable[[], T_Result], + phone: typing.Callable[[], T_Result], + watch: typing.Callable[[], T_Result], + app: typing.Callable[[], T_Result], + multiple_sources: typing.Callable[[], T_Result], + fingerprick: typing.Callable[[], T_Result], + cuff: typing.Callable[[], T_Result], + manual_scan: typing.Callable[[], T_Result], + automatic: typing.Callable[[], T_Result], + scale: typing.Callable[[], T_Result], + chest_strap: typing.Callable[[], T_Result], + ring: typing.Callable[[], T_Result], + lab: typing.Callable[[], T_Result], + ) -> T_Result: + if self is ClientFacingMenstrualCycleSourceType.UNKNOWN: + return unknown() + if self is ClientFacingMenstrualCycleSourceType.PHONE: + return phone() + if self is ClientFacingMenstrualCycleSourceType.WATCH: + return watch() + if self is ClientFacingMenstrualCycleSourceType.APP: + return app() + if self is ClientFacingMenstrualCycleSourceType.MULTIPLE_SOURCES: + return multiple_sources() + if self is ClientFacingMenstrualCycleSourceType.FINGERPRICK: + return fingerprick() + if self is ClientFacingMenstrualCycleSourceType.CUFF: + return cuff() + if self is ClientFacingMenstrualCycleSourceType.MANUAL_SCAN: + return manual_scan() + if self is ClientFacingMenstrualCycleSourceType.AUTOMATIC: + return automatic() + if self is ClientFacingMenstrualCycleSourceType.SCALE: + return scale() + if self is ClientFacingMenstrualCycleSourceType.CHEST_STRAP: + return chest_strap() + if self is ClientFacingMenstrualCycleSourceType.RING: + return ring() + if self is ClientFacingMenstrualCycleSourceType.LAB: + return lab() diff --git a/src/vital/types/client_facing_sport.py b/src/vital/types/client_facing_sport.py index a2a1eda..084d4a9 100644 --- a/src/vital/types/client_facing_sport.py +++ b/src/vital/types/client_facing_sport.py @@ -7,7 +7,11 @@ class ClientFacingSport(UniversalBaseModel): - id: int + id: int = pydantic.Field() + """ + This ID is unstable across environments. Use the slug instead. + """ + name: str = pydantic.Field() """ Sport's name diff --git a/src/vital/types/menstrual_cycle_response.py b/src/vital/types/menstrual_cycle_response.py index 4904c34..638d20c 100644 --- a/src/vital/types/menstrual_cycle_response.py +++ b/src/vital/types/menstrual_cycle_response.py @@ -2,13 +2,13 @@ from ..core.pydantic_utilities import UniversalBaseModel import typing -from .menstrual_cycle import MenstrualCycle +from .client_facing_menstrual_cycle import ClientFacingMenstrualCycle from ..core.pydantic_utilities import IS_PYDANTIC_V2 import pydantic class MenstrualCycleResponse(UniversalBaseModel): - menstrual_cycle: typing.List[MenstrualCycle] + menstrual_cycle: typing.List[ClientFacingMenstrualCycle] if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/vital/types/workout_column_expr_workout.py b/src/vital/types/workout_column_expr_workout.py index acf0600..5f59641 100644 --- a/src/vital/types/workout_column_expr_workout.py +++ b/src/vital/types/workout_column_expr_workout.py @@ -10,7 +10,6 @@ class WorkoutColumnExprWorkout(str, enum.Enum): SESSION_START = "session_start" SESSION_END = "session_end" TITLE = "title" - SPORT_ID = "sport_id" SPORT_NAME = "sport_name" SPORT_SLUG = "sport_slug" DURATION_ACTIVE_SECOND = "duration_active_second" @@ -45,7 +44,6 @@ def visit( session_start: typing.Callable[[], T_Result], session_end: typing.Callable[[], T_Result], title: typing.Callable[[], T_Result], - sport_id: typing.Callable[[], T_Result], sport_name: typing.Callable[[], T_Result], sport_slug: typing.Callable[[], T_Result], duration_active_second: typing.Callable[[], T_Result], @@ -81,8 +79,6 @@ def visit( return session_end() if self is WorkoutColumnExprWorkout.TITLE: return title() - if self is WorkoutColumnExprWorkout.SPORT_ID: - return sport_id() if self is WorkoutColumnExprWorkout.SPORT_NAME: return sport_name() if self is WorkoutColumnExprWorkout.SPORT_SLUG: