> 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/hi/self-hosted/enterprise/deployment-manager.md).

# Deployment Manager

## परिचय

Roboflow Deployment Manager आपको edge devices पर computer vision models को आसानी से सेट अप, डिप्लॉय और प्रबंधित करने देता है। मॉडल को प्रशिक्षित करने और एक workflow बनाने के बाद, यह deployments को बड़े पैमाने पर बढ़ाने के लिए एक all-in-one समाधान प्रदान करता है।

आप Deployment Manager का उपयोग निम्न के लिए कर सकते हैं:

1. के साथ नए डिवाइस सेट अप करें [Roboflow Inference सर्वर](/deployment/hi/self-hosted/self-hosted.md).
2. डिप्लॉयमेंट में उपयोग के लिए कैमरा स्ट्रीम कॉन्फ़िगर करें।
3. डिप्लॉय करें [वर्कफ़्लोज़](https://docs.roboflow.com/workflows) edge पर।
4. डिप्लॉय किए गए edge डिवाइसों के लिए लॉग, स्ट्रीम स्थिति और टेलीमेट्री की निगरानी करें।

{% hint style="warning" %}
Deployment Manager केवल Enterprise ग्राहकों के लिए उपलब्ध है। [Roboflow sales टीम से संपर्क करें](https://roboflow.com/sales) इस सुविधा के बारे में अधिक जानने और यह समझने के लिए कि इसका उपयोग बड़े पैमाने पर आपके deployments को प्रबंधित करने में कैसे किया जा सकता है।
{% endhint %}

<figure><img src="/files/b1d0a6c2b060e2125a9ef57ddaa1e3fe8af0b251" alt=""><figcaption></figcaption></figure>

### मुख्य आवश्यकताएँ:

Deployment Manager Roboflow-समर्थित हार्डवेयर के लिए बनाया गया है:

* समर्थित: Roboflow के माध्यम से खरीदा गया हार्डवेयर
* असमर्थित (अपने जोखिम पर उपयोग करें): NVIDIA Jetson, NVIDIA GPU वाले Debian-आधारित Linux चलाने वाली x86 मशीनें
* अभी समर्थित नहीं: Mac या Windows-आधारित सिस्टम

सेटअप और निरंतर संचालन के लिए डिवाइसों का इंटरनेट से कनेक्ट होना आवश्यक है, और रिमोट प्रबंधन तथा निगरानी के लिए Roboflow तक निरंतर पहुँच होनी चाहिए।

### Edge सेवाएँ

Inference सर्वर के साथ-साथ, एक डिवाइस अतिरिक्त Roboflow [सेवाएँ](/deployment/hi/self-hosted/enterprise/deployment-manager/services.md) चला सकता है। उन्हें डिवाइस के Configuration टैब से जोड़ें और कॉन्फ़िगर करें, जैसा कि इसमें वर्णित है [डिवाइस कॉन्फ़िगरेशन अपडेट करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/update-device-configuration.md).

* [इवेंट स्टोर](/deployment/hi/self-hosted/enterprise/deployment-manager/services/event-store.md) डिवाइस पर inference events को स्वचालित retention और वैकल्पिक cloud backup के साथ संग्रहीत करता है।
* [OPC UA Server](/deployment/hi/self-hosted/enterprise/deployment-manager/services/opc-ua-server.md) PLCs और SCADA सिस्टम के लिए डेटा को OPC UA टैग्स के रूप में प्रकाशित करता है।
* [PLC रिले](/deployment/hi/self-hosted/enterprise/deployment-manager/services/plc-relay.md) Allen-Bradley, Modbus TCP, या Siemens S7 के माध्यम से PLC टैग्स पढ़ता और लिखता है।
* [RTSP सिम्युलेटर](/deployment/hi/self-hosted/enterprise/deployment-manager/services/rtsp-simulator.md) परीक्षण के लिए अपलोड की गई वीडियो फ़ाइल को RTSP स्रोत के रूप में स्ट्रीम करता है।

प्रत्येक सेवा डिवाइस के पते पर अपना स्वयं का HTTP API उपलब्ध कराती है। देखें [सेवाएँ](/deployment/hi/self-hosted/enterprise/deployment-manager/services.md#using-the-apis) साझा बेस URL, प्रमाणीकरण, और error-shape नियमों के लिए।

## मार्गदर्शिकाएँ

### सेटअप

का पालन करें [सेटअप](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up.md) डिवाइस को ऑनलाइन लाने और Workflows चलाने के लिए मार्गदर्शिकाओं को क्रम से पूरा करें।

| मार्गदर्शिका                                                                                                                    | विवरण                                                                         |
| ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| [हार्डवेयर आवश्यकताएँ](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/hardware-requirements.md)            | समर्थित हार्डवेयर, कैमरा, नेटवर्क और आउटबाउंड ट्रैफ़िक आवश्यकताएँ।            |
| [डिवाइस जोड़ें](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/add-a-device.md)                            | एक नया edge डिवाइस प्रोविजन करें और उसे अपने खाते में पंजीकृत करें।           |
| [स्ट्रीम जोड़ें](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/add-a-stream.md)                           | एक कैमरा स्ट्रीम कॉन्फ़िगर करें जो एक Workflow चलाती है।                      |
| [डिवाइस अलर्ट सेट अप करें](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/set-up-device-alerts.md)         | कनेक्टिविटी, डिस्क और FPS समस्याओं के लिए ईमेल अलर्ट सक्षम करें।              |
| [मेंटेनेंस विंडो सेट अप करें](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/setup-maintenance-windows.md) | यह शेड्यूल करें कि डिप्लॉयमेंट को प्रभावित करने वाले परिवर्तन कब प्रभावी हों। |

### परिवर्तन करना

यह [परिवर्तन करना](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes.md) मार्गदर्शिकाएँ सेटअप के बाद डिवाइसों और स्ट्रीमों को अपडेट करने, पुनः कॉन्फ़िगर करने और हटाने को कवर करती हैं।

| मार्गदर्शिका                                                                                                                                        | विवरण                                                                                                 |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| [डिवाइस कॉन्फ़िगरेशन अपडेट करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/update-device-configuration.md)            | डिवाइस सेटिंग्स, सेवा संस्करणों और अतिरिक्त सेवाओं का प्रबंधन करें।                                   |
| [डिवाइस नेटवर्क कॉन्फ़िगर करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/configure-device-network.md)                | क्लाउड से IP addressing, gateway, DNS और hostname सेट करें।                                           |
| [AI1 कैमरा सेटिंग्स कॉन्फ़िगर करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/configure-ai1-camera-settings.md)       | exposure, gain, focus और अन्य AI1 कैमरा सेटिंग्स को लाइव ट्यून करें।                                  |
| [कैमरा के लिए एक स्थिर IP सेट करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/set-camera-static-ip.md)                | GigE Basler या Lucid कैमरा को एक स्थायी स्थिर IP असाइन करें।                                          |
| [PoE पोर्ट का सॉफ्ट रीसेट करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/soft-reset-poe-port.md)                     | अटकी हुई कैमरा लिंक को पुनर्प्राप्त करने के लिए PoE पोर्ट को पावर-साइकिल करें।                        |
| [स्ट्रीम रोकें और फिर शुरू करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/stop-a-stream.md)                          | चल रही स्ट्रीम को अस्थायी रूप से रोकें और बाद में फिर शुरू करें।                                      |
| [स्ट्रीम ट्रिगर करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/trigger-a-stream.md)                                  | ट्रिगर की गई स्ट्रीम पर मांग के अनुसार एक Workflow चलाएँ।                                             |
| [स्ट्रीम समाप्त करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/delete-a-stream.md)                                   | एक स्ट्रीम और उसके कॉन्फ़िगरेशन को स्थायी रूप से हटाएँ।                                               |
| [Deployment Manager को फिर से डिप्लॉय करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/redeploy-deployment-manager.md) | विफलता के बाद डिवाइस के कॉन्फ़िगरेशन को पुनर्प्राप्त करें।                                            |
| [डिवाइस हटाएँ](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/delete-a-device.md)                                          | जिस डिवाइस का आप अब उपयोग नहीं करते, उसे स्थायी रूप से हटाएँ।                                         |
| [Deployment Manager के लिए API कुंजियाँ](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/api-keys-for-device-manager.md)    | डिवाइस API कुंजियाँ कैसे बनाई जाती हैं, उनकी scope कैसे तय होती है, और उन्हें कैसे रद्द किया जाता है। |

### निगरानी

यह [निगरानी](/deployment/hi/self-hosted/enterprise/deployment-manager/monitoring.md) मार्गदर्शिकाएँ दिखाती हैं कि स्ट्रीम स्थिति, लॉग, संसाधन और Event Store स्वास्थ्य कैसे जाँचें।

| मार्गदर्शिका                                                                                                               | विवरण                                                             |
| -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| [स्ट्रीम देखें](/deployment/hi/self-hosted/enterprise/deployment-manager/monitoring/view-a-stream.md)                      | स्ट्रीम की स्थिति, नवीनतम फ़्रेम और Workflow विवरण देखें।         |
| [डिवाइस लॉग देखें](/deployment/hi/self-hosted/enterprise/deployment-manager/monitoring/view-device-logs.md)                | Roboflow सेवाओं से लॉग खोजें, फ़िल्टर करें और डाउनलोड करें।       |
| [Resource Monitor देखें](/deployment/hi/self-hosted/enterprise/deployment-manager/monitoring/view-the-resource-monitor.md) | डिस्क, मेमोरी, CPU, GPU और सेवा कंटेनर स्वास्थ्य की निगरानी करें। |
| [Event Store स्थिति देखें](/deployment/hi/self-hosted/enterprise/deployment-manager/monitoring/view-event-store-status.md) | Event Store उपयोग, बैकअप प्रगति और इतिहास की निगरानी करें।        |

## HTTP API

Deployment Manager API आपको अपने Roboflow Deployment Manager (RFDM) डिवाइसों की प्रोग्रामेटिक रूप से निगरानी और प्रबंधन करने देता है।

सभी endpoints इस के अंतर्गत mounted हैं `/:workspace/devices/v2` पब्लिक API host पर (`https://api.roboflow.com`)। Read endpoints को एक [स्कोप्ड API कुंजी](https://docs.roboflow.com/reference/authentication/authentication/scoped-api-keys) के साथ `device:read` scope; किसी डिवाइस को बदलने वाले endpoints के लिए आवश्यक है `device:update`। स्पष्ट scopes सूची के बिना Workspace API keys को निहित रूप से सभी scopes दिए जाते हैं (पुराना व्यवहार); जिन कुंजियों में एक स्पष्ट `scopes` array शामिल है, उसमें संबंधित scope होना चाहिए।

Deployment Manager API के साथ, आप यह कर सकते हैं:

* [डिवाइसों की सूची और विवरण प्राप्त करें](#list-and-get-devices)
* [डिवाइस बनाएँ](#create-a-device)
* [डिवाइस कॉन्फ़िग](#device-config)
* [डिवाइस कमांड](#device-commands)
* [डिवाइस स्ट्रीम](#device-streams)
* [डिवाइस लॉग और टेलीमेट्री](#device-logs-and-telemetry)
* [डिवाइस इवेंट्स](#device-events)
* [डिवाइस सेवाएँ](#device-services)

वैकल्पिक edge सेवाएँ (Event Store, PLC Relay, RTSP Simulator, OPC UA Server) अपने HTTP APIs डिवाइस के पते पर स्वयं उपलब्ध कराती हैं, न कि इसके माध्यम से `api.roboflow.com`। वे Roboflow API key स्वीकार नहीं करतीं, और उनका प्रमाणीकरण तथा error shapes नीचे दी गई सभी चीज़ों से भिन्न है। देखें [सेवाएँ](/deployment/hi/self-hosted/enterprise/deployment-manager/services.md#using-the-apis).

### प्रमाणीकरण

सभी endpoints किसी workspace API key को निम्न में से किसी एक के माध्यम से स्वीकार करते हैं:

* क्वेरी स्ट्रिंग: `?api_key=YOUR_API_KEY`
* हेडर: `Authorization: Bearer YOUR_API_KEY`

#### डिवाइस-स्कोप्ड API कुंजियाँ

किसी विशिष्ट डिवाइस के लिए बनाई गई API कुंजियाँ (उदाहरण के लिए, इंस्टॉल के दौरान RFDM द्वारा) केवल उसी डिवाइस तक सीमित होती हैं। वे केवल उन routes को कॉल कर सकती हैं जिनका `:deviceId` path parameter कुंजी से बंधे डिवाइस के बराबर होता है। उन्हें प्राप्त होगा **403** workspace-व्यापी list और create endpoints पर, तथा किसी भी `:deviceId` ऐसे path पर जो मेल नहीं खाता।

### क्रॉस-workspace पृथक्करण

एक workspace API key केवल उसी workspace के डिवाइसों को पढ़ या संशोधित कर सकती है। किसी ऐसे device id के अनुरोध जो किसी अन्य workspace का है, वापस लौटाते हैं **404**भले ही id अन्यथा मान्य हो।

### त्रुटियाँ

| स्थिति | अर्थ                                                                                                                                                                                                                                                                        |
| ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 400    | अमान्य query parameter (अज्ञात `time_period`, malformed cursor या date, अमान्य `direction`, आदि) या अमान्य अनुरोध body।                                                                                                                                                     |
| 401    | API key अनुपस्थित या अमान्य है।                                                                                                                                                                                                                                             |
| 403    | किसी अन्य डिवाइस को लक्षित करने वाली device-scoped API key, workspace-व्यापी list/create routes, duplication के दौरान किसी अन्य workspace का source device, या feature-gated अनुरोध अस्वीकृत (उदाहरण के लिए, AI1 निर्माण या `offline_mode` workspace के लिए सक्षम नहीं है)। |
| 404    | डिवाइस, स्ट्रीम, कॉन्फ़िग या source device नहीं मिला। किसी अन्य workspace के स्वामित्व वाले device ids के लिए read अनुरोध भी 404 लौटाते हैं।                                                                                                                                |
| 429    | Rate limit पार हो गया। लॉग प्रति IP प्रति मिनट 5 अनुरोध और वैश्विक रूप से प्रति मिनट 50 अनुरोध तक सीमित हैं; telemetry reads प्रति डिवाइस प्रति मिनट 60 अनुरोध तक सीमित हैं, 10 सेकंड में 10 अनुरोधों के burst के साथ।                                                      |

त्रुटि प्रतिक्रियाएँ दो में से एक रूप का उपयोग करती हैं:

* Handler-level त्रुटियाँ (आमतौर पर handlers से ही आने वाले 400, 403, 404, और 429) लौटाती हैं `{ "error": "<message>" }`.
* प्रमाणीकरण और workspace-validation विफलताएँ (आमतौर पर 401) एक संरचित `error` object: `{ "error": { "message": "...", "status": 401, "type": "OAuthException", "hint": "..." } }`.

logs rate limiter ट्रिगर होने पर अतिरिक्त रूप से एक सादा string body (JSON नहीं) लौटाता है, जब यह ट्रिगर होता है **429**.

### डिवाइसों की सूची और विवरण प्राप्त करें

#### डिवाइस सूचीबद्ध करें

workspace में पंजीकृत हर डिवाइस को सूचीबद्ध करें। Device-scoped API कुंजियाँ इस endpoint को कॉल नहीं कर सकतीं और प्राप्त करती हैं **403**.

**आवश्यक scope:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2" method="get" %}
[deployment-manager.yaml](https://2297977984-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"
    }
  ]
}
```

यह `स्थिति` फ़ील्ड होती है `ऑनलाइन` यदि पिछले 5 मिनट के भीतर heartbeat प्राप्त हुई हो, `ऑफ़लाइन` यदि इससे पुरानी हो, या `अज्ञात` नए-provisioned डिवाइस अपनी पहली heartbeat से पहले सूची में दिखाई देते हैं; तब तक `स्थिति` है `अज्ञात` और निगरानी से प्राप्त अधिकांश फ़ील्ड `null`.

{% hint style="warning" %}
`hardware.total_disk_space_mb` डिवाइस द्वारा रिपोर्ट किया गया एक कच्चा मान है। इसके बावजूद `_mb` सफ़िक्स के बावजूद, RFDM-रिपोर्टेड डिवाइस वर्तमान में यह मान bytes में लौटाते हैं (उदाहरण के लिए `124426534912` \~124 GB डिस्क के लिए)। इकाई को डिवाइस-परिभाषित मानें।
{% endhint %}

#### डिवाइस प्राप्त करें

id द्वारा एकल डिवाइस प्राप्त करें। लौटाता है **404** यदि डिवाइस मौजूद नहीं है या किसी अन्य workspace से संबंधित है।

**आवश्यक scope:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}" method="get" %}
[deployment-manager.yaml](https://2297977984-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}?api_key=$ROBOFLOW_API_KEY"
```

प्रतिक्रिया body सूची endpoint के एकल item से मेल खाती है (किसी `data` array में लिपटी नहीं)।

### डिवाइस बनाएँ

अपने workspace में एक नया डिवाइस बनाएँ और उसे इंस्टॉल करने के लिए आवश्यक identifiers लौटाएँ। Device-scoped API कुंजियाँ इस endpoint को कॉल नहीं कर सकतीं और प्राप्त करती हैं **403**.

**आवश्यक scope:** `device:update`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2" method="post" %}
[deployment-manager.yaml](https://2297977984-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 -X POST "https://api.roboflow.com/{workspace}/devices/v2?api_key=$ROBOFLOW_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"device_name": "factory-floor-cam-2", "device_type": "edge"}'
```

**उदाहरण प्रतिक्रिया**

```json
{
  "deviceId": "abc456",
  "installId": "inst_xyz789"
}
```

वापस प्राप्त `installId` का उपयोग करके Roboflow Deployment Manager installer के साथ डिवाइस को bootstrap करें।

#### AI1 डिवाइसों पर नोट्स

* सेट करना `device_type` को `"ai1"` के लिए workspace में `deviceAio` feature सक्षम होना आवश्यक है, अन्यथा अनुरोध वापस करता है **403**.
* `offline_mode` केवल AI1 डिवाइसों के लिए मान्य है जिन workspaces में `roboflowLiteMode`। अन्य संयोजन लौटाते हैं **400** या **403**.
* उन AI1 डिवाइसों के लिए जो किसी मौजूदा डिवाइस की duplicate नहीं हैं और जो किसी `workflow_id`के slugified `device_name` में कम से कम एक अक्षरांकीय वर्ण होना चाहिए, अन्यथा अनुरोध वापस करता है **400**.
* जब AI1 + offline mode लागू होता है, तो प्रतिक्रिया में एक `offlineProvisioningQrPayload` फ़ील्ड भी शामिल होता है जो offline provisioning के लिए QR payload को एन्कोड करता है।

#### डुप्लिकेशन पर नोट्स

जब `sourceDeviceId` दिया जाता है, तो नया डिवाइस source device के config की एक प्रति से बनाया जाता है। source device अनुरोध के समान workspace का होना चाहिए, अन्यथा अनुरोध वापस करता है **403**। एक अस्तित्वहीन `sourceDeviceId` लौटाता है **404**.

### डिवाइस कॉन्फ़िग

#### Workspace का डिफ़ॉल्ट कॉन्फ़िग प्राप्त करें

workspace-स्तरीय डिफ़ॉल्ट डिवाइस कॉन्फ़िगरेशन लौटाता है। यह आधार डिफ़ॉल्ट कॉन्फ़िग है जिसमें workspace का config patch (यदि कोई हो) मिला हुआ है। किसी नए डिवाइस को provisioning करते समय इसे टेम्पलेट के रूप में उपयोग करें, इससे पहले कि आप कॉल करें `POST /:workspace/devices/v2`.

**आवश्यक scope:** `device:read`

{% hint style="info" %}
यह एक workspace-व्यापी endpoint है। Device-scoped API कुंजियों को प्राप्त होगा **403** क्योंकि कोई `:deviceId` path में नहीं है।
{% 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` -- मिला हुआ परिणाम (base default + workspace patch).
* `patch` -- workspace का संग्रहीत patch. खाली object `{}` यदि workspace में कोई custom patch नहीं है।

#### कॉन्फ़िग प्राप्त करें

डिवाइस का वर्तमान runtime configuration लौटाता है। प्रतिक्रिया की संरचना Roboflow Deployment Manager (RFDM) config spec से मेल खाती है।

**आवश्यक scope:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/config" method="get" %}
[deployment-manager.yaml](https://2297977984-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"
```

प्रतिक्रिया पूर्ण कॉन्फ़िगरेशन दस्तावेज़ है और इसमें निम्नलिखित top-level fields शामिल हैं (लेकिन इन्हीं तक सीमित नहीं):

* `device_id`, `device_name`
* `workspace_id`
* `version`, `last_updated`, `last_updated_at`, `created_at`
* `config` (डिवाइस का runtime config tree, जिसमें शामिल है `device_type`, `stream`, और `offline_mode`)
* `services` (प्रति-सेवा container definitions, जिनमें शामिल हैं `image`, `volumes`, और `environment_variables`)
* `environment_variables` (top-level environment variables, साथ ही उन per-service variables के अलावा जो अंदर हैं `services`)
* `production_mode`, `last_automatic_update`, `updated`, `updated_by`, `$schema`, `id`

RFDM द्वारा लिखे गए अतिरिक्त फ़ील्ड भी दिखाई दे सकते हैं। प्रतिक्रिया की संरचना को open-ended मानें और केवल उन्हीं फ़ील्ड पर निर्भर रहें जिनकी आपको आवश्यकता है।

लौटाता है **404** यदि डिवाइस मौजूद नहीं है या आपके workspace से संबंधित नहीं है, या यदि उसके लिए कोई कॉन्फ़िगरेशन संग्रहीत नहीं है।

{% hint style="warning" %}
प्रतिक्रिया में authored पूर्ण कॉन्फ़िगरेशन शामिल है। प्रति-सेवा `environment_variables` और config में एम्बेडेड कोई भी integration credentials बिना redaction के लौटाए जाते हैं। प्रतिक्रिया body को संवेदनशील मानें और उसे plaintext में log न करें।
{% endhint %}

#### कॉन्फ़िग इतिहास

किसी डिवाइस के पूर्व कॉन्फ़िगरेशन revisions को सूचीबद्ध करें, सबसे नया पहले।

**आवश्यक scope:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/config/history" method="get" %}
[deployment-manager.yaml](https://2297977984-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"}`.

### डिवाइस कमांड

वेब ऐप से शुरू की गई कार्रवाइयाँ (उदा.: डिवाइस restart करना, stream pause करना, cameras के लिए scan करना) commands के रूप में queue की जाती हैं। डिवाइस अपनी अगली poll पर उन्हें उठा लेता है।

#### लंबित कमांड प्राप्त करें

डिवाइस के लिए प्रतीक्षा कर रहे कमांड लौटाता है, सबसे पुराने पहले। पढ़ने से वे हटते नहीं हैं: कोई कमांड तब तक queued रहता है जब तक डिवाइस रिपोर्ट नहीं करता कि उसने उसे चला लिया, इसलिए जो डिवाइस कमांड के बीच में restart होता है वह उसे फिर से देखता है। 5 मिनट से अधिक पहले queued किए गए कमांड expire हो जाते हैं और कभी डिलीवर नहीं किए जाते, क्योंकि उन्हें बाद में चलाना उस अनुरोध से मेल नहीं खाएगा जो आपने किया था।

**आवश्यक scope:** `device:read`

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

#### कमांड queue करें

किसी डिवाइस के लिए अगली poll पर चलाने हेतु एक कमांड queue करें। API से यह वही करता है जो वेब ऐप तब करता है जब आप किसी डिवाइस को restart करते हैं या कोई stream शुरू करते हैं।

**आवश्यक scope:** `device:update`

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

### डिवाइस स्ट्रीम

#### स्ट्रीम सूचीबद्ध करें

किसी डिवाइस पर कॉन्फ़िगर की गई हर स्ट्रीम की सूची बनाएं।

**आवश्यक scope:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/streams" method="get" %}
[deployment-manager.yaml](https://2297977984-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`.
* यदि स्रोत एक ऑब्जेक्ट है, तो जिन कुंजियों का lowercase नाम `password`, `passwd`, `secret`, `api_key`, `apikey`, `auth`, `authorization`, `token`, या `access_token` को प्रतिक्रिया से हटा दिया जाता है। अन्य सभी कुंजियाँ सुरक्षित रहती हैं।
* ऐरे और नेस्टेड ऑब्जेक्ट्स को पुनरावर्ती रूप से स्वच्छ किया जाता है।

#### स्ट्रीम प्राप्त करें

एकल स्ट्रीम प्राप्त करें। वापस लौटाता है **404** यदि स्ट्रीम डिवाइस पर मौजूद नहीं है, या यदि डिवाइस मौजूद नहीं है या आपके वर्कस्पेस का हिस्सा नहीं है, तो।

**आवश्यक scope:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/streams/{streamId}" method="get" %}
[deployment-manager.yaml](https://2297977984-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"
```

प्रतिक्रिया body सूची endpoint के एकल item से मेल खाती है (किसी `data` array में लिपटी नहीं)।

#### पाइपलाइन स्थिति रिपोर्ट करें

डिवाइस द्वारा चलाए जा रहे inference pipelines की रिपोर्ट करें। रिपोर्ट की गई हर pipeline, उसके FPS और sharpness metrics के साथ, मेल खाने वाली stream को अपडेट करती है। device config में घोषित stream को उसकी stream key से मिलाया जाता है, इसलिए जब device उसे report कर देता है, तो वह provisioning के रूप में दिखना बंद कर देती है।

RFDM यह उन devices पर पोस्ट करता है जो device-manager container के बिना चलते हैं। जो devices वह container चलाते हैं, वे वही डेटा अपनी healthcheck में report करते हैं, इसलिए उन्हें इस endpoint की आवश्यकता नहीं होती।

**आवश्यक scope:** `device:update`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/pipelines-status" method="post" %}
[deployment-manager.yaml](https://2297977984-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 server का भी `/inference_pipelines/list` प्रतिक्रिया अपरिवर्तित रूप में पोस्ट कर सकते हैं, जैसे `{"success": true, "data": {"pipelines": [...]}}`. यदि उस body में `"success": false`हो, तो डिवाइस अपनी pipelines की सूची बनाने में विफल रहा, इसलिए यह request एक no-op है और मौजूदा streams को यथावत छोड़ देती है।

### डिवाइस लॉग और टेलीमेट्री

#### लॉग्स

पृष्ठांकित डिवाइस लॉग वापस लौटाता है।

**आवश्यक scope:** `device:read`

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

**उदाहरण अनुरोध**

**रेट लिमिट:** प्रति वर्कस्पेस प्रति मिनट 120 अनुरोध। लॉग पढ़ने और लॉग ingest के लिए अलग rate-limit buckets का उपयोग होता है, इसलिए logs के लिए polling आपकी ingest quota में नहीं गिना जाएगा (और इसके विपरीत भी)।

```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
  }
}
```

**रेट सीमाएँ**

यह endpoint इस सीमा तक rate-limited है **प्रति IP address प्रति मिनट 5 अनुरोध** और **वैश्विक रूप से प्रति मिनट 50 अनुरोध**. अतिरिक्त अनुरोध लौटाते हैं **429**.

#### टेलीमेट्री

एक निश्चित समय विंडो में bucketed, डिवाइस के लिए समेकित हार्डवेयर metrics (CPU, memory, disk, GPU) और प्रति-स्ट्रीम FPS लौटाता है।

**आवश्यक scope:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/telemetry" method="get" %}
[deployment-manager.yaml](https://2297977984-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"
```

प्रति समय अवधि bucket का आकार स्थिर होता है:

| `time_period` | `bucket_interval` | `fill_interval_seconds` |
| ------------- | ----------------- | ----------------------- |
| `1h`          | `2 मिनट`          | 120                     |
| `24h`         | `30 मिनट`         | 1800                    |
| `7d`          | `4 घंटे`          | 14400                   |
| `14d`         | `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
    }
  ]
}
```

अनुरोधित विंडो में जिन buckets को कोई telemetry नहीं मिली, उन्हें भी वापस लौटाया जाता है, और प्रत्येक metric फ़ील्ड को `null`.

**रेट सीमाएँ**

यह endpoint प्रति डिवाइस इस सीमा तक rate-limited है: **प्रति मिनट 60 अनुरोध** के अतिरिक्त **10 सेकंड में 10 अनुरोध** बर्स्ट लिमिटर। **429**अतिरिक्त अनुरोध लौटाते हैं। वही प्रति-डिवाइस telemetry quota डिवाइस की telemetry ingest path के साथ साझा होती है, इसलिए आक्रामक reads उसी डिवाइस के ingest को प्रभावित कर सकती हैं।

### डिवाइस इवेंट्स

डिवाइस और स्ट्रीम के जीवनचक्र इवेंट्स लौटाता है (उदाहरण के लिए डिवाइस बूट, स्ट्रीम का शुरू और बंद होना, त्रुटियाँ, कॉन्फ़िग परिवर्तन)।

**आवश्यक scope:** `device:read`

{% openapi src="/files/e91a48967ce36921219cf07dfc360ff05648501e" path="/{workspace}/devices/v2/{deviceId}/events" method="get" %}
[deployment-manager.yaml](https://2297977984-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": "डिवाइस शुरू हुआ",
      "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 की अन्य timestamps की तरह ISO-8601 में सामान्यीकृत नहीं किया जाता।

`event_end_timestamp` को epoch-zero स्ट्रिंग के रूप में भी वापस लौटाया जा सकता है `"1970-01-01 00:00:00.000"` (बजाय `null`) जब इवेंट के लिए कोई रिकॉर्ड किया गया end timestamp नहीं होता।

डिफ़ॉल्ट रूप से feed दोहराए गए events को state changes में समेट देता है, जिससे वह आवधिक telemetry छिप जाती है जो एक event name का पुनः उपयोग करती है। पास करें `dedupe=false` के साथ दोनों `entity_type` और `entity_id` को हर raw row पढ़ने के लिए। समय के साथ एक value को chart करने के लिए, इसके बजाय [service series endpoint](#device-services) का उपयोग करें: यह आपके लिए entity ID हल कर देता है।

### डिवाइस सेवाएँ

वापस लौटाता है [services](/deployment/hi/self-hosted/enterprise/deployment-manager/services.md) एक डिवाइस द्वारा चलाई जाने वाली सेवाओं को उनके live status के साथ जोड़कर: container state, image version, और प्रति-प्रकार स्थिति जैसे PLC connection state या Event Store capacity।

**आवश्यक scope:** `device:read`

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

इन endpoints का उपयोग fleet को poll करने के लिए करें: माँगें `include=status` से यह जाँचने के लिए कि कोई सेवा चालू है और रिपोर्ट कर रही है, और जोड़ें `include=metrics` उसके CPU और memory के लिए।

{% hint style="info" %}
`include=config` stored किए गए environment variable values वैसे ही लौटाता है, और वे अक्सर broker passwords और API keys जैसे credentials रखते हैं। इसी कारण यह डिफ़ॉल्ट रूप से बंद रहता है। किसी भी ऐसी प्रतिक्रिया को संवेदनशील मानें जिसमें `config` शामिल हो।
{% endhint %}

Services telemetry को एक entity ID के तहत report करती हैं जो service kind से आती है। इसलिए एक ही डिवाइस पर एक ही kind की दो सेवाएँ टकराती हैं, जब तक कि आप हर एक को अपना अलग `DEVICE_EVENT_ENTITY_ID`न दें। जब ऐसा होता है, API साझा IDs को `signal_conflicts` में सूचीबद्ध करती है और `स्थिति` के रूप में `null`, क्योंकि वह यह नहीं बता सकती कि किस container ने reading भेजी। एक custom entity ID में केवल अक्षर, अंक, हाइफ़न और अंडरस्कोर हो सकते हैं। वर्ण `.`, `/`, `*`, `~`, `[`, और `]` status cache को तोड़ देते हैं, और तब सेवा कोई status बिल्कुल रिपोर्ट नहीं करती।

#### सर्विस मेट्रिक सीरीज़

चार्टिंग के लिए, समय के साथ एक सेवा के लिए एक metric लौटाता है।

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

Metric नाम सेवा के kind पर निर्भर करते हैं। इसे किसी अज्ञात `metric` के साथ कॉल करें, और 400 response वैध नामों को `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>कोई नहीं। ये केवल container state और metrics रिपोर्ट करते हैं।</td></tr></tbody></table>

## MCP सर्वर

अपने AI एजेंट को [MCP सर्वर](https://docs.roboflow.com/agents/mcp-server) से जोड़ें और वह इन टूल्स के साथ एक edge device की जाँच कर सकता है:

<table data-search="false"><thead><tr><th width="290">टूल</th><th>विवरण</th></tr></thead><tbody><tr><td><code>devices_list</code></td><td>वर्कस्पेस में पंजीकृत devices की सूची बनाएं।</td></tr><tr><td><code>devices_get_snapshot</code></td><td>एक कॉल में किसी device की पूरी वर्तमान स्थिति प्राप्त करें।</td></tr><tr><td><code>devices_get_config</code></td><td>डिवाइस का वर्तमान runtime configuration प्राप्त करें।</td></tr><tr><td><code>devices_update_config</code></td><td>डिवाइस का runtime configuration अपडेट करें।</td></tr><tr><td><code>devices_streams_list</code></td><td>डिवाइस पर कॉन्फ़िगर की गई streams की सूची बनाएं।</td></tr><tr><td><code>devices_get_logs</code></td><td>डिवाइस logs प्राप्त करें।</td></tr><tr><td><code>devices_get_telemetry</code></td><td>समेकित हार्डवेयर metrics और device health प्राप्त करें।</td></tr></tbody></table>
