Skip to content

ref(mcp): Call shared cron monitor endpoints and time range helpers - #1839

Merged
BYK merged 1 commit into
mainfrom
ref/shared-monitor-endpoints
Nov 3, 2026
Merged

BYK merged 1 commit into
mainfrom
ref/shared-monitor-endpoints

Conversation

@sentry-junior

@sentry-junior sentry-junior Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Task 8.4 of the shared API client plan (#1669). This is stacked on #1838.

This moves the cron monitor endpoints and the time range helpers from SentryApiService into toolkit-core's shared API client. SentryApiService calls them with its Zod schemas. The code moves as is.

  • api-client/time-params: normalizeStatsPeriod, parseStatsPeriod, applyTimeParams (statsPeriod or a start/end pair), and applyStatsMixinTimeParams (the since/until seconds StatsMixin endpoints read). It rejects a range that sets both a period and dates, or only one end. defaultStatsPeriod holds the check-in list's "24 hours unless a range is given" default, which the uptime-check list reuses in the next PR. Most other SentryApiService methods still call these helpers; they now import them from toolkit-core.
  • endpoints/monitors: listMonitors, getMonitor (organization or project route), deleteMonitorEnvironment (a 404 still counts as already deleted), listMonitorCheckIns, and getMonitorStats.

@sentry/api has no operation for monitor stats or for deleting a monitor environment, so those wrappers stay hand-written.

One change in behaviour: as with #1741, a response that fails its schema now throws the shared ApiResponseValidationError instead of a ZodError.

Checked with pnpm run tsc, pnpm run lint, pnpm run docs:check, and the toolkit-core, mcp-core, mcp-server bundle, and mcp-cloudflare tests.

via @BYK.

--

View Session [Sentry]

@vercel

vercel Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
sentry-local Ready Ready Preview Nov 3, 2026 11:16am UTC

Request Review

@github-actions github-actions Bot added the risk: medium PR risk score: medium label Nov 3, 2026
@sentry-junior
sentry-junior Bot force-pushed the ref/shared-monitor-endpoints branch from d30e62a to 87aca79 Compare November 3, 2026 10:34
@sentry-junior
sentry-junior Bot force-pushed the ref/shared-monitor-endpoints branch from 87aca79 to d6d764b Compare November 3, 2026 10:47
Base automatically changed from ref/shared-dashboard-release-endpoints to main November 3, 2026 11:12
Moves the cron monitor endpoints and SentryApiService's time range
helpers (statsPeriod, start/end, and StatsMixin since/until) into
toolkit-core's shared API client, as is. SentryApiService calls them.

Co-Authored-By: Burak Yigit Kaya <126780+BYK@users.noreply.github.com>
@sentry-junior
sentry-junior Bot force-pushed the ref/shared-monitor-endpoints branch from d6d764b to 53800c9 Compare November 3, 2026 11:14
@BYK
BYK added this pull request to stack #1851 November 3, 2026 12:12
@BYK
BYK merged commit 91163db into main Nov 3, 2026
38 checks passed
@BYK
BYK deleted the ref/shared-monitor-endpoints branch November 3, 2026 12:13
BYK added a commit that referenced this pull request Nov 3, 2026
Task 8.4 of the shared API client plan
([#1669](#1669)). This is
stacked on #1839.

This moves the uptime monitor endpoints from `SentryApiService` into
`toolkit-core`'s `api-client/endpoints/uptime-monitors`.
`SentryApiService` calls them with its Zod schemas. The code moves as
is.

- `listUptimeMonitors` takes a numeric `projectId`, since the endpoint
filters by ID. `SentryApiService` still looks the project slug up first.
- `getUptimeMonitor` and `listUptimeMonitorChecks`. The checks list
still defaults to 24 hours unless a range is given, through
`defaultStatsPeriod` from #1839.
- `createUptimeMonitor` and `updateUptimeMonitor` share one field list,
so the body still holds every field that is set (an explicit `null`
included), in the same order as before.
- `deleteUptimeMonitor` still counts a 404 as already deleted.

`@sentry/api` has no uptime operations at all, so these wrappers stay
hand-written.

**One change in behaviour:** as with #1741, a response that fails its
schema now throws the shared `ApiResponseValidationError` instead of a
`ZodError`.

Checked with `pnpm run tsc`, `pnpm run lint`, `pnpm run docs:check`, and
the toolkit-core, mcp-core, mcp-server bundle, and mcp-cloudflare tests
(run on the top of the stack, the replay branch at `73bfc0b3`, before
the later rebases), plus the uptime tool tests on this commit.

<!-- junior-request-attribution:start -->
via @BYK.
<!-- junior-request-attribution:end -->

<!-- junior-session-footer:start -->
<!-- junior-conversation-id:agent%3Ab061171f2ec2e6cf6f09a6828cadc9fa -->

--

[View
Session](https://junior-prod.sentry.dev/conversations/agent%3Ab061171f2ec2e6cf6f09a6828cadc9fa)
[[Sentry]](https://sentry.sentry.io/explore/conversations/agent%3Ab061171f2ec2e6cf6f09a6828cadc9fa/?project=4510944073809921)

<!-- junior-session-footer:end -->

Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>
Co-authored-by: Burak Yigit Kaya <126780+BYK@users.noreply.github.com>

This branch was successfully deployed

1 active deployment
Preview — 53800c97 Deployed Nov 3, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: medium PR risk score: medium

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant