> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# Auth

> PAT과 트리거 시크릿 발급, 필요한 스코프만 선택

SDK는 서버 사이드 자격증명 두 가지를 씁니다.

| 자격증명 | 쓸 수 있는 호출 | 범위 |
| - | - | - |
| **트리거 시크릿** (Flow당 하나) | `flows.run` · `signals.report`(자기 트레이스) | 그 Flow 하나. 발급 뒤 조회 불가. |
| **PAT** `nora_pat_…` + 스코프 | 관리 (`resolve`, improvements, versions, simulations, memory, knowledge) | 워크스페이스 |

대개 둘 다 필요합니다. `flows.run`과 `feedback`은 트리거 시크릿으로, 나머지는 PAT로 인증합니다.

## 클라이언트 초기화

```ts theme={null}
import { createClient } from "@conscience-technology/nora-sdk";

const nora = createClient({
  tenant: "t_...",
  token: process.env.NORA_PAT,                    // 관리용 호출
  triggerSecret: process.env.NORA_TRIGGER_SECRET, // 실행용 호출
});
```

전체 `ClientOptions` 레퍼런스(baseUrl · 재시도 · 로깅 · 커스텀 fetch · 커스텀 트리거 헤더)는 다음 페이지: [클라이언트 옵션](https://docs.nora.my/ko/sdk/client-options.md).

## 자격증명은 어디서 오나

### 트리거 시크릿

Flow의 Trigger 블록에서 발급합니다. 앱에서 (**Trigger → Generate secret**) 또는 CLI로:

```bash theme={null}
nora triggers secret rotate <trigger-id>
```

평문이 stdout에 **딱 한 번** 뜹니다. 즉시 시크릿 매니저에 저장하세요. 다시 보여 주는 경로는 없습니다. 잃어버리면 다시 발급해야 합니다.

Flow마다 자기 시크릿이 있습니다. 시크릿 하나가 새면 그 Flow 하나만 손상됩니다.

### Personal Access Token (PAT)

앱의 **Settings → Personal Access Tokens**에서 발급합니다. 만들 때 필요한 스코프만 정확히 체크합니다. 토큰은 체크한 스코프의 합집합을 갖습니다.

토큰은 한 번만 표시됩니다. 시크릿 매니저에 저장하고 env var로 참조하세요.

```bash theme={null}
export NORA_PAT="nora_pat_…"
export NORA_TRIGGER_SECRET="…"
```

## PAT 스코프 (강제됨)

스코프는 서버가 엄격히 강제합니다. `read` 토큰으로는 승인할 수 없고, `simulate` 토큰으로는 memory에 쓸 수 없습니다.

| 스코프 | 쓸 수 있는 호출 |
| - | - |
| `read` | [`resolve`](https://docs.nora.my/ko/sdk/transparency) · 트레이스 조회 · [`improvements.list`](https://docs.nora.my/ko/sdk/improvements) / `get` (프롬프트·최종사용자 데이터가 나갈 수 있어 관리자용) |
| `content` | [`memory`](https://docs.nora.my/ko/sdk/resources) / [`knowledge`](https://docs.nora.my/ko/sdk/resources) 쓰기 (스코프드 리소스는 `onBehalfOf` 필수) |
| `simulate` | [`simulations.*`](https://docs.nora.my/ko/sdk/simulations). **유료**, 워크스페이스 LLM 키로 과금 |
| `approve` | [`improvements.approve`](https://docs.nora.my/ko/sdk/improvements) · `revert` · [`versions.rollback`](https://docs.nora.my/ko/sdk/improvements#versions). 프로덕션 변경 |

`approve`와 `simulate`는 `read`와 분리되어 있어, 새어도 배포나 지출은 못 합니다.

## 최소 권한 조합

**읽기 전용 통합** (대시보드, "이 답은 왜" 패널):

```bash theme={null}
scopes: read
```

**개선 큐 임베드** (관리자에게 fix 노출):

```bash theme={null}
scopes: read, approve
```

**on-demand 시뮬 포함 전체 루프**:

```bash theme={null}
scopes: read, approve, simulate
```

**콘텐츠 쓰기** (앱 코드에서 업로드 · 메모리 쓰기):

```bash theme={null}
scopes: content
```

역할별로 토큰을 분리 발급하세요. 그러면 토큰 하나를 회수해도 한 경로만 영향 받습니다.

## 환경 변수 오버라이드

SDK가 자동으로 읽는 표준 env var:

* `NORA_PAT` `createClient` 호출에 `token`을 안 넘기면 여기서 읽음.
* `NORA_TRIGGER_SECRET` `triggerSecret`도 마찬가지.
* `NORA_BASE_URL` `baseUrl` 오버라이드 (기본: `https://platform.nora.my/api/v1`).
* `NORA_TENANT` `tenant`를 안 넘기면 여기서 읽음.

로컬 `.env`는 자동 로드하지 않습니다. `dotenv`나 프레임워크 env 로더를 쓰세요.

## 다음

* [클라이언트 옵션](https://docs.nora.my/ko/sdk/client-options.md) 전체 옵션 (timeout · retries · logger · custom fetch · trigger header override).
* [실행](https://docs.nora.my/ko/sdk/execution.md) Flow 호출 시작.
* [에러](https://docs.nora.my/ko/sdk/errors.md) 인증 실패가 어떻게 드러나는지, 무엇을 잡아야 하는지.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.