Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/sentry

src/request.ts

22 lines · 1.0 KB · TypeScript
import { type SentryRequestInput, requireRecord, requireStringOrNumber, sentryRequestFromInput } from './client.ts'

/**
 * Call an arbitrary Sentry REST endpoint.
 *
 * Mutating methods (`POST`, `PUT`, `PATCH`, `DELETE`, …) default to dry-run.
 * Pass `dryRun: false` only after the user confirms the exact path and body.
 *
 * @param params.path - API path starting with `/` (required).
 * @param params.host - Optional API host. Default `sentry.io`.
 * @param params.dryRun - Defaults to true for writes. Set false to execute.
 * @returns Parsed JSON response, or `{ dryRun: true, wouldCall }` for writes.
 * @example
 * import sentryRequest from 'kody:@kody/sentry/request'
 * const teams = await sentryRequest({ path: '/organizations/acme/teams/' })
 * // => [{ slug: '...', name: '...' }]
 */
export default async function requestEntrypoint(params: unknown) {
	const input = requireRecord(params, 'request')
	requireStringOrNumber(input, 'path', 'request')
	return sentryRequestFromInput(input as SentryRequestInput)
}