REST APIv1

API partnerskie

API do integracji proxy mobilnych: zamawianie i przedłużanie portów, zarządzanie dostępem i rozliczenia.

Wartości w przykładach są poglądowe. Aktualne ceny, ID i dane połączenia są zwracane w odpowiedziach API.

Pierwsze kroki

Autoryzacja

API jest dostępne po aktywacji konta partnerskiego. Tworzenie i unieważnianie tokenu jest dostępne wyłącznie w panelu GIGABIT. Nowy token zastępuje poprzedni i jest wyświetlany tylko raz.

Token należy przekazywać w nagłówku żądania HTTP Authorization zgodnie ze schematem Bearer.

HTTP
Authorization: Bearer gbp_PARTNER_TOKEN
Zarządzanie tokenem w panelu ↗

Format zapytań i odpowiedzi

Treść zapytania jest przekazywana w formacie JSON. Przykłady zapytań i odpowiedzi znajdują się przy każdym endpointzie.

ElementFormat i znaczenie
Treść zapytaniaObiekt JSON i Content-Type: application/json. Gdy nie ma parametrów, treść może zostać pominięta.
HTTP 202Operacja została przyjęta. Serwer zwraca id i status_url do sprawdzania statusu.
GET /operations/{id}queued: w kolejce; processing: w toku; ready: zakończona; failed: błąd. Wynik znajduje się w result, przyczyna błędu w error.
DatyISO 8601 ze strefą czasową, np. 2026-12-09T22:59:59+00:00.
KwotyPola _cents: całkowite eurocenty. 4500 = 45,00 EUR.
LimityTreść do 16 KiB; 600 zapytań na godzinę na konto. Przy HTTP 429 czas oczekiwania wskazuje Retry-After.

Odpowiedź poprawna

200 · JSON
{
  "success": true,
  "data": {
    "currency": "EUR",
    "balance_cents": 10000
  }
}

Odpowiedź z błędem

401 · JSON
{
  "success": false,
  "error": "unauthenticated"
}

Saldo i płatności

Zamówienie i przedłużenie przez API obejmuje jeden port na 30 dni. Koszt z indywidualnym rabatem jest pobierany z salda netto. Dostępna kwota z uwzględnieniem limitu kredytowego i rezerwacji jest podana w available_cents.

VAT jest ustalany na podstawie danych rozliczeniowych profilu i doliczany przy doładowaniu przez Stripe. Przy zakupie portów nie jest naliczany ponownie.

Błędy

HTTPerrorOpis
400invalid_rotation_token_requestReset tokenu nie przyjmuje dodatkowych parametrów.
400invalid_jsonNieprawidłowy JSON w treści zapytania.
400invalid_payment_requestNieobsługiwane lub nieprawidłowe parametry zapytania.
400invalid_payment_ordersNieprawidłowy numer lub ID portu.
400invalid_partner_amountKwota nie spełnia ograniczeń.
400invalid_paginationNieprawidłowe parametry paginacji.
400invalid_partner_prefixPrefiks loginów nie spełnia ograniczeń.
400invalid_rotation_intervalNieprawidłowe pola rotation lub rotation_seconds.
401unauthenticatedBrak tokenu, token jest nieprawidłowy lub unieważniony.
403partner_requiredWymagane jest aktywne konto partnerskie.
403payment_method_unavailableMetoda płatności jest niedostępna dla tego konta.
403origin_not_allowedŹródło żądania jest niedozwolone.
404not_foundObiekt nie istnieje lub jest niedostępny dla tego konta.
409insufficient_partner_balanceNiewystarczające środki po uwzględnieniu limitu kredytowego i rezerwacji.
409insufficient_withdrawable_balanceNiewystarczające środki dostępne do zwrotu.
409inventory_changedDostępność portów zmieniła się od odczytu katalogu.
409partner_prefix_takenPrefiks jest już zajęty.
409record_changed_or_in_useWpis został zmieniony lub jest używany przez inną operację.
409payment_busyPowiązana operacja jest w toku.
409rotation_busyZmiana IP jest w toku.
409billing_requiredBrak wymaganych danych rozliczeniowych w profilu.
409rotation_interval_too_shortInterwał jest krótszy niż 20 sekund lub limit serwera portu.
403 / 409order_expiredWynajem jest nieaktywny. Zmiana danych dostępu i IP jest dostępna po przedłużeniu.
429too_many_requestsLimit zapytań został przekroczony. Czas oczekiwania wskazuje Retry-After.
502proxy_server_unavailableSerwer proxy jest tymczasowo niedostępny.
502rotation_sync_pendingZastosowanie ustawienia zmiany IP nie zostało jeszcze potwierdzone.
503database_unavailableBaza danych jest tymczasowo niedostępna.
503stripe_unavailableUsługa płatnicza jest tymczasowo niedostępna.
Operacje

Status operacji

GET

Zwraca status i wynik operacji konta. Szybkie sprawdzenie bez ponownego wykonania.

Parametry

PoleTypOpis
idW ścieżce · WymaganestringID operacji z odpowiedzi HTTP 202.

Przykład zapytania

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Przykład odpowiedzi

200 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Pola odpowiedzi →
Saldo i rozliczenia

Saldo

GET

Bieżące saldo, limit kredytowy, dostępne środki, rabat i ceny partnera.

Treść nie jest wymagana.

Przykład zapytania

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/balance' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Przykład odpowiedzi

200 · application/json
{
  "success": true,
  "data": {
    "currency": "EUR",
    "balance_cents": 10000,
    "reserved_cents": 0,
    "credit_limit_cents": 10000,
    "debt_cents": 0,
    "available_cents": 20000,
    "withdrawable_cents": 10000,
    "discount_percent": 10,
    "prefix": "astra",
    "api_token_hint": "demo12",
    "monthly_net_cents": 4500,
    "payment_method": "card",
    "connection_domains": {
      "host": "",
      "api": ""
    },
    "paid_in_cents": 10000,
    "prices": [
      {
        "currency": "EUR",
        "base_net_cents": 4500,
        "net_cents": 4050,
        "vat_cents": 0,
        "total_cents": 4050,
        "tax_at_topup": true,
        "discount_percent": 10,
        "months": 1,
        "days": 30,
        "pricing_version": 1,
        "tax": {
          "mode": "vat",
          "rate_percent": 23,
          "vat_code": "23",
          "reverse_charge": false
        }
      }
    ],
    "topup_tax": {
      "mode": "vat",
      "rate_percent": 23,
      "vat_code": "23",
      "reverse_charge": false
    },
    "can_order_new_ports": true
  }
}
Pola odpowiedzi →

Doładowanie salda

POST

Tworzy link do płatności przez Stripe. amount_cents to kwota zasilenia salda w eurocentach; total_cents to kwota do zapłaty z uwzględnieniem należnego VAT.

Parametry

PoleTypOpis
amount_centsTreść JSON · Wymaganeinteger100-10000000Od 1 do 100 000 EUR w całkowitych eurocentach.

Przykład zapytania

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/topups' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "amount_cents": 10000
}'

Przykład odpowiedzi

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Wynik po zakończeniu

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "id": "ptop_0123456789abcdef0123456789abcdef",
      "state": "pending",
      "url": "https://checkout.stripe.com/c/pay/EXAMPLE_SESSION",
      "amount_cents": 10000,
      "vat_cents": 2300,
      "total_cents": 12300,
      "currency": "EUR"
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Pola odpowiedzi →

Status doładowania

GET

Zwraca status doładowania konta. paid potwierdza zaksięgowanie środków. Sam powrót ze strony Stripe nie potwierdza płatności.

Statusy: creating, pending, paid, expired, failed.

Parametry

PoleTypOpis
idW ścieżce · WymaganestringID doładowania z POST /topups.

Przykład zapytania

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/topups/ptop_0123456789abcdef0123456789abcdef' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Przykład odpowiedzi

200 · application/json
{
  "success": true,
  "data": {
    "id": "ptop_0123456789abcdef0123456789abcdef",
    "state": "pending",
    "url": "https://checkout.stripe.com/c/pay/EXAMPLE_SESSION",
    "amount_cents": 10000,
    "vat_cents": 2300,
    "total_cents": 12300,
    "currency": "EUR"
  }
}
Pola odpowiedzi →

Historia transakcji

GET

Operacje od najnowszych do najstarszych, źródła, komentarze, kwoty i saldo po każdej operacji. Techniczne rezerwacje zakupu są domyślnie ukryte.

Parametry

PoleTypOpis
offsetW zapytaniu · Opcjonalneinteger0-∞Liczba pomijanych wpisów.
limitW zapytaniu · Opcjonalneinteger1-100Rozmiar strony: 1-100.
include_reservationsW zapytaniu · Opcjonalnestring11 uwzględnia purchase_reserve i purchase_release.

Przykład zapytania

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/transactions?offset=0&limit=30' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Przykład odpowiedzi

200 · application/json
{
  "success": true,
  "data": {
    "items": [
      {
        "id": "ptop_0123456789abcdef0123456789abcdef:credit",
        "created_at": "2026-11-09T12:05:00+00:00",
        "currency": "EUR",
        "operation": "topup",
        "amount_cents": 10000,
        "reserved_delta_cents": 0,
        "source": "stripe",
        "comment": "",
        "reference": "ptop_0123456789abcdef0123456789abcdef",
        "balance_after_cents": 10000,
        "reserved_after_cents": 0,
        "sequence": 1
      }
    ],
    "total": 1,
    "offset": 0,
    "limit": 30
  }
}
Pola odpowiedzi →

Wniosek o zwrot środków

POST

Tworzy wniosek i rezerwuje kwotę do jego rozpatrzenia. Kwota dostępna do wypłaty jest podana w withdrawable_cents; nie obejmuje limitu kredytowego ani bezzwrotnych rekompensat.

Po przetworzeniu wniosku result.state=requested oznacza oczekiwanie na decyzję. Operacja pozostaje processing do potwierdzenia wypłaty lub odrzucenia.

Parametry

PoleTypOpis
amount_centsTreść JSON · Wymaganeinteger100-100000000Kwota EUR w centach, nie większa niż dostępna do wypłaty.
commentTreść JSON · Wymaganestring1-2000Dane do wypłaty lub wyjaśnienie. Niepusty tekst po usunięciu skrajnych spacji.

Przykład zapytania

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/withdrawals' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "amount_cents": 5000,
  "comment": "Please contact me to confirm payment details."
}'

Przykład odpowiedzi

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Wynik po zakończeniu

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "id": "pout_0123456789abcdef0123456789abcdef",
      "state": "paid"
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Pola odpowiedzi →
Katalog i zamówienia

Dostępne porty

GET

Dostępne numery portów pogrupowane według operatora i lokalizacji.

Dostępność jest sprawdzana podczas składania zamówienia. Wyświetlenie katalogu nie rezerwuje portów.

Treść nie jest wymagana.

Przykład zapytania

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/catalog' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Przykład odpowiedzi

200 · application/json
{
  "success": true,
  "data": {
    "items": [
      {
        "operator": {
          "id": "operator-orange",
          "name": "Orange"
        },
        "location": {
          "id": "location-warsaw",
          "name": "Warsaw"
        },
        "ports": [
          {
            "id": "b1c2d3e4f5a60123456789abcdef0123",
            "number": 10001
          },
          {
            "id": "b2c3d4e5f6a70123456789abcdef0123",
            "number": 10002
          }
        ],
        "available": 2
      }
    ],
    "prices": [
      {
        "currency": "EUR",
        "base_net_cents": 4500,
        "net_cents": 4050,
        "vat_cents": 0,
        "total_cents": 4050,
        "tax_at_topup": true,
        "discount_percent": 10,
        "months": 1,
        "days": 30,
        "pricing_version": 1,
        "tax": {
          "mode": "vat",
          "rate_percent": 23,
          "vat_code": "23",
          "reverse_charge": false
        }
      }
    ]
  }
}
Pola odpowiedzi →

Zamówienie portu

POST

Zamówienie jednego dostępnego portu na 30 dni według numeru lub ID z katalogu. Koszt jest pobierany z salda.

