NAV Navbar
php json http

Wprowadzenie

MMSC API jest skierowane do użytkowników chcących rozbudować swoje aplikacje o system komunikacji z platformą MMSC Metroportu. Aplikacja ta w prosty sposób umożliwia integrację dowolnego serwisu z usługą MVNO Metroportu. Interfejs został zaprojektowany w standardzie REST API. Żądania i odpowiedzi są kodowane jako UTF-8.

Dodatkowe parametry wewnątrz ciała żądania podczas edycji / dodawania rekordu powinny być zakodowane jako JSON lub urlencoded. Dodatkowe parametry dla żądań typu GET podawanie są w URL za ?.

Lista zmian

Rozpoczęcie współpracy

W celu rozpoczęcia współpracy należy skontaktować się z Metroport w celu utworzenia konta w systemie centralnym MMSC, które następnie posłuży do autoryzacji.

Autoryzacja

Aby korzystać z funkcji interfejsu wymagana jest autoryzacja użytkownika. Jako pierwszy parametr każdej funkcji należy podać tablicę asocjacyjną zawierającą klucze:

Parametr Opis
login login operatora (taki sam jak przy logowaniu się do systemu MMS)
password aktualne, nie zakodowane hasło

Dostęp do funkcji poprzez interfejs wymaga aby konto operatora miało dostęp do odpowiadającej strony w systemie MMS.

Adresy URL

Adres URL do połączenia z aplikacją - zwane dalej "Adresem połączenia":

Lista funkcji

URL : - typ wywołania (GET = pobranie danych / POST = dodanie rekordu / PUT = edycja rekordu / DELETE = usunięcie rekordu){identyfikator} - identyfikator rekordu wewnątrz URL, zawsze liczbowy

Zalogowanie użytkownika

