Разработчици

GET/v3/getnumbers/{prefix_id}/{quantity}

Намерете налични телефонни номера

Търсете в рамките на един префикс от каталога, прегледайте възможностите на номерата и ценовите планове за конкретния акаунт, след което изберете номер за отделна поръчка. Търсенето не резервира и не закупува номер.

На тази страница
  1. Изберете отделен префикс
  2. Прегледайте партида с ограничен размер
  3. Намерете лесна за запомняне последователност от цифри
  4. Прегледайте избрания номер
  5. Поръчайте отделно и потвърдете резултата
  6. Заявка
  7. Отговор
  8. Грешки
  9. Наличност и странични ефекти

Изберете отделен префикс

Използвайте извикванията за откриване на държави и области на покритие, след което извикайте getprefixes без групиране. За избрания префикс копирайте стойността на uuid. Ако returns_numbers е 0, номерът за префикса се присвоява при поръчка; използвайте върнатата стойност на next_function вместо да изисквате списък с отделни номера.

Прегледайте партида с ограничен размер

За обичайно търсене използвайте compact=1 и задайте желания размер на партидата както в пътя, така и чрез параметъра quantity в URL заявката, както е показано по-долу. Няма параметър за страница или курсор. Компактният резултат е извадка; повторението на заявката не гарантира следваща страница без припокриване. Не приемайте празен резултат или резултат с малко записи за общия брой налични номера.

Намерете лесна за запомняне последователност от цифри

Подайте number_filter_mode=contains или ends_with заедно с number_filter_value. Стойността трябва да съдържа 1–15 цифри. Търсенето може да извлече ограничени партиди от кандидатни номера, преди да приложи филтъра, и затова може да пропусне други налични номера, които отговарят на условието. Ако ви е необходим поддържан източник, който да изпълни изискваното търсене, получете селектор pid от MultiTEL и използвайте filter_required=1; при липсващ или неподдържан избор API връща грешка.

Прегледайте избрания номер

Прочетете number, info.uuid, избраната стойност на price[].uuid, имената на наличните функции и изискванията за регистрация от същия резултат. Масивът price може да предлага няколко плана с различен брой канали и тарифи. Паричните полета и количествата може да са кодирани като низове. Незадължителните метаданни, включително info.state, се различават според източника; не изисквайте единен универсален формат за данните за щат и не извеждайте цени от идентификатор.

При обработка без поточно предаване дублиращите се кандидати се премахват и се разпределя броят на резултатите между източниците, преди избраната партида да бъде сортирана по месечната цена на първия план. Други начини на обработка могат да започнат поточното предаване по-рано, затова няма гаранция за общо подреждане или премахване на дубликатите, която да важи за всяка заявка. Сортирането също не доказва, че върнатата извадка съдържа най-евтиния номер в целия каталог.

Поръчайте отделно и потвърдете резултата

Търсенето не закупува и не резервира нищо. Запазете върнатия номер и идентификаторите на плана за процеса на поръчване със същия акаунт. Прегледайте действителния план, изискванията и таксите, преди да подадете поръчка. Изискванията за регистрация могат да забавят активирането; резултатът от търсене не определя фиксиран срок за активиране.

Заявка

Използвайте активиран акаунт за API на MultiTEL: идентификационни данни за HTTP Basic при акаунт с парола или Authorization: Bearer при акаунт с токен. Прилагат се разрешенията на акаунта и неговите ограничения по IP адрес. Вижте общите указания за удостоверяване.

Параметри в пътя и параметри в URL заявката. Използвайте GET за публичния процес на търсене. Обработчикът приема и определени стойности от формуляр или заявка, но не представлява API за търсене с JSON тяло.

curl --fail-with-body --get \
  --user "${MULTITEL_API_USERNAME}:${MULTITEL_API_PASSWORD}" \
  --data-urlencode "compact=1" \
  --data-urlencode "quantity=10" \
  "https://api.multitel.net/v3/getnumbers/${PREFIX_ID}/10"
Параметри в пътя
ИмеТипЗадължителенОписание
prefix_idstringДаИдентификатор на отделен префикс, върнат в негрупиран отговор от getprefixes. Копирайте го точно; не го заменяйте с идентификатор на държава, област на покритие, групиран префикс или ценови план.
quantityintegerНеЦелеви брой за извличане, по подразбиране 1. Неположителните стойности се заменят с 1. Самостоятелно зададен quantity в пътя не е надеждно ограничение за общия брой резултати: търсене без фиксиран източник и без параметър quantity в URL заявката може да разшири извличането и да върне до 50 записа от всеки източник преди останалата обработка. За обичайно преглеждане с ограничен брой резултати използвайте compact=1 и повторете желаното количество в URL заявката, както е в примера.
Параметри в URL заявката
ИмеТипЗадължителенОписание
quantityintegerНеЗаявен размер на крайната партида. Непразните стойности се преобразуват в цели числа с минимална стойност 1. При обработка без поточно предаване и без фиксиран източник това ограничава крайното разпределение. То не задължава услугата да намери толкова номера. Компактните търсения с фиксиран източник може да върнат компактната партида на източника, вместо да спазят това ограничение.
compactstringНеИзползвайте 1, true или on за по-малък отговор без поточно предаване, с до 10 записа от всеки източник преди крайното разпределение. Резултатите са извадка от извлечените към момента налични номера, а не пълен каталог.
number_filter_modestringНеНезадължителен режим за търсене по последователност от цифри: contains или ends_with. Подайте и number_filter_value. Резултатите се проверяват спрямо нормализираните цифри на телефонния номер; търсенето не обхожда всички налични номера, за да гарантира всяко възможно съвпадение.
number_filter_valuestringНеМежду 1 и 15 цифри, без интервали, + или препинателни знаци. Водещите нули имат значение; изпратете стойността като текст.
filter_requiredstringНеРазширена настройка: стойност 1, true, yes или on изисква изрично избран източник на налични номера, който поддържа режима на филтриране. В противен случай API връща status.code 422. Това не е необходимо за обичайно преглеждане на каталога.
pidstringНеРазширен селектор за налични номера, предоставен от MultiTEL. Приемат се числови форми и поддържани шестнадесетични форми с дължина 32 знака; неразпознатите стойности се игнорират без предупреждение. Пропуснете го при обичайна употреба. Не извеждайте селектори от идентификатори на цени и не приемайте, че произволен селектор ограничава наличните номера единствено до избрания източник.

