# ワークスペースと組織

> Nodaro CLI コマンドが操作するワークスペースを選び、組織を作成し、クラスやチームを一括招待して、使用状況レポートをテーブル、JSON、CSV で書き出します。

Source: https://nodaro.ai/ja/docs/developers/cli/workspaces

**ワークスペース**は、組織機能のあるインスタンスで作業が置かれる場所です。学校ならクラス、会社ならチームにあたります。ここで扱う Nodaro CLI コマンドは、コマンドが操作するワークスペースの選択、組織とそのメンバーの管理、使用状況レポートの書き出しを行います。組織は Nodaro Cloud の機能で、インスタンスごとに有効化されます。組織機能のないインスタンスでは、これらのコマンドは使えません。

## コマンドが操作するワークスペースを選ぶ
ブラウザーでは、どの画面にも現在のワークスペースが表示されます。ターミナルには何も表示されないため、CLI ではその選択を明示的に行います。設定する方法は 3 つあり、それぞれが下の方法より優先されます。

```bash
nodaro --workspace <id> workflows list   # 1. this command only
export NODARO_WORKSPACE=<id>             # 2. this shell, or this CI job
nodaro workspace use <id>                # 3. saved on the profile until you change it
```

- `nodaro workspace current` は、いまどこにいるか、そして 3 つのうちどれで決まったかを示します。これがないと、引き継がれた `NODARO_WORKSPACE` が、保存されたワークスペースとまったく同じに見えてしまいます。
- `nodaro workspace use` は、保存する前にそのワークスペースを確認するので、入力ミスはその場で 1 回だけ失敗し、以降のすべてのコマンドで失敗することはありません。
- `nodaro workspace clear` は、保存されたワークスペースを削除します。
- ワークスペースを何も設定していない場合、すべての作業は個人スペースで行われます。

ワークスペースが決めるのは、**一覧取得**がどのワークスペースから読み取るかと、**作成**したものがどこに置かれるかです。アクセス権を決めることはありません。ID で指定するものの読み取り、更新、削除、実行は、そのアイテム自身が属するワークスペースに従います。そのため、`--workspace` を付け忘れても自分の作業が見えなくなることはなく、間違ったワークスペースを指定しても、ほかの人の作業にアクセスすることはできません。

## ワークスペースのコマンド
```bash
nodaro workspace list [--json]
nodaro workspace current [--json]
nodaro workspace use <id> [--json]
nodaro workspace clear
nodaro workspace get <id> [--json]
nodaro workspace members <id> [--limit <n>] [--cursor <token>] [--json]
nodaro workspace join <code> [--json]
nodaro workspace usage [id] [--from YYYY-MM-DD] [--to YYYY-MM-DD] [--tz <iana>] [--group-by member|model|day|none] [--user <id>] [--limit <n>] [--cursor <token>] [--csv] [--json]
```

`workspace join` は、ワークスペースの管理者が共有する 8 文字の参加コードを受け取ります。参加コードを使うと、1 つのワークスペースの通常のメンバーになります。

## 組織のコマンド
```bash
nodaro org list [--json]
nodaro org get <id> [--json]
nodaro org create --name <name> --kind school|team [--slug <slug>] [--accept-terms] [--json]
nodaro org members <orgId> [--limit <n>] [--cursor <token>] [--json]
nodaro org invite <orgId> --email a@x.com --email b@x.com [--role admin|member] [--workspace <id>] [--workspace-role admin|member] [--json]
nodaro org invitations <orgId> [--status open|accepted|revoked|expired] [--limit <n>] [--cursor <token>] [--json]
nodaro org revoke <invitationId> [--json]
nodaro org audit <orgId> [--limit <n>] [--cursor <token>] [--json]
nodaro org usage <orgId> [--from YYYY-MM-DD] [--to YYYY-MM-DD] [--tz <iana>] [--group-by workspace|member|model|day|none] [--workspace <id>] [--user <id>] [--limit <n>] [--cursor <token>] [--csv] [--json]
```

- `org create --kind school` には `--accept-terms` が必要です。オーナーが、生徒を登録する権限を持っていることを表明するものです。
- 新しい組織は、通常は承認待ちの状態で始まり、プラットフォームが承認すると有効になります。それまでは、組織内の何も変更できません。
- `org revoke` は招待を取り消し、そのリンクは使えなくなります。
- `org audit` は、組織の監査ログを一覧表示します。

## メンバーを招待する
クラスやチームをインスタンスに迎え入れるのは、一度限りの一括作業であり、`nodaro org invite` はそのために作られています。`--email` を 1 人につき 1 回繰り返し、必要であれば全員を 1 つのワークスペースに配属できます。

```bash
nodaro org invite org_abc --email ada@school.edu --email grace@school.edu --workspace ws_xyz --workspace-role member
```

コマンドは、アドレスごとに 1 行を表示し、そのアドレスにメールが送信されたかどうかを示します。メールプロバイダーのない環境では、誰にもメールを送信できません。その場合、行には `not emailed (link_only)` と表示され、次の行に招待リンクが記載されます。

そのリンクは、自分で送ってください。そうしないと、招待は作成されていても、誰もその招待を利用できません。招待の有効期限は 14 日間です。

## 使用状況レポート
`nodaro org usage` と `nodaro workspace usage` は、指定した期間に、誰が何にどれだけのクレジットを使ったかを答えます。

- `--from` と `--to` は、両端を含む日付で、`YYYY-MM-DD` の形式で書きます。`--tz` は、日単位の集計のタイムゾーンを設定します。デフォルトは、ターミナルのタイムゾーンです。
- `--group-by` は、レポートを `workspace`（組織のレポートのみ）、`member`、`model`、`day` のいずれかでグループ化します。`none` では、個々の実行を新しい順に一覧表示します。
- デフォルトの出力は、合計行の付いたテーブルです。`--json` は完全なレポートを表示し、`--csv` は標準出力に CSV を書き出すので、そのままファイルにリダイレクトできます。

```bash
nodaro org usage org_abc --from 2026-09-01 --to 2026-09-30 --group-by member --csv > september.csv
```

通常のワークスペースのメンバーには、自分の使用状況だけが表示されます。ワークスペースの管理者には、そのワークスペースの全員分が表示され、組織のレポートは、オーナーと組織の管理者のためのものです。

## Frequently asked questions

### Nodaro CLI を、特定のワークスペースで動作させるには、どうすればよいですか？

1 つのコマンドだけなら --workspace に ID を指定し、シェルや CI ジョブなら NODARO_WORKSPACE を設定し、プロファイルに保存するなら nodaro workspace use を使います。フラグは変数より優先され、変数は保存されたワークスペースより優先されます。

### 間違ったワークスペース ID を指定すると、ほかの人の作業が見えてしまいますか？

いいえ。ワークスペースが決めるのは、一覧をどこから読み取るかと、新しい作業がどこに置かれるかだけです。ID で指定するものへのアクセス権は、そのアイテム自身が属するワークスペースで決まるので、間違ったワークスペースを指定しても、そのコマンドが無駄になるだけです。

### nodaro org invite が、メールを送信せずにリンクを表示したのは、なぜですか？

その環境にメールプロバイダーが設定されていないか、配信に失敗したためです。招待自体は作成されていますが、そのリンクを自分で相手に送るまで、誰もその招待を利用できません。

### 1 か月分の使用状況を CSV で書き出すには、どうすればよいですか？

組織 ID、--from と --to の日付、member などの --group-by の値、--csv を指定して nodaro org usage を実行し、出力をファイルにリダイレクトします。
