Главная/О проекте/API/Reference

Moddingflow API reference

Endpoint, response codes, scopes, request bodies и schema catalog берутся напрямую из проверяемого OpenAPI artifact. Если contract меняется, эта страница меняется вместе с ним.

OpenAPI

3.1.0

Операции

62

Схемы

219

Base URLs

https://moddingflow.com/v1

Primary public API namespace.

https://moddingflow.com/api/v1

Compatibility namespace on the same production origin.

Endpoints

Account

GET

Read the current account access snapshot.

/me

Operation ID
getCurrentAccount
Path template
/me
Responses
200, 401, 403, 429, 500
Scopes
account:read
Request body
Без body

Responses

200Current dynamic account snapshot.
application/json

Schema refs

CurrentAccountResponse

Примеры

{"ok":true,"data":{"access_revision":1,"access_updated_at":"2026-07-11T10:30:00Z","change_categories":["example-value"],"profile":{"user_id":"550e8400-e29b-41d4-a716-446655440000","nickname":"Example Mod","mention_tag":"mod_author","preferred_language":"ru","selected_status":"admin","effective_status":"admin","avatar_path":"example-value","nickname_change_count":0,"nickname_next_change_at":"2026-07-11T10:30:00Z"},"entitlements":{"premium_tier":"free","premium_until":"2026-07-11T10:30:00Z","download_speed_profile":"example-value"},"site_roles":["member"],"capabilities":{"credential":{"id":"550e8400-e29b-41d4-a716-446655440000","fingerprint":"example-value","kind":"access_token","resource_scope_mode":"all"},"credential_scopes":["openid"],"resource_authorization":"dynamic_per_request"},"limits":{"request_rate":{"account":1,"client":1,"ip":1,"token":1,"window_seconds":1}},"usage":{"account_request_bucket":{"count":0,"reset_at":"2026-07-11T10:30:00Z"}}}}
mod_author
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"access_revision":1,"access_updated_at":"2026-07-11T10:30:00Z","change_categories":["example-value"],"profile":{"user_id":"550e8400-e29b-41d4-a716-446655440000","nickname":"Example Mod","mention_tag":"mod_author","preferred_language":"ru","selected_status":"admin","effective_status":"admin","avatar_path":"example-value","nickname_change_count":0,"nickname_next_change_at":"2026-07-11T10:30:00Z"},"entitlements":{"premium_tier":"free","premium_until":"2026-07-11T10:30:00Z","download_speed_profile":"example-value"},"site_roles":["member"],"capabilities":{"credential":{"id":"550e8400-e29b-41d4-a716-446655440000","fingerprint":"example-value","kind":"access_token","resource_scope_mode":"all"},"credential_scopes":["openid"],"resource_authorization":"dynamic_per_request"},"limits":{"request_rate":{"account":1,"client":1,"ip":1,"token":1,"window_seconds":1}},"usage":{"account_request_bucket":{"count":0,"reset_at":"2026-07-11T10:30:00Z"}}}}
mod_author
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

Read the authenticated user's safe public profile context.

/me/profile

Operation ID
getCurrentAccountProfile
Path template
/me/profile
Responses
200, 401, 403, 429, 500, 503
Scopes
profile:read
Request body
Без body

Responses

200Safe current profile metadata.
application/json

Schema refs

CurrentAccountReadProfileResponse

Примеры

{"ok":true,"data":{"user_id":"550e8400-e29b-41d4-a716-446655440000","nickname":"Example Mod","mention_tag":"example-value","avatar_url":"https://example.invalid/moddingflow-resource","preferred_language":"ru","status":"admin","updated_at":"2026-07-11T10:30:00Z"}}
  • Cache-Control

    Prevents storage of the authenticated profile response.

  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"user_id":"550e8400-e29b-41d4-a716-446655440000","nickname":"Example Mod","mention_tag":"example-value","avatar_url":"https://example.invalid/moddingflow-resource","preferred_language":"ru","status":"admin","updated_at":"2026-07-11T10:30:00Z"}}
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
503Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
PATCH

Update supported public profile fields.

/me/profile

Operation ID
updateCurrentAccountProfile
Path template
/me/profile
Responses
200, 400, 401, 403, 409, 429, 500
Scopes
profile:write
Request body
Нужен body

Request body

application/jsonОбязательно

Schema refs

CurrentAccountProfilePatch

Примеры

{"nickname":"Example Mod","mention_tag":"mod_author","preferred_language":"ru","selected_status":"admin"}
mod_author

Responses

200Updated safe profile metadata.
application/json

Schema refs

CurrentAccountProfileResponse

Примеры

{"ok":true,"data":{"user_id":"550e8400-e29b-41d4-a716-446655440000","nickname":"Example Mod","mention_tag":"mod_author","preferred_language":"ru","selected_status":"admin","effective_status":"admin","avatar_path":"example-value","nickname_change_count":0,"nickname_next_change_at":"2026-07-11T10:30:00Z"}}
mod_author
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"user_id":"550e8400-e29b-41d4-a716-446655440000","nickname":"Example Mod","mention_tag":"mod_author","preferred_language":"ru","selected_status":"admin","effective_status":"admin","avatar_path":"example-value","nickname_change_count":0,"nickname_next_change_at":"2026-07-11T10:30:00Z"}}
mod_author
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

List resources accessible to the current account.

/me/resources

Operation ID
listCurrentAccountResources
Path template
/me/resources
Responses
200, 400, 401, 403, 429, 500
Scopes
account:read
Request body
Без body

Параметры

  • querycursorОпционально

    Opaque cursor returned by the previous page.

    Schema refs

    string

    Примеры

    v1.example-opaque-cursor
  • querykindОпционально

    Schema refs

    string

    Примеры

    mod

Responses

200Current resource roles and effective capabilities.
application/json

Schema refs

CurrentAccountResourceListResponse

Примеры

{"ok":true,"data":{"resources":[{"resource_id":"550e8400-e29b-41d4-a716-446655440000","resource_kind":"mod","role":"owner","capabilities":["openid"],"title":"Representative Moddingflow example","slug":"example-mod"}],"page_size":50,"next_cursor":"v1.example-opaque-cursor"}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"resources":[{"resource_id":"550e8400-e29b-41d4-a716-446655440000","resource_kind":"mod","role":"owner","capabilities":["openid"],"title":"Representative Moddingflow example","slug":"example-mod"}],"page_size":50,"next_cursor":"v1.example-opaque-cursor"}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444

Agent Gateway

GET

List Agent Gateway tools.

/agent/tools

Operation ID
listAgentGatewayTools
Path template
/agent/tools
Responses
200, 401, 403, 429, 500
Scopes
Без OAuth scopes
Request body
Без body

Параметры

  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request headers

  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Responses

200Agent Gateway tool registry.
application/json

Schema refs

AgentToolRegistryResponse

Примеры

{"ok":true,"data":{"audience":"agent-gateway","dry_run_default":true,"mcp_facade":"example-value","policy":{"arbitrary_url_fetch":false,"download_actions":"example-value","private_data_exfiltration":false,"redaction_in_logs":true},"schema_version":1,"supported_schema_versions":[1],"tools":[{"name":"mods.search","title":"Representative Moddingflow example","mode":"read","requiredScopes":["openid"],"dryRunDefault":true,"confirmationRequiredFor":["example-value"],"description":"Representative value for the public API contract.","schemaVersion":1}]}}
  • X-Moddingflow-Agent-Schema-Version

    Agent Gateway tool schema version used by this response.

    Schema refs

    integer
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"audience":"agent-gateway","dry_run_default":true,"mcp_facade":"example-value","policy":{"arbitrary_url_fetch":false,"download_actions":"example-value","private_data_exfiltration":false,"redaction_in_logs":true},"schema_version":1,"supported_schema_versions":[1],"tools":[{"name":"mods.search","title":"Representative Moddingflow example","mode":"read","requiredScopes":["openid"],"dryRunDefault":true,"confirmationRequiredFor":["example-value"],"description":"Representative value for the public API contract.","schemaVersion":1}]}}
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Run an Agent Gateway tool.

/agent/tools:run

Operation ID
runAgentGatewayTool
Path template
/agent/tools:run
Responses
200, 400, 401, 403, 404, 422, 429, 500
Scopes
agent:run, agent:tools:download, agent:tools:publish_draft, agent:tools:read
Request body
Нужен body

Параметры

  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request headers

  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

AgentToolRunRequest

Примеры

{"tool":"mods.search","input":{},"dry_run":true,"schema_version":1,"confirmation_token":"example-redacted-token"}

Responses

200Agent tool result.
application/json

Schema refs

AgentToolRunResponse

Примеры

{"ok":true,"data":{"tool":"mods.search","dry_run":true,"explanation":"example-value","schema_version":1,"data":{}}}
  • X-Moddingflow-Agent-Schema-Version

    Agent Gateway tool schema version used by this response.

    Schema refs

    integer
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"tool":"mods.search","dry_run":true,"explanation":"example-value","schema_version":1,"data":{}}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444

Auth

GET

Get OIDC public signing keys.

/.well-known/jwks.json

Operation ID
getJsonWebKeySet
Path template
/.well-known/jwks.json
Responses
200, 500, 503
Scopes
Без OAuth scopes
Request body
Без body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Responses

200JSON Web Key Set containing public verification keys.
application/jwk-set+json

Schema refs

JsonWebKeySet

Примеры

{"keys":[{"kty":"RSA","kid":"example-value","use":"sig","alg":"RS256","n":"example-valuexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","e":"example-value"}]}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"keys":[{"kty":"RSA","kid":"example-value","use":"sig","alg":"RS256","n":"example-valuexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","e":"example-value"}]}
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
503Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

Get OAuth authorization server metadata.

/.well-known/oauth-authorization-server

Operation ID
getOAuthAuthorizationServerMetadata
Path template
/.well-known/oauth-authorization-server
Responses
200, 500
Scopes
Без OAuth scopes
Request body
Без body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Responses

200OAuth authorization server metadata document.
application/json

Schema refs

OAuthAuthorizationServerMetadata

Примеры

{"issuer":"https://moddingflow.com","authorization_endpoint":"https://moddingflow.com/oauth/authorize","device_authorization_endpoint":"https://moddingflow.com/oauth/device_authorization","registration_endpoint":"https://moddingflow.com/oauth/register","token_endpoint":"https://moddingflow.com/oauth/token","revocation_endpoint":"https://moddingflow.com/oauth/revoke","introspection_endpoint":"https://moddingflow.com/oauth/introspect","response_types_supported":["code"],"grant_types_supported":["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange"],"code_challenge_methods_supported":["S256"],"token_endpoint_auth_methods_supported":["none","client_secret_basic","client_secret_post"],"scopes_supported":["openid"]}
["code"]
["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange"]
["S256"]
["none","client_secret_basic","client_secret_post"]
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"issuer":"https://moddingflow.com","authorization_endpoint":"https://moddingflow.com/oauth/authorize","device_authorization_endpoint":"https://moddingflow.com/oauth/device_authorization","registration_endpoint":"https://moddingflow.com/oauth/register","token_endpoint":"https://moddingflow.com/oauth/token","revocation_endpoint":"https://moddingflow.com/oauth/revoke","introspection_endpoint":"https://moddingflow.com/oauth/introspect","response_types_supported":["code"],"grant_types_supported":["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange"],"code_challenge_methods_supported":["S256"],"token_endpoint_auth_methods_supported":["none","client_secret_basic","client_secret_post"],"scopes_supported":["openid"]}
["code"]
["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange"]
["S256"]
["none","client_secret_basic","client_secret_post"]
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

Get OpenID Connect provider metadata.

/.well-known/openid-configuration

Operation ID
getOidcDiscovery
Path template
/.well-known/openid-configuration
Responses
200, 500, 503
Scopes
Без OAuth scopes
Request body
Без body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Responses

200OpenID Connect provider metadata document.
application/json

Schema refs

OidcDiscoveryResponse

Примеры

{"issuer":"https://moddingflow.com","authorization_endpoint":"https://moddingflow.com/oauth/authorize","device_authorization_endpoint":"https://moddingflow.com/oauth/device_authorization","registration_endpoint":"https://moddingflow.com/oauth/register","token_endpoint":"https://moddingflow.com/oauth/token","revocation_endpoint":"https://moddingflow.com/oauth/revoke","introspection_endpoint":"https://moddingflow.com/oauth/introspect","jwks_uri":"https://moddingflow.com/.well-known/jwks.json","response_types_supported":["code"],"response_modes_supported":["query"],"grant_types_supported":["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange"],"code_challenge_methods_supported":["S256"],"token_endpoint_auth_methods_supported":["none","client_secret_basic","client_secret_post"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256"],"claims_supported":["iss","sub","aud","exp","iat","nonce"],"scopes_supported":["openid"]}
["code"]
["query"]
["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange"]
["S256"]
["none","client_secret_basic","client_secret_post"]
["public"]
["RS256"]
["iss","sub","aud","exp","iat","nonce"]
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"issuer":"https://moddingflow.com","authorization_endpoint":"https://moddingflow.com/oauth/authorize","device_authorization_endpoint":"https://moddingflow.com/oauth/device_authorization","registration_endpoint":"https://moddingflow.com/oauth/register","token_endpoint":"https://moddingflow.com/oauth/token","revocation_endpoint":"https://moddingflow.com/oauth/revoke","introspection_endpoint":"https://moddingflow.com/oauth/introspect","jwks_uri":"https://moddingflow.com/.well-known/jwks.json","response_types_supported":["code"],"response_modes_supported":["query"],"grant_types_supported":["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange"],"code_challenge_methods_supported":["S256"],"token_endpoint_auth_methods_supported":["none","client_secret_basic","client_secret_post"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256"],"claims_supported":["iss","sub","aud","exp","iat","nonce"],"scopes_supported":["openid"]}
["code"]
["query"]
["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange"]
["S256"]
["none","client_secret_basic","client_secret_post"]
["public"]
["RS256"]
["iss","sub","aud","exp","iat","nonce"]
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
503Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

List the current user's API keys without secrets.

/api-keys

Operation ID
listApiKeys
Path template
/api-keys
Responses
200, 401, 403, 429, 500
Scopes
credentials:manage
Request body
Без body

Responses

200Safe API-key metadata.
application/json

Schema refs

ApiKeyListResponse

Примеры

{"ok":true,"data":{"keys":[{"id":"550e8400-e29b-41d4-a716-446655440000","name":"Example Mod","display_prefix":"mfp_example01","fingerprint":"mfp_example01","scopes":["openid"],"resources":[{"resource_kind":"mod","resource_id":"550e8400-e29b-41d4-a716-446655440000"}],"resource_scope_mode":"all","last_used_at":"2026-07-11T10:30:00Z","expires_at":"2026-07-11T10:30:00Z","revoked_at":"2026-07-11T10:30:00Z","revoked_reason":"example-value","rotation_generation":0,"created_at":"2026-07-11T10:30:00Z"}]}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"keys":[{"id":"550e8400-e29b-41d4-a716-446655440000","name":"Example Mod","display_prefix":"mfp_example01","fingerprint":"mfp_example01","scopes":["openid"],"resources":[{"resource_kind":"mod","resource_id":"550e8400-e29b-41d4-a716-446655440000"}],"resource_scope_mode":"all","last_used_at":"2026-07-11T10:30:00Z","expires_at":"2026-07-11T10:30:00Z","revoked_at":"2026-07-11T10:30:00Z","revoked_reason":"example-value","rotation_generation":0,"created_at":"2026-07-11T10:30:00Z"}]}}
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Create an individual resource-scoped API key.

/api-keys

Operation ID
createApiKey
Path template
/api-keys
Responses
201, 400, 401, 403, 404, 409, 429, 500
Scopes
credentials:manage
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001

Request body

application/jsonОбязательно

Schema refs

CreateApiKeyRequest

Примеры

{"name":"Example Mod","scopes":["openid"],"resources":[],"expires_at":"2026-07-11T10:30:00Z"}

Responses

201API key created; copy the one-time secret now.
application/json

Schema refs

ApiKeyOneTimeSecretResponse

Примеры

{"ok":true,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","name":"Example Mod","display_prefix":"mfp_example01","fingerprint":"mfp_example01","scopes":["openid"],"resources":[{"resource_kind":"mod","resource_id":"550e8400-e29b-41d4-a716-446655440000"}],"resource_scope_mode":"all","last_used_at":"2026-07-11T10:30:00Z","expires_at":"2026-07-11T10:30:00Z","revoked_at":"2026-07-11T10:30:00Z","revoked_reason":"example-value","rotation_generation":0,"created_at":"2026-07-11T10:30:00Z","secret":"mfp_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","secret_reveal":"one_time"}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","name":"Example Mod","display_prefix":"mfp_example01","fingerprint":"mfp_example01","scopes":["openid"],"resources":[{"resource_kind":"mod","resource_id":"550e8400-e29b-41d4-a716-446655440000"}],"resource_scope_mode":"all","last_used_at":"2026-07-11T10:30:00Z","expires_at":"2026-07-11T10:30:00Z","revoked_at":"2026-07-11T10:30:00Z","revoked_reason":"example-value","rotation_generation":0,"created_at":"2026-07-11T10:30:00Z","secret":"mfp_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","secret_reveal":"one_time"}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
DELETE

Revoke an API key by id.

/api-keys/{api_key_id}

Operation ID
revokeApiKey
Path template
/api-keys/{api_key_id}
Responses
200, 400, 401, 403, 404, 429, 500
Scopes
credentials:manage
Request body
Без body

Параметры

  • pathapi_key_idОбязательно

    Schema refs

    Uuid

    Примеры

    550e8400-e29b-41d4-a716-446655440000

Responses

200Key is revoked or was already inactive.
application/json

Schema refs

ApiKeyRevocationResponse

Примеры

{"ok":true,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","fingerprint":"example-value","revoked":true,"changed":true}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","fingerprint":"example-value","revoked":true,"changed":true}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Rotate an active API key.

/api-keys/{api_key_id}/rotate

Operation ID
rotateApiKey
Path template
/api-keys/{api_key_id}/rotate
Responses
201, 400, 401, 403, 404, 409, 429, 500
Scopes
credentials:manage
Request body
Без body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • pathapi_key_idОбязательно

    Schema refs

    Uuid

    Примеры

    550e8400-e29b-41d4-a716-446655440000

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001

Responses

201Replacement key created and previous key revoked.
application/json

Schema refs

ApiKeyOneTimeSecretResponse

Примеры

{"ok":true,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","name":"Example Mod","display_prefix":"mfp_example01","fingerprint":"mfp_example01","scopes":["openid"],"resources":[{"resource_kind":"mod","resource_id":"550e8400-e29b-41d4-a716-446655440000"}],"resource_scope_mode":"all","last_used_at":"2026-07-11T10:30:00Z","expires_at":"2026-07-11T10:30:00Z","revoked_at":"2026-07-11T10:30:00Z","revoked_reason":"example-value","rotation_generation":0,"created_at":"2026-07-11T10:30:00Z","secret":"mfp_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","secret_reveal":"one_time"}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","name":"Example Mod","display_prefix":"mfp_example01","fingerprint":"mfp_example01","scopes":["openid"],"resources":[{"resource_kind":"mod","resource_id":"550e8400-e29b-41d4-a716-446655440000"}],"resource_scope_mode":"all","last_used_at":"2026-07-11T10:30:00Z","expires_at":"2026-07-11T10:30:00Z","revoked_at":"2026-07-11T10:30:00Z","revoked_reason":"example-value","rotation_generation":0,"created_at":"2026-07-11T10:30:00Z","secret":"mfp_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","secret_reveal":"one_time"}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

List API-key scopes and accessible publishing projects.

/api-keys/capabilities

Operation ID
getApiKeyCapabilities
Path template
/api-keys/capabilities
Responses
200, 401, 403, 429, 500
Scopes
credentials:manage
Request body
Без body

Responses

200Available scopes, role mapping, and publishing projects.
application/json

Schema refs

ApiKeyCapabilitiesResponse

Примеры

{"ok":true,"data":{"scopes":["openid"],"projects":[{"mod_id":"550e8400-e29b-41d4-a716-446655440000","project_id":"550e8400-e29b-41d4-a716-446655440000","role":"owner","scopes":["openid"]}],"roles":{}}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"scopes":["openid"],"projects":[{"mod_id":"550e8400-e29b-41d4-a716-446655440000","project_id":"550e8400-e29b-41d4-a716-446655440000","role":"owner","scopes":["openid"]}],"roles":{}}}
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

Start Authorization Code with PKCE.

/oauth/authorize

Operation ID
authorizeOAuthClient
Path template
/oauth/authorize
Responses
302, 400, 401, 403, 429, 500
Scopes
Без OAuth scopes
Request body
Без body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Параметры

  • queryclient_idОбязательно

    Opaque registered OAuth client identifier for a first-party or dynamically registered public application.

    Schema refs

    OAuthClientKey

    Примеры

    website
    website
    dcr_550e8400e29b41d4a716446655440000
  • querycode_challengeОбязательно

    PKCE S256 code challenge.

    Schema refs

    string

    Примеры

    example-code-challengexxxxxxxxxxxxxxxxxxxxx
  • querycode_challenge_methodОбязательно

    PKCE method. Plain is not allowed.

    Schema refs

    string

    Примеры

    S256
  • querynonceОпционально

    Required when scope includes openid; copied exactly into the signed ID token.

    Schema refs

    string

    Примеры

    example-value
  • queryredirect_uriОбязательно

    Exact redirect URI registered for the client.

    Schema refs

    string

    Примеры

    https://example.invalid/moddingflow-resource
  • queryresponse_typeОбязательно

    OAuth response type. Must be code.

    Schema refs

    string

    Примеры

    code
  • queryscopeОбязательно

    Space-delimited scope request. Unknown or denied scopes fail closed.

    Schema refs

    string

    Примеры

    mods:read
  • querystateОбязательно

    Opaque CSRF state returned to the client.

    Schema refs

    string

    Примеры

    example-value

Responses

302Redirects back to the registered redirect URI with code and state, or with an OAuth error.
  • Location

    Registered redirect URI with query parameters.

    Schema refs

    string

    Примеры

    https://client.example.invalid/callback?code=example-code&state=example-state
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Create a device authorization grant.

/oauth/device_authorization

Operation ID
createDeviceAuthorization
Path template
/oauth/device_authorization
Responses
200, 400, 401, 403, 429, 500
Scopes
Без OAuth scopes
Request body
Нужен body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Request body

application/x-www-form-urlencodedОбязательно

Schema refs

DeviceAuthorizationRequest

Примеры

{"client_id":"website","client_secret":"example-value","scope":"mods:read files:download install_plans:resolve"}
website
dcr_550e8400e29b41d4a716446655440000
mods:read files:download install_plans:resolve

Responses

200Device authorization instructions.
application/json

Schema refs

DeviceAuthorizationResponse

Примеры

{"device_code":"example-valuexxx","user_code":"example-value","verification_uri":"https://example.invalid/moddingflow-resource","verification_uri_complete":"https://example.invalid/moddingflow-resource","expires_in":60,"interval":5}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"device_code":"example-valuexxx","user_code":"example-value","verification_uri":"https://example.invalid/moddingflow-resource","verification_uri_complete":"https://example.invalid/moddingflow-resource","expires_in":60,"interval":5}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Introspect a token for trusted internal clients.

