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| Parameter | Type | Description |
|---|---|---|
env | ServerEnv | Environment with MYCO_APP_KEY |
request | Request | The 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): stringsdk.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;
}