createClient(opts)가 받는 모든 필드입니다. ClientOptions TypeScript 타입과 동일합니다.
필수
tenant: string
클라이언트가 동작할 워크스페이스 id (t_…). 안 넘기면 NORA_TENANT env에서 읽습니다.
자격증명
token?: string
관리용 호출에 쓸 PAT (nora_pat_…). 안 넘기면 NORA_PAT env에서 읽습니다. 트리거 시크릿으로 부르는 호출(flows.run · feedback · signals.report)만 쓸 거면 필수는 아닙니다.
triggerSecret?: string
Flow별 실행 시크릿. 안 넘기면 NORA_TRIGGER_SECRET env에서 읽습니다. flows.run과 signals.report에 필수입니다.
triggerHeader?: string
트리거가 시크릿을 기대하는 헤더. Trigger 블록에 설정된 api_auth_header와 맞춰야 합니다. 기본 authorization, Bearer <secret>으로 보냅니다.
트리거가 비표준 헤더를 받도록 설정된 경우에 오버라이드:
전송
baseUrl?: string
서버 base URL. 기본 https://platform.nora.my/api/v1 (또는 NORA_BASE_URL env).
self-hosted · 스테이징 배포엔 오버라이드:
timeoutMs?: number
호출별 기본 타임아웃 (ms). 기본 30_000 (30초).
개별 verb는 자기 옵션 객체에 timeoutMs를 넘겨 덮을 수 있습니다 (예: flows.run(slug, input, { timeoutMs: 60_000 })).
maxRetries?: number
서버가 retryable로 판정한 실패(NoraProviderError · NoraPlatformError의 .retryable === true)에 대한 재시도 횟수. 기본 2.
모든 시도가 attempt와 실패 code로 로깅됩니다. 조용한 재시도는 없습니다. 에러 · 로깅 참고.
SDK 레이어 재시도를 끄려면 0 (앱 레이어에서 직접 처리):
fetchImpl?: typeof fetch
커스텀 fetch 구현. 기본은 globalThis.fetch입니다. 이럴 때 씁니다:
-
테스트 seam. mock 주입:
-
커스텀 런타임.
undici붙인 Node, 특정 fetch 폴리필의 엣지 워커, HTTP 프록시 shim.
fetch(input, init?)와 맞아야 합니다.
관측
logger?: Logger
SDK 내부 기록을 받을 구조화 로거. pino · winston · bunyan, 또는 이 인터페이스와 맞는 것 아무거나:
onBehalfOf 값 · 요청/응답 본문은 debug: true 없이는 로그에 남지 않습니다.
debug?: boolean
true면 요청/응답 본문이 로그에 실립니다 (지정한 logger로). 기본은 off입니다.
사고 재현할 때만 켜세요. 공유 클라이언트가 아니라 스코프드 클론에서 켜는 게 좋습니다. 본문에 PII가 들어 있을 수 있습니다.