Manifest — /.well-known/gerege-miniapp.json¶
Mini app бүр өөрийн origin дээр manifest нийтлэх ЗААВАЛ:
https://<origin>/.well-known/gerege-miniapp.json ← эхэлж үүнийг
https://<origin>/.well-known/openpay-miniapp.json ← байхгүй бол OMAS-ын нэрийг
Content-Type: application/json, ≤ 64 KB, redirect-гүй (платформ redirect дагахгүй). Платформ зөвхөн
нийтийн IP хаяг руу залгана (DNS-ийн дараа шалгана) — дотоод сүлжээнд байрлах manifest уншигдахгүй.
http://localhost зөвхөн production биш суулгацад зөвшөөрөгдөнө. Хөгжүүлэгчийн консолд manifest_url-ийг
тодорхой заасан бол зөвхөн тэр хаягийг уншина (энэ хоёр замын аль нэгээр төгссөн, entry-тэй ижил origin).
Manifest нь origin эзэмшлийн баталгаа: бүртгэлээр олгосон verification token-ыг тухайн origin дээр
нийтэлж чадсан хүн л тэр origin-ыг эзэмшинэ. JSON Schema: schemas/manifest.schema.json.
Жишээ¶
{
"omas_version": "1.0",
"slug": "esim",
"client_id": "mapp_7Qk2c9Xv0bR1aB3dE5fG7hJ9",
"version": "1.0.0",
"name": { "mn": "Аяллын eSIM", "en": "Travel eSIM" },
"subtitle": { "mn": "200+ улсад дата" },
"category": "travel",
"developer": { "name": "Жишээ ХХК", "email": "support@example.mn", "url": "https://example.mn" },
"entry": "https://esim.example.mn/app",
"origins": ["https://esim.example.mn"],
"icons": [{ "src": "https://esim.example.mn/icon-512.png", "size": 512 }],
"accent_color": "#3B82F6",
"scopes": ["profile.basic", "payments"],
"bridge": { "min_version": 1, "methods": ["getContext", "getLaunchCode", "requestPayment", "openExternal", "copy", "share", "haptic", "setTitle", "close"] },
"external_urls": ["https://esimsetup.apple.com/"],
"channels": ["ios", "android"],
"webhook_url": "https://esim.example.mn/webhooks/gerege",
"legal": { "privacy_url": "https://example.mn/privacy", "terms_url": "https://example.mn/terms", "support_url": "https://example.mn/help" },
"verification": "omas-verify=3f9c1e7a2b4d6f80a1c3e5f7"
}
Талбарууд¶
| Талбар | Заавал | Дүрэм |
|---|---|---|
omas_version |
✓ | "1.0" |
slug |
✓ | ^[a-z0-9-]{2,32}$, registry-тэй таарна, өөрчлөгдөхгүй |
client_id |
✓ | mapp_… эсвэл mapp_test_… — тухайн апп-ын live эсвэл test id |
version |
✓ | semver (1.2.3, 1.2.3-beta.1) — review түүхэнд хадгалагдана |
name.mn |
✓ | 1–24 тэмдэгт; name.en сонголттой |
subtitle.mn |
≤ 40 тэмдэгт | |
category |
✓ | travel · shopping · finance · games · services · food · transport · utilities |
developer |
✓ | name (1–80), email, url (https, сонголттой) |
entry |
✓ | https, origins-ийн аль нэгэнд багтана, registry-ийн entry_url-тай яг ижил. Host ?launch=<code>&path=<path> нэмнэ |
origins |
✓ | 1–3 origin (https://host[:port], замгүй). Manifest татсан origin болон registry-ийн бүх origin энд байна |
icons |
✓ | ≥ 1; size ∈ 128/256/512/1024; 512 заавал. PNG, тунгалаг бус, булангүй |
accent_color |
✓ | #RRGGBB |
scopes |
✓ | profile.basic заавал. Registry-ийн scope бүр энд зарлагдсан байна (auth.md §4) |
bridge.min_version |
✓ | ≥ 1 |
bridge.methods |
✓ | bridge.md §3-ийн нэрс. Шалгалт амжилттай бол registry-д хэрэгжинэ |
external_urls |
≤ 20 https prefix — openExternal-аар нээх. Шалгалтаар registry-д хэрэгжинэ |
|
requires_verified |
boolean. true бол eID-аар баталгаажаагүй хүн нээж чадахгүй (403 verification_required) — auth.md §1.1 |
|
min_age |
13–21 эсвэл null. Нас хүрэхгүй бол 403 age_restricted; баталгаажаагүй бол 403 verification_required |
|
channels |
✓ | ios, android, web (OMAS дээр android нэмсэн). Одоо ажиллах host нь iOS |
webhook_url |
https. payments scope-той бол ЗААВАЛ. URL ба secret-ийг консолоос тохируулна (webhooks.md) |
|
legal.* |
✓ | privacy_url, terms_url, support_url — https, Монгол хэлээр |
verification |
✓ | Бүртгэлээр олгосон omas-verify=… |
Мэдэхгүй талбар → алдаа (Үл мэдэгдэх талбар). Алдаа бүр JSON-pointer замтай ирнэ (/icons/0/size).
Registry-тэй тулгах¶
«Manifest шалгах» (POST /api/v1/miniapp/dev/apps/{id}/manifest/check) нь schema-аас гадна:
slug,client_id,verification,entryregistry-тэй таарна;entryба manifest татсан origin ньorigins-д багтана; registry-ийн origin, scope бүр manifest-д бий;- 512 icon-ыг татаж шалгана: PNG, яг 512×512;
legal.privacy_url,terms_url,support_urlбүр200хариулна (redirect дагахгүй — redirect = алдаа);- батлагдсан апп
bridge.methods,external_urls-ийг нарийсгаж болно, өргөсгөж болохгүй — дахин review;requires_verified/min_age-ийг хатууруулж болно, сулруулж болохгүй.
Icon ба legal хуудсыг manifest-тэй ижил SSRF хамгаалалттай client-ээр (зөвхөн нийтийн хаяг) татна.
Хариу: {ok, fetched_from, errors: [{path, message}], manifest}. Амжилттай бол manifest_checked_at,
manifest_version, bridge method, гадаад холбоос, requires_verified, min_age registry-д бичигдэнэ. Host нь registry-ээр ажиллана —
manifest-ийг runtime-д татахгүй.