---
title: "Telserv से Bird पर माइग्रेट करें"
description: "Telserv पार्टनर API इंटीग्रेशन को Bird API पर ले जाएँ, हर ऑपरेशन समूह को उसकी Bird कॉल से मैप करें, और देखें कि Bird में हर काम कैसे होता है।"
canonical: "https://bird.com/hi-in/dastavez/guides/numbers/migrate/telserv"
---

# Telserv से Bird पर माइग्रेट करें

यह गाइड उन इंटीग्रेशन के लिए है जो नंबर खरीदने, रूट करने और रिलीज़ करने के लिए Telserv पार्टनर API (V1 या V2) को कॉल करते हैं, और अब Bird API पर जा रहे हैं।

Bird API हर Bird उत्पाद को सेवा देता है, इसलिए इसके नंबर और वॉइस ऑपरेशन Telserv के बजाय Bird के अपने नियमों का पालन करते हैं। आपका इंटीग्रेशन जिन क्षमताओं का उपयोग करता है, उनमें से अधिकांश के लिए एक Bird कॉल है। एंडपॉइंट, पेलोड, पहचानकर्ता और ऑथेंटिकेशन अलग हैं, इसलिए इंटीग्रेशन को दोबारा लिखने की योजना बनाएँ। जहाँ Bird कोई काम अलग तरीके से करता है, वहाँ यह गाइड बताती है कि कैसे।

यह गाइड अभी तैयार हो रही है। इसमें वह शामिल है जो Bird करता है, और माइग्रेशन के साथ यह बढ़ती जाती है। यदि आपका उपयोग किया जाने वाला कोई Telserv ऑपरेशन यहाँ सूचीबद्ध नहीं है, तो उसे जोड़ने से पहले उसका दायरा तय करना और उस पर काम करना बाकी है; इसके बारे में अपने माइग्रेशन संपर्क से पूछें।

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

