{
    "openapi": "3.1.0",
    "info": {
        "title": "Metoda — domeni, mašinski API",
        "version": "1.4.0",
        "summary": "Registracija, prenos i upravljanje domenima za programe i AI agente.",
        "description": "**English summary.** Domain API of Metoda d.o.o., accredited RNIDS registrar for .rs and .срб (Serbia) plus 40 international extensions. Prices (`GET /cenovnik`), availability (`GET /domeni/slobodan`) and the all-extensions search (`GET /pretraga?ime=name`) need no key. Ordering, renewal and transfer need a key issued by the account owner at https://domeni.metoda.rs → API pristup (`Authorization: Bearer mtd_live_...`). Field names and messages are Serbian; the human-readable guide is https://domeni.metoda.rs/api and a short machine summary is https://domeni.metoda.rs/llms.txt.\n\nNamenjen je programima koji rade u ime vlasnika naloga — bez pretraživača i bez prijave lozinkom.\n\n**Bez ključa.** `GET /pretraga?ime=mojafirma` (sve ekstenzije sa cenama i dostupnošću), `GET /cenovnik` i `GET /domeni/slobodan?domen=x.rs` rade bez ključa: 60 poziva u minuti po adresi, a žive provere kod RNIDS-a dele zajednički budžet (odgovor tada nosi izvor „odlozeno“ — ponovite za nekoliko minuta). Sa ključem važe granice ključa.\n\n**Prijava.** Ključ izdaje vlasnik naloga na https://domeni.metoda.rs → API pristup. Šalje se kao `Authorization: Bearer mtd_live_...`. Pun ključ se prikazuje samo jednom; kod nas ostaje samo njegov otisak. Ključ se povlači istim ekranom i prestaje da radi odmah.\n\n**Plaćanje.** Sredstva se ne drže kod nas. Poručivanje vraća link za plaćanje karticom (Stripe) i podatke za uplatu po pozivu na broj. Podaci kartice se unose kod Stripe-a i kroz ovaj API ne prolaze. Po evidentiranoj uplati domen registrujemo sami.\n\n**Ponavljanje zahteva.** Uz svako poručivanje obavezno je zaglavlje `Idempotency-Key`. Ponovljen zahtev sa istim ključem vraća prvi odgovor i ne pravi drugu porudžbinu.\n\n**Ograničenja.** 120 poziva u minuti po ključu. Svaki odgovor nosi `X-Zahtev-Id`.",
        "contact": {
            "name": "Metoda podrška",
            "email": "podrska@metoda.rs",
            "url": "https://domeni.metoda.rs/"
        }
    },
    "servers": [
        {
            "url": "https://domeni.metoda.rs/v1",
            "description": "produkcija"
        }
    ],
    "externalDocs": {
        "description": "Strana za programere i AI agente (sa živom probom bez ključa)",
        "url": "https://domeni.metoda.rs/api"
    },
    "security": [
        {
            "kljuc": []
        }
    ],
    "tags": [
        {
            "name": "Opšte",
            "description": "Provera veze, podaci naloga, cenovnik."
        },
        {
            "name": "Domeni",
            "description": "Dostupnost, spisak, nejmserveri."
        },
        {
            "name": "Poručivanje",
            "description": "Registracija, obnova i prenos; kad nešto košta, vraćaju link za plaćanje."
        },
        {
            "name": "Nalozi",
            "description": "Porudžbine i njihovo stanje."
        },
        {
            "name": "Nadzor",
            "description": "Sopstveni pozivi ka API-ju."
        }
    ],
    "components": {
        "securitySchemes": {
            "kljuc": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "mtd_live_<32 heksadecimalna znaka>",
                "description": "Opsezi: domains:read, domains:write, billing:read, billing:charge."
            }
        },
        "schemas": {
            "Greska": {
                "type": "object",
                "required": [
                    "ok",
                    "greska"
                ],
                "properties": {
                    "ok": {
                        "type": "boolean",
                        "const": false
                    },
                    "greska": {
                        "type": "object",
                        "required": [
                            "kod",
                            "poruka"
                        ],
                        "properties": {
                            "kod": {
                                "type": "string",
                                "description": "Stalan kod za mašinsku obradu.",
                                "enum": [
                                    "nema_kljuca",
                                    "kljuc_nepoznat",
                                    "kljuc_povucen",
                                    "kljuc_istekao",
                                    "nema_ovlascenja",
                                    "domen_zasticen",
                                    "nije_vas_domen",
                                    "nalog_nepoznat",
                                    "nepoznata_ruta",
                                    "metod_nije_dozvoljen",
                                    "domen_zauzet",
                                    "idem_neslaganje",
                                    "idem_u_toku",
                                    "domen_neispravan",
                                    "idem_obavezan",
                                    "idem_dug",
                                    "tld_nepoznat",
                                    "registrant_nepotpun",
                                    "registrant_neispravan",
                                    "drzava_nepoznata",
                                    "nosilac_bez_naloga",
                                    "nosilac_vise_naloga",
                                    "samo_pravna_lica",
                                    "samo_fizicka_lica",
                                    "ns_broj",
                                    "godina_neispravna",
                                    "previse_neplacenih",
                                    "previse_poziva",
                                    "domen_slobodan",
                                    "vec_na_nalogu",
                                    "prenos_u_toku",
                                    "prenos_nepoznat",
                                    "auth_kod_neispravan",
                                    "profil_nepotpun",
                                    "prenos_nedostupan",
                                    "previse_prenosa",
                                    "prenos_drugi_nalog",
                                    "domen_kod_nas",
                                    "domen_na_drugom_nalogu",
                                    "domen_zakljucan",
                                    "prenos_u_registru",
                                    "domen_se_brise",
                                    "prenos_zauzet",
                                    "zona_nepotpuna",
                                    "zona_bez_a",
                                    "zona_bez_mx",
                                    "zona_cloudflare",
                                    "zona_se_objavljuje",
                                    "zona_provera_nedostupna",
                                    "kvar",
                                    "baza",
                                    "provera_nedostupna",
                                    "registar_nedostupan",
                                    "brava_ne_skida",
                                    "ns_izmena_u_toku",
                                    "registar_odbio",
                                    "predugo"
                                ]
                            },
                            "poruka": {
                                "type": "string",
                                "description": "Objašnjenje na srpskom, za čoveka."
                            }
                        }
                    },
                    "zahtev_id": {
                        "type": "string",
                        "description": "Isti kao zaglavlje X-Zahtev-Id; navedite ga kad pišete podršci."
                    }
                }
            }
        },
        "parameters": {
            "limit": {
                "name": "limit",
                "in": "query",
                "required": false,
                "schema": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 200,
                    "default": 50
                },
                "description": "Najviše stavki po pozivu."
            }
        },
        "headers": {
            "X-Zahtev-Id": {
                "description": "Jedinstvena oznaka zahteva, ista u telu odgovora.",
                "schema": {
                    "type": "string"
                }
            },
            "Retry-After": {
                "description": "Posle koliko sekundi ponoviti.",
                "schema": {
                    "type": "integer"
                }
            }
        }
    },
    "x-greske": [
        {
            "kod": "nema_kljuca",
            "http": 401,
            "znacenje": "Nedostaje ili je neispravno zaglavlje Authorization."
        },
        {
            "kod": "kljuc_nepoznat",
            "http": 401,
            "znacenje": "Ključ ne postoji."
        },
        {
            "kod": "kljuc_povucen",
            "http": 401,
            "znacenje": "Ključ je povučen u podešavanjima naloga."
        },
        {
            "kod": "kljuc_istekao",
            "http": 401,
            "znacenje": "Ključu je istekao rok važenja."
        },
        {
            "kod": "nema_ovlascenja",
            "http": 403,
            "znacenje": "Ključ nema traženo ovlašćenje (opseg)."
        },
        {
            "kod": "domen_zasticen",
            "http": 403,
            "znacenje": "Naš sopstveni domen — preko API-ja se samo čita."
        },
        {
            "kod": "nije_vas_domen",
            "http": 404,
            "znacenje": "Domen nije na vašem nalogu ili još nije registrovan."
        },
        {
            "kod": "nalog_nepoznat",
            "http": 404,
            "znacenje": "Porudžbina nije pronađena na vašem nalogu."
        },
        {
            "kod": "nepoznata_ruta",
            "http": 404,
            "znacenje": "Ruta ne postoji — spisak je na GET /v1/."
        },
        {
            "kod": "metod_nije_dozvoljen",
            "http": 405,
            "znacenje": "Ruta postoji, ali ne prima taj HTTP metod (v. zaglavlje Allow)."
        },
        {
            "kod": "domen_zauzet",
            "http": 409,
            "znacenje": "Domen je već registrovan."
        },
        {
            "kod": "idem_neslaganje",
            "http": 409,
            "znacenje": "Isti Idempotency-Key je upotrebljen sa drugačijim telom zahteva."
        },
        {
            "kod": "idem_u_toku",
            "http": 409,
            "znacenje": "Isti zahtev se upravo izvršava — sačekajte pa proverite stanje."
        },
        {
            "kod": "domen_neispravan",
            "http": 400,
            "znacenje": "Ime domena nije ispravno ili ga registar ne prihvata."
        },
        {
            "kod": "idem_obavezan",
            "http": 400,
            "znacenje": "Za poručivanje je obavezno zaglavlje Idempotency-Key."
        },
        {
            "kod": "idem_dug",
            "http": 400,
            "znacenje": "Idempotency-Key duži od 128 znakova."
        },
        {
            "kod": "tld_nepoznat",
            "http": 422,
            "znacenje": "Tu ekstenziju ne prodajemo."
        },
        {
            "kod": "registrant_nepotpun",
            "http": 422,
            "znacenje": "Nedostaju podaci registranta (spisak je u polju „nedostaje\")."
        },
        {
            "kod": "registrant_neispravan",
            "http": 422,
            "znacenje": "Podatak registranta nije ispravan (telefon, e-adresa, JMBG, PIB, matični broj ili nedozvoljeni znaci) — razlog je u poruci."
        },
        {
            "kod": "drzava_nepoznata",
            "http": 422,
            "znacenje": "Država registranta nije prepoznata — šalje se kao dvoslovni ISO 3166-1 kod (RS, BA, DE…)."
        },
        {
            "kod": "nosilac_bez_naloga",
            "http": 422,
            "znacenje": "Nosilac .rs/.срб domena nema nalog na metoda.rs. Nalog otvara na https://www.metoda.rs/registracija/; u registrant.email ide njegova adresa ime@metoda.rs ili rezervna adresa naloga."
        },
        {
            "kod": "nosilac_vise_naloga",
            "http": 422,
            "znacenje": "Rezervnu adresu iz registrant.email ima više naloga — pošaljite adresu ime@metoda.rs nosioca."
        },
        {
            "kod": "samo_pravna_lica",
            "http": 422,
            "znacenje": "Ekstenziju mogu da registruju samo pravna lica."
        },
        {
            "kod": "samo_fizicka_lica",
            "http": 422,
            "znacenje": "Ekstenziju .in.rs RNIDS dodeljuje samo fizičkim licima."
        },
        {
            "kod": "ns_broj",
            "http": 422,
            "znacenje": "Potrebno je 2 do 4 različita ispravna nejmservera."
        },
        {
            "kod": "godina_neispravna",
            "http": 422,
            "znacenje": "Polje „godina\" mora biti ceo broj između 1 i 10."
        },
        {
            "kod": "previse_neplacenih",
            "http": 409,
            "znacenje": "Nalog ima 10 ili više neplaćenih porudžbina."
        },
        {
            "kod": "previse_poziva",
            "http": 429,
            "znacenje": "Prekoračeno ograničenje poziva (v. zaglavlje Retry-After)."
        },
        {
            "kod": "domen_slobodan",
            "http": 409,
            "znacenje": "Domen nije registrovan — nema šta da se prenese; registruje se."
        },
        {
            "kod": "vec_na_nalogu",
            "http": 409,
            "znacenje": "Domen je već na vašem nalogu — za produženje je /domeni/{domen}/obnovi."
        },
        {
            "kod": "prenos_u_toku",
            "http": 409,
            "znacenje": "Za taj domen već postoji otvoren zahtev za prenos."
        },
        {
            "kod": "prenos_nepoznat",
            "http": 404,
            "znacenje": "Za taj domen nema zahteva za prenos na vašem nalogu."
        },
        {
            "kod": "auth_kod_neispravan",
            "http": 422,
            "znacenje": "Auth kod nije ispravnog oblika. Nacionalni domen (.rs, .срб, .co.rs, .org.rs, .in.rs): kod koji izdaje RNIDS, 36 znakova xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (0–9, a–f); ostale ekstenzije: 4–256 znakova, bez razmaka."
        },
        {
            "kod": "profil_nepotpun",
            "http": 422,
            "znacenje": "Registar za prenos traži telefon i adresu vlasnika naloga (spisak je u polju „nedostaje\")."
        },
        {
            "kod": "prenos_nedostupan",
            "http": 422,
            "znacenje": "Prenos te ekstenzije trenutno nije moguć."
        },
        {
            "kod": "previse_prenosa",
            "http": 429,
            "znacenje": "Najviše 30 zahteva za prenos na sat po nalogu."
        },
        {
            "kod": "prenos_drugi_nalog",
            "http": 409,
            "znacenje": "Za taj domen je već otvoren zahtev za prenos sa drugog naloga."
        },
        {
            "kod": "domen_kod_nas",
            "http": 409,
            "znacenje": "Domen je već registrovan preko Metode (na drugom nalogu ili van naloga) — premešta ga podrška, ne prenos."
        },
        {
            "kod": "domen_na_drugom_nalogu",
            "http": 409,
            "znacenje": "Domen je u našoj evidenciji na drugom nalogu, a u registru više nije kod Metode — prenos pokreće podrška."
        },
        {
            "kod": "domen_zakljucan",
            "http": 409,
            "znacenje": "Domen je zaključan kod dosadašnjeg registra ili u samom registru — prenos nije moguć dok se ne otključa."
        },
        {
            "kod": "prenos_u_registru",
            "http": 409,
            "znacenje": "U registru je za taj domen već u toku prenos."
        },
        {
            "kod": "domen_se_brise",
            "http": 409,
            "znacenje": "Domen je u registru u postupku brisanja."
        },
        {
            "kod": "prenos_zauzet",
            "http": 409,
            "znacenje": "Drugi poziv za isti domen se upravo obrađuje — ponovite za nekoliko sekundi."
        },
        {
            "kod": "zona_nepotpuna",
            "http": 409,
            "znacenje": "U našem DNS-u nema zapisa koje domen sada koristi (samo parking ili ništa) — prelazak bi prekinuo sajt ili poštu."
        },
        {
            "kod": "zona_bez_a",
            "http": 409,
            "znacenje": "Domen sada ima sajt, a u našem DNS-u nema A ni AAAA zapisa za @."
        },
        {
            "kod": "zona_bez_mx",
            "http": 409,
            "znacenje": "Domen sada prima poštu, a u našem DNS-u nema MX zapisa."
        },
        {
            "kod": "zona_cloudflare",
            "http": 409,
            "znacenje": "Zapisi su Cloudflare-ove proksi adrese ili Cloudflare-ovo prosleđivanje pošte — van Cloudflare-a ne rade."
        },
        {
            "kod": "zona_se_objavljuje",
            "http": 409,
            "znacenje": "Zapisi se još objavljuju na ns1/ns2.metoda.rs — ponovite za 5 minuta."
        },
        {
            "kod": "zona_provera_nedostupna",
            "http": 503,
            "znacenje": "Provera naše DNS zone trenutno nije moguća — nejmserveri nisu menjani."
        },
        {
            "kod": "kvar",
            "http": 500,
            "znacenje": "Neočekivana greška kod nas — ništa nije naplaćeno."
        },
        {
            "kod": "baza",
            "http": 503,
            "znacenje": "Servis privremeno nije dostupan."
        },
        {
            "kod": "provera_nedostupna",
            "http": 503,
            "znacenje": "Registar ne odgovara na proveru — ne poručujemo bez provere."
        },
        {
            "kod": "registar_nedostupan",
            "http": 503,
            "znacenje": "Registar trenutno ne odgovara."
        },
        {
            "kod": "brava_ne_skida",
            "http": 409,
            "znacenje": "Domen je zaključan zaštitom od prenosa, a registar trenutno ne dozvoljava da je privremeno skinemo — nejmserveri nisu menjani, domen ostaje zaključan."
        },
        {
            "kod": "ns_izmena_u_toku",
            "http": 409,
            "znacenje": "Za taj domen je upravo u toku druga izmena nejmservera — ponovite za minut."
        },
        {
            "kod": "registar_odbio",
            "http": 502,
            "znacenje": "Registar je odbio izmenu (razlog je u poruci, kad ga registar javi)."
        },
        {
            "kod": "predugo",
            "http": 504,
            "znacenje": "Registar predugo ne odgovara — pokušajte ponovo."
        }
    ],
    "x-primer": {
        "opis": "Ceo tok: pretraga bez ključa, provera, poručivanje, plaćanje, praćenje.",
        "koraci": [
            "curl \"https://domeni.metoda.rs/v1/pretraga?ime=mojafirma\"   # bez ključa: sve ekstenzije, cene, dostupnost",
            "curl -H \"Authorization: Bearer $KLJUC\" \"https://domeni.metoda.rs/v1/domeni/slobodan?domen=mojafirma.rs\"",
            "curl -X POST -H \"Authorization: Bearer $KLJUC\" -H \"Idempotency-Key: $(uuidgen)\" -H \"Content-Type: application/json\" -d '{\"domen\":\"mojafirma.rs\",\"godina\":1,\"registrant\":{\"jmbg\":\"...\",\"adr\":\"...\",\"ptt\":\"11000\",\"grad\":\"Beograd\"}}' https://domeni.metoda.rs/v1/domeni/registruj",
            "# odgovor nosi placanje.karticom — otvoriti taj link i uneti karticu",
            "curl -H \"Authorization: Bearer $KLJUC\" https://domeni.metoda.rs/v1/nalozi/<nalog_id>   # dok reg_status ne bude \"registered\""
        ]
    },
    "paths": {
        "/ping": {
            "get": {
                "tags": [
                    "Opšte"
                ],
                "summary": "Provera veze",
                "security": [],
                "responses": {
                    "200": {
                        "description": "Servis radi.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/me": {
            "get": {
                "tags": [
                    "Opšte"
                ],
                "summary": "Nalog i ovlašćenja ključa",
                "responses": {
                    "200": {
                        "description": "Podaci naloga, opseg ključa i rok važenja.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/cenovnik": {
            "get": {
                "tags": [
                    "Opšte"
                ],
                "summary": "Cene po ekstenziji (radi i bez ključa)",
                "security": [
                    {},
                    {
                        "kljuc": []
                    }
                ],
                "description": "Bez ključa: 60 poziva u minuti po adresi. Sa ključem: granice ključa.",
                "responses": {
                    "200": {
                        "description": "Registracija, obnova i prenos, u dinarima sa PDV-om. u_prodaji=false: nastavak se ne može registrovati ni preneti, samo obnoviti postojeći domen (napomena kaže zašto).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/domeni": {
            "get": {
                "tags": [
                    "Domeni"
                ],
                "summary": "Domeni na nalogu",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/limit"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Spisak registrovanih i prenetih domena.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/pretraga": {
            "get": {
                "tags": [
                    "Domeni"
                ],
                "summary": "Pretraga: sve ekstenzije sa cenama i dostupnošću (radi i bez ključa)",
                "security": [
                    {},
                    {
                        "kljuc": []
                    }
                ],
                "description": "Jedan poziv za .rs, .срб, .co.rs, .org.rs, .in.rs i .com/.net/.org (plus nastavak koji je upisan). Naziv se čisti kao na sajtu (http, www, putanja, poznat nastavak). Ćirilični naziv se proverava samo pod .срб, latinični samo pod .rs porodicom. Polje izvor: kes (slobodan do 1 h, zauzet do 24 h star), registar (upravo provereno), lokalno (pravilo registra), odlozeno (budžet živih provera je potrošen — ponoviti za nekoliko minuta). Slobodan red nosi „poruci“ — gotov zahtev za POST /domeni/registruj (traži ključ).",
                "parameters": [
                    {
                        "name": "ime",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "example": "mojafirma",
                        "description": "Naziv bez nastavka (mojafirma) ili sa njim (mojafirma.rs, www.mojafirma.com)."
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Spisak ekstenzija sa dostupnošću i cenom.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "ime",
                                        "ekstenzije"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "type": "boolean",
                                            "const": true
                                        },
                                        "ime": {
                                            "type": "string",
                                            "description": "Očišćen naziv bez nastavka."
                                        },
                                        "unet_nastavak": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Nastavak koji je pozivalac upisao, ako jeste."
                                        },
                                        "van_ponude": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Upisan nastavak koji ne prodajemo (npr. .com.rs)."
                                        },
                                        "valuta": {
                                            "type": "string",
                                            "const": "RSD"
                                        },
                                        "ekstenzije": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "required": [
                                                    "domen",
                                                    "tld",
                                                    "slobodan",
                                                    "cena",
                                                    "izvor"
                                                ],
                                                "properties": {
                                                    "domen": {
                                                        "type": "string"
                                                    },
                                                    "tld": {
                                                        "type": "string"
                                                    },
                                                    "slobodan": {
                                                        "type": [
                                                            "boolean",
                                                            "null"
                                                        ],
                                                        "description": "true = slobodan, false = zauzet, null = nije provereno (vidi izvor i napomenu)."
                                                    },
                                                    "cena": {
                                                        "type": "integer",
                                                        "description": "Registracija za godinu dana, RSD sa PDV-om."
                                                    },
                                                    "obnova": {
                                                        "type": "integer"
                                                    },
                                                    "valuta": {
                                                        "type": "string"
                                                    },
                                                    "izvor": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ],
                                                        "enum": [
                                                            "kes",
                                                            "registar",
                                                            "hladjenje",
                                                            "lokalno",
                                                            "odlozeno",
                                                            "nedostupno",
                                                            null
                                                        ]
                                                    },
                                                    "napomena": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "uslov": {
                                                        "type": "string",
                                                        "description": "npr. „samo pravna lica“ (.co.rs, .org.rs) ili „samo fizička lica“ (.in.rs)."
                                                    },
                                                    "neispravan": {
                                                        "type": "boolean",
                                                        "description": "Registar ovaj naziv pod tim nastavkom ne prima."
                                                    },
                                                    "premium": {
                                                        "type": "boolean"
                                                    },
                                                    "poruci": {
                                                        "type": "object",
                                                        "description": "Gotov zahtev za porudžbinu (samo kad je slobodan)."
                                                    }
                                                }
                                            }
                                        },
                                        "neproverene_ekstenzije": {
                                            "type": "array",
                                            "description": "Ostale međunarodne ekstenzije sa cenom — dostupnost se proverava zasebno (/domeni/slobodan).",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "tld": {
                                                        "type": "string"
                                                    },
                                                    "domen": {
                                                        "type": "string"
                                                    },
                                                    "cena": {
                                                        "type": "integer"
                                                    }
                                                }
                                            }
                                        },
                                        "kupovina": {
                                            "type": "string"
                                        },
                                        "za_ljude": {
                                            "type": "string",
                                            "format": "uri"
                                        },
                                        "zahtev_id": {
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Nema naziva ili je kodiranje neispravno.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Naziv koji registar sigurno ne prima (dužina, crtice, mešano pismo, slova van tabele).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva bez ključa (60 u minuti po adresi) — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/domeni/slobodan": {
            "get": {
                "tags": [
                    "Domeni"
                ],
                "summary": "Da li je domen slobodan (radi i bez ključa)",
                "security": [
                    {},
                    {
                        "kljuc": []
                    }
                ],
                "description": "Bez ključa: 60 poziva u minuti po adresi; živ upit ka RNIDS-u troši zajednički budžet (kad je potrošen: 429 sa Retry-After). Keš: slobodan do 1 h, zauzet do 24 h.",
                "parameters": [
                    {
                        "name": "domen",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "example": "mojafirma.rs"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Odgovor sadrži i cenu i izvor (kes/registar).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "ok",
                                        "domen",
                                        "slobodan"
                                    ],
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "domen": {
                                            "type": "string"
                                        },
                                        "slobodan": {
                                            "type": "boolean"
                                        },
                                        "cena": {
                                            "type": "integer",
                                            "description": "RSD sa PDV-om, za godinu dana."
                                        },
                                        "valuta": {
                                            "type": "string"
                                        },
                                        "izvor": {
                                            "type": "string",
                                            "enum": [
                                                "kes",
                                                "registar",
                                                "hladjenje"
                                            ]
                                        },
                                        "premium": {
                                            "type": "boolean"
                                        },
                                        "napomena": {
                                            "type": "string"
                                        },
                                        "zahtev_id": {
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Ekstenzija nije u ponudi ili ime nije prihvatljivo.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "503": {
                        "description": "Registar ne odgovara.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/domeni/{domen}": {
            "get": {
                "tags": [
                    "Domeni"
                ],
                "summary": "Jedan domen",
                "parameters": [
                    {
                        "name": "domen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Podaci o domenu.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Nije na vašem nalogu.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/domeni/{domen}/nejmserveri": {
            "get": {
                "tags": [
                    "Domeni"
                ],
                "summary": "Nejmserveri iz registra",
                "parameters": [
                    {
                        "name": "domen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Trenutni nejmserveri.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Nije na vašem nalogu.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "Domeni"
                ],
                "summary": "Izmena nejmservera",
                "description": "Nacionalni domen (.rs, .срб, .co.rs…) koji je zaključan zaštitom od prenosa otključava se samo za ovu izmenu i odmah ponovo zaključava (03.10.2026.); ako registar ne dozvoli otključavanje, odgovor je 409 brava_ne_skida i ništa se ne menja. Kad nejmserveri prelaze na ns1/ns2.metoda.rs, prvo se proverava naša DNS zona: na oba naša servera mora da služi A i MX koje domen sada ima kod dosadašnjih nejmservera. Ako ne služi, odgovor je 409 sa kodom zona_* i registar se ne dira. Kad je greska.moze_svesno true, isti zahtev sa „svesno\": true preskače proveru — sajt i pošta tada mogu da stanu.",
                "parameters": [
                    {
                        "name": "domen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "nejmserveri"
                                ],
                                "properties": {
                                    "nejmserveri": {
                                        "type": "array",
                                        "minItems": 2,
                                        "maxItems": 4,
                                        "items": {
                                            "type": "string"
                                        },
                                        "examples": [
                                            [
                                                "ns1.metoda.rs",
                                                "ns2.metoda.rs"
                                            ]
                                        ]
                                    },
                                    "svesno": {
                                        "type": "boolean",
                                        "default": false,
                                        "description": "true = prelazak na ns1/ns2.metoda.rs bez provere naše DNS zone."
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Upisano; polje „promenjeno\" je false kad su vrednosti već takve.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "Naša DNS zona nije spremna za prelazak (zona_nepotpuna, zona_bez_a, zona_bez_mx, zona_cloudflare, zona_se_objavljuje); greska.moze_svesno kaže da li sme „svesno\": true. Ili: brava_ne_skida (registar ne dozvoljava da se zaštita od prenosa privremeno skine), ns_izmena_u_toku.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Nije 2–4 različita ispravna imena.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "Registar odbio izmenu — razlog je u greska.poruka.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "503": {
                        "description": "Provera naše DNS zone trenutno nije moguća (zona_provera_nedostupna) — ništa nije menjano.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/domeni/registruj": {
            "post": {
                "tags": [
                    "Poručivanje"
                ],
                "summary": "Poruči registraciju",
                "description": "Pravi NEPLAĆENU porudžbinu i vraća link za plaćanje. Zahteva Idempotency-Key.",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "maxLength": 128
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "domen"
                                ],
                                "properties": {
                                    "domen": {
                                        "type": "string",
                                        "example": "mojafirma.rs"
                                    },
                                    "godina": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 10,
                                        "default": 1
                                    },
                                    "whois_privatnost": {
                                        "type": "boolean",
                                        "default": false,
                                        "deprecated": true,
                                        "description": "Ne koristi se: WHOIS privatnost se ne naplaćuje, a polje se ignoriše."
                                    },
                                    "registrant": {
                                        "type": "object",
                                        "description": "Ako se izostavi, uzimaju se podaci iz profila naloga. Za .rs i .срб nosilac mora da ima nalog na metoda.rs: RNIDS mu potvrdu registracije šalje u sanduče ime@metoda.rs koje dobija uz nalog (26.10.2026).",
                                        "properties": {
                                            "ime": {
                                                "type": "string"
                                            },
                                            "naziv": {
                                                "type": "string"
                                            },
                                            "email": {
                                                "type": "string",
                                                "format": "email",
                                                "description": "Za .rs i .срб: adresa ime@metoda.rs nosioca ili rezervna adresa njegovog naloga — RNIDS dobija sanduče ime@metoda.rs. Bez naloga: 422 nosilac_bez_naloga (26.10.2026)."
                                            },
                                            "tel": {
                                                "type": "string",
                                                "example": "+381 64 123 4567",
                                                "description": "Domaći broj (06x xxx xxxx) ili broj sa pozivnim brojem države (+49 170 1234567). Čuva se kao +381… (03.10.2026)."
                                            },
                                            "adr": {
                                                "type": "string"
                                            },
                                            "ptt": {
                                                "type": "string"
                                            },
                                            "grad": {
                                                "type": "string"
                                            },
                                            "drz": {
                                                "type": "string",
                                                "example": "RS",
                                                "description": "Država kao dvoslovni ISO 3166-1 kod (RS, BA, DE…); prazno = RS. Nepoznat naziv se odbija (drzava_nepoznata), 03.10.2026."
                                            },
                                            "jmbg": {
                                                "type": "string",
                                                "description": "Fizičko lice: neobavezno; ne traži se ni za .se (11.10.2026) — tamo broj pasoša ili lične karte u polju pasos."
                                            },
                                            "pasos": {
                                                "type": "string",
                                                "description": "Fizičko lice, .se: broj pasoša ili lične karte — za kupca iz Srbije i iz bilo koje druge države (11.10.2026)."
                                            },
                                            "pib": {
                                                "type": "string",
                                                "description": "Firma iz Srbije: PIB (9 cifara) — potreban samo za uplatu na račun Metode d.o.o. (uplatnica, fiskalni račun); karticom se plaća i bez njega (03.10.2026). Strana firma: VAT, neobavezno."
                                            },
                                            "mb": {
                                                "type": "string",
                                                "description": "Matični broj firme (strana firma: registarski broj) — za nacionalne domene i .se."
                                            }
                                        }
                                    },
                                    "eracun": {
                                        "type": "boolean",
                                        "default": false,
                                        "description": "Saglasnost da fiskalni račun i ostale dokumente primite elektronski, na e-adresu iz porudžbine (Zakon o fiskalizaciji). Zapisuje se uz porudžbinu (03.10.2026)."
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Porudžbina napravljena; polje „placanje\" nosi link za karticu i uplatnicu. Firma iz Srbije bez PIB-a dobija samo karticu: uplatnica je null, a ref97 se ne vraća (uplata na račun d.o.o. tek uz PIB).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Nedostaje Idempotency-Key ili je domen neispravan.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "Domen je zauzet, ili je isti Idempotency-Key već u upotrebi.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Podaci registranta nepotpuni (registrant_nepotpun) ili neispravni (registrant_neispravan, drzava_nepoznata), nosilac .rs/.срб bez naloga na metoda.rs (nosilac_bez_naloga, nosilac_vise_naloga), ili ekstenzija nije u ponudi.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "503": {
                        "description": "Registar ne odgovara — ne poručujemo bez provere.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/domeni/{domen}/obnovi": {
            "post": {
                "tags": [
                    "Poručivanje"
                ],
                "summary": "Poruči obnovu",
                "parameters": [
                    {
                        "name": "domen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "godina": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 10,
                                        "default": 1
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Porudžbina obnove sa podacima za plaćanje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/prenosi": {
            "get": {
                "tags": [
                    "Domeni"
                ],
                "summary": "Zahtevi za prenos na nalogu",
                "description": "Najnoviji prvi. Polje „status\": received (čeka uplatu), paid (plaćen ili besplatan, čeka podnošenje), submitted (podnet registru, čeka odobrenje), completed (domen je na nalogu), cancelled (otkazan). Neplaćen prenos nosi „uplatnica\". Ista ruta: /transfers.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/limit"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Spisak zahteva za prenos.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "Poručivanje"
                ],
                "summary": "Pokreni prenos domena sa auth kodom",
                "description": "Prenosi kod nas domen registrovan kod drugog registrara. Pravila su ista kao na sajtu: u profilu naloga moraju biti telefon i adresa (registar ih traži za kontakt domena), domen mora postojati, a za isti domen može biti otvoren samo jedan zahtev. Cenu određuje cenovnik naloga i vraća se u „prenos.cena\". Kad je 0, zahtev se odmah prosleđuje na podnošenje, a „placanje\" je null. Kad je veća od 0, uključuje produženje za godinu dana; „placanje\" nosi link za karticu i uplatnicu, a prenos se podnosi kad uplata legne. Nejmserveri se ne menjaju. Auth kod nacionalnog domena (.rs, .срб, .co.rs, .org.rs, .in.rs) izdaje RNIDS: 36 znakova, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (0–9, a–f); razmaci i velika slova se ispravljaju sami. Zaključan domen, prenos koji je u registru već u toku, domen koji se briše i domen koji je već kod Metode odbijaju se odmah (409). Odbijen zahtev (4xx) ne vezuje Idempotency-Key — posle ispravke ponovite i sa istim ključem. Traži opseg billing:charge i zaglavlje Idempotency-Key.",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "maxLength": 128
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "domen",
                                    "auth_kod"
                                ],
                                "properties": {
                                    "domen": {
                                        "type": "string",
                                        "example": "mojafirma.rs",
                                        "description": "Domen drugog nivoa. Prima se i kao „domain\"."
                                    },
                                    "auth_kod": {
                                        "type": "string",
                                        "minLength": 4,
                                        "maxLength": 256,
                                        "description": "Auth (EPP) kod od dosadašnjeg registra. Nacionalni domen: RNIDS kod xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; ostale ekstenzije: 4–256 znakova, bez razmaka. Prima se i kao „auth_code\"."
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Zahtev primljen. „prenos\" nosi stanje; „placanje\" je link za karticu i uplatnica, ili null kad je prenos besplatan.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Nedostaje Idempotency-Key ili domen nije ispravan.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema billing:charge, ili je domen naš sopstveni.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "Domen nije registrovan, već je na nalogu, kod Metode ili na drugom nalogu, zaključan je, prenos je već u toku (kod nas ili u registru), domen se briše, ili je isti Idempotency-Key u upotrebi.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Auth kod neispravnog oblika, profil bez telefona/adrese, ili ekstenzija nije u ponudi. Odbijen zahtev ne vezuje Idempotency-Key.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Kvar kod nas — zahtev nije sačuvan i ništa nije naplaćeno. Ponovite (isti Idempotency-Key je slobodan).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "503": {
                        "description": "Registar ne odgovara na proveru — zahtev nije primljen.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "504": {
                        "description": "Registar predugo ne odgovara — zahtev nije primljen. Ponovite za koji minut.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/prenosi/{domen}": {
            "get": {
                "tags": [
                    "Domeni"
                ],
                "summary": "Stanje prenosa jednog domena",
                "parameters": [
                    {
                        "name": "domen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Poslednji zahtev za prenos tog domena.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Za taj domen nema zahteva na vašem nalogu.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/nalozi": {
            "get": {
                "tags": [
                    "Nalozi"
                ],
                "summary": "Porudžbine",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/limit"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Spisak porudžbina.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/nalozi/{id}": {
            "get": {
                "tags": [
                    "Nalozi"
                ],
                "summary": "Jedna porudžbina i stanje registracije",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Nalog i stavke; reg_status stavke kaže dokle je stigla registracija.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Nije vaša porudžbina.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/dnevnik": {
            "get": {
                "tags": [
                    "Nadzor"
                ],
                "summary": "Sopstveni pozivi ka API-ju",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/limit"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Poslednji pozivi sa ovog naloga: ruta, status, trajanje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Ključ nedostaje, nije prepoznat, povučen je ili mu je istekao rok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Ključ nema potrebno ovlašćenje.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Previše poziva — sačekajte koliko kaže Retry-After.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Greska"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}