/oauth/introspect

Operation ID
introspectOAuthToken
Path template
/oauth/introspect
Responses
200, 400, 401, 403, 429, 500
Scopes
Без OAuth scopes
Request body
Нужен body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Request body

application/x-www-form-urlencodedОбязательно

Schema refs

OAuthIntrospectionRequest

Примеры

{"token":"example-redacted-token","token_type_hint":"access_token"}

Responses

200Token introspection result.
application/json

Schema refs

OAuthIntrospectionResponse

Примеры

{"active":true,"scope":"mods:read files:download install_plans:resolve","client_id":"website","sub":"example-value","aud":"example-value","iss":"https://example.invalid/moddingflow-resource","exp":1,"iat":1,"token_type":"example-redacted-token"}
mods:read files:download install_plans:resolve
website
dcr_550e8400e29b41d4a716446655440000
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"active":true,"scope":"mods:read files:download install_plans:resolve","client_id":"website","sub":"example-value","aud":"example-value","iss":"https://example.invalid/moddingflow-resource","exp":1,"iat":1,"token_type":"example-redacted-token"}
mods:read files:download install_plans:resolve
website
dcr_550e8400e29b41d4a716446655440000
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Register a public OAuth client without an account.

/oauth/register

Operation ID
registerOAuthClient
Path template
/oauth/register
Responses
201, 400, 413, 415, 429, 500
Scopes
Без OAuth scopes
Request body
Нужен body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Request body

application/jsonОбязательно

Schema refs

DynamicClientRegistrationRequest

Примеры

{"client_name":"Example Mod","client_uri":"https://manager.example.invalid","contacts":["developer@example.invalid"],"redirect_uris":["http://127.0.0.1/callback"],"grant_types":["authorization_code"],"response_types":["code"],"token_endpoint_auth_method":"none","scope":"openid mods:read files:download install_plans:resolve profile:read","software_id":"550e8400-e29b-41d4-a716-446655440000","software_version":"example-value"}
https://manager.example.invalid

Responses

201Public client registered; retain the one-time management credential.
application/json

Schema refs

DynamicClientRegistrationResponse

Примеры

{"client_id":"dcr_550e8400e29b41d4a716446655440000","client_name":"Example Mod","client_uri":"https://manager.example.invalid","contacts":["developer@example.invalid"],"redirect_uris":["http://127.0.0.1/callback"],"grant_types":["authorization_code"],"response_types":["code"],"token_endpoint_auth_method":"none","scope":"openid mods:read files:download install_plans:resolve profile:read","software_id":"550e8400-e29b-41d4-a716-446655440000","software_version":"example-value","client_id_issued_at":0,"registration_client_uri":"https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000","registration_access_token":"mfrg_6gY5Ej7ueSfxm2bY7A9sQnDA9-D5X67kRvXqXcHDYpw"}
dcr_550e8400e29b41d4a716446655440000
https://manager.example.invalid
openid mods:read files:download install_plans:resolve profile:read
https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000
mfrg_6gY5Ej7ueSfxm2bY7A9sQnDA9-D5X67kRvXqXcHDYpw
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"client_id":"dcr_550e8400e29b41d4a716446655440000","client_name":"Example Mod","client_uri":"https://manager.example.invalid","contacts":["developer@example.invalid"],"redirect_uris":["http://127.0.0.1/callback"],"grant_types":["authorization_code"],"response_types":["code"],"token_endpoint_auth_method":"none","scope":"openid mods:read files:download install_plans:resolve profile:read","software_id":"550e8400-e29b-41d4-a716-446655440000","software_version":"example-value","client_id_issued_at":0,"registration_client_uri":"https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000","registration_access_token":"mfrg_6gY5Ej7ueSfxm2bY7A9sQnDA9-D5X67kRvXqXcHDYpw"}
dcr_550e8400e29b41d4a716446655440000
https://manager.example.invalid
openid mods:read files:download install_plans:resolve profile:read
https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000
mfrg_6gY5Ej7ueSfxm2bY7A9sQnDA9-D5X67kRvXqXcHDYpw
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
413The request body exceeds the documented endpoint limit.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

44444444-4444-4444-8444-444444444444
415The request Content-Type is not supported by this endpoint.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
DELETE

Delete a dynamic client registration.

/oauth/register/{client_id}

Operation ID
deleteOAuthClientRegistration
Path template
/oauth/register/{client_id}
Responses
204, 401, 429, 500
Scopes
Без OAuth scopes
Request body
Без body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Параметры

  • pathclient_idОбязательно

    Opaque dynamically registered OAuth client identifier.

    Schema refs

    OAuthClientKey

    Примеры

    website
    website
    dcr_550e8400e29b41d4a716446655440000

Responses

204The client and all of its credentials are revoked.
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

Read a dynamic client registration.

/oauth/register/{client_id}

Operation ID
getOAuthClientRegistration
Path template
/oauth/register/{client_id}
Responses
200, 401, 429, 500
Scopes
Без OAuth scopes
Request body
Без body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Параметры

  • pathclient_idОбязательно

    Opaque dynamically registered OAuth client identifier.

    Schema refs

    OAuthClientKey

    Примеры

    website
    website
    dcr_550e8400e29b41d4a716446655440000

Responses

200Current client metadata without a management credential.
application/json

Schema refs

DynamicClientRegistrationDocument

Примеры

{"client_id":"dcr_550e8400e29b41d4a716446655440000","client_name":"Example Mod","client_uri":"https://manager.example.invalid","contacts":["developer@example.invalid"],"redirect_uris":["http://127.0.0.1/callback"],"grant_types":["authorization_code"],"response_types":["code"],"token_endpoint_auth_method":"none","scope":"openid mods:read files:download install_plans:resolve profile:read","software_id":"550e8400-e29b-41d4-a716-446655440000","software_version":"example-value","client_id_issued_at":0,"registration_client_uri":"https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000"}
dcr_550e8400e29b41d4a716446655440000
https://manager.example.invalid
openid mods:read files:download install_plans:resolve profile:read
https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"client_id":"dcr_550e8400e29b41d4a716446655440000","client_name":"Example Mod","client_uri":"https://manager.example.invalid","contacts":["developer@example.invalid"],"redirect_uris":["http://127.0.0.1/callback"],"grant_types":["authorization_code"],"response_types":["code"],"token_endpoint_auth_method":"none","scope":"openid mods:read files:download install_plans:resolve profile:read","software_id":"550e8400-e29b-41d4-a716-446655440000","software_version":"example-value","client_id_issued_at":0,"registration_client_uri":"https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000"}
dcr_550e8400e29b41d4a716446655440000
https://manager.example.invalid
openid mods:read files:download install_plans:resolve profile:read
https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
PUT

Replace and rotate a dynamic client registration.

/oauth/register/{client_id}

Operation ID
replaceOAuthClientRegistration
Path template
/oauth/register/{client_id}
Responses
200, 400, 401, 413, 415, 429, 500
Scopes
Без OAuth scopes
Request body
Нужен body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Параметры

  • pathclient_idОбязательно

    Opaque dynamically registered OAuth client identifier.

    Schema refs

    OAuthClientKey

    Примеры

    website
    website
    dcr_550e8400e29b41d4a716446655440000

Request body

application/jsonОбязательно

Schema refs

DynamicClientRegistrationReplacement

Примеры

{"client_id":"website","client_name":"Example Mod","client_uri":"https://manager.example.invalid","contacts":["developer@example.invalid"],"redirect_uris":["http://127.0.0.1/callback"],"grant_types":["authorization_code"],"response_types":["code"],"token_endpoint_auth_method":"none","scope":"openid mods:read files:download install_plans:resolve profile:read","software_id":"550e8400-e29b-41d4-a716-446655440000","software_version":"example-value"}
website
dcr_550e8400e29b41d4a716446655440000
https://manager.example.invalid

Responses

200Replaced client metadata and a rotated management credential.
application/json

Schema refs

DynamicClientRegistrationResponse

Примеры

{"client_id":"dcr_550e8400e29b41d4a716446655440000","client_name":"Example Mod","client_uri":"https://manager.example.invalid","contacts":["developer@example.invalid"],"redirect_uris":["http://127.0.0.1/callback"],"grant_types":["authorization_code"],"response_types":["code"],"token_endpoint_auth_method":"none","scope":"openid mods:read files:download install_plans:resolve profile:read","software_id":"550e8400-e29b-41d4-a716-446655440000","software_version":"example-value","client_id_issued_at":0,"registration_client_uri":"https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000","registration_access_token":"mfrg_6gY5Ej7ueSfxm2bY7A9sQnDA9-D5X67kRvXqXcHDYpw"}
dcr_550e8400e29b41d4a716446655440000
https://manager.example.invalid
openid mods:read files:download install_plans:resolve profile:read
https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000
mfrg_6gY5Ej7ueSfxm2bY7A9sQnDA9-D5X67kRvXqXcHDYpw
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"client_id":"dcr_550e8400e29b41d4a716446655440000","client_name":"Example Mod","client_uri":"https://manager.example.invalid","contacts":["developer@example.invalid"],"redirect_uris":["http://127.0.0.1/callback"],"grant_types":["authorization_code"],"response_types":["code"],"token_endpoint_auth_method":"none","scope":"openid mods:read files:download install_plans:resolve profile:read","software_id":"550e8400-e29b-41d4-a716-446655440000","software_version":"example-value","client_id_issued_at":0,"registration_client_uri":"https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000","registration_access_token":"mfrg_6gY5Ej7ueSfxm2bY7A9sQnDA9-D5X67kRvXqXcHDYpw"}
dcr_550e8400e29b41d4a716446655440000
https://manager.example.invalid
openid mods:read files:download install_plans:resolve profile:read
https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000
mfrg_6gY5Ej7ueSfxm2bY7A9sQnDA9-D5X67kRvXqXcHDYpw
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
413The request body exceeds the documented endpoint limit.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

44444444-4444-4444-8444-444444444444
415The request Content-Type is not supported by this endpoint.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Revoke an OAuth token or PAT/API key.

/oauth/revoke

Operation ID
revokeOAuthToken
Path template
/oauth/revoke
Responses
200, 400, 401, 403, 429, 500
Scopes
Без OAuth scopes
Request body
Нужен body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Request body

application/x-www-form-urlencodedОбязательно

Schema refs

OAuthRevocationRequest

Примеры

{"token":"example-redacted-token","token_type_hint":"access_token","client_id":"website","client_secret":"example-value"}
website
dcr_550e8400e29b41d4a716446655440000

Responses

200Token revoked or already inactive.
application/json

Schema refs

OAuthRevocationResponse

Примеры

{"ok":true,"revoked":true}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"revoked":true}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Exchange authorization, device, or refresh grants for tokens.

/oauth/token

Operation ID
exchangeOAuthToken
Path template
/oauth/token
Responses
200, 400, 401, 403, 429, 500
Scopes
Без OAuth scopes
Request body
Нужен body

Operation/path servers

https://moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Request body

application/x-www-form-urlencodedОбязательно

Schema refs

OAuthTokenRequest

Примеры

{"grant_type":"authorization_code","client_id":"website","client_secret":"example-value","code":"example-valuexxx","redirect_uri":"https://example.invalid/moddingflow-resource","code_verifier":"example-code-verifier-abcdefghijklmnopqrstuvwxyz0123456789"}

Responses

200Token response.
application/json

Schema refs

OAuthTokenResponse

Примеры

{"access_token":"example-redacted-token","token_type":"Bearer","expires_in":60,"refresh_token":"example-redacted-token","scope":"mods:read files:download install_plans:resolve","id_token":"example-redacted-token","issued_token_type":"urn:ietf:params:oauth:token-type:access_token"}
mods:read files:download install_plans:resolve
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"access_token":"example-redacted-token","token_type":"Bearer","expires_in":60,"refresh_token":"example-redacted-token","scope":"mods:read files:download install_plans:resolve","id_token":"example-redacted-token","issued_token_type":"urn:ietf:params:oauth:token-type:access_token"}
mods:read files:download install_plans:resolve
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444

Catalog

GET

Get safe metadata for one downloadable artifact.

/artifacts/{artifact_id}

Operation ID
getArtifact
Path template
/artifacts/{artifact_id}
Responses
200, 400, 401, 403, 404, 429, 500
Scopes
mods:read
Request body
Без body

Параметры

  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathartifact_idОбязательно

    Stable public artifact UUID.

    Schema refs

    ArtifactId

    Примеры

    44444444-4444-4444-8444-444444444444

Request headers

  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Responses

200A strict, metadata-only artifact preview.
application/json

Schema refs

ArtifactMetadataResolvedResponse

Примеры

{"ok":true,"data":{"artifact_id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","game":{"id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value"},"mod":{"id":"22222222-2222-4222-8222-222222222222","slug":"example-value","game_slug":"example-value","title":{"en":"example-value"},"summary":{"en":"example-value"},"author":{"display_name":"Example Mod","profile_url":"https://example.invalid/moddingflow-resource"},"visibility":"public","access_tier":"public","links":{"web":"https://example.invalid/moddingflow-resource","api":"https://example.invalid/moddingflow-resource","versions":"https://example.invalid/moddingflow-resource"}},"version":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","primary_artifact_id":"44444444-4444-4444-8444-444444444444","version":"1.6.1170","semantic_version":"example-value","release_channel":"stable","game_versions":["1.6.1170"],"loaders":["example-value"],"published_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"},"artifact":{"id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","file_kind":"main","file_version":"example-value","label":"example-value","filename":"Example Mod","original_filename":"Example Mod","content_type":"example-value","game_version_key":"1.6.1170","loader_key":"example-value","size_bytes":1,"hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","sha1":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","md5":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean"},"distribution":{"service":"moddingflow","website_url":"https://example.invalid/moddingflow-resource","mod_url":"https://example.invalid/moddingflow-resource","api_url":"https://example.invalid/moddingflow-resource"},"verification":{"hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","sha1":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","md5":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"size_bytes":1},"download":{"resolve_endpoint":"/v1/downloads/44444444-4444-4444-8444-444444444444/resolve"}}}
  • Cache-Control

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"artifact_id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","game":{"id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value"},"mod":{"id":"22222222-2222-4222-8222-222222222222","slug":"example-value","game_slug":"example-value","title":{"en":"example-value"},"summary":{"en":"example-value"},"author":{"display_name":"Example Mod","profile_url":"https://example.invalid/moddingflow-resource"},"visibility":"public","access_tier":"public","links":{"web":"https://example.invalid/moddingflow-resource","api":"https://example.invalid/moddingflow-resource","versions":"https://example.invalid/moddingflow-resource"}},"version":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","primary_artifact_id":"44444444-4444-4444-8444-444444444444","version":"1.6.1170","semantic_version":"example-value","release_channel":"stable","game_versions":["1.6.1170"],"loaders":["example-value"],"published_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"},"artifact":{"id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","file_kind":"main","file_version":"example-value","label":"example-value","filename":"Example Mod","original_filename":"Example Mod","content_type":"example-value","game_version_key":"1.6.1170","loader_key":"example-value","size_bytes":1,"hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","sha1":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","md5":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean"},"distribution":{"service":"moddingflow","website_url":"https://example.invalid/moddingflow-resource","mod_url":"https://example.invalid/moddingflow-resource","api_url":"https://example.invalid/moddingflow-resource"},"verification":{"hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","sha1":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","md5":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"size_bytes":1},"download":{"resolve_endpoint":"/v1/downloads/44444444-4444-4444-8444-444444444444/resolve"}}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

List catalog categories and facets.

/categories

Operation ID
listCatalogCategories
Path template
/categories
Responses
200, 304, 400, 401, 429, 500
Scopes
mods:read
Request body
Без body

Параметры

  • headerIf-None-MatchОпционально

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"
  • querygame_slugОпционально

    Stable game slug filter. The website compatibility namespace also accepts game and gameSlug aliases.

    Schema refs

    Slug

    Примеры

    example-value
  • querylangОпционально

    Preferred label language for category and facet labels.

    Schema refs

    string

    Примеры

    en

Request headers

  • If-None-Match

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"

Responses

200Catalog categories and facet values.
application/json

Schema refs

CatalogFacetListResponse

Примеры

{"ok":true,"data":{"items":[{"facet":"example-value","value":"example-value","label":{"en":"example-value"},"game_id":"550e8400-e29b-41d4-a716-446655440000","game_slug":"example-value","count":0}],"label_language":"example-value"}}
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"items":[{"facet":"example-value","value":"example-value","label":{"en":"example-value"},"game_id":"550e8400-e29b-41d4-a716-446655440000","game_slug":"example-value","count":0}],"label_language":"example-value"}}
304The anonymous public catalog representation matches If-None-Match. The response has no body.
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

List supported games.

/games

Operation ID
listGames
Path template
/games
Responses
200, 304, 400, 401, 429, 500
Scopes
mods:read
Request body
Без body

Параметры

  • headerIf-None-MatchОпционально

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"

Request headers

  • If-None-Match

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"

Responses

200Enabled public catalog games.
application/json

Schema refs

GameListResponse

Примеры

