> ## Documentation Index
> Fetch the complete documentation index at: https://docs.moonup.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# MoonUP Seller API

> Выставляйте офферы и управляйте ими из своих инструментов.

Всё, что нужно интеграции продавца, чтобы держать каталог офферов в
актуальном состоянии: создать оффер, пополнить, поставить на паузу, снять.

У каждой категории свои пути — `/v1/offers/accounts`, `/v1/offers/currency`
и так далее — со своими полями. Вы интегрируетесь только с теми категориями,
в которых продаёте, и новая категория на площадке ваши не затронет.

Это публичная часть API. Экраны кабинета продавца — выплаты, споры,
настройки аккаунта — в неё не входят, и API-ключ до них не дотягивается.

*Оффер* — это одно объявление на маркетплейсе. В API они называются `offers`,
и ниже тоже.

## Базовый URL

```
https://api.moonup.gg
```

Только HTTPS, и все пути версионированы: `/v1/...`.

## Первый запрос

<Steps>
  <Step title="Создайте ключ">
    В кабинете продавца откройте **Продавец → API-ключи** и создайте ключ. Он
    показывается один раз — скопируйте его сразу, прочитать его потом нельзя.
  </Step>

  <Step title="Отправьте его">
    Ключ передаётся в заголовке `Authorization` каждого запроса. Обменивать
    его ни на что не нужно.

    ```bash theme={null}
    curl -H "Authorization: Bearer $MOONUP_API_KEY" \
      https://api.moonup.gg/v1/offers/accounts/my
    ```
  </Step>

  <Step title="Узнайте поля категории">
    Что принимает вызов создания в категории, описано на её странице
    справочника: у оффера аккаунта есть цена и картинки, у оффера валюты —
    продукт и остаток. От игры зависят `attributes`, и их отдаёт эндпоинт
    схемы: поля, их типы и какие из них обязательны.

    ```bash theme={null}
    curl https://api.moonup.gg/v1/offers/games/roblox/categories/accounts/schema
    ```

    Этот путь принимает `slug` игры. Остальные пути каталога адресуют игру по
    `id`, который возвращает `GET /v1/offers/games`, — на slug они ответят `400`.

    Чтение каталога публичное — его можно изучить ещё до получения ключа.
  </Step>
</Steps>

## Статусы

Новый оффер — `draft`: он ваш, и никто другой его не видит. `publish` делает
его `active`, и с этого момента его можно купить — предварительной проверки
нет. Опубликовать оффер, которому нечего продать, нельзя — ответ `409`:
сначала добавьте остаток. Редактирование не меняет статус: `active` остаётся
в продаже, `draft` остаётся черновиком.

`paused` тоже в ваших руках — через pause и unpause. `archived` — конечная
точка: `DELETE` снимает оффер насовсем, но вы по-прежнему можете его читать.
`reserved` и `sold` меняются заказами, а не вызовами. `removed` — снятие
модерацией постфактум, ни один вызов этого API его не выполняет.

## Цены

Все цены в API — целые числа в центах США. `price: 4990` — это \$49.90.
Дробных сумм нет, единственная валюта — `USD`.

## Что дальше

<CardGroup cols={2}>
  <Card title="Аутентификация" icon="key" href="/ru/authentication">
    Ключи, списки разрешённых адресов, лимиты и что означают ошибки.
  </Card>

  <Card title="Справочник API" icon="square-terminal" href="/ru/api-reference/catalog/list-games">
    Все эндпоинты и песочница, из которой можно отправлять живые запросы.
  </Card>
</CardGroup>
