Skip to content

build: update openapi spec and regenerate api client - #305

Merged
chrisdoc merged 1 commit into
mainfrom
build/update-openapi-spec
Apr 23, 2026
Merged

build: update openapi spec and regenerate api client#305
chrisdoc merged 1 commit into
mainfrom
build/update-openapi-spec

Conversation

@chrisdoc

@chrisdoc chrisdoc commented Apr 23, 2026

Copy link
Copy Markdown
Owner

Update the Hevy OpenAPI spec to the latest version and regenerate the API client.

Changes

  • openapi-spec.json: Updated to latest Hevy API spec
  • src/generated/: Regenerated API client via npm run build:client
  • src/utils/hevyClientKubb.ts: Fixed parameter order for POST/PUT methods (data now before headers to match new generated signatures)
  • src/tools/routines.ts: Updated buildRepRange return type to use undefined instead of null for optional fields, matching the regenerated types

Summary by CodeRabbit

  • New Features

    • Added user profile information API endpoint.
    • Added body measurements tracking API endpoints supporting retrieval, creation, and updates.
  • Bug Fixes

    • Refined rep_range schema constraints for improved accuracy.

✨ PR Description

Purpose: Regenerate API client from updated OpenAPI spec to add body measurements and user info endpoints.

Main changes:

  • Added body measurements API endpoints (GET/POST list, GET/PUT by date) with corresponding types and client functions
  • Added user info endpoint and UserInfo/UserInfoResponse types to query authenticated user data
  • Fixed API client parameter ordering for POST/PUT requests (data before headers) and generated type exports

Generated by LinearB AI and added by gitStream.
AI-generated content may contain inaccuracies. Please verify before using.
💡 Tip: You can customize your AI Description using Guidelines Learn how

@coderabbitai

coderabbitai Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The pull request extends the OpenAPI specification with new user information and body measurements API endpoints, removes nullability constraints from existing routine schema fields, updates the internal buildRepRange function to use undefined instead of null, and reorders function arguments in API wrapper calls for consistency.

Changes

Cohort / File(s) Summary
OpenAPI Specification
openapi-spec.json
Adds new GET /v1/user/info endpoint and four body measurements endpoints (GET, POST, GET/{date}, PUT/{date}). Introduces BodyMeasurement, PutBodyMeasurement, UserInfo, and UserInfoResponse schemas. Removes nullable: true from PostRoutinesRequestSet.rep_range.start and .end properties. Adds Users and Measurements tags.
Routine Range Logic
src/tools/routines.ts
Updates buildRepRange to return objects with optional start and end properties. Converts missing inputs to undefined instead of explicit null, and adjusts absence-check logic accordingly.
API Wrapper Calls
src/utils/hevyClientKubb.ts
Reorders arguments in five API wrapper function calls (postV1Workouts, putV1WorkoutsWorkoutid, postV1Routines, putV1RoutinesRoutineid, postV1RoutineFolders) to pass data before headers.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested labels

30 min review, safe-changes

Poem

🐰 Hops through the API with measured grace,
New endpoints bloom in their rightful place,
Body measurements tracked, users known,
Nullable fields removed, the schema's honed!
A wellness journey, now more clear—
Progress recorded, season by season here. 📊✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: updating the OpenAPI spec and regenerating the API client, which aligns with all three modified files (openapi-spec.json, API client generation, and corresponding wrapper updates).
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch build/update-openapi-spec

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@sentry

sentry Bot commented Apr 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 8 lines in your changes missing coverage. Please review.
✅ Project coverage is 69.29%. Comparing base (2aee93a) to head (5a63f83).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
src/utils/hevyClientKubb.ts 0.00% 5 Missing ⚠️
src/tools/routines.ts 0.00% 0 Missing and 3 partials ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #305   +/-   ##
=======================================
  Coverage   69.29%   69.29%           
=======================================
  Files          14       14           
  Lines         508      508           
  Branches      157      157           