{"ok":true,"data":{"items":[{"id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value","title":{"en":"example-value"},"icon_path":"example-value","is_enabled":true,"sort_order":1,"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}]}}
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"items":[{"id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value","title":{"en":"example-value"},"icon_path":"example-value","is_enabled":true,"sort_order":1,"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}]}}
304The anonymous public catalog representation matches If-None-Match. The response has no body.
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

Get a supported game by slug.

/games/{game_slug}

Operation ID
getGame
Path template
/games/{game_slug}
Responses
200, 304, 400, 401, 404, 429, 500
Scopes
mods:read
Request body
Без body

Параметры

  • headerIf-None-MatchОпционально

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"
  • pathgame_slugОбязательно

    Stable game slug.

    Schema refs

    Slug

    Примеры

    example-value

Request headers

  • If-None-Match

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"

Responses

200The requested public catalog game.
application/json

Schema refs

GameResponse

Примеры

{"ok":true,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value","title":{"en":"example-value"},"icon_path":"example-value","is_enabled":true,"sort_order":1,"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}}
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value","title":{"en":"example-value"},"icon_path":"example-value","is_enabled":true,"sort_order":1,"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}}
304The anonymous public catalog representation matches If-None-Match. The response has no body.
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

List public mods.

/mods

Operation ID
listMods
Path template
/mods
Responses
200, 304, 400, 401, 429, 500
Scopes
mods:read
Request body
Без body

Параметры

  • headerIf-None-MatchОпционально

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"
  • querycategoryОпционально

    Catalog category slug filter.

    Schema refs

    Slug

    Примеры

    example-value
  • querycursorОпционально

    Opaque v1. keyset pagination cursor returned by the previous page. Treat it as an unparsed base64url token and echo it back only for the same resource, normalized filters, and sort. Incompatible or malformed reuse returns 400 invalid_input; rows inserted after page one stay outside the cursor snapshot.

    Schema refs

    string

    Примеры

    v1.example-opaque-cursor
  • querygame_slugОпционально

    Stable game slug filter. The website compatibility namespace also accepts game and gameSlug aliases.

    Schema refs

    Slug

    Примеры

    example-value
  • querygame_versionОпционально

    Game version facet filter such as 1.6.1170. The website compatibility namespace also accepts gameVersion and version aliases.

    Schema refs

    string

    Примеры

    1.6.1170
  • querylimitОпционально

    Page size. The maximum public API page size is 100.

    Schema refs

    integer

    Примеры

    25
  • queryloaderОпционально

    Loader/platform facet filter such as skse, fabric, forge, or a game-specific loader key.

    Schema refs

    string

    Примеры

    example-value
  • queryqОпционально

    Optional catalog search text.

    Schema refs

    string

    Примеры

    sky ui
  • querysortОпционально

    Catalog ordering mode.

    Schema refs

    string

    Примеры

    relevance

Request headers

  • If-None-Match

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"

Responses

200A stable cursor page of public mods.
application/json

Schema refs

ModListResponse

Примеры

{"ok":true,"data":{"items":[{"id":"22222222-2222-4222-8222-222222222222","game_id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value","localized_slugs":{},"game_slug":"example-value","title":{"en":"example-value"},"summary":{"en":"example-value"},"description":{"en":"example-value"},"description_format":"markdown","author":{"id":"550e8400-e29b-41d4-a716-446655440000","display_name":"Example Mod","profile_url":"https://example.invalid/moddingflow-resource"},"latest_version":"example-value","latest_release":{"id":"33333333-3333-4333-8333-333333333333","version":"1.6.1170","primary_artifact_id":"44444444-4444-4444-8444-444444444444","published_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"},"updated_at":"2026-07-11T10:30:00Z"}],"pagination":{"limit":1,"next_cursor":"v1.example-opaque-cursor","order":"example-value"}}}
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"items":[{"id":"22222222-2222-4222-8222-222222222222","game_id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value","localized_slugs":{},"game_slug":"example-value","title":{"en":"example-value"},"summary":{"en":"example-value"},"description":{"en":"example-value"},"description_format":"markdown","author":{"id":"550e8400-e29b-41d4-a716-446655440000","display_name":"Example Mod","profile_url":"https://example.invalid/moddingflow-resource"},"latest_version":"example-value","latest_release":{"id":"33333333-3333-4333-8333-333333333333","version":"1.6.1170","primary_artifact_id":"44444444-4444-4444-8444-444444444444","published_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"},"updated_at":"2026-07-11T10:30:00Z"}],"pagination":{"limit":1,"next_cursor":"v1.example-opaque-cursor","order":"example-value"}}}
304The anonymous public catalog representation matches If-None-Match. The response has no body.
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

Get a public mod by stable id or slug.

/mods/{mod_id}

Operation ID
getMod
Path template
/mods/{mod_id}
Responses
200, 304, 400, 401, 404, 429, 500
Scopes
mods:read
Request body
Без body

Параметры

  • headerIf-None-MatchОпционально

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"
  • pathmod_idОбязательно

    Stable public mod UUID or canonical public slug for direct catalog lookup.

    Schema refs

    ModIdSlug

    Примеры

    22222222-2222-4222-8222-222222222222

Request headers

  • If-None-Match

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"

Responses

200The requested public mod.
application/json

Schema refs

ModResponse

Примеры

{"ok":true,"data":{"id":"22222222-2222-4222-8222-222222222222","game_id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value","localized_slugs":{},"game_slug":"example-value","title":{"en":"example-value"},"summary":{"en":"example-value"},"description":{"en":"example-value"},"description_format":"markdown","author":{"id":"550e8400-e29b-41d4-a716-446655440000","display_name":"Example Mod","profile_url":"https://example.invalid/moddingflow-resource"},"latest_version":"example-value","latest_release":{"id":"33333333-3333-4333-8333-333333333333","version":"1.6.1170","primary_artifact_id":"44444444-4444-4444-8444-444444444444","published_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"},"updated_at":"2026-07-11T10:30:00Z"}}
22222222-2222-4222-8222-222222222222
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"id":"22222222-2222-4222-8222-222222222222","game_id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value","localized_slugs":{},"game_slug":"example-value","title":{"en":"example-value"},"summary":{"en":"example-value"},"description":{"en":"example-value"},"description_format":"markdown","author":{"id":"550e8400-e29b-41d4-a716-446655440000","display_name":"Example Mod","profile_url":"https://example.invalid/moddingflow-resource"},"latest_version":"example-value","latest_release":{"id":"33333333-3333-4333-8333-333333333333","version":"1.6.1170","primary_artifact_id":"44444444-4444-4444-8444-444444444444","published_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"},"updated_at":"2026-07-11T10:30:00Z"}}
22222222-2222-4222-8222-222222222222
304The anonymous public catalog representation matches If-None-Match. The response has no body.
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

List public dependencies for a mod.

/mods/{mod_id}/dependencies

Operation ID
listModDependencies
Path template
/mods/{mod_id}/dependencies
Responses
200, 304, 400, 401, 404, 429, 500
Scopes
mods:read
Request body
Без body

Параметры

  • headerIf-None-MatchОпционально

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222

Request headers

  • If-None-Match

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"

Responses

200Public dependencies for the requested mod.
application/json

Schema refs

ModDependencyListResponse

Примеры

{"ok":true,"data":{"items":[{"id":"550e8400-e29b-41d4-a716-446655440000","mod_id":"22222222-2222-4222-8222-222222222222","target_mod_id":"22222222-2222-4222-8222-222222222222","dependency_kind":"required_mod","dependency_semantic":"required","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value","relation":"example-value","sort_order":1,"created_at":"2026-07-11T10:30:00Z"}]}}
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"items":[{"id":"550e8400-e29b-41d4-a716-446655440000","mod_id":"22222222-2222-4222-8222-222222222222","target_mod_id":"22222222-2222-4222-8222-222222222222","dependency_kind":"required_mod","dependency_semantic":"required","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value","relation":"example-value","sort_order":1,"created_at":"2026-07-11T10:30:00Z"}]}}
304The anonymous public catalog representation matches If-None-Match. The response has no body.
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

List a mod project's cover and gallery.

/mods/{mod_id}/media

Operation ID
listModMedia
Path template
/mods/{mod_id}/media
Responses
200, 401, 404, 429, 500
Scopes
mods:read
Request body
Без body

Параметры

  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222

Responses

200The cover and ordered project gallery.
application/json

Schema refs

ModMediaListResponse

Примеры

{"ok":true,"data":{"items":[{"id":"550e8400-e29b-41d4-a716-446655440000","client_media_key":"example-value","role":"cover","order":0,"caption":"example-value","width":1,"height":1,"mime":"image/webp","url":"https://example.invalid/moddingflow-resource","srcset":{"w480":"https://example.invalid/moddingflow-resource","w960":"https://example.invalid/moddingflow-resource","w1920":"https://example.invalid/moddingflow-resource"},"managed_by":"user","source":{"provider":"example-value","project_id":"550e8400-e29b-41d4-a716-446655440000","asset_id":"550e8400-e29b-41d4-a716-446655440000","url":"https://example.invalid/moddingflow-resource"},"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}]}}
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"items":[{"id":"550e8400-e29b-41d4-a716-446655440000","client_media_key":"example-value","role":"cover","order":0,"caption":"example-value","width":1,"height":1,"mime":"image/webp","url":"https://example.invalid/moddingflow-resource","srcset":{"w480":"https://example.invalid/moddingflow-resource","w960":"https://example.invalid/moddingflow-resource","w1920":"https://example.invalid/moddingflow-resource"},"managed_by":"user","source":{"provider":"example-value","project_id":"550e8400-e29b-41d4-a716-446655440000","asset_id":"550e8400-e29b-41d4-a716-446655440000","url":"https://example.invalid/moddingflow-resource"},"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}]}}
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

List public versions for a mod.

/mods/{mod_id}/versions

Operation ID
listModVersions
Path template
/mods/{mod_id}/versions
Responses
200, 304, 400, 401, 404, 429, 500
Scopes
mods:read
Request body
Без body

Параметры

  • headerIf-None-MatchОпционально

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222
  • querycursorОпционально

    Opaque v1. keyset pagination cursor returned by the previous page. Treat it as an unparsed base64url token and echo it back only for the same resource, normalized filters, and sort. Incompatible or malformed reuse returns 400 invalid_input; rows inserted after page one stay outside the cursor snapshot.

    Schema refs

    string

    Примеры

    v1.example-opaque-cursor
  • querylimitОпционально

    Page size. The maximum public API page size is 100.

    Schema refs

    integer

    Примеры

    25

Request headers

  • If-None-Match

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"

Responses

200A stable cursor page of public mod versions.
application/json

Schema refs

ModVersionListResponse

Примеры

{"ok":true,"data":{"items":[{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","primary_artifact_id":"44444444-4444-4444-8444-444444444444","version":"1.6.1170","semantic_version":"example-value","release_channel":"stable","game_versions":["1.6.1170"],"loaders":["example-value"],"artifact_ids":["44444444-4444-4444-8444-444444444444"],"artifacts":[{"id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","file_kind":"main","file_version":"1.6.1170","label":"Main archive","original_filename":"mod-1.0.0.zip","content_type":"application/zip","game_version_key":"1.6.1170","loader_key":null,"size_bytes":1048576,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean","download_metadata":{"resolve_endpoint":"/v1/downloads/44444444-4444-4444-8444-444444444444/resolve","range_supported":true}}],"has_immutable_artifact_binding":true,"changelog":[{"version":"1.6.1170","body_md":"example-value","released_at":"2026-07-11T10:30:00Z"}],"published_at":"2026-07-11T10:30:00Z"}],"pagination":{"limit":1,"next_cursor":"v1.example-opaque-cursor","order":"example-value"}}}
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"items":[{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","primary_artifact_id":"44444444-4444-4444-8444-444444444444","version":"1.6.1170","semantic_version":"example-value","release_channel":"stable","game_versions":["1.6.1170"],"loaders":["example-value"],"artifact_ids":["44444444-4444-4444-8444-444444444444"],"artifacts":[{"id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","file_kind":"main","file_version":"1.6.1170","label":"Main archive","original_filename":"mod-1.0.0.zip","content_type":"application/zip","game_version_key":"1.6.1170","loader_key":null,"size_bytes":1048576,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean","download_metadata":{"resolve_endpoint":"/v1/downloads/44444444-4444-4444-8444-444444444444/resolve","range_supported":true}}],"has_immutable_artifact_binding":true,"changelog":[{"version":"1.6.1170","body_md":"example-value","released_at":"2026-07-11T10:30:00Z"}],"published_at":"2026-07-11T10:30:00Z"}],"pagination":{"limit":1,"next_cursor":"v1.example-opaque-cursor","order":"example-value"}}}
304The anonymous public catalog representation matches If-None-Match. The response has no body.
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

Get one public version for a mod.

/mods/{mod_id}/versions/{version_id}

Operation ID
getModVersion
Path template
/mods/{mod_id}/versions/{version_id}
Responses
200, 304, 400, 401, 404, 429, 500
Scopes
mods:read
Request body
Без body

Параметры

  • headerIf-None-MatchОпционально

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222
  • pathversion_idОбязательно

    Stable public mod-version UUID.

    Schema refs

    VersionId

    Примеры

    33333333-3333-4333-8333-333333333333

Request headers

  • If-None-Match

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"

Responses

200The requested public mod version.
application/json

Schema refs

ModVersionResponse

Примеры

{"ok":true,"data":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","primary_artifact_id":"44444444-4444-4444-8444-444444444444","version":"1.6.1170","semantic_version":"example-value","release_channel":"stable","game_versions":["1.6.1170"],"loaders":["example-value"],"artifact_ids":["44444444-4444-4444-8444-444444444444"],"artifacts":[{"id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","file_kind":"main","file_version":"1.6.1170","label":"Main archive","original_filename":"mod-1.0.0.zip","content_type":"application/zip","game_version_key":"1.6.1170","loader_key":null,"size_bytes":1048576,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean","download_metadata":{"resolve_endpoint":"/v1/downloads/44444444-4444-4444-8444-444444444444/resolve","range_supported":true}}],"has_immutable_artifact_binding":true,"changelog":[{"version":"1.6.1170","body_md":"example-value","released_at":"2026-07-11T10:30:00Z"}],"published_at":"2026-07-11T10:30:00Z"}}
33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
[{"id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","file_kind":"main","file_version":"1.6.1170","label":"Main archive","original_filename":"mod-1.0.0.zip","content_type":"application/zip","game_version_key":"1.6.1170","loader_key":null,"size_bytes":1048576,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean","download_metadata":{"resolve_endpoint":"/v1/downloads/44444444-4444-4444-8444-444444444444/resolve","range_supported":true}}]
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","primary_artifact_id":"44444444-4444-4444-8444-444444444444","version":"1.6.1170","semantic_version":"example-value","release_channel":"stable","game_versions":["1.6.1170"],"loaders":["example-value"],"artifact_ids":["44444444-4444-4444-8444-444444444444"],"artifacts":[{"id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","file_kind":"main","file_version":"1.6.1170","label":"Main archive","original_filename":"mod-1.0.0.zip","content_type":"application/zip","game_version_key":"1.6.1170","loader_key":null,"size_bytes":1048576,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean","download_metadata":{"resolve_endpoint":"/v1/downloads/44444444-4444-4444-8444-444444444444/resolve","range_supported":true}}],"has_immutable_artifact_binding":true,"changelog":[{"version":"1.6.1170","body_md":"example-value","released_at":"2026-07-11T10:30:00Z"}],"published_at":"2026-07-11T10:30:00Z"}}
33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
[{"id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","file_kind":"main","file_version":"1.6.1170","label":"Main archive","original_filename":"mod-1.0.0.zip","content_type":"application/zip","game_version_key":"1.6.1170","loader_key":null,"size_bytes":1048576,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean","download_metadata":{"resolve_endpoint":"/v1/downloads/44444444-4444-4444-8444-444444444444/resolve","range_supported":true}}]
304The anonymous public catalog representation matches If-None-Match. The response has no body.
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

Search the public catalog.

/search

Operation ID
searchCatalog
Path template
/search
Responses
200, 304, 400, 401, 429, 500
Scopes
mods:read
Request body
Без body

Параметры

  • headerIf-None-MatchОпционально

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"
  • querycategoryОпционально

    Catalog category slug filter.

    Schema refs

    Slug

    Примеры

    example-value
  • querycursorОпционально

    Opaque v1. keyset pagination cursor returned by the previous page. Treat it as an unparsed base64url token and echo it back only for the same resource, normalized filters, and sort. Incompatible or malformed reuse returns 400 invalid_input; rows inserted after page one stay outside the cursor snapshot.

    Schema refs

    string

    Примеры

    v1.example-opaque-cursor
  • querygame_slugОпционально

    Stable game slug filter. The website compatibility namespace also accepts game and gameSlug aliases.

    Schema refs

    Slug

    Примеры

    example-value
  • querygame_versionОпционально

    Game version facet filter such as 1.6.1170. The website compatibility namespace also accepts gameVersion and version aliases.

    Schema refs

    string

    Примеры

    1.6.1170
  • querylimitОпционально

    Page size. The maximum public API page size is 100.

    Schema refs

    integer

    Примеры

    25
  • queryloaderОпционально

    Loader/platform facet filter such as skse, fabric, forge, or a game-specific loader key.

    Schema refs

    string

    Примеры

    example-value
  • queryqОбязательно

    Catalog search text.

    Schema refs

    string

    Примеры

    sky ui
  • querysortОпционально

    Catalog ordering mode.

    Schema refs

    string

    Примеры

    relevance

Request headers

  • If-None-Match

    Revalidate an anonymous public catalog representation. A weak match returns 304 with no body; credential-bearing requests are private no-store and do not use the public validator.

    Schema refs

    string

    Примеры

    W/"example-etag"

Responses

200A relevance-ordered cursor page of public mods.
application/json

Schema refs

CatalogSearchResponse

Примеры

{"ok":true,"data":{"items":[{"id":"22222222-2222-4222-8222-222222222222","game_id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value","localized_slugs":{},"game_slug":"example-value","title":{"en":"example-value"},"summary":{"en":"example-value"},"description":{"en":"example-value"},"description_format":"markdown","author":{"id":"550e8400-e29b-41d4-a716-446655440000","display_name":"Example Mod","profile_url":"https://example.invalid/moddingflow-resource"},"latest_version":"example-value","latest_release":{"id":"33333333-3333-4333-8333-333333333333","version":"1.6.1170","primary_artifact_id":"44444444-4444-4444-8444-444444444444","published_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"},"updated_at":"2026-07-11T10:30:00Z"}],"pagination":{"limit":1,"next_cursor":"v1.example-opaque-cursor","order":"example-value"}}}
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"items":[{"id":"22222222-2222-4222-8222-222222222222","game_id":"550e8400-e29b-41d4-a716-446655440000","slug":"example-value","localized_slugs":{},"game_slug":"example-value","title":{"en":"example-value"},"summary":{"en":"example-value"},"description":{"en":"example-value"},"description_format":"markdown","author":{"id":"550e8400-e29b-41d4-a716-446655440000","display_name":"Example Mod","profile_url":"https://example.invalid/moddingflow-resource"},"latest_version":"example-value","latest_release":{"id":"33333333-3333-4333-8333-333333333333","version":"1.6.1170","primary_artifact_id":"44444444-4444-4444-8444-444444444444","published_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"},"updated_at":"2026-07-11T10:30:00Z"}],"pagination":{"limit":1,"next_cursor":"v1.example-opaque-cursor","order":"example-value"}}}
304The anonymous public catalog representation matches If-None-Match. The response has no body.
  • Cache-Control

    Anonymous catalog responses may be retained but require origin revalidation on every reuse; credential-bearing responses are private no-store.

    Schema refs

    string
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • Vary

    Catalog cache-key dimensions that isolate anonymous responses from Authorization or Cookie requests.

    Schema refs

    string

    Примеры

    Accept-Encoding, Authorization, Cookie
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444

Downloads

POST

Resolve a fallback artifact download.

/downloads/{artifact_id}/fallback

Operation ID
resolveDownloadFallback
Path template
/downloads/{artifact_id}/fallback
Responses
200, 400, 401, 403, 404, 410, 429, 500
Scopes
files:download
Request body
Нужен body

Параметры

  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathartifact_idОбязательно

    Stable public artifact UUID.

    Schema refs

    ArtifactId

    Примеры

    44444444-4444-4444-8444-444444444444

Request headers

  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

DownloadFallbackRequest

Примеры

{"downloadSessionId":"550e8400-e29b-41d4-a716-446655440000","cloudflareProbeFailed":true,"probe":{"ok":true,"failed":true,"status":1,"bytesReceived":0,"reason":"example-value"}}

Responses

200Resolved fallback download link.
application/json

Schema refs

DownloadFallbackResponse

Примеры