Отговор

Един JSON обект, съдържащ status и response. При успех status.code е 200, а response е масив от записи за номера. status.results е броят на записите във върнатия масив; status.msg може да бъде Results: N или OK при поточно предаван отговор. Без compact=1 някои търсения записват масива response постепенно и завършват с status, затова изчакайте цялото JSON тяло. Това не е JSON, разделен с нови редове. Проверявайте status.code дори когато HTTP предаването е успешно. По-долу са показани типични полета; метаданните, специфични за източника, и незадължителните полета се различават. Третирайте всеки идентификатор като непрозрачна стойност и съхранявайте заедно номера и избраната за него стойност на price[].uuid.

Примерна структура на отговор; това не са реални данни от акаунт или актуална ценова оферта.

{
  "status": {
    "code": 200,
    "msg": "Results: 1",
    "results": 1
  },
  "response": [
    {
      "number": "12125550123",
      "info": {
        "uuid": "NUMBER_ID_FROM_RESPONSE",
        "prefix_uuid": "PREFIX_ID_FROM_RESPONSE",
        "area_uuid": "AREA_ID_FROM_RESPONSE",
        "country_uuid": "COUNTRY_ID_FROM_RESPONSE",
        "country_iso": "US",
        "prefix": "+1212",
        "name": "Example area",
        "state": "US"
      },
      "price": [
        {
          "uuid": "PRICE_PLAN_ID_FROM_RESPONSE",
          "per_minute": "0.01",
          "per_sms": "0",
          "per_mms": "0",
          "free_minutes": "0",
          "setup_price": "1.00",
          "monthly_price": "2.00",
          "yearly_price": "0",
          "channels": "2"
        }
      ],
      "contract": {
        "term": "1 month",
        "renewal": "monthly",
        "notice": "none"
      },
      "restrictions": {
        "needs_registration": "0",
        "restrictions": ""
      },
      "features": [
        "voice"
      ],
      "overflow": "0"
    }
  ]
}

Грешки

  • 401: Неуспешно удостоверяване. Невалидни или липсващи идентификационни данни и отказан достъп до акаунта за API не водят до резултати от търсене.
  • 404: Invalid prefix ID, Invalid country, Invalid area или No numbers found. Прочетете status.msg; отговорът с грешка не е масив от номера.
  • 400: NUMBER_FILTER_INVALID в response.code: невалиден режим, стойност, която не е от 1–15 цифри, или filter_required, без да са подадени едновременно режим и стойност.
  • 422: NUMBER_FILTER_UNSUPPORTED в response.code: или номерът за префикса се присвоява при поръчка (reason=order_only_prefix, а next_function посочва маршрута за поръчка), или изрично избраният източник не може да поддържа изисквания филтър.

Наличност и странични ефекти

  • Този обработчик извършва търсене и подготвя ценови оферти; той не подава поръчка за номер и не удържа такса за закупуване на номер. Той може да обновява кешовете на каталога, да премахва остарели кеширани данни за налични номера, да запазва ценови планове за конкретния акаунт и да записва дневници на търсенията.
  • Наличността е резултат към конкретен момент, а не резервация. Последваща поръчка може да се провали или да върне различна наличност. Проверете и съгласувайте резултата от поръчката, преди да опитате повторно закупуване.
  • Цените са специфични за акаунта. Запазете идентификатора на избрания план за същия акаунт и прегледайте отделно условията и таксите за поръчката; тази крайна точка сама по себе си не доказва, че дадена цена ще остане валидна до по-късна поръчка.
  • Примерният номер и цените са измислени примери за структурата на отговора, а не актуална ценова оферта. Възможностите, броят на каналите, срокът и информацията за регистрация трябва да се прочетат от действително избрания резултат.
  • Някои описания на изискванията за регистрация съдържат форматиран текст или връзки. Третирайте върнатите низове като недоверени данни, когато ги визуализирате в собственото си приложение.
  • Наличността на мобилни номера и съответните флагове зависят от това дали акаунтът отговаря на условията и от наличните номера. Сам по себе си префикс от каталога или флагът is_mobile не установява мобилните възможности на конкретен номер.