=======================================
  Hits          352      352           
  Misses         97       97           
  Partials       59       59           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@gitstream-cm gitstream-cm Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✨ PR Review

LGTM

Generated by LinearB AI and added by gitStream.
AI-generated content may contain inaccuracies. Please verify before using.
💡 Tip: You can customize your AI Review using Guidelines Learn how

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces new API endpoints for user information and body measurements, along with corresponding updates to the generated client code, schemas, and mocks. It also refines rep range logic and corrects API call signatures in the client utility. Feedback was provided to improve the consistency of the body measurement schema by appending a _cm suffix to several properties, such as abdomen and waist, to align with existing fields like neck_cm.

Comment thread openapi-spec.json
Comment on lines +1771 to +1775
"abdomen": {
"type": "number",
"nullable": true,
"example": 85
},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with other measurement properties that have a _cm suffix (e.g., neck_cm, shoulder_cm), consider renaming this property to abdomen_cm.

This would improve the predictability of the API schema for consumers. This suggestion also applies to the following properties in both BodyMeasurement and PutBodyMeasurement schemas:

  • waist
  • hips
  • left_thigh
  • right_thigh
  • left_calf
  • right_calf

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
openapi-spec.json (1)

334-1330: New user/info and body_measurements endpoints are in the spec/generated client but not wired into createClient or any MCP tool.

The regenerated client now exposes getV1UserInfo, getV1BodyMeasurements, postV1BodyMeasurements, getV1BodyMeasurementsDate, and putV1BodyMeasurementsDate, but src/utils/hevyClientKubb.ts does not add corresponding wrappers and there are no MCP tools for them. If that is intentional (to be done in a follow-up PR), no action needed; otherwise consider exposing them now so the generated code is actually reachable.

Want me to draft the wrapper methods in hevyClientKubb.ts and/or scaffold MCP tools (src/tools/users.ts, src/tools/measurements.ts) in a follow-up?

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@openapi-spec.json` around lines 334 - 1330, The client spec added endpoints
(operationIds getV1UserInfo, getV1BodyMeasurements, postV1BodyMeasurements,
getV1BodyMeasurementsDate, putV1BodyMeasurementsDate) but
src/utils/hevyClientKubb.ts doesn't expose wrappers and there are no MCP tools;
fix by adding thin wrapper methods in hevyClientKubb.ts that call the generated
client operations (use the same operationId names to find generated functions)
and then scaffold corresponding MCP tool modules (e.g., src/tools/users.ts
exporting a getUserInfo wrapper and src/tools/measurements.ts exporting
listMeasurements, createMeasurement, getMeasurementByDate,
updateMeasurementByDate) that import the new hevyClientKubb methods and
re-export ergonomic functions for use by the app or tests.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@openapi-spec.json`:
- Around line 334-1330: The client spec added endpoints (operationIds
getV1UserInfo, getV1BodyMeasurements, postV1BodyMeasurements,
getV1BodyMeasurementsDate, putV1BodyMeasurementsDate) but
src/utils/hevyClientKubb.ts doesn't expose wrappers and there are no MCP tools;
fix by adding thin wrapper methods in hevyClientKubb.ts that call the generated
client operations (use the same operationId names to find generated functions)
and then scaffold corresponding MCP tool modules (e.g., src/tools/users.ts
exporting a getUserInfo wrapper and src/tools/measurements.ts exporting
listMeasurements, createMeasurement, getMeasurementByDate,
updateMeasurementByDate) that import the new hevyClientKubb methods and
re-export ergonomic functions for use by the app or tests.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 717ad267-e7cd-4051-b237-13b27846728a

📥 Commits

Reviewing files that changed from the base of the PR and between a974978 and 5a63f83.