POST https://api.mmsc.metroport.pl/Admins/Auth/login


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Admins/Auth/login",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => array('login' => 'admin','password' => '123456'),
  CURLOPT_HTTPHEADER => array(
    "Cookie: sess_ci=3719skfqgg431f0o1ths8qouomob0199"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

POST /Admins/Auth/login HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=3rv6tausagdt8p7s76gjddnd9a33sbnf

{"login":"admin", "password":"123456"}

Wymagane podanie parametrów:

Parametr Opis
login login operatora (taki sam jak przy logowaniu się do systemu MMS)
password aktualne, nie zakodowane hasło

W wyniku zwrócony zostanie identyfikator sesji, w nagłówku ustawione zostanie ciasteczko: sess_ci=zwrócone_id_sesji

Kolejne żądania muszą być wysyłane z autoryzacją - w nagłówku mieć ustawione otrzymane ciasteczko - opcja --cookie "sess_ci=id_sesji"

Kody błędów

Kody informacyjne

kod opis słowny znaczenie/zwrócony zasób
100 Continue Kontynuuj – prośba o dalsze wysyłanie zapytania
101 Switching Protocols Zmiana protokołu
110 Connection Timed Out Przekroczono czas połączenia. Serwer zbyt długo nie odpowiada.
111 Connection refused Serwer odrzucił połączenie

Kody powodzenia

kod opis słowny znaczenie/zwrócony zasób
200 OK Zawartość żądanego dokumentu (najczęściej zwracany nagłówek odpowiedzi w komunikacji WWW Internetu)
201 Created Utworzono – wysłany dokument został zapisany na serwerze
202 Accepted Przyjęto – zapytanie zostało przyjęte do obsłużenia, lecz jego zrealizowanie jeszcze się nie skończyło
203 Non-Authoritative Information Informacja nieautorytatywna – zwrócona informacja nie odpowiada dokładnie odpowiedzi pierwotnego serwera, lecz została utworzona z lokalnych bądź zewnętrznych kopii
204 No content Brak zawartości – serwer zrealizował zapytanie klienta i nie potrzebuje zwracać żadnej treści
205 Reset Content Przywróć zawartość – serwer zrealizował zapytanie i klient powinien przywrócić pierwotny wygląd dokumentu
206 Partial Content Część zawartości – serwer zrealizował tylko część zapytania typu GET, odpowiedź musi zawierać nagłówek Content-Range informujący o zakresie bajtowym zwróconego elementu

Kody błędu aplikacji klienta

kod opis słowny znaczenie/zwrócony zasób
400 Bad Request Nieprawidłowe zapytanie – żądanie nie może być obsłużone przez serwer z powodu nieprawidłowości postrzeganej jako błąd użytkownika (np. błędna składnia zapytania)
401 Unauthorized Nieautoryzowany dostęp – żądanie zasobu, który wymaga uwierzytelnienia
402 Payment Required Wymagana opłata – odpowiedź zarezerwowana na przyszłość. Google Developers API korzysta z tego kodu, jeśli dany programista przekroczył dzienny limit zapytań[1].
403 Forbidden Zabroniony – serwer zrozumiał zapytanie, lecz konfiguracja bezpieczeństwa zabrania mu zwrócić żądany zasób
404 Not Found Nie znaleziono – serwer nie odnalazł zasobu według podanego URL ani niczego co by wskazywało na istnienie takiego zasobu w przeszłości
405 Method Not Allowed Niedozwolona metoda – metoda zawarta w żądaniu nie jest dozwolona dla wskazanego zasobu, odpowiedź zawiera też listę dozwolonych metod
406 Not Acceptable Niedozwolone – zażądany zasób nie jest w stanie zwrócić odpowiedzi mogącej być obsłużonej przez klienta według informacji podanych w zapytaniu
407 Proxy Authentication Required Wymagane uwierzytelnienie do serwera pośredniczącego (ang. proxy) – analogicznie do kodu 401, dotyczy dostępu do serwera proxy
408 Request Timeout Koniec czasu oczekiwania na żądanie – klient nie przesłał zapytania do serwera w określonym czasie
409 Conflict Konflikt – żądanie nie może być zrealizowane, ponieważ występuje konflikt z obecnym statusem zasobu, ten kod odpowiedzi jest zwracany tylko w przypadku podejrzewania przez serwer, że klient może znaleźć przyczyny błędu i przesłać ponownie prawidłowe zapytanie. Odpowiedź serwera powinna zawierać informację umożliwiające klientowi rozwiązanie problemu, jednak nie jest to obowiązkowe (np. przesłanie 2 razy identycznego dokumentu kiedy wymagana jest unikalność).
410 Gone Zniknął (usunięto) – zażądany zasób nie jest dłużej dostępny i nieznany jest jego ewentualny nowy adres URI; klient powinien już więcej nie odwoływać się do tego zasobu
411 Length required Wymagana długość – serwer odmawia zrealizowania zapytania ze względu na brak nagłówka Content-Length w zapytaniu; klient może powtórzyć zapytanie dodając doń poprawny nagłówek długości
412 Precondition Failed Warunek wstępny nie może być spełniony – serwer nie może spełnić przynajmniej jednego z warunków zawartych w zapytaniu
413 Request Entity Too Large Encja zapytania zbyt długa – całkowita długość zapytania jest zbyt długa dla serwera
414 Request-URI Too Long Adres URI zapytania zbyt długi – długość zażądanego URI jest większa niż maksymalna oczekiwana przez serwer
415 Unsupported Media Type Nieznany sposób żądania – serwer odmawia przyjęcia zapytania, ponieważ jego składnia jest niezrozumiała dla serwera
416 Requested Range Not Satisfiable Zakres bajtowy podany w zapytaniu nie do obsłużenia – klient podał w zapytaniu zakres, który nie może być zastosowany do wskazanego zasobu
417 Expectation Failed Oczekiwana wartość nie do zwrócenia – oczekiwanie podane w nagłówku Expect żądania nie może być spełnione przez serwer lub – jeśli zapytanie realizuje serwer proxy – serwer ma dowód, że oczekiwanie nie będzie spełnione przez następny w łańcuchu serwer realizujący zapytanie
422 Unprocessable entity Zapytanie było poprawnie sformułowane, ale było niemożliwe do kontynuowania z powodu semantycznych błędów.

Kody błędu serwera HTTP

kod opis słowny znaczenie/zwrócony zasób
500 Internal Server Error Wewnętrzny błąd serwera – serwer napotkał niespodziewane trudności, które uniemożliwiły zrealizowanie żądania
501 Not Implemented Nie zaimplementowano – serwer nie dysponuje funkcjonalnością wymaganą w zapytaniu; ten kod jest zwracany, gdy serwer otrzymał nieznany typ zapytania
502 Bad Gateway Błąd bramy – serwer – spełniający rolę bramy lub pośrednika – otrzymał niepoprawną odpowiedź od serwera nadrzędnego i nie jest w stanie zrealizować żądania klienta
503 Service Unavailable Usługa niedostępna – serwer nie jest w stanie w danej chwili zrealizować zapytania klienta ze względu na przeciążenie
504 Gateway Timeout Przekroczony czas bramy – serwer – spełniający rolę bramy lub pośrednika – nie otrzymał w ustalonym czasie odpowiedzi od wskazanego serwera HTTP, FTP, LDAP itp. lub serwer DNS jest potrzebny do obsłużenia zapytania
505 HTTP Version Not Supported Nieobsługiwana wersja HTTP – serwer nie obsługuje bądź odmawia obsługi wskazanej przez klienta wersji HTTP
507 Insufficient Storage (WebDAV)[5] Serwer nie jest w stanie zapisać danych związanych z wykonaniem zapytania
508 Loop Detected (WebDAV)[6] Serwer wykrył nieskończoną pętlę w trakcie przetwarzania zapytania
509 Bandwidth Limit Exceeded Serwer jest tymczasowo niedostępny, ponieważ właściciel strony przekroczył limit transferu danych.
510 Not Extended[7] Brak rozszerzenia HTTP koniecznego do obsługi danego zapytania
511 Network Authentication Required[8] Wymagane uwierzytelnienie przed otrzymaniem dostępu do sieci. W zamyśle wykorzystywane przez pośredników kontrolujących dostęp do sieci (np.: wymaganie potwierdzenia zasad użytkowania przed udostępnieniem połączenia).

Klienci i użytkownicy

Lista użytkowników

GET https://api.mmsc.metroport.pl/Users/users

GET /Users/users? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=90u5ml4apsfkuovmmoidl95fhhjo7280
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Users/users",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=90u5ml4apsfkuovmmoidl95fhhjo7280"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu (pierwszy wiersz przedstawia ilość wszystkich rekordów, poniżej jeden przykładowy rekord):



[
    "10000",
    [

{
            "id": "14924",
            "firmid": "1",
            "userno": "3",
            "usercode": "000003",
            "usertype": "2",
            "customertype": "2",
            "name": "Test",
            "lastname": "API",
            "teryt_spotid_city1": "0",
            "teryt_spotid_street1": "0",
            "teryt_streetid_street1": "0",
            "streetname1": "",
            "streetno1": "",
            "local1": "",
            "zip1": "",
            "city1": "Łódź",
            "zipcity1": "",
            "country1": "",
            "teryt_spotid_city2": "0",
            "teryt_spotid_street2": "0",
            "teryt_streetid_street2": "0",
            "streetname2": "",
            "streetno2": "",
            "local2": "",
            "zip2": "",
            "city2": "",
            "zipcity2": "",
            "country2": "",
            "email": "testapi@test.pl",
            "email2": "",
            "email3": "",
            "email_invoices": "",
            "nip": "",
            "idcardno": "AGH754328",
            "pesel": "",
            "phone1": "",
            "phone2": "",
            "phone3": "",
            "fax": "",
            "borndate_day": "0",
            "borndate_month": "0",
            "borndate_year": "0000",
            "boklogin": "kl014924",
            "bokpass": "",
            "bokquestion": "",
            "bokanswer": "",
            "bokfirstpass": "e6hHnn",
            "provider": "0",
            "nowarning": "0",
            "wiruswarn": "0",
            "spammed": "0000-00-00 00:00:00",
            "spammed_enabled": "0",
            "checkstartdate": "0",
            "checkclient": "0",
            "voiplimit": "300.00",
            "voiplimit_base": "300.00",
            "voiplimitday": "60.00",
            "voiplimitday_base": "60.00",
            "mvnolimit": "300.00",
            "mvnolimit_base": "300.00",
            "mvnolimitday": "60.00",
            "mvnolimitday_base": "60.00",
            "description": "",
            "archived": "0",
            "creationdate": "1595956881",
            "creatorid": "40",
            "moddate": "1596208511",
            "modid": "40",
            "deleted": "0",
            "deleteid": "0",
            "deletedate": "0",
            "updated": "0",
            "loyality_download_percent": "0",
            "loyality_upload_percent": "0",
            "loyality_plan_enabled": "0",
            "loyality_plan_type": "0",
            "loyality_plan_invoicepay_margin": "0",
            "loyality_plan_allowed": "0",
            "bankaccount": "",
            "pin_phone": "998792",
            "iptv_cust_master_pin": "",
            "iptv_cust_vod_pin": "",
            "invoiceflag": "1",
            "invoicesgroup": "1",
            "dataprocess": "1",
            "dataprocess_directmarketing": "1",
            "dataprocess_ads": "1",
            "UserName": "API Test",
            "UserCodeName": "(000003) API Test"
        }

[
    "10000",
    [

{
            "id": "14924",
            "firmid": "1",
            "userno": "3",
            "usercode": "000003",
            "usertype": "2",
            "customertype": "2",
            "name": "Test",
            "lastname": "API",
            "teryt_spotid_city1": "0",
            "teryt_spotid_street1": "0",
            "teryt_streetid_street1": "0",
            "streetname1": "",
            "streetno1": "",
            "local1": "",
            "zip1": "",
            "city1": "Łódź",
            "zipcity1": "",
            "country1": "",
            "teryt_spotid_city2": "0",
            "teryt_spotid_street2": "0",
            "teryt_streetid_street2": "0",
            "streetname2": "",
            "streetno2": "",
            "local2": "",
            "zip2": "",
            "city2": "",
            "zipcity2": "",
            "country2": "",
            "email": "testapi@test.pl",
            "email2": "",
            "email3": "",
            "email_invoices": "",
            "nip": "",
            "idcardno": "AGH754328",
            "pesel": "",
            "phone1": "",
            "phone2": "",
            "phone3": "",
            "fax": "",
            "borndate_day": "0",
            "borndate_month": "0",
            "borndate_year": "0000",
            "boklogin": "kl014924",
            "bokpass": "",
            "bokquestion": "",
            "bokanswer": "",
            "bokfirstpass": "e6hHnn",
            "provider": "0",
            "nowarning": "0",
            "wiruswarn": "0",
            "spammed": "0000-00-00 00:00:00",
            "spammed_enabled": "0",
            "checkstartdate": "0",
            "checkclient": "0",
            "voiplimit": "300.00",
            "voiplimit_base": "300.00",
            "voiplimitday": "60.00",
            "voiplimitday_base": "60.00",
            "mvnolimit": "300.00",
            "mvnolimit_base": "300.00",
            "mvnolimitday": "60.00",
            "mvnolimitday_base": "60.00",
            "description": "",
            "archived": "0",
            "creationdate": "1595956881",
            "creatorid": "40",
            "moddate": "1596208511",
            "modid": "40",
            "deleted": "0",
            "deleteid": "0",
            "deletedate": "0",
            "updated": "0",
            "loyality_download_percent": "0",
            "loyality_upload_percent": "0",
            "loyality_plan_enabled": "0",
            "loyality_plan_type": "0",
            "loyality_plan_invoicepay_margin": "0",
            "loyality_plan_allowed": "0",
            "bankaccount": "",
            "pin_phone": "998792",
            "iptv_cust_master_pin": "",
            "iptv_cust_vod_pin": "",
            "invoiceflag": "1",
            "invoicesgroup": "1",
            "dataprocess": "1",
            "dataprocess_directmarketing": "1",
            "dataprocess_ads": "1",
            "UserName": "API Test",
            "UserCodeName": "(000003) API Test"
        }

Wartość zwracana:

Parametr Opis
id ID użytkownika / klienta
firmid ID firmy
userno Numer klienta
usercode Kod klienta
usertype '1' = klient / '2' = użytkownik
customertype '1' = firma / '2' = prywatny
name Imię klienta / c.d. nazwy
lastname Nazwisko klienta / nazwa firmy
teryt_spotid_city1 identyfikator TERYT - miasto
teryt_spotid_street1 identyfikator TERYT - budynek
teryt_streetid_street1 identyfikator TERYT - ulica
streetname1 Adres zamieszkania: nazwa ulicy
streetno1 Adres zamieszkania: numer ulicy
local1 Adres zamieszkania: numer lokalu
zip1 Adres zamieszkania: kod pocztowy
city1 Adres zamieszkania: nazwa miasta
zipcity1 Adres zamieszkania: miasto dla poczty
country1 Adres zamieszkania: kraj
streetname2 Adres korespondencyjny: nazwa ulicy
streetno2 Adres korespondencyjny: numer ulicy
local2 Adres korespondencyjny: numer lokalu
zip2 Adres korespondencyjny: kod pocztowy
city2 Adres korespondencyjny: miasto
zipcity2 Adres korespondencyjny: miasto poczty
country2 Adres korespondencyjny: kraj
email Adres e-mail klienta
email2 Dodatkowy adres e-mail
email3 Dodatkowy adres e-mail
email_invoices Adres e-mail do wysyłania dokumentów elektronicznych
nip Numer NIP
idcardno Numer dowodu osobistego
pesel Numer PESEL
phone1 Numer telefonu klienta
phone2 Dodatkowy numer telefonu
phone3 Dodatkowy numer telefonu
fax Fax klienta
borndate_day Data urodzenia - dzień
borndate_month Data urodzenia - miesiąc
borndate_year Data urodzenia - rok
boklogin Login do e-bok klienta
bokpass hasło do E-BOK (zmienione, ustalone przez klienta)
bokquestion pytanie do odzyskania hasła do E-BOK
bokanswer odpowiedz na pytanie do odzyskania hasła
bokfirstpass hasło podstawowe z umowy (autogenerowane)
provider czy klient jest providerem, 1-tak (brak ostrzeżeń, zawsze ma net, nie jest uwzględniany podczas windykacji)
nowarning wyłączenie ostrzeżeń, 1-brak ostrzeżeń, 0-pełne ostrzeganie
wiruswarn ostrzeżenia o wirusach, 1-włączone
spammed data ostatniego włączenia ostrzeżenia o tym, że klient wysyła spam
spammed_enabled ostrzeżenie o spamowaniu, 1-włączone (włącza się automatycznie po wykryciu spamowania przez klienta)
checkstartdate sprawdzanie klienta - data rozpoczęcia
checkclient sprawdzanie klienta - ilość godzin
voiplimit ustawiony limit miesięcznych kosztów rozmów voip
voiplimit_base ustawiony limit miesięcznych kosztów rozmów voip - do przywrócenia w nast. miesiącu
voiplimitday ustawiony dzienny limit kosztów rozmów voip
voiplimitday_base ustawiony dzienny limit kosztów rozmów voip - do przywrócenia następnego dnia
mvnolimit ustawiony limit miesięcznych kosztów rozmów mvno
mvnolimit_base ustawiony limit miesięcznych kosztów rozmów mvno - do przywrócenia w nast. miesiącu
mvnolimitday ustawiony dzienny limit kosztów rozmów mvno
mvnolimitday_base ustawiony dzienny limit kosztów rozmów mvno - do przywrócenia następnego dnia
description dodatkowy opis
archived klient archiwalny, 1-tak
creationdate data utworzenia klienta
creatorid administrator tworzący
moddate data modyfikacji danych
modid administrator modyfikujący
deleted flaga usunięcia klienta, 1-usunięty
deleteid administrator usuwający
deletedate data usunięcia klienta
updated flaga aktualizacji danych klienta, 1-zaktualizowane (np aneksem, do importu faktur/danych klientów w XML)
loyality_download_percent program lojalnościowy - procent zmiany dla download (tylko usługi internetowe)
loyality_upload_percent program lojalnościowy - procent zmiany dla upload (tylko usługi internetowe)
loyality_plan_enabled program lojalnościowy - flaga aktywności, 1-włączony, 0-wyłączony (tylko usługi internetowe)
loyality_plan_type program lojalnościowy - typ programu, 0-wyłączony, 1-czasowy ze sprawdzaniem salda, 2-na stałe (tylko usługi internetowe)
loyality_plan_invoicepay_margin program lojalnościowy - margines sprawdzania płatności i terminów faktur, w dniach (tylko usługi internetowe)
loyality_plan_allowed program lojalnościowy - flaga dopuszczenia do programu, 1-wpłaty w terminie i dopuszczenie do programu (tylko usługi internetowe)
bankaccount Rachunek bankowy do wpłat klienta
pin_phone PIN klienta do autoryzacji rozmowy telefonicznej
iptv_cust_master_pin pin podstawowy klienta, z umowy
iptv_cust_vod_pin pin podstawowy klienta do VOD, z umowy
invoiceflag Znacznik faktury
invoicesgroup czy grupować faktury z różnych umów, jeśli maja ten sam adres fakturowany ?
dataprocess zgoda na przetwarzanie danych osobowych klienta, wymagana dla świadczenia usług
dataprocess_directmarketing zgoda na przetwarzanie danych do celów marketingu bezpośredniego
dataprocess_ads zgoda na przetwarzanie danych w celach marketingowych, przesyłanie informacji handlowych, przekazywanie danych podmiotom współpracującym
UserName połączone dane klienta
UserCodeName połączone dane klienta wraz z ID

Pobranie danych użytkownika

GET https://api.mmsc.metroport.pl/Users/users/{ID użytkownika}

GET /Users/users/5678? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=90u5ml4apsfkuovmmoidl95fhhjo7280
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Users/users/5678",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=90u5ml4apsfkuovmmoidl95fhhjo7280"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku znalezienia rekordu:

{
  "id": "5678",
  "firmid": "36",
  "userno": "2450",
  "usercode": "2450",
  "usertype": "2",
  "customertype": "2",
  "name": "Aneta",
  "lastname": "Kowalska",
  "teryt_spotid_city1": "964614",
  "teryt_spotid_street1": "964614",
  "teryt_streetid_street1": "20291",
  "streetname1": "Juliusza Kowalskiego",
  "streetno1": "4",
  "local1": "",
  "zip1": "11-040",
  "city1": "Dobre Miasto",
  "zipcity1": "Dobre Miasto",
  "country1": "Polska",
  "teryt_spotid_city2": "0",
  "teryt_spotid_street2": "0",
  "teryt_streetid_street2": "0",
  "streetname2": "",
  "streetno2": "",
  "local2": "",
  "zip2": "",
  "city2": "",
  "zipcity2": "",
  "country2": "Polska",
  "email": "",
  "email2": "",
  "email3": "",
  "email_invoices": "",
  "nip": "",
  "idcardno": "",
  "pesel": "",
  "phone1": "",
  "phone2": "",
  "phone3": "",
  "fax": "",
  "borndate_day": "0",
  "borndate_month": "0",
  "borndate_year": "0000",
  "boklogin": "kl005678",
  "bokpass": "",
  "bokquestion": "",
  "bokanswer": "",
  "bokfirstpass": "KMuuaK",
  "provider": "0",
  "nowarning": "0",
  "wiruswarn": "1",
  "spammed": null,
  "spammed_enabled": "0",
  "checkstartdate": "0",
  "checkclient": "0",
  "voiplimit": "300.00",
  "voiplimit_base": "300.00",
  "voiplimitday": "60.00",
  "voiplimitday_base": "60.00",
  "mvnolimit": "300.00",
  "mvnolimit_base": "300.00",
  "mvnolimitday": "60.00",
  "mvnolimitday_base": "60.00",
  "description": "",
  "archived": "0",
  "creationdate": "1456903254",
  "creatorid": "116",
  "moddate": "0",
  "modid": "0",
  "deleted": "0",
  "deleteid": "0",
  "deletedate": "0",
  "updated": "0",
  "loyality_download_percent": "0",
  "loyality_upload_percent": "0",
  "loyality_plan_enabled": "0",
  "loyality_plan_type": "0",
  "loyality_plan_invoicepay_margin": "0",
  "loyality_plan_allowed": "0",
  "bankaccount": "",
  "pin_phone": "241387",
  "iptv_cust_master_pin": "1594",
  "iptv_cust_vod_pin": "5178",
  "invoiceflag": "0",
  "invoicesgroup": "0",
  "dataprocess": "1",
  "dataprocess_directmarketing": "1",
  "dataprocess_ads": "1",
  "invoice_flag_description": null,
  "LoyalityDescr": "nieaktywny",
  "UserAddress": "Dobre Miasto, ul. Juliusza Kowalskiego 300, 11-040 Dobre Miasto",
  "UserSelectData": "Kowalska Aneta, Dobre Miasto, Juliusza Kowalskiego 300, 11-040 Dobre Miasto",
  "FirmName": "Operator",
  "UserName": "Kowalska Aneta",
  "UserCodeName": "(2450) Kowalska Aneta"
}

odpowiedź w przypadku braku rekordu:
ERROR 204: No Content

Wartość zwracana:

Parametr Opis
id ID użytkownika / klienta
userno Numer klienta
usercode Kod klienta
usertype '1' = klient / '2' = użytkownik
customertype '1' = firma / '2' = prywatny
lastname Nazwisko klienta / nazwa firmy
name Imię klienta / c.d. nazwy
streetname1 Adres zamieszkania: nazwa ulicy
streetno1 Adres zamieszkania: numer ulicy
local1 Adres zamieszkania: numer lokalu
zip1 Adres zamieszkania: kod pocztowy
city1 Adres zamieszkania: nazwa miasta
zipcity1 Adres zamieszkania: miasto dla poczty
country1 Adres zamieszkania: kraj
streetname2 Adres korespondencyjny: nazwa ulicy
streetno2 Adres korespondencyjny: numer ulicy
local2 Adres korespondencyjny: numer lokalu
zip2 Adres korespondencyjny: kod pocztowy
city2 Adres korespondencyjny: miasto
zipcity2 Adres korespondencyjny: miasto poczty
country2 Adres korespondencyjny: kraj
nip Numer NIP
idcardno Numer dowodu osobistego
pesel Numer PESEL
email Adres e-mail klienta
email2 Dodatkowy adres e-mail
email3 Dodatkowy adres e-mail
phone1 Numer telefonu klienta
phone2 Dodatkowy numer telefonu
phone3 Dodatkowy numer telefonu
fax Fax klienta
boklogin Login do e-bok klienta
bankaccount Rachunek bankowy do wpłat klienta
description Dodatkowy opis klienta
statuses Opis statusów klienta

Dodanie użytkownika

POST https://api.mmsc.metroport.pl/Users/users

POST /Users/users/? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=90u5ml4apsfkuovmmoidl95fhhjo7280


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Users/users",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => array('name' => 'Test','lastname' => 'API','city1' => 'Łódź'),
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",  
    "Cookie: sess_ci_dev=e29qik65pcmj7nlslli1gq0eih8r454n"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu (zwracane jest ID użytkownika dodanego do bazy):

14924
14924

odpowiedź w przypadku nie podania parametrów:

{
    "lastname": "Pole Nazwa/Nazwisko jest wymagane.",
    "city1": "Pole Miasto jest wymagane."
}
{
    "lastname": "Pole Nazwa/Nazwisko jest wymagane.",
    "city1": "Pole Miasto jest wymagane."
}

odpowiedź w przypadku próby dodania istniejącego użytkownika:

{
    "": "Taki klient już istnieje."
}
{
    "": "Taki klient już istnieje."
}
Parametr wywołania Opis
customertype '1' = firma / '2' = prywatny (domyślnie)
lastname Nazwisko klienta / nazwa firmy
name Imię klienta / c.d. nazwy
streetname1 Adres zamieszkania: nazwa ulicy
streetno1 Adres zamieszkania: numer ulicy
local1 Adres zamieszkania: numer lokalu
zip1 Adres zamieszkania: kod pocztowy
city1 Adres zamieszkania: nazwa miasta
zipcity1 Adres zamieszkania: miasto dla poczty
country1 Adres zamieszkania: kraj
streetname2 Adres korespondencyjny: nazwa ulicy
streetno2 Adres korespondencyjny: numer ulicy
local2 Adres korespondencyjny: numer lokalu
zip2 Adres korespondencyjny: kod pocztowy
city2 Adres korespondencyjny: miasto
zipcity2 Adres korespondencyjny: miasto poczty
country2 Adres korespondencyjny: kraj
nip Numer NIP
idcardno Numer dowodu osobistego
pesel Numer PESEL
email Adres e-mail klienta
email2 Dodatkowy adres e-mail
email3 Dodatkowy adres e-mail
phone1 Numer telefonu klienta
phone2 Dodatkowy numer telefonu
phone3 Dodatkowy numer telefonu
fax Fax klienta
description Dodatkowy opis klienta

Edycja użytkownika

PUT https://api.mmsc.metroport.pl/Users/users/{ID Użytkownika}

PUT /Users/users/14924? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/x-www-form-urlencoded
Cookie: sess_ci_dev=gl4c90s8kfv1tpqijr7j7492knd0oj8c

lastname=API&city1=Łódź&email=testapi@test.pl

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Users/users/14924",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_POSTFIELDS => "lastname=API&city1=%u0141%F3d%u017A&email=testapi@test.pl",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/x-www-form-urlencoded",
    "Cookie: sess_ci_dev=gl4c90s8kfv1tpqijr7j7492knd0oj8c"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu (zwracany jest status operacji):

true
true

odpowiedź w przypadku nie podania parametrów w json:

{
    "lastname": "Pole Nazwa/Nazwisko jest wymagane.",
    "city1": "Pole Miasto jest wymagane."
}
{
    "lastname": "Pole Nazwa/Nazwisko jest wymagane.",
    "city1": "Pole Miasto jest wymagane."
}

odpowiedź w przypadku próby dodania istniejącego użytkownika:

{
    "": "Błąd podczas zapisywania"
}
{
    "": "Błąd podczas zapisywania"
}
Parametr wywołania Opis
id ID użytkownika / klienta
customertype '1' = firma / '2' = prywatny (domyślnie)
lastname Nazwisko klienta / nazwa firmy
name Imię klienta / c.d. nazwy
streetname1 Adres zamieszkania: nazwa ulicy
streetno1 Adres zamieszkania: numer ulicy
local1 Adres zamieszkania: numer lokalu
zip1 Adres zamieszkania: kod pocztowy
city1 Adres zamieszkania: nazwa miasta
zipcity1 Adres zamieszkania: miasto dla poczty
country1 Adres zamieszkania: kraj
streetname2 Adres korespondencyjny: nazwa ulicy
streetno2 Adres korespondencyjny: numer ulicy
local2 Adres korespondencyjny: numer lokalu
zip2 Adres korespondencyjny: kod pocztowy
city2 Adres korespondencyjny: miasto
zipcity2 Adres korespondencyjny: miasto poczty
country2 Adres korespondencyjny: kraj
nip Numer NIP
idcardno Numer dowodu osobistego
pesel Numer PESEL
email Adres e-mail klienta
email2 Dodatkowy adres e-mail
email3 Dodatkowy adres e-mail
phone1 Numer telefonu klienta
phone2 Dodatkowy numer telefonu
phone3 Dodatkowy numer telefonu
fax Fax klienta
description Dodatkowy opis klienta

IPTV

Współpraca

Aktywacja usługi IPTV z systemu zewnętrznego przebiega w następujący sposób:

W systemie IPTV nie ma billingow. Wszystkie pakiety ustawione ze strony klienta (np. PPV) trzeba wyszukiwać poprzez codzienną synchronizację pakietów z MMSC do systemu zewnętrznego funkcją GET /Iptv/Orders. Plany płatności muszą być generowane po stonie systemu zewnętrznego.

Pobranie listy pakietów IPTV

GET https://api.mmsc.metroport.pl/Iptv/Packages

przykład dla wyszukania pakietów aktywnych z grupy Multiroom:

GET /Iptv/Packages?active=1&pkg_group=3 HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=opn6oerijmtbo0p14kuim83k42opj312


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Packages?active=1&pkg_group=3",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8"  
    "Cookie: sess_ci=opn6oerijmtbo0p14kuim83k42opj312"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:

{
        "id": "144",
        "firmid": "1",
        "iptv_program": "MMS",
        "ext_pkg_id": "",
        "tariffcode": "MULTIROOM2",
        "pkg_name": "MULTIROOM",
        "pkg_desc": "",
        "pkg_tvpanel_desc": "",
        "pkg_autoinclude": "",
        "pkg_denied": "44,129,100,92,42,54,43,136,91,2,3,21,13,194,97,34,30,27,46,28,47,45,36,193,18,24,10,17,15,16,37,32,51,52,50,39,31,26,104,55,61,67,40,41,127",
        "pkg_valid_from": "2016-02-09",
        "pkg_valid_to": "2020-12-31",
        "self_service": "0",
        "npvr_quota": "0",
        "tvonline_maxsessions": "0",
        "pricenetto": "0.54",
        "vat": "8",
        "pricebrutto": "0.58",
        "pricenetto_provider": "0.54",
        "vat_provider": "8",
        "pricebrutto_provider": "0.58",
        "pkg_group": "3",
        "active": "1",
        "creationdate": "1455025613",
        "moddate": "1493122443",
        "deletedate": "0",
        "http_export": "0",
        "firmName": "METROPORT Sp. z o.o.",
        "countActive": "2173"
    }
Parametr wywołania (filtrowania) Opis
active 1=pakiet aktywny, może być wybrany na umowie/ aneksie
pkg_name nazwa pakietu
iptv_program wybrany program obslugi IPTV
pkg_group grupa: 1= podstawowy, 2= dodatkowy, 3= multiroom, 4= PPV
firmid id partnera
Wartość zwracana Opis
id unikalne, autonumerowane id rekordu
firmid id partnera
iptv_program wybrany program obslugi IPTV
ext_pkg_id id pakietu w zewnętrznej bazie
tariffcode kod pakietu dla faktur
pkg_name nazwa pakietu
pkg_desc opis pakietu
pkg_tvpanel_desc opis dla TV panelu
pkg_autoinclude pakiety wymagane - automatycznie dodawane z tym pakietem
pkg_denied pakiety wykluczające - nie mogą być wybrane z tym pakietem
pkg_valid_from pakiet ważny od dnia
pkg_valid_to pakiet ważny do dnia
self_service Możliwość samodzielnej aktywacji pakietu przez klienta pilotem lub przez ebok
npvr_quota Ilość godzin dla nagrań klienta
tvonline_maxsessions Ilość możliwych jednoczesnych sesji w Metro TV
pricenetto cena netto dla klientów
vat % vat ceny
pricebrutto cena brutto dla klientów
pricenetto_provider koszt netto wobec dostawcy
vat_provider % vat dla kosztu wobec dostawcy
pricebrutto_provider koszt brutto wobec dostawcy
pkg_group grupa: 1= podstawowy, 2= dodatkowy, 3= multiroom, 4= PPV
active 1=pakiet aktywny, może być wybrany na umowie/ aneksie
creationdate czas utworzenia
moddate czas modyfikacji
deletedate czas usuniecia
http_export 1=export do pluginu włączony, 0=export do pluginu wyłączony
countActive liczba aktywnych pakietów danego typu

Pobranie listy podsieci IPTV

GET https://api.mmsc.metroport.pl/Iptv/Networks

GET /Iptv/Networks HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=opn6oerijmtbo0p14kuim83k42opj312


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Networks",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8"  
    "Cookie: sess_ci=opn6oerijmtbo0p14kuim83k42opj312"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:


Wartość zwracana Opis
id unikalne, autonumerowane id rekordu
firmid id partnera
iptv_program wybrany program obslugi IPTV
ext_subnet_id id sieci w zewnetrznej bazie
name nazwa sieci
address adres sieci
mask_prefix prefiks - ilość bitów maski sieci
mask adres ip maski
size wielkość sieci
transport rodzaj transportu, unicast / multicast

Dodanie parametru count=1 spowoduje zwrócenie dodatkowego pola:

Wartość zwracana Opis
TotalSTBs ilość dekoderów w sieci

Pobranie listy STB

GET https://api.mmsc.metroport.pl/Iptv/Stbs
(pobranie listy wszystkich dostępnych STB)
GET https://api.mmsc.metroport.pl/Iptv/Stbs/{ID_STB}
(pobranie danego STB po ID)

przykład dla wyszukania STB wg id modelu i ze statusem 'w magazynie':

GET /Iptv/Stbs?modelid=40&status=1 HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=fq4nbnj69jjkh96nq7grq7ji1k078jd8


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Stbs?modelid=40&status=1",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8"  
    "Cookie: sess_ci=fq4nbnj69jjkh96nq7grq7ji1k078jd8"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



odpowiedź w przypadku sukcesu:

{
        "id": "646",
        "firmid": "2",
        "iptv_program": "MMS",
        "status": "1",
        "userid": "0",
        "contractid": "0",
        "actualtariffid": "0",
        "networkid": "0",
        "ext_linked": "0",
        "mac": "00:02:9B:8C:4D:60",
        "ipaddr": "0",
        "serialnumber": "M91204FG4713",
        "modelid": "40",
        "devel": "0",
        "description": "",
        "activedate": "1376908613",
        "fwlog": "0",
        "boot_options": "",
        "creationdate": "1339661685",
        "creatorid": "75",
        "moddate": "0",
        "modid": "0",
        "nodeid": "0",
        "private": "0",
        "active": "1",
        "AddressIp": "",
        "ModelName": "MOTOROLA VIP-1003",
        "iptv_accountid": "0",
        "order_id": null,
        "firmname": "Forweb s.c.",
        "UserName": null,
        "usertype": null,
        "StatusName": "w magazynie"
    }
Parametr wywołania (filtrowania) Opis
userid id klienta/ uzytkownika
atarriffid id taryfy klienta
status status STB: 1= w magazynie, 2= zarezerwowane, 3= wydane, 4=uszkodzone
mac przydzielony MAC adres do STB
modelid id modelu
nodeid id węzła
withoutnodeid bez id węzła
withoutprivate bez prywatnych węzłów
active aktywny model 0=nie 1=tak
searchName wartość wyszukiwana (przeszukiwanie wśród pól: mac, serialnumber, ipaddr, lastname, name, boklogin)
Wartość zwracana Opis
id unikalne, autonumerowane id rekordu
firmid id partnera
iptv_program wybrany program obslugi IPTV
iptv_portalid
status status STB: 1= w magazynie, 2= zarezerwowane, 3= wydane, 4=uszkodzone
userid id klienta/ użytkownika
contractid id umowy (pole aktualnie nieużywane w MMSC)
actualtariffid id taryfy klienta (pole aktualnie nieużywane w MMSC)
networkid id podsieci
ext_linked STB połączony z kontem i pakietem klienta w zewnętrznym systemie 0=nie, 1=tak
mac przydzielony MAC adres do STB
ipaddr adres IP przydzielony STB (tylko dla wydanego STB)
serialnumber serial STB
vcasid dodatkowe dane uzywane do zabezpieczenia contentu
customer_sn numer seryjny chipsetu
hdcp_ksv dodatkowe dane uzywane do zabezpieczenia
modelid id modelu
devel STB pracuje w wersji developerskiej
servicetype multicast / unicast
servicetype_force wymuszenie trybu pracy dekodera - brak mozliwosci zmiany przez klienta
must_reboot zdalny restart / reboot dekodera
description opis
activedate data pierwszej aktywacji STB
error_log zbieranie logow bledow do tej daty (timestamp)
fwlog firmware log
boot_options (pole obesnie nieużywane)
creationdate czas utworzenia
creatorid id admina dodajacego STB
moddate czas modyfikacji
modid id ostatniego admina modyfikujacego STB
nodeid id węzła
private węzeł prywatny
active aktywny model 0=nie 1=tak
AddressIp adres IP dekodera
Modelname model dekodera
iptv_accountid id konta do którego przypisany jest dekoder
order_id id Taryfy
firmname nazwa partnera
UserName nazwa użytkownika
usertype
StatusName w magazynie / zarezerwowane / wydane / uszkodzone / usunięte
channels
iptv_portal id portalu IPTV dla konta

Pobranie modeli STB

GET https://api.mmsc.metroport.pl/Iptv/StbModels

GET https://api.mmsc.metroport.pl/Iptv/StbModels/{ID}
(pobranie modeli STB po ID)

GET /Iptv/StbModels? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=4h3m1jer8v68cd012o9tbua30a2rfovv



<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/StbModels",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",  
    "Cookie: sess_ci=4h3m1jer8v68cd012o9tbua30a2rfovv"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



odpowiedź w przypadku sukcesu:

{
        "id": "41",
        "firmid": "1",
        "name": "MOTOROLA VIP-1003",
        "description": "",
        "mycast_supported": "1",
        "probe": "0",
        "url_active": "10.230.0.100",
        "url_blocked": "10.230.0.100",
        "url_devel": "",
        "stbs": "2287"
    }
Wartość zwracana Opis
id unikalne, autonumerowane id rekordu
firmid id partnera
name nazwa modelu
description opis zawartości (pilot, kable, zasilacz itp)
mycast_supported 1= model obsługiwany przez MyCast
probe 1= model to sonda
url_active Adres URL portalu dla aktywnych STB
url_blocked Adres URL portalu dla zablokowanych STB
url_devel Adres URL portalu dla aktywnych STB z flaga devel
stbs, TotalStbs ilość modeli w bazie

Dodanie modelu STB

POST https://api.mmsc.metroport.pl/Iptv/StbModels

POST /Iptv/StbModels? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=4h3m1jer8v68cd012o9tbua30a2rfovv


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/StbModels",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "name=",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=4h3m1jer8v68cd012o9tbua30a2rfovv"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;




odpowiedź w przypadku sukcesu:

71

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "name": "Pole Nazwa jest wymagane."
}
{
    "name": "Pole Nazwa jest wymagane."
}
{
    "name": "Pole Nazwa jest wymagane."
}
Parametr wywołania Opis
name nazwa modelu STB
Wartość zwracana Opis
id unikalne, autonumerowane id rekordu

Edycja modelu STB

PUT https://api.mmsc.metroport.pl/Iptv/StbModels/{ID}

PUT /Iptv/StbModels? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=4h3m1jer8v68cd012o9tbua30a2rfovv

name=VIP-1003


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/StbModels",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_POSTFIELDS => "name=VIP-1003",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



odpowiedź w przypadku sukcesu:

true

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "name": "Pole Nazwa jest wymagane."
}
{
    "name": "Pole Nazwa jest wymagane."
}
{
    "name": "Pole Nazwa jest wymagane."
}
Parametr wywołania Opis
name nazwa modelu STB
mycast_supported 1= model obslugiwany przez MyCast
url_active Adres URL portalu dla aktywnych STB
url_blocked Adres URL portalu dla zablokowanych STB
url_devel Adres URL portalu dla aktywnych STB z flaga devel
description opis zawartości (pilot, kable, zasilacz itp)

Usunięcie modelu STB

DELETE https://api.mmsc.metroport.pl/Iptv/StbModels/{ID}

DELETE /Iptv/StbModels/71? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=4h3m1jer8v68cd012o9tbua30a2rfovv


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/StbModels/71",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "DELETE",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8"
    "Cookie: sess_ci=94d65q4969ta9pecdr1luon9eib9hdi2"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;





odpowiedź w przypadku sukcesu:

true
Parametr wywołania Opis
id id modelu STB

Dodanie STB

POST https://api.mmsc.metroport.pl/Iptv/Stbs

przykład dla dodania STB:

POST /Iptv/Stbs? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=4h3m1jer8v68cd012o9tbua30a2rfovv


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Stbs",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_HTTPHEADER => array(
    "Cookie: sess_ci=4h3m1jer8v68cd012o9tbua30a2rfovv"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:


true

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "ModelName": "Pole Model jest wymagane.",
    "mac": "Pole Mac jest wymagane.",
    "serialnumber": "Pole Serial jest wymagane."
}
{
    "ModelName": "Pole Model jest wymagane.",
    "mac": "Pole Mac jest wymagane.",
    "serialnumber": "Pole Serial jest wymagane."
}
{
    "ModelName": "Pole Model jest wymagane.",
    "mac": "Pole Mac jest wymagane.",
    "serialnumber": "Pole Serial jest wymagane."
}
Parametr wywołania Opis
ModelName nazwa modelu STB
mac MAC adres STB
serialnumber serial STB

Usunięcie STB

DELETE https://api.mmsc.metroport.pl/Iptv/Stbs/{identyfikator STB z bazy}

przykład dla usunięcia STB:

DELETE /Iptv/Stbs? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=7qidfsbbp6fd3t30ncdvt2fa1bl6ag4f

mac=00:1A:D0:1B:39:DC


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Stbs",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "DELETE",
  CURLOPT_POSTFIELDS => "mac=00%3A1A%3AD0%3A1B%3A39%3ADC",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=7qidfsbbp6fd3t30ncdvt2fa1bl6ag4f"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:


true

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "Błąd podczas usuwania",

}
{
    "Błąd podczas usuwania",

}
{
    "Błąd podczas usuwania",

}
Parametr wywołania Opis
id id STB
mac Adres MAC STB

Ustawienie wersji devel STB

PUT https://api.mmsc.metroport.pl/Iptv/Stbs/setSTBdevel/

przykład dla ustawienia opcji devel dla STB:

PUT /Iptv/Stbs/setSTBdevel/ HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=7qidfsbbp6fd3t30ncdvt2fa1bl6ag4f

mac=00%3A02%3A9B%3AA7%3A41%3ADE&mode=1

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Stbs/setSTBdevel/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_POSTFIELDS => "mac=00%3A02%3A9B%3AA7%3A41%3ADE&mode=1"
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8"
    "Cookie: sess_ci=7qidfsbbp6fd3t30ncdvt2fa1bl6ag4f"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:


true

odpowiedź w przypadku błędnych lub braku parametrów:

{


}
{


}
{
   "STB with given MAC not found"
}
Parametr wywołania Opis
mac Adres MAC STB
mode 0= produkcja, 1= devel

Restart STB

PUT https://api.mmsc.metroport.pl/Iptv/Stbs/restartSTB/

przykład dla restartu STB:

PUT /Iptv/Stbs/restartSTB/ HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=7qidfsbbp6fd3t30ncdvt2fa1bl6ag4f

mac=00%3A02%3A9B%3AA7%3A41%3ADE&mode=1

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Stbs/restartSTB/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_POSTFIELDS => "mac=00%3A02%3A9B%3AA7%3A41%3ADE&mode=1"
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8"
    "Cookie: sess_ci=7qidfsbbp6fd3t30ncdvt2fa1bl6ag4f"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:


true

odpowiedź w przypadku błędnych lub braku parametrów:

{


}
{


}
{
    "STB z danym adresem MAC nie znaleziony"
}
Parametr wywołania Opis
mac Adres MAC STB
mode 1= restart

Wydanie STB

PUT https://api.mmsc.metroport.pl/Iptv/Stbs/linkSTB

przykład wydania STB:

PUT /Iptv/Stbs/linkSTB? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=7qidfsbbp6fd3t30ncdvt2fa1bl6ag4f


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Stbs/linkSTB/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_POSTFIELDS =>    "mac=00%3A02%3A9B%3AA7%3A41%3ADE&accountid=01408&networkid=230",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8"
    "Cookie: sess_ci=7qidfsbbp6fd3t30ncdvt2fa1bl6ag4f"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:


true

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "mac": "Pole Mac jest wymagane."

}
{
    "mac": "STB z podanym adresem MAC nie jest zarejestrowany"
}
{

    "mac": "Pole Mac jest wymagane."
}
{
    "mac": "STB z podanym adresem MAC nie jest zarejestrowany"
}
{
    "mac": "Pole Mac jest wymagane."

}
{
    "mac": "STB z podanym adresem MAC nie jest zarejestrowany"
}
Parametr wywołania Opis
mac Adres MAC STB
accountid id konta IPTV
networkid id podsieci IPTV
orderid id zamówienia