{"ok":true,"data":{"artifact_id":"44444444-4444-4444-8444-444444444444","download_session_id":"550e8400-e29b-41d4-a716-446655440000","sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","sha1":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","md5":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"size_bytes":1,"fallback_url":"https://example.invalid/moddingflow-resource","url":"https://example.invalid/moddingflow-resource","provider":"example-value","head_url":"https://example.invalid/moddingflow-resource","etag":"W/\"example-etag\"","accept_ranges":"bytes","range_supported":true,"expires_at":"2026-07-11T10:30:00Z"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"artifact_id":"44444444-4444-4444-8444-444444444444","download_session_id":"550e8400-e29b-41d4-a716-446655440000","sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","sha1":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","md5":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"size_bytes":1,"fallback_url":"https://example.invalid/moddingflow-resource","url":"https://example.invalid/moddingflow-resource","provider":"example-value","head_url":"https://example.invalid/moddingflow-resource","etag":"W/\"example-etag\"","accept_ranges":"bytes","range_supported":true,"expires_at":"2026-07-11T10:30:00Z"}}
44444444-4444-4444-8444-444444444444
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
410The requested session or expiring capability is no longer usable.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/gone","title":"Capability expired","status":410,"detail":"The requested session is no longer usable.","instance":"urn:moddingflow:request:req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","ok":false,"code":"gone","machine_code":"gone","http_status":410,"request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","retryable":false,"docs_slug":"errors.gone","error":{"machine_code":"gone","http_status":410,"message":"The requested session is no longer usable.","request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/gone","title":"Capability expired","status":410,"detail":"The requested session is no longer usable.","instance":"urn:moddingflow:request:req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","ok":false,"code":"gone","machine_code":"gone","http_status":410,"request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","retryable":false,"docs_slug":"errors.gone","error":{"machine_code":"gone","http_status":410,"message":"The requested session is no longer usable.","request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Resolve an artifact download.

/downloads/{artifact_id}/resolve

Operation ID
resolveDownload
Path template
/downloads/{artifact_id}/resolve
Responses
200, 400, 401, 403, 404, 409, 410, 429, 500, 503
Scopes
files:download
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОпционально

    Optional retry key for deterministic resolve operations.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathartifact_idОбязательно

    Stable public artifact UUID.

    Schema refs

    ArtifactId

    Примеры

    44444444-4444-4444-8444-444444444444

Request headers

  • Idempotency-Key

    Optional retry key for deterministic resolve operations.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/json

Schema refs

DownloadResolveRequest

Примеры

{"client":"mod_manager","preferred_cdn":"primary","job_id":"55555555-5555-4555-8555-555555555555","progress":{"bytes_received":12582912,"etag":"\"skyui-etag\""}}

Responses

200Canonical mod metadata, exact selected release/artifact, distribution identity, short-lived signed download links, expiry, refresh endpoint, and verification metadata.
application/json

Schema refs

DownloadResolveUnionResponse

Примеры

{"ok":true,"data":{"mod":{"id":"11111111-1111-4111-8111-111111111111","slug":"skyui","game_slug":"skyrim-se","title":{"en":"SkyUI"},"summary":{"en":"A streamlined interface for Skyrim."},"description":{"en":"# SkyUI\n\nFull project documentation in Markdown."},"description_format":"markdown","author":{"id":"99999999-9999-4999-8999-999999999999","display_name":"Uploader","profile_url":"https://moddingflow.com/u/uploader/"},"homepage_url":"https://example.invalid/skyui","source_url":"https://upstream.example.invalid/skyui","latest_version":"1.5.0","latest_release":{"id":"66666666-6666-4666-8666-666666666666","version":"1.5.0","primary_artifact_id":"77777777-7777-4777-8777-777777777777","published_at":"2026-07-01T10:00:00Z","updated_at":"2026-07-10T12:00:00Z"},"updated_at":"2026-07-11T09:00:00Z","links":{"web":"https://moddingflow.com/forum/en/games/skyrim-se/mods/topics/skyui/","api":"https://moddingflow.com/v1/mods/11111111-1111-4111-8111-111111111111","versions":"https://moddingflow.com/v1/mods/11111111-1111-4111-8111-111111111111/versions"}},"version":{"id":"22222222-2222-4222-8222-222222222222","mod_id":"11111111-1111-4111-8111-111111111111","primary_artifact_id":"33333333-3333-4333-8333-333333333333","version":"1.4.0","semantic_version":"1.4.0","release_channel":"stable","artifact_ids":["33333333-3333-4333-8333-333333333333"],"published_at":"2026-06-01T10:00:00Z","updated_at":"2026-06-03T12:00:00Z"},"artifact":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"11111111-1111-4111-8111-111111111111","version_id":"22222222-2222-4222-8222-222222222222","file_kind":"main","file_version":"1.4.0","label":"SkyUI 1.4.0 main archive","original_filename":"skyui-1.4.0.7z","content_type":"application/x-7z-compressed","game_version_key":"1.6.1170","loader_key":null,"size_bytes":73400320,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean","download_metadata":{"resolve_endpoint":"/v1/downloads/33333333-3333-4333-8333-333333333333/resolve","range_supported":true}},"distribution":{"service":"moddingflow","website_url":"https://moddingflow.com/","mod_url":"https://moddingflow.com/forum/en/games/skyrim-se/mods/topics/skyui/","api_url":"https://moddingflow.com/v1/mods/11111111-1111-4111-8111-111111111111"},"artifact_id":"33333333-3333-4333-8333-333333333333","download_session_id":"44444444-4444-4444-8444-444444444444","download_job":{"id":"55555555-5555-4555-8555-555555555555","grant_id":"44444444-4444-4444-8444-444444444444","artifact_id":"33333333-3333-4333-8333-333333333333","status":"grant_active","bytes_received":12582912,"etag":"\"skyui-etag\"","attempt_count":2,"rate_limit_count":3,"provider_effect_count":1,"next_attempt_at":null},"primary_url":"https://cdn.example.invalid/mods/skyui.7z?signature=short-lived","head_url":"https://storage.example.invalid/mods/skyui.7z?signature=head-short-lived","expires_at":"2026-07-08T12:00:00Z","sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"size_bytes":73400320,"accept_ranges":"bytes","conditional_headers":["If-Match","If-None-Match","If-Modified-Since","If-Unmodified-Since"],"range_supported":true,"representation":{"provider":"cloudflare_r2","etag":"\"skyui-etag\"","etag_scope":"cloudflare_r2","if_match":"\"skyui-etag\"","head_url":"https://storage.example.invalid/mods/skyui.7z?signature=head-short-lived","requires_head_before_range":false},"resume":{"range_supported":true,"etag":"\"skyui-etag\"","provider":"cloudflare_r2","etag_scope":"cloudflare_r2","if_match":"\"skyui-etag\"","requires_head_before_range":false,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"head_url":"https://storage.example.invalid/mods/skyui.7z?signature=head-short-lived","conditional_headers":["If-Match","If-None-Match","If-Modified-Since","If-Unmodified-Since"],"chunk_size_hint_bytes":8388608,"signed_url_expiry_refresh":"refresh resolve before expires_at"}}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"mod":{"id":"11111111-1111-4111-8111-111111111111","slug":"skyui","game_slug":"skyrim-se","title":{"en":"SkyUI"},"summary":{"en":"A streamlined interface for Skyrim."},"description":{"en":"# SkyUI\n\nFull project documentation in Markdown."},"description_format":"markdown","author":{"id":"99999999-9999-4999-8999-999999999999","display_name":"Uploader","profile_url":"https://moddingflow.com/u/uploader/"},"homepage_url":"https://example.invalid/skyui","source_url":"https://upstream.example.invalid/skyui","latest_version":"1.5.0","latest_release":{"id":"66666666-6666-4666-8666-666666666666","version":"1.5.0","primary_artifact_id":"77777777-7777-4777-8777-777777777777","published_at":"2026-07-01T10:00:00Z","updated_at":"2026-07-10T12:00:00Z"},"updated_at":"2026-07-11T09:00:00Z","links":{"web":"https://moddingflow.com/forum/en/games/skyrim-se/mods/topics/skyui/","api":"https://moddingflow.com/v1/mods/11111111-1111-4111-8111-111111111111","versions":"https://moddingflow.com/v1/mods/11111111-1111-4111-8111-111111111111/versions"}},"version":{"id":"22222222-2222-4222-8222-222222222222","mod_id":"11111111-1111-4111-8111-111111111111","primary_artifact_id":"33333333-3333-4333-8333-333333333333","version":"1.4.0","semantic_version":"1.4.0","release_channel":"stable","artifact_ids":["33333333-3333-4333-8333-333333333333"],"published_at":"2026-06-01T10:00:00Z","updated_at":"2026-06-03T12:00:00Z"},"artifact":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"11111111-1111-4111-8111-111111111111","version_id":"22222222-2222-4222-8222-222222222222","file_kind":"main","file_version":"1.4.0","label":"SkyUI 1.4.0 main archive","original_filename":"skyui-1.4.0.7z","content_type":"application/x-7z-compressed","game_version_key":"1.6.1170","loader_key":null,"size_bytes":73400320,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean","download_metadata":{"resolve_endpoint":"/v1/downloads/33333333-3333-4333-8333-333333333333/resolve","range_supported":true}},"distribution":{"service":"moddingflow","website_url":"https://moddingflow.com/","mod_url":"https://moddingflow.com/forum/en/games/skyrim-se/mods/topics/skyui/","api_url":"https://moddingflow.com/v1/mods/11111111-1111-4111-8111-111111111111"},"artifact_id":"33333333-3333-4333-8333-333333333333","download_session_id":"44444444-4444-4444-8444-444444444444","download_job":{"id":"55555555-5555-4555-8555-555555555555","grant_id":"44444444-4444-4444-8444-444444444444","artifact_id":"33333333-3333-4333-8333-333333333333","status":"grant_active","bytes_received":12582912,"etag":"\"skyui-etag\"","attempt_count":2,"rate_limit_count":3,"provider_effect_count":1,"next_attempt_at":null},"primary_url":"https://cdn.example.invalid/mods/skyui.7z?signature=short-lived","head_url":"https://storage.example.invalid/mods/skyui.7z?signature=head-short-lived","expires_at":"2026-07-08T12:00:00Z","sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"size_bytes":73400320,"accept_ranges":"bytes","conditional_headers":["If-Match","If-None-Match","If-Modified-Since","If-Unmodified-Since"],"range_supported":true,"representation":{"provider":"cloudflare_r2","etag":"\"skyui-etag\"","etag_scope":"cloudflare_r2","if_match":"\"skyui-etag\"","head_url":"https://storage.example.invalid/mods/skyui.7z?signature=head-short-lived","requires_head_before_range":false},"resume":{"range_supported":true,"etag":"\"skyui-etag\"","provider":"cloudflare_r2","etag_scope":"cloudflare_r2","if_match":"\"skyui-etag\"","requires_head_before_range":false,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"head_url":"https://storage.example.invalid/mods/skyui.7z?signature=head-short-lived","conditional_headers":["If-Match","If-None-Match","If-Modified-Since","If-Unmodified-Since"],"chunk_size_hint_bytes":8388608,"signed_url_expiry_refresh":"refresh resolve before expires_at"}}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
410The requested session or expiring capability is no longer usable.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/gone","title":"Capability expired","status":410,"detail":"The requested session is no longer usable.","instance":"urn:moddingflow:request:req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","ok":false,"code":"gone","machine_code":"gone","http_status":410,"request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","retryable":false,"docs_slug":"errors.gone","error":{"machine_code":"gone","http_status":410,"message":"The requested session is no longer usable.","request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/gone","title":"Capability expired","status":410,"detail":"The requested session is no longer usable.","instance":"urn:moddingflow:request:req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","ok":false,"code":"gone","machine_code":"gone","http_status":410,"request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","retryable":false,"docs_slug":"errors.gone","error":{"machine_code":"gone","http_status":410,"message":"The requested session is no longer usable.","request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
503A required service or provider is temporarily unavailable.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

44444444-4444-4444-8444-444444444444
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

44444444-4444-4444-8444-444444444444

Install Plans

POST

Resolve an install plan.

/install-plans:resolve

Operation ID
resolveInstallPlan
Path template
/install-plans:resolve
Responses
200, 400, 401, 403, 404, 409, 422, 429, 500
Scopes
install_plans:resolve
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОпционально

    Optional retry key for deterministic resolve operations.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request headers

  • Idempotency-Key

    Optional retry key for deterministic resolve operations.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

InstallPlanResolveRequest

Примеры

{"game_slug":"skyrim-se","game_version":"1.6.1170","mod_ids":["11111111-1111-4111-8111-111111111111"],"include_optional":false}
44444444-4444-4444-8444-444444444444
22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333

Responses

200Resolved install plan.
application/json

Schema refs

InstallPlanResolveResponse

Примеры

{"ok":true,"data":{"plan_id":"22222222-2222-4222-8222-222222222222","game_slug":"skyrim-se","game_version":"1.6.1170","platform":"windows","loader":"skse","release_channel":"stable","dependency_constraints":[],"conflicts":[],"install_order":[{"item_id":"44444444-4444-4444-8444-444444444444","mod_id":"11111111-1111-4111-8111-111111111111","version_id":"22222222-2222-4222-8222-222222222222","artifact_id":"33333333-3333-4333-8333-333333333333","required":true,"selection_kind":"selected_artifact","decision_reasons":["selected_by_artifact","release_channel:stable","platform:windows","loader:skse"],"download_resolve_endpoint":"/v1/downloads/33333333-3333-4333-8333-333333333333/resolve","sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}],"warnings":[]}}
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"plan_id":"22222222-2222-4222-8222-222222222222","game_slug":"skyrim-se","game_version":"1.6.1170","platform":"windows","loader":"skse","release_channel":"stable","dependency_constraints":[],"conflicts":[],"install_order":[{"item_id":"44444444-4444-4444-8444-444444444444","mod_id":"11111111-1111-4111-8111-111111111111","version_id":"22222222-2222-4222-8222-222222222222","artifact_id":"33333333-3333-4333-8333-333333333333","required":true,"selection_kind":"selected_artifact","decision_reasons":["selected_by_artifact","release_channel:stable","platform:windows","loader:skse"],"download_resolve_endpoint":"/v1/downloads/33333333-3333-4333-8333-333333333333/resolve","sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}],"warnings":[]}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444

Publishing

GET

Get an external artifact validation job.

/external-artifact-validation-jobs/{job_id}

Operation ID
getExternalArtifactValidationJob
Path template
/external-artifact-validation-jobs/{job_id}
Responses
200, 400, 401, 403, 404, 429, 500, 503
Scopes
files:reference
Request body
Без body

Параметры

  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathjob_idОбязательно

    Actor-authorized external artifact validation job UUID.

    Schema refs

    Uuid

    Примеры

    550e8400-e29b-41d4-a716-446655440000

Request headers

  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Responses

200Current validation job and reference state.
application/json

Schema refs

ExternalArtifactValidationJobResponse

Примеры

{"ok":true,"status":200,"data":{"artifact_id":"44444444-4444-4444-8444-444444444444","attempt_count":0,"completed_at":"2026-07-11T10:30:00Z","created_at":"2026-07-11T10:30:00Z","endpoint":"/v1/external-artifact-validation-jobs/550e8400-e29b-41d4-a716-446655440000","id":"550e8400-e29b-41d4-a716-446655440000","job_kind":"initial","last_error_code":"example-value","max_attempts":1,"next_attempt_at":"2026-07-11T10:30:00Z","reference":{"next_check_at":"2026-07-11T10:30:00Z","reason_code":"example-value","revision":1,"state":"pending","verified_at":"2026-07-11T10:30:00Z"},"reference_id":"550e8400-e29b-41d4-a716-446655440000","started_at":"2026-07-11T10:30:00Z","state":"queued","type":"external_artifact_validation_job","updated_at":"2026-07-11T10:30:00Z"}}
44444444-4444-4444-8444-444444444444
  • Cache-Control

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"status":200,"data":{"artifact_id":"44444444-4444-4444-8444-444444444444","attempt_count":0,"completed_at":"2026-07-11T10:30:00Z","created_at":"2026-07-11T10:30:00Z","endpoint":"/v1/external-artifact-validation-jobs/550e8400-e29b-41d4-a716-446655440000","id":"550e8400-e29b-41d4-a716-446655440000","job_kind":"initial","last_error_code":"example-value","max_attempts":1,"next_attempt_at":"2026-07-11T10:30:00Z","reference":{"next_check_at":"2026-07-11T10:30:00Z","reason_code":"example-value","revision":1,"state":"pending","verified_at":"2026-07-11T10:30:00Z"},"reference_id":"550e8400-e29b-41d4-a716-446655440000","started_at":"2026-07-11T10:30:00Z","state":"queued","type":"external_artifact_validation_job","updated_at":"2026-07-11T10:30:00Z"}}
44444444-4444-4444-8444-444444444444
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
503A required service or provider is temporarily unavailable.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

44444444-4444-4444-8444-444444444444
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

44444444-4444-4444-8444-444444444444
POST

Create a mod draft.

/mods

Operation ID
createModDraft
Path template
/mods
Responses
201, 400, 401, 403, 404, 409, 422, 429, 500
Scopes
mods:write
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

CreateModRequest

Примеры

{"game_slug":"example-value","language_code":"en","slug":"example-value","title":"Representative Moddingflow example","summary":"example-value","description_md":"Representative value for the public API contract.","category_slugs":["example-value"],"current_version":"example-value","homepage_url":"https://example.invalid/moddingflow-resource","source_url":"https://example.invalid/moddingflow-resource","is_nsfw":true}

Responses

201Mod draft created.
application/json

Schema refs

PublicApiModWriteResponse

Примеры

{"ok":true,"status":1,"data":{"id":"22222222-2222-4222-8222-222222222222","source_topic_id":1,"state":"draft","slug":"example-value"}}
22222222-2222-4222-8222-222222222222
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"status":1,"data":{"id":"22222222-2222-4222-8222-222222222222","source_topic_id":1,"state":"draft","slug":"example-value"}}
22222222-2222-4222-8222-222222222222
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
PATCH

Update a mod draft or owned mod metadata.

/mods/{mod_id}

Operation ID
updateModDraft
Path template
/mods/{mod_id}
Responses
200, 400, 401, 403, 404, 409, 412, 422, 428, 429, 500
Scopes
mods:write
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headerIf-MatchОбязательно

    Exactly one strong ETag returned by an authenticated Mod or ModVersion detail/create/update response. Weak validators, wildcard, and lists fail with 412; omission fails with 428.

    Schema refs

    string

    Примеры

    "example-etag"
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • If-MatchОбязательно

    Exactly one strong ETag returned by an authenticated Mod or ModVersion detail/create/update response. Weak validators, wildcard, and lists fail with 412; omission fails with 428.

    Schema refs

    string

    Примеры

    "example-etag"
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

UpdateModRequest

Примеры

{"game_slug":"example-value","language_code":"en","slug":"example-value","title":"Representative Moddingflow example","summary":"example-value","description_md":"Representative value for the public API contract.","category_slugs":["example-value"],"current_version":"example-value","homepage_url":"https://example.invalid/moddingflow-resource","source_url":"https://example.invalid/moddingflow-resource","is_nsfw":true}

Responses

200Mod metadata updated.
application/json

Schema refs

PublicApiModWriteResponse

Примеры

{"ok":true,"status":1,"data":{"id":"22222222-2222-4222-8222-222222222222","source_topic_id":1,"state":"draft","slug":"example-value"}}
22222222-2222-4222-8222-222222222222
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"status":1,"data":{"id":"22222222-2222-4222-8222-222222222222","source_topic_id":1,"state":"draft","slug":"example-value"}}
22222222-2222-4222-8222-222222222222
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
412The required If-Match precondition failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/precondition_failed","title":"Precondition failed","status":412,"detail":"The supplied If-Match value no longer matches the resource.","instance":"urn:moddingflow:request:req_01JZ7Q4QDFHAXR9B4V9VXEP39M","ok":false,"code":"precondition_failed","machine_code":"precondition_failed","http_status":412,"request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M","retryable":false,"docs_slug":"errors.precondition_failed","error":{"machine_code":"precondition_failed","http_status":412,"message":"The supplied If-Match value no longer matches the resource.","request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M"}}
44444444-4444-4444-8444-444444444444
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/precondition_failed","title":"Precondition failed","status":412,"detail":"The supplied If-Match value no longer matches the resource.","instance":"urn:moddingflow:request:req_01JZ7Q4QDFHAXR9B4V9VXEP39M","ok":false,"code":"precondition_failed","machine_code":"precondition_failed","http_status":412,"request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M","retryable":false,"docs_slug":"errors.precondition_failed","error":{"machine_code":"precondition_failed","http_status":412,"message":"The supplied If-Match value no longer matches the resource.","request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
428The mutable resource requires an If-Match validator.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/precondition_required","title":"Precondition required","status":428,"detail":"If-Match is required for mutable Mod and ModVersion writes.","instance":"urn:moddingflow:request:req_01JZ7Q4REQUIRED","ok":false,"code":"precondition_required","machine_code":"precondition_required","http_status":428,"request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED","retryable":false,"docs_slug":"errors.precondition_required","error":{"machine_code":"precondition_required","http_status":428,"message":"If-Match is required for mutable Mod and ModVersion writes.","request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/precondition_required","title":"Precondition required","status":428,"detail":"If-Match is required for mutable Mod and ModVersion writes.","instance":"urn:moddingflow:request:req_01JZ7Q4REQUIRED","ok":false,"code":"precondition_required","machine_code":"precondition_required","http_status":428,"request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED","retryable":false,"docs_slug":"errors.precondition_required","error":{"machine_code":"precondition_required","http_status":428,"message":"If-Match is required for mutable Mod and ModVersion writes.","request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Upload validated project media.

/mods/{mod_id}/media

Operation ID
createModMedia
Path template
/mods/{mod_id}/media
Responses
200, 400, 401, 403, 409, 412, 413, 415, 422, 428, 429, 500
Scopes
mods:write
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headerIf-MatchОбязательно

    Exactly one strong ETag returned by an authenticated Mod or ModVersion detail/create/update response. Weak validators, wildcard, and lists fail with 412; omission fails with 428.

    Schema refs

    string

    Примеры

    "example-etag"
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • If-MatchОбязательно

    Exactly one strong ETag returned by an authenticated Mod or ModVersion detail/create/update response. Weak validators, wildcard, and lists fail with 412; omission fails with 428.

    Schema refs

    string

    Примеры

    "example-etag"
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

multipart/form-dataОбязательно

Schema refs

CreateModMediaMultipartRequest

Примеры

{"metadata":{"client_media_key":"example-value","role":"cover","order":0,"caption":"example-value","mime":"image/jpeg","width":1,"height":1,"provenance":{"source_provider":"example-value","source_project_id":"550e8400-e29b-41d4-a716-446655440000","source_asset_id":"550e8400-e29b-41d4-a716-446655440000","source_url":"https://example.invalid/moddingflow-resource","source_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","rights_policy_revision":"example-value","rights_evidence_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","attribution":{"label":"example-value","url":"https://example.invalid/moddingflow-resource"},"generator_version":"example-value"}},"file":"example-value"}

Responses

200Media created, reconciled, or idempotently reused.
application/json

Schema refs

ModMediaWriteResponse

Примеры

{"ok":true,"status":1,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","client_media_key":"example-value","role":"cover","order":0,"caption":"example-value","width":1,"height":1,"mime":"image/webp","url":"https://example.invalid/moddingflow-resource","srcset":{"w480":"https://example.invalid/moddingflow-resource","w960":"https://example.invalid/moddingflow-resource","w1920":"https://example.invalid/moddingflow-resource"},"managed_by":"user","source":{"provider":"example-value","project_id":"550e8400-e29b-41d4-a716-446655440000","asset_id":"550e8400-e29b-41d4-a716-446655440000","url":"https://example.invalid/moddingflow-resource"},"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}}
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"status":1,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","client_media_key":"example-value","role":"cover","order":0,"caption":"example-value","width":1,"height":1,"mime":"image/webp","url":"https://example.invalid/moddingflow-resource","srcset":{"w480":"https://example.invalid/moddingflow-resource","w960":"https://example.invalid/moddingflow-resource","w1920":"https://example.invalid/moddingflow-resource"},"managed_by":"user","source":{"provider":"example-value","project_id":"550e8400-e29b-41d4-a716-446655440000","asset_id":"550e8400-e29b-41d4-a716-446655440000","url":"https://example.invalid/moddingflow-resource"},"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
412The required If-Match precondition failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/precondition_failed","title":"Precondition failed","status":412,"detail":"The supplied If-Match value no longer matches the resource.","instance":"urn:moddingflow:request:req_01JZ7Q4QDFHAXR9B4V9VXEP39M","ok":false,"code":"precondition_failed","machine_code":"precondition_failed","http_status":412,"request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M","retryable":false,"docs_slug":"errors.precondition_failed","error":{"machine_code":"precondition_failed","http_status":412,"message":"The supplied If-Match value no longer matches the resource.","request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M"}}
44444444-4444-4444-8444-444444444444
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/precondition_failed","title":"Precondition failed","status":412,"detail":"The supplied If-Match value no longer matches the resource.","instance":"urn:moddingflow:request:req_01JZ7Q4QDFHAXR9B4V9VXEP39M","ok":false,"code":"precondition_failed","machine_code":"precondition_failed","http_status":412,"request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M","retryable":false,"docs_slug":"errors.precondition_failed","error":{"machine_code":"precondition_failed","http_status":412,"message":"The supplied If-Match value no longer matches the resource.","request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M"}}
44444444-4444-4444-8444-444444444444
413The request body exceeds the documented endpoint limit.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

44444444-4444-4444-8444-444444444444
415The request Content-Type is not supported by this endpoint.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
428The mutable resource requires an If-Match validator.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/precondition_required","title":"Precondition required","status":428,"detail":"If-Match is required for mutable Mod and ModVersion writes.","instance":"urn:moddingflow:request:req_01JZ7Q4REQUIRED","ok":false,"code":"precondition_required","machine_code":"precondition_required","http_status":428,"request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED","retryable":false,"docs_slug":"errors.precondition_required","error":{"machine_code":"precondition_required","http_status":428,"message":"If-Match is required for mutable Mod and ModVersion writes.","request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/precondition_required","title":"Precondition required","status":428,"detail":"If-Match is required for mutable Mod and ModVersion writes.","instance":"urn:moddingflow:request:req_01JZ7Q4REQUIRED","ok":false,"code":"precondition_required","machine_code":"precondition_required","http_status":428,"request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED","retryable":false,"docs_slug":"errors.precondition_required","error":{"machine_code":"precondition_required","http_status":428,"message":"If-Match is required for mutable Mod and ModVersion writes.","request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Create a deterministic Moddingflow cover.

/mods/{mod_id}/media:fallback

Operation ID
createModFallbackMedia
Path template
/mods/{mod_id}/media:fallback
Responses
200, 400, 401, 403, 409, 412, 422, 428, 429, 500
Scopes
mods:write
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headerIf-MatchОбязательно

    Exactly one strong ETag returned by an authenticated Mod or ModVersion detail/create/update response. Weak validators, wildcard, and lists fail with 412; omission fails with 428.

    Schema refs

    string

    Примеры

    "example-etag"
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • If-MatchОбязательно

    Exactly one strong ETag returned by an authenticated Mod or ModVersion detail/create/update response. Weak validators, wildcard, and lists fail with 412; omission fails with 428.

    Schema refs

    string

    Примеры

    "example-etag"
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

CreateModFallbackMediaRequest

Примеры

{"client_media_key":"example-value","role":"cover","order":0,"caption":"example-value","mime":"image/jpeg","width":1,"height":1,"provenance":{"source_provider":"example-value","source_project_id":"550e8400-e29b-41d4-a716-446655440000","source_asset_id":"550e8400-e29b-41d4-a716-446655440000","source_url":"https://example.invalid/moddingflow-resource","source_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","rights_policy_revision":"example-value","rights_evidence_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","attribution":{"label":"example-value","url":"https://example.invalid/moddingflow-resource"},"generator_version":"example-value"}}

Responses

200Fallback cover created or idempotently reused.
application/json

Schema refs

ModMediaWriteResponse

Примеры

{"ok":true,"status":1,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","client_media_key":"example-value","role":"cover","order":0,"caption":"example-value","width":1,"height":1,"mime":"image/webp","url":"https://example.invalid/moddingflow-resource","srcset":{"w480":"https://example.invalid/moddingflow-resource","w960":"https://example.invalid/moddingflow-resource","w1920":"https://example.invalid/moddingflow-resource"},"managed_by":"user","source":{"provider":"example-value","project_id":"550e8400-e29b-41d4-a716-446655440000","asset_id":"550e8400-e29b-41d4-a716-446655440000","url":"https://example.invalid/moddingflow-resource"},"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}}
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"status":1,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","client_media_key":"example-value","role":"cover","order":0,"caption":"example-value","width":1,"height":1,"mime":"image/webp","url":"https://example.invalid/moddingflow-resource","srcset":{"w480":"https://example.invalid/moddingflow-resource","w960":"https://example.invalid/moddingflow-resource","w1920":"https://example.invalid/moddingflow-resource"},"managed_by":"user","source":{"provider":"example-value","project_id":"550e8400-e29b-41d4-a716-446655440000","asset_id":"550e8400-e29b-41d4-a716-446655440000","url":"https://example.invalid/moddingflow-resource"},"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
412The required If-Match precondition failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/precondition_failed","title":"Precondition failed","status":412,"detail":"The supplied If-Match value no longer matches the resource.","instance":"urn:moddingflow:request:req_01JZ7Q4QDFHAXR9B4V9VXEP39M","ok":false,"code":"precondition_failed","machine_code":"precondition_failed","http_status":412,"request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M","retryable":false,"docs_slug":"errors.precondition_failed","error":{"machine_code":"precondition_failed","http_status":412,"message":"The supplied If-Match value no longer matches the resource.","request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M"}}
44444444-4444-4444-8444-444444444444
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/precondition_failed","title":"Precondition failed","status":412,"detail":"The supplied If-Match value no longer matches the resource.","instance":"urn:moddingflow:request:req_01JZ7Q4QDFHAXR9B4V9VXEP39M","ok":false,"code":"precondition_failed","machine_code":"precondition_failed","http_status":412,"request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M","retryable":false,"docs_slug":"errors.precondition_failed","error":{"machine_code":"precondition_failed","http_status":412,"message":"The supplied If-Match value no longer matches the resource.","request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
428The mutable resource requires an If-Match validator.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/precondition_required","title":"Precondition required","status":428,"detail":"If-Match is required for mutable Mod and ModVersion writes.","instance":"urn:moddingflow:request:req_01JZ7Q4REQUIRED","ok":false,"code":"precondition_required","machine_code":"precondition_required","http_status":428,"request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED","retryable":false,"docs_slug":"errors.precondition_required","error":{"machine_code":"precondition_required","http_status":428,"message":"If-Match is required for mutable Mod and ModVersion writes.","request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/precondition_required","title":"Precondition required","status":428,"detail":"If-Match is required for mutable Mod and ModVersion writes.","instance":"urn:moddingflow:request:req_01JZ7Q4REQUIRED","ok":false,"code":"precondition_required","machine_code":"precondition_required","http_status":428,"request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED","retryable":false,"docs_slug":"errors.precondition_required","error":{"machine_code":"precondition_required","http_status":428,"message":"If-Match is required for mutable Mod and ModVersion writes.","request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
DELETE

Delete importer-managed project media.

/mods/{mod_id}/media/{media_id}

Operation ID
deleteModMedia
Path template
/mods/{mod_id}/media/{media_id}
Responses
200, 400, 401, 403, 404, 409, 412, 428, 429, 500
Scopes
mods:write
Request body
Без body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headerIf-MatchОбязательно

    Exactly one strong ETag returned by an authenticated Mod or ModVersion detail/create/update response. Weak validators, wildcard, and lists fail with 412; omission fails with 428.

    Schema refs

    string

    Примеры

    "example-etag"
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathmedia_idОбязательно

    Schema refs

    Uuid

    Примеры

    550e8400-e29b-41d4-a716-446655440000
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • If-MatchОбязательно

    Exactly one strong ETag returned by an authenticated Mod or ModVersion detail/create/update response. Weak validators, wildcard, and lists fail with 412; omission fails with 428.

    Schema refs

    string

    Примеры

    "example-etag"
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Responses

200Importer-managed media deleted or idempotently confirmed.
application/json

Schema refs

ModMediaDeleteResponse

Примеры

{"ok":true,"status":1,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","deleted":true}}
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"status":1,"data":{"id":"550e8400-e29b-41d4-a716-446655440000","deleted":true}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
412The required If-Match precondition failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/precondition_failed","title":"Precondition failed","status":412,"detail":"The supplied If-Match value no longer matches the resource.","instance":"urn:moddingflow:request:req_01JZ7Q4QDFHAXR9B4V9VXEP39M","ok":false,"code":"precondition_failed","machine_code":"precondition_failed","http_status":412,"request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M","retryable":false,"docs_slug":"errors.precondition_failed","error":{"machine_code":"precondition_failed","http_status":412,"message":"The supplied If-Match value no longer matches the resource.","request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M"}}
44444444-4444-4444-8444-444444444444
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/precondition_failed","title":"Precondition failed","status":412,"detail":"The supplied If-Match value no longer matches the resource.","instance":"urn:moddingflow:request:req_01JZ7Q4QDFHAXR9B4V9VXEP39M","ok":false,"code":"precondition_failed","machine_code":"precondition_failed","http_status":412,"request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M","retryable":false,"docs_slug":"errors.precondition_failed","error":{"machine_code":"precondition_failed","http_status":412,"message":"The supplied If-Match value no longer matches the resource.","request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M"}}
44444444-4444-4444-8444-444444444444
428The mutable resource requires an If-Match validator.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/precondition_required","title":"Precondition required","status":428,"detail":"If-Match is required for mutable Mod and ModVersion writes.","instance":"urn:moddingflow:request:req_01JZ7Q4REQUIRED","ok":false,"code":"precondition_required","machine_code":"precondition_required","http_status":428,"request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED","retryable":false,"docs_slug":"errors.precondition_required","error":{"machine_code":"precondition_required","http_status":428,"message":"If-Match is required for mutable Mod and ModVersion writes.","request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/precondition_required","title":"Precondition required","status":428,"detail":"If-Match is required for mutable Mod and ModVersion writes.","instance":"urn:moddingflow:request:req_01JZ7Q4REQUIRED","ok":false,"code":"precondition_required","machine_code":"precondition_required","http_status":428,"request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED","retryable":false,"docs_slug":"errors.precondition_required","error":{"machine_code":"precondition_required","http_status":428,"message":"If-Match is required for mutable Mod and ModVersion writes.","request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

List a publishing project's team roles.

/mods/{mod_id}/team-members

Operation ID
listModTeamMembers
Path template
/mods/{mod_id}/team-members
Responses
200, 400, 401, 403, 404, 429, 500
Scopes
teams:admin
Request body
Без body

Параметры

  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222

Responses

200Publishing project team.
application/json

Schema refs

TeamMemberListResponse

Примеры

{"ok":true,"data":{"mod_id":"550e8400-e29b-41d4-a716-446655440000","project_id":"550e8400-e29b-41d4-a716-446655440000","members":[{"user_id":"550e8400-e29b-41d4-a716-446655440000","role":"owner","capabilities":["openid"],"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}]}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"mod_id":"550e8400-e29b-41d4-a716-446655440000","project_id":"550e8400-e29b-41d4-a716-446655440000","members":[{"user_id":"550e8400-e29b-41d4-a716-446655440000","role":"owner","capabilities":["openid"],"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}]}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
DELETE

Remove a project team member.

/mods/{mod_id}/team-members/{user_id}

Operation ID
removeModTeamMember
Path template
/mods/{mod_id}/team-members/{user_id}
Responses
200, 400, 401, 403, 404, 429, 500
Scopes
teams:admin
Request body
Без body

Параметры

  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222
  • pathuser_idОбязательно

    Schema refs

    Uuid

    Примеры

    550e8400-e29b-41d4-a716-446655440000

Responses

200Team member is absent from the project.
application/json

Schema refs

TeamMemberRemovalResponse

Примеры

{"ok":true,"data":{"mod_id":"550e8400-e29b-41d4-a716-446655440000","project_id":"550e8400-e29b-41d4-a716-446655440000","user_id":"550e8400-e29b-41d4-a716-446655440000","removed":true,"changed":true}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"mod_id":"550e8400-e29b-41d4-a716-446655440000","project_id":"550e8400-e29b-41d4-a716-446655440000","user_id":"550e8400-e29b-41d4-a716-446655440000","removed":true,"changed":true}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
PUT

Assign or replace a project team role.

/mods/{mod_id}/team-members/{user_id}

Operation ID
setModTeamMember
Path template
/mods/{mod_id}/team-members/{user_id}
Responses
200, 400, 401, 403, 404, 409, 429, 500
Scopes
teams:admin
Request body
Нужен body

Параметры

  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222
  • pathuser_idОбязательно

    Schema refs

    Uuid

    Примеры

    550e8400-e29b-41d4-a716-446655440000

Request body

application/jsonОбязательно

Schema refs

SetTeamMemberRequest

Примеры

{"role":"maintainer"}

Responses

200Team role assigned.
application/json

Schema refs

TeamMemberResponse

Примеры

{"ok":true,"data":{"user_id":"550e8400-e29b-41d4-a716-446655440000","role":"owner","capabilities":["openid"],"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z","mod_id":"550e8400-e29b-41d4-a716-446655440000","project_id":"550e8400-e29b-41d4-a716-446655440000"}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"user_id":"550e8400-e29b-41d4-a716-446655440000","role":"owner","capabilities":["openid"],"created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z","mod_id":"550e8400-e29b-41d4-a716-446655440000","project_id":"550e8400-e29b-41d4-a716-446655440000"}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Create a mod version draft.

/mods/{mod_id}/versions

Operation ID
createModVersion
Path template
/mods/{mod_id}/versions
Responses
201, 400, 401, 403, 404, 409, 422, 429, 500
Scopes
versions:write
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

CreateModVersionRequest

Примеры

{"version":"1.6.1170","label":"example-value","file_kind":"main","file_category":"main","release_channel":"stable","game_version_key":"1.6.1170","loader_key":"example-value","changelog":"example-value","game_slug":"example-value","game_versions":["1.6.1170"],"loader_platforms":["fabric"],"dependencies":[{"kind":"required_mod","target_mod_id":"22222222-2222-4222-8222-222222222222","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value"}]}

Responses

201Version draft created.
application/json

Schema refs

PublicApiVersionWriteResponse

Примеры

{"ok":true,"status":1,"data":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","artifact_id":"44444444-4444-4444-8444-444444444444","source_file_id":1,"state":"draft","request_metadata":{"version":"1.6.1170","label":"example-value","release_channel":"stable","changelog":"example-value","file_category":"main","game_slug":"example-value","game_versions":["1.6.1170"],"loader_platforms":["fabric"],"dependencies":[{"kind":"required_mod","target_mod_id":"22222222-2222-4222-8222-222222222222","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value"}],"requirements":[{"kind":"skse","label":"example-value","detail":"Representative value for the public API contract.","url":"https://example.invalid/moddingflow-resource"}],"build_metadata":{"source":"local","commit_sha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflow_run_id":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"},"publish_state":"draft"},"idempotent":true,"upload":{"file_id":1,"create_url":"example-value"}}}
33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"status":1,"data":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","artifact_id":"44444444-4444-4444-8444-444444444444","source_file_id":1,"state":"draft","request_metadata":{"version":"1.6.1170","label":"example-value","release_channel":"stable","changelog":"example-value","file_category":"main","game_slug":"example-value","game_versions":["1.6.1170"],"loader_platforms":["fabric"],"dependencies":[{"kind":"required_mod","target_mod_id":"22222222-2222-4222-8222-222222222222","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value"}],"requirements":[{"kind":"skse","label":"example-value","detail":"Representative value for the public API contract.","url":"https://example.invalid/moddingflow-resource"}],"build_metadata":{"source":"local","commit_sha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflow_run_id":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"},"publish_state":"draft"},"idempotent":true,"upload":{"file_id":1,"create_url":"example-value"}}}
33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
PATCH

Update a mod version draft.

/mods/{mod_id}/versions/{version_id}

Operation ID
updateModVersion
Path template
/mods/{mod_id}/versions/{version_id}
Responses
200, 400, 401, 403, 404, 409, 412, 422, 428, 429, 500
Scopes
versions:write
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headerIf-MatchОбязательно

    Exactly one strong ETag returned by an authenticated Mod or ModVersion detail/create/update response. Weak validators, wildcard, and lists fail with 412; omission fails with 428.

    Schema refs

    string

    Примеры

    "example-etag"
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222
  • pathversion_idОбязательно

    Stable public mod-version UUID.

    Schema refs

    VersionId

    Примеры

    33333333-3333-4333-8333-333333333333

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • If-MatchОбязательно

    Exactly one strong ETag returned by an authenticated Mod or ModVersion detail/create/update response. Weak validators, wildcard, and lists fail with 412; omission fails with 428.

    Schema refs

    string

    Примеры

    "example-etag"
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

UpdateModVersionRequest

Примеры

{"version":"1.6.1170","label":"example-value","file_kind":"main","file_category":"main","release_channel":"stable","game_version_key":"1.6.1170","loader_key":"example-value","changelog":"example-value","game_slug":"example-value","game_versions":["1.6.1170"],"loader_platforms":["fabric"],"dependencies":[{"kind":"required_mod","target_mod_id":"22222222-2222-4222-8222-222222222222","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value"}]}

Responses

200Version metadata updated.
application/json

Schema refs

PublicApiVersionWriteResponse

Примеры

{"ok":true,"status":1,"data":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","artifact_id":"44444444-4444-4444-8444-444444444444","source_file_id":1,"state":"draft","request_metadata":{"version":"1.6.1170","label":"example-value","release_channel":"stable","changelog":"example-value","file_category":"main","game_slug":"example-value","game_versions":["1.6.1170"],"loader_platforms":["fabric"],"dependencies":[{"kind":"required_mod","target_mod_id":"22222222-2222-4222-8222-222222222222","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value"}],"requirements":[{"kind":"skse","label":"example-value","detail":"Representative value for the public API contract.","url":"https://example.invalid/moddingflow-resource"}],"build_metadata":{"source":"local","commit_sha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflow_run_id":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"},"publish_state":"draft"},"idempotent":true,"upload":{"file_id":1,"create_url":"example-value"}}}
33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"status":1,"data":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","artifact_id":"44444444-4444-4444-8444-444444444444","source_file_id":1,"state":"draft","request_metadata":{"version":"1.6.1170","label":"example-value","release_channel":"stable","changelog":"example-value","file_category":"main","game_slug":"example-value","game_versions":["1.6.1170"],"loader_platforms":["fabric"],"dependencies":[{"kind":"required_mod","target_mod_id":"22222222-2222-4222-8222-222222222222","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value"}],"requirements":[{"kind":"skse","label":"example-value","detail":"Representative value for the public API contract.","url":"https://example.invalid/moddingflow-resource"}],"build_metadata":{"source":"local","commit_sha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflow_run_id":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"},"publish_state":"draft"},"idempotent":true,"upload":{"file_id":1,"create_url":"example-value"}}}
33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
412The required If-Match precondition failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/precondition_failed","title":"Precondition failed","status":412,"detail":"The supplied If-Match value no longer matches the resource.","instance":"urn:moddingflow:request:req_01JZ7Q4QDFHAXR9B4V9VXEP39M","ok":false,"code":"precondition_failed","machine_code":"precondition_failed","http_status":412,"request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M","retryable":false,"docs_slug":"errors.precondition_failed","error":{"machine_code":"precondition_failed","http_status":412,"message":"The supplied If-Match value no longer matches the resource.","request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M"}}
44444444-4444-4444-8444-444444444444
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/precondition_failed","title":"Precondition failed","status":412,"detail":"The supplied If-Match value no longer matches the resource.","instance":"urn:moddingflow:request:req_01JZ7Q4QDFHAXR9B4V9VXEP39M","ok":false,"code":"precondition_failed","machine_code":"precondition_failed","http_status":412,"request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M","retryable":false,"docs_slug":"errors.precondition_failed","error":{"machine_code":"precondition_failed","http_status":412,"message":"The supplied If-Match value no longer matches the resource.","request_id":"req_01JZ7Q4QDFHAXR9B4V9VXEP39M","trace_id":"trace_01JZ7Q4QDFHAXR9B4V9VXEP39M"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
428The mutable resource requires an If-Match validator.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/precondition_required","title":"Precondition required","status":428,"detail":"If-Match is required for mutable Mod and ModVersion writes.","instance":"urn:moddingflow:request:req_01JZ7Q4REQUIRED","ok":false,"code":"precondition_required","machine_code":"precondition_required","http_status":428,"request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED","retryable":false,"docs_slug":"errors.precondition_required","error":{"machine_code":"precondition_required","http_status":428,"message":"If-Match is required for mutable Mod and ModVersion writes.","request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/precondition_required","title":"Precondition required","status":428,"detail":"If-Match is required for mutable Mod and ModVersion writes.","instance":"urn:moddingflow:request:req_01JZ7Q4REQUIRED","ok":false,"code":"precondition_required","machine_code":"precondition_required","http_status":428,"request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED","retryable":false,"docs_slug":"errors.precondition_required","error":{"machine_code":"precondition_required","http_status":428,"message":"If-Match is required for mutable Mod and ModVersion writes.","request_id":"req_01JZ7Q4REQUIRED","trace_id":"trace_01JZ7Q4REQUIRED"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Register an immutable external-provider artifact reference.

/mods/{mod_id}/versions/{version_id}/external-artifact

Operation ID
registerExternalArtifact
Path template
/mods/{mod_id}/versions/{version_id}/external-artifact
Responses
202, 400, 401, 403, 404, 409, 422, 429, 500, 503
Scopes
files:reference
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222
  • pathversion_idОбязательно

    Stable public mod-version UUID.

    Schema refs

    VersionId

    Примеры

    33333333-3333-4333-8333-333333333333

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

RegisterExternalArtifactRequest

Примеры

{"locator":{"provider":"github","repository_id":"1","release_id":"1","asset_id":"1","repository_owner":"example-org","repository_name":"example-mod","file_name":"Example Mod"},"size_bytes":1,"content_type":"application/zip","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","sha512":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","sha1":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"evidence":[{"kind":"provider_api","reference":"example:1","observed_at":"2026-07-11T10:30:00Z"}],"provenance":{"source":"auto_import","source_revision":"example:1","observed_at":"2026-07-11T10:30:00Z","permission_decision_id":"example:1"}}

Responses

202Reference accepted for asynchronous provider validation.
application/json

Schema refs

RegisterExternalArtifactResponse

Примеры

{"ok":true,"status":202,"data":{"artifact_id":"44444444-4444-4444-8444-444444444444","reference_id":"550e8400-e29b-41d4-a716-446655440000","validation_job_id":"550e8400-e29b-41d4-a716-446655440000","state":"pending","status_resource":{"type":"external_artifact_validation_job","id":"550e8400-e29b-41d4-a716-446655440000","state":"queued","next_attempt_at":"2026-07-11T10:30:00Z"}}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"status":202,"data":{"artifact_id":"44444444-4444-4444-8444-444444444444","reference_id":"550e8400-e29b-41d4-a716-446655440000","validation_job_id":"550e8400-e29b-41d4-a716-446655440000","state":"pending","status_resource":{"type":"external_artifact_validation_job","id":"550e8400-e29b-41d4-a716-446655440000","state":"queued","next_attempt_at":"2026-07-11T10:30:00Z"}}}
44444444-4444-4444-8444-444444444444
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
503A required service or provider is temporarily unavailable.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

44444444-4444-4444-8444-444444444444
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

44444444-4444-4444-8444-444444444444
POST

Publish a validated mod version.

/mods/{mod_id}/versions/{version_id}/publish

Operation ID
publishModVersion
Path template
/mods/{mod_id}/versions/{version_id}/publish
Responses
200, 400, 401, 403, 404, 409, 422, 429, 500
Scopes
versions:publish
Request body
Без body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222
  • pathversion_idОбязательно

    Stable public mod-version UUID.

    Schema refs

    VersionId

    Примеры

    33333333-3333-4333-8333-333333333333

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Responses

200Version published.
application/json

Schema refs

PublicApiVersionWriteResponse

Примеры

{"ok":true,"status":1,"data":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","artifact_id":"44444444-4444-4444-8444-444444444444","source_file_id":1,"state":"draft","request_metadata":{"version":"1.6.1170","label":"example-value","release_channel":"stable","changelog":"example-value","file_category":"main","game_slug":"example-value","game_versions":["1.6.1170"],"loader_platforms":["fabric"],"dependencies":[{"kind":"required_mod","target_mod_id":"22222222-2222-4222-8222-222222222222","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value"}],"requirements":[{"kind":"skse","label":"example-value","detail":"Representative value for the public API contract.","url":"https://example.invalid/moddingflow-resource"}],"build_metadata":{"source":"local","commit_sha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflow_run_id":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"},"publish_state":"draft"},"idempotent":true,"upload":{"file_id":1,"create_url":"example-value"}}}
33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"status":1,"data":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","artifact_id":"44444444-4444-4444-8444-444444444444","source_file_id":1,"state":"draft","request_metadata":{"version":"1.6.1170","label":"example-value","release_channel":"stable","changelog":"example-value","file_category":"main","game_slug":"example-value","game_versions":["1.6.1170"],"loader_platforms":["fabric"],"dependencies":[{"kind":"required_mod","target_mod_id":"22222222-2222-4222-8222-222222222222","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value"}],"requirements":[{"kind":"skse","label":"example-value","detail":"Representative value for the public API contract.","url":"https://example.invalid/moddingflow-resource"}],"build_metadata":{"source":"local","commit_sha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflow_run_id":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"},"publish_state":"draft"},"idempotent":true,"upload":{"file_id":1,"create_url":"example-value"}}}
33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Archive a mod version.

/mods/{mod_id}/versions/{version_id}/rollback

Operation ID
rollbackModVersion
Path template
/mods/{mod_id}/versions/{version_id}/rollback
Responses
200, 400, 401, 403, 404, 409, 422, 429, 500
Scopes
versions:archive
Request body
Без body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathmod_idОбязательно

    Stable public mod UUID.

    Schema refs

    ModId

    Примеры

    22222222-2222-4222-8222-222222222222
  • pathversion_idОбязательно

    Stable public mod-version UUID.

    Schema refs

    VersionId

    Примеры

    33333333-3333-4333-8333-333333333333

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Responses

200Version archived.
application/json

Schema refs

PublicApiVersionWriteResponse

Примеры

{"ok":true,"status":1,"data":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","artifact_id":"44444444-4444-4444-8444-444444444444","source_file_id":1,"state":"draft","request_metadata":{"version":"1.6.1170","label":"example-value","release_channel":"stable","changelog":"example-value","file_category":"main","game_slug":"example-value","game_versions":["1.6.1170"],"loader_platforms":["fabric"],"dependencies":[{"kind":"required_mod","target_mod_id":"22222222-2222-4222-8222-222222222222","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value"}],"requirements":[{"kind":"skse","label":"example-value","detail":"Representative value for the public API contract.","url":"https://example.invalid/moddingflow-resource"}],"build_metadata":{"source":"local","commit_sha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflow_run_id":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"},"publish_state":"draft"},"idempotent":true,"upload":{"file_id":1,"create_url":"example-value"}}}
33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"status":1,"data":{"id":"33333333-3333-4333-8333-333333333333","mod_id":"22222222-2222-4222-8222-222222222222","artifact_id":"44444444-4444-4444-8444-444444444444","source_file_id":1,"state":"draft","request_metadata":{"version":"1.6.1170","label":"example-value","release_channel":"stable","changelog":"example-value","file_category":"main","game_slug":"example-value","game_versions":["1.6.1170"],"loader_platforms":["fabric"],"dependencies":[{"kind":"required_mod","target_mod_id":"22222222-2222-4222-8222-222222222222","label":"example-value","url":"https://example.invalid/moddingflow-resource","note":"example-value"}],"requirements":[{"kind":"skse","label":"example-value","detail":"Representative value for the public API contract.","url":"https://example.invalid/moddingflow-resource"}],"build_metadata":{"source":"local","commit_sha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflow_run_id":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"},"publish_state":"draft"},"idempotent":true,"upload":{"file_id":1,"create_url":"example-value"}}}
33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444

Uploads

POST

Create an upload session.

/uploads

Operation ID
createUploadSession
Path template
/uploads
Responses
201, 400, 401, 403, 409, 422, 429, 500
Scopes
files:upload
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

CreateUploadRequest

Примеры

{"fileId":1,"originalFilename":"Example Mod","sizeBytes":1,"contentType":"example-value","expectedHashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","sha1":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","md5":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"expectedSha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","archiveManifest":{"format":"zip","entryCount":0,"totalUncompressedBytes":0,"rootPaths":["example-value"],"manifestSha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"buildMetadata":{"source":"local","commitSha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflowRunId":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"}}

Responses

201Upload session created.
application/json

Schema refs

UploadSessionResponse

Примеры

{"ok":true,"status":201,"data":{"sessionId":"550e8400-e29b-41d4-a716-446655440000","supportCorrelationId":"upl_aaaaaaaaaaaaaaaaaaaa","strategy":"single","fileId":1,"expiresIn":1,"expiresAt":"2026-07-11T10:30:00Z","status":"created","method":"PUT","uploadUrl":"https://example.invalid/moddingflow-resource","urlExpiresIn":1,"headers":{"if-none-match":"*"},"uploadId":"550e8400-e29b-41d4-a716-446655440000"}}
{"if-none-match":"*"}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
  • X-Upload-Correlation-Id

    Pseudonymous upload lifecycle handle that is safe to include in a support ticket. It is not an authorization credential.

    Schema refs

    UploadSupportCorrelationId

Примеры

{"ok":true,"status":201,"data":{"sessionId":"550e8400-e29b-41d4-a716-446655440000","supportCorrelationId":"upl_aaaaaaaaaaaaaaaaaaaa","strategy":"single","fileId":1,"expiresIn":1,"expiresAt":"2026-07-11T10:30:00Z","status":"created","method":"PUT","uploadUrl":"https://example.invalid/moddingflow-resource","urlExpiresIn":1,"headers":{"if-none-match":"*"},"uploadId":"550e8400-e29b-41d4-a716-446655440000"}}
{"if-none-match":"*"}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Validate an upload request without creating a session.

/uploads:validate

Operation ID
validateUploadRequest
Path template
/uploads:validate
Responses
200, 400, 401, 403, 404, 422, 429, 500
Scopes
files:upload
Request body
Нужен body

Параметры

  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request headers

  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

ValidateUploadRequest

Примеры

{"fileId":1,"originalFilename":"Example Mod","sizeBytes":1,"contentType":"example-value","expectedHashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","sha1":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","md5":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"expectedSha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","archiveManifest":{"format":"zip","entryCount":0,"totalUncompressedBytes":0,"rootPaths":["example-value"],"manifestSha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"buildMetadata":{"source":"local","commitSha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflowRunId":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"}}

Responses

200Upload request is valid and no resource was created.
application/json

Schema refs

UploadValidationResponse

Примеры

{"ok":true,"data":{"valid":true,"mode":"validate_only","fileId":1,"originalFilename":"Example Mod","sizeBytes":1,"contentType":"example-value","expectedSha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","metadata":{"archiveManifest":{"format":"zip","entryCount":0,"totalUncompressedBytes":0,"rootPaths":["example-value"],"manifestSha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"buildMetadata":{"source":"local","commitSha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflowRunId":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"}},"strategy":{"kind":"single","partSizeBytes":1,"parallelism":1},"constraints":{"maxArchiveBytes":1,"sha256Required":true},"checks":["authorization","authorization","authorization","authorization","authorization"]}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"valid":true,"mode":"validate_only","fileId":1,"originalFilename":"Example Mod","sizeBytes":1,"contentType":"example-value","expectedSha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","metadata":{"archiveManifest":{"format":"zip","entryCount":0,"totalUncompressedBytes":0,"rootPaths":["example-value"],"manifestSha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"buildMetadata":{"source":"local","commitSha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflowRunId":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"}},"strategy":{"kind":"single","partSizeBytes":1,"parallelism":1},"constraints":{"maxArchiveBytes":1,"sha256Required":true},"checks":["authorization","authorization","authorization","authorization","authorization"]}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

Get upload session status.

/uploads/{upload_id}

Operation ID
getUploadSession
Path template
/uploads/{upload_id}
Responses
200, 400, 401, 403, 404, 410, 429, 500
Scopes
files:upload
Request body
Без body

Параметры

  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathupload_idОбязательно

    Stable public upload session UUID.

    Schema refs

    UploadId

    Примеры

    550e8400-e29b-41d4-a716-446655440000

Request headers

  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Responses

200Upload session lifecycle status.
application/json

Schema refs

UploadSessionStatusResponse

Примеры

{"ok":true,"data":{"sessionId":"550e8400-e29b-41d4-a716-446655440000","supportCorrelationId":"upl_aaaaaaaaaaaaaaaaaaaa","status":"created","lifecycleStatus":"draft","strategy":"single","fileId":1,"expectedSizeBytes":1,"actualSizeBytes":1,"expiresAt":"2026-07-11T10:30:00Z","expiresIn":0,"job":{"id":"550e8400-e29b-41d4-a716-446655440000","kind":"upload_processing","resource":{"kind":"upload-session","id":"550e8400-e29b-41d4-a716-446655440000"},"status":"queued","terminal":true,"statusEndpoint":"example-value","reason":"example-value","progress":{"completed":0,"total":1,"percent":0,"unit":"job"},"retry":{"retryable":true,"strategy":"worker_retry","retryAfterSeconds":0,"attempt":0,"maxAttempts":1,"nextAttemptAt":"2026-07-11T10:30:00Z"},"createdAt":"2026-07-11T10:30:00Z","updatedAt":"2026-07-11T10:30:00Z","startedAt":"2026-07-11T10:30:00Z"},"metadata":{"archiveManifest":{"format":"zip","entryCount":0,"totalUncompressedBytes":0,"rootPaths":["example-value"],"manifestSha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"buildMetadata":{"source":"local","commitSha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflowRunId":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"}},"reason":"example-value","endpoints":{"status":"example-value","parts":"example-value","complete":"example-value","abort":"example-value"},"retry":{"idempotencyKeyRequired":true,"refreshSignedUrls":"example-value","resumeStrategy":"example-value","metadataOnlyChangesRequireReupload":false},"resume":{"supported":true,"strategy":"single","partSizeBytes":1,"parallelism":1},"progress":{"available":true,"uploadedBytes":0,"totalBytes":1,"percent":0,"totalParts":1,"completedParts":[{"partNumber":1,"etag":"W/\"example-etag\"","sizeBytes":0}]}}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string
  • X-Upload-Correlation-Id

    Pseudonymous upload lifecycle handle that is safe to include in a support ticket. It is not an authorization credential.

    Schema refs

    UploadSupportCorrelationId

Примеры

{"ok":true,"data":{"sessionId":"550e8400-e29b-41d4-a716-446655440000","supportCorrelationId":"upl_aaaaaaaaaaaaaaaaaaaa","status":"created","lifecycleStatus":"draft","strategy":"single","fileId":1,"expectedSizeBytes":1,"actualSizeBytes":1,"expiresAt":"2026-07-11T10:30:00Z","expiresIn":0,"job":{"id":"550e8400-e29b-41d4-a716-446655440000","kind":"upload_processing","resource":{"kind":"upload-session","id":"550e8400-e29b-41d4-a716-446655440000"},"status":"queued","terminal":true,"statusEndpoint":"example-value","reason":"example-value","progress":{"completed":0,"total":1,"percent":0,"unit":"job"},"retry":{"retryable":true,"strategy":"worker_retry","retryAfterSeconds":0,"attempt":0,"maxAttempts":1,"nextAttemptAt":"2026-07-11T10:30:00Z"},"createdAt":"2026-07-11T10:30:00Z","updatedAt":"2026-07-11T10:30:00Z","startedAt":"2026-07-11T10:30:00Z"},"metadata":{"archiveManifest":{"format":"zip","entryCount":0,"totalUncompressedBytes":0,"rootPaths":["example-value"],"manifestSha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"buildMetadata":{"source":"local","commitSha":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","tag":"example-value","release":"example-value","repository":"example-value","workflowRunId":"550e8400-e29b-41d4-a716-446655440000","client":"example-value"}},"reason":"example-value","endpoints":{"status":"example-value","parts":"example-value","complete":"example-value","abort":"example-value"},"retry":{"idempotencyKeyRequired":true,"refreshSignedUrls":"example-value","resumeStrategy":"example-value","metadataOnlyChangesRequireReupload":false},"resume":{"supported":true,"strategy":"single","partSizeBytes":1,"parallelism":1},"progress":{"available":true,"uploadedBytes":0,"totalBytes":1,"percent":0,"totalParts":1,"completedParts":[{"partNumber":1,"etag":"W/\"example-etag\"","sizeBytes":0}]}}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
410The requested session or expiring capability is no longer usable.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/gone","title":"Capability expired","status":410,"detail":"The requested session is no longer usable.","instance":"urn:moddingflow:request:req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","ok":false,"code":"gone","machine_code":"gone","http_status":410,"request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","retryable":false,"docs_slug":"errors.gone","error":{"machine_code":"gone","http_status":410,"message":"The requested session is no longer usable.","request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/gone","title":"Capability expired","status":410,"detail":"The requested session is no longer usable.","instance":"urn:moddingflow:request:req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","ok":false,"code":"gone","machine_code":"gone","http_status":410,"request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","retryable":false,"docs_slug":"errors.gone","error":{"machine_code":"gone","http_status":410,"message":"The requested session is no longer usable.","request_id":"req_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E","trace_id":"trace_01JZ7Q4HZD7JQ1B5WDRVD1ZK7E"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Cancel an upload session.

/uploads/{upload_id}/abort

Operation ID
abortUploadSession
Path template
/uploads/{upload_id}/abort
Responses
200, 400, 401, 403, 404, 409, 422, 429, 500
Scopes
files:manage
Request body
Без body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathupload_idОбязательно

    Stable public upload session UUID.

    Schema refs

    UploadId

    Примеры

    550e8400-e29b-41d4-a716-446655440000

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Responses

200Upload aborted.
application/json

Schema refs

AbortUploadResponse

Примеры

{"ok":true,"data":{"status":"aborted","lifecycleStatus":"cancelled","supportCorrelationId":"upl_aaaaaaaaaaaaaaaaaaaa"}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"status":"aborted","lifecycleStatus":"cancelled","supportCorrelationId":"upl_aaaaaaaaaaaaaaaaaaaa"}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Complete an upload session.

/uploads/{upload_id}/complete

Operation ID
completeUploadSession
Path template
/uploads/{upload_id}/complete
Responses
200, 202, 400, 401, 403, 404, 409, 422, 429, 500
Scopes
files:upload
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathupload_idОбязательно

    Stable public upload session UUID.

    Schema refs

    UploadId

    Примеры

    550e8400-e29b-41d4-a716-446655440000

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

CompleteUploadRequest

Примеры

{"expectedHashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","sha1":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","md5":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"expectedSha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","parts":[{"etag":"W/\"example-etag\"","partNumber":1}]}

Responses

200Upload completed synchronously or reached a terminal processing result.
application/json

Schema refs

CompleteUploadResponse

Примеры

{"ok":true,"data":{"actualSizeBytes":14230210,"blobId":"550e8400-e29b-41d4-a716-446655440000","contentType":"application/x-7z-compressed","deduped":false,"etag":"\"archive-etag\"","sessionId":"11111111-1111-4111-8111-111111111111","status":"ready","supportCorrelationId":"upl_7f4c2e36bd8a0e9f124c"}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"actualSizeBytes":14230210,"blobId":"550e8400-e29b-41d4-a716-446655440000","contentType":"application/x-7z-compressed","deduped":false,"etag":"\"archive-etag\"","sessionId":"11111111-1111-4111-8111-111111111111","status":"ready","supportCorrelationId":"upl_7f4c2e36bd8a0e9f124c"}}
202Upload accepted for asynchronous processing. Poll the required Location until the returned job becomes terminal.
application/json

Schema refs

CompleteUploadResponse

Примеры

{"ok":true,"data":{"actualSizeBytes":14230210,"contentType":"application/x-7z-compressed","etag":"\"archive-etag\"","sessionId":"11111111-1111-4111-8111-111111111111","status":"processing","supportCorrelationId":"upl_7f4c2e36bd8a0e9f124c","job":{"id":"job_01JZ7R9M6TT2S8K9E0H3J3E1N2","kind":"upload_processing","resource":{"kind":"upload-session","id":"11111111-1111-4111-8111-111111111111"},"status":"queued","terminal":false,"statusEndpoint":"/v1/uploads/11111111-1111-4111-8111-111111111111","reason":null,"retry":{"retryable":true,"strategy":"worker_retry","retryAfterSeconds":10}}}}
  • LocationОбязательно

    Required polling endpoint; exactly equals data.job.statusEndpoint in this response.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"actualSizeBytes":14230210,"contentType":"application/x-7z-compressed","etag":"\"archive-etag\"","sessionId":"11111111-1111-4111-8111-111111111111","status":"processing","supportCorrelationId":"upl_7f4c2e36bd8a0e9f124c","job":{"id":"job_01JZ7R9M6TT2S8K9E0H3J3E1N2","kind":"upload_processing","resource":{"kind":"upload-session","id":"11111111-1111-4111-8111-111111111111"},"status":"queued","terminal":false,"statusEndpoint":"/v1/uploads/11111111-1111-4111-8111-111111111111","reason":null,"retry":{"retryable":true,"strategy":"worker_retry","retryAfterSeconds":10}}}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Sign upload parts.

/uploads/{upload_id}/parts

Operation ID
signUploadParts
Path template
/uploads/{upload_id}/parts
Responses
200, 400, 401, 403, 404, 409, 422, 429, 500
Scopes
files:upload
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathupload_idОбязательно

    Stable public upload session UUID.

    Schema refs

    UploadId

    Примеры

    550e8400-e29b-41d4-a716-446655440000

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

UploadPartsRequest

Примеры

{"partNumbers":[1]}

Responses

200Signed upload parts.
application/json

Schema refs

UploadPartsResponse

Примеры

{"ok":true,"data":{"parts":[{"partNumber":1,"url":"https://example.invalid/moddingflow-resource","sizeBytes":1,"expiresIn":1}]}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"parts":[{"partNumber":1,"url":"https://example.invalid/moddingflow-resource","sizeBytes":1,"expiresIn":1}]}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444

Webhooks

GET

List webhook deliveries.

/webhook-deliveries

Operation ID
listWebhookDeliveries
Path template
/webhook-deliveries
Responses
200, 400, 401, 403, 429, 500
Scopes
webhooks:read
Request body
Без body

Параметры

  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • querycreated_afterОпционально

    Return resources created after this timestamp.

    Schema refs

    string

    Примеры

    2026-07-11T10:30:00Z
  • querycursorОпционально

    Opaque v1. keyset pagination cursor returned by the previous page. Treat it as an unparsed base64url token and echo it back only for the same resource, normalized filters, and sort. Incompatible or malformed reuse returns 400 invalid_input; rows inserted after page one stay outside the cursor snapshot.

    Schema refs

    string

    Примеры

    v1.example-opaque-cursor
  • querydelivery_statusОпционально

    Filter webhook deliveries by delivery status.

    Schema refs

    WebhookDeliveryStatus

    Примеры

    queued
  • queryevent_kindОпционально

    Filter webhook deliveries by stable event name.

    Schema refs

    WebhookEventKind

    Примеры

    mod.updated
  • querylimitОпционально

    Page size. The maximum public API page size is 100.

    Schema refs

    integer

    Примеры

    25
  • querynext_attempt_beforeОпционально

    Return webhook deliveries whose next retry is due before this timestamp.

    Schema refs

    string

    Примеры

    2026-07-11T10:30:00Z

Request headers

  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Responses

200Webhook delivery attempts and retry state for the authenticated actor.
application/json

Schema refs

WebhookDeliveryListResponse

Примеры

{"ok":true,"data":{"items":[{"id":"550e8400-e29b-41d4-a716-446655440000","delivery_id":"550e8400-e29b-41d4-a716-446655440000","subscription_id":"550e8400-e29b-41d4-a716-446655440000","event_kind":"mod.updated","event_version":1,"delivery_status":"queued","attempt_count":0,"next_attempt_at":"2026-07-11T10:30:00Z","last_attempt_at":"2026-07-11T10:30:00Z","delivered_at":"2026-07-11T10:30:00Z","last_response_status":100,"last_response_latency_ms":0,"payload":{"id":"550e8400-e29b-41d4-a716-446655440000","delivery_id":"550e8400-e29b-41d4-a716-446655440000","spec_version":"1.0","event_id":"550e8400-e29b-41d4-a716-446655440000","kind":"mod.updated","type":"mod.updated","version":1,"created_at":"2026-07-11T10:30:00Z","occurred_at":"2026-07-11T10:30:00Z","subject":{"user_id":"550e8400-e29b-41d4-a716-446655440000","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","upload_session_id":"550e8400-e29b-41d4-a716-446655440000","artifact_id":"44444444-4444-4444-8444-444444444444","job_id":"550e8400-e29b-41d4-a716-446655440000"},"data":{}},"created_at":"2026-07-11T10:30:00Z"}],"pagination":{"limit":1,"next_cursor":"v1.example-opaque-cursor","order":"example-value"}}}
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"items":[{"id":"550e8400-e29b-41d4-a716-446655440000","delivery_id":"550e8400-e29b-41d4-a716-446655440000","subscription_id":"550e8400-e29b-41d4-a716-446655440000","event_kind":"mod.updated","event_version":1,"delivery_status":"queued","attempt_count":0,"next_attempt_at":"2026-07-11T10:30:00Z","last_attempt_at":"2026-07-11T10:30:00Z","delivered_at":"2026-07-11T10:30:00Z","last_response_status":100,"last_response_latency_ms":0,"payload":{"id":"550e8400-e29b-41d4-a716-446655440000","delivery_id":"550e8400-e29b-41d4-a716-446655440000","spec_version":"1.0","event_id":"550e8400-e29b-41d4-a716-446655440000","kind":"mod.updated","type":"mod.updated","version":1,"created_at":"2026-07-11T10:30:00Z","occurred_at":"2026-07-11T10:30:00Z","subject":{"user_id":"550e8400-e29b-41d4-a716-446655440000","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","upload_session_id":"550e8400-e29b-41d4-a716-446655440000","artifact_id":"44444444-4444-4444-8444-444444444444","job_id":"550e8400-e29b-41d4-a716-446655440000"},"data":{}},"created_at":"2026-07-11T10:30:00Z"}],"pagination":{"limit":1,"next_cursor":"v1.example-opaque-cursor","order":"example-value"}}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Manually redeliver a webhook delivery.

/webhook-deliveries/{delivery_id}/redeliver

Operation ID
redeliverWebhookDelivery
Path template
/webhook-deliveries/{delivery_id}/redeliver
Responses
202, 400, 401, 403, 404, 409, 429, 500
Scopes
webhooks:write
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathdelivery_idОбязательно

    Stable public webhook delivery UUID used by receivers for idempotency.

    Schema refs

    WebhookDeliveryId

    Примеры

    550e8400-e29b-41d4-a716-446655440000

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/json

Schema refs

WebhookRedeliveryRequest

Примеры

{"reason":"example-value"}

Responses

202Linked manual redelivery created with a new delivery_id and the original event_id.
application/json

Schema refs

WebhookDeliveryResponse

Примеры

{"ok":true,"data":{"delivery":{"id":"550e8400-e29b-41d4-a716-446655440000","delivery_id":"550e8400-e29b-41d4-a716-446655440000","subscription_id":"550e8400-e29b-41d4-a716-446655440000","event_kind":"mod.updated","event_version":1,"delivery_status":"queued","attempt_count":0,"next_attempt_at":"2026-07-11T10:30:00Z","last_attempt_at":"2026-07-11T10:30:00Z","delivered_at":"2026-07-11T10:30:00Z","last_response_status":100,"last_response_latency_ms":0,"payload":{"id":"550e8400-e29b-41d4-a716-446655440000","delivery_id":"550e8400-e29b-41d4-a716-446655440000","spec_version":"1.0","event_id":"550e8400-e29b-41d4-a716-446655440000","kind":"mod.updated","type":"mod.updated","version":1,"created_at":"2026-07-11T10:30:00Z","occurred_at":"2026-07-11T10:30:00Z","subject":{"user_id":"550e8400-e29b-41d4-a716-446655440000","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","upload_session_id":"550e8400-e29b-41d4-a716-446655440000","artifact_id":"44444444-4444-4444-8444-444444444444","job_id":"550e8400-e29b-41d4-a716-446655440000"},"data":{}},"created_at":"2026-07-11T10:30:00Z"}}}
22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"delivery":{"id":"550e8400-e29b-41d4-a716-446655440000","delivery_id":"550e8400-e29b-41d4-a716-446655440000","subscription_id":"550e8400-e29b-41d4-a716-446655440000","event_kind":"mod.updated","event_version":1,"delivery_status":"queued","attempt_count":0,"next_attempt_at":"2026-07-11T10:30:00Z","last_attempt_at":"2026-07-11T10:30:00Z","delivered_at":"2026-07-11T10:30:00Z","last_response_status":100,"last_response_latency_ms":0,"payload":{"id":"550e8400-e29b-41d4-a716-446655440000","delivery_id":"550e8400-e29b-41d4-a716-446655440000","spec_version":"1.0","event_id":"550e8400-e29b-41d4-a716-446655440000","kind":"mod.updated","type":"mod.updated","version":1,"created_at":"2026-07-11T10:30:00Z","occurred_at":"2026-07-11T10:30:00Z","subject":{"user_id":"550e8400-e29b-41d4-a716-446655440000","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","upload_session_id":"550e8400-e29b-41d4-a716-446655440000","artifact_id":"44444444-4444-4444-8444-444444444444","job_id":"550e8400-e29b-41d4-a716-446655440000"},"data":{}},"created_at":"2026-07-11T10:30:00Z"}}}
22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
44444444-4444-4444-8444-444444444444
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
GET

List webhook subscriptions.

/webhook-subscriptions

Operation ID
listWebhookSubscriptions
Path template
/webhook-subscriptions
Responses
200, 400, 401, 403, 429, 500
Scopes
webhooks:read
Request body
Без body

Параметры

  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • querycursorОпционально

    Opaque v1. keyset pagination cursor returned by the previous page. Treat it as an unparsed base64url token and echo it back only for the same resource, normalized filters, and sort. Incompatible or malformed reuse returns 400 invalid_input; rows inserted after page one stay outside the cursor snapshot.

    Schema refs

    string

    Примеры

    v1.example-opaque-cursor
  • querylimitОпционально

    Page size. The maximum public API page size is 100.

    Schema refs

    integer

    Примеры

    25

Request headers

  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Responses

200Webhook subscriptions owned by the authenticated actor.
application/json

Schema refs

WebhookSubscriptionListResponse

Примеры

{"ok":true,"data":{"items":[{"id":"550e8400-e29b-41d4-a716-446655440000","target_url":"https://example.invalid/moddingflow-resource","name":"Example Mod","event_kinds":["mod.updated"],"status":"active","secret_display_prefix":"example-value","signing":{"algorithm":"hmac-sha256","header":"X-Moddingflow-Signature","timestamp_header":"X-Moddingflow-Timestamp","delivery_id_header":"X-Moddingflow-Delivery-Id","payload_format":"Sign `${timestamp}.${raw_body}` and verify the v1 base64url HMAC-SHA256 signature.","tolerance_seconds":300},"signing_secret_version":1,"failure_count":0,"disabled_at":"2026-07-11T10:30:00Z","created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}],"pagination":{"limit":1,"next_cursor":"v1.example-opaque-cursor","order":"example-value"}}}
  • ETag

    Weak anonymous representation validator for If-None-Match, or a strong authenticated Mod/ModVersion write validator for If-Match. Do not interchange the two.

    Schema refs

    string
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"items":[{"id":"550e8400-e29b-41d4-a716-446655440000","target_url":"https://example.invalid/moddingflow-resource","name":"Example Mod","event_kinds":["mod.updated"],"status":"active","secret_display_prefix":"example-value","signing":{"algorithm":"hmac-sha256","header":"X-Moddingflow-Signature","timestamp_header":"X-Moddingflow-Timestamp","delivery_id_header":"X-Moddingflow-Delivery-Id","payload_format":"Sign `${timestamp}.${raw_body}` and verify the v1 base64url HMAC-SHA256 signature.","tolerance_seconds":300},"signing_secret_version":1,"failure_count":0,"disabled_at":"2026-07-11T10:30:00Z","created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"}],"pagination":{"limit":1,"next_cursor":"v1.example-opaque-cursor","order":"example-value"}}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Create a webhook subscription.

/webhook-subscriptions

Operation ID
createWebhookSubscription
Path template
/webhook-subscriptions
Responses
201, 400, 401, 403, 409, 422, 429, 500
Scopes
webhooks:write
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/jsonОбязательно

Schema refs

CreateWebhookSubscriptionRequest

Примеры

{"name":"Example Mod","target_url":"https://example.invalid/moddingflow-resource","event_kinds":["mod.updated"],"metadata":{}}

Responses

201Webhook subscription created. The raw signing secret is returned once.
application/json

Schema refs

WebhookSubscriptionResponse

Примеры

{"ok":true,"data":{"subscription":{"id":"550e8400-e29b-41d4-a716-446655440000","target_url":"https://example.invalid/moddingflow-resource","name":"Example Mod","event_kinds":["mod.updated"],"status":"active","secret_display_prefix":"example-value","signing":{"algorithm":"hmac-sha256","header":"X-Moddingflow-Signature","timestamp_header":"X-Moddingflow-Timestamp","delivery_id_header":"X-Moddingflow-Delivery-Id","payload_format":"Sign `${timestamp}.${raw_body}` and verify the v1 base64url HMAC-SHA256 signature.","tolerance_seconds":300},"signing_secret_version":1,"failure_count":0,"disabled_at":"2026-07-11T10:30:00Z","created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"},"signing_secret":"whsec_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","signing_secret_version":1}}
{"algorithm":"hmac-sha256","header":"X-Moddingflow-Signature","timestamp_header":"X-Moddingflow-Timestamp","delivery_id_header":"X-Moddingflow-Delivery-Id","payload_format":"Sign `${timestamp}.${raw_body}` and verify the v1 base64url HMAC-SHA256 signature.","tolerance_seconds":300}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"subscription":{"id":"550e8400-e29b-41d4-a716-446655440000","target_url":"https://example.invalid/moddingflow-resource","name":"Example Mod","event_kinds":["mod.updated"],"status":"active","secret_display_prefix":"example-value","signing":{"algorithm":"hmac-sha256","header":"X-Moddingflow-Signature","timestamp_header":"X-Moddingflow-Timestamp","delivery_id_header":"X-Moddingflow-Delivery-Id","payload_format":"Sign `${timestamp}.${raw_body}` and verify the v1 base64url HMAC-SHA256 signature.","tolerance_seconds":300},"signing_secret_version":1,"failure_count":0,"disabled_at":"2026-07-11T10:30:00Z","created_at":"2026-07-11T10:30:00Z","updated_at":"2026-07-11T10:30:00Z"},"signing_secret":"whsec_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","signing_secret_version":1}}
{"algorithm":"hmac-sha256","header":"X-Moddingflow-Signature","timestamp_header":"X-Moddingflow-Timestamp","delivery_id_header":"X-Moddingflow-Delivery-Id","payload_format":"Sign `${timestamp}.${raw_body}` and verify the v1 base64url HMAC-SHA256 signature.","tolerance_seconds":300}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
422Field-level validation failed.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/validation_failed","title":"Validation failed","status":422,"detail":"One or more fields are invalid.","instance":"urn:moddingflow:request:req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","ok":false,"code":"validation_failed","machine_code":"validation_failed","http_status":422,"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6","retryable":false,"fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"docs_slug":"errors.validation_failed","error":{"machine_code":"validation_failed","http_status":422,"message":"One or more fields are invalid.","fields":[{"field":"game_version","code":"unsupported_version","message":"This game version is not supported for the selected mod."}],"request_id":"req_01JZ7Q4XEKGQQ80P7RXMPVXMH6","trace_id":"trace_01JZ7Q4XEKGQQ80P7RXMPVXMH6"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
POST

Rotate a webhook subscription signing secret.

/webhook-subscriptions/{subscription_id}/rotate-secret

Operation ID
rotateWebhookSubscriptionSecret
Path template
/webhook-subscriptions/{subscription_id}/rotate-secret
Responses
200, 400, 401, 403, 404, 409, 429, 500
Scopes
webhooks:write
Request body
Нужен body

Параметры

  • headerIdempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • headertraceparentОпционально

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • pathsubscription_idОбязательно

    Stable public webhook subscription UUID.

    Schema refs

    WebhookSubscriptionId

    Примеры

    550e8400-e29b-41d4-a716-446655440000

Request headers

  • Idempotency-KeyОбязательно

    Client-generated retry key for write/upload operations. Reusing a key with a different body returns a conflict.

    Schema refs

    string

    Примеры

    example-idempotency-key-0001
  • traceparent

    W3C trace context header accepted for distributed tracing.

    Schema refs

    string

    Примеры

    00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

Request body

application/json

Schema refs

WebhookSecretRotationRequest

Примеры

{"overlap_seconds":3600}

Responses

200Signing secret rotated. The raw secret is returned once and is never persisted in generic idempotency storage.
application/json

Schema refs

WebhookSecretRotationResponse

Примеры

{"ok":true,"data":{"subscription_id":"550e8400-e29b-41d4-a716-446655440000","signing_secret":"whsec_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","signing_secret_version":2,"secret_display_prefix":"example-value","overlap_expires_at":"2026-07-11T10:30:00Z"}}
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"ok":true,"data":{"subscription_id":"550e8400-e29b-41d4-a716-446655440000","signing_secret":"whsec_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","signing_secret_version":2,"secret_display_prefix":"example-value","overlap_expires_at":"2026-07-11T10:30:00Z"}}
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/invalid_request","title":"Invalid request","status":400,"detail":"Request body must be valid JSON.","instance":"urn:moddingflow:request:req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","ok":false,"code":"invalid_request","machine_code":"invalid_request","http_status":400,"request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A","retryable":false,"docs_slug":"errors.invalid_request","error":{"machine_code":"invalid_request","http_status":400,"message":"Request body must be valid JSON.","request_id":"req_01JZ7Q3J6WQX8P6M0K6W0R5B7A","trace_id":"trace_01JZ7Q3J6WQX8P6M0K6W0R5B7A"}}
44444444-4444-4444-8444-444444444444
401Authentication is missing, expired, or invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/unauthorized","title":"Unauthorized","status":401,"detail":"Bearer token is required.","instance":"urn:moddingflow:request:req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","ok":false,"code":"unauthorized","machine_code":"unauthorized","http_status":401,"request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","retryable":false,"docs_slug":"errors.unauthorized","error":{"machine_code":"unauthorized","http_status":401,"message":"Bearer token is required.","request_id":"req_01JZ7Q3QYBBYB9C4T1E8VNW3YJ","trace_id":"trace_01JZ7Q3QYBBYB9C4T1E8VNW3YJ"}}
44444444-4444-4444-8444-444444444444
403The token or public client lacks the required scope.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/forbidden","title":"Forbidden","status":403,"detail":"Required scope is missing.","instance":"urn:moddingflow:request:req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","ok":false,"code":"forbidden","machine_code":"forbidden","http_status":403,"request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","retryable":false,"required_scopes":["mods:write"],"docs_slug":"errors.forbidden","error":{"machine_code":"forbidden","http_status":403,"message":"Required scope is missing.","request_id":"req_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2","trace_id":"trace_01JZ7Q3X2YQ0S6C6ZPFTW2SMX2"}}
44444444-4444-4444-8444-444444444444
404The requested public resource was not found or is not visible.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/not_found","title":"Resource not found","status":404,"detail":"The requested public resource was not found.","instance":"urn:moddingflow:request:req_01JZ7Q43P31JSQQF7W3R24H0ED","ok":false,"code":"not_found","machine_code":"not_found","http_status":404,"request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED","retryable":false,"docs_slug":"errors.not_found","error":{"machine_code":"not_found","http_status":404,"message":"The requested public resource was not found.","request_id":"req_01JZ7Q43P31JSQQF7W3R24H0ED","trace_id":"trace_01JZ7Q43P31JSQQF7W3R24H0ED"}}
44444444-4444-4444-8444-444444444444
409The operation conflicts with current state or idempotency history.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/idempotency_conflict","title":"Idempotency conflict","status":409,"detail":"The Idempotency-Key was already used with a different request body.","instance":"urn:moddingflow:request:req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","ok":false,"code":"idempotency_conflict","machine_code":"idempotency_conflict","http_status":409,"request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","retryable":false,"docs_slug":"errors.idempotency_conflict","error":{"machine_code":"idempotency_conflict","http_status":409,"message":"The Idempotency-Key was already used with a different request body.","request_id":"req_01JZ7Q4AT5GHZXC0KNEDZ2YNSF","trace_id":"trace_01JZ7Q4AT5GHZXC0KNEDZ2YNSF"}}
44444444-4444-4444-8444-444444444444
429Rate limit exceeded.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
  • RateLimit-Limit

    Quota limit for the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    120
  • RateLimit-Remaining

    Remaining quota in the active public API rate-limit bucket.

    Schema refs

    integer

    Примеры

    0
  • RateLimit-Reset

    Seconds until the active public API rate-limit bucket resets.

    Schema refs

    integer

    Примеры

    60
  • Retry-After

    Seconds the client should wait before retrying a rate-limited request.

    Schema refs

    integer

    Примеры

    60
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/rate_limited","title":"Rate limit exceeded","status":429,"detail":"Public API rate limit exceeded before side effects.","instance":"urn:moddingflow:request:req_01JZ7Q54FMQNEJCW8CRK5VHM1C","ok":false,"code":"rate_limited","machine_code":"rate_limited","http_status":429,"request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C","retryable":true,"retry_after_seconds":60,"quota_bucket":"catalog.search.ip","docs_slug":"errors.rate_limited","error":{"machine_code":"rate_limited","http_status":429,"message":"Public API rate limit exceeded before side effects.","request_id":"req_01JZ7Q54FMQNEJCW8CRK5VHM1C","trace_id":"trace_01JZ7Q54FMQNEJCW8CRK5VHM1C"}}
44444444-4444-4444-8444-444444444444
500Unexpected server error.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444
  • X-Request-Id

    Server-generated request id also present in error envelopes.

    Schema refs

    string

Примеры

{"type":"https://moddingflow.com/problems/internal_error","title":"Internal server error","status":500,"detail":"Unexpected server error.","instance":"urn:moddingflow:request:req_01JZ7Q5B0VNX4D8S55A1PV39H7","ok":false,"code":"internal_error","machine_code":"internal_error","http_status":500,"request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7","retryable":true,"docs_slug":"errors.internal_error","error":{"machine_code":"internal_error","http_status":500,"message":"Unexpected server error.","request_id":"req_01JZ7Q5B0VNX4D8S55A1PV39H7","trace_id":"trace_01JZ7Q5B0VNX4D8S55A1PV39H7"}}
44444444-4444-4444-8444-444444444444

Schemas

AbortUploadResponseobject

required=2; properties=2

AgentGatewayPolicyobject

required=4; properties=4

AgentTokenExchangeRequestobject

required=5; properties=8

Примеры

mods:read files:download install_plans:resolve
AgentToolDefinitionobject

required=7; properties=8

AgentToolNamestring

required=0; properties=0

mods.search, mods.get, install_plans.resolve, downloads.resolve, versions.compare, publisher.draft, publisher.validate

AgentToolRegistryResponseobject

required=2; properties=2

AgentToolRunRequestobject

required=1; properties=5

AgentToolRunResponseobject

required=2; properties=2

ApiKeyCapabilitiesResponseobject

required=2; properties=2

ApiKeyListResponseobject

required=2; properties=2

ApiKeyOneTimeSecretResponseobject

required=2; properties=2

ApiKeyResourceGrantobject

required=2; properties=2

ApiKeyRevocationResponseobject

required=2; properties=2

ArtifactDownloadMetadataobject

required=2; properties=2

ArtifactIdobject

Stable public artifact UUID.

required=0; properties=0

Примеры

44444444-4444-4444-8444-444444444444
ArtifactMetadataResolvedResponseobject

required=0; properties=0

ArtifactMetadataResponseobject

required=2; properties=2

Примеры

44444444-4444-4444-8444-444444444444
22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
/v1/downloads/44444444-4444-4444-8444-444444444444/resolve
AsyncJobobject

required=6; properties=13

AsyncJobProgressobject

Truthful coarse lifecycle completion. This is a single job unit, not an estimated scan percentage: non-terminal jobs return 0/1 and terminal jobs return 1/1, including unsuccessful terminal outcomes.

required=4; properties=4

AsyncJobResourceobject

required=2; properties=2

AsyncJobRetryPolicyobject

required=3; properties=6

AsyncJobStatusstring

Stable status values for public API long-running jobs. queued and processing are non-terminal; succeeded, rejected, failed, and cancelled are terminal.

required=0; properties=0

queued, processing, succeeded, rejected, failed, cancelled

AuthorizationCodeTokenRequestobject

required=4; properties=6

Примеры

website
dcr_550e8400e29b41d4a716446655440000
CatalogFacetListResponseobject

required=2; properties=2

CatalogSearchResponseobject

required=2; properties=2

CompleteUploadRequestobject

required=0; properties=3

CompleteUploadResponseobject

required=2; properties=2

CreateApiKeyRequestobject

required=2; properties=4

CreateModFallbackMediaRequestobject

required=0; properties=0

CreateModMediaMultipartRequestobject

required=2; properties=2

CreateModRequestobject

required=7; properties=11

CreateModVersionRequestobject

required=1; properties=14

CreateUploadRequestobject

required=3; properties=8

CreateWebhookSubscriptionRequestobject

required=2; properties=4

CurrentAccountProfileobject

required=8; properties=9

Примеры

mod_author
CurrentAccountProfilePatchobject

required=0; properties=4

Примеры

mod_author
CurrentAccountProfileResponseobject

required=2; properties=2

Примеры

mod_author
CurrentAccountReadProfileobject

required=7; properties=7

CurrentAccountReadProfileResponseobject

required=2; properties=2

CurrentAccountResourceobject

required=6; properties=6

CurrentAccountResourceListResponseobject

required=2; properties=2

CurrentAccountResponseobject

required=2; properties=2

Примеры

mod_author
DeviceAuthorizationRequestobject

required=0; properties=3

Примеры

website
dcr_550e8400e29b41d4a716446655440000
mods:read files:download install_plans:resolve
DeviceAuthorizationResponseobject

required=6; properties=6

DeviceCodeTokenRequestobject

required=2; properties=4

Примеры

website
dcr_550e8400e29b41d4a716446655440000
DomainAvailabilityStatestring

required=0; properties=0

active, archived, tombstoned

DomainEntityKindstring

required=0; properties=0

Game, Mod, ModVersion, Artifact, Blob, UploadSession, DownloadGrant, User, Team, Dependency, Job, WebhookSubscription, WebhookDelivery

DownloadDistributionSourceobject

required=4; properties=4

DownloadFallbackRequestobject

required=1; properties=3

DownloadFallbackResponseobject

required=2; properties=2

Примеры

44444444-4444-4444-8444-444444444444
DownloadGrantobject

required=8; properties=9

Примеры

44444444-4444-4444-8444-444444444444
DownloadJobobject

required=8; properties=10

Примеры

44444444-4444-4444-8444-444444444444
DownloadRepresentationobject

required=6; properties=6

DownloadResolveRequestobject

required=0; properties=4

DownloadResolveResponseobject

required=2; properties=2

Примеры

44444444-4444-4444-8444-444444444444
22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
[{"id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","file_kind":"main","file_version":"1.6.1170","label":"Main archive","original_filename":"mod-1.0.0.zip","content_type":"application/zip","game_version_key":"1.6.1170","loader_key":null,"size_bytes":1048576,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean","download_metadata":{"resolve_endpoint":"/v1/downloads/44444444-4444-4444-8444-444444444444/resolve","range_supported":true}}]
DownloadResolveUnionResponseobject

required=0; properties=0

DynamicClientRegistrationDocumentobject

required=10; properties=13

Примеры

dcr_550e8400e29b41d4a716446655440000
https://manager.example.invalid
openid mods:read files:download install_plans:resolve profile:read
https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000
DynamicClientRegistrationReplacementobject

RFC 7592 full replacement metadata. client_id must match the registration management URI; omitted optional fields, including client_uri and contacts, are reset to their defaults.

required=2; properties=11

Примеры

website
dcr_550e8400e29b41d4a716446655440000
https://manager.example.invalid
DynamicClientRegistrationRequestobject

RFC 7591 public-client metadata. client_name is the only universal required field; redirect_uris is also required when authorization_code is used. client_uri and contacts are optional support metadata. client_id is server-issued and is rejected on POST /oauth/register.

required=1; properties=10

Примеры

https://manager.example.invalid
DynamicClientRegistrationResponseobject

required=11; properties=14

Примеры

dcr_550e8400e29b41d4a716446655440000
https://manager.example.invalid
openid mods:read files:download install_plans:resolve profile:read
https://moddingflow.com/oauth/register/dcr_550e8400e29b41d4a716446655440000
mfrg_6gY5Ej7ueSfxm2bY7A9sQnDA9-D5X67kRvXqXcHDYpw
ErrorEnvelopeobject

required=3; properties=3

ExternalArtifactCodebergLocatorobject

required=7; properties=7

ExternalArtifactDistributionSourceobject

required=5; properties=5

ExternalArtifactEvidenceobject

required=3; properties=3

ExternalArtifactFileNamestring

Provider file name only. Paths, control characters, arbitrary URLs, and credentials are forbidden.

required=0; properties=0

ExternalArtifactGithubLocatorobject

required=7; properties=7

ExternalArtifactHangarLocatorobject

required=5; properties=5

ExternalArtifactHashesobject

Complete immutable file digests. Modrinth references require sha256, sha512, and sha1; other providers require sha256 and may include the additional provider-authoritative digests.

required=1; properties=3

ExternalArtifactLocatorobject

required=0; properties=0

ExternalArtifactMetadataModobject

required=7; properties=9

Примеры

22222222-2222-4222-8222-222222222222
ExternalArtifactMetadataResponseobject

required=2; properties=2

Примеры

44444444-4444-4444-8444-444444444444
22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
ExternalArtifactMetadataVersionobject

required=10; properties=10

Примеры

33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
ExternalArtifactModrinthHashesobject

Immutable Modrinth file digests. All three provider-authoritative and locally calculated hashes are required at registration time.

required=3; properties=3

ExternalArtifactModrinthLocatorobject

required=4; properties=4

ExternalArtifactProvenanceobject

required=3; properties=4

ExternalArtifactProviderstring

Supported source provider. Provider identity is public metadata; canonical locators remain control-plane only.

required=0; properties=0

github, modrinth, hangar, codeberg

ExternalArtifactReferenceMetadataobject

Safe public identity and revalidation timestamps only. The canonical provider locator and transport URL are excluded.

required=5; properties=5

ExternalArtifactReferenceValidationStatestring

required=0; properties=0

pending, verified, stale, blocked, withdrawn

ExternalArtifactRegistrationStatusResourceobject

required=4; properties=4

ExternalArtifactValidationJobobject

required=16; properties=16

Примеры

44444444-4444-4444-8444-444444444444
ExternalArtifactValidationJobResponseobject

required=3; properties=3

Примеры

44444444-4444-4444-8444-444444444444
ExternalArtifactValidationJobStatestring

required=0; properties=0

queued, leased, retry_wait, succeeded, failed, cancelled

ExternalArtifactVerificationMetadataobject

required=2; properties=4

ExternalDownloadCapabilitiesobject

required=5; properties=5

ExternalDownloadGrantobject

required=9; properties=9

Примеры

44444444-4444-4444-8444-444444444444
ExternalDownloadRepresentationobject

required=7; properties=7

ExternalDownloadResolveResponseobject

required=2; properties=2

Примеры

44444444-4444-4444-8444-444444444444
22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
ExternalDownloadResumeobject

required=12; properties=12

ExternalDownloadTransportobject

required=7; properties=7

ExternalDownloadVerificationobject

required=3; properties=6

ExternalPublicModArtifactDetailsobject

Public immutable external artifact metadata. Canonical locators, provider request URLs, credentials, and worker internals are never present.

required=17; properties=18

Примеры

44444444-4444-4444-8444-444444444444
22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
FieldErrorobject

required=3; properties=3

FileIntegrityHashesobject

Extensible hashes of the complete immutable stored file bytes. SHA-256 is canonical for new clients and is not interchangeable with an HTTP ETag or a digest of one range; SHA-1 and MD5 are compatibility-only when present.

required=1; properties=3

GameListResponseobject

required=2; properties=2

GameResponseobject

required=2; properties=2

InstallPlanConflictobject

required=3; properties=6

Примеры

22222222-2222-4222-8222-222222222222
InstallPlanDependencyConstraintobject

required=3; properties=6

Примеры

22222222-2222-4222-8222-222222222222
InstallPlanResolveRequestobject

required=2; properties=12

Примеры

44444444-4444-4444-8444-444444444444
22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
InstallPlanResolveResponseobject

required=2; properties=2

InstallPlanStepobject

required=6; properties=15

Примеры

22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
44444444-4444-4444-8444-444444444444
1.6.1170
JsonWebKeyobject

required=6; properties=6

JsonWebKeySetobject

required=1; properties=1

LocalizedStringMapobject

Localized text keyed by BCP 47 language tags supported by the site.

required=0; properties=0

ModDependencyListResponseobject

required=2; properties=2

ModIdobject

Stable public mod UUID.

required=0; properties=0

Примеры

22222222-2222-4222-8222-222222222222
ModListResponseobject

required=2; properties=2

ModMediaDeleteResponseobject

required=2; properties=3

ModMediaListResponseobject

required=2; properties=2

ModMediaMetadataInputobject

required=7; properties=8

ModMediaProvenanceInputobject

required=7; properties=9

ModMediaWriteResponseobject

required=2; properties=3

ModResponseobject

required=2; properties=2

Примеры

22222222-2222-4222-8222-222222222222
ModVersionListResponseobject

required=2; properties=2

ModVersionResponseobject

required=2; properties=2

Примеры

33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
[{"id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","file_kind":"main","file_version":"1.6.1170","label":"Main archive","original_filename":"mod-1.0.0.zip","content_type":"application/zip","game_version_key":"1.6.1170","loader_key":null,"size_bytes":1048576,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean","download_metadata":{"resolve_endpoint":"/v1/downloads/44444444-4444-4444-8444-444444444444/resolve","range_supported":true}}]
OAuthAuthorizationServerMetadataobject

required=11; properties=12

Примеры

["code"]
["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange"]
["S256"]
["none","client_secret_basic","client_secret_post"]
OAuthClientKeystring

Opaque registered OAuth client identifier. First-party clients use stable lowercase registry keys and dynamically registered clients use opaque dcr_ identifiers. Treat values as opaque and do not branch on a fixed enum.

required=0; properties=0

Примеры

website
dcr_550e8400e29b41d4a716446655440000
OAuthIntrospectionRequestobject

required=1; properties=2

OAuthIntrospectionResponseobject

required=1; properties=9

Примеры

mods:read files:download install_plans:resolve
website
dcr_550e8400e29b41d4a716446655440000
OAuthRevocationRequestobject

required=1; properties=4

Примеры

website
dcr_550e8400e29b41d4a716446655440000
OAuthRevocationResponseobject

required=1; properties=2

OAuthTokenRequestobject

required=0; properties=0

OAuthTokenResponseobject

required=4; properties=7

Примеры

mods:read files:download install_plans:resolve
OidcDiscoveryResponseobject

required=16; properties=17

Примеры

["code"]
["query"]
["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange"]
["S256"]
["none","client_secret_basic","client_secret_post"]
["public"]
["RS256"]
["iss","sub","aud","exp","iat","nonce"]
PaginationMetaobject

required=3; properties=3

PersonalAccessTokenMetadataobject

required=8; properties=14

ProblemDetailsErrorobject

RFC 9457 Problem Details response for Moddingflow public API errors. The code/error fields are compatibility extensions for existing clients.

required=8; properties=19

Примеры

44444444-4444-4444-8444-444444444444
PublicAccessTierstring

required=0; properties=0

public, restricted, paid

PublicApiErrorobject

required=5; properties=6

PublicApiModWriteResponseobject

required=2; properties=3

Примеры

22222222-2222-4222-8222-222222222222
PublicApiScopestring

Granular public API scope. admin:* is reserved for trusted internal clients only.

required=0; properties=0

openid, account:read, profile:write, mods:read, mods:write, builds:read, builds:write, versions:write, versions:publish, versions:archive, files:upload, files:reference, files:manage, files:download, install_plans:resolve, profile:read, webhooks:read, webhooks:write, private_data:read, teams:admin, credentials:manage, agent:run, agent:tools:read, agent:tools:download, agent:tools:publish_draft, agent:tools:write_confirmed, agent:tools:write, admin:*

PublicApiVersionWriteResponseobject

required=2; properties=3

Примеры

33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
PublicBlobobject

Provider-neutral immutable byte identity. Bucket, object key, ETag, and filename are deliberately absent.

required=5; properties=6

PublicBuildobject

required=6; properties=11

PublicCatalogCategoryobject

required=2; properties=2

PublicCatalogFacetobject

required=3; properties=6

PublicChangelogEntryobject

required=0; properties=3

PublicGameobject

required=4; properties=8

PublicIdentityLifecycleobject

required=4; properties=5

PublicJobobject

required=6; properties=7

PublicModobject

required=6; properties=29

Примеры

22222222-2222-4222-8222-222222222222
PublicModArtifactobject

required=6; properties=17

Примеры

44444444-4444-4444-8444-444444444444
22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
1.6.1170
PublicModArtifactDetailsobject

Complete managed artifact metadata emitted only when the current immutable blob has truthful integrity, AV-scan, and resolve-eligibility evidence.

required=0; properties=0

PublicModAuthorobject

required=3; properties=3

PublicModDependencyobject

required=4; properties=11

Примеры

22222222-2222-4222-8222-222222222222
PublicModLatestReleaseobject

required=5; properties=5

Примеры

33333333-3333-4333-8333-333333333333
44444444-4444-4444-8444-444444444444
PublicModLicenseobject

required=3; properties=7

Примеры

22222222-2222-4222-8222-222222222222
PublicModMediaobject

required=11; properties=15

PublicModMediaAttributionobject

required=1; properties=2

PublicModMediaSourceobject

required=3; properties=4

PublicModMediaSrcsetobject

required=3; properties=3

PublicModPermissionsobject

required=5; properties=8

Примеры

22222222-2222-4222-8222-222222222222
PublicModVersionobject

required=6; properties=15

Примеры

33333333-3333-4333-8333-333333333333
22222222-2222-4222-8222-222222222222
44444444-4444-4444-8444-444444444444
[{"id":"44444444-4444-4444-8444-444444444444","mod_id":"22222222-2222-4222-8222-222222222222","version_id":"33333333-3333-4333-8333-333333333333","file_kind":"main","file_version":"1.6.1170","label":"Main archive","original_filename":"mod-1.0.0.zip","content_type":"application/zip","game_version_key":"1.6.1170","loader_key":null,"size_bytes":1048576,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hashes":{"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"artifact_source":"r2_blob","status":"published","scan_status":"clean","download_metadata":{"resolve_endpoint":"/v1/downloads/44444444-4444-4444-8444-444444444444/resolve","range_supported":true}}]
PublicTeamobject

required=7; properties=7

Примеры

22222222-2222-4222-8222-222222222222
PublicUserobject

Privacy-minimized public account identity. Email, login credentials, and auth-provider identifiers are never part of this schema.

required=5; properties=6

PublicVisibilitystring

required=0; properties=0

public, unlisted, private, test_mode

PublishStatestring

required=0; properties=0

draft, uploaded, quarantined, scanning, rejected, approved, published, archived

RefreshTokenRequestobject

required=2; properties=5

Примеры

website
dcr_550e8400e29b41d4a716446655440000
mods:read files:download install_plans:resolve
RegisterExternalArtifactCodebergRequestobject

required=6; properties=6

RegisterExternalArtifactGithubRequestobject

required=6; properties=6

RegisterExternalArtifactHangarRequestobject

required=6; properties=6

RegisterExternalArtifactModrinthRequestobject

required=6; properties=6

RegisterExternalArtifactRequestobject

Provider-discriminated registration union. The nested locator.provider constant selects the variant and its statically required digest set.

required=6; properties=6

RegisterExternalArtifactResponseobject

required=3; properties=3

Примеры

44444444-4444-4444-8444-444444444444
ReleaseChannelstring

required=0; properties=0

stable, beta, alpha, experimental

ScopeStringstring

Space-delimited public API scopes.

required=0; properties=0

Примеры

mods:read files:download install_plans:resolve
SetTeamMemberRequestobject

required=1; properties=1

Slugstring

required=0; properties=0

SuccessEnvelopeobject

required=2; properties=2

TeamMemberobject

required=3; properties=5

TeamMemberListResponseobject

required=2; properties=2

TeamMemberRemovalResponseobject

required=2; properties=2

TeamMemberResponseobject

required=2; properties=2

TeamPublishingRolestring

required=0; properties=0

owner, maintainer, publisher, reviewer

UpdateModRequestobject

required=0; properties=11

UpdateModVersionRequestobject

required=0; properties=14

UploadArchiveManifestobject

required=0; properties=5

UploadBuildMetadataobject

required=0; properties=7

UploadCompletedPartobject

required=3; properties=3

UploadContractErrorCodestring

Current stable machine-readable upload/version preflight and lifecycle error codes. Clients must still handle unknown future codes as generic API errors.

required=0; properties=0

account_blocked, archive_dangerous_entry, archive_duplicate_path, archive_encrypted_entry, archive_path_traversal, archive_symlink_entry, archive_too_large, av_scan_rejected, duplicate_version, file_not_found, forbidden, idempotency_conflict, idempotency_in_progress, idempotency_key_required, idempotency_replay_unavailable, insufficient_scope, invalid_file_id, invalid_input, invalid_json, invalid_metadata, invalid_part_numbers, invalid_parts, invalid_request, invalid_sha256, invalid_size, invalid_staging_object, invalid_state_transition, missing_sha256, not_found, part_checksum_mismatch, part_size_mismatch, rate_limited, request_body_too_large, service_unavailable, session_expired, session_not_abortable, session_not_found, session_not_multipart, session_not_uploaded, session_not_uploading, sha256_mismatch, size_mismatch, unauthorized, unsupported_archive_extension, version_not_ready

UploadContractLifecycleStatusstring

Canonical end-to-end creator automation state. The legacy status field remains additive compatibility metadata.

required=0; properties=0

draft, uploading, uploaded, validating, scanning, quarantined, ready, published, failed, cancelled

UploadIdobject

Stable public upload session UUID.

required=0; properties=0

UploadPartsRequestobject

required=1; properties=1

UploadPartsResponseobject

required=2; properties=2

UploadProgressobject

required=6; properties=6

UploadRequestMetadataobject

required=0; properties=2

UploadResumePolicyobject

required=2; properties=4

UploadRetryPolicyobject

required=4; properties=4

UploadSessionActionEndpointsobject

required=4; properties=4

UploadSessionLifecycleStatusstring

Stable upload-session lifecycle state. aborted is the public cancel state for sessions stopped by the client.

required=0; properties=0

created, uploading, uploaded, processing, ready, failed, aborted, expired

UploadSessionResponseobject

required=2; properties=3

Примеры

{"if-none-match":"*"}
UploadSessionStatusResponseobject

required=2; properties=2

UploadSupportCorrelationIdstring

Pseudonymous support-safe upload handle. It contains no user, filename, storage-key, API-key, or token material and grants no access.

required=0; properties=0

UploadValidationResponseobject

required=2; properties=2

Uuidstring

required=0; properties=0

ValidateUploadRequestobject

required=0; properties=0

VersionBuildMetadataobject

required=0; properties=7

VersionChangelogInputobject

required=0; properties=0

VersionDependencyInputobject

required=1; properties=5

VersionIdobject

Stable public mod version UUID.

required=0; properties=0

Примеры

33333333-3333-4333-8333-333333333333
VersionLifecycleStatestring

Canonical ModVersion lifecycle. Legacy uploaded/quarantined/approved/rejected values remain accepted as additive compatibility aliases.

required=0; properties=0

draft, validating, scanning, ready, published, archived, withdrawn, failed

VersionRequestMetadataobject

required=0; properties=13

VersionRequirementInputobject

required=2; properties=4

WebhookDeliveryobject

required=9; properties=18

Примеры

22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
44444444-4444-4444-8444-444444444444
WebhookDeliveryIdstring

Opaque public webhook delivery id. Receivers persist this id for idempotency.

required=0; properties=0

WebhookDeliveryListResponseobject

required=2; properties=2

WebhookDeliveryPayloadobject

required=11; properties=11

Примеры

22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
44444444-4444-4444-8444-444444444444
WebhookDeliveryResponseobject

required=2; properties=2

Примеры

22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
44444444-4444-4444-8444-444444444444
WebhookDeliveryStatusstring

required=0; properties=0

queued, delivering, delivered, failed, exhausted, cancelled

WebhookEventKindstring

Stable public webhook event name. New values are additive and require tolerant receivers.

required=0; properties=0

mod.updated, version.published, file.ready, file.failed, upload.completed, scan.completed, token.changed, app.changed, account.access.changed

WebhookEventSubjectobject

Opaque resource identifiers for the event subject. Mutable slugs are never required.

required=0; properties=6

Примеры

22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
44444444-4444-4444-8444-444444444444
WebhookRedeliveryRequestobject

required=0; properties=1

WebhookSecretRotationRequestobject

required=0; properties=1

WebhookSecretRotationResponseobject

required=2; properties=2

WebhookSigningobject

required=5; properties=6

Примеры

{"algorithm":"hmac-sha256","header":"X-Moddingflow-Signature","timestamp_header":"X-Moddingflow-Timestamp","delivery_id_header":"X-Moddingflow-Delivery-Id","payload_format":"Sign `${timestamp}.${raw_body}` and verify the v1 base64url HMAC-SHA256 signature.","tolerance_seconds":300}
WebhookSubscriptionobject

required=8; properties=12

Примеры

{"algorithm":"hmac-sha256","header":"X-Moddingflow-Signature","timestamp_header":"X-Moddingflow-Timestamp","delivery_id_header":"X-Moddingflow-Delivery-Id","payload_format":"Sign `${timestamp}.${raw_body}` and verify the v1 base64url HMAC-SHA256 signature.","tolerance_seconds":300}
WebhookSubscriptionIdstring

Opaque public webhook subscription id.

required=0; properties=0

WebhookSubscriptionListResponseobject

required=2; properties=2

WebhookSubscriptionResponseobject

required=2; properties=2

Примеры

{"algorithm":"hmac-sha256","header":"X-Moddingflow-Signature","timestamp_header":"X-Moddingflow-Timestamp","delivery_id_header":"X-Moddingflow-Delivery-Id","payload_format":"Sign `${timestamp}.${raw_body}` and verify the v1 base64url HMAC-SHA256 signature.","tolerance_seconds":300}
WebhookSubscriptionStatusstring

required=0; properties=0

active, disabled

Moddingflow

Сообщество, моды и обсуждения для любимых игр.

О проекте

НовостиРейтингAPIOAuthПравила

Продукты

Moddingflow Premium

Документы сайта

Условия использованияПолитика конфиденциальностиПолитика cookieПравовая информацияИнформация о праве на отказ

Поддержка

FAQ

© 2026 Moddingflow. Все права защищены.

Moddingflow
BETA

Игры

Все игры (13)Недавно добавленные

Мои игры

Oblivion RemasteredMinecraftStarfieldFallout 3The Witcher 3Oblivion
ФорумНовостиРейтинг