सामग्री पर जाएं
CMDB में निर्यात करना

CMDB में निर्यात करना

Markdown के रूप में देखें

अगर आप पहले से कोई CMDB या एसेट रजिस्टर चलाते हैं, तो Status200 उसकी जगह लेने की कोशिश नहीं कर रहा। उसके पास जो है और CMDB में आम तौर पर नहीं होता, वह है असल में जो चल रहा है उसकी एक तस्वीर, जो बिना किसी के रखरखाव के अद्यतन रहती है: टेलीमेट्री से खोजी हुई, और उन पोलर से जो पहले से आपके नेटवर्क और क्लाउड खातों पर नज़र रखते हैं। यह पेज उस तस्वीर को आपके अपने रिकॉर्ड सिस्टम में खींचने की विधि है।

सिंक कैसे काम करता है

सिंक एक जॉब है जिसे आप शेड्यूल पर चलाते हैं। वह API कुंजी के साथ REST API से इन्वेंटरी सूची पढ़ता है, हर आइटम को उसकी पहचान कुंजी से आपके CMDB की किसी पंक्ति से मिलाता है, और मेल बैठाने के लिए पंक्तियाँ बनाता, अपडेट करता या सेवा-मुक्त करता है। वह आइटम के कस्टम फ़ील्ड में मान वापस भी लिख सकता है।

flowchart TB J["आपका सिंक जॉब,<br/>शेड्यूल पर"] -->|"API कुंजी के साथ<br/>POST get-list"| O["Status200 इन्वेंटरी"] O -->|"आइटम JSON या CSV में,<br/>एक बार में एक पेज"| M["हर आइटम को उसके<br/>entityKey पर मिलाएँ"] M --> C["CMDB पंक्तियाँ बनाएँ,<br/>अपडेट या सेवा-मुक्त<br/>करें"] C -.->|"वैकल्पिक: कस्टम फ़ील्ड<br/>वापस लिखें"| O

एक सिंक रन

आप क्या खींच सकते हैं

तीन REST संसाधन, हर एक Status200 API के मानक एंडपॉइंट के साथ:

संसाधनएंडपॉइंटइसमें क्या है
इन्वेंटरी आइटम/api/inventory-itemपरिवेश की हर चीज़ के लिए एक पंक्ति
कस्टम फ़ील्ड की परिभाषाएँ/api/inventory-item-custom-fieldआपके प्रोजेक्ट की अपनी फ़ील्ड शब्दावली
संबंध/api/inventory-item-relationshipआइटम के बीच दिशा वाले लिंक

किसी इन्वेंटरी आइटम के उपयोगी कॉलम:

कॉलमअर्थ
_idStatus200 की ID: इसे अपने बाहरी संदर्भ के रूप में इस्तेमाल करें
entityTypehost, k8s.pod, network.device, appliance, …
entityKeyएक स्थिर पहचान हैश। यह नाम बदलने के बाद भी बना रहता है, इसलिए मिलान के लिए यही बेहतर कुंजी है
displayNameवह नाम जो लोग पढ़ते हैं
sourcediscovered, inventory या manual
descriptionमुक्त टेक्स्ट
identifyingAttributesवे एट्रिब्यूट जो आइटम को वह बनाते हैं जो वह है, और जो कभी नहीं बदलते
descriptiveAttributesउस पर देखी गई बाकी हर चीज़: नीचे एसेट विवरण, होस्ट एसेट एट्रिब्यूट और नेटवर्क डिवाइस एसेट एट्रिब्यूट देखें
customFieldsआपके अपने फ़ील्ड, फ़ील्ड के नाम से
resourceType / resourceIdज़्यादा विस्तृत Status200 रिकॉर्ड का संकेत, जब वह मौजूद हो
firstSeenAt / lastSeenAtउसे पहली और आख़िरी बार कब देखा गया
isArchivedक्या उसे लाइव सूची से बाहर किया गया है

शुरू करने से पहले

सिंक को ऐसी API कुंजी चाहिए जो इन्वेंटरी पढ़ सके। Status200 Cloud पर, API कुंजियों के लिए Growth या उससे ऊपर का प्लान चाहिए।

  1. एक API कुंजी बनाएँ

    प्रोजेक्ट सेटिंग्स → उन्नत → API कुंजियाँ खोलें और API कुंजी बनाएँ पर क्लिक करें। उसे एक नाम दें, और एक्सेस के नीचे प्रोजेक्ट में सब कुछ पढ़ने के लिए दर्शक चुनें, या उसे केवल वह देने के लिए अनुमतियाँ बाद में चुनें जो सिंक को चाहिए।

  2. उसे केवल वही दें जो उसे चाहिए

    केवल पढ़ने वाले निर्यात के लिए एक अनुमति चाहिए, Read Telemetry Service: इन्वेंटरी की अपनी अनुमतियाँ नहीं हैं, वह टेलीमेट्री की अनुमतियाँ साझा करती है। कुंजी के पेज पर, अनुमति जोड़ें पर क्लिक करें और उसे चुनें। मान वापस लिखने के लिए, Edit Telemetry Service भी जोड़ें।

  3. कुंजी कॉपी करें

    कुंजी के पेज से API कुंजी कॉपी करें, और उसे अपने जॉब के लिए उपलब्ध कराएँ:

    Bash
    export STATUS200_API_KEY="your-api-key"

कुंजी हर अनुरोध के ApiKey हेडर में भेजी जाती है, और वह अपने ही प्रोजेक्ट की इन्वेंटरी पढ़ती है, इसलिए अनुरोध में किसी प्रोजेक्ट का नाम नहीं होता।

कैटलॉग खींचें

अपने चाहे कॉलम के साथ सूची एंडपॉइंट पर POST करें। select ज़रूरी है: API केवल वही लौटाता है जो आप माँगते हैं।

Bash
curl -X POST 'https://status200.ru/api/inventory-item/get-list' \
  -H "ApiKey: $STATUS200_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "query": { "isArchived": false },
    "select": {
      "_id": true,
      "entityType": true,
      "entityKey": true,
      "displayName": true,
      "source": true,
      "customFields": true,
      "descriptiveAttributes": true,
      "lastSeenAt": true
    },
    "sort": { "displayName": "ASC" },
    "limit": 100,
    "skip": 0
  }'

सेल्फ़-होस्टेड इंस्टॉल पर, https://status200.ru की जगह अपना Status200 पता इस्तेमाल करें। जवाब { "data": [...], "count": ... } होता है, जहाँ count बताता है कि कुल कितने आइटम मेल खाते हैं। सब मिलने तक skip को अपने limit जितना बढ़ाकर पेज बदलें; limit 10,000 तक जा सकता है। तारीखें और _id के अलावा ID लिपटी हुई आती हैं, जैसे { "_type": "DateTime", "value": "..." } और { "_type": "ObjectID", "value": "..." }: उन्हें value से पढ़ें।

केवल नेटवर्क डिवाइस

सूची को entityType से छोटा करें:

Bash
curl -X POST 'https://status200.ru/api/inventory-item/get-list' \
  -H "ApiKey: $STATUS200_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "query": { "entityType": "network.device", "isArchived": false },
    "select": { "_id": true, "entityKey": true, "displayName": true, "customFields": true },
    "limit": 100,
    "skip": 0
  }'

हर नेटवर्क डिवाइस का descriptiveAttributes उसका होस्टनाम, IP पता, क्रम संख्या, MAC पता, निर्माता, मॉडल, फ़र्मवेयर, ऑपरेटिंग सिस्टम, भूमिका, साइट और स्थान रखता है: नीचे नेटवर्क डिवाइस एसेट एट्रिब्यूट देखें। पोलर जो कुछ और जानता है, जैसे इंटरफ़ेस और पड़ोसी, वह खुद Network Device रिकॉर्ड पर होता है: resourceId से /api/network-device/:id/get-item पर जाएँ, या सीधे /api/network-device/get-list खींचें।

CSV के रूप में

कोई भी सूची एंडपॉइंट ?output-type=csv के साथ JSON के बजाय CSV में जवाब देता है:

Bash
curl -X POST 'https://status200.ru/api/inventory-item/get-list?output-type=csv' \
  -H "ApiKey: $STATUS200_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{ "query": {}, "select": { "displayName": true, "entityType": true, "customFields": true }, "limit": 500, "skip": 0 }' \
  -o inventory.csv

डैशबोर्ड में All Items सूची भी इसी तरह निर्यात होती है, उन कस्टम फ़ील्ड कॉलम के साथ जो आपने चालू किए हैं। हर एसेट विवरण वहाँ भी एक कॉलम है: होस्टनाम, आईपी पता, क्रम संख्या, मॉडल और बाकी छिपे हुए शुरू होते हैं, इसलिए उन्हें कॉलम पिकर से चालू करें, और निर्यात में हर तथ्य का एक कॉलम आता है, पंक्ति चाहे होस्ट हो या नेटवर्क डिवाइस।

