openapi: 3.1.0 info: title: StrafesNET Submissions - OpenAPI 3.1 description: Browse and manage map submissions. version: 0.1.0 servers: - url: https://submissions.strafes.net/v1 tags: - name: Submissions description: Submission operations - name: Scripts description: Script operations - name: ScriptPolicy description: Script policy operations paths: /submissions: get: summary: Get list of submissions operationId: listSubmissions tags: - Submissions parameters: - name: page in: query required: true schema: $ref: "#/components/schemas/Pagination" - name: filter in: query required: false schema: $ref: "#/components/schemas/SubmissionFilter" security: - cookieAuth: [] responses: "200": description: Successful response content: application/json: schema: type: array items: $ref: "#/components/schemas/Submission" default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" post: summary: Create new submission operationId: createSubmission tags: - Submissions requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SubmissionCreate' security: - cookieAuth: [] responses: "201": description: Successful response content: application/json: schema: $ref: "#/components/schemas/Id" default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /submissions/{SubmissionID}: get: summary: Retrieve map with ID operationId: getSubmission tags: - Submissions parameters: - $ref: '#/components/parameters/SubmissionID' security: - cookieAuth: [] responses: "200": description: Successful response content: application/json: schema: $ref: "#/components/schemas/Submission" default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /submissions/{SubmissionID}/model: post: summary: Update model following role restrictions operationId: updateSubmissionModel tags: - Submissions parameters: - $ref: '#/components/parameters/SubmissionID' - name: ModelID in: query required: true schema: type: integer format: int64 - name: VersionID in: query required: true schema: type: integer format: int64 security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /submissions/{SubmissionID}/completed: post: summary: Retrieve map with ID operationId: setSubmissionCompleted tags: - Submissions parameters: - $ref: '#/components/parameters/SubmissionID' security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /submissions/{SubmissionID}/status/submit: post: summary: Role Submitter changes status from UnderConstruction|ChangesRequested -> Submitted operationId: actionSubmissionSubmit tags: - Submissions parameters: - $ref: '#/components/parameters/SubmissionID' security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /submissions/{SubmissionID}/status/revoke: post: summary: Role Submitter changes status from Submitted|ChangesRequested -> UnderConstruction operationId: actionSubmissionRevoke tags: - Submissions parameters: - $ref: '#/components/parameters/SubmissionID' security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /submissions/{SubmissionID}/status/trigger-validate: post: summary: Role Reviewer triggers validation and changes status from Submitted|Accepted -> Validating operationId: actionSubmissionTriggerValidate tags: - Submissions parameters: - $ref: '#/components/parameters/SubmissionID' security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /submissions/{SubmissionID}/status/reject: post: summary: Role Reviewer changes status from Submitted -> Rejected operationId: actionSubmissionReject tags: - Submissions parameters: - $ref: '#/components/parameters/SubmissionID' security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /submissions/{SubmissionID}/status/request-changes: post: summary: Role Reviewer changes status from Validated|Accepted|Submitted -> ChangesRequested operationId: actionSubmissionRequestChanges tags: - Submissions parameters: - $ref: '#/components/parameters/SubmissionID' security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /submissions/{SubmissionID}/status/validator-validated: post: summary: (Internal endpoint) Role Validator changes status from Validating -> Validated operationId: actionSubmissionValidate tags: - Submissions parameters: - $ref: '#/components/parameters/SubmissionID' responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /submissions/{SubmissionID}/status/validator-published: post: summary: (Internal endpoint) Role Validator changes status from Publishing -> Published operationId: actionSubmissionPublish tags: - Submissions parameters: - $ref: '#/components/parameters/SubmissionID' responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /submissions/{SubmissionID}/status/trigger-publish: post: summary: Role Admin changes status from Validated -> Publishing operationId: actionSubmissionTriggerPublish tags: - Submissions parameters: - $ref: '#/components/parameters/SubmissionID' security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /script-policy: post: summary: Create a new script policy operationId: createScriptPolicy tags: - ScriptPolicy requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScriptPolicyCreate' security: - cookieAuth: [] responses: "201": description: Successful response content: application/json: schema: $ref: "#/components/schemas/Id" default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /script-policy/hash/{FromScriptHash}: get: summary: Get the policy for the given hash of script source code operationId: getScriptPolicyFromHash tags: - ScriptPolicy parameters: - name: FromScriptHash in: path required: true schema: type: string minLength: 16 maxLength: 16 security: - cookieAuth: [] responses: "200": description: Successful response content: application/json: schema: $ref: "#/components/schemas/ScriptPolicy" default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /script-policy/id/{ScriptPolicyID}: get: summary: Get the specified script policy by ID operationId: getScriptPolicy tags: - ScriptPolicy parameters: - $ref: '#/components/parameters/ScriptPolicyID' security: - cookieAuth: [] responses: "200": description: Successful response content: application/json: schema: $ref: "#/components/schemas/ScriptPolicy" default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" post: summary: Update the specified script policy by ID operationId: updateScriptPolicy tags: - ScriptPolicy parameters: - $ref: '#/components/parameters/ScriptPolicyID' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScriptPolicyUpdate' security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" delete: summary: Delete the specified script policy by ID operationId: deleteScriptPolicy tags: - ScriptPolicy parameters: - $ref: '#/components/parameters/ScriptPolicyID' security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /scripts: post: summary: Create a new script operationId: createScript tags: - Scripts requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScriptCreate' security: - cookieAuth: [] responses: "201": description: Successful response content: application/json: schema: $ref: "#/components/schemas/Id" default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" /scripts/{ScriptID}: get: summary: Get the specified script by ID operationId: getScript tags: - Scripts parameters: - $ref: '#/components/parameters/ScriptID' security: - cookieAuth: [] responses: "200": description: Successful response content: application/json: schema: $ref: "#/components/schemas/Script" default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" post: summary: Update the specified script by ID operationId: updateScript tags: - Scripts parameters: - $ref: '#/components/parameters/ScriptID' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScriptUpdate' security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" delete: summary: Delete the specified script by ID operationId: deleteScript tags: - Scripts parameters: - $ref: '#/components/parameters/ScriptID' security: - cookieAuth: [] responses: "204": description: Successful response default: description: General Error content: application/json: schema: $ref: "#/components/schemas/Error" components: securitySchemes: cookieAuth: type: apiKey in: cookie name: session_id parameters: SubmissionID: name: SubmissionID in: path required: true description: The unique identifier for a submission. schema: type: integer format: int64 ScriptID: name: ScriptID in: path required: true description: The unique identifier for a script. schema: type: integer format: int64 ScriptPolicyID: name: ScriptPolicyID in: path required: true description: The unique identifier for a script policy. schema: type: integer format: int64 schemas: Id: required: - ID type: object properties: ID: type: integer format: int64 Submission: required: - ID - DisplayName - Creator - GameID - CreatedAt - UpdatedAt - Submitter - AssetID - AssetVersion - Completed - SubmissionType # - TargetAssetID - StatusID type: object properties: ID: type: integer format: int64 DisplayName: type: string maxLength: 128 Creator: type: string maxLength: 128 GameID: type: integer format: int32 CreatedAt: type: integer format: int64 UpdatedAt: type: integer format: int64 Submitter: type: integer format: int64 AssetID: type: integer format: int64 AssetVersion: type: integer format: int64 Completed: type: boolean SubmissionType: type: integer format: int32 TargetAssetID: type: integer format: int64 StatusID: type: integer format: int32 SubmissionFilter: required: - ID type: object properties: ID: type: integer format: int64 DisplayName: type: string maxLength: 128 Creator: type: string maxLength: 128 GameID: type: integer format: int32 SubmissionCreate: required: - DisplayName - Creator - GameID - AssetID - AssetVersion # - TargetAssetID type: object properties: DisplayName: type: string maxLength: 128 Creator: type: string maxLength: 128 GameID: type: integer format: int32 AssetID: type: integer format: int64 AssetVersion: type: integer format: int64 TargetAssetID: type: integer format: int64 Script: required: - ID - Hash - Source - SubmissionID type: object properties: ID: type: integer format: int64 Hash: type: string minLength: 16 maxLength: 16 Source: type: string maxLength: 1048576 SubmissionID: type: integer format: int64 ScriptCreate: required: - Source # - SubmissionID type: object properties: Source: type: string maxLength: 1048576 SubmissionID: type: integer format: int64 ScriptUpdate: required: - ID type: object properties: ID: type: integer format: int64 Source: type: string maxLength: 1048576 SubmissionID: type: integer format: int64 ScriptPolicy: required: - ID - FromScriptHash - ToScriptID - Policy type: object properties: ID: type: integer format: int64 FromScriptHash: type: string minLength: 16 maxLength: 16 ToScriptID: type: integer format: int64 Policy: type: integer format: int32 ScriptPolicyCreate: required: - FromScriptID - ToScriptID - Policy type: object properties: FromScriptID: type: integer format: int64 ToScriptID: type: integer format: int64 Policy: type: integer format: int32 ScriptPolicyUpdate: required: - ID type: object properties: ID: type: integer format: int64 FromScriptID: type: integer format: int64 ToScriptID: type: integer format: int64 Policy: type: integer format: int32 Pagination: type: object required: - Page - Limit properties: Page: type: integer format: int32 minimum: 1 Limit: type: integer format: int32 minimum: 1 maximum: 100 Error: description: Represents error object type: object properties: code: type: integer format: int64 message: type: string required: - code - message