> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/ja/serufuhosuto/enterprise/deployment-manager.md).

# Deployment Manager

## 概要

Roboflow Deployment Manager を使用すると、エッジデバイス上でコンピュータービジョンモデルを簡単にセットアップ、デプロイ、管理できます。モデルの学習とワークフローの構築後、デプロイのスケール拡大のためのオールインワンソリューションを提供します。

Deployment Manager では次のことができます:

1. 新しいデバイスを [Roboflow Inference サーバー](/deployment/ja/serufuhosuto/self-hosted.md).
2. でセットアップする。
3. デプロイ [ワークフローを](https://docs.roboflow.com/workflows) エッジで実行する。
4. デプロイ済みのエッジデバイスのログ、ストリーム状態、テレメトリを監視する。

{% hint style="warning" %}
Deployment Manager は Enterprise 顧客限定で利用できます。 [Roboflow の営業チームにお問い合わせいただき](https://roboflow.com/sales) この機能の詳細と、デプロイを大規模に管理するための利用方法をご確認ください。
{% endhint %}

<figure><img src="/files/2b57efd83fc675c6a609cd9914e4bda862ab41d6" alt=""><figcaption></figcaption></figure>

### 主な要件:

Deployment Manager は、Roboflow がサポートするハードウェア向けに構築されています:

* 対応: Roboflow 経由で購入したハードウェア
* 未対応（自己責任で使用）: NVIDIA Jetson、NVIDIA GPU 搭載の Debian 系 Linux を実行する x86 マシン
* まだ対応していません: Mac または Windows ベースのシステム

セットアップおよび継続運用のため、デバイスはインターネットに接続されている必要があり、リモート管理と監視のために Roboflow へ継続的にアクセスできる必要があります。

### エッジサービス

推論サーバーに加えて、デバイスでは追加の Roboflow [サービス](/deployment/ja/serufuhosuto/enterprise/deployment-manager/services.md)を実行できます。デバイスの「設定」タブから追加・構成します。詳細は [デバイス設定を更新](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/update-device-configuration.md).

* [Event Store](/deployment/ja/serufuhosuto/enterprise/deployment-manager/services/event-store.md) は、デバイス上に推論イベントを保存し、自動保持と任意のクラウドバックアップを提供します。
* [OPC UA サーバー](/deployment/ja/serufuhosuto/enterprise/deployment-manager/services/opc-ua-server.md) はデータを OPC UA タグとして PLC や SCADA システムに公開します。
* [PLC リレー](/deployment/ja/serufuhosuto/enterprise/deployment-manager/services/plc-relay.md) は Allen-Bradley、Modbus TCP、または Siemens S7 を介して PLC タグを読み書きします。
* [RTSP シミュレーター](/deployment/ja/serufuhosuto/enterprise/deployment-manager/services/rtsp-simulator.md) は、アップロードされた動画ファイルを RTSP ソースとしてストリーミングし、テストに使用します。

各サービスはデバイスのアドレス上で独自の HTTP API を提供します。共通するベース URL、認証、エラー形式のルールについては [サービス](/deployment/ja/serufuhosuto/enterprise/deployment-manager/services.md#using-the-apis) を参照してください。

## ガイド

### セットアップ

デバイスをオンラインにして Workflows を実行するには、 [セットアップ](/deployment/ja/serufuhosuto/enterprise/deployment-manager/setting-up.md) ガイドを順番に進めてください。

| ガイド                                                                                                                 | 説明                                 |
| ------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| [ハードウェア要件](/deployment/ja/serufuhosuto/enterprise/deployment-manager/setting-up/hardware-requirements.md)           | 対応ハードウェア、カメラ、ネットワーク、外向き通信の要件。      |
| [デバイスを追加](/deployment/ja/serufuhosuto/enterprise/deployment-manager/setting-up/add-a-device.md)                     | 新しいエッジデバイスをプロビジョニングし、アカウントに登録します。  |
| [ストリームを追加](/deployment/ja/serufuhosuto/enterprise/deployment-manager/setting-up/add-a-stream.md)                    | Workflow を実行するカメラストリームを構成します。      |
| [デバイスアラートを設定](/deployment/ja/serufuhosuto/enterprise/deployment-manager/setting-up/set-up-device-alerts.md)         | 接続、ディスク、FPS の問題に対するメールアラートを有効にします。 |
| [メンテナンスウィンドウを設定](/deployment/ja/serufuhosuto/enterprise/deployment-manager/setting-up/setup-maintenance-windows.md) | デプロイに影響する変更をいつ反映するかをスケジュールします。     |

### 変更の適用

この [変更の適用](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes.md) ガイドでは、セットアップ後にデバイスやストリームの更新、再構成、削除を行う方法を説明します。

| ガイド                                                                                                                                    | 説明                                           |
| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
| [デバイス設定を更新](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/update-device-configuration.md)                   | デバイス設定、サービスのバージョン、追加サービスを管理します。              |
| [デバイスネットワークを構成](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/configure-device-network.md)                  | IP アドレス、ゲートウェイ、DNS、ホスト名をクラウドから設定します。         |
| [AI1 カメラ設定を構成](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/configure-ai1-camera-settings.md)              | 露出、ゲイン、フォーカス、その他の AI1 カメラ設定をライブで調整します。       |
| [カメラに静的 IP を設定](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/set-camera-static-ip.md)                      | GigE Basler または Lucid カメラに永続的な静的 IP を割り当てます。 |
| [PoE ポートをソフトリセット](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/soft-reset-poe-port.md)                     | PoE ポートの電源を再投入して、応答しなくなったカメラリンクを復旧します。       |
| [ストリームを一時停止・再開](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/stop-a-stream.md)                             | 実行中のストリームを一時的に停止し、後で再開します。                   |
| [ストリームをトリガー](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/trigger-a-stream.md)                             | トリガーされたストリームに対して、オンデマンドで Workflow を実行します。    |
| [ストリームを終了](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/delete-a-stream.md)                                | ストリームとその設定を完全に削除します。                         |
| [Deployment Manager を再デプロイ](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/redeploy-deployment-manager.md)   | 障害後にデバイスの設定を復元します。                           |
| [デバイスを削除](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/delete-a-device.md)                                 | もう使用しないデバイスを完全に削除します。                        |
| [Deployment Manager 用 API キー](/deployment/ja/serufuhosuto/enterprise/deployment-manager/making-changes/api-keys-for-device-manager.md) | デバイス API キーがどのように生成、スコープ設定、失効されるかについて説明します。  |

### 監視

この [監視](/deployment/ja/serufuhosuto/enterprise/deployment-manager/monitoring.md) ガイドでは、ストリーム状態、ログ、リソース、Event Store の健全性を確認する方法を示します。

| ガイド                                                                                                                   | 説明                                     |
| --------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| [ストリームを表示](/deployment/ja/serufuhosuto/enterprise/deployment-manager/monitoring/view-a-stream.md)                     | ストリームの状態、最新フレーム、Workflow の詳細を表示します。    |
| [デバイスログを表示](/deployment/ja/serufuhosuto/enterprise/deployment-manager/monitoring/view-device-logs.md)                 | Roboflow サービスのログを検索、フィルタリング、ダウンロードします。 |
| [リソースモニターを表示](/deployment/ja/serufuhosuto/enterprise/deployment-manager/monitoring/view-the-resource-monitor.md)      | ディスク、メモリ、CPU、GPU、サービスコンテナの健全性を監視します。   |
| [Event Store の状態を表示](/deployment/ja/serufuhosuto/enterprise/deployment-manager/monitoring/view-event-store-status.md) | Event Store の使用状況、バックアップ進行状況、履歴を監視します。 |

## HTTP API

Deployment Manager API を使用すると、Roboflow Deployment Manager (RFDM) デバイスをプログラムから監視・管理できます。

すべてのエンドポイントは `/:workspace/devices/v2` の下に、パブリック API ホスト（`https://api.roboflow.com`）で配置されています。読み取りエンドポイントには [スコープ付き API キー](https://docs.roboflow.com/reference/authentication/authentication/scoped-api-keys) が必要で、 `device:read` スコープを持っている必要があります。デバイスを変更するエンドポイントには `device:update`が必要です。明示的なスコープ一覧がない Workspace API キーには、すべてのスコープが暗黙的に付与されます（従来の動作）。明示的な `scopes` 配列を持つキーには、関連するスコープを含める必要があります。

Deployment Manager API を使うと、次のことができます:

* [デバイス一覧と取得](#list-and-get-devices)
* [デバイスを作成](#create-a-device)
* [デバイス設定](#device-config)
* [デバイスコマンド](#device-commands)
* [デバイスストリーム](#device-streams)
* [デバイスログとテレメトリ](#device-logs-and-telemetry)
* [デバイスイベント](#device-events)
* [デバイスサービス](#device-services)

任意のエッジサービス（Event Store、PLC Relay、RTSP Simulator、OPC UA Server）は、 `api.roboflow.com` ではなくデバイスのアドレス上で独自の HTTP API を提供します。Roboflow API キーは受け付けず、認証やエラー形式も以下とは異なります。詳細は [サービス](/deployment/ja/serufuhosuto/enterprise/deployment-manager/services.md#using-the-apis).

### 認証

すべてのエンドポイントは、次のいずれかの方法で Workspace API キーを受け付けます:

* クエリ文字列: `?api_key=YOUR_API_KEY`
* ヘッダー: `Authorization: Bearer YOUR_API_KEY`

#### デバイススコープ付き API キー

特定のデバイス用に発行された API キー（たとえばインストール時に RFDM により作成）は、そのデバイスに限定されます。呼び出せるのは、 `:deviceId` パスパラメータがキーに紐づくデバイスと一致するルートのみです。ワークスペース全体の一覧・作成エンドポイントでは **403** が返り、 `:deviceId` 一致しないパス

### ワークスペース間の分離

Workspace API キーは、自分のワークスペースに属するデバイスのみ読み取りまたは変更できます。別のワークスペースが所有するデバイス ID へのリクエストは、ID が他の点では有効でも **404**を返します。

### エラー

| ステータス | 意味                                                                                                                                                |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| 400   | 無効なクエリパラメータ（未知の `time_period`、形式不正の cursor または date、無効な `direction`など）または無効なリクエストボディ。                                                             |
| 401   | API キーがありません、または無効です。                                                                                                                             |
| 403   | 別のデバイスを対象とするデバイススコープ付き API キー、ワークスペース全体の一覧/作成ルート、複製時に別のワークスペースからのソースデバイス、または機能ゲートされたリクエストが拒否された場合（たとえば AI1 の作成や `offline_mode` がワークスペースで有効でない場合）。 |
| 404   | デバイス、ストリーム、設定、またはソースデバイスが見つかりません。別のワークスペースが所有するデバイス ID に対する読み取りリクエストも 404 を返します。                                                                  |
| 429   | レート制限を超えました。ログは IP ごとに 1 分あたり 5 リクエスト、全体で 1 分あたり 50 リクエストに制限されます。テレメトリの読み取りはデバイスごとに 1 分あたり 60 リクエスト、10 秒間で 10 リクエストのバーストに制限されます。                  |

エラーレスポンスは 2 種類の形式のいずれかを使用します:

* ハンドラーレベルのエラー（通常、ハンドラ自体から返される 400、403、404、429）は `{ "error": "<message>" }`.
* 認証およびワークスペース検証の失敗（通常 401）は、構造化された `error` オブジェクトを返します: `{ "error": { "message": "...", "status": 401, "type": "OAuthException", "hint": "..." } }`.

ログのレートリミッターは、発火した場合にプレーンな文字列本文（JSON ではない）も返します。 **429**.

### デバイス一覧と取得

#### デバイス一覧

ワークスペースに登録されているすべてのデバイスを一覧表示します。デバイススコープ付き API キーではこのエンドポイントを呼び出せず、 **403**.

**必要なスコープ:** `device:read`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**リクエスト例**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2?api_key=$ROBOFLOW_API_KEY"
```

**レスポンス例**

```json
{
  "data": [
    {
      "id": "abc123",
      "name": "factory-floor-cam-1",
      "status": "online",
      "last_heartbeat": "2026-04-28T12:00:00.000Z",
      "platform": "Linux",
      "platform_release": "5.10.104-tegra",
      "platform_version": "#1 SMP PREEMPT ...",
      "architecture": "aarch64",
      "hostname": "jetson-01",
      "rfdm_version": "1.2.3",
      "type": "jetson",
      "hardware": {
        "processor": "aarch64",
        "gpu": null,
        "total_memory_mb": null,
        "total_disk_space_mb": 124426534912
      },
      "tags": ["production", "line-3"],
      "created_at": "2026-01-15T08:30:00.000Z"
    }
  ]
}
```

この `status` フィールドは `online` 直近 5 分以内に heartbeat を受信していた場合は `offline` 、古い場合は `unknown` 、heartbeat が一度も記録されていない場合はそうなります。新規プロビジョニングされたデバイスは、最初の heartbeat より前でも一覧に表示されます。その間は `status` は `unknown` であり、監視由来のほとんどのフィールドは `null`.

{% hint style="warning" %}
`hardware.total_disk_space_mb` はデバイスから報告される生の値です。\_mb という接尾辞にもかかわらず、RFDM が報告するデバイスは現在この値をバイト単位で返します（たとえば `_mb` は約 124 GB のディスクを示します）。単位はデバイス定義として扱ってください。 `124426534912` Get Device
{% endhint %}

#### ID で単一のデバイスを取得します。デバイスが存在しないか、別のワークスペースに属している場合は

を返します。 **404** curl "<https://api.roboflow.com/{workspace}/devices/v2/{deviceId}?api\\_key=$ROBOFLOW\\_API\\_KEY>"

**必要なスコープ:** `device:read`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**リクエスト例**

```bash
レスポンス本文は一覧エンドポイントの単一アイテムと一致します（
```

data `配列でラップされません）。` 新しいデバイスをワークスペースに作成し、インストールに必要な識別子を返します。デバイススコープ付き API キーはこのエンドポイントを呼び出せず、

### デバイスを作成

curl -X POST "<https://api.roboflow.com/{workspace}/devices/v2?api\\_key=$ROBOFLOW\\_API\\_KEY>" \ **403**.

**必要なスコープ:** `device:update`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2" method="post" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**リクエスト例**

```bash
-H "Content-Type: application/json" \
  -d '{"device_name": "factory-floor-cam-2", "device_type": "edge"}'
  "deviceId": "abc456",
```

**レスポンス例**

```json
{
  "installId": "inst_xyz789"
  返された
}
```

を使用して `installId` Roboflow Deployment Manager インストーラーでデバイスをブートストラップします。

#### AI1 デバイスに関する注意

* 設定で `device_type` を `"ai1"` にすると、ワークスペースで `deviceAio` 機能が有効である必要があります。そうでない場合、リクエストは **403**.
* `offline_mode` は、 `roboflowLiteMode`が有効なワークスペース上の AI1 デバイスにのみ有効です。その他の組み合わせでは **400** または **403**.
* AI1 デバイスで、既存デバイスを複製せず、 `workflow_id`を指定しない場合、スラッグ化された `device_name` には少なくとも 1 つの英数字が含まれている必要があります。そうでない場合、リクエストは **400**.
* AI1 + offline mode が適用される場合、レスポンスにはオフラインプロビジョニング用 QR ペイロードをエンコードした `offlineProvisioningQrPayload` フィールドも含まれます。

#### 複製に関する注意

に `sourceDeviceId` が指定されると、新しいデバイスはソースデバイスの設定のコピーから作成されます。ソースデバイスはリクエストと同じワークスペースに属している必要があり、そうでない場合はリクエストは **403**を返します。存在しない `sourceDeviceId` は **404**.

### デバイス設定

#### ワークスペース既定設定を取得

ワークスペースレベルの既定デバイス設定を返します。これは、ワークスペースの config patch（存在する場合）をマージしたベース既定設定です。新しいデバイスをプロビジョニングしてから `POST /:workspace/devices/v2`.

**必要なスコープ:** `device:read`

{% hint style="info" %}
これはワークスペース全体のエンドポイントです。デバイススコープ付き API キーは **403** がないため `:deviceId` パスの中
{% endhint %}

**リクエスト例**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/default-config?api_key=$ROBOFLOW_API_KEY"
```

**レスポンス例**

```json
{
  "config": {
    "version": "1.0.0",
    "config": {
      "inference": { "confidence": 0.7, "threshold": 0.3 },
      "device_type": "edge"
    },
    "services": {}
  },
  "patch": {
    "config": {
      "inference": { "confidence": 0.7 }
    }
  }
}
```

* `config` — マージされた結果（ベース既定 + ワークスペースパッチ）。
* `patch` — ワークスペースに保存されたパッチ。カスタムパッチがない場合は空オブジェクト。 `{}` ワークスペースにカスタムパッチがない場合。

#### 設定を取得

デバイスの現在のランタイム設定を返します。レスポンスの形は Roboflow Deployment Manager (RFDM) の config 仕様に準拠します。

**必要なスコープ:** `device:read`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/config" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**リクエスト例**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/config?api_key=$ROBOFLOW_API_KEY"
```

レスポンスは完全な設定ドキュメントであり、次のトップレベルフィールドを含みます（ただし、これらに限定されません）:

* `device_id`, `device_name`
* `workspace_id`
* `version`, `last_updated`, `last_updated_at`, `created_at`
* `config` （デバイスのランタイム設定ツリー。以下を含む） `device_type`, `stream`、および `offline_mode`)
* `services` （各サービスのコンテナ定義。以下を含む） `image`, `volumes`、および `environment_variables`)
* `environment_variables` （トップレベルの環境変数。以下に加えて、 `services`)
* `production_mode`, `last_automatic_update`, `updated`, `updated_by`, `$schema`, `id`

RFDM によって書き込まれた追加フィールドが表示されることもあります。レスポンスの形は拡張可能なものとして扱い、必要なフィールドだけに依存してください。

返します **404** デバイスが存在しないか、あなたのワークスペースに属していない場合、または設定が保存されていない場合。

{% hint style="warning" %}
レスポンスには、作成されたままの完全な設定が含まれます。各サービスの `environment_variables` および設定に埋め込まれた統合認証情報は、マスクされずに返されます。レスポンス本文は機密情報として扱い、プレーンテキストでログ出力しないでください。
{% endhint %}

#### 設定履歴

デバイスの過去の設定リビジョンを、新しいものから順に一覧表示します。

**必要なスコープ:** `device:read`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/config/history" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**リクエスト例**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/config/history?api_key=$ROBOFLOW_API_KEY&limit=10"
```

**レスポンス例**

```json
{
  "data": [
    {
      "revision_id": "rev_abc",
      "created_at": "2026-04-20T14:30:00.000Z",
      "created_by": "user_123"
    }
  ],
  "pagination": {
    "next_cursor": "...",
    "has_more": true,
    "limit": 10
  }
}
```

不正な `cursor` は **400** を `{ "error": "Invalid cursor format" }`.

### デバイスコマンド

Web アプリから開始する操作（例: デバイスの再起動、ストリームの一時停止、カメラの検索）はコマンドとしてキューに入れられます。デバイスは次回のポーリングでそれを取得します。

#### 保留中のコマンドを取得

デバイス待ちのコマンドを、古いものから順に返します。読み取りでは削除されません。コマンドはデバイスが実行したと報告するまでキューに残るため、コマンド実行中に再起動したデバイスは再び同じコマンドを受け取ります。5 分以上前にキューに入れられたコマンドは期限切れとなり、送信されません。後から実行しても、期待した内容と一致しなくなるためです。

**必要なスコープ:** `device:read`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/commands" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

#### コマンドをキューに入れる

デバイスが次回のポーリングで実行するコマンドをキューに入れます。これは、デバイスの再起動やストリーム開始時に Web アプリが行う処理を API から実行するものです。

**必要なスコープ:** `device:update`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/commands" method="post" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

### デバイスストリーム

#### ストリーム一覧

デバイスに設定されているすべてのストリームを一覧表示します。

**必要なスコープ:** `device:read`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/streams" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**リクエスト例**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/streams?api_key=$ROBOFLOW_API_KEY"
```

**レスポンス例**

```json
{
  "data": [
    {
      "id": "stream_abc",
      "name": "entrance-cam",
      "status": "running",
      "pipeline_id": "pipe_123",
      "workflow_id": "wf_456",
      "source": "rtsp://192.168.1.100:554/live",
      "started_at": "2026-04-28T10:00:00.000Z",
      "last_event_at": "2026-04-28T12:30:00.000Z",
      "camera_fps": 29.97,
      "inference_fps": 12.4,
      "sharpness": 82,
      "error": null,
      "error_code": null,
      "error_message": null,
      "error_retryable": null
    }
  ]
}
```

**ストリームエラー**

ストリームが失敗した場合、 `error_code`, `error_message`、および `error_retryable` 障害の内容を示します。これらは最新のストリームステータスイベントに由来するため、ストリームが復旧すると消去されます。 `error_code` 自分のコードで分岐させるために、 `error_retryable` デバイスがストリームを自動的に再試行するかを確認するために。古い `error` フィールドは互換性のために残されています。

**ソースのサニタイズ**

この `source` フィールドは、返される前に常にサニタイザを通されます:

* ソースがURLの場合、任意の `userinfo` (`scheme://user:pass@host/...`) は削除されます。例えば、 `rtsp://admin:password@192.168.1.100:554/live` となります `rtsp://192.168.1.100:554/live`.
* ソースがオブジェクトの場合、小文字名が `password`, `passwd`, `secret`, `api_key`, `apikey`, `auth`, `authorization`, `token`、または `access_token` はレスポンスから除外されます。その他のキーはすべて保持されます。
* 配列とネストしたオブジェクトは再帰的にサニタイズされます。

#### ストリームを取得

単一のストリームを取得します。返します **404** ストリームがデバイス上に存在しない場合、またはデバイスが存在しないかワークスペースに属していない場合。

**必要なスコープ:** `device:read`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/streams/{streamId}" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**リクエスト例**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/streams/{streamId}?api_key=$ROBOFLOW_API_KEY"
```

data `配列でラップされません）。` 新しいデバイスをワークスペースに作成し、インストールに必要な識別子を返します。デバイススコープ付き API キーはこのエンドポイントを呼び出せず、

#### パイプラインステータスを報告

デバイスが実行している推論パイプラインを報告します。報告された各パイプラインは、FPS とシャープネスの指標とともに対応するストリームを更新します。デバイス設定で宣言されたストリームは stream key で照合されるため、デバイスが報告すると provisioning として表示されなくなります。

device-manager コンテナなしで実行されるデバイスには RFDM がこれを POST します。そのコンテナを実行しているデバイスは healthcheck で同じデータを報告するため、このエンドポイントは不要です。

**必要なスコープ:** `device:update`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/pipelines-status" method="post" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

推論サーバーの `/inference_pipelines/list` レスポンスをそのまま送信できます。例えば、 `{"success": true, "data": {"pipelines": [...]}}`その本文に `"success": false`が含まれている場合、デバイスはパイプラインの一覧取得に失敗しているため、このリクエストは no-op となり、既存のストリームには影響しません。

### デバイスログとテレメトリ

#### ログ

ページネーションされたデバイスログを返します。

**必要なスコープ:** `device:read`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/logs" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**リクエスト例**

**レート制限:** ワークスペースごとに1分あたり120リクエストです。ログの読み取りとログの取り込みは別々のレート制限バケットを使用するため、ログのポーリングは取り込みクォータにカウントされません（逆も同様です）。

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/logs?api_key=$ROBOFLOW_API_KEY&limit=50"
```

**レスポンス例**

```json
{
  "data": [
    {
      "timestamp": "2026-04-28T12:01:00.000Z",
      "service": "inference",
      "severity": "INFO",
      "message": "Model loaded successfully"
    }
  ],
  "pagination": {
    "next_cursor": "2026-04-28T12:01:00.000Z",
    "has_more": true,
    "limit": 50
  }
}
```

**レート制限**

このエンドポイントのレート制限は **IPアドレスごとに1分あたり5リクエスト** および **全体で1分あたり50リクエスト**。超過したリクエストは **429**.

#### テレメトリ

固定時間ウィンドウでバケット化された、デバイスの集約ハードウェア指標（CPU、メモリ、ディスク、GPU）とストリームごとの FPS を返します。

**必要なスコープ:** `device:read`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/telemetry" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**リクエスト例**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/telemetry?api_key=$ROBOFLOW_API_KEY&time_period=24h"
```

バケットサイズは期間ごとに固定です:

| `time_period` | `bucket_interval` | `fill_interval_seconds` |
| ------------- | ----------------- | ----------------------- |
| `1時間`         | `2分`              | 120                     |
| `24時間`        | `30分`             | 1800                    |
| `7日`          | `4時間`             | 14400                   |
| `14日`         | `8時間`             | 28800                   |

**レスポンス例**

```json
{
  "time_period": "24h",
  "bucket_interval": "30 MINUTE",
  "fill_interval_seconds": 1800,
  "buckets": [
    {
      "bucket_start": "2026-04-28T00:00:00.000Z",
      "cpu_pct": 42.5,
      "used_memory_mb": 3200,
      "total_memory_mb": 7860,
      "used_disk_space_mb": 15000,
      "total_disk_space_mb": 29000,
      "gpu_pct": 78.2
    }
  ]
}
```

指定したウィンドウ内でテレメトリを受信しなかったバケットも返され、それぞれのメトリックフィールドは `null`.

**レート制限**

このエンドポイントのレート制限はデバイスごとに **1分あたり60リクエスト** に加えて **10秒あたり10リクエスト** のバースト制限があります。超過したリクエストは **429**。デバイスごとの同じテレメトリクォータは、そのデバイスのテレメトリ取り込み経路と共有されるため、過剰な読み取りは同じデバイスの取り込みに影響する可能性があります。

### デバイスイベント

デバイスとストリームのライフサイクルイベント（例: デバイスの起動、ストリームの開始と停止、エラー、設定変更）を返します。

**必要なスコープ:** `device:read`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/events" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

**リクエスト例**

```bash
curl "https://api.roboflow.com/{workspace}/devices/v2/{deviceId}/events?api_key=$ROBOFLOW_API_KEY&limit=50"
```

**レスポンス例**

```json
{
  "data": [
    {
      "id": "evt_abc123",
      "event": "device.boot",
      "entity_type": "device",
      "entity_id": "abc123",
      "event_description": "Device started up",
      "error_code": null,
      "metadata": { "source": "boot-loop" },
      "device_timestamp": "2026-04-28 10:00:00",
      "server_timestamp": "2026-04-28 10:00:01",
      "event_end_timestamp": null
    }
  ],
  "pagination": {
    "next_cursor": "...",
    "prev_cursor": "...",
    "has_more": true,
    "limit": 50
  }
}
```

この `device_timestamp`, `server_timestamp`、および `event_end_timestamp` フィールドは次の形式でフォーマットされます `YYYY-MM-DD HH:MM:SS[.SSS]` UTC です。これらはこの API の他のタイムスタンプのように ISO-8601 に正規化されません。

`event_end_timestamp` エポックゼロ文字列として返される場合もあります `"1970-01-01 00:00:00.000"` （代わりに `null`）イベントに記録された終了タイムスタンプがない場合。

デフォルトでは、フィードは繰り返しイベントを状態変化にまとめるため、同じイベント名を再利用する周期的テレメトリは表示されません。次を指定してください: `dedupe=false` とともに `entity_type` および `entity_id` すべての生の行を読み取るには。時系列で1つの値をグラフ化するには、 [サービス系列エンドポイント](#device-services) を代わりに使用してください。entity ID は自動で解決されます。

### デバイスサービス

返します [services](/deployment/ja/serufuhosuto/enterprise/deployment-manager/services.md) デバイスが実行しているサービスを、そのライブステータス（コンテナ状態、イメージバージョン、PLC 接続状態や Event Store 容量などの種類ごとのステータス）と結合して返します。

**必要なスコープ:** `device:read`

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/services" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/services/{serviceName}" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

これらのエンドポイントを使用してフリートをポーリングします。次を要求してください: `include=status` サービスが稼働して報告していることを確認し、さらに `include=metrics` で CPU とメモリを確認します。

{% hint style="info" %}
`include=config` 保存されている環境変数の値をそのまま返し、それらには broker パスワードや API キーなどの認証情報が含まれることがよくあります。そのためデフォルトではオフになっています。レスポンスに `config` を含むものは機密情報として扱ってください。
{% endhint %}

サービスは、service kind に由来する entity ID でテレメトリを報告します。そのため、同じ種類の 2 つのサービスが1台のデバイス上にある場合、それぞれに独自の `DEVICE_EVENT_ENTITY_ID`。そうなると、API は共有 ID を `signal_conflicts` に列挙し、 `status` として `null`、 `.`, `/`, `*`, `~`, `[`、および `]` どのコンテナが読み取り値を送信したのか判別できないためです。カスタム entity ID には英字、数字、ハイフン、アンダースコアのみを使用できます。文字

#### サービスメトリック系列

1つのサービスの1つのメトリックを時系列で返し、グラフ化できます。

{% openapi src="/files/875bfb9d5cb6123044c119d00cb0dca6857749d2" path="/{workspace}/devices/v2/{deviceId}/services/{serviceName}/series" method="get" %}
[deployment-manager.yaml](https://970637113-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-85cc4e20ce421499aecd2d7ed9e9f8c5712e2d7a%2Fdeployment-manager.yaml?alt=media)
{% endopenapi %}

メトリック名は service kind に依存します。未知の `metric` で呼び出すと、400 レスポンスで有効な名前が `valid_values`.

<table data-search="false"><thead><tr><th width="220">サービス種別</th><th>メトリクス</th></tr></thead><tbody><tr><td><code>event_store</code></td><td><code>records</code>, <code>records_percent</code>, <code>images</code>, <code>bytes_used</code>, <code>bytes_percent</code>, <code>backed_up_records</code>, <code>backed_up_bytes_percent</code>, <code>pending_records</code>, <code>pending_bytes</code>, <code>draft_records</code>, <code>oldest_draft_age_seconds</code>, <code>disk_percent_used</code></td></tr><tr><td><code>plc_relay</code></td><td><code>connected</code></td></tr><tr><td><code>opcua_server</code></td><td><code>session_count</code>, <code>refused_total</code></td></tr><tr><td><code>rtsp_simulator</code>, <code>device_hmi</code>, <code>custom</code></td><td>ありません。これらはコンテナの状態とメトリクスのみを報告します。</td></tr></tbody></table>

## MCP サーバー

AI エージェントを次に接続すると [MCP サーバー](https://docs.roboflow.com/agents/mcp-server) これらのツールでエッジデバイスを確認できます:

<table data-search="false"><thead><tr><th width="290">ツール</th><th>説明</th></tr></thead><tbody><tr><td><code>devices_list</code></td><td>ワークスペースに登録されているデバイスを一覧表示します。</td></tr><tr><td><code>devices_get_snapshot</code></td><td>1回の呼び出しでデバイスの現在の完全な状態を取得します。</td></tr><tr><td><code>devices_get_config</code></td><td>デバイスの現在の実行時設定を取得します。</td></tr><tr><td><code>devices_update_config</code></td><td>デバイスの実行時設定を更新します。</td></tr><tr><td><code>devices_streams_list</code></td><td>デバイスに設定されているストリームを一覧表示します。</td></tr><tr><td><code>devices_get_logs</code></td><td>デバイスログを取得します。</td></tr><tr><td><code>devices_get_telemetry</code></td><td>集約ハードウェアメトリクスとデバイスの健全性を取得します。</td></tr></tbody></table>