एसेट विवरण

होस्ट और नेटवर्क डिवाइस एक ही तथ्यों से बताए जाते हैं, जो एक ही कुंजियों के नीचे रखे जाते हैं। CMDB का एक कॉलम क्रम संख्या रखता है, पंक्ति चाहे सर्वर हो या स्विच, और डैशबोर्ड में किसी आइटम का एसेट विवरण कार्ड दोनों के लिए हर तथ्य एक ही क्रम में दिखाता है। जिस तथ्य की किसी ने जानकारी नहीं दी, वह छोड़े जाने के बजाय अज्ञात दिखता है, ताकि कमी दिखाई दे।

तथ्यकुंजीहोस्ट परनेटवर्क डिवाइस पर
होस्टनामhost.nameहोस्ट का नाम। यह होस्ट की पहचान है, इसलिए यह identifyingAttributes में हैडिवाइस का अपना नाम: उसका SNMP sysName, नहीं तो खोज में मिला NetBIOS या DNS नाम। कभी उसका IP पता नहीं
आईपी पताhost.ipहर पता जो कलेक्टर बताता हैवह पता जिसे Status200 पोल करता है, जब वह IP पता हो, नहीं तो वह पता जिसमें उसके प्रोब ने उस DNS नाम को बदला
MAC पताhost.macपता लगाया गयाडिवाइस पर टाइप किया गया, या जाँचे गए राउटर की ARP तालिका से सीखा गया
क्रम संख्याhost.serial_numberजोड़ा गयाENTITY-MIB
Manufacturerdevice.manufacturerजोड़ा गयाENTITY-MIB, नहीं तो जो sysDescr या sysObjectID बताता है
मॉडलdevice.model.nameजोड़ा गयाENTITY-MIB, नहीं तो जो sysDescr बताता है
फ़र्मवेयर संस्करणdevice.firmware.versionजोड़ा गयाENTITY-MIB, नहीं तो जो sysDescr बताता है
ऑपरेटिंग सिस्टमos.nameos.description (या os.type)जो sysDescr बताता है: Cisco IOS, Junos OS, Arista EOS, Linux
OS संस्करणos.versionपता लगाया गयाENTITY-MIB, नहीं तो जो sysDescr बताता है
Device Typedevice.typeजोड़ा गया। नहीं तो कार्ड उसे उसके OS और नाम से वर्गीकृत करता है (सर्वर, फ़ायरवॉल, ...)उसकी भूमिका: जो आपने दी, नहीं तो वह जिसके रूप में टोपोलॉजी मैप उसे बनाता है
Locationdevice.locationजोड़ा गया। नहीं तो कार्ड उसका क्लाउड ज़ोन दिखाता हैsysLocation। कार्ड पहले उसकी साइट दिखाता है

नीचे होस्ट तालिका और नेटवर्क डिवाइस तालिका विस्तार से बताती हैं कि हर मान कहाँ से आता है।

होस्ट एसेट एट्रिब्यूट

किसी होस्ट का descriptiveAttributes वे एसेट तथ्य रखता है जो CMDB की पंक्ति को आम तौर पर चाहिए, उनके OpenTelemetry एट्रिब्यूट नाम से:

फ़ील्डकुंजीडिफ़ॉल्ट रूप से इकट्ठा होता है?
IP पतेhost.ipहाँ: मशीन के कई पते हों तो कॉमा से अलग
MAC पतेhost.macहाँ: कॉमा से अलग, हर चालू इंटरफ़ेस का एक, AC-DE-48-23-45-67 के रूप में
आर्किटेक्चरhost.archहाँ
मशीन IDhost.idहाँ: Windows पर मशीन GUID, Linux पर /etc/machine-id
ऑपरेटिंग सिस्टमos.type, os.description, os.versionहाँ
क्लाउड में स्थानcloud.provider, cloud.region, cloud.availability_zoneकेवल क्लाउड डिटेक्टर के साथ
क्रम संख्याhost.serial_numberएक कॉन्फ़िगरेशन चरण चाहिए
निर्माताdevice.manufacturerएक कॉन्फ़िगरेशन चरण चाहिए
मॉडलdevice.model.nameएक कॉन्फ़िगरेशन चरण चाहिए
फ़र्मवेयर (BIOS या UEFI) संस्करणdevice.firmware.versionएक कॉन्फ़िगरेशन चरण चाहिए
ऑपरेटिंग सिस्टम का नामos.nameकेवल उन SDK से जो इसे बताते हैं: नहीं तो os.description OS का नाम बताता है
डिवाइस प्रकारdevice.typeवैकल्पिक: इसे भी उसी तरह जोड़ें (Hypervisor, Workstation)
स्थानdevice.locationवैकल्पिक: इसे भी उसी तरह जोड़ें (Frankfurt DC, Rack B4)

