क्वॉरंटीन किए गए मैसेज की सूची देखना और उन्हें खोजना

इस पेज पर, Mail Admin Quarantine API का इस्तेमाल करके, Google Workspace एडमिन क्वॉरंटीन में रखे गए मैसेज ढूंढने का तरीका बताया गया है.

एपीआई, customers.quarantinedMessages रिसॉर्स पर दो तरीके उपलब्ध कराता है:

  • list तरीका, क्वॉरंटीन किए गए मैसेज को बिना किसी फ़िल्टर के दिखाता है. इसका इस्तेमाल करके, क्वॉरंटीन किए गए सभी ईमेल को पेज के हिसाब से देखें.
  • search तरीके से, स्ट्रक्चर्ड फ़िल्टर, Gmail की सर्च क्वेरी या दोनों का इस्तेमाल करके, नतीजों को सीमित किया जा सकता है. इसका इस्तेमाल, प्राथमिकता के हिसाब से वर्कफ़्लो तय करने के लिए करें. जैसे, सिर्फ़ उन इनबाउंड मैसेज को वापस पाना जिनकी समीक्षा बाकी है.

दोनों तरीकों से, पिछले 30 दिनों के मैसेज वापस मिलते हैं. साथ ही, दोनों तरीकों से हर मैसेज के लिए एक जैसा बुनियादी मेटाडेटा मिलता है. हेडर, मुख्य हिस्से, अटैचमेंट या रॉ मैसेज को वापस पाने के लिए, मैसेज की जानकारी पाएं देखें.

ज़रूरी शर्तें

क्वॉरंटीन किए गए मैसेज की सूची देखना

क्वॉरंटीन किए गए मैसेज की सूची देखने के लिए, अपने ग्राहक के customers.quarantinedMessages संसाधन पर list तरीके से GET अनुरोध भेजें:

GET https://mailadminquarantine.googleapis.com/v1/customers/CUSTOMER_ID/quarantinedMessages?pageSize=50
Authorization: Bearer ACCESS_TOKEN

CUSTOMER_ID को अपने ग्राहक आईडी से बदलें.

list तरीके में ये क्वेरी पैरामीटर इस्तेमाल किए जा सकते हैं:

पैरामीटर ब्यौरा
pageSize हर पेज पर दिखाए जाने वाले मैसेज की ज़्यादा से ज़्यादा संख्या. यह संख्या 1 से 300 के बीच हो सकती है. इस पैरामीटर को हमेशा साफ़ तौर पर सेट करें.
pageToken पिछले जवाब से मिली nextPageToken वैल्यू. अगले पेज को वापस पाने के लिए इसका इस्तेमाल करें.

क्वॉरंटीन किए गए मैसेज खोजने के लिए, JSON बॉडी के साथ customers.quarantinedMessages रिसॉर्स पर :search कस्टम तरीके से POST अनुरोध भेजें:

POST https://mailadminquarantine.googleapis.com/v1/customers/CUSTOMER_ID/quarantinedMessages:search
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json

{
  "filter": "status = PENDING_TRIAGE AND direction = INBOUND",
  "query": "from:suspicious@example.com",
  "pageSize": 50
}

अनुरोध के मुख्य हिस्से में ये फ़ील्ड शामिल होते हैं. कोई भी फ़ील्ड भरना ज़रूरी नहीं है:

फ़ील्ड ब्यौरा
filter AIP-160 सिंटैक्स में स्ट्रक्चर्ड फ़िल्टर. फ़िल्टर सिंटैक्स देखें.
query Gmail की कोई सर्च क्वेरी, जैसे कि has:attachment या from:suspicious@example.com. क्वेरी में उन्हीं ऑपरेटर का इस्तेमाल किया जाता है जिनका इस्तेमाल Gmail के खोज बॉक्स में किया जाता है. Gmail के साथ इस्तेमाल किए जा सकने वाले सर्च ऑपरेटर देखें.
pageSize हर पेज पर दिखाए जाने वाले मैसेज की ज़्यादा से ज़्यादा संख्या. यह संख्या 1 से 300 के बीच हो सकती है. इस फ़ील्ड को हमेशा साफ़ तौर पर सेट करें.
pageToken पिछले जवाब से मिली nextPageToken वैल्यू.

filter और query, दोनों को सेट करने पर, एपीआई सिर्फ़ वे मैसेज दिखाता है जो दोनों से मैच करते हैं.

फ़िल्टर सिंटैक्स

filter फ़ील्ड में ये फ़ील्ड इस्तेमाल किए जा सकते हैं. उन्हें AND ऑपरेटर के साथ जोड़ें. OR और NOT जैसे अन्य ऑपरेटर काम नहीं करते.

