API za autore kataloga
Autorski ključ mca_live_ za tvoje modove, modpakove, mape i pakove: nacrt, otpremanje verzija, stranica, cena i statistika prodaje. API rute, dozvole ključa, primeri zahteva, greške i limiti.
Ažurirano 13. oktobar 2026.
Sve što autor radi sa svojim materijalima na sajtu možeš da radiš i iz sopstvene skripte ili build pipeline-a: napraviš nacrt, otpremiš novu verziju, izmeniš stranicu, promeniš cenu i pregledaš prodaju. Za to ti je potreban autorski ključ — niz znakova poput mca_live_….
Ključ radi samo sa tvojim materijalima: onima gde si ti autor. Ne možeš da diraš tuđi rad, čak i ako znaš njegovu adresu.
Ključ
Ključ se izdaje u tvom profilu, u autorskom delu. Daj ključu ime i izaberi opsege; ključ se prikazuje jednom — sačuvaj ga u tajnama svog pipeline-a. Ako ga izgubiš, opozovi ga i izdaj novi. Možeš da imaš do deset aktivnih ključeva. Promena lozinke ili imejla opoziva sve ključeve naloga — posle toga izdaj nove.
| Opseg | Šta omogućava |
|---|---|
items:write | pravljenje nacrta, potvrda autorstva, slanje materijala na pregled |
versions:write | dobijanje URL-a za otpremanje i registraciju verzije |
page:write | slike, nacrt stranice i njegovo slanje na pregled |
pricing:write | cena materijala |
stats:read | preuzimanja, igrači i prodaja |
Daj pipeline-u samo ono što mu treba: build ključ obično živi sa versions:write i stats:read.
Svi endpointi su pod https://api.millida.net/v2; ključ ide u zaglavlje:
Authorization: Bearer mca_live_…
Moji materijali
GET /catalog/author-api/items
[
{
"slug": "my-pack",
"type": "MODPACK",
"title": "My modpack",
"status": "PUBLISHED",
"moderationStatus": "PUBLISHED",
"pricing": "ONE_TIME",
"priceKopecks": 49900,
"versionsCount": 12,
"downloads": 5310,
"publicUrl": "/modpacks/my-pack"
}
]
Novi materijal
POST /catalog/author-api/items
{ "type": "MOD", "title": "My mod", "summary": "Briefly about the mod" }
Materijal se pojavljuje kao nacrt. Adresa (slug) se preuzima iz imena; zauzeta adresa vraća 409 sa predlogom slobodne. Cena pri pravljenju (pricing, priceKopecks) može da se prosledi samo sa ključem koji ima opseg pricing:write; u suprotnom je odgovor 403 MISSING_SCOPE.
Nova verzija
1. URL za otpremanje:
POST /catalog/author-api/items/my-pack/upload-url
{ "version": "1.4.0", "fileName": "my-pack-1.4.0.zip", "size": 734003200 }
{ "uploadUrl": "https://…", "storageKey": "catalog/packs/my-pack/…", "expiresIn": 3600 }
2. Otpremi fajl PUT zahtevom na uploadUrl — direktno u skladište, bez nas u sredini:
curl -X PUT --upload-file my-pack-1.4.0.zip "$UPLOAD_URL"
3. Registruj verziju:
POST /catalog/author-api/items/my-pack/versions
{
"version": "1.4.0",
"storageKey": "catalog/packs/my-pack/…",
"gameVersions": ["1.20.1"],
"loaders": ["fabric"],
"loaderVersion": "0.16.0",
"changelog": "New quests"
}
Verzija ide na automatski pregled i pojavljuje se igračima posle njega. Svako otpremanje je novi fajl: ne možeš da prepišeš već objavljenu verziju.
Slanje na pregled
Novi materijal ulazi u katalog posle moderatora. Kada ima bar jednu verziju, potvrdi da je rad tvoj i da si ti izabrao licencu. To je poseban zahtev: slanje na pregled to ne radi umesto tebe.
POST /catalog/author-api/items/my-pack/authorship
{ "ok": true }
Zatim pošalji materijal:
POST /catalog/author-api/items/my-pack/submit
{ "ok": true, "status": "PENDING" }
Bez potvrde odgovor je 400 „Confirm that the modpack is yours and the license was chosen by you”; bez verzije 400 „Upload the modpack file first”.
Stranica
PUT /catalog/author-api/items/my-pack/page
{ "title": "My modpack", "summary": "…", "descriptionMd": "## What's inside\n…" }
Ovo je nacrt: igrači vide prethodnu stranicu dok nova ne prođe pregled. Slike u opisu moraju da se otpreme samo kod nas; linkovi moraju da vode isključivo na Millida stranice. Prvo otpremi ikonicu (iconUrl), snimke ekrana (gallery) i slike iz opisa:
curl -H "Authorization: Bearer $MCA_KEY" -F "file=@icon.png" https://api.millida.net/v2/catalog/author-api/images
{ "url": "https://…/uploads/…/icon.png" }
Podržani su PNG, JPG, WebP i AVIF do 15 MB; GIF nije. Za otpremanje je potreban opseg page:write; odgovor sadrži adresu koju možeš da staviš u stranicu. Pošalji na pregled:
POST /catalog/author-api/items/my-pack/page/submit
Cena
PUT /catalog/author-api/items/my-pack/pricing
{ "pricing": "ONE_TIME", "priceKopecks": 49900 }
pricing | Šta znači |
|---|---|
FREE | besplatno |
ONE_TIME | jednokratna kupovina, pristup zauvek |
SUBSCRIPTION | pretplata, naplaćuje se jednom mesečno |
- Iznosi su u kopekama. Minimalna cena za plaćeni materijal je 300 ₽ (
30000), za skinove i plaštove — 50 ₽ (5000); maksimalna je 100.000 ₽ (10000000). - Platforma uzima 30% od svake prodaje; ostatak ide u tvoj Millida novčanik.
- Novac od prodaje možeš odmah da potrošiš unutar Millida, ali isplata je dostupna 7 dana posle kupovine.
- Fajlove plaćenog materijala mogu da preuzmu samo oni koji imaju pristup. Kao autor, ti uvek imaš pristup.
Statistika
GET /catalog/author-api/items/my-pack/stats
{
"versions": [{ "version": "1.4.0", "downloads": 312, "reviewStatus": "APPROVED" }],
"players": { "players": 1204, "playersRecent": 380, "days": [{ "day": "2026-09-24", "players": 41 }] },
"sales": {
"totalKopecks": 998000,
"netKopecks": 698600,
"count": 20,
"refundedCount": 0,
"holdDays": 7,
"last30d": [{ "day": "2026-09-24", "count": 3, "netKopecks": 104790 }]
}
}
Prodaja po svim materijalima odjednom:
GET /catalog/author-api/sales
Greške
Odgovor sa greškom uvek sadrži message — možeš da ga pokažeš čoveku takvog kakav jeste — i često code — koji je zgodan za grananje u skripti.
| Status | code | Šta se dogodilo |
|---|---|---|
| 401 | INVALID_KEY | ključ nedostaje, loše je formatiran ili nije pronađen |
| 401 | REVOKED, EXPIRED | ključ je opozvan ili je istekao |
| 401 | OWNER_UNAVAILABLE | nalog vlasnika ključa je blokiran |
| 403 | MISSING_SCOPE | ključu nedostaje potreban opseg; lista je u scopes |
| 404 | — | materijal ne postoji ili nije tvoj |
| 400 | PRICE_TOO_LOW, PRICE_TOO_HIGH, INVALID_PRICING | cena je van pravila; granice su u minKopecks i maxKopecks |
| 409 | UNDER_REVIEW | materijal je na pregledu kod moderatora — novi fajlovi posle njegovog odgovora |
| 429 | — | previše zahteva, pokušaj ponovo kasnije |
Ograničenja
- 120 zahteva u minuti po ključu.
- Novi materijali — 10 na sat, URL-ovi za otpremanje i verzije — po 30 na sat, izmene stranice — 120 na sat, slike — 60 na sat, promene cene — 60 na sat.