"हाँ" वाली हर चीज़ कलेक्टर के resourcedetection प्रोसेसर से आती है, और वह Status200 के आपके लिए बनाए कॉन्फ़िगरेशन में पहले से है।

cloud.* कुंजियों के लिए उस प्रोसेसर में एक क्लाउड डिटेक्टर चाहिए: detectors: [system, env, ec2], या दूसरों के लिए gcp या azure। साथ आने वाला कॉन्फ़िगरेशन केवल [system, env] चलाता है, इसलिए वे तीनों तब तक खाली रहती हैं जब तक आप एक न जोड़ें।

क्रम संख्या, निर्माता, मॉडल और फ़र्मवेयर का कोई रिसोर्स डिटेक्टर नहीं है: वे मशीन के फ़र्मवेयर में रहते हैं, जो Windows पर WMI और Linux पर DMI से पढ़े जाते हैं, इसलिए उन्हें मशीन तैयार करते समय एक बार रिसोर्स पर जोड़ा जाता है। पंक्ति पर चाहा गया डिवाइस प्रकार या स्थान भी उसी तरह जोड़ा जाता है। इन्वेंटरी एट्रिब्यूट में हर ऑपरेटिंग सिस्टम के लिए सटीक स्निपेट है। host.manufacturer, host.model.name, host.firmware.version और host.bios.version दूसरी वर्तनी के रूप में स्वीकार किए जाते हैं और device.* कुंजियों के नीचे रखे जाते हैं (और device.serial_number को host.serial_number के नीचे), इसलिए सिंक हर तथ्य के लिए हमेशा एक ही कुंजी पढ़ता है।

अगर आपका CMDB पहले से किसी हार्डवेयर पहचानकर्ता पर कुंजी रखता है, तो मिलान की कुंजी के रूप में host.id पर नज़र डालना उचित है: entityKey के उलट, यह मशीन की अपनी ID है, इसलिए यह उससे मेल खाती है जो कोई एंडपॉइंट मैनेजमेंट टूल उसी मशीन के लिए बताता है।

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

नेटवर्क डिवाइस एसेट एट्रिब्यूट

नेटवर्क डिवाइस (entityType: network.device) अपने Network Device रिकॉर्ड से मिरर किया जाता है, और उसका descriptiveAttributes उन्हीं तथ्यों के लिए वही कुंजियाँ इस्तेमाल करता है जो होस्ट करता है, ताकि CMDB का एक कॉलम क्रम संख्या रखे, पंक्ति चाहे सर्वर हो या स्विच:

फ़ील्डकुंजीकहाँ से आता है
होस्टनामhost.nameडिवाइस का अपना नाम: उसका SNMP sysName, नहीं तो खोज में मिला NetBIOS या रिवर्स-DNS नाम। जब केवल उसका IP पता उसे नाम देता है तो छोड़ दिया जाता है
IP पताhost.ipवह पता जिसे Status200 पोल करता है, जब वह IP पता हो। DNS नाम पर पोल किए जाने वाले डिवाइस के लिए, वह पता जिसमें उसके प्रोब ने पिछली बार उस नाम को बदला
DNS नामnet.device.dns_nameखोज के समय मिला रिवर्स-DNS नाम, या वह DNS नाम जिसे Status200 पोल करता है
MAC पताhost.macडिवाइस पर टाइप किया गया, या जाँचे गए राउटर की ARP तालिका से सीखा गया
निर्माताdevice.manufacturerENTITY-MIB entPhysicalMfgName, नहीं तो वह निर्माता जो sysDescr बताता है, नहीं तो sysObjectID का वेंडर
मॉडलdevice.model.nameENTITY-MIB entPhysicalModelName, नहीं तो वह मॉडल जो sysDescr बताता है
क्रम संख्याhost.serial_numberENTITY-MIB entPhysicalSerialNum
फ़र्मवेयर संस्करणdevice.firmware.versionENTITY-MIB entPhysicalFirmwareRev, नहीं तो वह फ़र्मवेयर जो Ubiquiti, HPE और Aruba डिवाइस पर sysDescr बताता है
ऑपरेटिंग सिस्टमos.nameवह ऑपरेटिंग सिस्टम जो sysDescr बताता है
सॉफ़्टवेयर या OS संस्करणos.versionENTITY-MIB entPhysicalSoftwareRev, नहीं तो वह रिलीज़ जो sysDescr बताता है
सिस्टम विवरणos.descriptionsysDescr
डिवाइस प्रकारdevice.typeवह भूमिका जो आपने डिवाइस को दी, नहीं तो वह भूमिका जिसके रूप में टोपोलॉजी मैप उसे वर्गीकृत करता है, आपके प्रोजेक्ट के दिए नाम से
स्थानdevice.locationsysLocation, जब तक वह किसी एजेंट का डिफ़ॉल्ट न हो, जैसे Net-SNMP का "Sitting on the Dock of the Bay"
साइटstatus200.site.nameवह Network Site जिसे डिवाइस सौंपा गया है
पोल किया गया पताnet.device.hostnameवह पता जिसे Status200 पोल करता है: कोई IP पता या DNS नाम। host.name और host.ip के आने से पहले लिखे गए सिंक के लिए रखा गया है

