Гайд для создателей рынков: как проставить метаданные, чтобы Forecaster показал ваши рынки одной карточкой события — с исходами, коэффициентами и «ещё N линий».
A market-creator guide: set the right metadata and Forecaster renders your markets as one event card — outcomes, odds and a "+N more lines" drill-down.
Один матч — это несколько независимых on-chain рынков: «кто победит», «тотал», «первый
Рошан». Специальных «родительских» объектов в протоколе нет — группировку задаёт создатель
через поле metadata (JSON-строка в операции pm_create_market). Нода
индексирует белый список ключей; клиент читает готовые индексы.
One match is several independent on-chain markets: "who wins", "total", "first
Roshan". The protocol has no special "parent" objects — the creator defines grouping via the
metadata field (a JSON string in pm_create_market). The node indexes
a whitelist of keys; the client reads ready-made indexes.
event — общий slug матча у всех его рынков (ключ склейки);
event_title — человекочитаемое имя события на карточках;
child: 1 — дочерняя линия (проп): скрыта из общих лент, видна на странице события.
Рынок БЕЗ child — родительский (лицо карточки).
event — a slug shared by all markets of the match (the join key);
event_title — the human-readable event name on cards;
child: 1 — a child line (prop): hidden from general feeds, visible on the event
page. The market WITHOUT child is the parent (the face of the card).
// Родитель (винлайн) — БЕЗ child // Parent (moneyline) — NO child
{"title":"MOUZ победит Vici Gaming?",
"category":"esports","tags":["dota-2"],
"event":"dota2-mouz-vg-2026-07-12",
"event_title":"Dota 2: MOUZ vs Vici Gaming"}
// Дочерняя линия (проп) // Child line (prop)
{"title":"Тотал убийств больше 45.5?",
"category":"esports","tags":["dota-2"],
"event":"dota2-mouz-vg-2026-07-12",
"event_title":"Dota 2: MOUZ vs Vici Gaming",
"child":1}
Правила: одинаковый event у всех линий матча (точное совпадение строки —
регистр и дефисы важны, ключ выбирайте до создания); винлайн без child; остальным
линиям child: 1. Заголовок родителя со словом «победит» / «winner» / «moneyline»
помогает клиенту выбрать его лицом карточки.
Rules: the same event on every line of the match (exact string match —
case and dashes matter, pick the key before creating markets); the moneyline without
child; every other line gets child: 1. A parent title containing
"winner" / "moneyline" helps the client pick it as the card face.
| Ключ | Key | Зачем | Purpose |
|---|---|---|---|
title | Вопрос рынка на карточке. | The market question on the card. | |
category, tags | Разделы и фильтры листингов (теги — массивом). | Listing sections and filters (tags as an array). | |
image | Обложка (URL, не хостится on-chain). | Cover (URL, not hosted on-chain). | |
description | Краткие правила резолва. | Short resolution rules. | |
event, event_title | Ключ и имя события (склейка). | Event key and name (grouping). | |
child | 1 = дочерняя линия, скрыта из лент. | 1 = child line, hidden from feeds. | |
banned_jurisdictions | Юрисдикционный фильтр клиентов. | Jurisdiction filter for clients. |
Остальные ключи JSON не индексируются, но остаются в сыром metadata — свои клиенты могут читать их напрямую.
Other JSON keys are not indexed but stay in the raw metadata — custom clients can read them directly.
event; карточка = винлайн
с кнопками исходов (тап — в купон) и «ещё N линий».event; a card = the moneyline with
tappable outcome buttons (tap adds to the coupon) and "+N more lines".#/event/<ключ>: все линии матча одним
списком (API list_markets_by_event).#/event/<key>: every line of the match in one
list (the list_markets_by_event API).child по умолчанию).child by default).Полная версия гайда — в документации ноды: события и метаданные.
The full guide lives in the node documentation: events & metadata.