Moddingflow API reference

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

OpenAPI

3.1.0

Операции

47

Схемы

153

Base URLs

https://api.moddingflow.com/v1

Primary public API namespace.

https://www.moddingflow.com/api/v1

Compatibility namespace behind the current website domain.

Endpoints

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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Responses

200OAuth authorization server metadata document.
application/json

Schema refs

OAuthAuthorizationServerMetadata

Примеры

{"issuer":"https://api.moddingflow.com","authorization_endpoint":"https://api.moddingflow.com/oauth/authorize","device_authorization_endpoint":"https://api.moddingflow.com/oauth/device_authorization","token_endpoint":"https://api.moddingflow.com/oauth/token","revocation_endpoint":"https://api.moddingflow.com/oauth/revoke","introspection_endpoint":"https://api.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://api.moddingflow.com","authorization_endpoint":"https://api.moddingflow.com/oauth/authorize","device_authorization_endpoint":"https://api.moddingflow.com/oauth/device_authorization","token_endpoint":"https://api.moddingflow.com/oauth/token","revocation_endpoint":"https://api.moddingflow.com/oauth/revoke","introspection_endpoint":"https://api.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://api.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://api.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://api.moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Responses

200OpenID Connect provider metadata document.
application/json

Schema refs

OidcDiscoveryResponse

Примеры

{"issuer":"https://api.moddingflow.com","authorization_endpoint":"https://api.moddingflow.com/oauth/authorize","device_authorization_endpoint":"https://api.moddingflow.com/oauth/device_authorization","token_endpoint":"https://api.moddingflow.com/oauth/token","revocation_endpoint":"https://api.moddingflow.com/oauth/revoke","introspection_endpoint":"https://api.moddingflow.com/oauth/introspect","jwks_uri":"https://api.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://api.moddingflow.com","authorization_endpoint":"https://api.moddingflow.com/oauth/authorize","device_authorization_endpoint":"https://api.moddingflow.com/oauth/device_authorization","token_endpoint":"https://api.moddingflow.com/oauth/token","revocation_endpoint":"https://api.moddingflow.com/oauth/revoke","introspection_endpoint":"https://api.moddingflow.com/oauth/introspect","jwks_uri":"https://api.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://api.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://api.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://api.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://api.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
profile:read
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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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
profile:read
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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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
profile:read
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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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
profile:read
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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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
profile:read
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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.moddingflow.com

OAuth issuer namespace for Moddingflow public API clients.

Параметры

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

    Opaque registered OAuth client identifier for a first-party or self-service application.

    Schema refs

    OAuthClientKey

    Примеры

    website
    website
    app_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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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
app_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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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
app_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
app_550e8400e29b41d4a716446655440000
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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
app_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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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

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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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"},"latest_version":"example-value","visibility":"public","access_tier":"public","is_nsfw":true,"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"},"latest_version":"example-value","visibility":"public","access_tier":"public","is_nsfw":true,"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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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"},"latest_version":"example-value","visibility":"public","access_tier":"public","is_nsfw":true,"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"},"latest_version":"example-value","visibility":"public","access_tier":"public","is_nsfw":true,"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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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","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","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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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","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","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","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","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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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"},"latest_version":"example-value","visibility":"public","access_tier":"public","is_nsfw":true,"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"},"latest_version":"example-value","visibility":"public","access_tier":"public","is_nsfw":true,"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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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","fallback_url":"https://example.invalid/moddingflow-resource","url":"https://example.invalid/moddingflow-resource","provider":"example-value","reason":"bunny_ru_geo","expires_at":"2026-07-11T10:30:00Z","expires_in":1}}
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","fallback_url":"https://example.invalid/moddingflow-resource","url":"https://example.invalid/moddingflow-resource","provider":"example-value","reason":"bunny_ru_geo","expires_at":"2026-07-11T10:30:00Z","expires_in":1}}
44444444-4444-4444-8444-444444444444
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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
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

200Resolved download links and verification metadata.
application/json

Schema refs

DownloadResolveResponse

Примеры

{"ok":true,"data":{"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,"resume":{"range_supported":true,"etag":"\"skyui-etag\"","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"}}}
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":"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,"resume":{"range_supported":true,"etag":"\"skyui-etag\"","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"}}}
44444444-4444-4444-8444-444444444444
400Request syntax or query parameters are invalid.
application/problem+json

Schema refs

ProblemDetailsError

Примеры

{"type":"https://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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

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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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

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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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

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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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://api.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
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
app_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

CreateModRequestobject

required=7; properties=11

CreateModVersionRequestobject

required=1; properties=14

CreateUploadRequestobject

required=3; properties=8

CreateWebhookSubscriptionRequestobject

required=2; properties=4

DeviceAuthorizationRequestobject

required=0; properties=3

Примеры

website
app_550e8400e29b41d4a716446655440000
mods:read files:download install_plans:resolve
DeviceAuthorizationResponseobject

required=6; properties=6

DeviceCodeTokenRequestobject

required=2; properties=4

Примеры

website
app_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

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
DownloadResolveRequestobject

required=0; properties=4

DownloadResolveResponseobject

required=2; properties=2

Примеры

44444444-4444-4444-8444-444444444444
ErrorEnvelopeobject

required=3; properties=3

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
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

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","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=11

Примеры

["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 self-service applications use app_<lowercase UUID/hex>. This schema is intentionally open and extensible: treat values as opaque and do not branch on a fixed enum.

required=0; properties=0

Примеры

website
app_550e8400e29b41d4a716446655440000
OAuthIntrospectionRequestobject

required=1; properties=2

OAuthIntrospectionResponseobject

required=1; properties=9

Примеры

mods:read files:download install_plans:resolve
website
app_550e8400e29b41d4a716446655440000
OAuthRevocationRequestobject

required=1; properties=4

Примеры

website
app_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=16

Примеры

["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, mods:read, mods:write, versions:write, versions:publish, versions:archive, files:upload, files:manage, files:download, install_plans:resolve, profile:read, webhooks:read, webhooks:write, private_data:read, teams:admin, 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=24

Примеры

22222222-2222-4222-8222-222222222222
PublicModArtifactobject

required=6; properties=16

Примеры

44444444-4444-4444-8444-444444444444
22222222-2222-4222-8222-222222222222
33333333-3333-4333-8333-333333333333
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

PublicModDependencyobject

required=4; properties=11

Примеры

22222222-2222-4222-8222-222222222222
PublicModLicenseobject

required=3; properties=7

Примеры

22222222-2222-4222-8222-222222222222
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","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
app_550e8400e29b41d4a716446655440000
mods:read files:download install_plans:resolve
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

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