From bcb9c2594769eaed81bc70709adaa407549898d9 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Tue, 24 Mar 2026 17:57:32 +0000 Subject: [PATCH] feat: add logging support and enhanced SSE handling with event discrimination MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add configurable logging to ClientOptions with LogConfig and LoggingInterceptor support. Implement new SSE_EVENT_DISCRIMINATED stream type for handling discriminated union payloads in Server-Sent Events streams. Remove deprecated InputStream-based file upload methods from lab report clients. Key changes: - Add optional logging configuration to ClientOptions builder - Implement SSE event-level discrimination with SseEventParser integration - Remove InputStream overloads for parserCreateJob methods - Add fromSseWithEventDiscrimination factory methods to Stream class - Update documentation to reflect file(s) upload capability 🌿 Generated with Fern --- .fern/metadata.json | 7 +- .fernignore | 1 + build.gradle | 4 +- changelog.md | 38 ++ reference.md | 341 ++++++++++- src/main/java/com/vital/api/AsyncVital.java | 16 + .../java/com/vital/api/AsyncVitalBuilder.java | 24 + src/main/java/com/vital/api/Vital.java | 16 + src/main/java/com/vital/api/VitalBuilder.java | 24 + .../com/vital/api/core/ClientOptions.java | 36 +- .../com/vital/api/core/ConsoleLogger.java | 51 ++ src/main/java/com/vital/api/core/ILogger.java | 38 ++ .../java/com/vital/api/core/LogConfig.java | 98 ++++ .../java/com/vital/api/core/LogLevel.java | 36 ++ src/main/java/com/vital/api/core/Logger.java | 97 ++++ .../vital/api/core/LoggingInterceptor.java | 104 ++++ .../java/com/vital/api/core/SseEvent.java | 114 ++++ .../com/vital/api/core/SseEventParser.java | 228 ++++++++ src/main/java/com/vital/api/core/Stream.java | 221 ++++++- .../activity/AsyncRawActivityClient.java | 8 +- .../resources/activity/RawActivityClient.java | 8 +- .../requests/ActivityGetRawRequest.java | 16 + .../activity/requests/ActivityGetRequest.java | 16 + .../aggregate/AsyncRawAggregateClient.java | 12 +- .../aggregate/RawAggregateClient.java | 12 +- ...tTaskHistoryForContinuousQueryRequest.java | 10 + .../aggregate/requests/QueryBatch.java | 16 + .../resources/body/AsyncRawBodyClient.java | 8 +- .../api/resources/body/RawBodyClient.java | 8 +- .../body/requests/BodyGetRawRequest.java | 16 + .../body/requests/BodyGetRequest.java | 16 + .../compendium/AsyncCompendiumClient.java | 48 ++ .../compendium/AsyncRawCompendiumClient.java | 191 ++++++ .../compendium/CompendiumClient.java | 45 ++ .../compendium/RawCompendiumClient.java | 156 +++++ .../requests/ConvertCompendiumBody.java | 245 ++++++++ .../requests/SearchCompendiumBody.java | 345 +++++++++++ .../types/CompendiumConvertRequestTeamId.java | 22 + .../types/CompendiumSearchRequestTeamId.java | 22 + .../devices/AsyncRawDevicesClient.java | 4 +- .../resources/devices/RawDevicesClient.java | 4 +- .../requests/DevicesGetRawRequest.java | 10 + .../AsyncRawElectrocardiogramClient.java | 4 +- .../RawElectrocardiogramClient.java | 4 +- .../requests/ElectrocardiogramGetRequest.java | 16 + .../insurance/AsyncRawInsuranceClient.java | 12 +- .../insurance/RawInsuranceClient.java | 12 +- .../InsuranceSearchDiagnosisRequest.java | 16 + .../InsuranceSearchGetPayorInfoRequest.java | 10 + .../requests/PayorSearchRequest.java | 10 + .../introspect/AsyncRawIntrospectClient.java | 8 +- .../introspect/RawIntrospectClient.java | 8 +- ...trospectGetUserHistoricalPullsRequest.java | 10 + .../IntrospectGetUserResourcesRequest.java | 10 + .../labaccount/AsyncLabAccountClient.java | 46 ++ .../labaccount/AsyncRawLabAccountClient.java | 118 ++++ .../labaccount/LabAccountClient.java | 44 ++ .../labaccount/RawLabAccountClient.java | 97 ++++ .../LabAccountGetTeamLabAccountsRequest.java | 132 +++++ .../labreport/AsyncLabReportClient.java | 26 +- .../labreport/AsyncRawLabReportClient.java | 241 +------- .../resources/labreport/LabReportClient.java | 25 +- .../labreport/RawLabReportClient.java | 180 +----- .../BodyCreateLabReportParserJob.java | 16 + .../labtests/AsyncLabTestsClient.java | 20 +- .../labtests/AsyncRawLabTestsClient.java | 194 ++++--- .../resources/labtests/LabTestsClient.java | 20 +- .../resources/labtests/RawLabTestsClient.java | 194 ++++--- ...OrdersHelpersAppointmentCancelRequest.java | 16 + .../requests/CreateLabTestRequest.java | 99 +++- .../CreateOrderRequestCompatible.java | 48 ++ .../labtests/requests/ImportOrderBody.java | 16 + .../LabTestsBookPscAppointmentRequest.java | 16 + .../requests/LabTestsGetAreaInfoRequest.java | 16 + .../requests/LabTestsGetByIdRequest.java | 10 + .../requests/LabTestsGetLabelsPdfRequest.java | 16 + ...tsGetMarkersByLabAndProviderIdRequest.java | 10 + .../LabTestsGetMarkersForLabTestRequest.java | 10 + .../LabTestsGetMarkersForOrderSetRequest.java | 16 + .../requests/LabTestsGetMarkersRequest.java | 45 +- .../LabTestsGetOrderPscInfoRequest.java | 10 + .../requests/LabTestsGetOrdersRequest.java | 10 + .../requests/LabTestsGetPaginatedRequest.java | 10 + ...ebotomyAppointmentAvailabilityRequest.java | 16 + ...sGetPscAppointmentAvailabilityRequest.java | 29 +- .../requests/LabTestsGetPscInfoRequest.java | 16 + .../labtests/requests/LabTestsGetRequest.java | 10 + .../LabTestsSimulateOrderProcessRequest.java | 10 + .../requests/RequestAppointmentRequest.java | 59 +- .../requests/UpdateLabTestRequest.java | 10 + .../requests/ValidateIcdCodesBody.java | 10 + ...GetlabsSchemaAppointmentCancelRequest.java | 16 + .../resources/link/AsyncRawLinkClient.java | 95 +-- .../api/resources/link/RawLinkClient.java | 95 +-- .../link/requests/BeginLinkTokenRequest.java | 16 + .../requests/BulkExportConnectionsBody.java | 16 + .../requests/BulkImportConnectionsBody.java | 16 + .../requests/BulkPauseConnectionsBody.java | 16 + .../BulkTriggerHistoricalPullBody.java | 16 + .../CompletePasswordProviderMfaBody.java | 16 + .../DemoConnectionCreationPayload.java | 16 + .../link/requests/EmailAuthLink.java | 16 + .../link/requests/EmailProviderAuthLink.java | 16 + .../link/requests/IndividualProviderData.java | 16 + .../link/requests/LinkCodeCreateRequest.java | 16 + .../LinkGenerateOauthLinkRequest.java | 10 + .../requests/LinkGetAllProvidersRequest.java | 10 + .../link/requests/LinkListBulkOpsRequest.java | 10 + .../link/requests/LinkTokenExchange.java | 16 + .../link/requests/LinkTokenStateRequest.java | 10 + .../requests/LinkTokenValidationRequest.java | 16 + .../link/requests/ManualConnectionData.java | 129 ++++- .../link/requests/PasswordAuthLink.java | 16 + .../resources/meal/AsyncRawMealClient.java | 4 +- .../api/resources/meal/RawMealClient.java | 4 +- .../meal/requests/MealGetRequest.java | 16 + .../AsyncRawMenstrualCycleClient.java | 4 +- .../RawMenstrualCycleClient.java | 4 +- .../requests/MenstrualCycleGetRequest.java | 16 + .../resources/order/AsyncRawOrderClient.java | 4 +- .../api/resources/order/RawOrderClient.java | 4 +- .../order/requests/ResendWebhookBody.java | 10 + .../AsyncRawOrderTransactionClient.java | 12 +- .../RawOrderTransactionClient.java | 12 +- .../resources/payor/AsyncRawPayorClient.java | 4 +- .../api/resources/payor/RawPayorClient.java | 4 +- .../payor/requests/CreatePayorBody.java | 16 + .../profile/AsyncRawProfileClient.java | 8 +- .../resources/profile/RawProfileClient.java | 8 +- .../requests/ProfileGetRawRequest.java | 10 + .../profile/requests/ProfileGetRequest.java | 10 + .../providers/AsyncRawProvidersClient.java | 4 +- .../providers/RawProvidersClient.java | 4 +- .../requests/ProvidersGetAllRequest.java | 10 + .../resources/sleep/AsyncRawSleepClient.java | 12 +- .../api/resources/sleep/RawSleepClient.java | 12 +- .../sleep/requests/SleepGetRawRequest.java | 16 + .../sleep/requests/SleepGetRequest.java | 16 + .../sleepcycle/AsyncRawSleepCycleClient.java | 4 +- .../sleepcycle/RawSleepCycleClient.java | 4 +- .../requests/SleepCycleGetRequest.java | 16 + .../resources/team/AsyncRawTeamClient.java | 31 +- .../api/resources/team/RawTeamClient.java | 31 +- .../requests/TeamGetLinkConfigRequest.java | 10 + .../TeamGetSourcePrioritiesRequest.java | 10 + .../team/requests/TeamGetUserByIdRequest.java | 10 + .../testkit/AsyncRawTestkitClient.java | 8 +- .../resources/testkit/RawTestkitClient.java | 8 +- .../CreateRegistrableTestkitOrderRequest.java | 16 + .../requests/RegisterTestkitRequest.java | 16 + .../resources/user/AsyncRawUserClient.java | 76 +-- .../api/resources/user/RawUserClient.java | 76 +-- .../user/requests/CreateInsuranceRequest.java | 16 + .../requests/CreateUserPortalUrlBody.java | 16 + .../user/requests/UserCreateBody.java | 16 + .../user/requests/UserGetAllRequest.java | 10 + .../UserGetLatestInsuranceRequest.java | 10 + .../user/requests/UserInfoCreateRequest.java | 30 +- .../user/requests/UserPatchBody.java | 10 + .../user/requests/UserRefreshRequest.java | 10 + .../user/requests/UserUndoDeleteRequest.java | 10 + .../vitals/AsyncRawVitalsClient.java | 312 +++++----- .../api/resources/vitals/RawVitalsClient.java | 312 +++++----- .../VitalsAfibBurdenGroupedRequest.java | 16 + ...alsBasalBodyTemperatureGroupedRequest.java | 16 + .../VitalsBloodOxygenGroupedRequest.java | 16 + .../requests/VitalsBloodOxygenRequest.java | 16 + .../VitalsBloodPressureGroupedRequest.java | 16 + .../requests/VitalsBloodPressureRequest.java | 16 + .../requests/VitalsBodyFatGroupedRequest.java | 16 + .../vitals/requests/VitalsBodyFatRequest.java | 16 + .../VitalsBodyMassIndexGroupedRequest.java | 16 + ...alsBodyTemperatureDeltaGroupedRequest.java | 16 + .../VitalsBodyTemperatureGroupedRequest.java | 16 + .../VitalsBodyWeightGroupedRequest.java | 16 + .../requests/VitalsBodyWeightRequest.java | 16 + .../VitalsCaffeineGroupedRequest.java | 16 + .../requests/VitalsCaffeineRequest.java | 16 + .../VitalsCaloriesActiveGroupedRequest.java | 16 + .../requests/VitalsCaloriesActiveRequest.java | 16 + .../VitalsCaloriesBasalGroupedRequest.java | 16 + .../requests/VitalsCaloriesBasalRequest.java | 16 + .../VitalsCarbohydratesGroupedRequest.java | 16 + .../VitalsCholesterolGroupedRequest.java | 16 + .../requests/VitalsCholesterolHdlRequest.java | 16 + .../requests/VitalsCholesterolLdlRequest.java | 16 + .../requests/VitalsCholesterolRequest.java | 16 + .../VitalsCholesterolTotalRequest.java | 16 + ...VitalsCholesterolTriglyceridesRequest.java | 16 + .../VitalsDaylightExposureGroupedRequest.java | 16 + .../VitalsDistanceGroupedRequest.java | 16 + .../requests/VitalsDistanceRequest.java | 16 + ...lectrocardiogramVoltageGroupedRequest.java | 16 + ...VitalsElectrocardiogramVoltageRequest.java | 16 + .../requests/VitalsFallGroupedRequest.java | 16 + .../VitalsFloorsClimbedGroupedRequest.java | 16 + .../requests/VitalsFloorsClimbedRequest.java | 16 + ...ForcedExpiratoryVolume1GroupedRequest.java | 16 + ...talsForcedVitalCapacityGroupedRequest.java | 16 + .../requests/VitalsGlucoseGroupedRequest.java | 16 + .../vitals/requests/VitalsGlucoseRequest.java | 16 + .../VitalsHandwashingGroupedRequest.java | 16 + .../VitalsHeartRateAlertGroupedRequest.java | 16 + ...rtRateRecoveryOneMinuteGroupedRequest.java | 16 + .../VitalsHeartrateGroupedRequest.java | 16 + .../requests/VitalsHeartrateRequest.java | 16 + .../requests/VitalsHrvGroupedRequest.java | 16 + .../vitals/requests/VitalsHrvRequest.java | 16 + .../VitalsHypnogramGroupedRequest.java | 16 + .../requests/VitalsHypnogramRequest.java | 16 + .../requests/VitalsIgeGroupedRequest.java | 16 + .../vitals/requests/VitalsIgeRequest.java | 16 + .../requests/VitalsIggGroupedRequest.java | 16 + .../vitals/requests/VitalsIggRequest.java | 16 + .../VitalsInhalerUsageGroupedRequest.java | 16 + .../VitalsInsulinInjectionGroupedRequest.java | 16 + .../VitalsLeanBodyMassGroupedRequest.java | 16 + ...italsMindfulnessMinutesGroupedRequest.java | 16 + .../VitalsMindfulnessMinutesRequest.java | 16 + .../requests/VitalsNoteGroupedRequest.java | 16 + ...sPeakExpiratoryFlowRateGroupedRequest.java | 16 + .../VitalsRespiratoryRateGroupedRequest.java | 16 + .../VitalsRespiratoryRateRequest.java | 16 + .../VitalsSleepApneaAlertGroupedRequest.java | 16 + ...eepBreathingDisturbanceGroupedRequest.java | 16 + .../VitalsStandDurationGroupedRequest.java | 16 + .../VitalsStandHourGroupedRequest.java | 16 + .../requests/VitalsStepsGroupedRequest.java | 16 + .../vitals/requests/VitalsStepsRequest.java | 16 + .../VitalsStressLevelGroupedRequest.java | 16 + .../requests/VitalsStressLevelRequest.java | 16 + .../VitalsUvExposureGroupedRequest.java | 16 + .../requests/VitalsVo2MaxGroupedRequest.java | 16 + .../vitals/requests/VitalsVo2MaxRequest.java | 16 + ...italsWaistCircumferenceGroupedRequest.java | 16 + .../requests/VitalsWaterGroupedRequest.java | 16 + .../vitals/requests/VitalsWaterRequest.java | 16 + .../VitalsWheelchairPushGroupedRequest.java | 16 + .../VitalsWorkoutDistanceGroupedRequest.java | 16 + .../VitalsWorkoutDurationGroupedRequest.java | 16 + ...lsWorkoutSwimmingStrokeGroupedRequest.java | 16 + .../workouts/AsyncRawWorkoutsClient.java | 12 +- .../resources/workouts/RawWorkoutsClient.java | 12 +- .../requests/WorkoutsGetRawRequest.java | 16 + .../workouts/requests/WorkoutsGetRequest.java | 16 + .../vital/api/types/ActivityColumnExpr.java | 16 + .../com/vital/api/types/ActivityV2InDb.java | 16 + .../java/com/vital/api/types/AddOnOrder.java | 10 + .../java/com/vital/api/types/Address.java | 53 +- .../com/vital/api/types/AggregateExpr.java | 16 + .../com/vital/api/types/AggregateExprArg.java | 78 +-- .../vital/api/types/AggregationResponse.java | 10 + .../vital/api/types/AggregationResult.java | 10 + src/main/java/com/vital/api/types/Answer.java | 16 + src/main/java/com/vital/api/types/AoE.java | 10 + .../java/com/vital/api/types/AoEAnswer.java | 16 + .../types/AppointmentAvailabilitySlots.java | 10 + .../api/types/AppointmentBookingRequest.java | 48 ++ .../vital/api/types/AppointmentLocation.java | 16 + .../vital/api/types/AppointmentProvider.java | 4 +- .../vital/api/types/AppointmentPscLabs.java | 24 + .../types/AppointmentRescheduleRequest.java | 55 +- .../java/com/vital/api/types/AreaInfo.java | 16 + .../api/types/AsleepAtValueMacroExpr.java | 10 + .../api/types/AwakeAtValueMacroExpr.java | 10 + .../api/types/BasalBodyTemperatureEntry.java | 16 + .../com/vital/api/types/BiomarkerResult.java | 16 + .../types/BloodPressureTimeseriesExpr.java | 16 + .../com/vital/api/types/BodyColumnExpr.java | 16 + .../java/com/vital/api/types/BodyV2InDb.java | 16 + .../types/BulkExportConnectionsResponse.java | 10 + .../types/BulkImportConnectionsResponse.java | 10 + src/main/java/com/vital/api/types/BulkOp.java | 16 + .../com/vital/api/types/BulkOpsResponse.java | 10 + .../vital/api/types/CanonicalCandidate.java | 397 +++++++++++++ .../vital/api/types/CervicalMucusEntry.java | 16 + .../api/types/ChronotypeValueMacroExpr.java | 10 + .../api/types/ClientActivityResponse.java | 10 + .../vital/api/types/ClientBodyResponse.java | 10 + .../types/ClientFacingAFibBurdenSample.java | 16 + .../vital/api/types/ClientFacingActivity.java | 16 + .../types/ClientFacingActivityChanged.java | 16 + ...FacingActivityHistoricalPullCompleted.java | 16 + .../types/ClientFacingAfibBurdenChanged.java | 16 + ...cingAfibBurdenHistoricalPullCompleted.java | 16 + .../vital/api/types/ClientFacingApiKey.java | 16 + .../api/types/ClientFacingAppointment.java | 48 ++ ...ntFacingAppointmentCancellationReason.java | 16 + .../types/ClientFacingAppointmentChanged.java | 16 + .../types/ClientFacingAppointmentEvent.java | 16 + .../ClientFacingAtHomePhlebotomyOrder.java | 16 + ...entFacingAtHomePhlebotomyOrderDetails.java | 10 + ...ientFacingBasalBodyTemperatureChanged.java | 16 + ...odyTemperatureHistoricalPullCompleted.java | 16 + ...lientFacingBasalBodyTemperatureSample.java | 16 + .../types/ClientFacingBloodOxygenChanged.java | 16 + ...ingBloodOxygenHistoricalPullCompleted.java | 16 + .../ClientFacingBloodOxygenTimeseries.java | 16 + .../ClientFacingBloodPressureChanged.java | 16 + ...gBloodPressureHistoricalPullCompleted.java | 16 + .../ClientFacingBloodPressureTimeseries.java | 16 + .../com/vital/api/types/ClientFacingBody.java | 16 + .../api/types/ClientFacingBodyChanged.java | 16 + .../types/ClientFacingBodyFatTimeseries.java | 16 + ...ientFacingBodyHistoricalPullCompleted.java | 16 + .../ClientFacingBodyMassIndexChanged.java | 16 + ...gBodyMassIndexHistoricalPullCompleted.java | 16 + .../ClientFacingBodyMassIndexSample.java | 16 + .../ClientFacingBodyTemperatureChanged.java | 16 + ...ientFacingBodyTemperatureDeltaChanged.java | 16 + ...mperatureDeltaHistoricalPullCompleted.java | 16 + ...lientFacingBodyTemperatureDeltaSample.java | 16 + ...odyTemperatureHistoricalPullCompleted.java | 16 + .../ClientFacingBodyTemperatureSample.java | 16 + .../ClientFacingBodyWeightTimeseries.java | 16 + .../types/ClientFacingCaffeineChanged.java | 16 + ...FacingCaffeineHistoricalPullCompleted.java | 16 + .../types/ClientFacingCaffeineTimeseries.java | 16 + .../ClientFacingCaloriesActiveChanged.java | 16 + ...CaloriesActiveHistoricalPullCompleted.java | 16 + .../ClientFacingCaloriesActiveTimeseries.java | 16 + .../ClientFacingCaloriesBasalChanged.java | 16 + ...gCaloriesBasalHistoricalPullCompleted.java | 16 + .../ClientFacingCaloriesBasalTimeseries.java | 16 + .../ClientFacingCarbohydratesChanged.java | 16 + ...gCarbohydratesHistoricalPullCompleted.java | 16 + .../ClientFacingCarbohydratesSample.java | 16 + .../types/ClientFacingCholesterolChanged.java | 16 + ...ingCholesterolHistoricalPullCompleted.java | 16 + .../ClientFacingCholesterolTimeseries.java | 16 + .../ClientFacingConnectionErrorDetails.java | 16 + ...cingContinuousQueryResultTableChanged.java | 16 + .../api/types/ClientFacingCriticalResult.java | 16 + .../ClientFacingCriticalResultIdentified.java | 16 + .../ClientFacingDaylightExposureChanged.java | 16 + ...ylightExposureHistoricalPullCompleted.java | 16 + .../ClientFacingDaylightExposureSample.java | 16 + .../vital/api/types/ClientFacingDevice.java | 16 + .../api/types/ClientFacingDeviceChanged.java | 16 + .../types/ClientFacingDeviceSourceType.java | 2 + .../ClientFacingDiagnosisInformation.java | 16 + .../types/ClientFacingDistanceChanged.java | 16 + ...FacingDistanceHistoricalPullCompleted.java | 16 + .../types/ClientFacingDistanceTimeseries.java | 16 + .../types/ClientFacingElectrocardiogram.java | 16 + .../ClientFacingElectrocardiogramChanged.java | 16 + ...ctrocardiogramHistoricalPullCompleted.java | 16 + ...ClientFacingElectrocardiogramResponse.java | 10 + ...ientFacingElectrocardiogramSourceType.java | 2 + ...FacingElectrocardiogramVoltageChanged.java | 16 + ...diogramVoltageHistoricalPullCompleted.java | 16 + ...ingElectrocardiogramVoltageTimeseries.java | 16 + .../api/types/ClientFacingFallChanged.java | 16 + ...ientFacingFallHistoricalPullCompleted.java | 16 + .../api/types/ClientFacingFallSample.java | 16 + .../api/types/ClientFacingFatChanged.java | 16 + ...lientFacingFatHistoricalPullCompleted.java | 16 + .../ClientFacingFloorsClimbedChanged.java | 16 + ...gFloorsClimbedHistoricalPullCompleted.java | 16 + .../ClientFacingFloorsClimbedTimeseries.java | 16 + .../com/vital/api/types/ClientFacingFood.java | 10 + ...tFacingForcedExpiratoryVolume1Changed.java | 16 + ...iratoryVolume1HistoricalPullCompleted.java | 16 + ...ntFacingForcedExpiratoryVolume1Sample.java | 16 + ...lientFacingForcedVitalCapacityChanged.java | 16 + ...dVitalCapacityHistoricalPullCompleted.java | 16 + ...ClientFacingForcedVitalCapacitySample.java | 16 + .../api/types/ClientFacingGlucoseChanged.java | 16 + ...tFacingGlucoseHistoricalPullCompleted.java | 16 + .../types/ClientFacingGlucoseTimeseries.java | 16 + .../types/ClientFacingHandwashingChanged.java | 16 + ...ingHandwashingHistoricalPullCompleted.java | 16 + .../types/ClientFacingHandwashingSample.java | 16 + .../api/types/ClientFacingHeartRate.java | 10 + .../ClientFacingHeartRateAlertChanged.java | 16 + ...HeartRateAlertHistoricalPullCompleted.java | 16 + .../ClientFacingHeartRateAlertSample.java | 16 + ...cingHeartRateRecoveryOneMinuteChanged.java | 16 + ...overyOneMinuteHistoricalPullCompleted.java | 16 + ...acingHeartRateRecoveryOneMinuteSample.java | 16 + .../ClientFacingHeartRateTimeseries.java | 16 + .../types/ClientFacingHeartrateChanged.java | 16 + ...acingHeartrateHistoricalPullCompleted.java | 16 + .../api/types/ClientFacingHrvChanged.java | 16 + ...lientFacingHrvHistoricalPullCompleted.java | 16 + .../api/types/ClientFacingHrvTimeseries.java | 16 + .../ClientFacingHypnogramTimeseries.java | 16 + .../api/types/ClientFacingIgeChanged.java | 16 + ...lientFacingIgeHistoricalPullCompleted.java | 16 + .../api/types/ClientFacingIgeTimeseries.java | 16 + .../api/types/ClientFacingIggChanged.java | 16 + ...lientFacingIggHistoricalPullCompleted.java | 16 + .../api/types/ClientFacingIggTimeseries.java | 16 + .../ClientFacingInhalerUsageChanged.java | 16 + ...ngInhalerUsageHistoricalPullCompleted.java | 16 + .../types/ClientFacingInhalerUsageSample.java | 16 + .../ClientFacingInsulinInjectionChanged.java | 16 + ...sulinInjectionHistoricalPullCompleted.java | 16 + .../ClientFacingInsulinInjectionSample.java | 179 +++++- ...ingInsulinInjectionSampleBolusPurpose.java | 28 + ...ingInsulinInjectionSampleDeliveryForm.java | 24 + ...ingInsulinInjectionSampleDeliveryMode.java | 24 + .../api/types/ClientFacingInsurance.java | 16 + .../com/vital/api/types/ClientFacingLab.java | 16 + .../api/types/ClientFacingLabAccount.java | 451 +++++++++++++++ .../api/types/ClientFacingLabLocation.java | 16 + ...FacingLabReportParsingJobCreatedEvent.java | 199 +++++++ ...FacingLabReportParsingJobUpdatedEvent.java | 199 +++++++ .../vital/api/types/ClientFacingLabTest.java | 16 + .../com/vital/api/types/ClientFacingLabs.java | 4 +- .../ClientFacingLeanBodyMassChanged.java | 16 + ...ngLeanBodyMassHistoricalPullCompleted.java | 16 + .../types/ClientFacingLeanBodyMassSample.java | 16 + .../vital/api/types/ClientFacingLoinc.java | 16 + .../vital/api/types/ClientFacingMarker.java | 16 + .../api/types/ClientFacingMarkerComplete.java | 16 + .../api/types/ClientFacingMealChanged.java | 16 + ...ientFacingMealHistoricalPullCompleted.java | 16 + .../api/types/ClientFacingMealResponse.java | 10 + .../api/types/ClientFacingMenstrualCycle.java | 16 + .../ClientFacingMenstrualCycleChanged.java | 16 + ...MenstrualCycleHistoricalPullCompleted.java | 16 + .../ClientFacingMenstrualCycleSourceType.java | 2 + ...ClientFacingMindfulnessMinutesChanged.java | 16 + ...fulnessMinutesHistoricalPullCompleted.java | 16 + ...entFacingMindfulnessMinutesTimeseries.java | 16 + .../api/types/ClientFacingNoteChanged.java | 16 + ...ientFacingNoteHistoricalPullCompleted.java | 16 + .../api/types/ClientFacingNoteSample.java | 16 + .../ClientFacingOnSiteCollectionOrder.java | 16 + ...entFacingOnSiteCollectionOrderDetails.java | 10 + .../vital/api/types/ClientFacingOrder.java | 80 ++- .../api/types/ClientFacingOrderChanged.java | 16 + .../api/types/ClientFacingOrderEvent.java | 61 +- .../types/ClientFacingOrderInTransaction.java | 16 + .../types/ClientFacingOrderTransaction.java | 16 + .../ClientFacingPatientDetailsCompatible.java | 16 + .../vital/api/types/ClientFacingPayor.java | 16 + .../ClientFacingPayorSearchResponse.java | 16 + ...ntFacingPayorSearchResponseDeprecated.java | 16 + ...ntFacingPeakExpiratoryFlowRateChanged.java | 16 + ...ratoryFlowRateHistoricalPullCompleted.java | 16 + ...entFacingPeakExpiratoryFlowRateSample.java | 16 + .../api/types/ClientFacingPhysician.java | 16 + .../vital/api/types/ClientFacingProfile.java | 16 + .../api/types/ClientFacingProfileChanged.java | 16 + ...tFacingProfileHistoricalPullCompleted.java | 16 + .../vital/api/types/ClientFacingProvider.java | 16 + ...tFacingProviderConnectionCreatedEvent.java | 16 + ...entFacingProviderConnectionErrorEvent.java | 16 + .../types/ClientFacingProviderDetailed.java | 16 + .../types/ClientFacingProviderWithStatus.java | 16 + .../ClientFacingRespiratoryRateChanged.java | 16 + ...espiratoryRateHistoricalPullCompleted.java | 16 + ...ClientFacingRespiratoryRateTimeseries.java | 16 + .../vital/api/types/ClientFacingResult.java | 16 + .../ClientFacingShallowWorkoutStream.java | 16 + .../vital/api/types/ClientFacingShipment.java | 16 + .../vital/api/types/ClientFacingSleep.java | 16 + .../ClientFacingSleepApneaAlertChanged.java | 16 + ...leepApneaAlertHistoricalPullCompleted.java | 16 + .../ClientFacingSleepApneaAlertSample.java | 16 + ...acingSleepBreathingDisturbanceChanged.java | 16 + ...ingDisturbanceHistoricalPullCompleted.java | 16 + ...FacingSleepBreathingDisturbanceSample.java | 16 + .../api/types/ClientFacingSleepChanged.java | 16 + .../api/types/ClientFacingSleepCycle.java | 16 + .../types/ClientFacingSleepCycleChanged.java | 16 + ...cingSleepCycleHistoricalPullCompleted.java | 16 + .../ClientFacingSleepCycleSourceType.java | 2 + ...entFacingSleepHistoricalPullCompleted.java | 16 + .../api/types/ClientFacingSleepStream.java | 10 + .../vital/api/types/ClientFacingSource.java | 16 + .../vital/api/types/ClientFacingSport.java | 16 + .../ClientFacingStandDurationChanged.java | 16 + ...gStandDurationHistoricalPullCompleted.java | 16 + .../ClientFacingStandDurationSample.java | 16 + .../types/ClientFacingStandHourChanged.java | 16 + ...acingStandHourHistoricalPullCompleted.java | 16 + .../types/ClientFacingStandHourSample.java | 16 + .../api/types/ClientFacingStepsChanged.java | 16 + ...entFacingStepsHistoricalPullCompleted.java | 16 + .../types/ClientFacingStepsTimeseries.java | 16 + .../vital/api/types/ClientFacingStream.java | 10 + .../types/ClientFacingStressLevelChanged.java | 16 + ...ingStressLevelHistoricalPullCompleted.java | 16 + .../ClientFacingStressLevelTimeseries.java | 16 + .../com/vital/api/types/ClientFacingTeam.java | 16 + .../ClientFacingTestKitOrderDetails.java | 10 + .../api/types/ClientFacingTestkitOrder.java | 16 + .../com/vital/api/types/ClientFacingUser.java | 16 + .../vital/api/types/ClientFacingUserKey.java | 16 + .../types/ClientFacingUvExposureChanged.java | 16 + ...cingUvExposureHistoricalPullCompleted.java | 16 + .../types/ClientFacingUvExposureSample.java | 16 + .../api/types/ClientFacingVo2MaxChanged.java | 16 + ...ntFacingVo2MaxHistoricalPullCompleted.java | 16 + .../types/ClientFacingVo2MaxTimeseries.java | 16 + ...ClientFacingWaistCircumferenceChanged.java | 16 + ...tCircumferenceHistoricalPullCompleted.java | 16 + .../ClientFacingWaistCircumferenceSample.java | 16 + .../types/ClientFacingWalkInOrderDetails.java | 10 + .../types/ClientFacingWalkInTestOrder.java | 16 + .../api/types/ClientFacingWaterChanged.java | 16 + ...entFacingWaterHistoricalPullCompleted.java | 16 + .../types/ClientFacingWaterTimeseries.java | 16 + .../api/types/ClientFacingWeightChanged.java | 16 + ...ntFacingWeightHistoricalPullCompleted.java | 16 + .../ClientFacingWheelchairPushChanged.java | 16 + ...WheelchairPushHistoricalPullCompleted.java | 16 + .../ClientFacingWheelchairPushSample.java | 16 + .../vital/api/types/ClientFacingWorkout.java | 16 + .../ClientFacingWorkoutDistanceChanged.java | 16 + ...orkoutDistanceHistoricalPullCompleted.java | 16 + .../ClientFacingWorkoutDistanceSample.java | 16 + .../ClientFacingWorkoutDurationChanged.java | 16 + ...orkoutDurationHistoricalPullCompleted.java | 16 + .../ClientFacingWorkoutDurationSample.java | 16 + .../api/types/ClientFacingWorkoutMap.java | 10 + .../ClientFacingWorkoutStreamChanged.java | 16 + ...gWorkoutStreamHistoricalPullCompleted.java | 16 + ...entFacingWorkoutSwimmingStrokeChanged.java | 16 + ...SwimmingStrokeHistoricalPullCompleted.java | 16 + ...ientFacingWorkoutSwimmingStrokeSample.java | 16 + .../types/ClientFacingWorkoutsChanged.java | 16 + ...FacingWorkoutsHistoricalPullCompleted.java | 16 + .../api/types/ClientSleepCycleResponse.java | 10 + .../vital/api/types/ClientSleepResponse.java | 10 + .../vital/api/types/ClientUserIdConflict.java | 16 + .../types/ClientUserIdConflictResponse.java | 16 + .../api/types/ClientWorkoutResponse.java | 10 + .../vital/api/types/ClinicalInformation.java | 10 + .../com/vital/api/types/CompanyDetails.java | 16 + .../vital/api/types/CompendiumSearchLabs.java | 28 + .../types/ConnectedSourceClientFacing.java | 16 + .../com/vital/api/types/ConnectionRecipe.java | 16 + .../java/com/vital/api/types/Consent.java | 16 + .../ContinuousQueryResultTableChanges.java | 16 + .../ContinuousQueryTaskHistoryEntry.java | 16 + .../ContinuousQueryTaskHistoryResponse.java | 10 + .../vital/api/types/ContraceptiveEntry.java | 16 + .../api/types/ConvertCompendiumResponse.java | 344 +++++++++++ .../types/CreateUserPortalUrlResponse.java | 16 + .../com/vital/api/types/DatePartExpr.java | 16 + .../com/vital/api/types/DateTruncExpr.java | 16 + .../java/com/vital/api/types/DaySlots.java | 16 + .../vital/api/types/DemoConnectionStatus.java | 16 + .../api/types/DerivedReadinessColumnExpr.java | 130 +++++ ...edReadinessColumnExprDerivedReadiness.java | 36 ++ .../api/types/DetectedDeviationEntry.java | 16 + .../com/vital/api/types/DeviceV2InDb.java | 16 + .../api/types/DiscreteTimeseriesExpr.java | 16 + src/main/java/com/vital/api/types/Energy.java | 16 + .../types/EventDestinationPreferences.java | 16 + .../vital/api/types/FallbackBirthDate.java | 16 + .../com/vital/api/types/FallbackTimeZone.java | 16 + src/main/java/com/vital/api/types/Fats.java | 10 + .../vital/api/types/GetMarkersResponse.java | 10 + .../types/GetOrderTransactionResponse.java | 28 +- .../vital/api/types/GetOrdersResponse.java | 10 + .../api/types/GetTeamLabAccountsResponse.java | 107 ++++ .../vital/api/types/GroupKeyColumnExpr.java | 16 + .../vital/api/types/GroupedAFibBurden.java | 16 + .../api/types/GroupedAFibBurdenResponse.java | 10 + .../types/GroupedBasalBodyTemperature.java | 16 + .../GroupedBasalBodyTemperatureResponse.java | 10 + .../vital/api/types/GroupedBloodOxygen.java | 16 + .../api/types/GroupedBloodOxygenResponse.java | 10 + .../vital/api/types/GroupedBloodPressure.java | 16 + .../types/GroupedBloodPressureResponse.java | 10 + .../com/vital/api/types/GroupedBodyFat.java | 16 + .../api/types/GroupedBodyFatResponse.java | 10 + .../vital/api/types/GroupedBodyMassIndex.java | 16 + .../types/GroupedBodyMassIndexResponse.java | 10 + .../api/types/GroupedBodyTemperature.java | 16 + .../types/GroupedBodyTemperatureDelta.java | 16 + .../GroupedBodyTemperatureDeltaResponse.java | 10 + .../types/GroupedBodyTemperatureResponse.java | 10 + .../vital/api/types/GroupedBodyWeight.java | 16 + .../api/types/GroupedBodyWeightResponse.java | 10 + .../com/vital/api/types/GroupedCaffeine.java | 16 + .../api/types/GroupedCaffeineResponse.java | 10 + .../api/types/GroupedCaloriesActive.java | 16 + .../types/GroupedCaloriesActiveResponse.java | 10 + .../vital/api/types/GroupedCaloriesBasal.java | 16 + .../types/GroupedCaloriesBasalResponse.java | 10 + .../vital/api/types/GroupedCarbohydrates.java | 16 + .../types/GroupedCarbohydratesResponse.java | 10 + .../vital/api/types/GroupedCholesterol.java | 16 + .../api/types/GroupedCholesterolResponse.java | 10 + .../api/types/GroupedDaylightExposure.java | 16 + .../GroupedDaylightExposureResponse.java | 10 + .../com/vital/api/types/GroupedDistance.java | 16 + .../api/types/GroupedDistanceResponse.java | 10 + .../GroupedElectrocardiogramVoltage.java | 16 + ...oupedElectrocardiogramVoltageResponse.java | 10 + .../java/com/vital/api/types/GroupedFall.java | 16 + .../vital/api/types/GroupedFallResponse.java | 10 + .../vital/api/types/GroupedFloorsClimbed.java | 16 + .../types/GroupedFloorsClimbedResponse.java | 10 + .../types/GroupedForcedExpiratoryVolume1.java | 16 + ...roupedForcedExpiratoryVolume1Response.java | 10 + .../api/types/GroupedForcedVitalCapacity.java | 16 + .../GroupedForcedVitalCapacityResponse.java | 10 + .../com/vital/api/types/GroupedGlucose.java | 16 + .../api/types/GroupedGlucoseResponse.java | 10 + .../vital/api/types/GroupedHandwashing.java | 16 + .../api/types/GroupedHandwashingResponse.java | 10 + .../com/vital/api/types/GroupedHeartRate.java | 16 + .../api/types/GroupedHeartRateAlert.java | 16 + .../types/GroupedHeartRateAlertResponse.java | 10 + .../GroupedHeartRateRecoveryOneMinute.java | 16 + ...pedHeartRateRecoveryOneMinuteResponse.java | 10 + .../api/types/GroupedHeartRateResponse.java | 10 + .../java/com/vital/api/types/GroupedHrv.java | 16 + .../vital/api/types/GroupedHrvResponse.java | 10 + .../com/vital/api/types/GroupedHypnogram.java | 16 + .../api/types/GroupedHypnogramResponse.java | 10 + .../java/com/vital/api/types/GroupedIge.java | 16 + .../vital/api/types/GroupedIgeResponse.java | 10 + .../java/com/vital/api/types/GroupedIgg.java | 16 + .../vital/api/types/GroupedIggResponse.java | 10 + .../vital/api/types/GroupedInhalerUsage.java | 16 + .../types/GroupedInhalerUsageResponse.java | 10 + .../api/types/GroupedInsulinInjection.java | 16 + .../GroupedInsulinInjectionResponse.java | 10 + .../vital/api/types/GroupedLeanBodyMass.java | 16 + .../types/GroupedLeanBodyMassResponse.java | 10 + .../api/types/GroupedMindfulnessMinutes.java | 16 + .../GroupedMindfulnessMinutesResponse.java | 10 + .../java/com/vital/api/types/GroupedNote.java | 16 + .../vital/api/types/GroupedNoteResponse.java | 10 + .../types/GroupedPeakExpiratoryFlowRate.java | 16 + ...GroupedPeakExpiratoryFlowRateResponse.java | 10 + .../api/types/GroupedRespiratoryRate.java | 16 + .../types/GroupedRespiratoryRateResponse.java | 10 + .../api/types/GroupedSleepApneaAlert.java | 16 + .../types/GroupedSleepApneaAlertResponse.java | 10 + .../GroupedSleepBreathingDisturbance.java | 16 + ...upedSleepBreathingDisturbanceResponse.java | 10 + .../vital/api/types/GroupedStandDuration.java | 16 + .../types/GroupedStandDurationResponse.java | 10 + .../com/vital/api/types/GroupedStandHour.java | 16 + .../api/types/GroupedStandHourResponse.java | 10 + .../com/vital/api/types/GroupedSteps.java | 16 + .../vital/api/types/GroupedStepsResponse.java | 10 + .../vital/api/types/GroupedStressLevel.java | 16 + .../api/types/GroupedStressLevelResponse.java | 10 + .../vital/api/types/GroupedUvExposure.java | 16 + .../api/types/GroupedUvExposureResponse.java | 10 + .../com/vital/api/types/GroupedVo2Max.java | 16 + .../api/types/GroupedVo2MaxResponse.java | 10 + .../api/types/GroupedWaistCircumference.java | 16 + .../GroupedWaistCircumferenceResponse.java | 10 + .../com/vital/api/types/GroupedWater.java | 16 + .../vital/api/types/GroupedWaterResponse.java | 10 + .../api/types/GroupedWheelchairPush.java | 16 + .../types/GroupedWheelchairPushResponse.java | 10 + .../api/types/GroupedWorkoutDistance.java | 16 + .../types/GroupedWorkoutDistanceResponse.java | 10 + .../api/types/GroupedWorkoutDuration.java | 16 + .../types/GroupedWorkoutDurationResponse.java | 10 + .../types/GroupedWorkoutSwimmingStroke.java | 16 + .../GroupedWorkoutSwimmingStrokeResponse.java | 10 + .../com/vital/api/types/GuarantorDetails.java | 16 + .../types/HealthInsuranceCreateRequest.java | 10 + .../api/types/HistoricalPullCompleted.java | 16 + .../api/types/HistoricalPullTimeline.java | 16 + .../api/types/HomePregnancyTestEntry.java | 16 + .../api/types/HomeProgesteroneTestEntry.java | 16 + .../vital/api/types/HttpValidationError.java | 10 + .../vital/api/types/IcdExcludesViolation.java | 16 + .../vital/api/types/IcdExcludesWarning.java | 16 + .../com/vital/api/types/IndexColumnExpr.java | 16 + .../vital/api/types/IndexColumnExprIndex.java | 2 + .../types/IntermenstrualBleedingEntry.java | 16 + .../api/types/IntervalTimeseriesExpr.java | 16 + src/main/java/com/vital/api/types/Jpeg.java | 16 + .../api/types/LabAccountDelegatedFlow.java | 28 + .../com/vital/api/types/LabAccountStatus.java | 26 + .../vital/api/types/LabLocationMetadata.java | 16 + .../com/vital/api/types/LabReportResult.java | 16 + .../vital/api/types/LabResultsMetadata.java | 16 + .../com/vital/api/types/LabResultsRaw.java | 54 +- .../api/types/LabTestResourcesResponse.java | 10 + src/main/java/com/vital/api/types/Labs.java | 6 +- .../java/com/vital/api/types/LastAttempt.java | 16 + .../java/com/vital/api/types/LibreConfig.java | 10 + .../api/types/LinkTokenExchangeResponse.java | 16 + src/main/java/com/vital/api/types/LngLat.java | 16 + .../java/com/vital/api/types/LoincMatch.java | 16 + src/main/java/com/vital/api/types/Macros.java | 10 + .../com/vital/api/types/ManualProviders.java | 4 +- .../com/vital/api/types/MealColumnExpr.java | 16 + .../types/MealInDbBaseClientFacingSource.java | 16 + .../api/types/MenstrualCycleResponse.java | 10 + .../vital/api/types/MenstrualFlowEntry.java | 16 + .../com/vital/api/types/MetricsResult.java | 16 + src/main/java/com/vital/api/types/Micros.java | 10 + .../api/types/MissingBiomarkerResult.java | 16 + .../vital/api/types/NotFoundErrorBody.java | 10 + .../vital/api/types/NoteTimeseriesExpr.java | 16 + .../vital/api/types/OrderLowLevelStatus.java | 6 +- .../com/vital/api/types/OrderSetRequest.java | 10 + .../java/com/vital/api/types/OrderStatus.java | 12 +- .../com/vital/api/types/OrderSummary.java | 16 + .../vital/api/types/OvulationTestEntry.java | 16 + .../api/types/PaginatedUsersResponse.java | 16 + .../vital/api/types/ParentBiomarkerData.java | 16 + .../vital/api/types/ParsedLabReportData.java | 16 + .../java/com/vital/api/types/ParsingJob.java | 57 +- .../vital/api/types/PasswordProviders.java | 4 +- .../com/vital/api/types/PatientAddress.java | 59 +- .../api/types/PatientAddressCompatible.java | 58 +- .../types/PatientAddressWithValidation.java | 58 +- .../types/PatientDetailsWithValidation.java | 16 + .../api/types/PayorCodeExternalProvider.java | 6 +- .../com/vital/api/types/PerLabCandidate.java | 546 ++++++++++++++++++ .../vital/api/types/PerformingLaboratory.java | 16 + src/main/java/com/vital/api/types/Period.java | 16 + .../vital/api/types/PhlebotomyAreaInfo.java | 16 + .../api/types/PhlebotomyProviderInfo.java | 16 + .../api/types/PhysicianCreateRequest.java | 16 + .../api/types/PhysicianCreateRequestBase.java | 16 + .../java/com/vital/api/types/Placeholder.java | 16 + src/main/java/com/vital/api/types/Png.java | 16 + .../vital/api/types/PostOrderResponse.java | 16 + .../vital/api/types/ProfileColumnExpr.java | 16 + .../java/com/vital/api/types/ProfileInDb.java | 16 + .../api/types/ProviderConnectionCreated.java | 16 + .../api/types/ProviderConnectionError.java | 16 + .../types/ProviderIdConversionResponse.java | 152 +++++ .../vital/api/types/ProviderLinkResponse.java | 16 + .../vital/api/types/ProviderMfaRequest.java | 16 + .../java/com/vital/api/types/Providers.java | 4 + .../java/com/vital/api/types/PscAreaInfo.java | 16 + .../vital/api/types/PscAreaInfoDetails.java | 16 + .../java/com/vital/api/types/PscInfo.java | 16 + src/main/java/com/vital/api/types/Query.java | 10 + .../java/com/vital/api/types/QueryConfig.java | 10 + .../com/vital/api/types/QueryGroupByItem.java | 78 +-- .../com/vital/api/types/QuerySelectItem.java | 82 +-- .../java/com/vital/api/types/Question.java | 16 + .../java/com/vital/api/types/RawActivity.java | 10 + .../java/com/vital/api/types/RawBody.java | 10 + .../java/com/vital/api/types/RawDevices.java | 10 + .../java/com/vital/api/types/RawProfile.java | 16 + .../java/com/vital/api/types/RawSleep.java | 10 + .../java/com/vital/api/types/RawWorkout.java | 10 + .../com/vital/api/types/RelatedCandidate.java | 201 +++++++ .../vital/api/types/RelativeTimeframe.java | 16 + .../api/types/ResendWebhookResponse.java | 10 + .../vital/api/types/ResourceAvailability.java | 16 + .../com/vital/api/types/ResultMetadata.java | 42 ++ .../vital/api/types/ResultMetadataGender.java | 26 + .../java/com/vital/api/types/SampleData.java | 10 + .../api/types/ScopeRequirementsGrants.java | 16 + .../vital/api/types/ScopeRequirementsStr.java | 10 + .../api/types/SearchCompendiumResponse.java | 244 ++++++++ .../java/com/vital/api/types/SearchMode.java | 24 + .../vital/api/types/SexualActivityEntry.java | 16 + .../com/vital/api/types/ShippingAddress.java | 16 + .../types/ShippingAddressWithValidation.java | 16 + .../com/vital/api/types/SimulationFlags.java | 10 + .../types/SingleHistoricalPullStatistics.java | 16 + .../SingleProviderHistoricalPullResponse.java | 10 + .../api/types/SingleResourceStatistics.java | 10 + .../SingleUserHistoricalPullResponse.java | 16 + .../api/types/SingleUserResourceResponse.java | 16 + .../com/vital/api/types/SleepColumnExpr.java | 16 + .../api/types/SleepScoreValueMacroExpr.java | 10 + .../java/com/vital/api/types/SleepV2InDb.java | 16 + src/main/java/com/vital/api/types/Source.java | 16 + .../com/vital/api/types/SourceColumnExpr.java | 16 + .../java/com/vital/api/types/SourceLink.java | 16 + .../java/com/vital/api/types/TeamConfig.java | 16 + .../api/types/TemperatureTimeseriesExpr.java | 16 + .../java/com/vital/api/types/TimeSlot.java | 16 + .../api/types/TimeseriesMetricPoint.java | 16 + .../api/types/UnrecognizedValueMacroExpr.java | 16 + .../java/com/vital/api/types/UsAddress.java | 53 +- .../java/com/vital/api/types/UsState.java | 120 ++++ .../java/com/vital/api/types/UserAddress.java | 280 +++++++++ .../types/UserHistoricalPullsResponse.java | 10 + .../java/com/vital/api/types/UserInfo.java | 28 +- .../api/types/UserRefreshErrorResponse.java | 16 + .../api/types/UserRefreshSuccessResponse.java | 16 + .../api/types/UserResourcesResponse.java | 10 + .../api/types/UserSignInTokenResponse.java | 16 + .../vital/api/types/UserSuccessResponse.java | 16 + .../types/UtcTimestampWithTimezoneOffset.java | 16 + .../api/types/ValidateIcdCodesResponse.java | 16 + .../com/vital/api/types/ValidationError.java | 16 + ...asLabTestHealthInsurancePersonDetails.java | 16 + ...bSchemasLabTestInsurancePersonDetails.java | 16 + .../api/types/VitalTokenCreatedResponse.java | 16 + .../vital/api/types/WorkoutColumnExpr.java | 16 + .../types/WorkoutDurationTimeseriesExpr.java | 16 + .../com/vital/api/types/WorkoutV2InDb.java | 16 + src/test/java/com/vital/api/StreamTest.java | 23 + 800 files changed, 18593 insertions(+), 1555 deletions(-) create mode 100644 changelog.md create mode 100644 src/main/java/com/vital/api/core/ConsoleLogger.java create mode 100644 src/main/java/com/vital/api/core/ILogger.java create mode 100644 src/main/java/com/vital/api/core/LogConfig.java create mode 100644 src/main/java/com/vital/api/core/LogLevel.java create mode 100644 src/main/java/com/vital/api/core/Logger.java create mode 100644 src/main/java/com/vital/api/core/LoggingInterceptor.java create mode 100644 src/main/java/com/vital/api/core/SseEvent.java create mode 100644 src/main/java/com/vital/api/core/SseEventParser.java create mode 100644 src/main/java/com/vital/api/resources/compendium/AsyncCompendiumClient.java create mode 100644 src/main/java/com/vital/api/resources/compendium/AsyncRawCompendiumClient.java create mode 100644 src/main/java/com/vital/api/resources/compendium/CompendiumClient.java create mode 100644 src/main/java/com/vital/api/resources/compendium/RawCompendiumClient.java create mode 100644 src/main/java/com/vital/api/resources/compendium/requests/ConvertCompendiumBody.java create mode 100644 src/main/java/com/vital/api/resources/compendium/requests/SearchCompendiumBody.java create mode 100644 src/main/java/com/vital/api/resources/compendium/types/CompendiumConvertRequestTeamId.java create mode 100644 src/main/java/com/vital/api/resources/compendium/types/CompendiumSearchRequestTeamId.java create mode 100644 src/main/java/com/vital/api/resources/labaccount/AsyncLabAccountClient.java create mode 100644 src/main/java/com/vital/api/resources/labaccount/AsyncRawLabAccountClient.java create mode 100644 src/main/java/com/vital/api/resources/labaccount/LabAccountClient.java create mode 100644 src/main/java/com/vital/api/resources/labaccount/RawLabAccountClient.java create mode 100644 src/main/java/com/vital/api/resources/labaccount/requests/LabAccountGetTeamLabAccountsRequest.java create mode 100644 src/main/java/com/vital/api/types/AppointmentPscLabs.java create mode 100644 src/main/java/com/vital/api/types/CanonicalCandidate.java create mode 100644 src/main/java/com/vital/api/types/ClientFacingInsulinInjectionSampleBolusPurpose.java create mode 100644 src/main/java/com/vital/api/types/ClientFacingInsulinInjectionSampleDeliveryForm.java create mode 100644 src/main/java/com/vital/api/types/ClientFacingInsulinInjectionSampleDeliveryMode.java create mode 100644 src/main/java/com/vital/api/types/ClientFacingLabAccount.java create mode 100644 src/main/java/com/vital/api/types/ClientFacingLabReportParsingJobCreatedEvent.java create mode 100644 src/main/java/com/vital/api/types/ClientFacingLabReportParsingJobUpdatedEvent.java create mode 100644 src/main/java/com/vital/api/types/CompendiumSearchLabs.java create mode 100644 src/main/java/com/vital/api/types/ConvertCompendiumResponse.java create mode 100644 src/main/java/com/vital/api/types/DerivedReadinessColumnExpr.java create mode 100644 src/main/java/com/vital/api/types/DerivedReadinessColumnExprDerivedReadiness.java create mode 100644 src/main/java/com/vital/api/types/GetTeamLabAccountsResponse.java create mode 100644 src/main/java/com/vital/api/types/LabAccountDelegatedFlow.java create mode 100644 src/main/java/com/vital/api/types/LabAccountStatus.java create mode 100644 src/main/java/com/vital/api/types/PerLabCandidate.java create mode 100644 src/main/java/com/vital/api/types/ProviderIdConversionResponse.java create mode 100644 src/main/java/com/vital/api/types/RelatedCandidate.java create mode 100644 src/main/java/com/vital/api/types/ResultMetadataGender.java create mode 100644 src/main/java/com/vital/api/types/SearchCompendiumResponse.java create mode 100644 src/main/java/com/vital/api/types/SearchMode.java create mode 100644 src/main/java/com/vital/api/types/UsState.java create mode 100644 src/main/java/com/vital/api/types/UserAddress.java diff --git a/.fern/metadata.json b/.fern/metadata.json index 189279f9..2334f9b9 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -1,12 +1,13 @@ { - "cliVersion": "3.48.2", + "cliVersion": "4.43.1", "generatorName": "fernapi/fern-java-sdk", - "generatorVersion": "3.33.2", + "generatorVersion": "3.39.1", "generatorConfig": { "publish-to": "central", "base-api-exception-class-name": "ApiError", "client-class-name": "Vital", "enable-forward-compatible-enums": false }, - "sdkVersion": "1.2.605" + "originGitCommit": "82c11a754c6c2c64c2541b735821a18bf50f0e98", + "sdkVersion": "2.0.0" } \ No newline at end of file diff --git a/.fernignore b/.fernignore index 43ca0d22..07281cd7 100644 --- a/.fernignore +++ b/.fernignore @@ -1,3 +1,4 @@ # Specify files that shouldn't be modified by Fern README.md +changelog.md diff --git a/build.gradle b/build.gradle index a36120f5..c7a2ef79 100644 --- a/build.gradle +++ b/build.gradle @@ -47,7 +47,7 @@ java { group = 'io.tryvital' -version = '1.2.605' +version = '2.0.0' jar { dependsOn(":generatePomFileForMavenPublication") @@ -78,7 +78,7 @@ publishing { maven(MavenPublication) { groupId = 'io.tryvital' artifactId = 'vital-java' - version = '1.2.605' + version = '2.0.0' from components.java pom { name = 'vital' diff --git a/changelog.md b/changelog.md new file mode 100644 index 00000000..333c27e9 --- /dev/null +++ b/changelog.md @@ -0,0 +1,38 @@ +## 2.0.0 - 2026-03-24 +* The `parserCreateJob()` methods that accepted `InputStream` parameters have been removed from `AsyncLabReportClient` and `LabReportClient`. Use the `File`-based overloads instead: replace `parserCreateJob(inputStream, filename)` with `parserCreateJob(file, request)` where `file` is a `File` object and `request` contains your parsing configuration. +* Breaking changes: The `parserCreateJob(InputStream, String)` methods and related overloads have been removed from `RawLabReportClient`. Use the `parserCreateJob(File, BodyCreateLabReportParserJob)` method instead. New features: Added lab-specific configuration fields including `labAccountId` and `labSlug` in lab test requests, `labSlug` in marker requests, and `appointmentNotes` in appointment requests. +* The SDK now supports tracking mobile SDK versions through new optional fields `vitalIosSdkVersion` and `vitalAndroidSdkVersion` in `ManualConnectionData`. Additional optional fields have been added including `grantedPermissions` for permission tracking, `appointmentNotes` for appointment rescheduling, and `accessNotes` for address information. The `UserInfoCreateRequest` class now uses `UserAddress` type instead of `Address`. Support for `DerivedReadinessColumnExpr` has been added to aggregate expressions. +* New optional fields added to insulin injection samples: delivery_mode (how insulin was delivered), delivery_form (standard or extended bolus), and bolus_purpose (what the bolus was intended for). Order management enhanced with clinical_notes field for storing clinical information and status_detail field for event tracking. Lab results now include order_transaction information for better traceability. +* The `getJobId()` method has been removed from the `ParsingJob` class. This field is no longer provided by the API and existing code referencing this method will need to be updated. The `accessNotes` field is now available on patient address models to support delivery instructions. +* The UserInfo class now uses UserAddress instead of Address for the address field, providing better type safety. Additionally, UsAddress now supports an optional accessNotes field for delivery instructions. Existing code using UserInfo.getAddress() may need type updates to handle UserAddress instead of Address. +* The `getMarkers()` method now supports filtering by lab slug via the `lab_slug` query parameter in `LabTestsGetMarkersRequest`. +* The SDK now supports sending iOS and Android SDK version headers when connecting manual providers, enabling better platform-specific tracking and debugging. +* The SDK now supports comprehensive HTTP request/response logging through the new `LogConfig` API. Configure logging on the client builder with `logging(LogConfig.builder().level(LogLevel.DEBUG).silent(false).build())`. New client resources `compendium()` and `labAccount()` are now available on both sync and async clients. Additional health data providers are supported including Samsung Health, Tandem Source, Sonora Quest, and CRL labs. +* New SSE event parsing capabilities and compendium API client. The SDK now includes utilities for parsing Server-Sent Events with discriminated unions and a complete client for compendium search and conversion operations. +* The SDK now supports compendium search and conversion operations through new request body classes. Added lab account management capabilities with the new `LabAccountClient`. Enhanced builder patterns across multiple request classes now include `additionalProperty` and `additionalProperties` methods for flexible request customization. +* New lab account management capabilities available via `RawLabAccountClient.getTeamLabAccounts()` for retrieving team lab account configurations. The `CreateOrderRequestCompatible` now supports an optional `clinicalNotes` field for enhanced order documentation. +* Request builders now include `additionalProperty()` and `additionalProperties()` methods for setting custom fields beyond the defined schema. +* New builder methods `additionalProperty()` and `additionalProperties()` are now available on request builders for dynamic property handling. These methods enable setting custom key-value pairs on requests using a fluent builder pattern. +* New `additionalProperty()` and `additionalProperties()` methods available on all vitals request builders, allowing dynamic configuration of custom properties alongside standard request parameters. +* Builder methods for additional properties are now available on all vitals request classes. Use `.additionalProperty(key, value)` or `.additionalProperties(map)` to pass custom metadata with vitals requests. +* The SDK now supports additional properties on request builders through new `additionalProperty()` and `additionalProperties()` methods. A new `appointmentNotes` field is available on `AppointmentBookingRequest`, and a new `AppointmentPscLabs` enum has been added with Quest lab options. +* New builder methods `additionalProperty()` and `additionalProperties()` are now available on all SDK data classes, enabling you to set custom properties on API objects. A new `CanonicalCandidate` class has been added to support lab test normalization features. +* New optional `appointmentNotes` field available on `ClientFacingAppointment` for storing provider and patient notes related to appointments. +* New `additionalProperty()` and `additionalProperties()` builder methods available on client-facing type builders for enhanced extensibility support. +* The SDK now supports insulin pump as a device source type for health data collection. New builder methods are available for setting additional properties on data models. +* Builder interfaces now include `additionalProperty()` and `additionalProperties()` methods for setting custom properties on client-facing data types during object construction. +* New event types for lab report parsing job lifecycle (created/updated) and insulin injection sample classification enums (bolus purpose, delivery form/mode) are now available. Enhanced builder pattern support with additional properties methods across lab and insurance related types. +* New builder methods `additionalProperty()` and `additionalProperties()` are now available on all model builders, allowing developers to set custom properties on SDK objects. A new `INSULIN_PUMP` enum value has been added to `ClientFacingMenstrualCycleSourceType`. +* The SDK now provides additionalProperty() and additionalProperties() methods on all model builders, allowing you to set custom fields for forward compatibility. A new INSULIN_PUMP source type is available for sleep cycle data. +* New builder methods `additionalProperty()` and `additionalProperties()` are now available on all client-facing model builders, providing a consistent way to set custom additional properties programmatically. +* New builder methods `additionalProperty()` and `additionalProperties()` are now available across all client-facing type builders, providing enhanced support for dynamic JSON properties. +* New builder methods `additionalProperty()` and `additionalProperties()` are available on all model classes for setting custom properties. New compendium functionality includes `CompendiumSearchLabs` enum and `ConvertCompendiumResponse` class for lab test conversion, plus `DerivedReadinessColumnExpr` for readiness data queries. +* The SDK now supports dynamic property handling in builder classes. New `additionalProperty()` and `additionalProperties()` methods are available on builders for enhanced flexibility when working with model objects. A new `GetTeamLabAccountsResponse` class has been added for team lab account operations. +* The SDK now supports additional properties on grouped data types. Builders for GroupedCaloriesActive, GroupedGlucose, GroupedHeartRate, and other grouped response types now include additionalProperty() and additionalProperties() methods for handling extra fields in API responses. +* New `additionalProperty()` and `additionalProperties()` methods available on all grouped data type builders, enabling custom key-value pairs to be set during object construction. +* New `additionalProperty()` and `additionalProperties()` builder methods are now available on model classes for setting custom key-value pairs during object construction. The SDK also adds support for new lab account management enums and derived readiness indexing. +* Builder classes now support setting additional properties via new `additionalProperty()` and `additionalProperties()` methods, enabling more flexible object construction for dynamic fields. +* New `PerLabCandidate` class available for representing laboratory test candidates with comprehensive metadata including marker information, LOINC codes, and confidence scoring. Enhanced builder patterns across multiple model classes with additional property setting methods. +* New providers Tandem Source and Samsung Health are now supported. New data types ProviderIdConversionResponse and RelatedCandidate are available for provider ID conversion operations. Lab result metadata now includes gender information through the new gender field in ResultMetadata. +* New SearchCompendiumResponse, SearchMode, and UsState types are now available for search functionality. Enhanced builder patterns on existing types now support additional properties. + diff --git a/reference.md b/reference.md index ab88a1cb..4c472928 100644 --- a/reference.md +++ b/reference.md @@ -706,7 +706,6 @@ Check link token state - can be hit continuously used as heartbeat client.link().tokenState( LinkTokenStateRequest .builder() - .vitalLinkToken("x-vital-link-token") .build() ); ``` @@ -768,7 +767,6 @@ client.link().emailAuth( .email("email") .provider(Providers.OURA) .authType(AuthType.PASSWORD) - .vitalLinkToken("x-vital-link-token") .build() ); ``` @@ -863,7 +861,6 @@ client.link().passwordAuth( .password("password") .provider(Providers.OURA) .authType(AuthType.PASSWORD) - .vitalLinkToken("x-vital-link-token") .build() ); ``` @@ -955,7 +952,6 @@ client.link().generateOauthLink( OAuthProviders.OURA, LinkGenerateOauthLinkRequest .builder() - .vitalLinkToken("x-vital-link-token") .build() ); ``` @@ -1025,7 +1021,6 @@ client.link().connectPasswordProvider( .builder() .username("username") .password("password") - .vitalLinkToken("x-vital-link-token") .build() ); ``` @@ -1118,7 +1113,6 @@ client.link().completePasswordProviderMfa( CompletePasswordProviderMfaBody .builder() .mfaCode("mfa_code") - .vitalLinkToken("x-vital-link-token") .build() ); ``` @@ -1195,7 +1189,6 @@ client.link().connectEmailAuthProvider( EmailProviderAuthLink .builder() .email("email") - .vitalLinkToken("x-vital-link-token") .build() ); ``` @@ -1286,7 +1279,6 @@ GET List of all available providers given the generated link token. client.link().getAllProviders( LinkGetAllProvidersRequest .builder() - .vitalLinkToken("x-vital-link-token") .build() ); ``` @@ -1357,6 +1349,22 @@ client.link().connectManualProvider(
client.compendium.search(request) -> SearchCompendiumResponseclient.compendium.convert(request) -> ConvertCompendiumResponseclient.labAccount.getTeamLabAccounts() -> GetTeamLabAccountsResponseUses the "fern" logger name with a simple format of "LEVEL - message". + */ +public final class ConsoleLogger implements ILogger { + + private static final java.util.logging.Logger logger = java.util.logging.Logger.getLogger("fern"); + + static { + if (logger.getHandlers().length == 0) { + java.util.logging.ConsoleHandler handler = new java.util.logging.ConsoleHandler(); + handler.setFormatter(new java.util.logging.SimpleFormatter() { + @Override + public String format(java.util.logging.LogRecord record) { + return record.getLevel() + " - " + record.getMessage() + System.lineSeparator(); + } + }); + logger.addHandler(handler); + logger.setUseParentHandlers(false); + logger.setLevel(Level.ALL); + } + } + + @Override + public void debug(String message) { + logger.log(Level.FINE, message); + } + + @Override + public void info(String message) { + logger.log(Level.INFO, message); + } + + @Override + public void warn(String message) { + logger.log(Level.WARNING, message); + } + + @Override + public void error(String message) { + logger.log(Level.SEVERE, message); + } +} diff --git a/src/main/java/com/vital/api/core/ILogger.java b/src/main/java/com/vital/api/core/ILogger.java new file mode 100644 index 00000000..b8972346 --- /dev/null +++ b/src/main/java/com/vital/api/core/ILogger.java @@ -0,0 +1,38 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.vital.api.core; + +/** + * Interface for custom logger implementations. + * + *
Implement this interface to provide a custom logging backend for the SDK. + * The SDK will call the appropriate method based on the log level. + * + *
Example: + *
{@code
+ * public class MyCustomLogger implements ILogger {
+ * public void debug(String message) {
+ * System.out.println("[DBG] " + message);
+ * }
+ * public void info(String message) {
+ * System.out.println("[INF] " + message);
+ * }
+ * public void warn(String message) {
+ * System.out.println("[WRN] " + message);
+ * }
+ * public void error(String message) {
+ * System.out.println("[ERR] " + message);
+ * }
+ * }
+ * }
+ */
+public interface ILogger {
+ void debug(String message);
+
+ void info(String message);
+
+ void warn(String message);
+
+ void error(String message);
+}
diff --git a/src/main/java/com/vital/api/core/LogConfig.java b/src/main/java/com/vital/api/core/LogConfig.java
new file mode 100644
index 00000000..33c5b4aa
--- /dev/null
+++ b/src/main/java/com/vital/api/core/LogConfig.java
@@ -0,0 +1,98 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.vital.api.core;
+
+/**
+ * Configuration for SDK logging.
+ *
+ * Use the builder to configure logging behavior: + *
{@code
+ * LogConfig config = LogConfig.builder()
+ * .level(LogLevel.DEBUG)
+ * .silent(false)
+ * .build();
+ * }
+ *
+ * Or with a custom logger: + *
{@code
+ * LogConfig config = LogConfig.builder()
+ * .level(LogLevel.DEBUG)
+ * .logger(new MyCustomLogger())
+ * .silent(false)
+ * .build();
+ * }
+ *
+ * Defaults: + *
Silent by default — no log output unless explicitly configured. + * Create via {@link LogConfig} or directly: + *
{@code
+ * Logger logger = new Logger(LogLevel.DEBUG, new ConsoleLogger(), false);
+ * logger.debug("request sent");
+ * }
+ */
+public final class Logger {
+
+ private static final Logger DEFAULT = new Logger(LogLevel.INFO, new ConsoleLogger(), true);
+
+ private final LogLevel level;
+ private final ILogger logger;
+ private final boolean silent;
+
+ public Logger(LogLevel level, ILogger logger, boolean silent) {
+ this.level = level;
+ this.logger = logger;
+ this.silent = silent;
+ }
+
+ /**
+ * Returns a default silent logger (no output).
+ */
+ public static Logger getDefault() {
+ return DEFAULT;
+ }
+
+ /**
+ * Creates a Logger from a {@link LogConfig}. If config is {@code null}, returns the default silent logger.
+ */
+ public static Logger from(LogConfig config) {
+ if (config == null) {
+ return DEFAULT;
+ }
+ return new Logger(config.level(), config.logger(), config.silent());
+ }
+
+ /**
+ * Creates a Logger from an {@code OptionalLogs request method, URL, and headers (with sensitive values redacted) at debug level.
+ * Logs response status at debug level, and 4xx/5xx responses at error level.
+ * Does nothing if the logger is silent.
+ */
+public final class LoggingInterceptor implements Interceptor {
+
+ private static final Set
+ * Handles two discrimination patterns:
+ *
+ * Constructs the full SSE envelope object with event, data, id, and retry fields,
+ * then deserializes it to the target union type.
+ *
+ * @param eventType The SSE event type (from event: field)
+ * @param data The SSE data content (from data: field)
+ * @param id The SSE event ID (from id: field), may be null
+ * @param retry The SSE retry value (from retry: field), may be null
+ * @param unionClass The target union class
+ * @param discriminatorProperty The property name used for discrimination (e.g., "event")
+ * @param
+ * Simply parses the data field as JSON and deserializes it to the target type.
+ * Jackson's polymorphic deserialization handles the discrimination automatically.
+ *
+ * @param data The SSE data content (from data: field)
+ * @param valueType The target type
+ * @param
+ *
+ */
+public final class SseEventParser {
+
+ private static final Set