Агуулгыг алгасах

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, entry registry-тэй таарна;
  • 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-д татахгүй.