From e24d11639d5d7961e1c3f88f7fbbd51ab57c4670 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Fri, 20 Mar 2026 14:40:14 +0000 Subject: [PATCH] feat: add SDK logging support and SSE event discrimination MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This release introduces configurable SDK-wide logging capabilities and extends streaming support with event-level discrimination for Server-Sent Events (SSE). The logging system is silent by default and requires explicit configuration. Key changes: - Add optional logging configuration to ClientOptions with LogConfig support - Add LoggingInterceptor integration for HTTP request/response logging - Extend Stream class with SSE_EVENT_DISCRIMINATED type for discriminated unions - Add fromSseWithEventDiscrimination() methods for event-based SSE parsing - Remove InputStream-based file upload methods from LabReport clients - Update documentation comments for file upload methods 🌿 Generated with Fern --- .fern/metadata.json | 7 +- .fernignore | 1 + build.gradle | 4 +- changelog.md | 37 ++ 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 + .../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 + ...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 | 16 + .../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 + ...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 + ...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 + 793 files changed, 18352 insertions(+), 1548 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/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..30052a3c 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -1,12 +1,13 @@ { - "cliVersion": "3.48.2", + "cliVersion": "4.37.11", "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": "b975998c48342437b7175a8d5042d6807d389e3c", + "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..9b0052d4 --- /dev/null +++ b/changelog.md @@ -0,0 +1,37 @@ +## 2.0.0 - 2026-03-20 +* The SDK now supports configurable logging through a new `LogConfig` option in `ClientOptions`. Logging is silent by default and must be explicitly enabled. Additionally, the `Stream` class now supports event-level discrimination for Server-Sent Events through new `fromSseWithEventDiscrimination()` methods, enabling better handling of discriminated union payloads in streaming responses. +* Breaking changes to the lab report parsing API - several InputStream-based `parserCreateJob` methods have been removed from `RawLabReportClient`. Migrate to the File-based overloads instead. New lab configuration options are now available across various lab test request classes including lab account ID, lab slug specification, and appointment notes support. +* The SDK now supports additional optional fields across multiple API classes: ManualConnectionData includes SDK version tracking and granted permissions, Address supports access notes, AppointmentRescheduleRequest and ClientFacingOrder include notes fields, and AggregateExprArg now supports DerivedReadinessColumnExpr for enhanced aggregation capabilities. +* Breaking change: The `jobId` field has been removed from `ParsingJob`. Code that accesses `getJobId()` will need to be updated. Several new optional fields have been added: `statusDetail` in order events, `orderTransaction` in lab results, and `accessNotes` in patient addresses. The order transaction status field is now properly typed as an enum instead of a string. +* Breaking change: The visitor pattern for `QueryGroupByItem` and `QuerySelectItem` has been updated with new type orderings. Existing visitor implementations must be updated to handle the new `DerivedReadinessColumnExpr` type and shifted positions of existing types. The `UserInfo.address` field now uses the more specific `UserAddress` type. A new optional `accessNotes` field has been added to `UsAddress`. +* The SDK now supports tracking mobile SDK versions through new HTTP headers (x-vital-ios-sdk-version and x-vital-android-sdk-version) when connecting manual providers. +* The SDK now supports optional logging configuration through the new LogConfig API. New lab providers and enhanced enum values have been added, including SONORA_QUEST integration and additional order status values. Two new client modules are available: CompendiumClient and LabAccountClient for expanded functionality. +* New CompendiumClient available for searching and converting exercise data using the Vital exercise compendium API. The SDK also includes a new SSE event parser utility for handling Server-Sent Events with discriminated unions. +* New compendium search and convert functionality available for lab test operations. The SDK now supports searching for lab tests and converting between different lab formats through new request classes. Additionally, lab account management is now available through the LabAccountClient with methods to retrieve team lab accounts. +* The SDK now includes lab account management capabilities through a new `RawLabAccountClient` with methods to query team lab accounts. Lab test orders also support optional clinical notes via the new `clinicalNotes` parameter in `CreateOrderRequestCompatible`. +* The SDK now supports additional properties in request builders. Use the new `additionalProperty()` and `additionalProperties()` methods to include custom key-value pairs in your requests for future extensibility. +* Request builders now include `additionalProperty()` and `additionalProperties()` methods for setting custom properties in a fluent, type-safe manner. +* New additionalProperty and additionalProperties methods available on all vitals request builders, enabling custom properties to be set when constructing API requests. +* The SDK now supports setting additional properties on all vitals request builders through new `additionalProperty()` and `additionalProperties()` methods. +* The SDK now supports additional properties on request and type builders. Use `.additionalProperty(key, value)` or `.additionalProperties(map)` methods when building requests to include custom fields beyond the standard API schema. A new optional `appointmentNotes` field has been added to `AppointmentBookingRequest`. +* New `CanonicalCandidate` type available for biomarker matching operations with LOINC codes, aliases, and confidence scoring. Builder classes now support dynamic additional properties via `additionalProperty()` and `additionalProperties()` methods. +* New `appointmentNotes` field available on `ClientFacingAppointment` objects. Enhanced builder patterns across client-facing types now support additional properties via `additionalProperty()` and `additionalProperties()` methods. +* New builder methods `additionalProperty()` and `additionalProperties()` are now available on all client-facing model builders, allowing dynamic property handling during object construction. +* Enhanced builder pattern support by adding `additionalProperty()` and `additionalProperties()` methods to all client-facing type builders. These methods provide a fluent API for handling additional JSON properties in API responses. +* New builder methods `additionalProperty()` and `additionalProperties()` are now available on all client-facing data type builders, providing a fluent API for setting custom properties during object construction. +* New `ClientFacingLabAccount` type available for lab account management with billing configuration and team allowlist support. Two new event types `ClientFacingLabReportParsingJobCreatedEvent` and `ClientFacingLabReportParsingJobUpdatedEvent` enable tracking of lab report parsing job lifecycle events. +* New `additionalProperty()` and `additionalProperties()` methods available on all builder interfaces. These methods allow you to add custom key-value pairs when constructing objects, providing better support for dynamic data and future extensibility. +* New `additionalProperty()` and `additionalProperties()` builder methods available on all client-facing types. These methods allow setting arbitrary key-value pairs that will be included in the serialized object, enabling more flexible object construction. +* New `additionalProperty()` and `additionalProperties()` builder methods available on all model classes. These methods allow setting custom properties on objects to handle additional fields that may be present in API responses. +* New `additionalProperty()` and `additionalProperties()` methods available on all model builders for setting custom fields not defined in the schema. +* New Compendium APIs available for lab test conversions between LabCorp, Quest, BioReference, and Sonora Quest. Enhanced builder pattern support with additional property methods across model classes. +* New builder methods `additionalProperty()` and `additionalProperties()` are available on all data model classes for setting dynamic JSON properties. Added `GetTeamLabAccountsResponse` type for team lab account operations. +* New builder methods available for additional properties on all grouped data types. Consumers can now set custom properties using `additionalProperty(key, value)` and `additionalProperties(map)` on builders for grouped response objects. +* New builder methods `additionalProperty()` and `additionalProperties()` are now available on all grouped response and data type builders, providing a convenient way to set custom properties for API extensibility. +* The SDK now provides builder methods for setting additional JSON properties on all model objects. Use `additionalProperty(key, value)` to set individual properties or `additionalProperties(map)` to set multiple properties at once. New enum values and types have been added for lab account management features. +* New builder methods `additionalProperty()` and `additionalProperties()` are now available on model builders, allowing developers to set custom properties on API response objects for better forward compatibility. +* New builder methods available for setting additional properties on request and response objects. The SDK now supports TANDEM_SOURCE and SAMSUNG_HEALTH providers. A new ProviderIdConversionResponse type is available for provider ID conversion operations. +* The SDK now supports new model types including RelatedCandidate, SearchCompendiumResponse, SearchMode, and ResultMetadataGender. Builder classes for existing types now include additionalProperty methods for enhanced extensibility. +* The SDK now supports additional properties on builder patterns for better extensibility. Two new types are available: `UsState` enum for US state abbreviations and `UserAddress` model for structured address data. +* The builders for WorkoutColumnExpr, WorkoutDurationTimeseriesExpr, and WorkoutV2InDb now support setting additional properties through the new additionalProperty() and additionalProperties() methods. + 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