Частые вопросы

О Moddingflow

Moddingflow это сообщество для модов, сборок, гайдов и обсуждений по играм. Здесь можно искать материалы, публиковать свои работы, задавать вопросы и читать ответы других участников.

Основные разделы находятся на форуме, а список игр и категорий можно открыть через страницу всех игр.

Да. Public API уже включает stable catalog reads с cursor-first keyset pagination, прямые в storage creator upload sessions со status/complete/abort lifecycle endpoints, async job processing через GET /v1/uploads/{upload_id}, download/install-plan endpoints для Mod Manager и делегированные Agent Gateway tools в v1 contract. Catalog cursors являются opaque v1 tokens, привязанными к resource, normalized filters, sort и insertion snapshot первой страницы. Повторное использование с изменённым контекстом возвращает 400, а строки, добавленные после первой страницы, не входят в snapshot этого cursor.

Успешный version write подтверждает committed private/no-store результат. Anonymous catalog/version GET revalidate-ит shared cache при каждом повторном использовании; catalog freshness имеет p95 SLO 15 секунд, search index — 30 минут. Для Mod/ModVersion PATCH передавайте strong ETag в If-Match: без него ответ 428, при stale validator — 412 с текущим ETag. Download resolve до provider signing ограничивает concurrency до 2 anonymous или 4 authenticated leases на actor и 16 на client. Cached PublicModVersion artifact expansion требует scan_status=clean, lifecycle=ready и publication state=published и остаётся eventual. Direct download resolve и install plan — private point-in-time reads по eligible target, чьё established DB state может быть approved или published; direct targets не являются published-only или legacy-only. Upload status показывает current DB state на момент запроса, worker transitions eventual, а progress.available=false означает unknown, не zero. Webhooks feature-gated: когда они включены, delivery eventual, at-least-once, replayable и unordered; пока любой gate выключен, delivery не обещается.

Текущий статус, доступные endpoints и будущие правила интеграции собраны на странице API.

Upload API нужен авторам, командам, CI pipelines и tools, которым нужен Publish to Moddingflow без прохода через browser form на каждом release. Соберите архив локально или через GitHub Actions, загрузите его direct-to-cloud, дождитесь scan/validation и публикуйте new version только после статуса ready.

Используйте individual API keys или OAuth/PAT tokens вместо шаринга main account password. Перед созданием session CI может вызвать POST /v1/uploads:validate: validate-only проверка не создает upload и не пишет bytes. Используйте один стабильный Idempotency-Key на логическую загрузку: retry с тем же body возвращает ту же durable reservation без повторного списания byte quota, а изменённый body конфликтует. Большие архивы используют resumable multipart upload в Cloudflare R2: опрашивайте status.progress и completedParts, обновляйте URL только для missing parts и продолжайте ту же session до 48 часов, пока каждая signed URL остается короткоживущей. Если файл не пройдет validation, упрется в quota, повторит existing version или уйдет в quarantine/review, client получит machine-readable status, error code вроде duplicate_version и request_id для support; отмененная session возвращает lifecycleStatus cancelled. В production отсутствие clean malware verdict блокирует публикацию: явно опасные или заражённые архивы отклоняются, а nested archives, executables и непроверенные RAR/7z остаются в private quarantine до MFA-проверки staff. Account inbox пытается создать дедуплицированное уведомление о failed scan, required review и успешной публикации, но приход уведомления не является lifecycle acknowledgement; client должен продолжать polling machine-readable status.

Когда complete возвращает AsyncJob, сервис сначала изолирует загруженные bytes в private server-only seal; checksum, validation, scan и final copy читают этот immutable seal, а не client-writable staging key. Seal key не выдаётся клиенту и не требует управления. Опрашивайте job.statusEndpoint: queued и processing являются non-terminal; succeeded, rejected, failed и cancelled являются terminal. job.progress честно показывает completion 0/1 вместо примерного scanner percentage. Для диагностики ожидания и retry используйте createdAt, updatedAt, startedAt, completedAt, retry.attempt, retry.maxAttempts, retry.nextAttemptAt, retry.retryable и Retry-After. Terminal failure возвращает стабильный reason code, но не raw provider prose.

