Skip to content
← Public packages

@kody/integrations-sh

Client for the public integrations.sh registry: search, detect, cached surface, and live discover.

src/urls.ts

39 lines · 1.2 KB · TypeScript
export const INTEGRATIONS_SH_API_BASE = 'https://integrations.sh/api'

export const SURFACE_KINDS = ['mcp', 'openapi', 'graphql', 'cli'] as const

export type SurfaceKind = (typeof SURFACE_KINDS)[number]

export function isSurfaceKind(value: unknown): value is SurfaceKind {
	return typeof value === 'string' && SURFACE_KINDS.includes(value as SurfaceKind)
}

export function buildSearchUrl(input: {
	query: string
	kind?: SurfaceKind
	limit: number
	offset?: number
}): string {
	const url = new URL(`${INTEGRATIONS_SH_API_BASE}/search`)
	url.searchParams.set('q', input.query)
	if (input.kind) {
		url.searchParams.set('kind', input.kind)
	}
	url.searchParams.set('limit', String(input.limit))
	if (input.offset != null) {
		url.searchParams.set('offset', String(input.offset))
	}
	return url.toString()
}

export function buildDetectUrl(domain: string): string {
	return `${INTEGRATIONS_SH_API_BASE}/${encodeURIComponent(domain)}/detect`
}

export function buildSurfaceUrl(domain: string): string {
	return `${INTEGRATIONS_SH_API_BASE}/${encodeURIComponent(domain)}/surface`
}

export function buildDiscoverUrl(domain: string): string {
	return `${INTEGRATIONS_SH_API_BASE}/${encodeURIComponent(domain)}/discover`
}