{"openapi":"3.1.0","info":{"title":"Acentric Public API","version":"1.0.0","description":"Canonical REST API for competitions, submissions, payments, scripts, and automations.","license":{"name":"MIT"}},"servers":[{"url":"https://api.acentric.acentrism.com/v1"}],"security":[{"bearerAuth":[]}],"paths":{"/health":{"get":{"operationId":"getHealth","summary":"Check API health","security":[],"x-required-scopes":[],"x-idempotency-key":false,"responses":{"200":{"description":"Check API health","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/HealthDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/HealthDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/openapi.json":{"get":{"operationId":"getOpenApiDocument","summary":"Read the generated OpenAPI document","security":[],"x-required-scopes":[],"x-idempotency-key":false,"responses":{"200":{"description":"Read the generated OpenAPI document","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/OpenApiDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/me":{"get":{"operationId":"getCurrentAccount","summary":"Read the authenticated account","x-required-scopes":["profile:read"],"x-idempotency-key":false,"responses":{"200":{"description":"Read the authenticated account","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/AccountDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/AccountDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/api-keys":{"get":{"operationId":"listApiKeys","summary":"List API keys","x-required-scopes":["tokens:manage"],"x-idempotency-key":false,"responses":{"200":{"description":"List API keys","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ApiKeyCollection"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCollection"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}},"post":{"operationId":"createApiKey","summary":"Create an API key","x-required-scopes":["tokens:manage"],"x-idempotency-key":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreateRequest"}}}},"responses":{"201":{"description":"Create an API key","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ApiKeyDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/competitions":{"get":{"operationId":"listCompetitions","summary":"List public competitions","security":[],"x-required-scopes":[],"x-idempotency-key":false,"responses":{"200":{"description":"List public competitions","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/CompetitionCollection"}},"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionCollection"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}},"post":{"operationId":"createCompetition","summary":"Create a competition draft","x-required-scopes":["competitions:write"],"x-idempotency-key":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionCreateRequest"}}}},"responses":{"201":{"description":"Create a competition draft","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/CompetitionDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/competitions/{id}":{"get":{"operationId":"getCompetition","summary":"Read a public competition","security":[],"x-required-scopes":[],"x-idempotency-key":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Read a public competition","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/CompetitionDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}},"patch":{"operationId":"updateCompetitionDraft","summary":"Update a competition draft","x-required-scopes":["competitions:write"],"x-idempotency-key":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionPatchRequest"}}}},"responses":{"200":{"description":"Update a competition draft","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/CompetitionDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/competitions/{id}/publish-payment":{"post":{"operationId":"createPublishPayment","summary":"Create a payment session for publishing","x-required-scopes":["competitions:publish","payments:write"],"x-idempotency-key":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishPaymentRequest"}}}},"responses":{"201":{"description":"Create a payment session for publishing","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/PublishPaymentDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/PublishPaymentDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/competitions/{id}/join":{"post":{"operationId":"joinCompetition","summary":"Join a competition","x-required-scopes":["competitions:join"],"x-idempotency-key":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"responses":{"201":{"description":"Join a competition","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/JoinDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/JoinDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/competitions/{id}/close":{"post":{"operationId":"closeCompetition","summary":"Close a competition","x-required-scopes":["competitions:write"],"x-idempotency-key":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"responses":{"200":{"description":"Close a competition","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/CompetitionDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/CompetitionDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/competitions/{id}/winner":{"post":{"operationId":"selectCompetitionWinner","summary":"Select a winner account","description":"Requires the competition creator, an account with at least one submitted submission, a payout-ready winner account, and an unexpired winner-selection window.","x-required-scopes":["submissions:review"],"x-idempotency-key":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WinnerSelectionRequest"}}}},"responses":{"200":{"description":"Select a winner account","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/WinnerSelectionDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/WinnerSelectionDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/submissions":{"get":{"operationId":"listSubmissions","summary":"List accessible submissions","x-required-scopes":["submissions:read"],"x-idempotency-key":false,"responses":{"200":{"description":"List accessible submissions","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SubmissionCollection"}},"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionCollection"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}},"post":{"operationId":"createSubmission","summary":"Create a submission draft","x-required-scopes":["submissions:write"],"x-idempotency-key":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionCreateRequest"}}}},"responses":{"201":{"description":"Create a submission draft","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SubmissionDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/submissions/{id}":{"get":{"operationId":"getSubmission","summary":"Read a submission","x-required-scopes":["submissions:read"],"x-idempotency-key":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Read a submission","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SubmissionDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/submissions/{id}/assets":{"post":{"operationId":"prepareSubmissionAssets","summary":"Prepare submission asset uploads","x-required-scopes":["submissions:write"],"x-idempotency-key":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionAssetPrepareRequest"}}}},"responses":{"201":{"description":"Prepare submission asset uploads","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/AssetCollection"}},"application/json":{"schema":{"$ref":"#/components/schemas/AssetCollection"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/submissions/{id}/finalize":{"post":{"operationId":"finalizeSubmission","summary":"Finalize a submission","description":"Requires the submitter to have current payout setup ready before the submission leaves draft state.","x-required-scopes":["submissions:write"],"x-idempotency-key":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"responses":{"200":{"description":"Finalize a submission","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SubmissionDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/submissions/{id}/messages":{"get":{"operationId":"listSubmissionMessages","summary":"List submission messages","x-required-scopes":["submission_messages:read"],"x-idempotency-key":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List submission messages","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/MessageCollection"}},"application/json":{"schema":{"$ref":"#/components/schemas/MessageCollection"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}},"post":{"operationId":"postSubmissionMessage","summary":"Post a submission message","x-required-scopes":["submission_messages:write"],"x-idempotency-key":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionMessageCreateRequest"}}}},"responses":{"201":{"description":"Post a submission message","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/MessageDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/MessageDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/assets/{id}/download":{"get":{"operationId":"getAssetDownload","summary":"Create a signed asset download URL","x-required-scopes":["assets:read","submissions:read"],"x-idempotency-key":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Create a signed asset download URL","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/AssetDownloadDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/AssetDownloadDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/assets/{id}/multipart":{"post":{"operationId":"signMultipartUpload","summary":"Create signed multipart upload URLs","x-required-scopes":["assets:read","submissions:read","submissions:write"],"x-idempotency-key":false,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadRequest"}}}},"responses":{"200":{"description":"Create signed multipart upload URLs","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/MultipartUploadDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/MultipartUploadDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/notifications":{"get":{"operationId":"listNotifications","summary":"List notifications","x-required-scopes":["notifications:read"],"x-idempotency-key":false,"responses":{"200":{"description":"List notifications","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/NotificationCollection"}},"application/json":{"schema":{"$ref":"#/components/schemas/NotificationCollection"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/payments/onboarding-link":{"post":{"operationId":"createPaymentOnboardingLink","summary":"Create a payment account onboarding link","x-required-scopes":["payments:write"],"x-idempotency-key":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","maxLength":160},"description":"Required for idempotent mutation replay."}],"responses":{"201":{"description":"Create a payment account onboarding link","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/PaymentOnboardingDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/PaymentOnboardingDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}},"/payments/webhook/{provider}":{"post":{"operationId":"processPaymentWebhook","summary":"Process a payment provider webhook","security":[],"x-required-scopes":[],"x-idempotency-key":false,"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Process a payment provider webhook","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/PaymentWebhookDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/PaymentWebhookDocument"}}}},"400":{"$ref":"#/components/responses/JsonApiError"},"401":{"$ref":"#/components/responses/JsonApiError"},"403":{"$ref":"#/components/responses/JsonApiError"},"404":{"$ref":"#/components/responses/JsonApiError"},"409":{"$ref":"#/components/responses/JsonApiError"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/JsonApiError"},"503":{"$ref":"#/components/responses/JsonApiError"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"responses":{"JsonApiError":{"description":"JSON:API error document","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/JsonApiErrorDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonApiErrorDocument"}}}},"IdempotencyConflict":{"description":"Idempotency conflict or in-progress request. Error code is `idempotency_key_conflict` or `idempotency_request_in_progress`.","headers":{"Retry-After":{"description":"Present when the same idempotency request is still processing.","schema":{"type":"integer","minimum":1}}},"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/JsonApiErrorDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonApiErrorDocument"}}}},"RateLimited":{"description":"Rate limit exceeded. Error code is `rate_limited`.","headers":{"Retry-After":{"description":"Seconds until another request may be attempted.","schema":{"type":"integer","minimum":1}},"X-RateLimit-Limit":{"description":"Maximum requests allowed in the current fixed window.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Remaining":{"description":"Requests remaining in the current fixed window.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Reset":{"description":"Unix timestamp in seconds when the current fixed window resets.","schema":{"type":"integer","minimum":0}}},"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/JsonApiErrorDocument"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonApiErrorDocument"}}}}},"schemas":{"JsonApiMeta":{"type":"object","required":["request_id"],"properties":{"request_id":{"type":"string"}},"additionalProperties":true},"JsonApiErrorDocument":{"type":"object","required":["errors","meta"],"properties":{"errors":{"type":"array","items":{"type":"object","required":["status","code","title","detail"],"properties":{"status":{"type":"string"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"}}}},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"PublicApiScope":{"type":"string","enum":["profile:read","profile:write","competitions:read","competitions:write","competitions:publish","competitions:join","submissions:read","submissions:write","submissions:review","submission_messages:read","submission_messages:write","discussions:write","assets:read","notifications:read","notifications:write","payments:read","payments:write","tokens:manage"],"x-reserved-scopes":["profile:write","competitions:read","discussions:write","notifications:write","payments:read"]},"AccountResource":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["accounts"]},"id":{"type":"string"},"attributes":{"type":"object","properties":{"email":{"type":"string","format":"email"},"display_name":{"type":"string"},"payment_setup_state":{"type":"string","enum":["not_started","requires_action","pending_review","ready","unavailable"]},"payment_provider":{"type":["string","null"],"enum":["disabled","adyen",null]},"payment_provider_account_id":{"type":["string","null"]},"payment_setup_details":{"type":"object","additionalProperties":true},"scopes":{"type":"array","items":{"$ref":"#/components/schemas/PublicApiScope"}},"created_at":{"type":"string","format":"date-time"}},"additionalProperties":false},"relationships":{"type":"object","additionalProperties":true},"links":{"type":"object","additionalProperties":{"type":"string"}},"meta":{"type":"object","additionalProperties":true}}},"ApiKeyResource":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["api_keys"]},"id":{"type":"string"},"attributes":{"type":"object","properties":{"name":{"type":"string"},"scopes":{"type":"array","items":{"$ref":"#/components/schemas/PublicApiScope"}},"token":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"},"revoked_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"relationships":{"type":"object","additionalProperties":true},"links":{"type":"object","additionalProperties":{"type":"string"}},"meta":{"type":"object","additionalProperties":true}}},"CompetitionResource":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["competitions"]},"id":{"type":"string"},"attributes":{"type":"object","properties":{"title":{"type":"string"},"overview":{"type":"string"},"prize_amount":{"type":"integer","minimum":0},"currency":{"type":"string","enum":["usd"]},"status":{"type":"string","enum":["draft","open","closed","cancelled"]},"tags":{"type":"array","items":{"type":"string"}},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/Attachment"}},"requirements":{"type":"array","items":{"$ref":"#/components/schemas/CompetitionRequirement"}},"thumbnail_url":{"type":["string","null"],"format":"uri"},"thumbnail_reference":{"type":["string","null"]},"submission_deadline":{"type":"string","format":"date-time"},"closed_at":{"type":["string","null"],"format":"date-time"},"winner_selected":{"type":"boolean"},"funding_status":{"type":"string","enum":["not_started","requires_action","processing","funded","failed"]},"funding_provider":{"type":["string","null"],"enum":["disabled","adyen",null]},"funding_reference":{"type":["string","null"]},"funding_provider_payment_id":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"additionalProperties":false},"relationships":{"type":"object","additionalProperties":true},"links":{"type":"object","additionalProperties":{"type":"string"}},"meta":{"type":"object","additionalProperties":true}}},"SubmissionResource":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["submissions"]},"id":{"type":"string"},"attributes":{"type":"object","properties":{"title":{"type":"string"},"summary":{"type":"string"},"status":{"type":"string","enum":["draft","submitted","disqualified"]},"finalized_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"additionalProperties":false},"relationships":{"type":"object","additionalProperties":true},"links":{"type":"object","additionalProperties":{"type":"string"}},"meta":{"type":"object","additionalProperties":true}}},"AssetResource":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["assets"]},"id":{"type":"string"},"attributes":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":"integer","minimum":0},"content_type":{"type":"string"},"upload_url":{"type":"string"},"upload_headers":{"type":"object","additionalProperties":{"type":"string"}},"checksum_sha256":{"type":["string","null"],"minLength":64,"maxLength":64,"pattern":"^[a-f0-9]{64}$"},"created_at":{"type":"string","format":"date-time"}},"additionalProperties":false},"relationships":{"type":"object","additionalProperties":true},"links":{"type":"object","additionalProperties":{"type":"string"}},"meta":{"type":"object","additionalProperties":true}}},"AssetDownloadResource":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["assets"]},"id":{"type":"string"},"attributes":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":"integer","minimum":0},"content_type":{"type":"string"},"checksum_sha256":{"type":["string","null"],"minLength":64,"maxLength":64,"pattern":"^[a-f0-9]{64}$"},"download_url":{"type":"string"},"created_at":{"type":"string","format":"date-time"}},"additionalProperties":false},"relationships":{"type":"object","additionalProperties":true},"links":{"type":"object","additionalProperties":{"type":"string"}},"meta":{"type":"object","additionalProperties":true}}},"MessageResource":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["submission_messages"]},"id":{"type":"string"},"attributes":{"type":"object","properties":{"body":{"type":"string"},"created_at":{"type":"string","format":"date-time"}},"additionalProperties":false},"relationships":{"type":"object","additionalProperties":true},"links":{"type":"object","additionalProperties":{"type":"string"}},"meta":{"type":"object","additionalProperties":true}}},"NotificationResource":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["notifications"]},"id":{"type":"string"},"attributes":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"read_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"}},"additionalProperties":false},"relationships":{"type":"object","additionalProperties":true},"links":{"type":"object","additionalProperties":{"type":"string"}},"meta":{"type":"object","additionalProperties":true}}},"Attachment":{"type":"object","required":["name","url"],"properties":{"name":{"type":"string","minLength":1,"maxLength":160},"url":{"type":"string","format":"uri"},"size":{"type":"integer","minimum":0}}},"CompetitionRequirement":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","enum":["evaluation_criteria","submission_requirements"]},"value":{"type":"string","minLength":1,"maxLength":8000}}},"CompetitionCreateRequest":{"type":"object","required":["title","overview","prize_amount","submission_deadline"],"properties":{"title":{"type":"string","maxLength":80},"overview":{"type":"string","maxLength":8000},"prize_amount":{"type":"integer","minimum":1000},"tags":{"type":"array","maxItems":10,"items":{"type":"string","minLength":1,"maxLength":32}},"attachments":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/Attachment"}},"requirements":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/CompetitionRequirement"}},"thumbnail_url":{"type":["string","null"],"format":"uri","maxLength":2048},"thumbnail_reference":{"type":["string","null"],"minLength":1,"maxLength":2048},"submission_deadline":{"type":"string","format":"date-time"}}},"CompetitionPatchRequest":{"type":"object","properties":{"title":{"type":"string","maxLength":80},"overview":{"type":"string","maxLength":8000},"prize_amount":{"type":"integer","minimum":1000},"tags":{"type":"array","maxItems":10,"items":{"type":"string","minLength":1,"maxLength":32}},"attachments":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/Attachment"}},"requirements":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/CompetitionRequirement"}},"thumbnail_url":{"type":["string","null"],"format":"uri","maxLength":2048},"thumbnail_reference":{"type":["string","null"],"minLength":1,"maxLength":2048},"submission_deadline":{"type":"string","format":"date-time"}}},"ApiKeyCreateRequest":{"type":"object","properties":{"name":{"type":"string"},"scopes":{"type":"array","items":{"$ref":"#/components/schemas/PublicApiScope"}}}},"SubmissionCreateRequest":{"type":"object","required":["competition_id","title"],"properties":{"competition_id":{"type":"string","format":"uuid"},"title":{"type":"string","minLength":1,"maxLength":300},"summary":{"type":"string","maxLength":40000}}},"SubmissionAssetPrepareRequest":{"type":"object","required":["files"],"properties":{"files":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","required":["name","size","content_type","checksum_sha256"],"properties":{"name":{"type":"string","minLength":1,"maxLength":240},"relative_path":{"type":"string","minLength":1,"maxLength":255},"size":{"type":"integer","minimum":0},"content_type":{"type":"string","minLength":1,"maxLength":160},"checksum_sha256":{"type":"string","minLength":64,"maxLength":64,"pattern":"^[a-f0-9]{64}$"}}}}}},"MultipartUploadRequest":{"type":"object","oneOf":[{"required":["upload_id","parts"]},{"not":{"anyOf":[{"required":["upload_id"]},{"required":["parts"]}]}}],"properties":{"upload_id":{"type":["string","null"],"minLength":1},"parts":{"type":"array","uniqueItems":true,"maxItems":100,"items":{"type":"integer","minimum":1,"maximum":10000}}}},"SubmissionMessageCreateRequest":{"type":"object","required":["body"],"properties":{"body":{"type":"string","minLength":1,"maxLength":4000}}},"WinnerSelectionRequest":{"type":"object","required":["account_id"],"properties":{"account_id":{"type":"string","format":"uuid"}}},"PublishPaymentRequest":{"type":"object","required":["terms_accepted"],"properties":{"terms_accepted":{"type":"boolean","enum":[true]}},"additionalProperties":false},"OpenApiDocument":{"type":"object","additionalProperties":true},"HealthDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/HealthResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"HealthResource":{"type":"object","required":["status","version"],"properties":{"status":{"type":"string","enum":["ok"]},"version":{"type":"string"}}},"AccountDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/AccountResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"ApiKeyDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/ApiKeyResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"ApiKeyCollection":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyResource"}},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"CompetitionDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/CompetitionResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"CompetitionCollection":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CompetitionResource"}},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"SubmissionDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/SubmissionResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"SubmissionCollection":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SubmissionResource"}},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"AssetDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/AssetResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"AssetDownloadDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/AssetDownloadResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"AssetCollection":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AssetResource"}},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"MessageDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/MessageResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"MessageCollection":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MessageResource"}},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"NotificationCollection":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NotificationResource"}},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"JoinDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/JoinResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"JoinResource":{"type":"object","required":["id","competitionId","accountId","joinedAt"],"properties":{"id":{"type":"string"},"competitionId":{"type":"string"},"accountId":{"type":"string"},"joinedAt":{"type":"string","format":"date-time"}}},"PublishPaymentDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/PublishPaymentResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"PublishPaymentResource":{"type":"object","required":["competition","payment"],"properties":{"competition":{"$ref":"#/components/schemas/CompetitionResource"},"payment":{"type":"object","additionalProperties":true}}},"WinnerSelectionDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/WinnerSelectionResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"WinnerSelectionResource":{"type":"object","required":["account","payout"],"properties":{"account":{"$ref":"#/components/schemas/AccountResource"},"payout":{"type":"object","additionalProperties":true}}},"MultipartUploadDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/MultipartUploadResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"MultipartUploadResource":{"type":"object","required":["start_url","start_headers","part_urls","complete_url","abort_url"],"properties":{"start_url":{"type":["string","null"]},"start_headers":{"type":"object","additionalProperties":{"type":"string"}},"part_urls":{"type":"array","items":{"type":"object","required":["part_number","method","url"],"properties":{"part_number":{"type":"integer","minimum":1,"maximum":10000},"method":{"type":"string","enum":["PUT"]},"url":{"type":"string"}},"additionalProperties":false}},"complete_url":{"type":["string","null"]},"abort_url":{"type":["string","null"]}}},"PaymentOnboardingDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/PaymentOnboardingResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"PaymentOnboardingResource":{"type":"object","required":["url","payment_provider_account_id"],"properties":{"url":{"type":"string"},"payment_provider_account_id":{"type":["string","null"]}}},"PaymentWebhookDocument":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/PaymentWebhookResource"},"meta":{"$ref":"#/components/schemas/JsonApiMeta"}}},"PaymentWebhookResource":{"type":"object","required":["received"],"properties":{"received":{"type":"boolean"}}}}}}