Для automation важен и HTTP-статус complete: queued или processing возвращаются как 202 Accepted с Location, равным job.statusEndpoint. Уже terminal job, включая replay того же завершённого результата с исходным Idempotency-Key, возвращается как 200 OK без повторения операции.

Каждый team member создает собственный resource-scoped key через POST /v1/api-keys и не получает owner session cookie. Create и rotate требуют Idempotency-Key. Повтор с тем же header и тем же request не выполняет credential mutation второй раз; поскольку raw secret никогда не сохраняется, завершённый replay возвращает idempotency_replay_unavailable без operation-shaped committed metadata. Проверьте key через GET /v1/api-keys или revoke его до новой mutation. Raw secret показывается one-time, сервер хранит только token_hash и safe fingerprint; GET /v1/api-keys/capabilities показывает scopes и projects. Роли owner, maintainer, publisher и reviewer ограничивают mods:write, versions:write, files:upload, versions:publish, versions:archive, files:manage и teams:admin. Rotation выполняется через POST /v1/api-keys/{api_key_id}/rotate, revoke - через DELETE /v1/api-keys/{api_key_id}, а last_used_at и key id/fingerprint остаются в audit без secret.

Не передавайте один owner key, owner password или session cookie. Выдавайте каждому участнику individual resource-scoped key для нужного мода с smallest scopes, необходимыми его роли. Назначайте доступ owner, maintainer, publisher или reviewer в Настройки > Для разработчиков. raw secret показывается one-time.

Проверяйте last_used_at и safe key fingerprint, используйте rotate при плановой замене и сразу revoke ключ при подозрении на утечку или после ухода участника. Audit records связывают действие с actor и key, но не хранят и не показывают secret.

Не публикуйте, не переименовывайте и не перепаковывайте архив, чтобы обойти failed scan. Отклонённый или сомнительный файл остаётся private со статусом failed или quarantined/review. Откройте Настройки > Для разработчиков или вызовите GET /v1/uploads/{upload_id}, затем сохраните supportCorrelationId (также X-Upload-Correlation-Id), request_id, trace_id и error code вроде av_scan_rejected для support. Correlation id безопасно передать support, но он не заменяет авторизацию.

Заведомо опасные или заражённые архивы отклоняются. Файлы, которым нужны дополнительные доказательства, остаются private до manual review. Следуйте recovery details из ответа, дождитесь review, если он запрошен, и создавайте new session только после исправления найденной проблемы в source или архиве.

Оба пути используют same upload-session backend, private Cloudflare R2 storage, validation, scan и quarantine/review gates. manual browser form удобна для редких релизов с пошаговым интерфейсом. API upload создан для повторяемых local tools и CI, с Idempotency-Key retries, resumable multipart transfer, status.progress и machine-readable failures.

Automation не ослабляет security checks и не делает файл публичным раньше. Выберите подходящий интерфейс; same security gates должны вернуть ready до publish.

Для signed single PUT оба клиента обязаны отправить все возвращённые headers, включая If-None-Match: *. Conditional 412 означает ambiguous existing write, а не безопасную причину перезаписать объект: вызовите тот же complete endpoint, после чего server verification через HEAD, immutable seal и SHA-256 определит результат.

Да. Используйте official GitHub Action или CLI и храните MODDINGFLOW_API_KEY в GitHub environment or repository secret. Никогда не помещайте его в workflow YAML, repository variables, logs, command arguments, artifacts или committed state file.

Используйте resource-scoped, least-privilege key, для staging и production предпочитайте protected environment с approval, сохраняйте permissions: contents: read, если workflow не доказал необходимость большего, и pin Action на проверенный 40-character commit SHA. После утечки выполните rotate или revoke. Полный workflow есть в API docs.

Начни с API docs, затем открой API reference или скачай OpenAPI JSON. SDK сейчас repo-only source artifact до package publishing и not published to npm, PyPI, or NuGet; открой SDK source page, затем используй local imports из sdk/csharp/Moddingflow.PublicApi, sdk/typescript/src/moddingflow-public-api.ts или sdk/python/moddingflow_public_api.

Актуальная матрица поддержки и EOL описана в docs/public-api/SDK-SUPPORT-AND-EOL.md. Это Preview source artifacts: package version и contract version учитываются отдельно, а registry publication, support SLA, signature и стабильные EOL-обязательства появятся только после immutable stable release.