⛔ Files ignored due to path filters (206)
  • src/generated/.kubb/config.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1BodyMeasurements.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1BodyMeasurementsDate.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1ExerciseHistoryExercisetemplateid.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1ExerciseTemplates.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1ExerciseTemplatesExercisetemplateid.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1RoutineFolders.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1RoutineFoldersFolderid.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1Routines.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1RoutinesRoutineid.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1UserInfo.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1Workouts.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1WorkoutsCount.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1WorkoutsEvents.ts is excluded by !**/generated/**
  • src/generated/client/api/getV1WorkoutsWorkoutid.ts is excluded by !**/generated/**
  • src/generated/client/api/index.ts is excluded by !**/generated/**
  • src/generated/client/api/postV1BodyMeasurements.ts is excluded by !**/generated/**
  • src/generated/client/api/postV1ExerciseTemplates.ts is excluded by !**/generated/**
  • src/generated/client/api/postV1RoutineFolders.ts is excluded by !**/generated/**
  • src/generated/client/api/postV1Routines.ts is excluded by !**/generated/**
  • src/generated/client/api/postV1Workouts.ts is excluded by !**/generated/**
  • src/generated/client/api/putV1BodyMeasurementsDate.ts is excluded by !**/generated/**
  • src/generated/client/api/putV1RoutinesRoutineid.ts is excluded by !**/generated/**
  • src/generated/client/api/putV1WorkoutsWorkoutid.ts is excluded by !**/generated/**
  • src/generated/client/bodyMeasurement.json is excluded by !**/generated/**
  • src/generated/client/createCustomExerciseRequestBody.json is excluded by !**/generated/**
  • src/generated/client/customExerciseType.json is excluded by !**/generated/**
  • src/generated/client/deletedWorkout.json is excluded by !**/generated/**
  • src/generated/client/equipmentCategory.json is excluded by !**/generated/**
  • src/generated/client/exercise.json is excluded by !**/generated/**
  • src/generated/client/exerciseHistoryEntry.json is excluded by !**/generated/**
  • src/generated/client/exerciseTemplate.json is excluded by !**/generated/**
  • src/generated/client/mocks/createBodyMeasurement.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createCreateCustomExerciseRequestBody.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createCustomExerciseType.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createDeletedWorkout.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createEquipmentCategory.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createExercise.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createExerciseHistoryEntry.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createExerciseTemplate.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1BodyMeasurements.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1BodyMeasurementsDate.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1ExerciseHistoryExercisetemplateid.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1ExerciseTemplates.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1ExerciseTemplatesExercisetemplateid.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1RoutineFolders.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1RoutineFoldersFolderid.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1Routines.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1RoutinesRoutineid.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1UserInfo.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1Workouts.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1WorkoutsCount.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1WorkoutsEvents.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createGetV1WorkoutsWorkoutid.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createMuscleGroup.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPaginatedWorkoutEvents.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostRoutineFolderRequestBody.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostRoutinesRequestBody.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostRoutinesRequestExercise.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostRoutinesRequestSet.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostV1BodyMeasurements.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostV1ExerciseTemplates.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostV1RoutineFolders.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostV1Routines.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostV1Workouts.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostWorkoutsRequestBody.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostWorkoutsRequestExercise.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPostWorkoutsRequestSet.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPutBodyMeasurement.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPutRoutinesRequestBody.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPutRoutinesRequestExercise.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPutRoutinesRequestSet.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPutV1BodyMeasurementsDate.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPutV1RoutinesRoutineid.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createPutV1WorkoutsWorkoutid.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createRoutine.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createRoutineFolder.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createSet.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createUpdatedWorkout.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createUserInfo.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createUserInfoResponse.ts is excluded by !**/generated/**
  • src/generated/client/mocks/createWorkout.ts is excluded by !**/generated/**
  • src/generated/client/mocks/index.ts is excluded by !**/generated/**
  • src/generated/client/muscleGroup.json is excluded by !**/generated/**
  • src/generated/client/paginatedWorkoutEvents.json is excluded by !**/generated/**
  • src/generated/client/postRoutineFolderRequestBody.json is excluded by !**/generated/**
  • src/generated/client/postRoutinesRequestBody.json is excluded by !**/generated/**
  • src/generated/client/postRoutinesRequestExercise.json is excluded by !**/generated/**
  • src/generated/client/postRoutinesRequestSet.json is excluded by !**/generated/**
  • src/generated/client/postWorkoutsRequestBody.json is excluded by !**/generated/**
  • src/generated/client/postWorkoutsRequestExercise.json is excluded by !**/generated/**
  • src/generated/client/postWorkoutsRequestSet.json is excluded by !**/generated/**
  • src/generated/client/putBodyMeasurement.json is excluded by !**/generated/**
  • src/generated/client/putRoutinesRequestBody.json is excluded by !**/generated/**
  • src/generated/client/putRoutinesRequestExercise.json is excluded by !**/generated/**
  • src/generated/client/putRoutinesRequestSet.json is excluded by !**/generated/**
  • src/generated/client/routine.json is excluded by !**/generated/**
  • src/generated/client/routineFolder.json is excluded by !**/generated/**
  • src/generated/client/schemas/bodyMeasurementSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/createCustomExerciseRequestBodySchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/customExerciseTypeSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/deletedWorkoutSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/equipmentCategorySchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/exerciseHistoryEntrySchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/exerciseSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/exerciseTemplateSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1BodyMeasurementsDateSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1BodyMeasurementsSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1ExerciseHistoryExercisetemplateidSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1ExerciseTemplatesExercisetemplateidSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1ExerciseTemplatesSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1RoutineFoldersFolderidSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1RoutineFoldersSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1RoutinesRoutineidSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1RoutinesSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1UserInfoSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1WorkoutsCountSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1WorkoutsEventsSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1WorkoutsSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/getV1WorkoutsWorkoutidSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/index.ts is excluded by !**/generated/**
  • src/generated/client/schemas/muscleGroupSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/paginatedWorkoutEventsSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postRoutineFolderRequestBodySchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postRoutinesRequestBodySchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postRoutinesRequestExerciseSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postRoutinesRequestSetSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postV1BodyMeasurementsSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postV1ExerciseTemplatesSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postV1RoutineFoldersSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postV1RoutinesSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postV1WorkoutsSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postWorkoutsRequestBodySchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postWorkoutsRequestExerciseSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/postWorkoutsRequestSetSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/putBodyMeasurementSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/putRoutinesRequestBodySchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/putRoutinesRequestExerciseSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/putRoutinesRequestSetSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/putV1BodyMeasurementsDateSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/putV1RoutinesRoutineidSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/putV1WorkoutsWorkoutidSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/routineFolderSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/routineSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/setSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/updatedWorkoutSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/userInfoResponseSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/userInfoSchema.ts is excluded by !**/generated/**
  • src/generated/client/schemas/workoutSchema.ts is excluded by !**/generated/**
  • src/generated/client/set.json is excluded by !**/generated/**
  • src/generated/client/types/BodyMeasurement.ts is excluded by !**/generated/**
  • src/generated/client/types/CreateCustomExerciseRequestBody.ts is excluded by !**/generated/**
  • src/generated/client/types/CustomExerciseType.ts is excluded by !**/generated/**
  • src/generated/client/types/DeletedWorkout.ts is excluded by !**/generated/**
  • src/generated/client/types/EquipmentCategory.ts is excluded by !**/generated/**
  • src/generated/client/types/Exercise.ts is excluded by !**/generated/**
  • src/generated/client/types/ExerciseHistoryEntry.ts is excluded by !**/generated/**
  • src/generated/client/types/ExerciseTemplate.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1BodyMeasurements.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1BodyMeasurementsDate.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1ExerciseHistoryExercisetemplateid.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1ExerciseTemplates.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1ExerciseTemplatesExercisetemplateid.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1RoutineFolders.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1RoutineFoldersFolderid.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1Routines.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1RoutinesRoutineid.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1UserInfo.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1Workouts.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1WorkoutsCount.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1WorkoutsEvents.ts is excluded by !**/generated/**
  • src/generated/client/types/GetV1WorkoutsWorkoutid.ts is excluded by !**/generated/**
  • src/generated/client/types/MuscleGroup.ts is excluded by !**/generated/**
  • src/generated/client/types/PaginatedWorkoutEvents.ts is excluded by !**/generated/**
  • src/generated/client/types/PostRoutineFolderRequestBody.ts is excluded by !**/generated/**
  • src/generated/client/types/PostRoutinesRequestBody.ts is excluded by !**/generated/**
  • src/generated/client/types/PostRoutinesRequestExercise.ts is excluded by !**/generated/**
  • src/generated/client/types/PostRoutinesRequestSet.ts is excluded by !**/generated/**
  • src/generated/client/types/PostV1BodyMeasurements.ts is excluded by !**/generated/**
  • src/generated/client/types/PostV1ExerciseTemplates.ts is excluded by !**/generated/**
  • src/generated/client/types/PostV1RoutineFolders.ts is excluded by !**/generated/**
  • src/generated/client/types/PostV1Routines.ts is excluded by !**/generated/**
  • src/generated/client/types/PostV1Workouts.ts is excluded by !**/generated/**
  • src/generated/client/types/PostWorkoutsRequestBody.ts is excluded by !**/generated/**
  • src/generated/client/types/PostWorkoutsRequestExercise.ts is excluded by !**/generated/**
  • src/generated/client/types/PostWorkoutsRequestSet.ts is excluded by !**/generated/**
  • src/generated/client/types/PutBodyMeasurement.ts is excluded by !**/generated/**
  • src/generated/client/types/PutRoutinesRequestBody.ts is excluded by !**/generated/**
  • src/generated/client/types/PutRoutinesRequestExercise.ts is excluded by !**/generated/**
  • src/generated/client/types/PutRoutinesRequestSet.ts is excluded by !**/generated/**
  • src/generated/client/types/PutV1BodyMeasurementsDate.ts is excluded by !**/generated/**
  • src/generated/client/types/PutV1RoutinesRoutineid.ts is excluded by !**/generated/**
  • src/generated/client/types/PutV1WorkoutsWorkoutid.ts is excluded by !**/generated/**
  • src/generated/client/types/Routine.ts is excluded by !**/generated/**
  • src/generated/client/types/RoutineFolder.ts is excluded by !**/generated/**
  • src/generated/client/types/Set.ts is excluded by !**/generated/**
  • src/generated/client/types/UpdatedWorkout.ts is excluded by !**/generated/**
  • src/generated/client/types/UserInfo.ts is excluded by !**/generated/**
  • src/generated/client/types/UserInfoResponse.ts is excluded by !**/generated/**
  • src/generated/client/types/Workout.ts is excluded by !**/generated/**
  • src/generated/client/types/index.ts is excluded by !**/generated/**
  • src/generated/client/updatedWorkout.json is excluded by !**/generated/**
  • src/generated/client/userInfo.json is excluded by !**/generated/**
  • src/generated/client/userInfoResponse.json is excluded by !**/generated/**
  • src/generated/client/workout.json is excluded by !**/generated/**
  • src/generated/index.ts is excluded by !**/generated/**
📒 Files selected for processing (3)
  • openapi-spec.json
  • src/tools/routines.ts
  • src/utils/hevyClientKubb.ts

@chrisdoc
chrisdoc merged commit 0bfad15 into main Apr 23, 2026
19 of 20 checks passed
@chrisdoc
chrisdoc deleted the build/update-openapi-spec branch April 23, 2026 07:19
github-actions Bot pushed a commit that referenced this pull request Apr 23, 2026
# [1.22.0](v1.21.20...v1.22.0) (2026-04-23)

### Features

* update openapi spec and regenerate api client ([#305](#305)) ([0bfad15](0bfad15))
aaearon added a commit to aaearon/hevy-mcp that referenced this pull request May 9, 2026
Brings in body-measurements MCP tools (chrisdoc#306) and regenerated Kubb client (chrisdoc#305) from upstream; preserves fork-only Streamable HTTP and OAuth 2.1 transports.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant