REST API · OpenAPI 3.1

API Tier1.shop

Conectați serviciul sau agentul AI: înregistrări, tarife, comenzi, linkuri și statusul plăților printr-un singur API. Datele clienților sunt accesibile doar prin cheia lor revocabilă.

URL de bază API
https://tier1.shop/wp-json/tier1-api/v1

primii pași

Contul există deja

Creați o cheie

Deschide «API și Conexiuni» în panoul de control sau solicitați un link de creare a cheii prin e-mail prin intermediul POST /api-key-requests.

Client nou

Confirmă emailul

Agentul apelează POST /registration-intents. Urmați linkul din e-mail pentru a vă confirma adresa; doar atunci vor fi create contul și cheia. Telegram poate fi adăugat ulterior.

Prima comandă — cinci pași

  1. Alegeți un plan.GET /catalog/tariffs și GET /balances va afișa prețurile actuale și disponibilitatea.
  2. Confirmă detaliile.Acordați-vă acordul cu agentul asupra cantității, URL-urilor, textelor de ancoră și valutei înainte de a crea procesul de checkout.
  3. Obține linkul de plată.POST /checkout-intents va returna un URL unic; plata este procesată doar pe site.
  4. Verificați plata.GET /checkout-intents/{id} va afișa starea și numărul comenzii WooCommerce.
  5. Deschide linkurile.GET /orders/by-wc/{id} vor găsi comenzile interne; placement_progress va afișa stadiul de execuție.
Important: numărul de achiziție din e-mail și ID-ul comenzii din cont sunt valori diferite. Pentru numărul de e-mail utilizați /orders/by-wc/{id}, pentru ID-ul intern folosiți /orders/{id}.

Autorizare

Trimiteți cheia în antetul HTTPS. Nu o introduceți în URL, în prompturi publice sau în jurnale. Cheia poate fi revocată din cont; textul complet este afișat doar în momentul creării.

Authorization: Bearer t1c_sk_YOUR_KEY
Permisiuni cheie (scope-uri)8
profile:readProfil și Starea Conexiunii
balance:readSolduri Serviciu și Portofel
orders:readVezi Comenzi
links:readVezi Linkuri
catalog:readCataloage și Tarife
orders:writeCompletare în masă și trimitere comenzi
links:writeURL-uri, Anchor-uri, Text înconjurător și Trimitere
checkout:createCreare link-uri de plată securizate

Cheia nu permite agentului să deducă fonduri direct din portofel. Pentru solicitările de mutare, un Idempotency-Key de 8–128 de caractere este necesar. Dacă răspunsul este pierdut, repetați aceeași cerere cu aceeași cheie; pentru o acțiune nouă, creați una nouă.

Metode API

Metodele sunt organizate în 10 grupuri. Deschideți grupul necesar pentru parametri și un exemplu de răspuns; contractul complet al mașinii se află în OpenAPI JSON.

23 metode

Замены URL/анкора 3

GET/links/{id}/replacementУсловия платной замены размещённой ссылки: доступность, остаток замен, текущие данные и актуальные товары. Денежных списаний нет. При нехватке купите замены через checkout и дождитесь replacement_credits_fulfilled=true.
Acces: BearerScope: links:read

Exemplu de răspuns

{
    "link_id": 456,
    "eligible": true,
    "credits_available": 1,
    "pending_replacement": false,
    "purchase_offers": []
}
POST/links/{id}/replacementПосле согласия клиента сохранить новые URL/анкор. Резервирует одну замену, но ещё не отправляет её в работу. expected_* берутся точно из свежих current_*; кошелёк не списывается.
Acces: Bearer + Idempotency-KeyScope: links:write

Solicită JSON

{
    "confirmed": true,
    "expected_url": "https://example.com/old",
    "expected_anchor": "старый анкор",
    "url": "https://example.com/new",
    "anchor": "новый анкор"
}

Exemplu de răspuns

{
    "saved": true,
    "link": {
        "id": 456
    },
    "wallet_was_charged": false
}
POST/links/{id}/replacement/submitОтправить только эту сохранённую замену. expected_* — уже новые данные. Проверяйте submission.submitted, submission.errors и статус; HTTP 200 сам по себе не означает принятия задачи. Это не замена донора.
Acces: Bearer + Idempotency-KeyScope: links:write

Solicită JSON

{
    "confirmed": true,
    "expected_url": "https://example.com/new",
    "expected_anchor": "новый анкор"
}

Exemplu de răspuns

{
    "submission": {
        "submitted": 1,
        "errors": []
    },
    "link": {
        "id": 456,
        "status": "revision"
    }
}

Discovery 2

GET/capabilitiesCapabilitățile API și link-urile actuale de conectare.
Acces: NuScope: —

Exemplu de răspuns

{
    "name": "Tier1.shop API",
    "api_enabled": true,
    "public_registration": true
}
GET/openapi.jsonSpecificația completă OpenAPI 3.1.
Acces: NuScope: —

Exemplu de răspuns

{
    "openapi": "3.1.0",
    "info": {
        "title": "Tier1.shop Client API"
    }
}

Înregistrare 3

POST/registration-intentsÎncepeți înregistrarea pentru un client nou cu confirmarea obligatorie a e-mailului.
Acces: NuScope: —

Solicită JSON

{
    "email": "client@example.com",
    "telegram_username": "@client",
    "locale": "ru",
    "issue_api_key": true
}

Exemplu de răspuns

{
    "accepted": true,
    "request_id": "…",
    "status_token": "…",
    "status": "pending_email",
    "expires_in": 86400
}
GET/registration-intents/{id}?status_token={token}Verificați starea unei înregistrări specifice.
Acces: Status tokenScope: —

Exemplu de răspuns

{
    "status": "pending_email|email_verified|expired",
    "email_verified": false,
    "telegram_status": "not_requested|pending_bot_message|verified"
}
POST/api-key-requestsSolicitați un link de creare a unei chei unice pentru un cont existent.
Acces: NuScope: —

Solicită JSON

{
    "email": "client@example.com",
    "name": "Мой агент"
}

Exemplu de răspuns

{
    "accepted": true,
    "next_action": "…"
}

Cont 2

GET/profileProfil, confirmarea e-mailului și toate canalele de Telegram.
Acces: BearerScope: profile:read

Exemplu de răspuns

{
    "account": {
        "email": "client@example.com",
        "email_verified": true,
        "telegram_username": "@client",
        "telegram_usernames": [
            "@client",
            "@manager"
        ]
    }
}
GET/balances?geo=allportofele RUB/$ și servicii RU/internaționale neutilizate.
Acces: BearerScope: balance:read

Exemplu de răspuns

{
    "wallets": {
        "rub": {
            "currency": "RUB",
            "amount_minor": 0
        },
        "usd": {
            "currency": "USD",
            "amount_minor": 0
        }
    },
    "service_balances": []
}

Comenzi 3

GET/orders?geo=all&page=1&per_page=20Listă paginată a comenzilor din cont. per_page este limitat la 50: continuați prin next_page.
Acces: BearerScope: orders:read

Exemplu de răspuns

{
    "orders": [
        {
            "cabinet_order_id": 123,
            "wc_order_id": 456,
            "placement_progress": {
                "completed": 2,
                "total": 3,
                "fully_placed": false
            }
        }
    ],
    "page": 1,
    "per_page": 20,
    "has_more": false,
    "next_page": null
}
GET/orders/{id}O singură comandă și linkuri după cabinet_order_id, nu după numărul WooCommerce din e-mail.
Acces: BearerScope: orders:read

Exemplu de răspuns

{
    "order": {
        "cabinet_order_id": 123,
        "wc_order_id": 456,
        "geo": "ru"
    },
    "links": []
}
GET/orders/by-wc/{id}Toate comenzile interne și link-urile după numărul WooCommerce al clientului.
Acces: BearerScope: orders:read

Exemplu de răspuns

{
    "wc_order_id": 456,
    "count": 2,
    "orders": [
        {
            "order": {
                "cabinet_order_id": 123
            },
            "links": []
        }
    ]
}

Linkuri 1

GET/links?geo=all&page=1&per_page=20Linkuri cu filtre de geo, status și link_type; continuați via next_page.
Acces: BearerScope: links:read

Exemplu de răspuns

{
    "links": [],
    "page": 1,
    "per_page": 20,
    "total": 0,
    "has_more": false,
    "next_page": null
}

Catalog 2

GET/catalog/tariffs?geo=ruProduse, prețuri, valute actuale și compoziția exactă a sloturilor.
Acces: BearerScope: catalog:read

Exemplu de răspuns

{
    "geo": "ru",
    "currency": "RUB",
    "tariffs": [
        {
            "product_id": 3708,
            "name": "…",
            "price": {
                "amount_minor": 200000
            }
        }
    ]
}
GET/catalog/burzh-igamingSite-uri de donatori iGaming anonimizate, metrici, preț și sloturi disponibile.
Acces: BearerScope: catalog:read

Exemplu de răspuns

{
    "donors": [],
    "count": 0,
    "price": {
        "currency": "USD",
        "amount_minor": 9400
    }
}

Ciorne 3

PATCH/links/{id}Modifică URL-ul, textul anchor, textul din jur sau programarea fără a trimite link-ul pentru procesare.
Acces: Bearer + Idempotency-KeyScope: links:write

Solicită JSON

{
    "url": "https://example.com/page",
    "anchor": "пример",
    "context_text": "Окружающий текст с анкором пример.",
    "scheduled_at": "2026-09-01T09:00:00Z"
}

Exemplu de răspuns

{
    "link": {
        "id": 456,
        "status": "awaiting_confirmation"
    }
}
PUT/links/{id}Alias PATCH pentru clienții care trimit un set parțial de câmpuri modificabile.
Acces: Bearer + Idempotency-KeyScope: links:write

Solicită JSON

{
    "anchor": "новый анкор"
}

Exemplu de răspuns

{
    "link": {
        "id": 456,
        "status": "awaiting_confirmation"
    }
}
POST/orders/{id}/bulk-updateCompletare în masă a rândurilor de comandă fără trimitere în producție.
Acces: Bearer + Idempotency-KeyScope: orders:write

Solicită JSON

{
    "links": [
        {
            "url": "https://example.com/a",
            "anchor": "ключ"
        },
        {
            "url": "https://example.com/b",
            "anchor": "другой ключ"
        }
    ]
}

Exemplu de răspuns

{
    "updated": 2,
    "errors": []
}

Trimite 2

POST/links/{id}/submitTrimite un singur link gata în producție după confirmarea clientului.
Acces: Bearer + Idempotency-KeyScope: links:write

Solicită JSON

[]

Exemplu de răspuns

{
    "link": {
        "id": 456,
        "status": "in_progress"
    }
}
POST/orders/{id}/submit-allTrimite toate rândurile de comenzi gata după confirmarea clientului.
Acces: Bearer + Idempotency-KeyScope: orders:write

Solicită JSON

[]

Exemplu de răspuns

{
    "submitted": 2,
    "skipped": 0
}

Plată 2

POST/checkout-intentsCreați un link securizat de utilizare unică către pagina standard de checkout; nu se percep taxe.
Acces: Bearer + Idempotency-KeyScope: checkout:create

Solicită JSON

{
    "geo": "ru",
    "items": [
        {
            "product_id": 3708,
            "quantity": 1
        }
    ],
    "links": [
        {
            "type": "yearly",
            "url": "https://example.com/page",
            "anchor": "пример"
        }
    ]
}

Exemplu de răspuns

{
    "intent_id": "32-символьный ID",
    "checkout_url": "https://tier1.shop/?t1c_agent_checkout=…",
    "expires_at": "…",
    "summary": {
        "currency": "RUB",
        "total_minor": 200000
    },
    "payment_preview": {
        "wallet_available_minor": 0,
        "nominal_wallet_gap_minor": 200000,
        "final_amount_at_checkout": true
    }
}
GET/checkout-intents/{id}Verificați plată și apariția comenzii în cont prin intent_id fără a redeschide link-ul unic.
Acces: BearerScope: checkout:create

Exemplu de răspuns

{
    "intent_id": "…",
    "state": "paid",
    "wc_order_id": 456,
    "cabinet_order_ids": [
        123
    ],
    "fulfilment_pending": false
}

Dacă solicitarea a eșuat

400 / 422Corectează parametrii. Nu repeta aceeași cerere invalidă.
401 / 403Verificați cheia și permisiunile acesteia; creați una nouă dacă este necesar.
404Verificați numărul și tipul ID-ului. Comenzile terților nu sunt dezvăluite.
409Actualizați starea comenzii sau folosiți o cheie nouă pentru o acțiune nouă.
429 / 5xxAșteptați și încercați din nou. Pentru o cerere de mutare, păstrați același Idempotency-Key și JSON.

Listele returnează maximum 50 de rânduri pe pagină. Dacă has_more=true, mergeți la next_page. Suma preliminară din API nu înlocuiește suma finală și metodele de plată disponibile la finalizarea comenzii.

Aveți nevoie de MCP în loc de REST API?

Aceeași cheie revocabilă funcționează pentru clientul MCP cu headere HTTP. De asemenea, vă puteți conecta prin OAuth dacă aplicația permite acest lucru.

Deschide instrucțiunile MCP