Нет. Deprecation - это migration signal, а не немедленное изменение runtime behavior. Stable v1 сохраняет old clients рабочими как минимум на 90 days или two stable API releases notice, в зависимости от того, какое окно безопаснее для миграции.

Deprecated operations или capabilities используют Deprecation и Sunset response headers, когда это можно показать во время HTTP response, плюс migration guide и changelog entry. В течение notice window old clients сохраняют same status codes, same field types, aliases, scopes, Problem Details codes, cursor semantics и upload/download/webhook lifecycle behavior. Repository release gate отклоняет Sunset, пока committed migration guide, готовый non-deprecated replacement, dated telemetry evidence и support plan с явными owner и approver не привязаны к тем же deprecation и sunset dates.

А release notes, migration guide и changelog для deprecation path открываются на странице API changelog.

Auth lifecycle публичного API использует OAuth под https://api.moddingflow.com. Разработчик регистрирует self-service user applications в разделе Настройки > Для разработчиков по адресу /account/developer/applications. Authorization Code + PKCE всегда показывает явное согласие на запрошенные scopes и сообщает, что одобренные разрешения действуют для всех ресурсов, к которым у аккаунта есть доступ; для resource-restricted automation используется PAT. Базовые scopes чтения и установки одобряются для приложения автоматически, а чувствительные scopes требуют review и недавнего AAL2-подтверждения через 2FA до завершения согласия. Клиент получает короткоживущий access token и не должен хранить пароль пользователя. OAuth access token разрешает вызовы API, а отдельный OpenID Connect ID token только подтверждает личность пользователя клиенту. OIDC-клиент запрашивает openid со свежим nonce и проверяет RS256-подпись, issuer, audience, time claims и nonce через discovery/JWKS. Если OIDC discovery недоступен, клиент должен остаться в OAuth-only режиме.

Device Flow clients должны учитывать interval и backoff после slow_down, а пользователь может отклонить запрос с access_denied. Refresh tokens меняются при каждом refresh, а повторное использование старого токена немедленно отзывает всё семейство refresh tokens. Personal Access Tokens показываются один раз, хранятся только как hashes и поддерживают create-before-revoke rotation с максимальным 10-минутным overlap, scopes, expiry, last used timestamp и audit trail. Каждый API-запрос требует осмысленный User-Agent вида ApplicationName/ApplicationVersion; PAT mutations также требуют стабильные X-Moddingflow-Client и X-Moddingflow-Client-Version. Некорректная identity возвращает invalid_client_identity до rate limiting или business change. Подробности по текущему контракту есть на странице API.

Публичный API проверяет лимиты маршрутов, размера тела запроса, байтового бюджета, per-user, per-application и per-token limits до операций хранения, подписания, загрузки, скачивания, RPC или Agent Gateway. Слишком большие тела запроса возвращают 413. Перегруженный или подозрительный клиент получает 429 как application/problem+json с Retry-After, а также RateLimit-Limit, RateLimit-Remaining и RateLimit-Reset, когда доступна корзина лимита; повторять запрос нужно с задержкой после этого окна. Для download-specific 429 сохрани download_job.id, grant_id, bytes_received, etag и next_attempt_at, затем после Retry-After повтори запрос с job_id и монотонным progress: сервер сохранит тот же job и зарезервированный grant без нового provider effect.

Operational dashboards и audit trails группируют эти события по client_id, actor_user_id, token_id_or_api_key_id, scope и token_kind, чтобы maintainers отличали обычные всплески трафика от token abuse.

Public API webhooks используют owner-scoped subscriptions и стабильные event names: mod.updated, version.published, file.ready, file.failed, upload.completed, scan.completed, token.changed и app.changed. Каждое delivery body содержит delivery_id, kind, created_at и data, а каждый запрос подписан через X-Moddingflow-Signature с HMAC-SHA256 over `${timestamp}.${raw_body}` плюс X-Moddingflow-Timestamp.

Webhook delivery работает по модели at-least-once, допускает replay и не гарантирует порядок. Receiver должен быстро вернуть 2xx, обрабатывать событие асинхронно, отклонять устаревший timestamp, дедуплицировать бизнес-эффект по event_id, хранить delivery_id для диагностики и получать актуальное состояние ресурса перед изменениями. Используй GET /v1/webhook-deliveries для истории attempts, а POST /v1/webhook-deliveries/{delivery_id}/redeliver с Idempotency-Key — для связанной redelivery. Repeated terminal failures могут disable the subscription. Полный контракт описан на странице API.

Только через делегированные Agent Gateway tokens. Агент получает short-lived token с audience agent-gateway, узкими scopes и actor/delegation metadata; полный user session token ему не передается.

Read tools могут искать моды, читать детали мода, строить install plan, сравнивать версии и безопасно делать download resolve. Write-capable tools по умолчанию работают как dry-run, а publish, delete/archive, permission changes и paid/restricted access changes требуют explicit confirmation.

Нет. Public API использует стабильные UUID или lifecycle ids для игр, модов, сборок, versions, logical files, physical blobs, upload sessions, download grants, tokens и webhook deliveries там, где эти ресурсы публичны. Внутренние forum/topic ID остаются деталями сайта и не считаются внешним контрактом.

Это позволяет старым страницам продолжать работать, а Mod Manager и интеграциям получать canonical resources без forum naming leaks. Slugs, filenames, storage object names и hashes являются aliases или verification data, а не durable external keys. Переименования, metadata rebuilds и slug changes сохраняют public IDs; замена байтов файла создает новый physical blob и может создать новую logical artifact/version binding.

Сайт поддерживает русский, английский и немецкий языки. Основной язык интерфейса выбирается в настройках и сохраняется в профиле и cookie.

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

Нет. Публичные ID являются opaque UUID и не зависят от slug, названия, имени файла, URL, CDN, хеша или адреса хранилища. Rename и metadata-only edits сохраняют ID. Новые bytes создают новый Blob и, когда меняется логический файл или версия, новый Artifact/Version ID.

Archive и withdraw можно восстановить по разрешенному lifecycle-переходу. Permanent deletion оставляет tombstone: lookup возвращает HTTP 410 Gone, а прежний ID и его source binding никогда не выдаются другому ресурсу.

Скачивания и резервный CDN

Подождите немного, затем используйте кнопку ручного открытия, если браузер заблокировал новую вкладку. Не закрывайте страницу Moddingflow, пока ссылка скачивания не появится.

Если скачивание всё равно не работает, попробуйте повторить после смены сети или VPN-маршрута. Сайт проверяет основной маршрут Cloudflare перед резервным CDN.

Cloudflare R2 остаётся основным источником архивов модов. Bunny CDN используется только как резервный Pull CDN, если основной маршрут недоступен именно для вас.

Резервные ссылки короткоживущие и привязаны к конкретному файлу. Это не постоянные публичные зеркала и не обход лимитов скачивания, предупреждений о контенте или проверок аккаунта.

Mod Manager сначала запрашивает install plan с версией игры, platform, loader, release channel, типизированными required/optional/conflict/embedded зависимостями, выбранными artifacts, причинами решения, стабильными plan/item IDs, порядком установки, expected archive layout, warnings и per-file hashes. Одинаковый normalized input при неизменном catalog возвращает те же IDs; embedded dependency не добавляет отдельный download step, а optional step включается только по запросу. Затем download resolve создает короткоживущий download grant и возвращает primary/fallback route, legacy alias sha256, canonical SHA-256 verifier hashes.sha256, size_bytes и resume policy. SHA-256 проверяет полный сохранённый объект: клиент собирает все Range части, сверяет size_bytes и только затем проверяет digest. ETag — opaque validator одной transport representation для conditional request и resume; он не является криптографическим digest или file identity и не переносится между providers. Resolve endpoint всегда отвечает 200 JSON grant, не использует 302 redirect и не стримит binary body. RFC 9530 Content-Digest и Repr-Digest текущим signed transport не гарантируются. SHA-1 или MD5 могут появляться только как optional compatibility metadata.

Version response может дополнительно содержать PublicModVersion.artifacts. Это optional expansion только для managed primary artifact с size_bytes > 0, точным sha256/hashes.sha256, actual AV scan_status=clean из current upload session, совпавшей одновременно по file_id и final_blob_id, lifecycle=ready, publication state=published и доступным managed resolve. Стабильные artifact_ids остаются всегда; для legacy artifact поле artifacts будет omitted, а не заполнено выдуманными метаданными. В download_metadata есть только relative resolve_endpoint и truthful range_supported: provider URL там нет, и клиент не должен его конструировать или сохранять.

Да. Если VPN делает Cloudflare доступным, скачивание использует основную ссылку Cloudflare R2.

Если браузер не может выполнить проверочный запрос Cloudflare, Moddingflow может запросить короткоживущую резервную Bunny-ссылку для того же архива.

Аккаунт и регистрация

Проверьте, что email введен без ошибок, пароль соответствует требованиям формы, а письмо подтверждения не попало в спам. Если ссылка подтверждения устарела, начните регистрацию заново.

Если аккаунт уже создан, попробуйте войти или восстановить пароль со страницы входа.

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

После входа откройте личный кабинет, чтобы настроить профиль, безопасность и подписку.

Архив загружается напрямую из браузера в Cloudflare R2 по короткоживущей подписанной ссылке. Это основное хранилище архивов модов и сборок на Moddingflow.

Сайт создаёт upload-сессию и проверяет файл перед публикацией. В политике конфиденциальности описано, какие технические данные Cloudflare/R2 и Moddingflow могут обработать.

Для обычных аккаунтов доступны до 3 основных файлов по 500 MB и до 5 опциональных файлов по 100 MB. Premium сохраняет это число файлов, но повышает размер: до 4 GB для каждого основного файла и до 250 MB для каждого опционального файла. Minecraft использует отдельную систему лимитов.

Вы вернетесь на экран загрузки мода, а введенные поля и выбранные файлы останутся на месте, пока вкладка открыта.

Временные изображения и файлы, которые успели загрузиться в неудачной попытке, очищаются автоматически. После ошибки проверьте сообщение на форме и попробуйте опубликовать мод снова.

Premium это подписка сайта на 30 дней. Она убирает ожидание перед скачиванием, повышает лимиты загрузки архивов модов и открывает GIF-аватары, GIF-баннеры, шрифт никнейма, градиент никнейма и emoji-статус.

Для обычных модов бесплатный аккаунт может загрузить до 3 основных файлов по 500 MB и до 5 опциональных файлов по 100 MB. Premium оставляет те же слоты, но повышает размер до 4 GB для каждого основного файла и до 250 MB для каждого опционального файла. Minecraft использует отдельные лимиты.

Premium не обещает повышенную скорость скачивания, отдельную Premium-поддержку или приоритетный ответ поддержки. Управление подпиской находится в личном кабинете.

Никнейм меняется в личном кабинете, в разделе профиля. После изменения проверьте публичную страницу, чтобы убедиться, что имя, аватар и описание выглядят правильно.

Платежи и подписка

Откройте страницу платежей, войдите в аккаунт и нажмите покупку Premium. Оплата проходит на странице Stripe, а данные карты остаются у Stripe.

Premium оформляется периодами по 30 дней. Актуальная цена показывается на странице платежей перед переходом к оплате, а перед покупкой нужно подтвердить, что доступ начнется сразу после успешного платежа.

Отмена находится на странице платежей. Нажмите отмену продления, если хотите выключить следующий автоматический платеж.

После отмены Premium остается активным до конца текущего оплаченного периода. Если известна точная дата окончания доступа, она показывается в платежном блоке.

Premium работает периодами по 30 дней. Если автопродление включено, Stripe планирует следующий платеж на начало следующего периода.

Если продление отменено, следующий автоматический платеж не планируется, а Premium остается доступен до конца уже оплаченного срока.

Для первого оформления Premium или перехода пробного периода в платный может быть доступен 14-дневный отказ от договора. Обычное автопродление не открывает новое автоматическое 14-дневное окно.

Если отказ доступен, страница платежей покажет действие для отказа и расчет неиспользованной части периода. Если автоматический возврат невозможен, запрос уходит на ручную проверку или другое документированное решение.

Квитанции открываются со страницы платежей на страницах Stripe. Данные карты управляются только в Stripe Portal.

Если пишете в поддержку по платежу, укажите email аккаунта и ID квитанции Stripe. Не отправляйте номер карты, CVC и скриншоты с полными платежными данными.

Личный кабинет и публикации

Откройте личный кабинет. Там собраны ваши темы, сообщения, моды, сборки и другие публичные материалы, если они привязаны к вашему аккаунту.

Профиль, аватар, обложка и описание редактируются в личном кабинете. Загружайте только изображения подходящего формата и не размещайте в профиле чужие материалы без разрешения.

Если используете Premium-оформление, проверьте, что GIF и визуальные эффекты не нарушают правила сайта.

Публичная страница показывает имя, аватар, описание и открытые публикации. Приватные платежные данные, email, настройки безопасности и служебные записи не показываются.

Подробнее о данных аккаунта написано в политике конфиденциальности.

Автор сборки может добавить отдельный блок вопросов и ответов при публикации или редактировании сборки. Он подходит для ответов про установку, конфликты, требования и прохождение.

Такой блок отображается на странице сборки во вкладке FAQ или Questions and answers и отличается от этой общей страницы поддержки.

Безопасность и доступ

Если вы вошли в аккаунт, смените пароль в настройках безопасности личного кабинета. Если войти не получается, используйте восстановление пароля на странице входа.

Двухфакторная аутентификация включается в личном кабинете в разделе безопасности. Сохраните резервный доступ к приложению-аутентификатору до выхода из аккаунта.

Да. В разделе Настройки > Для разработчиков можно отключить OAuth-приложение, заменить или отозвать personal access tokens и API keys. Отключение приложения применяется немедленно: новые authorization и token requests блокируются, а выпущенные для приложения access tokens отклоняются. Отзыв OAuth-доступа через https://api.moddingflow.com/oauth/revoke отзывает семейство refresh tokens; повторное использование старого refresh token также отзывает всё семейство. При PAT rotation старый secret действует не дольше 10-минутного overlap, чтобы клиент успел переключиться; явный revoke применяется немедленно.

Начните с восстановления пароля через страницу входа и проверьте почту. Если аккаунт заблокирован модерацией, внимательно прочитайте причину и сверяйтесь с правилами сайта.

Удаление аккаунта запускается из личного кабинета, если эта функция доступна для вашего профиля. Перед удалением скачайте данные, которые хотите сохранить.

Некоторые публичные материалы могут быть сохранены или обезличены, если это нужно для целостности обсуждений, безопасности, юридических обязанностей или модерации. Детали описаны в политике конфиденциальности.

Экспорт данных находится в личном кабинете. Он помогает получить копию данных профиля и связанных записей, которые сайт может отдать пользователю.

Большие наборы записей выгружаются ограниченными секциями. Если секция обрезана, JSON-файл содержит metadata продолжения, чтобы поддержка могла определить, какие данные остались.

Если нужны юридические основания обработки данных, откройте политику конфиденциальности.

Контент и авторские права

Откройте жалобу на контент из футера сайта и приложите ссылки на оригинал, спорную публикацию и доказательства авторства. Чем точнее описание, тем быстрее модерация поймет проблему.

Запрещенные действия с чужими модами и файлами описаны в правилах сайта.

Перевод можно публиковать только если это разрешено автором оригинала, лицензией или правилами площадки, где опубликован оригинальный мод. Укажите автора, ссылку на оригинал и условия использования.

Если разрешения нет или лицензия запрещает перераспространение, не загружайте чужие файлы. Вместо этого можно опубликовать инструкцию и дать ссылку на оригинальный мод.

Правила сайта

Полная версия находится на странице правил сайта. Перед публикацией модов, сборок, переводов и спорного контента лучше проверить именно ее.

Нельзя публиковать пиратские файлы, украденные моды, вредоносное ПО, стилеры, майнеры, доксинг, травлю, незаконный контент, DRM-кряки, варез и материалы, нарушающие правила игры или платформы.

Для NSFW и 18+ контента действуют отдельные ограничения. Перед публикацией сверяйтесь с правилами сайта.

Модерация может скрыть материал, удалить файл, выдать предупреждение, ограничить действия аккаунта или заблокировать аккаунт. Решение зависит от нарушения, истории аккаунта и риска для пользователей.

Удаление одного материала не означает, что весь остальной контент автора автоматически одобрен. Каждый спорный материал может проверяться отдельно.