Skip to Content

Server SDK API

Server-side SDK for Cloudflare Workers from @myco-dev/sdk/server.

createServerSDK

import { createServerSDK } from "@myco-dev/sdk/server";

Create a server-side SDK instance for use in Cloudflare Workers.

function createServerSDK(env: ServerEnv, request: Request): ServerSDK
ParameterTypeDescription
envServerEnvEnvironment with MYCO_APP_KEY
requestRequestThe incoming request (used for JWT extraction and URL detection)

ServerSDK

sdk.fetch<T>

Make an authenticated API request to the Myco backend.

sdk.fetch<T>(path: string, options?: RequestInit): Promise<T>

Automatically includes JWT from cookie and app headers.


sdk.auth

getVerifiedUser

Verify the JWT from the request cookie.

sdk.auth.getVerifiedUser(): Promise<{ user: VerifiedUser | null; jwt: string | null; }>

Returns null for both fields if no valid JWT is present.

getLoginUrl

Generate a URL to the Myco login page.

sdk.auth.getLoginUrl(returnTo: string): string

sdk.data

getEntities

sdk.data.getEntities(): Promise<Entity[]>

getEntity

sdk.data.getEntity(entitySlug: string): Promise<Entity>

getRecords

sdk.data.getRecords( entitySlug: string, options?: GetRecordsOptions ): Promise<PaginatedResponse<EntityRecord>>

getRecord

sdk.data.getRecord(entitySlug: string, recordId: string): Promise<EntityRecord>

createRecord

sdk.data.createRecord( entitySlug: string, data: Record<string, unknown> ): Promise<EntityRecord>

updateRecord

sdk.data.updateRecord( entitySlug: string, recordId: string, data: Record<string, unknown> ): Promise<EntityRecord>

deleteRecord

sdk.data.deleteRecord(entitySlug: string, recordId: string): Promise<void>

batchGetRecords

sdk.data.batchGetRecords(recordIds: string[]): Promise<EntityRecord[]>

sdk.workspace

list

sdk.workspace.list(): Promise<Workspace[]>

current

sdk.workspace.current(): Promise<Workspace>

Throws if no Myco-Workspace-Id header is present.

update

sdk.workspace.update(data: { name?: string }): Promise<Workspace>

members.get

sdk.workspace.members.get(): Promise<WorkspaceMember[]>

members.add

sdk.workspace.members.add( userId: string, role?: "admin" | "member" // default: "member" ): Promise<WorkspaceMember>

members.remove

sdk.workspace.members.remove(userId: string): Promise<void>

Types

import type { ServerSDK, ServerEnv, VerifiedUser } from "@myco-dev/sdk/server";

ServerEnv

interface ServerEnv { MYCO_APP_KEY: string; }

VerifiedUser

interface VerifiedUser { userId: string; email?: string; name?: string; }

EntityRecord

The server SDK returns raw EntityRecord objects (not RecordEntry<T>):

interface EntityRecord { id: string; entityId: string; workspaceId: string; data: Record<string, unknown>; createdAt: string; updatedAt: string; }