इस पेज पर, Mail Admin Quarantine API का इस्तेमाल करके, Google Workspace एडमिन क्वॉरंटीन में रखे गए मैसेज ढूंढने का तरीका बताया गया है.
एपीआई, customers.quarantinedMessages रिसॉर्स पर दो तरीके उपलब्ध कराता है:
listतरीका, क्वॉरंटीन किए गए मैसेज को बिना किसी फ़िल्टर के दिखाता है. इसका इस्तेमाल करके, क्वॉरंटीन किए गए सभी ईमेल को पेज के हिसाब से देखें.searchतरीके से, स्ट्रक्चर्ड फ़िल्टर, Gmail की सर्च क्वेरी या दोनों का इस्तेमाल करके, नतीजों को सीमित किया जा सकता है. इसका इस्तेमाल, प्राथमिकता के हिसाब से वर्कफ़्लो तय करने के लिए करें. जैसे, सिर्फ़ उन इनबाउंड मैसेज को वापस पाना जिनकी समीक्षा बाकी है.
दोनों तरीकों से, पिछले 30 दिनों के मैसेज वापस मिलते हैं. साथ ही, दोनों तरीकों से हर मैसेज के लिए एक जैसा बुनियादी मेटाडेटा मिलता है. हेडर, मुख्य हिस्से, अटैचमेंट या रॉ मैसेज को वापस पाने के लिए, मैसेज की जानकारी पाएं देखें.
ज़रूरी शर्तें
- आपने एपीआई सेट अप करें में दिए गए चरणों को पूरा कर लिया हो.
- ऐसा ऐक्सेस टोकन जो एडमिन के तौर पर काम करता है. इसके पास एडमिन के तौर पर, ईमेल को क्वॉरंटीन करने का खास अधिकार होता है. साथ ही, इसमें
https://www.googleapis.com/auth/gmail.admin.quarantineयाhttps://www.googleapis.com/auth/gmail.admin.quarantine.readonlyस्कोप शामिल होता है. डोमेन के सभी उपयोगकर्ताओं के डेटा का ऐक्सेस देकर अनुमति दें देखें.
क्वॉरंटीन किए गए मैसेज की सूची देखना
क्वॉरंटीन किए गए मैसेज की सूची देखने के लिए, अपने ग्राहक के 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 |
ऐसे खाते जिनके लिए सेवा, क्वॉरंटीन किए गए मैसेज वापस नहीं पा सकी. अगर ऐसा है, तो अनुरोध को बाद में फिर से सबमिट करें. |
नतीजों के पेज पर जाएं
खोज से मैच होने वाले सभी मैसेज पाने के लिए:
pageSizeका इस्तेमाल करके पहला अनुरोध भेजें.- अगर जवाब में
nextPageTokenशामिल है, तो उन्हीं पैरामीटर के साथ अनुरोध को दोहराएं औरpageTokenको उस वैल्यू पर सेट करें. - जब जवाब में
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.')