// Code generated by @openmeter/typespec-typescript. DO NOT EDIT. import { type Client, http } from '../core.js' import { type Result, type RequestOptions } from '../lib/types.js' import { request } from '../lib/request.js' import { toURLSearchParams } from '../lib/encodings.js' import { toWire, toPathWire, fromWire, assertValid } from '../lib/wire.js' import * as schemas from '../models/schemas.js' import type { ListPlanAddonsRequest, ListPlanAddonsResponse, CreatePlanAddonRequest, CreatePlanAddonResponse, GetPlanAddonRequest, GetPlanAddonResponse, UpdatePlanAddonRequest, UpdatePlanAddonResponse, DeletePlanAddonRequest, DeletePlanAddonResponse, } from '../models/operations/planAddons.js' /** * List add-ons for plan * * List add-ons associated with a plan. * * GET /openmeter/plans/{planId}/addons */ export function listPlanAddons( client: Client, req: ListPlanAddonsRequest, options?: RequestOptions, ): Promise> { return request(() => { const pathParamsInput = { planId: req.planId, } const pathParams = client._options.validate ? toPathWire(pathParamsInput, schemas.listPlanAddonsPathParams) : pathParamsInput if (client._options.validate) { assertValid(schemas.listPlanAddonsPathParamsWire, pathParams) } const path = `openmeter/plans/${(() => { if (pathParams.planId === undefined) { throw new Error('missing path parameter: planId') } return encodeURIComponent(String(pathParams.planId)) })()}/addons` const query = toWire( { page: req.page, }, schemas.listPlanAddonsQueryParams, ) if (client._options.validate) { assertValid(schemas.listPlanAddonsQueryParamsWire, query) } const searchParams = toURLSearchParams(query) return http(client) .get(path, { ...options, searchParams }) .json() .then((data) => { if (client._options.validate) { assertValid(schemas.listPlanAddonsResponseWire, data) } return fromWire(data, schemas.listPlanAddonsResponse) }) }) } /** * Add add-on to plan * * Add an add-on to a plan. * * POST /openmeter/plans/{planId}/addons */ export function createPlanAddon( client: Client, req: CreatePlanAddonRequest, options?: RequestOptions, ): Promise> { return request(() => { const pathParamsInput = { planId: req.planId, } const pathParams = client._options.validate ? toPathWire(pathParamsInput, schemas.createPlanAddonPathParams) : pathParamsInput if (client._options.validate) { assertValid(schemas.createPlanAddonPathParamsWire, pathParams) } const path = `openmeter/plans/${(() => { if (pathParams.planId === undefined) { throw new Error('missing path parameter: planId') } return encodeURIComponent(String(pathParams.planId)) })()}/addons` const body = toWire(req.body, schemas.createPlanAddonBody) if (client._options.validate) { assertValid(schemas.createPlanAddonBodyWire, body) } return http(client) .post(path, { ...options, json: body }) .json() .then((data) => { if (client._options.validate) { assertValid(schemas.createPlanAddonResponseWire, data) } return fromWire(data, schemas.createPlanAddonResponse) }) }) } /** * Get add-on association for plan * * Get an add-on association for a plan. * * GET /openmeter/plans/{planId}/addons/{planAddonId} */ export function getPlanAddon( client: Client, req: GetPlanAddonRequest, options?: RequestOptions, ): Promise> { return request(() => { const pathParamsInput = { planId: req.planId, planAddonId: req.planAddonId, } const pathParams = client._options.validate ? toPathWire(pathParamsInput, schemas.getPlanAddonPathParams) : pathParamsInput if (client._options.validate) { assertValid(schemas.getPlanAddonPathParamsWire, pathParams) } const path = `openmeter/plans/${(() => { if (pathParams.planId === undefined) { throw new Error('missing path parameter: planId') } return encodeURIComponent(String(pathParams.planId)) })()}/addons/${(() => { if (pathParams.planAddonId === undefined) { throw new Error('missing path parameter: planAddonId') } return encodeURIComponent(String(pathParams.planAddonId)) })()}` return http(client) .get(path, options) .json() .then((data) => { if (client._options.validate) { assertValid(schemas.getPlanAddonResponseWire, data) } return fromWire(data, schemas.getPlanAddonResponse) }) }) } /** * Update add-on association for plan * * Update an add-on association for a plan. * * PUT /openmeter/plans/{planId}/addons/{planAddonId} */ export function updatePlanAddon( client: Client, req: UpdatePlanAddonRequest, options?: RequestOptions, ): Promise> { return request(() => { const pathParamsInput = { planId: req.planId, planAddonId: req.planAddonId, } const pathParams = client._options.validate ? toPathWire(pathParamsInput, schemas.updatePlanAddonPathParams) : pathParamsInput if (client._options.validate) { assertValid(schemas.updatePlanAddonPathParamsWire, pathParams) } const path = `openmeter/plans/${(() => { if (pathParams.planId === undefined) { throw new Error('missing path parameter: planId') } return encodeURIComponent(String(pathParams.planId)) })()}/addons/${(() => { if (pathParams.planAddonId === undefined) { throw new Error('missing path parameter: planAddonId') } return encodeURIComponent(String(pathParams.planAddonId)) })()}` const body = toWire(req.body, schemas.updatePlanAddonBody) if (client._options.validate) { assertValid(schemas.updatePlanAddonBodyWire, body) } return http(client) .put(path, { ...options, json: body }) .json() .then((data) => { if (client._options.validate) { assertValid(schemas.updatePlanAddonResponseWire, data) } return fromWire(data, schemas.updatePlanAddonResponse) }) }) } /** * Remove add-on from plan * * Remove an add-on from a plan. * * DELETE /openmeter/plans/{planId}/addons/{planAddonId} */ export function deletePlanAddon( client: Client, req: DeletePlanAddonRequest, options?: RequestOptions, ): Promise> { return request(async () => { const pathParamsInput = { planId: req.planId, planAddonId: req.planAddonId, } const pathParams = client._options.validate ? toPathWire(pathParamsInput, schemas.deletePlanAddonPathParams) : pathParamsInput if (client._options.validate) { assertValid(schemas.deletePlanAddonPathParamsWire, pathParams) } const path = `openmeter/plans/${(() => { if (pathParams.planId === undefined) { throw new Error('missing path parameter: planId') } return encodeURIComponent(String(pathParams.planId)) })()}/addons/${(() => { if (pathParams.planAddonId === undefined) { throw new Error('missing path parameter: planAddonId') } return encodeURIComponent(String(pathParams.planAddonId)) })()}` await http(client).delete(path, options) }) }