फ़ील्ड तुलना करने के लिए इस्तेमाल किए जा सकने वाले विकल्प वैल्यू
status = PENDING_TRIAGE, RELEASED या DENIED.
direction =, != INBOUND या OUTBOUND.
quarantine_name (या quarantineName) = Google Admin console में दिखने वाला क्वॉरंटीन का डिसप्ले नेम. उदाहरण के लिए, "Default".

यहां मान्य फ़िल्टर के उदाहरण दिए गए हैं:

status = PENDING_TRIAGE
status = PENDING_TRIAGE AND direction = INBOUND
direction != OUTBOUND AND quarantine_name = "Default"

अमान्य फ़िल्टर से 400 INVALID_ARGUMENT गड़बड़ी का मैसेज दिखता है.

जवाब

दोनों तरीकों से, बुनियादी मेटाडेटा के साथ QuarantinedMessage संसाधनों की सूची मिलती है. साथ ही, अगर ज़्यादा नतीजे उपलब्ध हैं, तो nextPageToken भी मिलता है:

{
  "quarantinedMessages": [
    {
      "name": "customers/01abc23de/quarantinedMessages/user@example.com:18d3ef45a8b2c1d0",
      "messageId": "18d3ef45a8b2c1d0",
      "messageOwner": "user@example.com",
      "quarantines": [
        "customers/01abc23de/quarantines/0"
      ],
      "receiveTime": "2026-09-22T10:15:30Z",
      "direction": "INBOUND",
      "state": "PENDING_TRIAGE",
      "retentionExpireTime": "2026-10-22T10:15:30Z",
      "triggeredRules": [
        {
          "policyId": "123",
          "ruleId": "456",
          "displayName": "Inbound phishing protection"
        }
      ]
    }
  ],
  "nextPageToken": "CAESBAgBEA..."
}
फ़ील्ड ब्यौरा
name मैसेज के संसाधन का नाम. customers.quarantinedMessages संसाधन पर, बाद के get, release, और deny कॉल में इसका इस्तेमाल करें.
messageId Gmail मैसेज का आईडी, जिसे बदला नहीं जा सकता.
messageOwner उस मेलबॉक्स का ईमेल पता जिसमें मैसेज मौजूद है.
quarantines मैसेज को होल्ड करने वाले क्वॉरंटीन के संसाधन के नाम. क्वारंटीन किए गए ईमेल का डिसप्ले नेम पाने के लिए, customers.quarantines संसाधन के get तरीके को कॉल करें.
receiveTime Gmail को मैसेज कब मिला.
direction अगर उपयोगकर्ता को मैसेज मिला है, तो INBOUND या अगर उपयोगकर्ता ने मैसेज भेजा है, तो OUTBOUND.
state PENDING_TRIAGE, RELEASED या DENIED.
retentionExpireTime जब क्वॉरंटीन में मैसेज को सेव रखना बंद कर दिया जाता है.
triggeredRules वे नियम जिनकी वजह से मैसेज को क्वॉरंटीन किया गया.
unreachable ऐसे खाते जिनके लिए सेवा, क्वॉरंटीन किए गए मैसेज वापस नहीं पा सकी. अगर ऐसा है, तो अनुरोध को बाद में फिर से सबमिट करें.

नतीजों के पेज पर जाएं

खोज से मैच होने वाले सभी मैसेज पाने के लिए:

  1. pageSize का इस्तेमाल करके पहला अनुरोध भेजें.
  2. अगर जवाब में nextPageToken शामिल है, तो उन्हीं पैरामीटर के साथ अनुरोध को दोहराएं और pageToken को उस वैल्यू पर सेट करें.
  3. जब जवाब में nextPageToken न हो, तो रुक जाएं.

यहां दिए गए Python उदाहरण में, उन सभी इनबाउंड मैसेज को पेज किया गया है जिनकी प्राथमिकता तय करना बाकी है:

import requests

BASE_URL = 'https://mailadminquarantine.googleapis.com/v1'
CUSTOMER_ID = '01abc23de'  # Your customer ID without the leading 'C'.
headers = {
    'Authorization': f'Bearer {access_token}',
    'Content-Type': 'application/json',
}

search_url = f'{BASE_URL}/customers/{CUSTOMER_ID}/quarantinedMessages:search'
body = {
    'filter': 'status = PENDING_TRIAGE AND direction = INBOUND',
    'pageSize': 100,
}
messages = []
while True:
  response = requests.post(search_url, headers=headers, json=body)
  response.raise_for_status()
  result = response.json()
  messages.extend(result.get('quarantinedMessages', []))
  page_token = result.get('nextPageToken')
  if not page_token:
    break
  body['pageToken'] = page_token

print(f'Found {len(messages)} messages pending triage.')

अगले चरण