Odłączenie STB

PUT https://api.mmsc.metroport.pl/Iptv/Stbs/unlinkSTB

przykład wydania STB:

PUT /Iptv/Stbs/restartSTB/13188/? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=7qidfsbbp6fd3t30ncdvt2fa1bl6ag4f


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Stbs/linkSTB/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8"
    "Cookie: sess_ci=7qidfsbbp6fd3t30ncdvt2fa1bl6ag4f"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:


true

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "mac": "Pole Mac jest wymagane."

}
{
    "mac": "STB z podanym adresem MAC nie jest zarejestrowany"
}
{

    "mac": "Pole Mac jest wymagane."
}
{
    "mac": "STB z podanym adresem MAC nie jest zarejestrowany"
}
{
    "mac": "Pole Mac jest wymagane."

}
{
    "mac": "STB z podanym adresem MAC nie jest zarejestrowany"
}
Parametr wywołania Opis
mac Adres MAC STB
accountid id konta IPTV

Walidacja pakietów IPTV

POST https://api.mmsc.metroport.pl/Iptv/Orders/Validate

przykład walidacji pakietów:


POST /Iptv/Orders/Validate? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=g491pifgmli1v0pfs695m9n02m52h6hs

accountid=690&pkg_ids=42&pkg_ids=7&pkg_ids=15


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Orders/Validate",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "accountid=690&pkg_ids=42&pkg_ids=7&pkg_ids=15",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=g491pifgmli1v0pfs695m9n02m52h6hs"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:


true

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "": "Do konta może być przypisany tylko jeden pakiet podstawowy"
}
{
    "": "Pakiet o id `7` nie istnieje"
}
{   "": "Wybrano wykluczające się pakiety: Abonament: OPTYMALNY HD i MetroTV-Test"
}


{
    "": "Do konta może być przypisany tylko jeden pakiet podstawowy"
}
{
    "": "Pakiet o id `7` nie istnieje"
}
{   "": "Wybrano wykluczające się pakiety: Abonament: OPTYMALNY HD i MetroTV-Test"
}
{
    "": "Do konta może być przypisany tylko jeden pakiet podstawowy"
}
{
    "": "Pakiet o id `7` nie istnieje"
}
{   "": "Wybrano wykluczające się pakiety: Abonament: OPTYMALNY HD i MetroTV-Test"
}
Parametr wywołania Opis
accountid konto IPTV
pkg_ids tablica z id pakietów do sprawdzenia

Aktywacja pakietów na koncie IPTV

POST https://api.mmsc.metroport.pl/Iptv/Orders

przykładowa aktywacja:


POST /Iptv/Orders? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=i5he9j79n0vg7totpelmqq72as89r4ej

accountid=27&pkg_id=201


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Orders",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "accountid=27&pkg_id=201",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=i5he9j79n0vg7totpelmqq72as89r4ej"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:


{
    "orderid": 1726,
}

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "pkg_group": "Do konta musi być przypisany najpierw pakiet podstawowy"
}
{
    "accountid": "Konto o podanym ID nie istnieje"
}
{   "pkg_valid_to": "Wybrany pakiet nie może być już wybrany (ważny do )"
}


{
    "pkg_group": "Do konta musi być przypisany najpierw pakiet podstawowy"
}
{
    "accountid": "Konto o podanym ID nie istnieje"
}
{   "pkg_valid_to": "Wybrany pakiet nie może być już wybrany (ważny do )"
}
{
    "pkg_group": "Do konta musi być przypisany najpierw pakiet podstawowy"
}
{
    "accountid": "Konto o podanym ID nie istnieje"
}
{   "pkg_valid_to": "Wybrany pakiet nie może być już wybrany (ważny do )"
}
Parametr wywołania Opis
accountid konto IPTV
pkg_id ID pakietu do aktywacji
pricebrutto cena brutto pakietu

Zbiorcza aktywacja pakietów na koncie IPTV

POST https://api.mmsc.metroport.pl/Iptv/Orders/bulk

przykładowa aktywacja:


POST /Iptv/Orders/bulk? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=i5he9j79n0vg7totpelmqq72as89r4ej

accountid=27&pkg_ids=4&pkg_ids=7&pricebrutto=15