ENTITY-MIB वाली पंक्तियाँ डिवाइस के पहले SNMP वॉक के बाद भरती हैं। जिस डिवाइस का वॉक नहीं होता, क्योंकि वह केवल पिंग से मॉनिटर होता है या अभी पोल नहीं हुआ, वह फिर भी अपना नाम, निर्माता, ऑपरेटिंग सिस्टम और स्थान उसके पते के पिछले डिस्कवरी स्कैन ने SNMP से जो पढ़ा उससे पाता है, और अपना MAC पता किसी जाँचे गए राउटर की ARP तालिका से। जो डिवाइस ENTITY-MIB लागू नहीं करता, उसके पास बताने को कोई क्रम संख्या या फ़र्मवेयर नहीं होता। फिर भी कई प्लेटफ़ॉर्म पर उसका sysDescr मॉडल और ऑपरेटिंग सिस्टम बताता है: एक Cisco Meraki MX Meraki MX85 बताता है, जिससे निर्माता और मॉडल भर जाते हैं। जिस प्लेटफ़ॉर्म के sysDescr का कोई जाना-पहचाना रूप नहीं है, वह अनुमान के बजाय कुछ नहीं जोड़ता।

डिवाइस पर सहेजा गया मान, टाइप किया गया या API से सेट किया गया, डिस्कवरी जो पढ़ती है उससे कभी नहीं बदला जाता। डिवाइस के अपने वॉक ने जो मान पढ़ा और किसी स्कैन ने जो मान पढ़ा, उनमें से नया वाला इस्तेमाल होता है। किसी स्कैन का पढ़ा हुआ तभी इस्तेमाल होता है जब स्कैन को उस पते पर वही मशीन मिली हो: जब उसका पढ़ा सिस्टम नाम, sysObjectID या NetBIOS नाम डिवाइस वाले से मेल नहीं खाता, तो उसने वहाँ जो पढ़ा उसमें से कुछ भी इस्तेमाल नहीं होता। आइटम का एसेट विवरण कार्ड बताता है कि हर मान कहाँ से और कब आया।

होस्टनाम कभी IP पता नहीं होता। जिस डिवाइस को केवल उसका पता नाम देता है, उसके पास host.ip होता है और कोई host.name नहीं। जैसे ही उसका SNMP वॉक कोई सिस्टम नाम बताता है, अगली बार में host.name आ जाता है।

ये मान हर पंद्रह मिनट में Network Device रिकॉर्ड से कॉपी किए जाते हैं, और वे पिछले मानों में जोड़े जाने के बजाय उन्हें बदल देते हैं, इसलिए डिवाइस पर साफ़ किया गया मान (मान लीजिए, हटाया गया MAC पता) इन्वेंटरी आइटम से भी चला जाता है।

कोई उपलब्ध अपग्रेड संस्करण नहीं है: SNMP में इसके लिए कोई मानक ऑब्जेक्ट नहीं है, इसलिए Status200 वह संस्करण दर्ज करता है जो डिवाइस चला रहा है।

आइटम को CMDB पंक्तियों से मिलाएँ

