Drafts
`drafts->list`, `listAll`, `iterate`, `get`, `create`, `update` और `delete`।
हर मेथड
$page = $client->drafts->list(query: 'invoice', limit: 25);$draft = $client->drafts->get('draft-5f0c2a9e-8b1d-4e7a-a3c6-2d9f41b7e0c8');echo count($page), ' ', $draft['subject'], PHP_EOL; $created = $client->drafts->create([ 'to' => ['[email protected]'], 'cc' => [], 'bcc' => [], 'subject' => 'Your September invoice', 'html' => '<p>Draft body.</p>', 'from' => '[email protected]', 'threadId' => 'CAHk7pQ2x9LmZ4-mail.example.com',]); $updated = $client->drafts->update($created['id'], ['subject' => 'Revised']);$client->drafts->delete($updated['id']);update ड्राफ़्ट की id बनाए रखता है, इसलिए वह हमेशा वही मान लौटाता है जो आपने पास किया था। अज्ञात id नया ड्राफ़्ट नहीं, बल्कि 404 है, जो NotFoundException के रूप में throw होता है।
ड्राफ़्ट के फ़ील्ड API के नामों वाले एक array की कुंजियाँ हैं, इसलिए ड्राफ़्ट जिस thread का जवाब है वह threadId है। ड्राफ़्ट camelCase कुंजियों वाले array के रूप में लौटता है, इसलिए $draft['subject'] subject पढ़ता है। हर write सिर्फ़ object और id लौटाता है, इसलिए पूरा ड्राफ़्ट get से पढ़ें।
list उसी तरह पेज करता है जैसे threads->list। API का pageToken nextCursor के रूप में लौटता है और cursor: के रूप में जाता है, और listAll और iterate आपके लिए उसका पीछा करते हैं। iterate एक Generator लौटाता है जो एक बार में एक ड्राफ़्ट yield करता है। एक पेज में 25 ड्राफ़्ट होते हैं, जब तक limit: 100 तक न माँगे। query: threads->list का खोज syntax लेता है, और खोज कभी ड्राफ़्ट से बाहर नहीं जाती। पंक्ति में सिर्फ़ object और id होते हैं, इसलिए प्राप्तकर्ता, subject और बॉडी के लिए get कॉल करें।
ड्राफ़्ट की सूची कोई hasMore नहीं बताती, इसलिए जब भी cursor लौटा हो hasMore true होता है। सर्वर हर भरे पेज पर एक cursor देता है, इसलिए जो आख़िरी पेज संयोग से भरा हो उसके बाद एक ख़ाली पेज आता है।
ड्राफ़्ट DRAFT लेबल वाले थ्रेड के रूप में सहेजा जाता है, इसीलिए $client->threads->list(folder: 'draft') वही ड्राफ़्ट सूचीबद्ध करता है। get, update और delete किसी सामान्य थ्रेड id का जवाब 404 से देते हैं, भले ही threads->get उसे खोल ले। delete ड्राफ़्ट को हमेशा के लिए हटा देता है। वह Bin में नहीं जाता और उसे वापस नहीं लाया जा सकता।
ड्राफ़्ट भेजने के लिए उसकी id emails->send को draftId के रूप में पास करें। ड्राफ़्ट सामग्री देता है और send envelope देता है। ड्राफ़्ट को template या translate के साथ नहीं मिलाया जा सकता।
$client->emails->send([ 'from' => '[email protected]', 'to' => '[email protected]', 'draftId' => 'draft-5f0c2a9e-8b1d-4e7a-a3c6-2d9f41b7e0c8',]);पैरामीटर: drafts->create और drafts->update
toarray- प्राप्तकर्ताओं के पते स्ट्रिंग की सूची के रूप में, `emails->send` द्वारा स्वीकार किए जाने वाले array रूपों में नहीं, क्योंकि यह endpoint सूची को कॉमा से अलग की गई उस सूची में जोड़ता है जो driver चाहता है। स्ट्रिंग में display name हो सकता है, जैसे `Ada Lovelace <[email protected]>`, पर कॉमा वाला नाम दो टूटे हुए प्राप्तकर्ताओं में बँट जाता है। `emails->send` के उलट, यहाँ क्लाइंट अकेली स्ट्रिंग को सूची में नहीं लपेटता, इसलिए `['[email protected]']` पास करें। create पर छोड़ी गई सूची ख़ाली के रूप में सहेजी जाती है। update पर छोड़ा गया फ़ील्ड सहेजे गए प्राप्तकर्ताओं को जस का तस छोड़ देता है, क्योंकि handler पहले ड्राफ़्ट पढ़ता है और फिर merge करता है।
ccarray- Cc पते, `to` जैसे ही रूप में। create पर छोड़ने पर ख़ाली, और update पर छोड़ने पर अपरिवर्तित।
bccarray- Bcc पते, `to` जैसे ही रूप में। create पर छोड़ने पर ख़ाली, और update पर छोड़ने पर अपरिवर्तित।
subjectstring- ड्राफ़्ट का subject, अधिकतम 998 अक्षर, जो RFC 5322 की पंक्ति सीमा है। create पर यह डिफ़ॉल्ट रूप से ख़ाली स्ट्रिंग होता है, और ख़ाली subject `(no subject)` के रूप में सहेजा जाता है, इसलिए ड्राफ़्ट में हमेशा एक subject होता है।
htmlstring- ड्राफ़्ट की बॉडी markup के रूप में, अधिकतम 1,000,000 वर्ण। यही बॉडी जीतती है। `html` और `text` दोनों driver के इकलौते संदेश फ़ील्ड में जाते हैं, इसलिए दोनों भेजने पर यही सहेजी जाती है।
textstring- सादा-टेक्स्ट बॉडी, अधिकतम 1,000,000 वर्ण, जो सिर्फ़ तब इस्तेमाल होती है जब `html` न हो। ड्राफ़्ट दो हिस्सों के बजाय एक बॉडी सहेजता है, इसलिए यहाँ दिया गया टेक्स्ट ड्राफ़्ट पढ़ने पर बिना बदले `html` पर लौटता है।
fromstring or null- ड्राफ़्ट पर सहेजा जाने वाला भेजने वाले का पता, display name के साथ या उसके बिना। create पर छोड़ने से ड्राफ़्ट में कोई भेजने वाला नहीं होता। update पर छोड़ने से यह सहेजे गए ड्राफ़्ट से आगे ले जाया जाता है। driver उसे दी गई चीज़ों से पूरा संदेश फिर से बनाता है, इसलिए जो आंशिक patch इसे छोड़ दे वह चुने गए भेजने वाले को चुपचाप बदल देगा। update पर ख़ाली स्ट्रिंग या null इसे हटा देता है।
threadIdstring- ड्राफ़्ट को किसी मौजूदा thread से जोड़ें ताकि वह जवाब के रूप में सहेजा जाए। `from` की तरह, update पर छोड़ने से यह आगे ले जाया जाता है, क्योंकि इसके बिना संदेश फिर से बनाने से जवाब अपने thread से अलग हो जाता। update पर ख़ाली स्ट्रिंग इसे अलग कर देती है। ड्राफ़्ट फिर भी अपनी id के तहत अपने अलग thread के रूप में सहेजा जाता है, इसलिए वह जिस thread का जवाब है उसके भीतर नहीं, बल्कि ड्राफ़्ट के साथ सूची में दिखता है।
किसी फ़ील्ड को बनाए रखने के लिए उसे छोड़ दें। null पास करना यही नहीं है। क्लाइंट उसे भेजता है, और update पर from को छोड़कर हर फ़ील्ड उसे 422 invalid_parameter के साथ अस्वीकार करता है, जहाँ null भेजने वाले को हटा देता है। वैकल्पिक मानों के array को पास करने से पहले array_filter($fields, static fn(mixed $value): bool => $value !== null) से गुज़ारें। बॉडी भी सख़्त है। इन आठ के बाहर का फ़ील्ड भी इसी तरह अस्वीकार किया जाता है, और अटैचमेंट के लिए कोई फ़ील्ड नहीं है।
जवाब: एक ड्राफ़्ट (drafts->get)
objectstring- हमेशा `draft`।
idstring- ड्राफ़्ट की id, `draft-` के बाद एक UUID। writes पूरे ड्राफ़्ट के बजाय सिर्फ़ `object` और `id` के साथ जवाब देते हैं, इसलिए भेजी गई id दोबारा इस्तेमाल करने के बजाय नतीजे से id पढ़ें।
toarray- प्राप्तकर्ताओं के पते जैसे ड्राफ़्ट ने सहेजे, सादे, किसी भी display name के बिना। जब ड्राफ़्ट में कोई न हो तो ख़ाली सूची, कभी null नहीं।
ccarray- सहेजे गए Cc पते। जब ड्राफ़्ट में कोई न हो तो ख़ाली सूची, कभी null नहीं।
bccarray- सहेजे गए Bcc पते। जब ड्राफ़्ट में कोई न हो तो ख़ाली सूची, कभी null नहीं।
subjectstring- सहेजा गया subject, कभी null नहीं। बिना subject के सहेजा गया ड्राफ़्ट `(no subject)` पढ़ा जाता है, जो मेलबॉक्स द्वारा सहेजा गया placeholder है, इसलिए ख़ाली स्ट्रिंग की जाँच करने के बजाय उससे तुलना करें।
htmlstring- सहेजी गई बॉडी, या जहाँ ड्राफ़्ट में बॉडी न हो वहाँ ख़ाली स्ट्रिंग। लौटते समय कोई अलग text फ़ील्ड नहीं होता, इसलिए सिर्फ़ `text` से सहेजा गया ड्राफ़्ट यहीं लौटता है।
fromstring or null- वह पता जिसके साथ ड्राफ़्ट सहेजा गया, जो सिर्फ़ तब तक बताया जाता है जब तक वर्कस्पेस उससे भेज सकता है। बिना भेजने वाले के सहेजे गए ड्राफ़्ट, या ऐसे पते से सहेजे गए ड्राफ़्ट के लिए जो अब नहीं रहा, यह null है।
threadIdstring or null- वह thread जिसका ड्राफ़्ट जवाब है, या नई बातचीत शुरू करने वाले ड्राफ़्ट के लिए null।
attachmentsarray- हर प्रविष्टि में सिर्फ़ `filename` और `contentType` होते हैं, क्योंकि ड्राफ़्ट के अटैचमेंट बिना सामग्री के, नाम और टाइप के रूप में सहेजे जाते हैं। एक `update` इस सूची को ख़ाली कर देता है।