// 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 { ListAppsRequest, ListAppsResponse, GetAppRequest, GetAppResponse, ListAppCatalogRequest, ListAppCatalogResponse, GetAppCatalogItemRequest, GetAppCatalogItemResponse, InstallAppRequest, InstallAppResponse, } from '../models/operations/apps.js' /** * List apps * * List installed apps. * * GET /openmeter/apps */ export function listApps( client: Client, req: ListAppsRequest = {}, options?: RequestOptions, ): Promise> { return request(() => { const query = toWire( { page: req.page, }, schemas.listAppsQueryParams, ) if (client._options.validate) { assertValid(schemas.listAppsQueryParamsWire, query) } const searchParams = toURLSearchParams(query) return http(client) .get('openmeter/apps', { ...options, searchParams }) .json() .then((data) => { if (client._options.validate) { assertValid(schemas.listAppsResponseWire, data) } return fromWire(data, schemas.listAppsResponse) }) }) } /** * Get app * * Get an installed app. * * GET /openmeter/apps/{appId} */ export function getApp( client: Client, req: GetAppRequest, options?: RequestOptions, ): Promise> { return request(() => { const pathParamsInput = { appId: req.appId, } const pathParams = client._options.validate ? toPathWire(pathParamsInput, schemas.getAppPathParams) : pathParamsInput if (client._options.validate) { assertValid(schemas.getAppPathParamsWire, pathParams) } const path = `openmeter/apps/${(() => { if (pathParams.appId === undefined) { throw new Error('missing path parameter: appId') } return encodeURIComponent(String(pathParams.appId)) })()}` return http(client) .get(path, options) .json() .then((data) => { if (client._options.validate) { assertValid(schemas.getAppResponseWire, data) } return fromWire(data, schemas.getAppResponse) }) }) } /** * List app catalog * * List available apps. * * GET /openmeter/app-catalog */ export function listAppCatalog( client: Client, req: ListAppCatalogRequest = {}, options?: RequestOptions, ): Promise> { return request(() => { const query = toWire( { page: req.page, }, schemas.listAppCatalogQueryParams, ) if (client._options.validate) { assertValid(schemas.listAppCatalogQueryParamsWire, query) } const searchParams = toURLSearchParams(query) return http(client) .get('openmeter/app-catalog', { ...options, searchParams }) .json() .then((data) => { if (client._options.validate) { assertValid(schemas.listAppCatalogResponseWire, data) } return fromWire(data, schemas.listAppCatalogResponse) }) }) } /** * Get app catalog item by type * * Get an app catalog item by type. * * GET /openmeter/app-catalog/{appType} */ export function getAppCatalogItem( client: Client, req: GetAppCatalogItemRequest, options?: RequestOptions, ): Promise> { return request(() => { const pathParamsInput = { appType: req.appType, } const pathParams = client._options.validate ? toPathWire(pathParamsInput, schemas.getAppCatalogItemPathParams) : pathParamsInput if (client._options.validate) { assertValid(schemas.getAppCatalogItemPathParamsWire, pathParams) } const path = `openmeter/app-catalog/${(() => { if (pathParams.appType === undefined) { throw new Error('missing path parameter: appType') } return encodeURIComponent(String(pathParams.appType)) })()}` return http(client) .get(path, options) .json() .then((data) => { if (client._options.validate) { assertValid(schemas.getAppCatalogItemResponseWire, data) } return fromWire(data, schemas.getAppCatalogItemResponse) }) }) } /** * Install app from the catalog * * Install an app from the catalog. * * POST /openmeter/app-catalog/install */ export function installApp( client: Client, req: InstallAppRequest, options?: RequestOptions, ): Promise> { return request(() => { const body = toWire(req, schemas.installAppBody) if (client._options.validate) { assertValid(schemas.installAppBodyWire, body) } return http(client) .post('openmeter/app-catalog/install', { ...options, json: body }) .json() .then((data) => { if (client._options.validate) { assertValid(schemas.installAppResponseWire, data) } return fromWire(data, schemas.installAppResponse) }) }) }