- पूर्ण पहचान सत्यापन वाला एक Bird संगठन, जो पहली नंबर खरीद के लिए आवश्यक है।
- एक [API कुंजी](/docs/api/authentication), जिसमें वे स्कोप हों जिनका उपयोग उदाहरण करते हैं: नंबरों और ऑर्डरों के लिए write स्तर पर `numbers`, स्वामित्व के कागज़ात वाले स्वतंत्र ऑपरेशनों के लिए write स्तर पर `compliance`, और SIP ट्रंक, वॉइस नंबरों और सत्यापित नंबरों के लिए write स्तर पर `voice_management`। टेस्ट कॉल के लिए `voice:write` भी चाहिए, और कॉल लेग पढ़ने के लिए `voice:read` चाहिए।
- वॉलेट बैलेंस। ऑर्डरों का भुगतान वॉलेट से होता है। [जब कोई ऑर्डर अस्वीकार हो](/docs/guides/numbers/buying-numbers#when-an-order-is-refused) में `402` और `412` अस्वीकृतियों के बारे में बताया गया है।

Telserv में आपका इंटीग्रेशन जिन नंबरों को प्रबंधित करता है, उन्हें दोबारा खरीदने की ज़रूरत नहीं है। आपके नंबर आपके Bird वर्कस्पेस में ले जाए जाने के बाद वे [`GET /v1/numbers`](/docs/api/reference/list-workspace-numbers) में दिखते हैं। यह कब होता है, इसकी पुष्टि आपका माइग्रेशन संपर्क करता है। ले जाए गए नंबर का `nda_` पहचानकर्ता पाने के लिए, देश कोड सहित अंक देकर `GET /v1/numbers?number=<digits>` से उसे खोजें, और `id` को `NUMBER_ID` के रूप में रखें।

उदाहरण आपकी कुंजी `BIRD_API_KEY` से और उसका [क्षेत्रीय होस्ट](/docs/api/regions) `BIRD_API_URL` से पढ़ते हैं: `bk_eu1_` कुंजी के लिए `https://eu1.platform.bird.com`, या `bk_us1_` कुंजी के लिए `https://us1.platform.bird.com`। अन्य वेरिएबल, जैसे `TRUNK_ID` और `NUMBER_ID`, किसी पिछली प्रतिक्रिया से मिला पहचानकर्ता रखते हैं; हर चरण बताता है कि वह कौन-सा वेरिएबल सेट करता है।

## अनुबंध में क्या बदलता है

| क्षेत्र       | Telserv पार्टनर API                                                                                             | Bird API                                                                                                                                                                                                                                                                         |
| ------------- | --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| प्रमाणीकरण    | `X-ApiKey` हेडर (V2) या `apiKey` पैरामीटर (V1), जिसे आपकी IP अनुमति सूची से जाँचा जाता है                       | `Authorization: Bearer` एक API कुंजी के साथ, जिसके स्कोप बताते हैं कि वह किन प्रोडक्ट क्षेत्रों का उपयोग कर सकती है। IP अनुमति सूची वैकल्पिक है: इसे [**API कुंजियाँ**](https://bird.com/dashboard/w/api-keys) में कुंजी पर **IP restrictions** के अंतर्गत सेट करें              |
| पहचानकर्ता    | पूर्णांक। नंबर खरीदने पर उसे नया `id` मिलता है                                                                  | प्रीफ़िक्स वाले TypeID, जैसे `nda_`, `nor_`, `vnu_` और `spt_`। जब तक नंबर आपको आवंटित रहता है, उसका `nda_` id वही रहता है                                                                                                                                                        |
| फ़ोन नंबर     | शुरुआती `+` के बिना अंक                                                                                         | शुरुआती `+` के साथ E.164                                                                                                                                                                                                                                                         |
| पेजिनेशन      | `start` और `limit` ऑफ़सेट, प्रति पेज अधिकतम 1000                                                                | कर्सर: `limit` अधिकतम 100 (डिफ़ॉल्ट 25), फिर `starting_after` को पिछले पेज के `next_cursor` पर सेट करें। देखें [पेजिनेशन](/docs/api/pagination)                                                                                                                                  |
| त्रुटियाँ     | `errorCode` किसी एक्सेप्शन क्लास का नाम बताता है, और `403` गुम संसाधन और कई सत्यापन विफलताओं, दोनों पर लौटता है | `error.code` एक स्थिर `E` कोड है, जिसका अपना दस्तावेज़ पेज होता है और जहाँ समाधान ज्ञात हो, वहाँ एक `remediation` भी होता है। गुम संसाधन पर `404` लौटता है, पूरी न हुई पूर्व-शर्त पर `412`, और अमान्य इनपुट पर फ़ील्ड विवरण के साथ `422`। देखें [त्रुटियाँ](/docs/guides/errors) |
| एनवायरनमेंट   | LIVE और SANDBOX, हर एक की अपनी कुंजियाँ                                                                         | एक ही एनवायरनमेंट। हर ऑर्डर एक असली नंबर खरीदता है और उसका शुल्क लेता है, और हर टेस्ट कॉल एक असली कॉल होती है                                                                                                                                                                    |
| फिर से प्रयास | कोई idempotency कुंजी नहीं                                                                                      | लिखने वाले अनुरोधों पर एक `Idempotency-Key` हेडर। वही कुंजी और वही बॉडी भेजने पर पहली प्रतिक्रिया `Idempotency-Replay: true` के साथ दोबारा मिलती है; वही कुंजी अलग बॉडी के साथ भेजने पर उत्तर `409` होता है। देखें [Idempotency](/docs/guides/idempotency)                       |

Bird API किसी अपरिचित क्वेरी पैरामीटर को `422` और [`E01029`](/docs/api/errors/E01029) के साथ अस्वीकार करता है। `city` जैसे केवल Telserv वाले फ़िल्टर आगे भेजने के बजाय अपने अनुरोधों से हटा दें।

## एक नंबर के दो पहचानकर्ता

आपके वर्कस्पेस को आवंटित वॉइस-सक्षम नंबर के दो रिकॉर्ड होते हैं, और हर रिकॉर्ड का अपना पहचानकर्ता होता है:

- आवंटन, जो [`GET /v1/numbers`](/docs/api/reference/list-workspace-numbers) से मिलता है। समर्पित नंबर के लिए इसका `id` `nda_` से शुरू होता है और साझा नंबर के लिए `nal_` से, और ऑर्डर का `number_id` उस नंबर का `nda_` पहचानकर्ता है जिसे ऑर्डर ने खरीदा। नंबर को पढ़ने, नाम देने और संदर्भित करने के लिए, और समर्पित नंबर को रिलीज़ करने के लिए इसका उपयोग करें।
- वॉइस रिकॉर्ड, `vnu_`, जो [`GET /v1/voice/numbers`](/docs/api/reference/list-voice-numbers) से मिलता है। नंबर की आने वाली कॉल कहाँ जाती हैं, यह पढ़ने और बदलने के लिए इसका उपयोग करें। जिस नंबर में वॉइस क्षमता नहीं है, जैसे केवल SMS वाला नंबर, उसका कोई वॉइस रिकॉर्ड नहीं होता।

वॉइस ऑपरेशन `nda_` या `nal_` पहचानकर्ता को `422` के साथ अस्वीकार करते हैं। किसी नंबर का वॉइस रिकॉर्ड खोजने के लिए, `search` को नंबर के अंकों पर सेट करके वॉइस नंबरों की सूची लें, और वह प्रविष्टि चुनें जिसका `provider.number_id` आवंटन के `id` के बराबर है। [किसी नंबर को अपने SIP ट्रंक पर रूट करें](#किसी-नंबर-को-अपने-sip-ट्रंक-पर-रूट-करें) में अनुरोध दिखाया गया है, और [अपने फ़ोन नंबर प्रबंधित करना](/docs/guides/numbers/managing-numbers#find-the-voice-record-that-routes-a-number) में यह खोज समझाई गई है।

Telserv का `GET /numbers/{dnisId}` Bird में दो रीड बन जाता है: स्थिति और स्वामित्व के कागज़ात के लिए आवंटन, और रूट के लिए वॉइस रिकॉर्ड।

## Telserv ऑपरेशनों को Bird से मैप करें

हर तालिका में एक काम, उसे करने वाली Telserv कॉल, और अब उसे करने वाली Bird कॉल दी गई है। हर तालिका के नीचे के नोट बताते हैं कि अनुरोध या प्रतिक्रिया में क्या बदलता है।

### खरीदारी

| काम                             | Telserv                                                  | Bird                                                                             |
| ------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------- |
| बिक्री के लिए उपलब्ध नंबर खोजें | `GET /shop`                                              | [`GET /v1/numbers/available`](/docs/api/reference/list-available-numbers)        |
| एक नंबर जाँचें                  | `GET /shop/{stockDnisId}`                                | [`GET /v1/numbers/available/{number}`](/docs/api/reference/get-available-number) |
| नंबर खरीदें                     | `POST /shop/{stockDnisId}`                               | [`POST /v1/numbers/orders`](/docs/api/reference/create-numbers-order)            |
| नंबर सुरक्षित करें              | `POST /shop/{stockDnisId}/reserve`, `GET /shop/reserved` | [`POST /v1/numbers/orders`](/docs/api/reference/create-numbers-order)            |

- **खोज।** `country_code` आवश्यक है, इसलिए एक खोज एक ही देश को कवर करती है। `prefix` में देश कोड के बाद के राष्ट्रीय अंक दिए जाते हैं: Telserv का `prefix=3170` अब `country_code=NL&prefix=70` बन जाता है। एरिया कोड के आधार पर परिणाम सीमित करने के लिए `city` की जगह `prefix` का उपयोग करें, और `productId` की जगह `number_type` और `capabilities` का उपयोग करें।
- **खोज परिणामों में कागज़ी कार्रवाई।** हर परिणाम में `excludeNumbersRequireVerification` फ़िल्टर की जगह `ownership_registration_required` होता है। `true` मान का अर्थ है कि नंबर का बिल खरीद के समय से बनता है, लेकिन उसके कागज़ात स्वीकृत होने तक वह कोई SMS नहीं भेजता और उस पर कोई आने वाली या जाने वाली वॉइस कॉल नहीं होती।
- **एक नंबर जाँचें।** इसे इसके E.164 नंबर से संबोधित किया जाता है।
- **कीमतें।** Telserv किसी नंबर और किसी प्रोडक्ट के विस्तृत रीड पर `pricing.staticPricing` लौटाता था। Bird में हर खोज परिणाम `pricing` में आपके संगठन के लिए अपनी कीमत देता है: `nrc` की जगह `setup_price`, और `mrc` की जगह प्रति `recurring_period` `recurring_price`, साथ में `intervals_per_charge`, जो बताता है कि एक शुल्क कितनी अवधियों का बिल बनाता है। [अपने रेफ़रेंस के साथ नंबर खोजें और खरीदें](#अपने-रेफ़रेंस-के-साथ-नंबर-खोजें-और-खरीदें) में कीमत वाले फ़ील्ड समझाए गए हैं।
- **खरीदें।** `number` और एक वैकल्पिक `reference` भेजें। ऑर्डर का भुगतान आपके वॉलेट से होता है। ज़्यादातर ऑर्डर `201` लौटाते हैं; जो ऑर्डर किसी कैरियर की प्रतीक्षा करता है वह `202` लौटाता है, और आपको उसकी स्थिति बार-बार जाँचनी होती है।
- **सुरक्षित करें।** नंबर ऑर्डर करने से वह सुरक्षित हो जाता है। पहले किसी संभावित नंबर को जाँचें, फिर उसे ऑर्डर करें।

### नंबर

| काम                       | Telserv                                         | Bird                                                                                                                                                                                                                                           |
| ------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| अपने नंबरों की सूची देखें | `GET /numbers`                                  | [`GET /v1/numbers`](/docs/api/reference/list-workspace-numbers)                                                                                                                                                                                |
| एक नंबर पढ़ें             | `GET /numbers/{dnisId}`                         | आवंटन के `nda_` या `nal_` id के साथ [`GET /v1/numbers/{number_id}`](/docs/api/reference/get-workspace-number), और वॉइस रिकॉर्ड के `vnu_` id के साथ [`GET /v1/voice/numbers/{number_id}`](/docs/api/reference/get-voice-number)                 |
| नंबर बदलें                | `PATCH /numbers/{dnisId}`                       | आवंटन के `nda_` या `nal_` id के साथ [`PATCH /v1/numbers/{number_id}`](/docs/api/reference/update-workspace-number), और वॉइस रिकॉर्ड के `vnu_` id के साथ [`PATCH /v1/voice/numbers/{number_id}`](/docs/api/reference/update-voice-number)       |
| नंबर रिलीज़ करें          | `DELETE /numbers/{dnisId}?requestedCancelDate=` | भुगतान की गई अवधि के अंत में [`DELETE /v1/numbers/{number_id}`](/docs/api/reference/cancel-workspace-number), या तुरंत [`POST /v1/numbers/{number_id}/release`](/docs/api/reference/release-workspace-number), दोनों आवंटन के `nda_` id के साथ |

- **सूची।** सूची में वे नंबर होते हैं जो इस समय आपको आवंटित हैं। Bird में ऑर्डर किया गया कोई रिलीज़ हो चुका नंबर [`GET /v1/numbers/orders`](/docs/api/reference/list-numbers-orders) में अपने ऑर्डर के ज़रिए दिखता रहता है। [अपने नंबरों का मिलान करें](#अपने-नंबरों-का-मिलान-करें) में फ़िल्टरों की मैपिंग दी गई है।
- **पढ़ना।** स्थिति, स्वामित्व के कागज़ात और कीमत आवंटन पर होते हैं, और रूट वॉइस रिकॉर्ड पर होता है। आवंटन का `pricing` ऑब्जेक्ट, जिसमें हर `recurring_period` के लिए `recurring_price` और `intervals_per_charge` होते हैं, `pricing.staticPricing.mrc` की जगह लेता है, और यह सूची में भी मिलता है, जबकि Telserv के `GET /numbers` में ऐसा नहीं था।
- **बदलना।** `name` और `reference` आवंटन पर होते हैं, और रूट वॉइस रिकॉर्ड पर होता है। फ़ोर्स्ड कोडेक और एक साथ चलने वाली कॉल की सीमा अपने SIP उपकरण पर सेट करें। `destinationDistributionType`, SIP ट्रंक पर गेटवे का `priority` बन जाता है: `FailOver` हर गेटवे को अलग `priority` देता है, और `RoundRobin` सभी को एक ही देता है।
- **रिलीज़ करना।** `DELETE` नंबर को उस अवधि के अंत तक रखता है जिसका भुगतान आप कर चुके हैं, और फिर उसे रिलीज़ करता है। `POST …/release` उसे तुरंत रिलीज़ करता है। इनमें से कोई भी तारीख नहीं लेता। [नंबर रिलीज़ करें](#नंबर-रिलीज़-करें) में दोनों अनुरोध दिखाए गए हैं।

### डेस्टिनेशन और प्रोफ़ाइल

| काम                              | Telserv                                                     | Bird                                                                                                                                                           |
| -------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| कॉल SIP उपकरण पर भेजें           | `POST /numbers/{dnisId}/destinations`                       | [`POST /v1/voice/trunks/{trunk_id}/gateways`](/docs/api/reference/create-voice-trunk-gateway), फिर `trunk` रूट करें                                            |
| कॉल किसी फ़ोन पर फ़ॉरवर्ड करें   | `POST /numbers/{dnisId}/destinations`                       | `forward` रूट करें                                                                                                                                             |
| कॉल लेना बंद करें                | `DELETE /numbers/{dnisId}/destinations`                     | `reject` रूट करें                                                                                                                                              |
| डेस्टिनेशन प्रोफ़ाइल पढ़ें       | `GET /destinationprofiles`, `GET /destinationprofiles/{id}` | [`GET /v1/voice/trunks`](/docs/api/reference/list-voice-trunks) और [`GET /v1/voice/trunks/{trunk_id}/gateways`](/docs/api/reference/list-voice-trunk-gateways) |
| किसी नंबर पर प्रोफ़ाइल लागू करें | `POST /numbers/{dnisId}/destinations/profile`               | `trunk_id` के साथ `trunk` रूट करें                                                                                                                             |

- **SIP उपकरण।** गेटवे ट्रंक का हिस्सा होता है और उस पर रूट किए गए हर नंबर को सेवा देता है, इसलिए जिन नंबरों को अलग-अलग डेस्टिनेशन सूचियाँ चाहिए, उन्हें अलग-अलग ट्रंक चाहिए। `sortOrder` अब `priority` बन जाता है। रिंग समय और समय-सीमाएँ अपने SIP उपकरण पर लागू करें।
- **फ़ॉरवर्ड करें।** `forward_to` और `forward_as` सेट करें। `forward_to` आपके [सत्यापित नंबरों](/docs/guides/voice/caller-ids) में से एक होना चाहिए; असत्यापित नंबर होने पर जवाब `412` और [`E21053`](/docs/api/errors/E21053) होता है। `forward_as` तय करता है कि फ़ॉरवर्ड की गई कॉल कॉलर के रूप में कौन-सा नंबर दिखाए। किसी नंबर का एक समय में एक ही रूट होता है, इसलिए SIP उपकरण से फ़ोन नंबर पर फ़ॉलबैक के लिए कॉल को अपने SIP उपकरण से फ़ॉरवर्ड करें।
- **कॉल लेना बंद करें।** जब तक आप नंबर को फिर से रूट नहीं करते, नंबर कॉल अस्वीकार करता है। डिफ़ॉल्ट प्रोफ़ाइल की जगह एक स्थायी डिफ़ॉल्ट बनाए रखने के लिए, नंबर को ऐसे ट्रंक पर रूट करें जिसमें आपके डिफ़ॉल्ट गेटवे हों।
- **प्रोफ़ाइल।** `distributionType` अब `priority` बन जाता है: `FailOver` हर गेटवे को अलग `priority` देता है, और `RoundRobin` सभी को एक ही देता है। वितरण हर ट्रंक के लिए सेट होता है, इसलिए जिन नंबरों को अलग वितरण चाहिए, उन्हें अलग ट्रंक चाहिए। `{dnis}` प्लेसहोल्डर `destination_format` में `{number}` बन जाता है, और `prefixCLIP` `origination_format` में `{number}` से पहले का टेक्स्ट बन जाता है।
- **प्रोफ़ाइल लागू करें।** ट्रंक को उसके `spt_` पहचानकर्ता से संबोधित किया जाता है, जबकि Telserv प्रोफ़ाइल को नाम से संबोधित करता था।

### दस्तावेज़ और अंतिम-उपयोगकर्ता डेटा

| काम                             | Telserv                                                         | Bird                                                                                                                                                                                                           |
| ------------------------------- | --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| आवश्यकताएँ पढ़ें                | `GET /products/conditions`, `GET /masterdata/productconditions` | नंबर के लिए [`GET /v1/compliance/requirements`](/docs/api/reference/get-workspace-compliance-requirements), या नंबर लेने से पहले कोई देश जो फ़ॉर्म माँगता है उसके लिए `program` के साथ और `subject_id` के बिना |
| दस्तावेज़ अपलोड करें            | `POST /numbers/{dnisId}/documents`                              | [`POST /v1/compliance/attachments`](/docs/api/reference/create-compliance-attachment), फिर सबमिशन में अटैचमेंट का हवाला दें। देखें [स्वामित्व के कागज़ात जमा करें](#स्वामित्व-के-कागज़ात-जमा-करें)             |
| अंतिम-उपयोगकर्ता डेटा भेजें     | `POST /numbers/{dnisId}/enduserdata`                            | [`POST /v1/compliance/submissions`](/docs/api/reference/create-workspace-compliance-submission), दस्तावेज़ों के साथ, एक ही अनुरोध में। देखें [स्वामित्व के कागज़ात जमा करें](#स्वामित्व-के-कागज़ात-जमा-करें)   |
| दस्तावेज़ बदलें                 | फिर से `POST /numbers/{dnisId}/documents`                       | अस्वीकृत या समाप्त उत्तरों के साथ [`POST /v1/compliance/submissions/{submission_id}/resupply`](/docs/api/reference/update-workspace-compliance-submission)                                                     |
| कागज़ी कार्रवाई की प्रगति देखें | `GET /numbers/{dnisId}/documents`                               | [`GET /v1/numbers/{number_id}`](/docs/api/reference/get-workspace-number) पर `ownership`, और हर उत्तर के निर्णय के लिए सबमिशन                                                                                  |

- **आवश्यकताएँ।** Telserv की शर्तों की सूची एक साथ हर प्रोडक्ट को कवर करती थी; Bird एक समय में एक फ़ॉर्म पढ़ता है। किसी एक नंबर की आवश्यकताएँ `subject_kind=number`, `subject_id` के रूप में उसके `nda_` पहचानकर्ता और उसके `country_code` के साथ माँगें, या खरीदने से पहले `program` को नंबर प्रकार पर सेट करके और बिना `subject_id` के कोई फ़ॉर्म पढ़ें। `fields` की हर प्रविष्टि किसी Telserv शर्त या अंतिम-उपयोगकर्ता लेबल की जगह लेती है: उसका `key` वह है जिसके अंतर्गत आप उत्तर देते हैं, और `data_type` `document` उस प्रविष्टि को चिह्नित करता है जिसमें फ़ाइल चाहिए।
- **दस्तावेज़।** base64 `fileContent` की जगह फ़ाइल को `multipart/form-data` के रूप में अपलोड करें; [हर दस्तावेज़ अपलोड करें](/docs/guides/numbers/ownership-paperwork#upload-each-document) में स्वीकृत फ़ाइलों की सूची है। एक ही फ़ाइल दो बार अपलोड करने पर वही अटैचमेंट मिलता है। केवल अपलोड करने से कुछ जमा नहीं होता: जमा वह सबमिशन करता है जो उसके `attachment_id` का हवाला देता है।
- **अंतिम-उपयोगकर्ता डेटा और दस्तावेज़ एक साथ।** Telserv हर दस्तावेज़ अलग कॉल में लेता था, और अंतिम-उपयोगकर्ता डेटा को दूसरी कॉल में लेबल की एक सूची के रूप में। Bird हर उत्तर, टाइप किया हुआ और दस्तावेज़ दोनों, एक ही सबमिशन में लेता है, और कोई ड्राफ़्ट नहीं होता: अनुरोध उत्तरों को समीक्षा के लिए जमा कर देता है। इसके बाद `ownership.next` का पालन करें, जो सुधार के लिए resupply बताता है और नया सबमिशन केवल ज़रूरत होने पर ([हर उत्तर जमा करें](/docs/guides/numbers/ownership-paperwork#submit-every-answer))।
- **बदलाव।** केवल वे उत्तर भेजें जिन्हें आप बदल रहे हैं, बाकी उत्तरों की समीक्षा बनी रहती है। Telserv नंबर के सत्यापन लंबित रहने तक किसी शर्त के लिए नई फ़ाइल लेता था, और वह फ़ाइल उस शर्त की समीक्षा फिर से शुरू कर देती थी; Bird ऐसा उत्तर बदलता है जो अस्वीकृत, समाप्त या अभी तक नहीं दिया गया हो, और समीक्षाधीन या पहले से स्वीकृत उत्तर को अस्वीकार करता है, सिवाय उस उत्तर के जिसे `editable_for_verifier_repair` चिह्नित किया गया हो, जब तक हमारा माँगा गया सुधार खुला है ([अस्वीकृत उत्तर सुधारें](/docs/guides/numbers/ownership-paperwork#correct-a-rejected-answer))।
- **प्रगति।** `ownership.status` और `ownership.next` बताते हैं कि नंबर किस स्थिति में है। हर उत्तर का अपना `state` होता है, और अस्वीकृत उत्तर में समीक्षक का `reason` होता है। Bird हर परिणाम आपके संगठन के मालिकों को और उस व्यक्ति को ईमेल भी करता है जिसने सबमिशन को आख़िरी बार जमा या सुधारा। जब नंबर के लिए कागज़ात ज़रूरी नहीं होते, तो `ownership` आमतौर पर `null` होता है।

[स्वामित्व के कागज़ात जमा करें](#स्वामित्व-के-कागज़ात-जमा-करें) में अनुरोध दिखाए गए हैं, और [किसी नंबर के स्वामित्व के कागज़ात जमा करें](/docs/guides/numbers/ownership-paperwork) में पूरी प्रक्रिया समझाई गई है, जिसमें डैशबोर्ड से और ऑर्डर के साथ कागज़ात जमा करना भी शामिल है।

### प्रोडक्ट और मास्टर डेटा

| काम            | Telserv                                      | Bird                                                                                                                                                                                                                                                                                                                                                                                                                                |
| -------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| प्रोडक्ट देखें | `GET /products`, `GET /products/{productId}` | [`GET /v1/numbers/available`](/docs/api/reference/list-available-numbers), जिसके लिए `country_code` आवश्यक है और जो उसी एक देश में बिक्री के लिए उपलब्ध नंबर लौटाता है। Bird में कोई वैश्विक प्रोडक्ट कैटलॉग नहीं है, और `productId` के समकक्ष कुछ नहीं है। कोई API बिक्री के लिए उपलब्ध देशों और नंबर प्रकारों की सूची नहीं देता; [फ़ोन नंबर मूल्य निर्धारण](/pricing/numbers) पेज पर देश के अनुसार Bird की मानक कीमतें दी गई हैं। |

हर खोज परिणाम अपने प्रोडक्ट का विवरण `number_type`, `capabilities` और `ownership_registration_required` से देता है, और प्रोडक्ट के `pricing.staticPricing` (`nrc` और `mrc`) की जगह आपके संगठन के लिए कीमत देता है। Bird की मानक कीमतें [फ़ोन नंबर मूल्य निर्धारण](/pricing/numbers) पेज पर हैं। Telserv के प्रति-मिनट `sessionPricing` का इन रीड में कोई समकक्ष नहीं है; वॉइस दरें [वॉइस मूल्य निर्धारण](/pricing/voice) पेज पर हैं।

Telserv के नंबर प्रकार Bird के `number_type` से इस तरह मेल खाते हैं:

| Telserv `numberType` | Bird `number_type`                   |
| -------------------- | ------------------------------------ |
| `DID`                | नंबर के अनुसार `local` या `national` |
| `FreePhone`          | `toll_free`                          |
| `Mobile`             | `mobile`                             |

## क्या अलग तरीके से काम करता है

Telserv के ये काम Bird में अलग तरीके से होते हैं। अगर आपका इंटीग्रेशन इनमें से किसी पर निर्भर है, तो उसे ले जाने से पहले इनकी योजना बनाएँ।

- **कागज़ी कार्रवाई।** किसी नंबर के दस्तावेज़ और अंतिम-उपयोगकर्ता डेटा एक ही सबमिशन में जमा करें, ड्राफ़्ट के बिना, और अस्वीकृत उत्तरों को resupply से ठीक करें।
- **आरक्षण।** नंबर चुनते ही उसे ऑर्डर करें; ऑर्डर उसे आपके लिए सुरक्षित कर देता है।
- **प्रति-नंबर कॉल सेटिंग।** फ़ोर्स्ड कोडेक, एक साथ चलने वाली कॉल की सीमा, रिंग समय और समय-सीमाएँ अपने SIP उपकरण पर लागू करें।
- **रिलीज़ की तारीख।** Bird किसी नंबर को उसकी भुगतान अवधि के अंत में या तुरंत रिलीज़ करता है, आपकी चुनी तारीख पर नहीं। Telserv को भेजी गई रद्दीकरण तारीखें अपनी ओर रखें, और हर तारीख आने पर उस पर कार्रवाई करें।
- **वॉलेट बैलेंस।** बैलेंस देखें और डैशबोर्ड में टॉप-अप करें।

## अपने रेफ़रेंस के साथ नंबर खोजें और खरीदें

एक देश में खोजें। परिणामों को सीमित करने के लिए `number_type`, `capabilities` और `prefix` को मिलाकर इस्तेमाल करें:

```bash
curl "$BIRD_API_URL/v1/numbers/available?country_code=NL&number_type=mobile&capabilities=voice&limit=10" \
  --header "Authorization: Bearer $BIRD_API_KEY"
```

हर परिणाम में एक `pricing` ऑब्जेक्ट होता है, जिसमें वह कीमत होती है जो आपका संगठन नंबर के लिए चुकाता है। यह कीमत टैक्स के बिना, आपकी बिलिंग मुद्रा में होती है, और इसमें Bird के साथ तय की गई कोई भी कीमत लागू होती है:

- `setup_price` नंबर ऑर्डर करते समय एक बार लिया जाता है। शून्य के प्रकाशित शुल्क का `amount` `"0"` होता है। यह फ़ील्ड स्वयं तब `null` होता है जब कोई सेटअप शुल्क लागू नहीं होता, और तब भी जब `recurring_price` का मान `null` होता है, क्योंकि उस नंबर को ऑर्डर नहीं किया जा सकता।
- `recurring_price` प्रति `recurring_period` दर है।
- `intervals_per_charge` बताता है कि एक शुल्क में कितने `recurring_period` का बिल बनता है। टैक्स से पहले आवर्ती शुल्क `recurring_price` गुणा `intervals_per_charge` होता है, जो नंबर के आपके वर्कस्पेस को असाइन होने पर और हर नवीनीकरण पर लिया जाता है; सेटअप शुल्क अलग होता है। जो ऑर्डर किसी कैरियर की प्रतीक्षा करता है, उसके लिए असाइनमेंट ऑर्डर पूरा होने पर होता है।

[API संदर्भ](/docs/api/reference/list-available-numbers) में एक उदाहरण परिणाम दिखाया गया है। `pricing.recurring_price: null` वाला परिणाम कोई आवर्ती कीमत नहीं बताता। ऑर्डर करने से पहले उस देश और नंबर प्रकार की कीमत तय करवाने के लिए [सेल्स से संपर्क करें](/contact-sales)।

डैशबोर्ड और API एक ही संगठन कीमत का उपयोग करते हैं, जिसमें आपकी बिलिंग मुद्रा में रूपांतरण भी शामिल है। कीमत पढ़ने से कोटेशन तय नहीं होता: बाद के शुल्क से पहले टैरिफ़ या विनिमय दर बदलने पर उसकी राशि बदल सकती है। अगर कीमत की खोज विफल होती है, तो खोज [`E14009`](/docs/api/errors/E14009) के साथ `503` लौटाती है। एक्सपोनेंशियल बैकऑफ़ के साथ रीड के लिए फिर से प्रयास करें; खोज विफल होने का मतलब कभी यह नहीं होता कि नंबर की कोई कीमत नहीं है।

ऑर्डर करने से पहले किसी संभावित नंबर और उसकी कीमत की पुष्टि के लिए उसे `GET /v1/numbers/available/{number}` से पढ़ें। `404` का मतलब है कि वह अब बिक्री के लिए उपलब्ध नहीं है।

नंबर को उसी रेफ़रेंस के साथ ऑर्डर करें जो आपने Telserv में इस्तेमाल किया था, और एक idempotency कुंजी चुनें जिसे आप इस खरीद के हर फिर से प्रयास के लिए रखें:

```bash
curl --request POST "$BIRD_API_URL/v1/numbers/orders" \
  --header "Authorization: Bearer $BIRD_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: order-CUST-778812" \
  --data '{"number": "+31612345678", "reference": "CUST-778812"}'
```

`201` प्रतिक्रिया में `status: completed` और एक `number_id` होता है, जो नंबर का `nda_` पहचानकर्ता है। इसे `NUMBER_ID` के रूप में रखें। `202` प्रतिक्रिया का मतलब है कि ऑर्डर किसी कैरियर का इंतज़ार कर रहा है: [ऑर्डर को पोल करें](/docs/guides/numbers/buying-numbers#poll-an-order-that-did-not-finish) जब तक उसका `status` `completed` या `failed` न हो जाए। अगर ऑर्डर बाद में विफल हो जाता है, तो पहले से लिया गया सेटअप शुल्क वापस नहीं होता। ऑर्डर पूरा होने पर रेफ़रेंस नंबर पर सेट हो जाता है। इसमें 100 वर्ण तक हो सकते हैं और इसका अद्वितीय होना ज़रूरी नहीं है।

आपके वर्कस्पेस को आवंटित नंबर के ऑर्डर का फिर से प्रयास करने पर मौजूदा ऑर्डर लौटता है, इसलिए फिर से प्रयास करने पर दो बार शुल्क नहीं लगता। [नंबर खरीदें और रिलीज़ करें](/docs/guides/numbers/buying-numbers#when-an-order-is-refused) में अस्वीकृतियों के बारे में बताया गया है।

बाद में रेफ़रेंस सेट करने या बदलने के लिए `PATCH /v1/numbers/{number_id}` पर `reference` (और वैकल्पिक रूप से `name`) भेजें। किसी फ़ील्ड को खाली करने के लिए `null` भेजें।

## जाँचें कि नंबर कॉल ले जा सकता है

जिस नंबर का `status` `pending_ownership_registration` है, वह आवंटित है और उसका बिल बनता है, लेकिन जब तक उसके स्वामित्व के कागज़ात स्वीकृत नहीं होते, वह कोई SMS नहीं भेजता और आने वाली और जाने वाली वॉइस कॉल अस्वीकार करता है। किसी नंबर को रूट करने या उस पर टेस्ट कॉल करने से पहले उसे [`GET /v1/numbers/{number_id}`](/docs/api/reference/get-workspace-number) से पढ़ें और जाँचें कि `status` `active` है। अगर यह लंबित है, तो [स्वामित्व के कागज़ात जमा करें](#स्वामित्व-के-कागज़ात-जमा-करें)। [आवंटित नंबर की स्थिति](/docs/guides/numbers/overview#the-status-of-an-allocated-number) में हर मान समझाया गया है।

नीचे दिए गए उदाहरण एक डच मोबाइल नंबर का उपयोग करते हैं। अपने नंबर का `status` भी इसी तरह जाँचें, चाहे वह किसी भी देश का हो।

## स्वामित्व के कागज़ात जमा करें

Telserv किसी नंबर के कागज़ात हर दस्तावेज़ के लिए एक `POST /numbers/{dnisId}/documents` और सभी लेबल के लिए एक `POST /numbers/{dnisId}/enduserdata` से लेता था। Bird दस्तावेज़ अपलोड करने के बाद दोनों को एक ही सबमिशन में लेता है।

1. नंबर का `country_code` पढ़ें और उसे `COUNTRY_CODE` के रूप में रखें। कमांड इसे `jq` से निकालती है; अगर आप `jq` का उपयोग नहीं करते, तो इसे स्वयं पढ़ें:

   ```bash
   COUNTRY_CODE=$(curl -s "$BIRD_API_URL/v1/numbers/$NUMBER_ID" \
     --header "Authorization: Bearer $BIRD_API_KEY" | jq -r .country_code)
   ```

2. पढ़ें कि नंबर का देश क्या माँगता है। `fields` की हर प्रविष्टि में वह `key` होता है जिसके अंतर्गत आप उत्तर देते हैं, एक `data_type`, और `required`, जो बताता है कि उत्तर देना ज़रूरी है या नहीं। प्रतिक्रिया में दिया गया `program` `PROGRAM` के रूप में रखें:

   ```bash
   curl "$BIRD_API_URL/v1/compliance/requirements?subject_kind=number&subject_id=$NUMBER_ID&country_code=$COUNTRY_CODE" \
     --header "Authorization: Bearer $BIRD_API_KEY"
   ```

   [`E19001`](/docs/api/errors/E19001) के साथ `422` का अर्थ है कि उस देश के लिए स्वामित्व का कोई फ़ॉर्म नहीं है।

3. हर वह दस्तावेज़ अपलोड करें जो कोई `document` फ़ील्ड माँगता है, base64 `fileContent` के बजाय फ़ाइल के रूप में। प्रतिक्रिया से `id`, यानी अटैचमेंट का `tca_` पहचानकर्ता, `ATTACHMENT_ID` के रूप में रखें:

   ```bash
   curl --request POST "$BIRD_API_URL/v1/compliance/attachments" \
     --header "Authorization: Bearer $BIRD_API_KEY" \
     --form "file=@registration-certificate.pdf"
   ```

4. सभी उत्तर एक साथ जमा करें: हर उस फ़ील्ड के लिए एक प्रविष्टि जिसका `required` `true` है, और हर उस वैकल्पिक फ़ील्ड के लिए जिसका आपके पास वास्तविक उत्तर है। अंतिम-उपयोगकर्ता डेटा `value` के रूप में और हर दस्तावेज़ `attachment_id` के रूप में दें। किसी वैकल्पिक फ़ील्ड के लिए मान गढ़ने के बजाय उसे छोड़ दें। उदाहरण में दो उत्तर दिखाए गए हैं; भेजने से पहले बाकी आवश्यक उत्तर जोड़ें। यह अनुरोध उत्तरों को समीक्षा के लिए जमा करता है। प्रतिक्रिया से `id`, यानी सबमिशन का `csb_` पहचानकर्ता, `SUBMISSION_ID` के रूप में रखें:

   ```bash
   curl --request POST "$BIRD_API_URL/v1/compliance/submissions" \
     --header "Authorization: Bearer $BIRD_API_KEY" \
     --header "Content-Type: application/json" \
     --header "Idempotency-Key: ownership-CUST-778812" \
     --data '{"subject_kind": "number", "subject_id": "'"$NUMBER_ID"'", "program": "'"$PROGRAM"'", "country_code": "'"$COUNTRY_CODE"'", "answers": [{"key": "business_registration_number", "value": "90012768"}, {"key": "business_registration_certificate", "attachment_id": "'"$ATTACHMENT_ID"'"}]}'
   ```

   `201` प्रतिक्रिया सबमिशन लौटाती है। `422` होने पर कुछ भी जमा नहीं होता: बॉडी ठीक करें और उसे नई idempotency कुंजी के साथ भेजें, क्योंकि पुरानी कुंजी अस्वीकृति को ही दोहराती है। [हर उत्तर जमा करें](/docs/guides/numbers/ownership-paperwork#submit-every-answer) में हर अस्वीकृति समझाई गई है।

5. जब कोई समीक्षक किसी उत्तर को अस्वीकार करता है, तो केवल वही उत्तर बदलें, जैसा [अस्वीकृत उत्तर ठीक करें](/docs/guides/numbers/ownership-paperwork#correct-a-rejected-answer) में बताया गया है:

   ```bash
   curl --request POST "$BIRD_API_URL/v1/compliance/submissions/$SUBMISSION_ID/resupply" \
     --header "Authorization: Bearer $BIRD_API_KEY" \
     --header "Content-Type: application/json" \
     --header "Idempotency-Key: ownership-fix-1-CUST-778812" \
     --data '{"answers": [{"key": "business_registration_number", "value": "90012769"}]}'
   ```

खरीदते समय ही कागज़ात जमा करने के लिए, वही `answers` `POST /v1/numbers/orders` के `compliance` ब्लॉक में भेजें। वह ऑर्डर मौजूदा `numbers` स्कोप का write स्तर पर उपयोग करता है, तब भी जब उसमें कागज़ात शामिल हों।

समीक्षा की प्रगति [`GET /v1/numbers/{number_id}`](/docs/api/reference/get-workspace-number) पर `ownership.status` से देखें। उत्तर आपके व्यवसाय के नाम पर किया गया कानूनी कथन होते हैं, इसलिए केवल वही उत्तर जमा करें जिनकी पुष्टि उनके लिए ज़िम्मेदार किसी व्यक्ति ने की हो। [किसी नंबर के स्वामित्व के कागज़ात जमा करें](/docs/guides/numbers/ownership-paperwork) में हर अनुरोध, समीक्षा और ऑर्डर के साथ कागज़ात जमा करना समझाया गया है।

## किसी नंबर को अपने SIP ट्रंक पर रूट करें

नए नंबर का अपना कोई रूट नहीं होता, इसलिए वह आपके वर्कस्पेस के [डिफ़ॉल्ट रूट](/docs/guides/voice/receiving-calls#set-a-default-route) का पालन करता है। यह डिफ़ॉल्ट शुरुआत में `reject` होता है, लेकिन जिस वर्कस्पेस ने पहले से डिफ़ॉल्ट सेट किया है, वह नंबर आवंटित होते ही उसी के अनुसार नए नंबर की कॉल का उत्तर देता है। उसकी कॉल अपने उपकरण तक पहुँचाने के लिए इनबाउंड कॉलिंग चालू करके एक SIP ट्रंक बनाएँ, उसमें एक गेटवे जोड़ें और नंबर को उस ट्रंक की ओर सेट करें। [SIP ट्रंक](/docs/guides/voice/sip-trunks) में बताया गया है कि अपने उपकरण को ट्रंक से कैसे जोड़ें।

1. इनबाउंड कॉलिंग चालू करके ट्रंक बनाएँ। प्रतिक्रिया से `id`, यानी ट्रंक का `spt_` पहचानकर्ता, `TRUNK_ID` के रूप में रखें:

   ```bash
   curl --request POST "$BIRD_API_URL/v1/voice/trunks" \
     --header "Authorization: Bearer $BIRD_API_KEY" \
     --header "Content-Type: application/json" \
     --header "Idempotency-Key: trunk-production-pbx" \
     --data '{"name": "Production PBX", "inbound_enabled": true}'
   ```

2. एक गेटवे जोड़ें। डिफ़ॉल्ट रूप से गेटवे को डायल किया गया और कॉल करने वाला नंबर E.164 में उनके `+` के साथ मिलता है। अगर आपका उपकरण `+` के बिना नंबर चाहता है, जैसा Telserv का `{dnis}` प्लेसहोल्डर देता था, तो डायल किए गए नंबर के लिए `destination_format` और कॉल करने वाले नंबर के लिए `origination_format` को `{number}` पर सेट करें:

   ```bash
   curl --request POST "$BIRD_API_URL/v1/voice/trunks/$TRUNK_ID/gateways" \
     --header "Authorization: Bearer $BIRD_API_KEY" \
     --header "Content-Type: application/json" \
     --header "Idempotency-Key: gateway-pbx-primary" \
     --data '{"sip_uri": "sip:pbx.example.com:5060", "priority": 0, "destination_format": "{number}", "origination_format": "{number}"}'
   ```

   फ़ेलओवर के लिए दूसरा गेटवे जोड़ें; [गेटवे को क्या चाहिए](/docs/guides/voice/receiving-calls#what-a-gateway-needs) `priority` और नंबर फ़ॉर्मैट समझाता है। idempotency कुंजी के बिना वही गेटवे फिर से बनाने पर `409` और [`E21047`](/docs/api/errors/E21047) मिलता है।

3. नंबर का वॉइस रिकॉर्ड खोजें। नंबर के अंकों से खोजें और उस प्रविष्टि का `id` लें जिसका `provider.number_id` आवंटन का `id` है। इसे `VOICE_NUMBER_ID` के रूप में रखें:

   ```bash
   curl "$BIRD_API_URL/v1/voice/numbers?search=31612345678" \
     --header "Authorization: Bearer $BIRD_API_KEY"
   ```

4. नंबर को ट्रंक की ओर सेट करें:

   ```bash
   curl --request PATCH "$BIRD_API_URL/v1/voice/numbers/$VOICE_NUMBER_ID" \
     --header "Authorization: Bearer $BIRD_API_KEY" \
     --header "Content-Type: application/json" \
     --data '{"inbound_configuration": {"route": {"type": "trunk", "trunk_id": "'"$TRUNK_ID"'"}}}'
   ```

   `200` प्रतिक्रिया नया रूट दिखाती है। जिस ट्रंक पर इनबाउंड कॉलिंग बंद है, वह `412` और [`E21052`](/docs/api/errors/E21052) लौटाता है।

किसी ट्रंक पर इनबाउंड कॉलिंग बंद करने या ट्रंक को हटाने पर उस पर रूट किया गया हर नंबर आपके वर्कस्पेस के डिफ़ॉल्ट रूट पर लौट जाता है, और इनबाउंड कॉलिंग फिर से चालू करने पर वे रूट बहाल नहीं होते। [SIP ट्रंक पर कॉल पहुँचाएँ](/docs/guides/voice/receiving-calls#deliver-calls-to-a-sip-trunk) में यह व्यवहार और `trunk`, `forward` तथा `reject` रूट समझाए गए हैं।

## अपने नंबरों का मिलान करें

सबसे बड़े पेज आकार के साथ पूरी सूची पढ़ें। अगला पेज पढ़ने के लिए हर पेज का `next_cursor` `NEXT_CURSOR` के रूप में भेजें, जब तक `next_cursor` का मान `null` न हो जाए। सूची कुल संख्या नहीं लौटाती।

```bash
curl "$BIRD_API_URL/v1/numbers?limit=100" \
  --header "Authorization: Bearer $BIRD_API_KEY"

curl "$BIRD_API_URL/v1/numbers?limit=100&starting_after=$NEXT_CURSOR" \
  --header "Authorization: Bearer $BIRD_API_KEY"
```

Telserv के सूची फ़िल्टर Bird के फ़िल्टरों से इस तरह मेल खाते हैं:

| `GET /numbers` पर Telserv फ़िल्टर                              | `GET /v1/numbers` पर Bird फ़िल्टर                                                                                                                              |
| -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `number`, जो नंबर की शुरुआत से मिलान करता है                   | `country_code` के बिना `prefix`, जो पूरे नंबर की शुरुआत से अंकों का मिलान करता है                                                                              |
| `prefix`, जो एक्सेस और एरिया कोड के बराबर होता है, जैसे `3170` | `country_code`, जिसमें `prefix` को राष्ट्रीय अंकों पर सेट किया जाता है: `country_code=NL&prefix=70`                                                            |
| आंशिक मान के साथ `reference`                                   | `search`, जो अक्षरों के छोटे-बड़े होने को अनदेखा करते हुए नंबर, नाम या संदर्भ के किसी हिस्से से मिलान करता है                                                  |
| उद्धरण चिह्नों में सटीक मान के साथ `reference`                 | `reference`, जो ठीक उसी संदर्भ वाले नंबर लौटाता है। मिलान केस-सेंसिटिव होता है                                                                                 |
| Bird में नया                                                   | `number` देश कोड सहित दिया गया एक पूरा नंबर लौटाता है, `+` या `00` के साथ या उसके बिना: `+31612345678`, `31612345678` और `0031612345678` एक ही नंबर ढूँढते हैं |

[अपनी सूची में नंबर ढूँढें](/docs/guides/numbers/managing-numbers#find-a-number-in-your-list) में हर फ़िल्टर का विस्तार से विवरण है।

हर प्रविष्टि में `pricing` होता है, जिसमें प्रति `recurring_period` `recurring_price` और `intervals_per_charge` होते हैं। जब तक नंबर के लिए कोई कीमत तय न हो, `recurring_price` आपके संगठन की मौजूदा दर है, और हर नवीनीकरण पर उस समय लागू दर से शुल्क लिया जाता है, इसलिए पहले से लिया गया शुल्क इससे अलग हो सकता है। [अपने सभी नंबरों की सूची देखें](/docs/guides/numbers/managing-numbers#list-every-number-you-hold) में बताया गया है कि हर नंबर का शुल्क किस मुद्रा में लिया जाता है, `pricing` या उसकी कीमतें कब `null` होती हैं, और `pricing.error` सेट होने पर क्या करें।

रिलीज़ किया गया नंबर इस सूची से हट जाता है, और `number_id` से उसे पढ़ने पर `404` मिलता है। अगर आपने उसे Bird में ऑर्डर किया था, तो उसका पूरा हुआ ऑर्डर [`GET /v1/numbers/orders`](/docs/api/reference/list-numbers-orders) में बना रहता है।

## नंबर रिलीज़ करें

दोनों अनुरोध किसी समर्पित नंबर पर, उसके `nda_` पहचानकर्ता से, लागू होते हैं; साझा नंबर को [`E14002`](/docs/api/errors/E14002) के साथ अस्वीकार किया जाता है। जिस अवधि का भुगतान आप कर चुके हैं, उसके अंत तक नंबर रखने के लिए उसे रद्द करें:

```bash
curl --request DELETE "$BIRD_API_URL/v1/numbers/$NUMBER_ID" \
  --header "Authorization: Bearer $BIRD_API_KEY" \
  --header "Idempotency-Key: cancel-CUST-778812"
```

`202` प्रतिक्रिया नंबर को `releases_at` के साथ लौटाती है, जो उसकी भुगतान की गई अवधि का अंत है। तब तक नंबर की मौजूदा स्थिति बनी रहती है, उसकी सदस्यता नवीनीकृत नहीं होती, और उसी समय वह रिलीज़ हो जाता है। दोबारा अनुरोध करने पर वही `releases_at` मिलता है, और रद्दीकरण वापस नहीं लिया जा सकता। जिस नंबर के पीछे कोई सदस्यता नहीं है, वह तुरंत रिलीज़ हो जाता है, और प्रतिक्रिया `200` होती है, जिसमें नंबर का `status` `released` पर सेट होता है।

नंबर को अभी रिलीज़ करने के लिए, उस नंबर सहित जिसका रद्दीकरण पहले से निर्धारित है:

```bash
curl --request POST "$BIRD_API_URL/v1/numbers/$NUMBER_ID/release" \
  --header "Authorization: Bearer $BIRD_API_KEY" \
  --header "Idempotency-Key: release-CUST-778812"
```

`204` प्रतिक्रिया का अर्थ है कि नंबर तुरंत प्रभाव से रिलीज़ हो गया है। मौजूदा अवधि के शेष हिस्से का पैसा वापस नहीं किया जाता।

जब तक नंबर के नवीनीकरण का भुगतान बकाया है, दोनों अनुरोध भुगतान होने तक [`E03015`](/docs/api/errors/E03015) के साथ `409` लौटाते हैं।

कोई भी अनुरोध तारीख नहीं लेता, इसलिए Telserv को भेजा गया शेड्यूल अपनी ओर `requestedCancelDate` के रूप में रखें। किसी नंबर को उसकी तारीख तक रखने के लिए, तारीख के उसकी मौजूदा बिलिंग अवधि में आते ही उसे रद्द करें: वह अवधि खत्म होने पर, यानी तारीख पर या उसके बाद, रिलीज़ हो जाता है। उसे ठीक उसी तारीख को छोड़ने के लिए, उसी दिन उसे रिलीज़ करें। [नंबर रिलीज़ करें](/docs/guides/numbers/managing-numbers#release-a-number) में बताया गया है कि हर अनुरोध नंबर, उसके शुल्कों और फिर से प्रयास पर क्या असर डालता है।

## अपने नंबर पर टेस्ट कॉल करें

किसी रूट को शुरू से अंत तक जाँचने के लिए, उस नंबर पर ऐसे दूसरे नंबर से कॉल करें जिसे आपका वर्कस्पेस कॉलर ID के रूप में दिखा सकता है। नंबर का देश आपके [वॉइस गंतव्यों](/docs/guides/voice/destinations) में सक्षम होना चाहिए, नहीं तो कॉल नहीं लगती। नीचे दिया गया अनुरोध एक इनलाइन सीक्वेंस चलाता है जो कॉल का उत्तर मिलते ही कॉल काट देता है, इसलिए किसी सहेजे गए सीक्वेंस की ज़रूरत नहीं है। यह असली कॉल करता है, और सामान्य कॉलिंग शुल्क लगते हैं।

अनुरोध को `test-call.json` के रूप में सहेजें। `from` में वह कॉलर ID डालें जिसे आप दिखाते हैं, जो आपके वर्कस्पेस का स्वामित्व वाला या [सत्यापित नंबर](/docs/guides/voice/caller-ids) हो, और `to` में जाँचा जाने वाला नंबर डालें:

```json
{
  "from": "+31612345679",
  "to": "+31612345678",
  "sequence": {
    "definition": {
      "schema_version": 1,
      "expression_environment": "bird.cel.v1",
      "nodes": [
        {
          "id": "entry",
          "type": "trigger.start_call",
          "type_version": 1,
          "config": {},
          "input": {},
          "connections": { "event": { "node_id": "end", "port": "input" } }
        },
        { "id": "end", "type": "voice.hangup", "type_version": 1, "config": {}, "input": {} }
      ]
    },
    "entry_node_id": "entry",
    "trigger_data": {}
  }
}
```

इसे भेजें:

```bash
curl --request POST "$BIRD_API_URL/v1/voice/calls" \
  --header "Authorization: Bearer $BIRD_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: ${TEST_CALL_KEY:?Set TEST_CALL_KEY once for this test call}" \
  --data-binary @test-call.json
```

हर टेस्ट के लिए `TEST_CALL_KEY` को नया मान दें, और टाइमआउट या अस्पष्ट परिणाम के बाद उसी टेस्ट के लिए फिर से प्रयास करते समय उसे दोबारा इस्तेमाल करें: तीन घंटे के भीतर वही कुंजी और वही अनुरोध दूसरी कॉल करने के बजाय पहली स्वीकृति को दोहराते हैं। `202` प्रतिक्रिया कॉल को स्वीकार करती है और उसका `initial_leg_id` लौटाती है। स्वीकृति से यह साबित नहीं होता कि कॉल जुड़ी: [`GET /v1/voice/legs/{leg_id}`](/docs/api/reference/get-voice-leg) से लेग पढ़ें, या [`GET /v1/voice/legs`](/docs/api/reference/list-voice-legs) और उसके `to` फ़िल्टर से नंबर पर की गई लेग की सूची देखें, और जाँचें कि आपके उपकरण को कॉल मिली। [वॉइस कॉल बनाएँ](/docs/guides/voice/create-calls) में कॉलर ID और गंतव्य की आवश्यकताएँ और फिर से प्रयास के नियम बताए गए हैं।

## अगले कदम

- [नंबर खरीदें और रिलीज़ करें](/docs/guides/numbers/buying-numbers)
- [अपने फ़ोन नंबर प्रबंधित करना](/docs/guides/numbers/managing-numbers)
- [किसी नंबर के स्वामित्व के कागज़ात जमा करें](/docs/guides/numbers/ownership-paperwork)
- [कॉल प्राप्त करना](/docs/guides/voice/receiving-calls)
- [SIP ट्रंक](/docs/guides/voice/sip-trunks)
- [आइडेम्पोटेंसी](/docs/guides/idempotency)

## Related resources

- [What is a virtual phone number (VMN)?](/explained/numbers/what-is-a-virtual-phone-number) (answer)
- [SMS numbers](/sms-api/features/numbers) (product)
- [Number types](/docs/guides/numbers/number-types) (docs)

[Get an implementation brief](/learn/workspace?topic=phone-numbers)