<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Orders/bulk",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "accountid=27&pkg_ids=4&pkg_ids=7&pricebrutto=15",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=i5he9j79n0vg7totpelmqq72as89r4ej"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:


{
    "orderid": 1726,
}

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "": "Nieprawidłowa lista pakietów"
}
{
    "accountid": "Konto o podanym ID nie istnieje"
}



{
    "": "Nieprawidłowa lista pakietów"
}
{
    "accountid": "Konto o podanym ID nie istnieje"
}

{
    "": "Nieprawidłowa lista pakietów"
}
{
    "accountid": "Konto o podanym ID nie istnieje"
}

Parametr wywołania Opis
accountid konto IPTV
pkg_ids tablica z id pakietów do aktywacji
pricebrutto tablica z cenami brutto pakietów, kolejność cen taka sama jak w parametrze 'pkg_ids'

Lista pakietów na koncie IPTV

GET https://api.mmsc.metroport.pl/Iptv/Orders?accountid={ID konta IPTV}

przykładowa deaktywacja:


GET /Iptv/Orders?accountid=14567 HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=cgdb6c9062857tisu0jor8a5v93slafo



<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Orders?accountid=14567",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=cgdb6c9062857tisu0jor8a5v93slafo"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:


[
    {
        "id": 45080,
        "orderid": 45080,
        "userid": 12378,
        "accountid": 14567,
        "pkg_id": 141,
        "pkg_group": "1",
        "date_start": "2018-07-25",
        "date_end": "",
        "active": "1",
        "pricenetto": "0.00",
        "vat": "8",
        "pricebrutto": "0.00",
        "pricenetto_provider": "0.00",
        "vat_provider": "8",
        "pricebrutto_provider": "0.00",
        "creationdate": "2018-07-25 11:50:13",
        "pkg_name": "Dostęp do MetroTV",
        "pkg_valid_from": "2016-02-09",
        "pkg_valid_to": "2020-12-31",
        "date_start_uts": "1532512213",
        "date_end_uts": "0",
        "creationdate_uts": "1532512213",
        "stb_mac": "18:B8:1F:FC:74:BE"
    },
    {
        "id": 45081,
        "orderid": 45081,
        "userid": 12378,
        "accountid": 14567,
        "pkg_id": 143,
        "pkg_group": "2",
        "date_start": "2018-07-25",
        "date_end": "",
        "active": "1",
        "pricenetto": "59.26",
        "vat": "8",
        "pricebrutto": "64.00",
        "pricenetto_provider": "54.82",
        "vat_provider": "8",
        "pricebrutto_provider": "59.21",
        "creationdate": "2018-07-25 11:50:13",
        "pkg_name": "Pakiet OPTYMALNY+ HD",
        "pkg_valid_from": "2016-02-09",
        "pkg_valid_to": "2020-12-31",
        "date_start_uts": "1532512213",
        "date_end_uts": "0",
        "creationdate_uts": "1532512213"
    },
    {
        "id": 45348,
        "orderid": 45348,
        "userid": 12378,
        "accountid": 14567,
        "pkg_id": 144,
        "pkg_group": "3",
        "date_start": "2018-08-02",
        "date_end": "",
        "active": "1",
        "pricenetto": "0.54",
        "vat": "8",
        "pricebrutto": "0.58",
        "pricenetto_provider": "0.54",
        "vat_provider": "8",
        "pricebrutto_provider": "0.58",
        "creationdate": "2018-08-02 11:50:00",
        "pkg_name": "MULTIROOM",
        "pkg_valid_from": "2016-02-09",
        "pkg_valid_to": "2020-12-31",
        "date_start_uts": "1533203400",
        "date_end_uts": "0",
        "creationdate_uts": "1533203400",
        "stb_mac": "18:B8:1F:FC:7B:B9"
    }
]

odpowiedź w przypadku błędnych lub braku parametrów:

{
    204 No Content
}

{
    204 No Content
}

{
    204 No Content
}

Parametr wywołania Opis
accountid ID konta IPTV

Deaktywacja pakietu IPTV

DELETE https://api.mmsc.metroport.pl/Iptv/Orders/{Identyfikator subskrypcji}

przykładowa deaktywacja:


DELETE /Iptv/Orders/743 HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=ljgsvr81aeikdj50o7j1e1pc30002gqv

accountid=561


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Orders/743",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "DELETE",
  CURLOPT_POSTFIELDS => "accountid=561",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=ljgsvr81aeikdj50o7j1e1pc30002gqv"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:


{
    "orderid": 1726,
}

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "stb_id": "Nie można deaktywować subskrypcji, do której przypisany jest STB"
}
{
    "accountid": "Konto o podanym ID nie istnieje"
}



{
    "stb_id": "Nie można deaktywować subskrypcji, do której przypisany jest STB"
}
{
    "accountid": "Konto o podanym ID nie istnieje"
}

{
    "stb_id": "Nie można deaktywować subskrypcji, do której przypisany jest STB"
}
{
    "accountid": "Konto o podanym ID nie istnieje"
}

Parametr wywołania Opis
orderid ID subskrypcji
accountid ID konta IPTV

Pobranie kont IPTV

GET https://api.mmsc.metroport.pl/Iptv/Accounts
(pobranie listy wszystkich kont IPTV)
GET https://api.mmsc.metroport.pl/Iptv/Accounts?userid={Identyfikator klienta}
(pobranie konta IPTV wskazanego po ID klienta)
GET https://api.mmsc.metroport.pl/Iptv/Accounts/{Identyfikator konta IPTV}
(pobranie konta IPTV wskazanego po ID)

przykład pobrania danych konta IPTV dla kont z id=22867


GET /iptv/accounts/22867 HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=30afjjapep431r5gjpdq7rnuleki3au6


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/iptv/accounts/22867",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=30afjjapep431r5gjpdq7rnuleki3au6"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:


{
    "id": "22867",
    "firmid": "40",
    "serviceid": "2",
    "stgroupid": "18",
    "paymentperiodid": "0",
    "paymentperiodname": "",
    "tariffcode": "IPTVMETRO",
    "sww": "",
    "pricenetto": "0.00",
    "vatid": "0",
    "vatrate": "0",
    "pricebrutto": "0.00",
    "currency": "PLN",
    "servicename": "Telewizja cyfrowa",
    "tariffname": "MetroTV",
    "description": "",
    "addinfo": "",
    "iptv_program": "MMS",
    "iptv_networkid": "34",
    "iptv_ext_cust_number": "20334",
    "iptv_ext_account_id": "20867",
    "iptv_portalid": "1",
    "iptv_statistics": "1",
    "promotion": "0",
    "promotiontype": "1",
    "actualcdataid": "0",
    "contractid": "0",
    "annexid": "0",
    "annexedparentid": "0",
    "userid": "20334",
    "contractsid": "0",
    "annexsid": "0",
    "actualparentid": "0",
    "servicepricenetto": "0.00",
    "servicepricebrutto": "0.00",
    "servicevatid": "0",
    "servicevatrate": "0",
    "tariffid": "1",
    "tariffattributesdescription": "",
    "active": "1",
    "activedate": "1596537462",
    "lastdeactivdate": "0",
    "paused": "0",
    "pausetimetype": "0",
    "pausedfree": "0",
    "pausestartdate": "0",
    "pauseenddate": "0",
    "pausereason": "",
    "promotionpricenetto": "0.00",
    "promotionpricebrutto": "0.00",
    "promotionvatid": "0",
    "promotionvatrate": "0",
    "promotionprice": "0",
    "promotiondatestart": "0",
    "promotiondateend": "0",
    "promotiontime": "0",
    "promotioninvoice": "1",
    "teryt_spotid_locationcity": "0",
    "teryt_spotid_locationstreet": "0",
    "teryt_streetid_locationstreet": "0",
    "locationstreetname": "Łagiewnicka",
    "locationstreetno": "",
    "locationblockno": "",
    "locationstaircaseno": "",
    "locationlocal": "",
    "locationzip": "91-463",
    "locationcity": "Łódź",
    "locationcountry": "Polska",
    "masterstgroupid": "0",
    "masterid": "0",
    "creatorid": "120",
    "modid": "0",
    "creationdate": "1596537462",
    "moddate": "0",
    "breakdate": "0",
    "expiredate": "0",
    "testservice": "0",
    "teststartdate": "0",
    "testenddate": "0",
    "todelete": "0",
    "todeletedate": "0",
    "deleted": "0",
    "blocked": "0",
    "IPTVProgramName": "MMS",
    "Packages": {
        "MainPackage": {
            "id": "68240",
            "firmid": "40",
            "userid": "20334",
            "actualtariffid": "22867",
            "packageid": "227",
            "linkid": "0",
            "pkg_group": "1",
            "stb_id": "24963",
            "ext_pkg_id": "0",
            "ext_subscription_id": "0",
            "ext_order_id": "0",
            "date_start": "1596537512",
            "date_end": "0",
            "date_deactivated": "0",
            "pricenetto": "9.17",
            "vat": "8",
            "pricebrutto": "9.90",
            "pricenetto_provider": "4.50",
            "vat_provider": "8",
            "pricebrutto_provider": "4.86",
            "active": "1",
            "promotion_active": "0",
            "promotionparent": "0",
            "promotiontime": "0",
            "creationdate": "1596537512",
            "creatorid": "0",
            "pkg_name": "Pakiet Socjalny",
            "pkg_autoinclude": "",
            "pkg_denied": "44,129,100,92,42,54,43,136,141,49,91,206,204,205,22,2,3,21,13,144,194,97,145,191,192,34,30,27,46,28,47,130,135,29,128,134,45,36,193,212,38,18,24,10,17,15,16,35,37,32,143,196,19,51,52,50,39,20,142,31,26,210,202,104,48,55,61,67,150,148,146,211,127",
            "pkg_valid_from": "2020-01-03",
            "pkg_valid_to": "2085-01-03",
            "pkg_active": "1",
            "tariffcode": "SOCJALNY",
            "selected": 1,
            "stb_select": "CC:75:E2:F2:55:12; M91924ECF206; ARRIS VIP-1113",
            "stb_data": {
                "id": "24963",
                "firmid": "40",
                "iptv_program": "MMS",
                "status": "3",
                "userid": "20334",
                "contractid": "0",
                "actualtariffid": "22867",
                "networkid": "34",
                "ext_linked": "1",
                "mac": "CC:75:E2:F2:55:12",
                "ipaddr": "181596678",
                "serialnumber": "M91924ECF206",
                "modelid": "60",
                "devel": "0",
                "description": "",
                "activedate": "1596537512",
                "fwlog": "0",
                "boot_options": "",
                "creationdate": "1596537343",
                "creatorid": "120",
                "moddate": "0",
                "modid": "0",
                "nodeid": "0",
                "private": "0",
                "active": "1",
                "AddressIp": "10.210.242.6",
                "ModelName": "ARRIS VIP-1113",
                "ext_subnet_id": "34",
                "NetworkName": "MetroSupport-10.210.242.0",
                "NetworkAddress": "10.210.242.0",
                "NetworkPrefix": "25",
                "NetworkMask": "255.255.255.128",
                "NetworkSize": "128",
                "iptv_accountid": "22867",
                "order_id": "68240",
                "UserName": "LAB Metroport LAB",
                "usertype": "2",
                "StatusName": "wydane"
            },
            "actual_id": "68240",
            "actual_packageid": "227",
            "actual_active": "1",
            "actual_ext_pkg_id": "0",
            "actual_ext_subscription_id": "0",
            "actual_ext_order_id": "0",
            "actual_date_start": "1596537512",
            "actual_date_end": "0",
            "actual_pricenetto": "9.17",
            "actual_vat": "8",
            "actual_pricebrutto": "9.90",
            "actual_pricenetto_provider": "4.50",
            "actual_vat_provider": "8",
            "actual_pricebrutto_provider": "4.86"
        }
    },
    "AvailablePackages": false,
    "UserData": {
        "id": "20334",
        "firmid": "40",
        "userno": "94",
        "usercode": "000094",
        "usertype": "2",
        "customertype": "2",
        "name": "LAB",
        "lastname": "LAB Metroport",
        "teryt_spotid_city1": "957650",
        "teryt_spotid_street1": "957666",
        "teryt_streetid_street1": "11497",
        "streetname1": "Łagiewnicka",
        "streetno1": "",
        "local1": "",
        "zip1": "91-463",
        "city1": "Łódź",
        "zipcity1": "Łódź",
        "country1": "Polska",
        "teryt_spotid_city2": "0",
        "teryt_spotid_street2": "0",
        "teryt_streetid_street2": "0",
        "streetname2": "",
        "streetno2": "",
        "local2": "",
        "zip2": "",
        "city2": "",
        "zipcity2": "",
        "country2": "Polska",
        "email": "",
        "email2": "",
        "email3": "",
        "email_invoices": "",
        "nip": "",
        "idcardno": "",
        "pesel": "",
        "phone1": "",
        "phone2": "",
        "phone3": "",
        "fax": "",
        "borndate_day": "0",
        "borndate_month": "0",
        "borndate_year": "0000",
        "boklogin": "kl020334",
        "bokpass": "",
        "bokquestion": "",
        "bokanswer": "",
        "bokfirstpass": "a9GH0k",
        "provider": "0",
        "nowarning": "0",
        "wiruswarn": "0",
        "spammed": "0000-00-00 00:00:00",
        "spammed_enabled": "0",
        "checkstartdate": "0",
        "checkclient": "0",
        "voiplimit": "300.00",
        "voiplimit_base": "300.00",
        "voiplimitday": "60.00",
        "voiplimitday_base": "60.00",
        "mvnolimit": "300.00",
        "mvnolimit_base": "300.00",
        "mvnolimitday": "60.00",
        "mvnolimitday_base": "60.00",
        "description": "",
        "archived": "0",
        "creationdate": "1596537462",
        "creatorid": "120",
        "moddate": "0",
        "modid": "0",
        "deleted": "0",
        "deleteid": "0",
        "deletedate": "0",
        "updated": "",
        "loyality_download_percent": "0",
        "loyality_upload_percent": "0",
        "loyality_plan_enabled": "0",
        "loyality_plan_type": "0",
        "loyality_plan_invoicepay_margin": "0",
        "loyality_plan_allowed": "0",
        "bankaccount": "",
        "pin_phone": "668597",
        "iptv_cust_master_pin": "",
        "iptv_cust_vod_pin": "",
        "invoiceflag": "0",
        "invoicesgroup": "0",
        "dataprocess": "1",
        "dataprocess_directmarketing": "1",
        "dataprocess_ads": "1"
    },
    "NetworkData": {
        "id": "34",
        "firmid": "40",
        "iptv_program": "MMS",
        "ext_subnet_id": "34",
        "name": "MetroSupport-10.210.242.0",
        "address": "181596672",
        "mask_prefix": "25",
        "mask": "255.255.255.128",
        "size": "128",
        "transport": "ott",
        "address_long": "10.210.242.0",
        "TotalSTBs": "5"
    },
    "PackagesSums": {
        "TotalPackages": 1,
        "TotalNetto": 9.17,
        "TotalVat": 0.73,
        "TotalBrutto": 9.9,
        "ProviderNetto": 4.5,
        "ProviderVat": 0.36,
        "ProviderBrutto": 4.86,
        "SurplusNetto": 4.67,
        "SurplusVat": 0.37,
        "SurplusBrutto": 5.04
    }
}

Parametr wywołania Opis
userid ID klienta
accountid ID konta IPTV

Dodanie konta IPTV

POST https://api.mmsc.metroport.pl/Iptv/Accounts

przykład dodania konta IPTV w kliencie z id=2635:


POST /Iptv/Accounts? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=cgdb6c9062857tisu0jor8a5v93slafo

userid=2635&locationcity=Łódź&iptv_networkid=9



<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Accounts",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "userid=2635&locationcity=%u0141%F3d%u017A&iptv_networkid=9",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=cgdb6c9062857tisu0jor8a5v93slafo"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:


17104

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "userid": "Pole Klient jest wymagane.",
    "locationcity": "Pole Miasto lokalizacji jest wymagane."
}
{
    "userid": "Pole Klient jest wymagane.",
    "locationcity": "Pole Miasto lokalizacji jest wymagane."
}
{
    "userid": "Pole Klient jest wymagane.",
    "locationcity": "Pole Miasto lokalizacji jest wymagane."
}
Parametr wywołania Opis
userid ID klienta
iptv_networkid ID podsieci IPTV
locationstreetname adres lokalizacji usługi (taryfy) - nazwa ulicy
locationstreetno adres lokalizacji usługi (taryfy) - numer ulicy (domu)
locationlocal adres lokalizacji usługi (taryfy) - numer lokalu (mieszkania)
locationzip adres lokalizacji usługi (taryfy) - kod pocztowy
locationcity adres lokalizacji usługi (taryfy) - miasto (miejscowość)
Wartość zwracana Opis
accountid ID konta IPTV

Edycja konta IPTV

PUT https://api.mmsc.metroport.pl/Iptv/Accounts/{ID konta IPTV}

przykład edycji konta IPTV z id=17104:


PUT /Iptv/Accounts/17104? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=cgdb6c9062857tisu0jor8a5v93slafo

locationcity=Łódź&iptv_networkid=9


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Accounts/17104",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_POSTFIELDS => "locationcity=%u0141%F3d%u017A&iptv_networkid=9",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=cgdb6c9062857tisu0jor8a5v93slafo"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:


true

odpowiedź w przypadku błędnych lub braku parametrów:

{
    "locationcity": "Pole Miasto lokalizacji jest wymagane.",
    "iptv_networkid": "Sieć IPTV nie istnieje w bazie danych."
}
{
    "locationcity": "Pole Miasto lokalizacji jest wymagane.",
    "iptv_networkid": "Sieć IPTV nie istnieje w bazie danych."
}
{
    "locationcity": "Pole Miasto lokalizacji jest wymagane.",
    "iptv_networkid": "Sieć IPTV nie istnieje w bazie danych."
}
Parametr wywołania Opis
accountid ID konta IPTV
iptv_networkid ID podsieci IPTV
locationstreetname adres lokalizacji usługi (taryfy) - nazwa ulicy
locationstreetno adres lokalizacji usługi (taryfy) - numer ulicy (domu)
locationlocal adres lokalizacji usługi (taryfy) - numer lokalu (mieszkania)
locationzip adres lokalizacji usługi (taryfy) - kod pocztowy
locationcity adres lokalizacji usługi (taryfy) - miasto (miejscowość)

Blokada/odblokowanie konta IPTV

PUT https://api.mmsc.metroport.pl/Iptv/Accounts/{ID konta IPTV}/blockAccount
(blokada konta IPTV)
PUT https://api.mmsc.metroport.pl/Iptv/Accounts/{ID konta IPTV}/unblockAccount
(odblokowanie konta IPTV)

przykład zablokowania konta IPTV z id=17104:


PUT /Iptv/Accounts/17104/blockAccount HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=34qi1o83b4qi47khna8cbeq13ltrrld3


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Accounts/17104/blockAccount",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=34qi1o83b4qi47khna8cbeq13ltrrld3"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:


true

odpowiedź w przypadku błędnych lub braku parametrów:




Parametr wywołania Opis
accountid ID konta IPTV

Usunięcie konta IPTV

DELETE https://api.mmsc.metroport.pl/Iptv/Accounts/{ID konta IPTV}

przykład usunięcia konta IPTV z id=17104:


DELETE /Iptv/Accounts/17104 HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci=34qi1o83b4qi47khna8cbeq13ltrrld3


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Iptv/Accounts/17104",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "DELETE",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci=34qi1o83b4qi47khna8cbeq13ltrrld3"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:


true

odpowiedź w przypadku błędnych lub braku parametrów:




Parametr wywołania Opis
accountid ID konta IPTV

Pobranie komunikatów IPTV

GET https://api.mmsc.metroport.pl/Iptv/Messages

MVNO

Pobranie kont MVNO

GET https://api.mmsc.metroport.pl/Mvno/Mobiles

GET /Mvno/Mobiles? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=799bgso65qpi99d6q6e24ehlcnmtrod2

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Mobiles",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Cookie: sess_ci_dev=799bgso65qpi99d6q6e24ehlcnmtrod2"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:

{
        "id": "3026",
        "ano": "111222333",
        "imei": "",
        "sim_id": "15150",
        "status": "active",
        "status_confirmed": "1",
        "iccid": "8948061050002375598",
        "imsi": "260060052375598",
        "sim_status": "active",
        "TotalConnections": "",
        "TotalNetto": "0.0",
        "usercode": "kl000290",
        "usertype": "2",
        "UserData": "Test Test, Łódź, Test 53, 94-009 Łódź",
        "actual_service_tariffid": "1348",
        "stgroupid": "19",
        "todelete": "0",
        "todeletedate": "0",
        "creationdate": "1556523047",
        "activedate": "1556631893",
        "moddate": "1556633716",
        "firmid": "2",
        "userid": "14921"
    }
Parametry wywołania Opis
userid ID użytkownika / klienta
Wartość zwracana Opis
id ID konta MVNO
ano Numer telefonu użytkownika / klienta
imei IMEI telefonu
sim_id ID karty SIM
status status konta: new- oczekuje na potwierdzenie aktywacji / deleted- konto usunięte / ported- numer przeniesiony
status_confirmed status konta potwierdzony u dostawcy - blokada edycji bez potwierdzenia
iccid Identyfikator karty SIM
imsi Numer karty SIM
sim_status Status karty SIM
TotalConnections liczba połączeń
TotalNetto kwota bilingu
usercode kod klienta (DEPRECATED)
usertype rodzaj klienta: 1-prywatny, 2-firmowy (DEPRECATED)
UserData złączone dane klienta (DEPRECATED)
actual_service_tariffid ID taryfy klienta
stgroupid ID grupy usług
todelete konto ustawione do usunięcia
todeletedate data ustawienia konta do usunięcia
creationdate data utworzenia
activedate data aktywacji numeru
moddate data modyfikacji
firmid ID firmy
userid ID klienta

Pobranie danych konta MVNO

GET https://api.mmsc.metroport.pl/Mvno/Mobiles/{id lub numer telefonu 48xxx (razem 11 cyfr)}

GET /Mvno/Mobiles/48799590864? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=ep8l8577tgmgo3s9h4k5mfilaf7hnl0f

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Mobiles/48799590864",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=ep8l8577tgmgo3s9h4k5mfilaf7hnl0f"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:

{
    "id": "3028",
    "firmid": "2",
    "userid": "14921",
    "ext_userid": "14921",
    "sim_id": "15183",
    "ano": "799590864",
    "stgroupid": "19",
    "actual_service_tariffid": "1348",
    "mms_servicemvno_id": "1",
    "ext_services_id": "7",
    "status": "new",
    "status_confirmed": "0",
    "imei": "",
    "description": "",
    "creationdate": "1558089439",
    "activedate": "0",
    "moddate": "0",
    "todelete": "0",
    "todeletedate": "0",
    "tariffid": "1348,1,19",
    "active": 0,
    "reserved": 0,
    "StatusName": "nowe, oczekuje na wykonanie",
    "simdata": {
        "id": "15183",
        "firmid": "2",
        "hlr": "5",
        "status": "assigned",
        "imsi": "260060052375631",
        "iccid": "8948061050002375631",
        "pin1": "2880",
        "puk1": "81228305",
        "pin2": "7085",
        "puk2": "71315494",
        "adm": "CF8E098981E415AD",
        "activedate": "0",
        "deletedate": "0",
        "StatusName": "przypisana do konta"
    },
    "extservicedata": {
        "id": "7",
        "ext_id": "metroport_mobile_voice_3",
        "name": "Metro No Limit + 1GB",
        "description": "",
        "subservices": "2,3,4,5,11,16",
        "forced_subservices": "2,4",
        "configurable": "1",
        "expiredate": "0000-00-00"
    },
    "forced_subservices": [
        "2",
        "4"
    ],
    "subservices": [
        "2",
        "3",
        "4",
        "5",
        "11",
        "16"
    ],
    "components_free_fixed": -1,
    "components_free_mobile": -1,
    "components_free_national": 0,
    "components_free_sms": -1,
    "components_free_data": 1048576,
    "subservices_params": {
        "2": "",
        "3": "",
        "4": "",
        "5": "",
        "11": "",
        "16": ""
    },
    "npdata": null
}
Parametry wywołania Opis
ano Numer telefonu użytkownika
Wartość zwracana Opis
id unikalne, autonumerowane ID rekordu
firmid ID firmy w systemie dostawcy
userid ID klienta
ext_userid ID klienta w systemie dostawcy
ano unikalny numer telefonu
ext_services_id ID usługi
stgroupid ID grupy usług
actual_service_tariffid ID taryfy klienta
mms_servicemvno_id ID taryfy w systemie MMS
ext_services_id ID głównej usługi dostawcy
status status konta: new- oczekuje na potwierdzenie aktywacji / deleted- konto usunięte / ported- numer przeniesiony
status_confirmed status konta potwierdzony u dostawcy - blokada edycji bez potwierdzenia
imei numer IMEI urządzenia
description opis / dodatkowe informacje
creationdate Data utworzenia
activedate Data aktywacji numeru
moddate Data modyfikacji (unix timestamp)
todelete Konto ustawione do usunięcia
todeletedate Data ustawienia konta do usunięcia
tarriffid
active status numeru: 1-aktywny, 0-nieaktywny
reserved status rezerwacji numeru: 1-zarezerwowany, 0-nowy
simdata id unikalne, autonumerowane id rekordu
firmid ID firmy
hlr dla danego numeru musi być wydana właściwa karta SIM
status status karty
imsi unikalny numer karty
iccid unikalny indeftyfikator karty sim
pin1 pin1
puk1 puk1
pin2 pin2
puk2 puk2
adm kod administracyjny
activedate data aktywacji karty
deletedate data deaktywacji (usuniecia) karty
StatusName status karty
extservicedata id unikalne id rekordu
ext_id id uslugi w systemie dostawcy
name nazwa usługi
description Nazwa uslugi przyjazna dla klienta
subservices aktywne usługi dodatkowe, ext_subservices.id rozdzielone przecinkami
forced_subservices wymuszone usługi dodatkowe, ext_subservices.id rozdzielone przecinkami - dla tego produktu będą aktywowane z karta bez możliwości rezygnacji z nich
configurable możliwość przekonfigurowania komponentów taryfy z grupy cykliczne
expiredate data wygaśnięcia usługi, po tej dacie aktywacja karty z ta usługa nie będzie możliwa
forced_subservices wymuszone usługi dodatkowe, ext_subservices.id rozdzielone przecinkami - dla tego produktu będą aktywowane z karta bez możliwości rezygnacji z nich
subservices aktywne usługi dodatkowe, ext_subservices.id rozdzielone przecinkami
components_free_fixed konfiguracja komponentu dodawanego domyślnie dla taryfy (połączenia stacjonarne)
components_free_mobile konfiguracja komponentu dodawanego domyślnie dla taryfy (połączenia komórkowe)
components_free_national konfiguracja komponentu dodawanego domyślnie dla taryfy (połączenia krajowe)
components_free_sms konfiguracja komponentu dodawanego domyślnie dla taryfy (wiadomości sms)
components_free_data konfiguracja komponentu dodawanego domyślnie dla taryfy (wliczone dane)
subservices_params Parametry dodatkowe dla podpiętych w taryfie subservices (np. przekierowanie, kwota)
npdata id unikalne, autonumerowane id rekordu
mobiles_id ID konta
status status przenoszenia numeru
ext_operators_id ID Operatora
contracttype typ kontraktu u obecnego operatora (postpaid, prepaid)
transfertype sposób przenoszenia numeru (DAY, EOP, END)
transferdate planowana data przeniesienia numeru
attorney pełnomocnictwo (yes, no)
doc_no numer dokumentu
doc_signdate data podpisania dokumentu
creationdate data zlecenia przeniesienia numeru
porteddate data wykonania przeniesienia numeru
OperatorName nazwa Operatora
np status numeru (true-przeniesiony)

Aktywacja i edycja konta MVNO

POST https://api.mmsc.metroport.pl/Mvno/Mobiles/ - aktywacja

PUT https://api.mmsc.metroport.pl/Mvno/Mobiles/ - edycja

POST /Mvno/Mobiles HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/x-www-form-urlencoded
Cookie: sess_ci=drt2m2iv8itfon7ievkekl722872hmas
Content-Length: 73

userid=2635&ano=780289486&ext_services_id=7&sim_iccid=8948061300012006988

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.mmsc.metroport.pl/Mvno/Mobiles',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => 'userid=2635&ano=780289486&ext_services_id=7&sim_iccid=8948061300012006988',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/x-www-form-urlencoded',
    'Cookie: sess_ci=drt2m2iv8itfon7ievkekl722872hmas'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:

{
    "id": 8581,
    "orderid": 1726,
}
{
    "id": 8581,
    "orderid": 1726,
}
{
    "id": 8581,
    "orderid": 1726,
}

odpowiedź w przypadku podania błędnego formatu numeru:

{
    "ano": "Pole Numer telefonu musi zawierać dokładnie 9 znak(i/ów)."
}

odpowiedź w przypadku podania numeru z nie zdefiniowanej puli numerów:

{
    "ano": "Numer nie należy do zdefiniowanej puli."
}
Parametry wywołania Opis
userid int ID użytkownika / klienta
ano Numer telefonu
ext_services_id ID usługi
imei IMEI telefonu
sim_iccid Identyfikator karty SIM
subservices Aktywne usługi dodatkowe, ext_subservices.id rozdzielone przecinkami
subservices_params Parametry dodatkowe dla podpiętych w taryfie subservices (np. przekierowanie, kwota)
fup Limit FUP
Wartość zwracana Opis
id (int) ID operacji
orderid ID zlecenia

Usunięcie konta MVNO

DELETE https://api.mmsc.metroport.pl/Mvno/Mobiles/{id lub numer telefonu 48xxx (razem 11 cyfr)}

Aktywacja numeru NP MVNO

POST https://api.mmsc.metroport.pl/Mvno/Mobiles

POST /Mvno/Mobiles? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=rutphtoufi0ki3hjlgg7ss6bljk1eefl

userid=14924&ano=780289499&sim_iccid=8948061300012004990&ext_services_id=2&contracttype=postpaid&transfertype=END&attorney=yes&doc_no=&doc_signdate=2020-08-04

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Mobiles",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "userid=14924&ano=780289499&sim_iccid=8948061300012004990&ext_services_id=2&contracttype=postpaid&transfertype=END&attorney=yes&doc_no=&doc_signdate=2020-08-04",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=rutphtoufi0ki3hjlgg7ss6bljk1eefl"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:

{
    1726
}
{
    1726
}
{
    1726
}
Parametry wywołania Opis
userid ID użytkownika / klienta
ano Numer telefonu
ext_services_id ID usługi
imei IMEI telefonu
sim_iccid Identyfikator karty SIM
np brak wartości lub 0-numer musi być aktywowany z puli, 1-numer przenoszony.
Dla np=1 wykona się operacja dla numeru przenoszonego, pomijana jest walidacja (czy numer należy do puli) i wymagany jest parametr ext_operators_id (id operatora Dawcy)
{npdata} ext_operators_id ID Operatora Dawcy
contracttype (prepaid, postpaid)
transfertype (DAY,END,EOP)
transferdate data przeniesienia, wymagana w przypadku transfertype=DAY (date RRRR-MM-DD)
attorney pełnomocnictwo (yes, no)
doc_no numer dokumentu
doc_signdate data podpisania (datetime RRRR-MM-DD hh:mm:ss)
Wartość zwracana Opis
id (int) ID operacji

Wymiana karty SIM na koncie MVNO

PUT https://api.mmsc.metroport.pl/Mvno/Mobiles/{id lub numer telefonu 48xxx (razem 11 cyfr)}

PUT /Mvno/Mobiles/48780280990 HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/x-www-form-urlencoded
Cookie: sess_ci=l6v9a0qs5tu3cdcs1accibpooor0ihbc
Content-Length: 29

sim_iccid=8948061050002375550

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.mmsc.metroport.pl/Mvno/Mobiles/48780280990',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'PUT',
  CURLOPT_POSTFIELDS => 'sim_iccid=8948061050002375550',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/x-www-form-urlencoded',
    'Cookie: sess_ci=l6v9a0qs5tu3cdcs1accibpooor0ihbc'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:

{
    1726
}
{
    1726
}
{
    1726
}

odpowiedź w przypadku braku określonych parametrów (walidacja):

{
    "ano": "Pole Numer telefonu jest wymagane.",
    "sim_iccid": "Pole Sim iccid jest wymagane.",
    "ext_services_id": "Usługa dostawcy nie istnieje w bazie danych."
}
{
    "ano": "Pole Numer telefonu jest wymagane.",
    "sim_iccid": "Pole Sim iccid jest wymagane.",
    "ext_services_id": "Usługa dostawcy nie istnieje w bazie danych."
}
{
    "ano": "Pole Numer telefonu jest wymagane.",
    "sim_iccid": "Pole Sim iccid jest wymagane.",
    "ext_services_id": "Usługa dostawcy nie istnieje w bazie danych."
}
Parametry wywołania Opis
ano Numer Telefonu (można podać w url zapytania zgodnie z instrukcją w nagłówku - w formacie z 48 na początku)
sim_iccid Numer ICCID karty SIM
sim_id ID karty SIM
Wartość zwracana Opis
id (int) ID operacji

Zmiana numeru telefonu

PUT https://api.mmsc.metroport.pl/mvno/Mobiles/{NUMER_PELNY_AKTUALNY}

PUT /Mvno/Mobiles/780281417 HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=75bhkcr8iereprurdvh1dk9le1ar5mo0

ano=780289499

przeniesienie na inny numer z własnej sieci

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Mobiles/780281417",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_POSTFIELDS => "ano=780289499",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=75bhkcr8iereprurdvh1dk9le1ar5mo0"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

przeniesienie na inny numer przeniesiony od innego operatora

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.mmsc.metroport.pl/Mvno/Mobiles/503100100',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'PUT',
  CURLOPT_POSTFIELDS => 'ano=503100100&np=1&npdata=1',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/x-www-form-urlencoded',
    'Cookie: sess_ci=vdado2e7d4ql7vjj7ta1tlfgfcfgq65v'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:

{
    1726
}
{
    1726
}
{
    1726
}

odpowiedź w przypadku braku określonych parametrów (walidacja):

{
    "id": "Podane konto nie istnieje"
}
{
    "id": "Podane konto nie istnieje"
}
{
    "id": "Podane konto nie istnieje"
}
Parametry wywołania Opis
ano Nowy numer 9 cyfr, wraz z prefiksem 48. Parametry niżej są opcjonalne, wymagane tylko jesli nowy numer jest numerem przeniesionym od innego operatora
np 0-numer własny 1-numer przeniesiony
npdata struktura zawierajaca pozycję ext_operators_id - ID operatora

Lista operatorów wg rejestru UKE - https://bip.uke.gov.pl/rpt/

Wartość zwracana Opis
id (int) ID operacji

Zmiana usługi na koncie MVNO

PUT https://api.mmsc.metroport.pl/Mvno/Mobiles/{id lub numer telefonu 48xxx (razem 11 cyfr)}/ChangeMobileService

PUT /Mvno/Mobiles/780289499/Mobiles/ChangeMobileService? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=82bhll6asovnggurp2omeol7vq1blgc0


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Mobiles/780289499/ChangeMobileService",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=82bhll6asovnggurp2omeol7vq1blgc0"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:

{
    1726
}
{
    1726
}
{
    1726
}

odpowiedź w przypadku braku określonych parametrów (walidacja):

{
    "ano": "Konto nie jest aktywne"
    "serviceid": "Pole Komponent jest wymagane.",
    "status": "Pole Status jest wymagane."
}
{
    "ano": "Konto nie jest aktywne",
    "serviceid": "Pole Komponent jest wymagane.",
    "status": "Pole Status jest wymagane."
}
{
    "ano": "Konto nie jest aktywne",
    "serviceid": "Pole Komponent jest wymagane.",
    "status": "Pole Status jest wymagane."
}
Parametry wywołania Opis
ano Numer telefonu
serviceid ID usługi dodatkowej:
1788 - roaming
1996 - poczta glosowa
2000 – balance control
status 0- deaktywacja / 1- aktywacja / 2- zmiana parametru
param wartość rozszerzona dla komponentu, używana w sytuacji kiedy dany komponent ją obsługuje (np. dla komponentu 'przekierowanie' w celu podania numeru dla przekierowania)
Wartość zwracana Opis
id (int) ID operacji

Przeniesienie konta MVNO

PUT https://api.mmsc.metroport.pl/Mvno/Mobiles/{id lub numer telefonu 48xxx (razem 11 cyfr)}/TransferMobile

Konto przenoszone musi być aktywne i nie może być wykonywana żadna operacja oczekująca na tym koncie.

PUT /Mvno/Mobiles/48515093713/TransferMobile? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=cil4tibsq3ppt90qifl0ss2o1rua73rb

userid=2


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Mobiles/48515093713/TransferMobile",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_POSTFIELDS => "userid=2",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=cil4tibsq3ppt90qifl0ss2o1rua73rb"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



odpowiedź w przypadku sukcesu:

{
    true,
}
{
    true,
}
{
    true,
}

odpowiedź w przypadku braku określonych parametrów (walidacja):

{
    "ano": "Konto nie jest aktywne"
}

{
    "userid": "Pole Klient jest wymagane."
}
{
    "ano": "Konto nie jest aktywne"
}
{
    "userid": "Pole Klient jest wymagane."
}
{
    "ano": "Konto nie jest aktywne"
}
{
    "userid": "Pole Klient jest wymagane."
}
Parametry wywołania Opis
userid id docelowego użytkownika
Wartość zwracana Opis
true status operacji

Blokada konta MVNO

PUT https://api.mmsc.metroport.pl/Mvno/Mobiles/{id lub numer telefonu 48xxx (razem 11 cyfr)}/BlockMobile

PUT /Mvno/Mobiles/780289486/BlockMobile? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=6dtm4ci6sk2323belcog0t6jtid6srbb



<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Mobiles/780289486/BlockMobile",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_HTTPHEADER => array(
    "Cookie: sess_ci_dev=6dtm4ci6sk2323belcog0t6jtid6srbb"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:

{
    1726
}
{
    1726
}
{
    1726
}
Parametry wywołania Opis
ano Numer Telefonu
Wartość zwracana Opis
id (int) ID operacji

Odblokowanie konta MVNO

PUT https://api.mmsc.metroport.pl/Mvno/Mobiles/{id lub numer telefonu 48xxx (razem 11 cyfr)}/UnBlockMobile

PUT /Mvno/Mobiles/780289486/UnBlockMobile? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=6dtm4ci6sk2323belcog0t6jtid6srbb



<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Mobiles/780289486/UnBlockMobile",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=6dtm4ci6sk2323belcog0t6jtid6srbb"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:

{
    1726
}
{
    1726
}
{
    1726
}
Parametry wywołania Opis
ano Numer Telefonu
Wartość zwracana Opis
id (int) ID operacji
  1. DeleteMobile(auth_data, ano) 18

Pobranie usług głównych MVNO

GET https://api.mmsc.metroport.pl/Mvno/Mobiles/MvnoMainServices

GET /Mvno/Mobiles/MvnoMainServices HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=75bhkcr8iereprurdvh1dk9le1ar5mo0



<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Mobiles",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "sim_iccid=8948061300012004990&ext_services_id=780281417&userid=3",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=nvgusvhr3tef2aou2ic4qumbbaqk0vac"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:

{
        "id": "29",
        "ext_id": "metroport_mobile_voice_2",
        "name": "DATA_100",
        "description": "",
        "subservices": "106,16",
        "forced_subservices": "106",
        "configurable": "0",
        "expiredate": "0000-00-00"
    },
    {
        "id": "30",
        "ext_id": "metroport_mobile_voice_2",
        "name": "DATA_200",
        "description": "",
        "subservices": "107,16",
        "forced_subservices": "107",
        "configurable": "0",
        "expiredate": "0000-00-00"
    },
{
        "id": "29",
        "ext_id": "metroport_mobile_voice_2",
        "name": "DATA_100",
        "description": "",
        "subservices": "106,16",
        "forced_subservices": "106",
        "configurable": "0",
        "expiredate": "0000-00-00"
    },
    {
        "id": "30",
        "ext_id": "metroport_mobile_voice_2",
        "name": "DATA_200",
        "description": "",
        "subservices": "107,16",
        "forced_subservices": "107",
        "configurable": "0",
        "expiredate": "0000-00-00"
    },
{
        "id": "29",
        "ext_id": "metroport_mobile_voice_2",
        "name": "DATA_100",
        "description": "",
        "subservices": "106,16",
        "forced_subservices": "106",
        "configurable": "0",
        "expiredate": "0000-00-00"
    },
    {
        "id": "30",
        "ext_id": "metroport_mobile_voice_2",
        "name": "DATA_200",
        "description": "",
        "subservices": "107,16",
        "forced_subservices": "107",
        "configurable": "0",
        "expiredate": "0000-00-00"
    },
Wartość zwracana Opis
id int
name string – nazwa usługi
subservices string – domyślnie aktywowane uslugi dodatkowe, rozdzielone przecinkiem

Pobranie usług dodatkowych MVNO

GET https://api.mmsc.metroport.pl/Mvno/Mobiles/MvnoSubServices

GET /Mvno/Mobiles/MvnoSubServices HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=6dtm4ci6sk2323belcog0t6jtid6srbb


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Mobiles/MvnoSubServices",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=6dtm4ci6sk2323belcog0t6jtid6srbb"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:

{
        "id": "75",
        "ext_id": "22221",
        "name": "100 minut na połączenia głosowe do wszystkich",
        "description": "",
        "type": "cykliczna",
        "shared": "0",
        "paramname": "",
        "freecategory": "national",
        "freetotal": "6000",
        "self_service": "0"
    },
    {
        "id": "76",
        "ext_id": "22217",
        "name": "100 SMS do wszystkich",
        "description": "",
        "type": "cykliczna",
        "shared": "0",
        "paramname": "",
        "freecategory": "sms",
        "freetotal": "100",
        "self_service": "0"
    },

{
        "id": "75",
        "ext_id": "22221",
        "name": "100 minut na połączenia głosowe do wszystkich",
        "description": "",
        "type": "cykliczna",
        "shared": "0",
        "paramname": "",
        "freecategory": "national",
        "freetotal": "6000",
        "self_service": "0"
    },
    {
        "id": "76",
        "ext_id": "22217",
        "name": "100 SMS do wszystkich",
        "description": "",
        "type": "cykliczna",
        "shared": "0",
        "paramname": "",
        "freecategory": "sms",
        "freetotal": "100",
        "self_service": "0"
    },
{
        "id": "75",
        "ext_id": "22221",
        "name": "100 minut na połączenia głosowe do wszystkich",
        "description": "",
        "type": "cykliczna",
        "shared": "0",
        "paramname": "",
        "freecategory": "national",
        "freetotal": "6000",
        "self_service": "0"
    },
    {
        "id": "76",
        "ext_id": "22217",
        "name": "100 SMS do wszystkich",
        "description": "",
        "type": "cykliczna",
        "shared": "0",
        "paramname": "",
        "freecategory": "sms",
        "freetotal": "100",
        "self_service": "0"
    },
Wartość zwracana Opis
id int
name string – nazwa usługi
paramname string – nazwa parametru dla usługi

Pobranie pul numeracyjnych

GET https://api.mmsc.metroport.pl/Mvno/Pools

GET /Mvno/Pools HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=u4cv0u20ti2eh2f95k0dgv8o8ijq5shn

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Pools",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=u4cv0u20ti2eh2f95k0dgv8o8ijq5shn"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:

{
        "id": "1",
        "firmid": "2",
        "pool_start": "780280000",
        "pool_end": "780280099",
        "spqm": "7802800",
        "quantity": "100",
        "supplier": "Metroport",
        "owner": "TeLogic",
        "active": "1",
        "creationdate": "1298545296",
        "creatorid": "53",
        "moddate": "0",
        "modid": "0",
        "destination": "mvno",
        "PoolName": "7802800, 780280000 - 780280099"
    }
Wartość zwracana Opis
poolid ID puli numeracyjnej
pool_start Pierwszy numer w puli
pool_end Ostatni numer w puli
spqm Pełny prefiks strefy numeracyjnej
quantity Ilość numerów w puli
supplier Dostawca puli
owner Właściciel puli
acvite 0-nieaktywna / 1-aktywna

Lista dostępnych wolnych numerów MVNO

GET https://api.mmsc.metroport.pl/Mvno/Mobiles/MvnoFreeNumbers?poolid={ID puli}

Parametry wywołania Opis
poolid ID puli numeracyjnej

Lista zajętych numerów MVNO

GET https://api.mmsc.metroport.pl/Mvno/Mobiles/MvnoUsedNumbers?poolid={ID puli}

Parametry wywołania Opis
poolid ID puli numeracyjnej

Karty SIM

Pobranie listy kart SIM

GET https://api.mmsc.metroport.pl/Mvno/SimCards

GET /Mvno/Simcards HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=u4cv0u20ti2eh2f95k0dgv8o8ijq5shn

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Simcards",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=u4cv0u20ti2eh2f95k0dgv8o8ijq5shn"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:

{
        "id": "1",
        "firmid": "1",
        "hlr": "68",
        "status": "deleted",
        "imsi": "260030680011100",
        "iccid": "8948030380600111001",
        "pin1": "4759",
        "puk1": "86820949",
        "pin2": "9999",
        "puk2": "53888366",
        "adm": "",
        "lpa": "",
        "activedate": "0",
        "deletedate": "0",
        "mobileid": null,
        "ano": null,
        "userid": null,
        "mobilestatus": null
    }
Wartość zwracana Opis
id ID karty SIM
hlr Typ hlr karty SIM
status stored,assigned,active,blocked,deleted
imsi Numer karty SIM
iccid Identyfikator karty SIM
pin1 pin1
puk1 puk1
pin2 pin2
puk2 puk2
adm Kod administracyjny
lpa Kod QR LPA dla esim
activedate Unix timestamp
deletedate Unix timestamp

Istnieje możliwość filtrowania wyników przy pomocy parametrów:

Parametr 1 Opis Parametr 2 Opis
orderBy wartości: id, mobileid, ano, iccid, imsi, userid, activedate order asc = rosnąco, desc = malejąco
limitonpages ilość wyników na stronę page strona wyników (pierwsza strona to 0)

Usunięcie karty SIM

DELETE https://api.mmsc.metroport.pl/Mvno/SimCards

Parametry wywołania Opis
sim_iccid Numer Telefonu
Wartość zwracana Opis
true status operacji

Biling MVNO

Pobranie bilingu

GET https://api.mmsc.metroport.pl/Mvno/Billings

Parametry wywołania struct
datestart Data od kiedy pobrać rozmowy YYYY- MM-DD HH:mm:ss - pobrane zostaną rozmowy od podanej daty do daty wywołania
dateend Data do kiedy pobrać rozmowy w formacie YYYY-MM-DD HH:mm:ss - pobrane zostaną rozmowy do podanej w parametrze daty
userid id użytkownika (jeśli chcemy zawęzić biling do jednego klienta)
importdate Data zaimportowania rekordu
id_after Funkcja sortująca ID wyższe niż określone (np. można zapisać, że ostatnie ID pobraliśmy 111 i w zapytaniu podać 111, a API będzie zwracać 112 i dalsze. W tym przypadku parametr calldate jest wymagany)
mobileid ID konta MVNO
traffic_types_id ID typu ruchu
traffic_categories_id ID kategorii/frakcji ruchu
counted Flaga przeliczenia wg cennika taryfy klienta, 1-tak, 0-nie

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.mmsc.metroport.pl/Mvno/Billings?datestart=2021-08-01&dateend=2021-08-02',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Cookie: sess_ci=pp5ijktcd0a5kthc1d10dj3hrah3le4a'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

        {
            "id": "56664840",
            "calldate": "2021-08-01 00:46:07",
            "calldate_uts": "1627771567",
            "importdate": "2021-08-01 02:17:38",
            "firmid": "2",
            "userid": "15276",
            "mobileid": "3769",
            "ano": "780280072",
            "src": "48780280072",
            "dst": "",
            "ext_id": "251190644~27883322",
            "traffic_types_id": "101",
            "traffic_categories_id": "18",
            "TypeName": "Transmisja danych",
            "CategoryName": "Połączenie GPRS Internet",
            "duration": "0.00",
            "datatransfer": "48.90",
            "msg": "0",
            "billingtime": "1024",
            "unit": "kB",
            "nettovalue": "0.00500",
            "vat": "23",
            "countingcall": "100",
            "totalnetto": "0.01000",
            "free_totalnetto": "0.01000",
            "freeseconds_used": "0",
            "freedata_used": "100",
            "free_totalnetto_provider": "0.01000",
            "freeseconds_used_provider": "0",
            "freedata_used_provider": "100",
            "realtotalnetto": "0.00000",
            "realtotalbrutto": "0.000000000",
            "provider_nettovalue": "0.00500",
            "provider_vat": "23",
            "provider_countingcall": "100",
            "provider_totalnetto": "0.00000",
            "totalsurplus": "0.00000",
            "rateddate": "2021-08-01 02:21:33",
            "provider_rateddate": "2021-08-01 02:21:33",
            "ext_provider_rateddate": "0000-00-00 00:00:00",
            "ext_provider_totalnetto": "0.00000",
            "counted": "1",
            "provider_counted": "1",
            "diffcounted": "0",
            "fca": "",
            "app": "4",
            "appdata": "617",
            "clearcause": "400",
            "location_src": "1010100103001@@@",
            "location_dst": "2000000000000001",
            "cos": "2175",
            "billingfield": "datatransfer",
            "stgroupid": "19",
            "actual_service_tariffid": "1404",
            "datatransferCommonSize": "48.90 kB",
            "durationHoursMinutesSeconds": "0 sec"
        },

        {
            "id": "56668370",
            "calldate": "2021-08-01 08:17:45",
            "calldate_uts": "1627798665",
            "importdate": "2021-08-01 09:00:01",
            "firmid": "2",
            "userid": "5834",
            "ano": "603648390",
            "src": "48603648390",
            "dst": "48516481031",
            "ext_id": "1826721376~27883323",
            "traffic_types_id": "1",
            "traffic_categories_id": "3",
            "TypeName": "Połączenie głosowe krajowe",
            "CategoryName": "Połączenie do sieci komórkowej",
            "duration": "67.00",
            "datatransfer": "0.00",
            "msg": "0",
            "billingtime": "60",
            "unit": "s",
            "nettovalue": "0.07000",
            "vat": "23",
            "countingcall": "1",
            "totalnetto": "0.08000",
            "free_totalnetto": "0.08000",
            "freeseconds_used": "67",
            "freedata_used": "0",
            "free_totalnetto_provider": "0.08000",
            "freeseconds_used_provider": "67",
            "freedata_used_provider": "0",
            "realtotalnetto": "0.00000",
            "realtotalbrutto": "0.000000000",
            "provider_nettovalue": "0.07000",
            "provider_vat": "23",
            "provider_countingcall": "1",
            "provider_totalnetto": "0.00000",
            "totalsurplus": "0.00000",
            "rateddate": "2021-08-01 09:04:06",
            "provider_rateddate": "2021-08-01 09:04:06",
            "ext_provider_rateddate": "0000-00-00 00:00:00",
            "ext_provider_totalnetto": "0.00000",
            "counted": "1",
            "provider_counted": "1",
            "diffcounted": "0",
            "fca": "48516481031",
            "app": "1",
            "appdata": "4",
            "clearcause": "16",
            "location_src": "1010100103001011",
            "location_dst": "1010100103006@@@",
            "cos": "2175",
            "billingfield": "duration",
            "stgroupid": "19",
            "actual_service_tariffid": "2052",
            "datatransferCommonSize": "0.00 B",
            "durationHoursMinutesSeconds": "1 min, 7 sec"
        }

GET /Mvno/Billings?datestart=2021-08-01&dateend=2021-08-02 HTTP/1.1
Host: api.mmsc.metroport.pl
Cookie: sess_ci=pp5ijktcd0a5kthc1d10dj3hrah3le4a