displayName पर नहीं, entityKey पर मिलान करें। यह आइटम के पहचान वाले एट्रिब्यूट का हैश है, इसलिए यह नाम बदलने और नए टैग के बाद भी बना रहता है: नया लेबल पाने वाला होस्ट वही कुंजी रखता है जबकि उसका दिखने वाला नाम बदल जाता है। _id भी उतनी ही स्थिर है, और अगर आप हमेशा केवल एक प्रोजेक्ट से बात करते हैं तो यह सबसे सरल फ़ॉरेन की है।

customFields में तारीखें ISO-8601 UTC स्ट्रिंग होती हैं, और CSV निर्यात उन्हें डैशबोर्ड के दिखाए ज़्यादा सहज रूप के बजाय इसी रूप में लिखता है, ताकि वे पार्सिंग की किसी हैरानी के बिना इम्पोर्ट हों।

ताज़ा रखें

कोई चेंज फ़ीड नहीं है। अपनी सुविधा के अंतराल पर सूची एंडपॉइंट को पोल करें, और entityKey पर तुलना करें। lastSeenAt बताता है कि किसी आइटम को आख़िरी बार कब देखा गया, जो आम तौर पर यह पहचानने का सबसे सस्ता तरीका है कि आपके पिछले रन के बाद क्या चुप हो गया है।

जो आइटम दो रन के बीच गायब हो जाता है, वह या तो पुराना होकर हट गया (कोई खोजा गया आइटम जो अपनी अवधि से ज़्यादा चुप रहा) या उसका मालिक रिकॉर्ड हटा दिया गया। कस्टम फ़ील्ड मान रखने वाला मिरर किया गया आइटम अपना रिकॉर्ड जाने पर हटाने के बजाय संग्रहित किया जाता है, इसलिए उससे जुड़ा एसेट डेटा खोए बिना यह देखने के लिए कि क्या सेवा-मुक्त हुआ है, "isArchived": true के साथ क्वेरी करें।

वापस लिखें

वही एंडपॉइंट लिखना भी स्वीकार करते हैं, इसलिए सिंक customFields में मान भेज सकता है: उदाहरण के लिए, आपके CMDB का पहले से रखा एसेट टैग, मेल खाने वाले Status200 आइटम पर लगाया हुआ। इसके लिए कुंजी को Edit Telemetry Service चाहिए।

आप उन चीज़ों के लिए भी आइटम जोड़ सकते हैं जिन्हें Status200 नहीं देख सकता, POST /api/inventory-item के साथ, external.service, external.database या appliance के entityType और एक displayName के साथ। पहचान कुंजी Status200 आपके लिए निकालता है, और ऐसे आइटम कभी समाप्त नहीं होते। इसके लिए कुंजी को Create Telemetry Service चाहिए।

समस्या निवारण

हर अनुरोध 402 Payment Required के साथ अस्वीकार होता है

Status200 Cloud पर, API कुंजियाँ तभी तक काम करती हैं जब तक प्रोजेक्ट Growth या उससे ऊपर के प्लान पर है। कुछ भी हटाया नहीं जाता: प्रोजेक्ट के प्लान पर लौटते ही कुंजी जैसी है वैसी फिर से काम करने लगती है। अपने प्लान से नीचे API कुंजियाँ और SCIM देखें।

हर अनुरोध 422 You do not have permissions लौटाता है

कुंजी के पास इन्वेंटरी पढ़ने वाली कोई अनुमति नहीं है। अनुमतियाँ बाद में चुनें के साथ बनी कुंजी तब तक कुछ नहीं कर सकती जब तक उसे कोई अनुमति न मिले: उसके पेज पर Read Telemetry Service जोड़ें, जैसा शुरू करने से पहले में है।

सूची मेरे ज़रूरी कॉलम के बिना लौटती है

सूची केवल वही कॉलम लौटाती है जिन्हें select बताता है, और _id। जो भी कॉलम आप पढ़ते हैं उसे select में जोड़ें, descriptiveAttributes और customFields भी।

जिस आइटम की मुझे उम्मीद थी वह नहीं है

जब आप "isArchived": false भेजते हैं तो संग्रहित आइटम छोड़ दिए जाते हैं। खोजा गया आइटम अपनी अवधि से ज़्यादा चुप रहने पर हटा दिया जाता है, और मिरर किया गया आइटम अपने रिकॉर्ड के साथ चला जाता है। संग्रहित आइटम देखने के लिए "isArchived": true माँगें।

अगले कदम