Dłuższa operacja zwraca HTTP 202 i id utworzony przez serwer. Status i wynik są dostępne przez GET /operations/{id}. Sprawdzenie statusu nie tworzy nowej operacji.

Parametry

PoleTypOpis
port_numberTreść JSON · Opcjonalneinteger1-65535Numer portu z katalogu. Wymagane jest jedno z pól: port_number lub port_id.
port_idTreść JSON · Opcjonalnestring1-120ID portu z katalogu, zamiast port_number.

Przykład zapytania

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "port_number": 10001
}'

Przykład odpowiedzi

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Wynik po zakończeniu

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "id": "partner_0123456789abcdef0123456789abcdef",
      "state": "ready",
      "error": null,
      "order_ids": [
        "a1b2c3d4e5f60123456789abcdef0123"
      ],
      "amount_cents": 4050,
      "currency": "EUR",
      "price": {
        "currency": "EUR",
        "base_net_cents": 4500,
        "net_cents": 4050,
        "vat_cents": 0,
        "total_cents": 4050,
        "tax_at_topup": true,
        "discount_percent": 10,
        "months": 1,
        "days": 30,
        "pricing_version": 1,
        "tax": {
          "mode": "vat",
          "rate_percent": 23,
          "vat_code": "23",
          "reverse_charge": false
        }
      }
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Pola odpowiedzi →

Lista portów

GET

Bieżące porty konta: termin wynajmu, dane połączenia, IP i timer zmiany IP.

Zmiana IP odbywa się przez zapytanie GET pod pełny adres rotation_url z danych portu. Nagłówek Authorization nie jest wymagany. Link zawiera już token portu.

Treść nie jest wymagana.

Przykład zapytania

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Przykład odpowiedzi

200 · application/json
{
  "success": true,
  "data": {
    "items": [
      {
        "id": "a1b2c3d4e5f60123456789abcdef0123",
        "port_id": "b1c2d3e4f5a60123456789abcdef0123",
        "number": 10001,
        "host": "l1.gigabit.ltd",
        "username": "astra_a1b2c3d4e5f",
        "proxy_password": "EXAMPLE_ONLY_22_CHARS_x",
        "status": "active",
        "expires": "2026-12-09T22:59:59+00:00",
        "operator": "Orange",
        "cityName": "Warsaw",
        "ip": "198.51.100.42",
        "rotation_url": "https://api.gigabit.ltd/change_ip?token=EXAMPLE_ROTATION_TOKEN_REPLACE_ME",
        "rotation": true,
        "rotation_seconds": 120,
        "connection_options": {
          "custom": {
            "host": "proxy.example.com",
            "rotation_url": "https://api.example.com/change_ip?token=EXAMPLE_ROTATION_TOKEN_REPLACE_ME"
          }
        }
      }
    ]
  }
}
Pola odpowiedzi →

Dane portu

GET

Dane zamówienia przypisanego do konta. Niedostępne lub nieistniejące zamówienie zwraca 404.

Zmiana IP odbywa się przez zapytanie GET pod pełny adres rotation_url z danych portu. Nagłówek Authorization nie jest wymagany. Link zawiera już token portu.

Parametry

PoleTypOpis
idW ścieżce · WymaganestringID zamówienia (id) lub portu (port_id) z listy portów.

Przykład zapytania

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/a1b2c3d4e5f60123456789abcdef0123' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Przykład odpowiedzi

200 · application/json
{
  "success": true,
  "data": {
    "id": "a1b2c3d4e5f60123456789abcdef0123",
    "port_id": "b1c2d3e4f5a60123456789abcdef0123",
    "number": 10001,
    "host": "l1.gigabit.ltd",
    "username": "astra_a1b2c3d4e5f",
    "proxy_password": "EXAMPLE_ONLY_22_CHARS_x",
    "status": "active",
    "expires": "2026-12-09T22:59:59+00:00",
    "operator": "Orange",
    "cityName": "Warsaw",
    "ip": "198.51.100.42",
    "rotation_url": "https://api.gigabit.ltd/change_ip?token=EXAMPLE_ROTATION_TOKEN_REPLACE_ME",
    "rotation": true,
    "rotation_seconds": 120,
    "connection_options": {
      "custom": {
        "host": "proxy.example.com",
        "rotation_url": "https://api.example.com/change_ip?token=EXAMPLE_ROTATION_TOKEN_REPLACE_ME"
      }
    }
  }
}
Pola odpowiedzi →

Przedłużenie portu

POST

Przedłuża wynajem jednego portu o 30 dni z płatnością z salda. Wymagany jest tylko numer lub ID portu w adresie.

Dłuższa operacja zwraca HTTP 202 i id utworzony przez serwer. Status i wynik są dostępne przez GET /operations/{id}. Sprawdzenie statusu nie tworzy nowej operacji.

Parametry

PoleTypOpis
idW ścieżce · WymaganestringNumer lub ID portu. Akceptowany jest też id zamówienia z GET /orders.

Przykład zapytania

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/10001/renew' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{}'

Przykład odpowiedzi

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Wynik po zakończeniu

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "id": "partner_0123456789abcdef0123456789abcdef",
      "state": "ready",
      "error": null,
      "order_ids": [
        "a1b2c3d4e5f60123456789abcdef0123"
      ],
      "amount_cents": 4050,
      "currency": "EUR",
      "price": {
        "currency": "EUR",
        "base_net_cents": 4500,
        "net_cents": 4050,
        "vat_cents": 0,
        "total_cents": 4050,
        "tax_at_topup": true,
        "discount_percent": 10,
        "months": 1,
        "days": 30,
        "pricing_version": 1,
        "tax": {
          "mode": "vat",
          "rate_percent": 23,
          "vat_code": "23",
          "reverse_charge": false
        }
      }
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Pola odpowiedzi →
Dostęp i zmiana IP

Reset tokenu zmiany IP

POST

Tworzy nowy token zmiany IP i zwraca gotowy link. Poprzedni token i wszystkie linki z nim natychmiast przestają działać. Hasło proxy i timer pozostają bez zmian.

Odpowiedź jest zwracana od razu, bez operacji w tle. Nowy link jest również dostępny w polu rotation_url danych portu.

Parametry

PoleTypOpis
idW ścieżce · WymaganestringID zamówienia z pola id na liście portów.

Przykład zapytania

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/a1b2c3d4e5f60123456789abcdef0123/rotation-token' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{}'

Przykład odpowiedzi

200 · application/json
{
  "success": true,
  "data": {
    "rotation_token": "0123456789abcdef0123456789abcdef",
    "rotation_url": "https://api.gigabit.ltd/change_ip?token=0123456789abcdef0123456789abcdef"
  }
}

Zmiana danych dostępu według ID

POST

Serwer generuje nowe hasło. Przy change_login=true generuje też nowy login z bieżącym prefiksem partnera. Dostępne wyłącznie dla aktywnego wynajmu.

Nowe dane są dostępne w result po zastosowaniu. Błąd operation_superseded oznacza, że nowsze polecenie zmieniło dane dostępu.

Parametry

PoleTypOpis
idW ścieżce · WymaganestringID zamówienia (id) lub portu (port_id) z listy portów.
change_loginTreść JSON · Opcjonalnebooleantrue - nowy login z bieżącym prefiksem i nowe hasło. false - tylko hasło. Starszy wspólny dostęp otrzymuje osobne dane także bez tej flagi.

Przykład zapytania

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/a1b2c3d4e5f60123456789abcdef0123/password' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "change_login": true
}'

Przykład odpowiedzi

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Wynik po zakończeniu

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "state": "synced",
      "username": "astra_b2c3d4e5f6a",
      "password": "EXAMPLE_NEW_PASSWORD_xx"
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Pola odpowiedzi →

Timer zmiany IP

GET

Bieżący stan timera. Przy rotation=true zwracane jest rotation_seconds. Gdy timer jest wyłączony, zwracane jest tylko rotation=false.

Parametry

PoleTypOpis
idW ścieżce · WymaganestringID zamówienia (id) lub portu (port_id) z listy portów.

Przykład zapytania

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/a1b2c3d4e5f60123456789abcdef0123/rotation' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Przykład odpowiedzi

200 · application/json
{
  "success": true,
  "data": {
    "rotation": true,
    "rotation_seconds": 120
  }
}
Pola odpowiedzi →

Ustawienia timera

PUT

Włączenie wymaga rotation=true oraz rotation_seconds, liczby całkowitej od 20 do 86400 sekund. Wartość poniżej 20 zwraca błąd rotation_interval_too_short. Wyłączenie wymaga tylko rotation=false.

Operacja pozostaje processing do potwierdzenia zastosowania timera.

Parametry

PoleTypOpis
idW ścieżce · WymaganestringID zamówienia (id) lub portu (port_id) z listy portów.
rotationTreść JSON · Wymaganebooleantrue włącza timer; false wyłącza.
rotation_secondsTreść JSON · Opcjonalneinteger20-86400Wymagane przy rotation=true. Przy rotation=false pole należy pominąć.

Przykład zapytania

cURL
curl --request PUT \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/a1b2c3d4e5f60123456789abcdef0123/rotation' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "rotation": true,
  "rotation_seconds": 120
}'

Przykład odpowiedzi

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Wynik po zakończeniu

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "rotation": true,
      "rotation_seconds": 120
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Pola odpowiedzi →
Profil partnera

Prefiks loginów

PUT

Prefiks to początek loginów portów, np. nazwa marki. Loginy są generowane w formacie prefix_random: przy prefix=astra nowy port otrzyma login taki jak astra_a1b2c3d4e5f. Losowa część jest tworzona osobno dla każdego portu.

Zmiana prefiksu nie zmienia już wydanych loginów. Nowe porty oraz zmiana loginu przez change_login=true używają bieżącego prefiksu. Prefiks musi być unikalny; zajęty zwraca 409 partner_prefix_taken.

Parametry

PoleTypOpis
prefixTreść JSON · Wymaganestring2-242-24 znaki: litery łacińskie, cyfry i myślnik; pierwszy znak to litera. Normalizowany do małych liter. proxy i gigabit są zastrzeżone.

Przykład zapytania

cURL
curl --request PUT \
  --url 'https://api.gigabit.ltd/api/partner/v1/profile' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "prefix": "astra"
}'

Przykład odpowiedzi

200 · application/json
{
  "success": true,
  "data": {
    "prefix": "astra"
  }
}
Pola odpowiedzi

Środki i statusy

Pola obiektu data. Odpowiedź może być rozszerzana o nowe pola bez zmiany wersji API.

PoleTypOpis
balance_centsintegerBieżące saldo netto; może być ujemne.
credit_limit_centsintegerUzgodniona maksymalna kwota debetu.
reserved_centsintegerŚrodki zarezerwowane na niezakończone operacje, nadal wliczone w saldo.
available_centsintegerDostępne na zamówienia: saldo + limit − rezerwacje, minimum 0.
withdrawable_centsintegerŚrodki konta dostępne do zwrotu po uwzględnieniu rezerwacji.
debt_cents / paid_in_centsintegerOdpowiednio zadłużenie i suma wszystkich potwierdzonych wpłat.
currency / monthly_net_cents / discount_percentstring / integerEUR; cena bazowa 30 dni przed rabatem; rabat partnera w procentach.
prices[] / topup_taxarray / objectCena na 30 dni i zasady podatkowe doładowania. Przy niepełnych danych prices jest puste, pricing_error=billing_required.
can_order_new_portsbooleanCzy dostępna kwota wystarcza na jeden port na 30 dni. Nie gwarantuje dostępności.
payment_methodstringMetoda doładowania: card (Stripe).
prefix / api_token_hint / connection_domainsstring / objectPrefiks nowych loginów, końcówka tokenu (nie sam token) i skonfigurowane domeny host/api. Pusty ciąg oznacza brak konfiguracji domeny.

Cena portu

Pola obiektu data. Odpowiedź może być rozszerzana o nowe pola bez zmiany wersji API.

PoleTypOpis
currency / base_net_centsstring / integerEUR i bazowa cena netto wybranego okresu przed rabatem.
net_cents / total_centsintegerCena netto jednego portu za okres po rabacie; obciążenie salda.
vat_cents / tax_at_topupinteger / booleanPrzy zakupie vat_cents=0, tax_at_topup=true: VAT uwzględnia się przy doładowaniu.
months / days / discount_percent / pricing_versionintegerOkres 1 miesiąca (30 dni), indywidualny rabat i wersja ceny.
taxobjectmode, rate_percent, vat_code, reverse_charge. Profil podatkowy doładowania, nie dodatkowe obciążenie za port.

Operacja zakupu / przedłużenia

Pola obiektu data. Odpowiedź może być rozszerzana o nowe pola bez zmiany wersji API.

PoleTypOpis
id / state / errorstring / nullID operacji, status i kod błędu (null przy braku błędu).
order_ids[]string[]ID utworzonych lub przedłużonych zamówień dla GET /orders/{id}.
amount_cents / currency / priceinteger / string / objectKwota obciążenia netto, waluta EUR i cena portu zapisana dla operacji.

Port i dane dostępu

Pola obiektu data. Odpowiedź może być rozszerzana o nowe pola bez zmiany wersji API.

PoleTypOpis
id / port_id / numberstring / integerID zamówienia, ID portu z katalogu i numer portu.
host / username / proxy_passwordstringHost, login i hasło do połączenia z proxy.
status / expiresstringactive lub due; data zakończenia wynajmu w ISO 8601.
operator / cityName / ipstringOperator, miasto i bieżący wyjściowy IP. ip może być pusty, gdy sprawdzenie jest niedostępne.
rotation_urlstringZmiana IP odbywa się przez zapytanie GET pod pełny adres rotation_url z danych portu. Nagłówek Authorization nie jest wymagany. Link zawiera już token portu.
rotation / rotation_secondsboolean / integerCzy timer jest włączony; interwał w sekundach jest zwracany tylko przy rotation=true.
connection_optionsobjectDodatkowe adresy połączenia, jeśli skonfigurowane: ip i custom, każdy z host i rotation_url.

Timer zmiany IP

Pola obiektu data. Odpowiedź może być rozszerzana o nowe pola bez zmiany wersji API.

PoleTypOpis
rotationbooleantrue oznacza włączony timer; false wyłączony.
rotation_secondsintegerInterwał w sekundach, od 20 do 86400. Zwracany tylko przy rotation=true.

Doładowanie salda

Pola obiektu data. Odpowiedź może być rozszerzana o nowe pola bez zmiany wersji API.

PoleTypOpis
id / state / urlstring / nullStripe: ID, status, link Checkout. url może być null podczas tworzenia płatności.
amount_cents / vat_cents / total_cents / currencyinteger / stringStripe: kwota na saldo, VAT, suma do zapłaty i EUR.

Transakcja

Pola obiektu data. Odpowiedź może być rozszerzana o nowe pola bez zmiany wersji API.

PoleTypOpis
items[] / total / offset / limitarray / integerWpisy, łączna liczba z uwzględnieniem filtra rezerwacji, przesunięcie i rozmiar strony.
id / created_at / sequence / currencystring / integerID wpisu, data, numer sekwencyjny i EUR.
operation / sourcestringOperacja: topup, purchase, renewal, correction, compensation, credit_limit, withdrawal_reserve, withdrawal_paid, withdrawal_rejected; techniczne purchase_reserve/purchase_release na żądanie. Źródła: stripe, admin, api, customer, system.
amount_cents / reserved_delta_centsintegerZmiana salda i rezerwacji. Obciążenie jest ujemne. Rezerwacja może mieć amount_cents=0; nie jest wpłatą.
balance_after_cents / reserved_after_centsintegerSaldo i rezerwacja po tym wpisie.
comment / referencestring / nullKomentarz tekstowy i powiązana płatność lub operacja. Komentarz może być pusty.

Operacja w tle

Pola obiektu data. Odpowiedź może być rozszerzana o nowe pola bez zmiany wersji API.

PoleTypOpis
id / status_urlstringID operacji utworzony przez serwer i adres sprawdzania statusu.
statestringqueued, processing, ready lub failed.
resultobject / nullWynik operacji: dane dostępu, zamówienie lub link do płatności zależnie od metody.
error / created_atstring / nullKod błędu w razie niepowodzenia i czas utworzenia operacji.