> 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/monitoring-and-analytics/vision-events/query-events.md).

# Events क्वेरी करें

## के बारे में

यह पेज बताता है कि विशिष्ट [विजन इवेंट्स](/deployment/hi/monitoring-and-analytics/vision-events.md) - आपके तैनात मॉडल ने क्या देखा, उसके टाइमस्टैम्प किए गए रिकॉर्ड - उन्हें Vision Events डैशबोर्ड में फ़िल्टर और खोजकर या REST API के माध्यम से प्रोग्रामेटिक रूप से। प्रोडक्शन व्यवहार का ऑडिट करने और रिपोर्ट बनाने के लिए परिणामों को तारीख सीमा, इवेंट प्रकार, डिवाइस, स्ट्रीम, वर्कफ़्लो, पहचानी गई क्लास, या फ़ीडबैक स्थिति के आधार पर सीमित करें।

## वेब ऐप

### इवेंट्स को क्वेरी और फ़िल्टर करें

Vision Events डैशबोर्ड में फ़िल्टरों का उपयोग करके विशिष्ट इवेंट्स खोजें या REST API के माध्यम से उन्हें प्रोग्रामेटिक रूप से क्वेरी करें।

#### डैशबोर्ड में इवेंट्स ब्राउज़ करें

**एक उपयोग मामला चुनें**

Vision Events पेज से, अपने इवेंट्स देखने के लिए किसी उपयोग मामले पर क्लिक करें। इवेंट्स उल्टे कालानुक्रमिक क्रम में प्रदर्शित होते हैं।

<figure><img src="/files/6d0a523754b27150958f4a890ecedbee2797f4ac" alt="" width="375"><figcaption></figcaption></figure>

**इवेंट्स फ़िल्टर करें**

परिणामों को सीमित करने के लिए इवेंट्स सूची के शीर्ष पर स्थित फ़िल्टर नियंत्रणों का उपयोग करें:

* **तारीख सीमा** - प्रारंभ और समाप्ति टाइमस्टैम्प
* **इवेंट प्रकार** - quality\_check, inventory\_count, safety\_alert, custom, operator\_feedback
* **डिवाइस** - डिवाइस ID के आधार पर फ़िल्टर करें
* **स्ट्रीम** - स्ट्रीम या कैमरा ID के आधार पर फ़िल्टर करें
* **वर्कफ़्लो** - उस वर्कफ़्लो के आधार पर फ़िल्टर करें जिसने इवेंट्स जनरेट किए
* **डिटेक्शन** - पहचानी गई ऑब्जेक्ट क्लास के आधार पर फ़िल्टर करें, वैकल्पिक कॉन्फ़िडेंस थ्रेशहोल्ड के साथ
* **फ़ीडबैक स्थिति** - सही, गलत, अनिर्णायक, या कोई फ़ीडबैक नहीं
* **कस्टम मेटाडेटा** - किसी भी कस्टम मेटाडेटा फ़ील्ड और मान के आधार पर फ़िल्टर करें
* **चेतावनियाँ** - केवल वे इवेंट्स दिखाएँ जिनमें ingesting चेतावनियाँ थीं

आप इवेंट डिटेल साइडबार में मानों पर भी क्लिक कर सकते हैं (जैसे डिवाइस ID, स्ट्रीम, quality check परिणाम, या कस्टम मेटाडेटा मान) ताकि उन्हें जल्दी से फ़िल्टर के रूप में जोड़ा जा सके।

फ़िल्टर चिप्स संपादन योग्य हैं -- किसी सक्रिय फ़िल्टर चिप पर क्लिक करके उसका मान या ऑपरेटर बदला जा सकता है, बिना उसे हटाए और फिर से जोड़े।

जब फ़िल्टर लागू होते हैं, एक **कुल संख्या** मिलते-जुलते इवेंट्स की परिणाम सूची के शीर्ष पर दिखाई जाती है। यह संख्या इवेंट सूची से स्वतंत्र रूप से अपडेट होती है, इसलिए आप देख सकते हैं कि आपके फ़िल्टर से कितने इवेंट्स मेल खाते हैं, भले ही इवेंट्स अभी भी लोड हो रहे हों।

<figure><img src="/files/17ae67b936d58a0772b9e843221323074760521c" alt="" width="375"><figcaption></figcaption></figure>

**इवेंट विवरण देखें**

सूची में किसी भी इवेंट पर क्लिक करके उसके पूर्ण विवरण देखें:

* स्रोत छवि और कोई भी आउटपुट छवियाँ
* सभी स्रोत मेटाडेटा (डिवाइस, स्ट्रीम, वर्कफ़्लो)
* ऑब्जेक्ट डिटेक्शन्स, वर्गीकरण, और सेगमेंटेशन उनके कॉन्फ़िडेंस स्कोर के साथ
* इवेंट-प्रकार-विशिष्ट डेटा (जैसे: पास/फ़ेल परिणाम, आइटम गिनती, चेतावनी गंभीरता)
* कस्टम मेटाडेटा की key-value जोड़ियाँ

**डिटेक्शन्स बनाएं**

जब किसी इवेंट में प्रेडिक्शन डेटा (ऑब्जेक्ट डिटेक्शन्स, instance segmentations, या keypoints) होता है, तो छवि के ऊपर एक "Draw Detections" चेकबॉक्स दिखाई देता है। इसे सक्षम करें ताकि स्रोत छवि के ऊपर bounding boxes, segmentation polygons, और कॉन्फ़िडेंस स्कोर वाले लेबल ओवरले हो जाएँ।

यह तब उपयोगी है जब आपका पाइपलाइन केवल मूल इनपुट छवि को संग्रहीत करता है और आप अलग आउटपुट छवि सहेजे बिना यह देखना चाहते हैं कि मॉडल ने क्या पहचाना।

{% hint style="info" %}
जब किसी अलग आउटपुट छवि को देखा जा रहा हो, तब चेकबॉक्स छिपा रहता है, क्योंकि उनमें पहले से ही डिटेक्शन्स रेंडर किए गए होते हैं।
{% endhint %}

**ऑटो-फ़ाइनलाइज़्ड इवेंट्स**