Wartość zwracana Opis
id Unikalne id rekordu
calldate czas rozpoczęcia połączenia
calldate_uts czas rozpoczęcia połączenia w formacie unix_timestamp
importdate data zaimportowania rekordu
firmid id firmy
userid id klienta
ano numer konta/telefonu
src numer źródłowy
dst numer docelowy (bno)
ext_id id polaczenia w systemie dostawcy
traffic_types_id id typu ruchu
traffic_categories_id id kategorii/frakcji ruchu
TypeName nazwa typu ruchu
CategoryName nazwa kategorii/frakcji ruchu
duration czas trwania połączenia w sekundach
datatransfer ilość przesłanych danych w kB
msg wiadomość SMS/MMS
billingtime czas impulsu
unit jednostka naliczania
nettovalue jednostkowa wartość netto za impuls
vat stawka vat w %
countingcall naliczanie w sek
totalnetto obliczona całkowita wartość netto za rozmowę, nie uwzględnia darmowych minut
free_totalnetto kwota do odliczenia z pola totalnetto (darmowe minuty)
freeseconds_used ilość wykorzystanych darmowych minut (w sekundach)
freedata_used ilość wykorzystanych darmowych MB (w kB)
free_totalnetto_provider kwota do odliczenia z pola totalnetto (darmowe minuty)
freeseconds_used_provider ilość wykorzystanych darmowych minut (w sekundach)
freedata_used_provider ilość wykorzystanych darmowych MB (w kB)
realtotalnetto obliczona całkowita wartość netto za rozmowę wg cennika partnerskiego, z darmowymi minutami
realtotalbrutto obliczona całkowita wartość brutto za rozmowę wg cennika partnerskiego, z darmowymi minutami
provider_netto_value jednostkowa wartość netto za impuls wg cennika kosztów dostawcy
provider_vat stawka vat w % wg cennika kosztów dostawcy
provider_countingcall naliczanie w sek wg cennika kosztów dostawcy
provider_totalnetto koszt całkowity obliczony wg cennika kosztów dostawcy
provider_totalnetto_raw koszt całkowity obliczony wg cennika kosztów dostawcy
rateddate data billingowania w MMS
provider_rateddate data billingowania kosztów dostawcy w MMS
ext_provider_rateddate data billingowania u operatora
ext_provider_totalnetto koszt zdarzenia netto wg operatora
counted czy przeliczone wg cennika taryfy klienta, 1-tak, 0-nie
provider_counted flaga obliczenia kosztów dostawcy: 0-do obliczenia, 1-obliczone
fca dodatkowy prefix + BNO
app aplikacja użyta w polaczeniu
appdata dane aplikacji
clearcause powód rozłączenia
location_src wskaźnik lokalizacji numeru źródłowego
location_dst wskaźnik lokalizacji numeru docelowego
cos CoS
billingfield pole bilingowania
stgroupid id grupy usług
actual_service_tariffid id taryfy klienta
datatransferCommonSize pełny zapis transferu w MB
durationHoursMinutesSeconds pełny zapis czasu trwania połączenia
retail_counted flaga obliczenia kosztów cennika detalicznego: 0-do obliczenia, 1-obliczone
retail_rateddate data billingowania cennika detalicznego w MMS
retail_nettovalue jednostkowa wartość netto za impuls wg cennika detalicznego
retail_vat stawka vat w % wg cennika detalicznego
retail_countingcall naliczanie w sek wg cennika detalicznego
retail_totalnetto_raw koszt całkowity obliczony wg cennika detalicznego
retail_totalnetto koszt całkowity obliczony wg cennika detalicznego (z uwzględnieniem pakietów - np. jeśli klient posiada pakiet bez limitu - wartość równa jest 0)

Pobranie typów połączeń w bilingu

GET https://api.mmsc.metroport.pl/Mvno/Billings/TrafficTypes

GET /Mvno/Billings/TrafficTypes? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=cil4tibsq3ppt90qifl0ss2o1rua73rb
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Billings/TrafficTypes",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_POSTFIELDS => "userid=2",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=cil4tibsq3ppt90qifl0ss2o1rua73rb"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:

{
        "id": "1",
        "ext_id": "1",
        "name": "REGULAR_CALL",
        "type": "call",
        "description": "Połączenie głosowe krajowe",
        "unit": "s"
    },
    {
        "id": "2",
        "ext_id": "1",
        "name": "ROAMING_CALL",
        "type": "call",
        "description": "Połączenie głosowe w roamingu / połączenie zwrotne",
        "unit": "s"
    }
{
        "id": "1",
        "ext_id": "1",
        "name": "REGULAR_CALL",
        "type": "call",
        "description": "Połączenie głosowe krajowe",
        "unit": "s"
    },
    {
        "id": "2",
        "ext_id": "1",
        "name": "ROAMING_CALL",
        "type": "call",
        "description": "Połączenie głosowe w roamingu / połączenie zwrotne",
        "unit": "s"
    }
{
        "id": "1",
        "ext_id": "1",
        "name": "REGULAR_CALL",
        "type": "call",
        "description": "Połączenie głosowe krajowe",
        "unit": "s"
    },
    {
        "id": "2",
        "ext_id": "1",
        "name": "ROAMING_CALL",
        "type": "call",
        "description": "Połączenie głosowe w roamingu / połączenie zwrotne",
        "unit": "s"
    }

{
        "id": "1",
        "ext_id": "1",
        "name": "REGULAR_CALL",
        "type": "call",
        "description": "Połączenie głosowe krajowe",
        "unit": "s"
    },
    {
        "id": "2",
        "ext_id": "1",
        "name": "ROAMING_CALL",
        "type": "call",
        "description": "Połączenie głosowe w roamingu / połączenie zwrotne",
        "unit": "s"
    }

Pobranie kategorii/frakcji ruchu w bilingu

GET https://api.mmsc.metroport.pl/Mvno/Billings/TrafficCategories

Pobranie stawek w cenniku partnerskim MVNO

GET https://api.mmsc.metroport.pl/Mvno/ProviderRates

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/ProviderRates",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=kp7o2dnfugqmr27clv5dl5bavvn825qk"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
{
        "id": "55700",
        "traffic_categories_id": "1",
        "countingcall": "1",
        "pricenetto": "1.46341",
        "freecategory": null,
        "traffic_types_id": "132",
        "name": "BZ1_TO_ANYWHERE_MMS",
        "CategoryName": "Wiadomość MMS w roamingu w strefie 1",
        "billingtime": "1",
        "onetime": "1",
        "TypeName": "MMS w roamingu",
        "unit": "wiad."
    },
GET /Mvno/ProviderRates? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=kp7o2dnfugqmr27clv5dl5bavvn825qk
Wartość zwracana Opis
id Unikalne id rekordu
traffic_types_id Typ ruchu
traffic_categories_id frakcja/kategoria ruchu
countingcall naliczanie w sek/KB
pricenetto stawka netto
freecategory rozmowy z danej kategorii zaliczane do puli darmowych minut/MB/SMS
name nazwa
CategoryName nazwa frakcji ruchu
billingtime czas impulsu
onetime impuls jednorazowy (opłata za całe połączenie)
TypeName typ rekordu
unit jednostka miary

Pobranie stawek w cenniku detalicznym MVNO

GET https://api.mmsc.metroport.pl/Mvno/retailRates

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/retailRates",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=kp7o2dnfugqmr27clv5dl5bavvn825qk"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
{
        "id": "1028",
        "traffic_categories_id": "3",
        "countingcall": "60",
        "pricenetto": "0.23577",
        "freecategory": "mobile",
        "pricebrutto": "0.29",
        "traffic_types_id": "1",
        "name": "P4_TO_POLAND_MOBILE_VC",
        "CategoryName": "Połączenie do sieci komórkowej",
        "billingtime": "60",
        "onetime": "0",
        "TypeName": "Połączenie głosowe krajowe",
        "unit": "s"
    },
GET /Mvno/retailRates? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=kp7o2dnfugqmr27clv5dl5bavvn825qk
Wartość zwracana Opis
id Unikalne id rekordu
traffic_types_id Typ ruchu
traffic_categories_id frakcja/kategoria ruchu
countingcall naliczanie w sek/KB
pricenetto stawka netto
freecategory rozmowy z danej kategorii zaliczane do puli darmowych minut/MB/SMS
name nazwa
CategoryName nazwa frakcji ruchu
billingtime czas impulsu
onetime impuls jednorazowy (opłata za całe połączenie)
TypeName typ rekordu
unit jednostka miary

