संपर्क
`contacts.list`, `get`, `create`, `update` और `delete`।
हर method
const page = await openemail.contacts.list({ limit: 100 }) const contact = await openemail.contacts.get('[email protected]') const saved = await openemail.contacts.create({ email: '[email protected]', name: 'Grace Hopper', notes: 'Met at the compiler workshop', }) await openemail.contacts.update(saved.email, { notes: null }) await openemail.contacts.delete(saved.email) console.log(page.items.length, page.hasMore, contact.source, contact.lastSeenAt)सबसे हाल में देखे गए पहले, और जिन contacts को कभी मेल नहीं भेजा गया वे सबसे अंत में। source तब auto होता है जब पंक्ति इसलिए लिखी गई कि किसी सदस्य ने ऐप composer से उस पते पर संदेश भेजा, जो किसी के उसे सहेजने से भौतिक रूप से अलग दावा है। किसी पते से मेल आने पर कुछ नहीं लिखा जाता, और इस API से भेजने पर भी नहीं।
पता-पुस्तिका किसी एक व्यक्ति की नहीं, workspace की होती है, इसलिए किसी भी सदस्य द्वारा सहेजा गया contact हर सदस्य और हर कुंजी को दिखता है। create source को manual लिखता है और contact को लिखते समय ही डिफ़ॉल्ट audience में डाल देता है। अपनी सूचियों के नाम audienceIds में दें ताकि वे उसी कॉल में जुड़ जाएँ — इसके लिए audiences:write भी चाहिए — या contact को बाद में openemail.audiences.addContact से जोड़ें।
पते छोटे अक्षरों में संग्रहित होते हैं और आपके दिए पते को क्लाइंट encode करता है, इसलिए [email protected] सही पंक्ति तक पहुँचता है। पता ही पहचान है, इसलिए update उसे बदल नहीं सकता: contact को हटाना है तो delete और create करना होगा।
पैरामीटर: contacts.list
limitnumber- प्रति पेज कितने contacts लौटाने हैं: 1 से 200 के बीच एक integer, डिफ़ॉल्ट 50। इसे coerce किया जाता है, इसलिए query string से आया `'100'` चलेगा, और सीमा के बाहर का मान clamp होने के बजाय 422 देता है।
cursorstring- पिछले पेज का `nextCursor`। इसे कभी ख़ुद न बनाएँ: ऐसे contact का नाम लेने वाला cursor जो अब मौजूद नहीं है, 400 `invalid_cursor` देता है, जिसका मतलब है कि आपकी paging स्थिति बासी है और walk को बिना cursor के फिर से शुरू करना चाहिए।
sourceContactSource- `'manual'` उन contacts के लिए जिन्हें किसी ने जानबूझकर सहेजा, `'auto'` उनके लिए जिन्हें ऐप composer ने दर्ज किया। पूरी पुस्तिका के लिए इसे छोड़ दें।
प्रतिक्रिया: ContactResource
contacts.list एक Page<ContactResource> में resolve होता है, इसलिए पंक्तियाँ page.items पर होती हैं और जब तक page.hasMore सही है, walk page.nextCursor का अनुसरण करता है। get, create और update में से हर एक एक ContactDetailResource में resolve होता है — वही पंक्ति, साथ में audiences। पता-पुस्तिका असीमित है, इसीलिए यह route ऐसा array लौटाने के बजाय pages में देता है जो चुपचाप 200 पर रुक जाता।
object'contact'- हमेशा स्ट्रिंग `contact`, list की पंक्तियों पर भी और `get` पर भी।
emailstring- पता, लिखते समय छोटे अक्षरों में बदला हुआ, ताकि `[email protected]` और `[email protected]` एक ही contact हों; और यही वह कुंजी है जो हर contacts method लेता है, क्योंकि कोई contact id उजागर नहीं की जाती। पंक्तियाँ उस सदस्य या कुंजी की नहीं होतीं जिसने उन्हें लिखा, बल्कि workspace की होती हैं, इसलिए workspace के हर सदस्य और हर कुंजी के लिए एक ही पता-पुस्तिका है।
namestring | null- प्रदर्शित नाम। जब उस पते के लिए कभी कोई नाम दर्ज ही नहीं हुआ तो null। स्वचालित रूप से लिखी गई पंक्ति में नाम तभी आता है जब header ने पते के अलावा कुछ दिया हो, और वह उपयोगकर्ता के टाइप किए नाम को कभी नहीं मिटा सकता।
source'manual' | 'auto' | (string & {})- `auto` का अर्थ है कि पंक्ति इसलिए लिखी गई कि उपयोगकर्ता ने उस पते पर मेल भेजा; `manual` का अर्थ है कि किसी ने उसे हाथ से दर्ज किया — भौतिक रूप से अलग दावा — और कोई upsert `manual` को वापस `auto` पर नहीं गिराता। किसी पते से मेल आने पर जानबूझकर कोई पंक्ति नहीं लिखी जाती, इसलिए जिसने सिर्फ़ आपको लिखा है वह यहाँ नहीं होगा; union खुला रहता है क्योंकि column मुक्त पाठ है जिसका डिफ़ॉल्ट `manual` है।
notesstring | null- इस व्यक्ति के बारे में किसी ने ऐप में या `update` के ज़रिए जो लिखा, वह मुक्त पाठ; कभी उत्पन्न नहीं किया जाता। जब किसी ने कुछ नहीं लिखा तो null, और `update` पर स्पष्ट null इसे साफ़ कर देता है।
lastSeenAtstring | null- ISO-8601 UTC, हर बार तब बढ़ाया जाता है जब कोई सदस्य ऐप composer से उस पते पर भेजता है — उससे मेल आने पर नहीं, जिससे कुछ भी नहीं लिखा जाता। `create` से सहेजे गए ऐसे contact पर null जिसे कभी मेल नहीं भेजा गया, और यह route जो अवरोही `lastSeenAt` क्रम लौटाता है उसमें वे सबसे अंत में आते हैं।
audiencesArray<ContactAudienceResource>- केवल `get`, `create` और `update` पर, list की पंक्तियों पर कभी नहीं। contact जिन-जिन audiences में है वे सब `{ id, name, builtin }` के रूप में, डिफ़ॉल्ट वाली सहित। जिस audience में हर contact होता है उस पर `builtin` `default` होता है और किसी के बनाए audience पर null, इसलिए नाम के बजाय इसी पर शाखा बनाएँ, क्योंकि नाम कोई भी बदल सकता है।