ऑटो-फ़ाइनलाइज़्ड के रूप में चिह्नित कोई इवेंट एज डिवाइस पर स्वतः बंद कर दिया गया था, उसके वीडियो के अपलोड पूरा होने से पहले, इसलिए वीडियो उपलब्ध नहीं है। इवेंट में फिर भी उसका परिणाम और स्थिर छवियाँ होती हैं। इवेंट कार्ड एक संकेतक दिखाता है, और डिटेल दृश्य उस समय को दिखाता है जब इसे फ़ाइनलाइज़ किया गया था। यह केवल उन इवेंट्स पर लागू होता है जो के माध्यम से सिंक किए गए हों [एज डिवाइस बैकअप](/deployment/hi/monitoring-and-analytics/vision-events/send-events.md#edge-device-backup).

## HTTP API

### API के माध्यम से इवेंट्स क्वेरी करें

क्वेरी एंडपॉइंट डैशबोर्ड जैसे ही फ़िल्टरों का समर्थन करता है, साथ ही cursor-आधारित pagination भी। पैरामीटरों और प्रतिक्रिया फ़ील्ड्स की पूरी सूची के लिए देखें [Vision Events API संदर्भ](/deployment/hi/monitoring-and-analytics/vision-events.md#http-api).

#### मूल क्वेरी

```bash
curl -X POST "https://api.roboflow.com/vision-events/query" \\
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "useCaseId": "assembly-line-qa",
    "startTime": "2026-03-01T00:00:00Z",
    "endTime": "2026-03-31T23:59:59Z",
    "limit": 25
  }'
```

**प्रतिक्रिया:**

```json
{
  "events": [
    {
      "eventId": "evt-789ghi",
      "eventType": "quality_check",
      "timestamp": "2026-03-30T14:30:00.000Z",
      "deviceId": "factory-cam-01",
      "streamId": "line-3",
      "images": [],
      "eventData": { "result": "fail" },
      "customMetadata": {
        "line_id": "line-3",
        "shift": "morning",
        "part_number": "PN-4421"
      }
    }
  ],
  "nextCursor": "eyJ0cyI6IjIwMjYtMDMtMzAifQ==",
  "hasMore": true
}
```

#### पेजिनेशन

परिणामों को cursor का उपयोग करके पेजिनेट किया जाता है। यदि प्रतिक्रिया में एक `nextCursor` मान और `hasMore` है `सत्य`हो, तो अगला पेज प्राप्त करने के लिए अपनी अगली रिक्वेस्ट में cursor पास करें:

```bash
curl -X POST "https://api.roboflow.com/vision-events/query" \\
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "useCaseId": "assembly-line-qa",
    "limit": 25,
    "cursor": "eyJ0cyI6IjIwMjYtMDMtMzAifQ=="
  }'
```

तब तक जारी रखें `hasMore` है `असत्य`.

#### इवेंट प्रकार के आधार पर फ़िल्टर करें

एकल इवेंट प्रकार क्वेरी करें:

```json
{
  "useCaseId": "assembly-line-qa",
  "eventType": "quality_check"
}
```

या कई इवेंट प्रकार (अधिकतम 20):

```json
{
  "useCaseId": "assembly-line-qa",
  "eventTypes": ["quality_check", "operator_feedback"]
}
```

#### फ़ीडबैक स्थिति के आधार पर फ़िल्टर करें

का उपयोग करें `feedbackStatus` यह पता लगाने के लिए कि ऑपरेटरों ने उन्हें देखा है या नहीं और उन्हें कैसे रेट किया गया है:

```json
{
  "useCaseId": "assembly-line-qa",
  "feedbackStatus": ["incorrect", "none"]
}
```

मान्य मान: `correct`, `incorrect`, `inconclusive`, `none`. उपयोग करें `none` उन इवेंट्स को खोजने के लिए जिन्हें अभी तक समीक्षा नहीं की गई है।

#### कस्टम मेटाडेटा के आधार पर फ़िल्टर करें

का उपयोग करें `customMetadataFilters` अपने स्वयं के मेटाडेटा फ़ील्ड्स के आधार पर इवेंट्स फ़िल्टर करने के लिए:

```json
{
  "useCaseId": "assembly-line-qa",
  "customMetadataFilters": [
    { "key": "line_id", "operator": "eq", "value": "line-3" },
    { "key": "shift", "operator": "eq", "value": "morning" }
  ]
}
```

### Query Vision Events

फ़िल्टर, समय सीमाओं, और पेजिनेशन के साथ vision events क्वेरी करें। यह एंडपॉइंट इवेंट प्रकार, डिवाइस संदर्भ, डिटेक्शन क्लासेस, कस्टम मेटाडेटा, और इवेंट-विशिष्ट फ़ील्ड्स के आधार पर फ़िल्टरिंग का समर्थन करता है।

**आवश्यक स्कोप:** `vision-events:read` या `device:read`

{% openapi src="/files/84d8c4861456d267a4e6a39f6a1609041832d8bb" path="/vision-events/query" method="post" %}
[openapi.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-dfdc1702ad3d1a62ad0a661e9609f6bbe2fc8d4c%2Fopenapi.yaml?alt=media)
{% endopenapi %}

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

```bash
curl -X POST "https://api.roboflow.com/vision-events/query" \\
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "useCaseId": "a1b3c8e1",
    "startTime": "2024-01-14T00:00:00Z",
    "endTime": "2024-01-15T23:59:59Z",
    "eventTypes": ["quality_check", "safety_alert"],
    "customMetadataFilters": [
      {
        "field": "temperature",
        "operator": "gt",
        "value": 70,
        "type": "number"
      }
    ],
    "limit": 50
  }'
```

#### अनुरोध बॉडी पैरामीटर

**आवश्यक फ़ील्ड:**

* **`useCaseId`** (string): इवेंट्स क्वेरी करने के लिए उपयोग मामला ID। देखें [Use Cases](/deployment/hi/monitoring-and-analytics/vision-events/use-cases.md) अपने उपयोग मामला ID को कैसे खोजें, इसके लिए।

**समय सीमा फ़िल्टर:**

* **`startTime`** (string, ISO 8601, वैकल्पिक): समय सीमा की शुरुआत।
* **`endTime`** (string, ISO 8601, वैकल्पिक): समय सीमा का अंत।

**इवेंट प्रकार फ़िल्टर:**

* **`eventTypes`** (strings का array, अधिकतम 20, वैकल्पिक): एक या अधिक इवेंट प्रकारों तक फ़िल्टर करें।

**संदर्भ फ़िल्टर:**

प्रत्येक संदर्भ फ़िल्टर एक ऑब्जेक्ट होता है जिसमें `ऑपरेटर` और `value`:

* **`deviceId`** (object, वैकल्पिक): डिवाइस के आधार पर फ़िल्टर करें। ऑपरेटर: `eq`, `neq`.
* **`streamId`** (object, वैकल्पिक): स्ट्रीम के आधार पर फ़िल्टर करें। ऑपरेटर: `eq`, `neq`.
* **`workflowId`** (object, वैकल्पिक): वर्कफ़्लो के आधार पर फ़िल्टर करें। ऑपरेटर: `eq`, `neq`.
* **`externalId`** (object, वैकल्पिक): बाहरी ID के आधार पर फ़िल्टर करें। ऑपरेटर: `eq`, `neq`.

```json
{
  "deviceId": { "operator": "eq", "value": "camera-node-5" }
}
```

**डिटेक्शन फ़िल्टर:**

* **`detection`** (object, वैकल्पिक): डिटेक्शन क्लास नाम के आधार पर इवेंट्स फ़िल्टर करें, वैकल्पिक रूप से प्रति-डिटेक्शन कॉन्फ़िडेंस थ्रेशहोल्ड के साथ। ऑपरेटर: `eq`, `neq`, `in`, `not_in`. For `in` और `not_in`के लिए, value के रूप में strings का एक array पास करें (अधिकतम 50)।
  * **`confidence`** (object, वैकल्पिक): प्रति-डिटेक्शन कॉन्फ़िडेंस थ्रेशहोल्ड। केवल इसके साथ समर्थित `eq` और `in` class ऑपरेटर। क्लास और कॉन्फ़िडेंस को उसी डिटेक्शन पर मेल खाना चाहिए।
    * **`ऑपरेटर`** (string): इनमें से एक `gt`, `gte`, `lt`, `lte`.
    * **`value`** (number): 0 और 1 के बीच कॉन्फ़िडेंस थ्रेशहोल्ड।

```json
{
  "detection": { "operator": "in", "value": ["defect", "crack"] }
}
```

न्यूनतम कॉन्फ़िडेंस के साथ क्लास के आधार पर फ़िल्टर करें:

```json
{
  "detection": {
    "operator": "eq",
    "value": "scratch",
    "confidence": { "operator": "gte", "value": 0.8 }
  }
}
```

{% hint style="info" %}
यह `detection` फ़िल्टर का पहले नाम था `detectionClass`. पुराना नाम अब स्वीकार नहीं किया जाता।
{% endhint %}

**छवि और चेतावनी फ़िल्टर:**

* **`imageCount`** (object, वैकल्पिक): इवेंट से संलग्न छवियों की संख्या के आधार पर फ़िल्टर करें। ऑपरेटर: `eq`, `neq`, `gt`, `gte`, `lt`, `lte`.
* **`hasWarnings`** (boolean, वैकल्पिक): उन इवेंट्स तक फ़िल्टर करें जिनमें ingesting चेतावनियाँ हैं या नहीं हैं।

```json
{
  "imageCount": { "operator": "gte", "value": 1 }
}
```

**कस्टम मेटाडेटा फ़िल्टर:**

* **`customMetadataFilters`** (array, अधिकतम 20, वैकल्पिक): कस्टम मेटाडेटा फ़ील्ड्स के आधार पर फ़िल्टर करें। प्रत्येक फ़िल्टर में है:
  * **`field`** (string): मेटाडेटा फ़ील्ड का नाम।
  * **`ऑपरेटर`** (string): तुलना ऑपरेटर।
  * **`value`**: तुलना करने के लिए मान।
  * **`type`** (string): मान का प्रकार, इनमें से एक `स्ट्रिंग`, `संख्या`या `बूलियन`.

प्रकार के अनुसार उपलब्ध ऑपरेटर:

| प्रकार     | ऑपरेटर                                |
| ---------- | ------------------------------------- |
| `स्ट्रिंग` | `eq`, `neq`, `in`, `not_in`           |
| `संख्या`   | `eq`, `neq`, `gt`, `gte`, `lt`, `lte` |
| `बूलियन`   | `eq`, `neq`                           |

**इवेंट फ़ील्ड फ़िल्टर:**

* **`eventFieldFilters`** (array, अधिकतम 20, वैकल्पिक): इवेंट-विशिष्ट फ़ील्ड्स के आधार पर फ़िल्टर करें। प्रत्येक फ़िल्टर में है:
  * **`column`** (string): इनमें से एक `result`, `location`, `item_count`, `item_type`, `alert_type`, `severity`या `feedback`.
  * **`ऑपरेटर`** (string): तुलना ऑपरेटर (`eq`, `neq`, `gt`, `gte`, `lt`, `lte`, `in`, `not_in`).
  * **`value`**: तुलना करने के लिए मान।

```json
{
  "eventFieldFilters": [
    { "column": "result", "operator": "eq", "value": "fail" }
  ]
}
```

**पेजिनेशन:**

* **`cursor`** (string, वैकल्पिक): अगले पेज को लाने के लिए पिछले प्रतिक्रिया से cursor।
* **`limit`** (number, वैकल्पिक, डिफ़ॉल्ट 100, अधिकतम 1000): प्रति पेज लौटाए जाने वाले इवेंट्स की संख्या।

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

{% tabs %}
{% tab title="200" %}

```json
{
  "events": [
    {
      "eventId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "eventType": "quality_check",
      "timestamp": "2024-01-15T10:30:00.000Z",
      "images": [
        {
          "label": "inspection-photo",
          "objectDetections": [
            {
              "class": "defect",
              "x": 100,
              "y": 200,
              "width": 50,
              "height": 30,
              "confidence": 0.95
            }
          ]
        }
      ],
      "eventData": {
        "result": "fail",
        "externalId": "batch-001"
      },
      "customMetadata": {
        "line": "A1",
        "temperature": 72.5
      }
    }
  ],
  "hasMore": false,
  "lookbackDays": 14
}
```

जब `hasMore` है `सत्य`, उपयोग करें `nextCursor` मान को अपनी अगली रिक्वेस्ट में परिणामों का अगला पेज प्राप्त करने के लिए:

```json
{
  "events": [...],
  "hasMore": true,
  "nextCursor": "eyJ0aW1lc3RhbXAiOiIyMDI0LTAxLTE1IiwiZXZlbnRJZCI6InFjLTAwMSJ9",
  "lookbackDays": 14
}
```

{% endtab %}

{% tab title="400" %}

```json
{
  "error": "अमान्य क्वेरी: useCaseId आवश्यक है"
}
```

{% endtab %}

{% tab title="403" %}

```json
{
  "error": "इस संसाधन के लिए पर्याप्त अनुमतियाँ नहीं हैं."
}
```

{% endtab %}
{% endtabs %}

## Python SDK

फ़िल्टर, समय सीमाओं, और पेजिनेशन के साथ vision events क्वेरी करें।

### एकल पृष्ठ क्वेरी

का उपयोग करें `query_vision_events()` परिणामों का एक पृष्ठ लाने के लिए:

```python
import roboflow

roboflow.login()

rf = roboflow.Roboflow()
ws = rf.workspace()

page = ws.query_vision_events(
    "a1b3c8e1",                          # उपयोग मामला ID (आवश्यक)
    event_type="quality_check",          # एकल इवेंट प्रकार के लिए फ़िल्टर
    start_time="2024-01-14T00:00:00Z",   # ISO 8601 प्रारंभ समय
    end_time="2024-01-15T23:59:59Z",     # ISO 8601 समाप्ति समय
    limit=50,                            # प्रति पेज अधिकतम इवेंट्स
)

for evt in page["events"]:
    print(evt["eventId"], evt["eventData"])

```

आप अतिरिक्त फ़िल्टरों को keyword arguments के रूप में भी पास कर सकते हैं। इन्हें सीधे API को भेजा जाता है:

```python
page = ws.query_vision_events(
    "a1b3c8e1",
    event_types=["quality_check", "safety_alert"],
    deviceId={"operator": "eq", "value": "camera-node-5"},
    customMetadataFilters=[
        {"field": "temperature", "operator": "gt", "value": 70, "type": "number"}
    ],
    eventFieldFilters=[
        {"column": "result", "operator": "eq", "value": "fail"}
    ],
)
```

मैनुअल पेजिनेशन के लिए, `cursor` पैरामीटर के साथ `nextCursor` पिछले प्रतिक्रिया से मान का उपयोग करें:

```python
all_events = []
page = ws.query_vision_events("a1b3c8e1", limit=100)
all_events.extend(page.get("events", []))

while page.get("hasMore"):
    page = ws.query_vision_events("a1b3c8e1", cursor=page["nextCursor"], limit=100)
    all_events.extend(page.get("events", []))
```

### सभी परिणामों में पेजिनेट करें

का उपयोग करें `query_all_vision_events()` सभी मिलते-जुलते इवेंट्स में स्वचालित रूप से पेजिनेट करने के लिए। यह एक बार में इवेंट्स का एक पेज देता है:

```python
all_events = []

for page in ws.query_all_vision_events(
    "a1b3c8e1",
    event_type="quality_check",
    start_time="2024-01-14T00:00:00Z",
    end_time="2024-01-15T23:59:59Z",
):
    all_events.extend(page)

print(f"{len(all_events)} इवेंट्स मिले")
```

उपलब्ध फ़िल्टरों, ऑपरेटरों, और प्रतिक्रिया प्रारूपों पर पूर्ण विवरण के लिए देखें [REST API reference](#http-api).