Import cennika detalicznego


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.mmsc.metroport.pl/Mvno/retailRates/importRates',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => array('file'=> new CURLFILE('import.csv')),
  CURLOPT_HTTPHEADER => array(
    'Cookie: sess_ci=n1e1jau3qafevlkeb1k6obuo108lfokc'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

POST /Mvno/retailRates/importRates HTTP/1.1
Host: api.mmsc.metroport.pl
Cookie: sess_ci=n1e1jau3qafevlkeb1k6obuo108lfokc
Content-Length: 198
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="import.csv"
Content-Type: text/csv

(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW

odpowiedź w przypadku sukcesu:

Zaimportowano 1 pozycji. |true
{
Zaimportowano 1 pozycji. |true
}
Zaimportowano 1 pozycji. |true

odpowiedź w przypadku błędu:

Brak pliku do importu. |"Bad Request"
Pusty plik do importu. |"Bad Request"
Brak pliku do importu. |"Bad Request"
Pusty plik do importu. |"Bad Request"
Brak pliku do importu. |"Bad Request"
Pusty plik do importu. |"Bad Request"

POST https://api.mmsc.metroport.pl/mvno/retailRates/importRates

Parametry wywołania Opis
file ścieżka do .csv

Przykładowa struktura pliku (pola oznaczone "*" są wymagane, pozostałe nie są importowane):

Struktura pól:

*nazwa kategorii;*cena netto za impuls [pln];*czas impulsu [s/kB/wiad];*naliczanie [s/kB/wiad];pula darmowych minut [internal/fixed/mobile/national/data/sms];jednorazowa opłata za połączenie [1-tak, 0-nie];nazwa kategorii;nazwa typu

Przykładowy plik:

BZ1_TO_ANYWHERE_MMS;1,62602;1;1;;1;Wiadomość MMS w roamingu w strefie 1;MMS w roamingu

Pobranie statusu operacji MVNO

GET https://api.mmsc.metroport.pl/Mvno/Operations

Istnieje możliwość filtrowania wyników przy uwzględnieniu parametrów w nagłówku:

Parametry wywołania Opis
ano Numer Telefonu
userid ID klienta

W przykładzie zostało pokazane listowanie wszystkich operacji typu "Aktywacja" ze statusem "błąd"

Dostępne filtry statusów:

{
    "new": {
        "id": "new",
        "name": "nowa"
    },
    "sent": {
        "id": "sent",
        "name": "wysłana, w realizacji"
    },
    "ok": {
        "id": "ok",
        "name": "wykonana poprawnie"
    },
    "error": {
        "id": "error",
        "name": "błąd"
    }
}

Dostępne filtry statusów:
GET https://api.mmsc.metroport.pl/Mvno/Operations/StatusesList

Dostępne typy operacji:

{
    "-1": {
        "id": "-1",
        "name": "-- wszystkie zlecenia --"
    },
    "ActivateMobile": {
        "id": "ActivateMobile",
        "name": "aktywacja nowego numeru"
    },
    "ActivateMobile_NP": {
        "id": "ActivateMobile_NP",
        "name": "aktywacja numeru przeniesionego"
    },
    "ChangeMobileSIM": {
        "id": "ChangeMobileSIM",
        "name": "zmiana karty SIM"
    },
    "ChangeMobileAno": {
        "id": "ChangeMobileAno",
        "name": "zmiana numeru"
    },
    "ChangeMobileProduct": {
        "id": "ChangeMobileProduct",
        "name": "zmiana usługi podstawowej"
    },
    "ChangeMobileService": {
        "id": "ChangeMobileService",
        "name": "zmiana usługi"
    },
    "BlockMobile": {
        "id": "BlockMobile",
        "name": "zablokowanie konta"
    },
    "UnBlockMobile": {
        "id": "UnBlockMobile",
        "name": "odblokowanie konta"
    },
    "DeleteMobile": {
        "id": "DeleteMobile",
        "name": "usunięcie konta"
    },
    "ImportBilling": {
        "id": "ImportBilling",
        "name": "import billingu"
    },
    "Other": {
        "id": "Other",
        "name": "pozostałe"
    }
}

Dostępne typy operacji:
GET https://api.mmsc.metroport.pl/Mvno/Operations/TypesList

GET /Mvno/Operations/?type=ActivateMobile&&status=error HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=132ru89kr0i3j7l87ps95lhd7qv9t1eu

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/Operations/?type=ActivateMobile&&status=error",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Cookie: sess_ci_dev=132ru89kr0i3j7l87ps95lhd7qv9t1eu"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


odpowiedź w przypadku sukcesu:

{
            "id": "54713",
            "firmid": "9",
            "userid": "7234",
            "ano": "732152722",
            "status": "error",
            "type": "ActivateMobile",
            "data": "a:4:{s:6:\"msisdn\";s:9:\"732152722\";s:5:\"iccid\";s:19:\"8948061050017559471\";s:9:\"offerName\";s:4:\"DATA\";s:4:\"name\";s:17:\"MetroM Data 30GB \";}",
            "ext_orderid": "516890047",
            "errormsg": "Błąd",
            "errorcount": "1",
            "creationdate": "1480060045",
            "execdate": "1480352956"
        },
        {
            "id": "42882",
            "firmid": "60",
            "userid": "1966",
            "ano": "780287334",
            "status": "error",
            "type": "ActivateMobile",
            "data": "<root><order><AbbType>1</AbbType><OrderType>1</OrderType><CustomerType>1</CustomerType><MSISDN>780287334</MSISDN><Mobil_ICC>8948030380600135976</Mobil_ICC><CompanyName>NETCOM computers - Robert Opieliński</CompanyName><StreetName>Dobrzecka</StreetName><Number>13</Number><ZipCode>62-800</ZipCode><City>Kalisz</City><Country>Polska</Country><Email>netcom@ekranledowy.pl</Email><NIP>6181906953</NIP><TmsProductID>2035</TmsProductID><ExternalCustomerNo>1966</ExternalCustomerNo></order></root>",
            "ext_orderid": "0",
            "errormsg": "wylaczenie numeracji",
            "errorcount": "1",
            "creationdate": "1432801244",
            "execdate": "1433948883"
        },

odpowiedź w przypadku braku parametrów:

<br>`ERROR 204: No Content`
Parametry wywołania Opis
orderid ID zlecenia
Wartość zwracana Opis
operationdata userid – int: id użytkownika/klienta ano – string: numer telefonu status – string: ok, sent, error type – string: typ zlecenia errormsg – string: opis błędu errorcount – int: ilość błędnych prób

Pobranie zdarzeń PLICBD2

GET https://api.mmsc.metroport.pl/Mvno/PlicbdEvents

W przykładzie zostało pokazane listowanie wszystkich zdarzeń typu "E03" ze statusem "wysłane"

Dostępne typy operacji:
GET https://api.mmsc.metroport.pl/Mvno/Operations/TypesList

GET /Mvno/PlicbdEvents?type=E03&status=wysłane HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=ochpt6l842trkj3524iollt0ha6pko5r

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/PlicbdEvents?type=E03&status=wys%C5%82ane",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=ochpt6l842trkj3524iollt0ha6pko5r"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:

{
        "id": "1",
        "firmid": "40",
        "caseid": "1",
        "ext_eventid": "087480000000000001",
        "type": "E03",
        "dirnum": "555111222",
        "uke_operatorid_services": "92",
        "uke_operatorid_network": "92",
        "operation": "INSERT",
        "data": "YTo4OntzOjE4OiJjYXNlLWRvY3VtZW50LTEtaWQiO3M6MDoiIjtzOjMxOiJjYXNlLWRvY3VtZW50LTEtZXhwaXJhdGlvbi1kYXRlIjtzOjEwOiIxNDYyNTcyMDAwIjtzOjEyOiJwcm9jZXNzLXR5cGUiO3M6MToiMSI7czoxNDoicm91dGluZy1udW1iZXIiO3M6NToiQzAxMDYiO3M6MTI6InBvcnRpbmctbW9kZSI7czozOiJFTkQiO3M6Mjg6ImNhc2UtcGVuZGluZy1hY3RpdmF0aW9uLWRhdGUiO3M6MTA6IjE0NjAxMTU3MjAiO3M6MTc6InZlcmlmaWNhdGlvbi10eXBlIjtzOjE6IjEiO3M6ODoiYXR0b3JuZXkiO3M6MToiMSI7fQ==",
        "status": "wysłane",
        "errormsg": "",
        "package": "1",
        "eventdate": "1460025720",
        "execdate": "1460033101",
        "creationdate": "1460026204",
        "creatorid": "0",
        "ext_caseid": "087480000000000001",
        "uke_operatorid_recipient": "8748",
        "uke_operatorid_donor": "9597",
        "owned": "1",
        "user_name": "Jan Kowalski",
        "user_identifier_type": "DOC",
        "user_identifier_no": "ASD453789",
        "SelectName": "087480000000000001 - 555111222",
        "case-document-1-id": "",
        "case-document-1-expiration-date": "1462572000",
        "process-type": "1",
        "routing-number": "C0106",
        "porting-mode": "END",
        "case-pending-activation-date": "1460115720",
        "verification-type": "1",
        "attorney": "1"
    }

odpowiedź w przypadku braku parametrów:

<br>`ERROR 204: No Content`
Parametry wywołania Opis
orderid ID zlecenia
Wartość zwracana Opis
operationdata userid – int: id użytkownika/klienta ano – string: numer telefonu status – string: ok, sent, error type – string: typ zlecenia errormsg – string: opis błędu errorcount – int: ilość błędnych prób
Parametry wywołania Opis
datefrom Najwcześniejsza data wysłania / odebrania zwracanych zdarzeń YYYY-MM-DD HH:ii:ss
lastid int
Wartość zwracana Opis
eventslist Parametry eventdata zostały opisane szczegółowo w sekcji pt. "Wysłanie zdarzenia PLICBD2"

Lista dostępnych formatek PLICBD2

GET https://api.mmsc.metroport.pl/Mvno/PLICBDEvents/AllowedEventOperations

Lista dostępnych typów operacji PLICBD2

GET https://api.mmsc.metroport.pl/Mvno/PLICBDEvents/EventTypes

Lista dostępnych Operatorów UKE

GET https://api.mmsc.metroport.pl/Mvno/PLICBDEvents/UKEOperatorsList

Lista dostępnych błędów w komunikacji z PLICBD2

GET https://api.mmsc.metroport.pl/Mvno/PLICBDEvents/ErrorReasonsList

Wysyłanie zdarzeń PLICBD2

POST https://api.mmsc.metroport.pl/Mvno/PlicbdEvents

W przykładzie została pokazana wysyłka typowej formatki E03 rozpoczynającej proces przeniesienia numeru

POST /Mvno/PlicbdEvents? HTTP/1.1
Host: api.mmsc.metroport.pl
Content-Type: application/json; charset=utf-8
Cookie: sess_ci_dev=rutphtoufi0ki3hjlgg7ss6bljk1eefl

type=E03&dirnum=123456789&uke_operatorid_recipient=8748&uke_operatorid_donor=9597&operation=INSERT&user_name=Jan Kowalski&user_identifier_type=DOC&user_identifier_no=ABC123567&case-document-1-id=&case-document-1-expiration-date=2020-09-01&eventdate=2020-08-04&uke_operatorid_services=8748&uke_operatorid_network=8748&process-type=1&routing-number=C0106&porting-mode=END&case-pending-activation-date=2020-09-01&verification-type=1&attorney=1

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/Mvno/PlicbdEvents",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "type=E03&dirnum=123456789&uke_operatorid_recipient=8748&uke_operatorid_donor=9597&operation=INSERT&user_name=Jan%20Kowalski&user_identifier_type=DOC&user_identifier_no=ABC123567&case-document-1-id=&case-document-1-expiration-date=2020-09-01&eventdate=2020-08-04&uke_operatorid_services=8748&uke_operatorid_network=8748&process-type=1&routing-number=C0106&porting-mode=END&case-pending-activation-date=2020-09-01&verification-type=1&attorney=1",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=rutphtoufi0ki3hjlgg7ss6bljk1eefl"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź w przypadku sukcesu:

{
    "caseid": 1726,
    "eventid": 6221,
    "ext_caseid": "087480000000001726",
    "ext_eventid": "087480000000006221"
}
{
    "caseid": 1726,
    "eventid": 6221,
    "ext_caseid": "087480000000001726",
    "ext_eventid": "087480000000006221"
}
{
    "caseid": 1726,
    "eventid": 6221,
    "ext_caseid": "087480000000001726",
    "ext_eventid": "087480000000006221"
}

odpowiedź w przypadku nie podania parametrów (walidacja):

{
    "type": "Pole Typ zdarzenia jest wymagane.",
    "dirnum": "Pole Numer jest wymagane.",
    "uke_operatorid_recipient": "Pole Operator biorca jest wymagane.",
    "uke_operatorid_donor": "Pole Operator dawca jest wymagane."
}
{
    "type": "Pole Typ zdarzenia jest wymagane.",
    "dirnum": "Pole Numer jest wymagane.",
    "uke_operatorid_recipient": "Pole Operator biorca jest wymagane.",
    "uke_operatorid_donor": "Pole Operator dawca jest wymagane."
}
{
    "type": "Pole Typ zdarzenia jest wymagane.",
    "dirnum": "Pole Numer jest wymagane.",
    "uke_operatorid_recipient": "Pole Operator biorca jest wymagane.",
    "uke_operatorid_donor": "Pole Operator dawca jest wymagane."
} 
Parametry wywołania Opis
eventdata Dane zdarzenia do wysłania do PLICBD
Parametry wspólne Nazwa Opis
Eventdata (parametry wspólne) ext_caseid ID sprawy w PLICBD (może pozostać pusty, wtedy zostanie nadany numer sprawy. Istotny w odpowiedzi na założoną sprawę)
ext_eventid ID zdarzenia w PLICBD (numer nadawany jest przez MMSC)
type Typ komunikatu
dirnum Numer przydzielony w formacie KNA
uke_operatorid_recipient Identyfikator Biorcy numeru
uke_operatorid_donor Dawca usługi głosowej
operation Typ operacji: Dozwolone wartości: „INSERT” – dla komunikatów realizowanych w trybie standardowym „INTERVENTION” – Reklamacyjny zwrot Numeru – przeznaczony do stosowania w nagłych przypadkach reklamacyjnych „MIGRATION” – dla komunikatów związanych ze zmigrowaniem istniejących spraw do Systemu PLI CBD TRANSFORMATION” – zmiana Dostawcy Usług związana z przekształceniami własnościowymi albo zmiana Operatora Usług Towarzyszących lub Operatora Sieci
Eventdata (parametry dodatkowe, dołączane w zależności od typu komunikatu) Eventdata (parametry dodatkowe, dołączane w zależności od typu komunikatu) E03 user_name Imię i nazwisko
user_identifier_type Rodzaj danych identyfikacyjnych
user_identifier_no Numer identyfikacyjny
case-document-1-id Numer wniosku NP Biorcy
case-document-1-expiration-date Data ważności wniosku NP
eventdate Data zdarzenia
uke_operatorid_services Operator Usług Towarzyszących
uke_operatorid_network Operator Sieci
process-type Rodzaj procesu
routing-number Numer rutingowy
porting-mode Tryb wypowiedzenia umowy
case-pending-activation-date Wnioskowana data rozpoczęcia świadczenia usług przez Biorcę
verification-type Sposób weryfikacji danych
attorney Pełnomocnictwo
E06 case-termination-date Data rozwiązania umowy
E12 case-pending-activation-date Data i godzina przeniesienia
E13 porting-date Data i godzina przeniesienia
routing-number Numer rutingowy
E16 reason Identyfikator przyczyny odmowy przeniesienia numeru
E17
E18
E41 astatus Odpowiedź o zwracanych danych
Wartość zwracana Opis
ext_caseid Nadany ID sprawy
ext_eventid Nadany ID zdarzenia

SMS API

SMS API służy do wysyłania, sprawdzania statusu smsów, bilansu konta

Wysyłanie SMS

POST https://api.mmsc.metroport.pl/sms/SMS

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/sms/SMS",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => array(
        'message' => 'Test', // treść SMS
        'msisdn' => '48123456789', // odbiorca SMS
        'sender' => '48987654321', // nadawca
        'dateToSend' => '1601412775', // data kiedy ma zostać wysłany SMS (znacznik czasowy unix)
        'accountId' => 1, // id konta
  ),
  CURLOPT_HTTPHEADER => array(
    "Cookie: sess_ci_dev=e29qik65pcmj7nlslli1gq0eih8r454n"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Wartość Obowiązkowe Opis
message tak Treść
msisdn tak Numer odbiorcy format: 48xxxxxxxxx
sender tak Numer nadawcy lub Nazwa Nadawcy (losowy = pusty)
accountId nie ID z "Pobranie listy wykupionych usług"
noPolishCharacters nie Czy usunąć "polskie ogonki"
dateToSend nie Data (int), kiedy ma zostać wysłany SMS
anonymized nie Czy zanonimizować treść wiadomości
report_callback nie URL do którego API wyśle status

odpowiedź:

{
    "id": 0, // id wysłanego SMS
    "sms_count_send": 100, // ilość smsów wysłana po przekroczeniu abonamentu
    "sms_count_subscription": 300 // ilość smsów pozostała w abonamencie
}

Uwaga, jeśli przy tworzeniu konta zaznaczona została opcja 'numer dwukierunkowy', a także podany został adres callback, dodatkowo zostanie wysłana informacja o przychodzącym SMS (metoda GET). Odpowiedź musi być 'ACCEPT':

{
    "message": test,
    "sender": 48xxxxxxxxx,
    "date": 1598962172,
    "id": 6a590bd1-328f-4ff2-b3cf-bf9ed479355f
}

Uwaga, jeśli w zapytaniu został użyty parametr report_callback wraz ze wskazaniem adresu URL, dodatkowo zostanie wysłana informacja o statusie SMS (metoda GET):

{
    "messageId": 1234678,
    "deliverydate": 1636966260,
    "status": delivered,
    "failedMessage": {{tresc bledu}}
}

Sprawdzanie statusu SMS

GET https://api.mmsc.metroport.pl/sms/SMS/{id}


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/sms/SMS/{id_SMS}",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=e29qik65pcmj7nlslli1gq0eih8r454n"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź:

{
    "id": "1" // id SMS,
    "status": "delivered", // status SMS
    "senddate": "1596459273", // data i godzina wysłania SMS (w sekundach)
    "deliverydate": "1596459240", // data i godzina odebrania SMS (w sekundach)
    "creationdate": "1596459273"  // data i godzina utworzenia SMS (w sekundach)
}

Statusy smsów:

[
    "new", // nowy
    "sent", // wysłany
    "delivered", // odebrany
    "failed", // nie wysłany
]

Lista wysłanych SMS

GET https://api.mmsc.metroport.pl/sms/History


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/sms/History?_page=1&_limit=20&currentPage=1&perPage=20&_order=ASC&_orderby=senddate&sort={"asc":true,"column":"senddate"}",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=e29qik65pcmj7nlslli1gq0eih8r454n"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź:

{
    "smsaccount_id": "1" // numer konta ,
    "status": "delivered", // status: delivered - odebrany przez adresata, new - nie wysłany (zakolejkowany), sent - wysłany
    "msisdn": "48123456789" // numer docelowy / nadawca (jeśli type = delivered)
    "message": "test", // wiadomość
    "deliverydate": "1596459273"  // data dostarczenia (odbioru) / wyslania
    "type": "sent" // sent - wysłany, delivered - przychodzący   
}

Pobranie listy wykupionych usług

GET https://api.mmsc.metroport.pl/sms/Tariff/accounttariffs

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/sms/Tariff/accounttariffs",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=e29qik65pcmj7nlslli1gq0eih8r454n"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

odpowiedź:

[
    {
        "id": "1",
        "tariff_name": "Bogaty", // nazwa taryfy
        "account_phone_number": "", // wykupiony numer (pusty jeśli losowy)
        "tariff_price": "140.00", // cena taryfy
        "account_sms_count_receive": "0", // ilosc odebranych SMS
        "tariff_receive_sms_rate": "0.00", // cena za odebranie SMS 
        "sms_count_send": "0", // ilość wysłanych SMS
        "sms_count_subscription": "1868", // ilość pozostałych SMS w abonamencie
        "subscription_rate": "0.07", // cena za SMS w abonamencie
        "tariff_rate": "0.12", //cena za SMS poza abonamentem
        "account_friendly_name": "Losowy", //przyjazna nazwa
        "login": "LOGIN", // login do usługi
        "safety": "10" // bezpieczenik
    }
]

Lista dostępnych numerów

GET https://api.mmsc.metroport.pl/sms/Pool?random={random}

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.mmsc.metroport.pl/sms/Pool?random=true",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
  "Content-Type: application/json; charset=utf-8",
    "Cookie: sess_ci_dev=e29qik65pcmj7nlslli1gq0eih8r454n"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Parametr wywołania Opis
random true - tylko losowe / false - tylko statyczne

odpowiedź:

[
    {
        "48123456789",
        "48987654321"
    }
]

Przykład wykonania - cURL w PHP

Przykład wykonania - biblioteka cURL w PHP:


$url = "https://api.mmsc.metroport.pl/";
$params_auth = array(
    'login'=>'DEMO',
    'password'=>'DEMO'
);
$f_login = "admins/Auth/login";
$f_addUser = array('method' => "users/Users",
        'calltype' => 'POST',
        'params' => array('customertype'=>"2", 'name'=>"Jan", 'lastname'=>"Kowalski", 'city1'=>"Łódź", 'streetname1'=>"Testowa", 'streetno1'=>"12", 'local1'=>"34", 'zip1'=>"11-123", 'zipcity1'=>"Łódź", 'idcardno'=>"ABC123456", 'pesel'=>"12035612345")
    );
$f_activateMobile = array('method' => "mvno/Mobiles",
        'calltype' => 'POST',
        'params' => array('userid'=>NULL, 'ano'=>'123456789', 'sim_iccid'=>'8948061050000009999', 'ext_services_id'=>'1')
    );

Etap 1: zalogowanie do systemu


    $ch = curl_init(); 

    $request_raw = json_encode($params_auth);
    curl_setopt_array($ch, array(
            CURLOPT_URL => $url.$f_login,
            CURLOPT_CONNECTTIMEOUT => 10,
            CURLOPT_TIMEOUT => 10,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_SSL_VERIFYHOST => false,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $request_raw,
            CURLOPT_HEADER => true,
            CURLOPT_HTTPHEADER => array('Content-Type: application/json; charset=utf-8', 'Content-Length: '.strlen($request_raw)),
        ));

    $response = curl_exec($ch);
    if($errno = curl_errno($ch))
    {
        $error_message = curl_error($ch);
        echo "\r\nERROR: ".$errno.": ".$error_message."\r\n\r\n";
        die();
    }
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($http_code != 200 )
    {
        echo "Nieprawidłowy login lub hasło\r\n";
        die();
    }

Logowanie pomyślne - zapisz ciasteczko sesji dla kolejnych poleceń:

    preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $response, $matches);
    $cookie = implode("; ", $matches[1]);

Etap 2: dodanie użytkownika

    $request_raw = json_encode($f_addUser['params']);
    curl_setopt_array($ch, array(
            CURLOPT_URL => $url.$f_addUser['method'],
            CURLOPT_CUSTOMREQUEST => $f_addUser['calltype'],
            CURLOPT_POST => (($f_addUser['params'] && in_array($f_addUser['calltype'], array("POST", "PUT", "DELETE"))) ? TRUE : FALSE),
            CURLOPT_POSTFIELDS => (($f_addUser['params'] && in_array($f_addUser['calltype'], array("POST", "PUT", "DELETE"))) ? $request_raw : NULL),
            CURLOPT_HEADER => false,
            CURLOPT_COOKIE => $cookie,
            CURLOPT_HTTPHEADER => (($f_addUser['params'] && in_array($f_addUser['calltype'], array("POST", "PUT", "DELETE"))) ? array('Content-Type: application/json; charset=utf-8', 'Content-Length: '.strlen($request_raw)) : array('Content-Type: application/json; charset=utf-8'))
        ));

    $response = curl_exec($ch);
    if($errno = curl_errno($ch))
    {
        $error_message = curl_error($ch);
        echo "\r\nERROR: ".$errno.": ".$error_message."\r\n\r\n";
        die();
    }
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($http_code<200 || $http_code>299)
    {
        echo "\r\nERROR: ".$response."\r\n\r\n";
        die();
    }
    $result = json_decode($response, TRUE);
    echo "Aktywacja konta MVNO: id dodanego użytkownika = $result";

Przypisanie id użytkownika jako parametr do aktywacji konta

    $f_activateMobile['params']['userid'] = $result;

    //Etap 3: aktywacja konta MVNO
    $request_raw = json_encode($f_activateMobile['params']);
    curl_setopt_array($ch, array(
            CURLOPT_URL => $url.$f_activateMobile['method'],
            CURLOPT_CUSTOMREQUEST => $f_activateMobile['calltype'],
            CURLOPT_POST => (($f_activateMobile['params'] && in_array($f_activateMobile['calltype'], array("POST", "PUT", "DELETE"))) ? TRUE : FALSE),
            CURLOPT_POSTFIELDS => (($f_activateMobile['params'] && in_array($f_activateMobile['calltype'], array("POST", "PUT", "DELETE"))) ? $request_raw : NULL),
            CURLOPT_HEADER => false,
            CURLOPT_COOKIE => $cookie,
            CURLOPT_HTTPHEADER => (($f_activateMobile['params'] && in_array($f_activateMobile['calltype'], array("POST", "PUT", "DELETE"))) ? array('Content-Type: application/json; charset=utf-8', 'Content-Length: '.strlen($request_raw)) : array('Content-Type: application/json; charset=utf-8'))
        ));

    $response = curl_exec($ch);
    if($errno = curl_errno($ch))
    {
        $error_message = curl_error($ch);
        echo "\r\nERROR: ".$errno.": ".$error_message."\r\n\r\n";
    }
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($http_code<200 || $http_code>299)
    {
        echo "\r\nERROR: ".$response."\r\n\r\n";
        die();
    }
    $result = json_decode($response, TRUE);

    echo "Aktywacja konta MVNO: id dodanego konta = {$result[id]} / id operacji do śledzenia statusu = {$result[orderid]}";