maps-service/openapi.yaml

799 lines
20 KiB
YAML
Raw Normal View History

2024-11-26 04:45:06 +00:00
openapi: 3.1.0
2024-11-26 01:22:45 +00:00
info:
2024-11-26 05:56:55 +00:00
title: StrafesNET Submissions - OpenAPI 3.1
2024-12-10 01:34:46 +00:00
description: Browse and manage map submissions.
2024-11-26 01:22:45 +00:00
version: 0.1.0
servers:
2024-11-26 05:56:55 +00:00
- url: https://submissions.strafes.net/v1
2024-11-26 01:22:45 +00:00
tags:
2024-11-26 05:56:55 +00:00
- name: Submissions
description: Submission operations
2024-12-04 03:29:59 +00:00
- name: Scripts
description: Script operations
2024-12-06 00:32:48 +00:00
- name: ScriptPolicy
description: Script policy operations
2024-11-29 22:33:48 +00:00
security:
- cookieAuth: []
2024-11-26 01:22:45 +00:00
paths:
2024-11-26 05:56:55 +00:00
/submissions:
2024-11-26 01:22:45 +00:00
get:
2024-11-26 05:18:11 +00:00
summary: Get list of submissions
2024-11-26 05:56:55 +00:00
operationId: listSubmissions
2024-11-26 01:22:45 +00:00
tags:
2024-11-26 05:56:55 +00:00
- Submissions
2024-11-26 01:22:45 +00:00
parameters:
- name: page
in: query
required: true
schema:
$ref: "#/components/schemas/Pagination"
- name: filter
in: query
required: false
schema:
2024-11-26 05:56:55 +00:00
$ref: "#/components/schemas/SubmissionFilter"
2024-11-26 01:22:45 +00:00
responses:
"200":
description: Successful response
content:
application/json:
schema:
type: array
items:
2024-11-26 05:56:55 +00:00
$ref: "#/components/schemas/Submission"
2024-11-26 01:22:45 +00:00
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
2024-11-26 05:18:11 +00:00
post:
summary: Create new submission
2024-11-26 05:56:55 +00:00
operationId: createSubmission
2024-11-26 05:18:11 +00:00
tags:
2024-11-26 05:56:55 +00:00
- Submissions
2024-11-27 23:38:17 +00:00
requestBody:
2024-12-06 02:48:26 +00:00
required: true
2024-11-27 23:38:17 +00:00
content:
application/json:
schema:
$ref: '#/components/schemas/SubmissionCreate'
2024-11-26 05:18:11 +00:00
responses:
"200":
description: Successful response
content:
application/json:
schema:
2024-11-28 00:13:43 +00:00
$ref: "#/components/schemas/Id"
2024-11-26 05:18:11 +00:00
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
2024-11-26 05:56:55 +00:00
/submissions/{SubmissionID}:
2024-11-26 01:22:45 +00:00
get:
2024-11-26 04:45:06 +00:00
summary: Retrieve map with ID
2024-11-26 05:56:55 +00:00
operationId: getSubmission
2024-11-26 01:22:45 +00:00
tags:
2024-11-26 05:56:55 +00:00
- Submissions
2024-11-26 01:22:45 +00:00
parameters:
2024-11-26 05:56:55 +00:00
- name: SubmissionID
2024-11-26 01:22:45 +00:00
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
content:
application/json:
schema:
2024-11-26 05:56:55 +00:00
$ref: "#/components/schemas/Submission"
2024-11-26 01:22:45 +00:00
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
2024-11-26 05:57:19 +00:00
/submissions/{SubmissionID}/model:
2024-12-10 05:57:35 +00:00
post:
2024-11-26 05:57:19 +00:00
summary: Update model following role restrictions
2024-12-10 05:57:35 +00:00
operationId: updateSubmissionModel
2024-11-26 05:57:19 +00:00
tags:
- Submissions
parameters:
- name: SubmissionID
in: path
required: true
schema:
type: integer
format: int64
- name: ModelID
in: query
required: true
schema:
type: integer
format: int64
- name: VersionID
in: query
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/submissions/{SubmissionID}/completed:
2024-12-10 05:57:35 +00:00
post:
2024-11-26 05:57:19 +00:00
summary: Retrieve map with ID
2024-12-10 05:57:35 +00:00
operationId: setSubmissionCompleted
2024-11-26 05:57:19 +00:00
tags:
- Submissions
parameters:
- name: SubmissionID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
2024-11-28 01:44:20 +00:00
/submissions/{SubmissionID}/status/submit:
2024-12-10 05:57:35 +00:00
post:
2024-11-28 01:44:20 +00:00
summary: Role Submitter changes status from UnderConstruction|ChangesRequested -> Submitted
operationId: actionSubmissionSubmit
2024-11-26 05:57:19 +00:00
tags:
- Submissions
parameters:
- name: SubmissionID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
2024-11-28 01:44:30 +00:00
/submissions/{SubmissionID}/status/revoke:
2024-12-10 05:57:35 +00:00
post:
2024-11-28 01:44:30 +00:00
summary: Role Submitter changes status from Submitted|ChangesRequested -> UnderConstruction
operationId: actionSubmissionRevoke
tags:
- Submissions
parameters:
- name: SubmissionID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/submissions/{SubmissionID}/status/trigger-validate:
2024-12-10 05:57:35 +00:00
post:
2024-11-28 01:44:30 +00:00
summary: Role Reviewer triggers validation and changes status from Submitted|Accepted -> Validating
operationId: actionSubmissionTriggerValidate
tags:
- Submissions
parameters:
- name: SubmissionID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/submissions/{SubmissionID}/status/reject:
2024-12-10 05:57:35 +00:00
post:
2024-11-28 01:44:30 +00:00
summary: Role Reviewer changes status from Submitted -> Rejected
operationId: actionSubmissionReject
tags:
- Submissions
parameters:
- name: SubmissionID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/submissions/{SubmissionID}/status/request-changes:
2024-12-10 05:57:35 +00:00
post:
2024-11-28 01:44:30 +00:00
summary: Role Reviewer changes status from Validated|Accepted|Submitted -> ChangesRequested
operationId: actionSubmissionRequestChanges
tags:
- Submissions
parameters:
- name: SubmissionID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/submissions/{SubmissionID}/status/validate:
2024-12-10 05:57:35 +00:00
post:
2024-11-28 01:44:30 +00:00
summary: Role Validator changes status from Validating -> Validated
operationId: actionSubmissionValidate
tags:
- Submissions
parameters:
- name: SubmissionID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/submissions/{SubmissionID}/status/publish:
2024-12-10 05:57:35 +00:00
post:
2024-11-28 01:44:30 +00:00
summary: Role Validator changes status from Publishing -> Published
operationId: actionSubmissionPublish
tags:
- Submissions
parameters:
- name: SubmissionID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/submissions/{SubmissionID}/status/trigger-publish:
2024-12-10 05:57:35 +00:00
post:
2024-11-28 01:44:30 +00:00
summary: Role Admin changes status from Validated -> Publishing
operationId: actionSubmissionTriggerPublish
tags:
- Submissions
parameters:
- name: SubmissionID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
2024-12-06 00:32:48 +00:00
/script-policy:
post:
summary: Create a new script policy
operationId: createScriptPolicy
tags:
- ScriptPolicy
requestBody:
2024-12-06 02:48:26 +00:00
required: true
2024-12-06 00:32:48 +00:00
content:
application/json:
schema:
$ref: '#/components/schemas/ScriptPolicyCreate'
responses:
"200":
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}:
2024-12-04 03:29:59 +00:00
get:
2024-12-05 01:27:32 +00:00
summary: Get the policy for the given hash of script source code
operationId: getScriptPolicyFromHash
2024-12-04 03:29:59 +00:00
tags:
2024-12-06 00:32:48 +00:00
- ScriptPolicy
2024-12-05 01:27:32 +00:00
parameters:
2024-12-06 00:32:48 +00:00
- name: FromScriptHash
2024-12-05 01:27:32 +00:00
in: path
required: true
schema:
type: string
minLength: 16
maxLength: 16
2024-12-04 03:29:59 +00:00
responses:
"200":
description: Successful response
content:
application/json:
schema:
2024-12-05 01:27:32 +00:00
$ref: "#/components/schemas/ScriptPolicy"
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
2024-12-06 00:32:48 +00:00
/script-policy/id/{ScriptPolicyID}:
get:
summary: Get the specified script policy by ID
operationId: getScriptPolicy
tags:
- ScriptPolicy
parameters:
- name: ScriptPolicyID
in: path
required: true
schema:
type: integer
format: int64
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"
2024-12-10 05:57:35 +00:00
post:
2024-12-06 00:32:48 +00:00
summary: Update the specified script policy by ID
operationId: updateScriptPolicy
tags:
- ScriptPolicy
parameters:
- name: ScriptPolicyID
in: path
required: true
schema:
type: integer
format: int64
requestBody:
2024-12-06 02:48:26 +00:00
required: true
2024-12-06 00:32:48 +00:00
content:
application/json:
schema:
$ref: '#/components/schemas/ScriptPolicyUpdate'
responses:
"200":
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:
- name: ScriptPolicyID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
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:
2024-12-06 02:48:26 +00:00
required: true
2024-12-06 00:32:48 +00:00
content:
application/json:
schema:
$ref: '#/components/schemas/ScriptCreate'
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/Id"
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
2024-12-05 01:27:32 +00:00
/scripts/{ScriptID}:
get:
summary: Get the specified script by ID
operationId: getScript
tags:
- Scripts
parameters:
- name: ScriptID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/Script"
2024-12-04 03:29:59 +00:00
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
2024-12-10 05:57:35 +00:00
post:
2024-12-06 00:32:48 +00:00
summary: Update the specified script by ID
operationId: updateScript
tags:
- Scripts
parameters:
- name: ScriptID
in: path
required: true
schema:
type: integer
format: int64
requestBody:
2024-12-06 02:48:26 +00:00
required: true
2024-12-06 00:32:48 +00:00
content:
application/json:
schema:
$ref: '#/components/schemas/ScriptUpdate'
responses:
"200":
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:
- name: ScriptID
in: path
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful response
default:
description: General Error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
2024-11-26 01:22:45 +00:00
components:
2024-11-29 22:33:48 +00:00
securitySchemes:
cookieAuth:
type: apiKey
in: cookie
2024-12-10 03:32:47 +00:00
name: session_id
2024-11-26 01:22:45 +00:00
schemas:
2024-11-28 00:13:43 +00:00
Id:
2024-12-06 00:32:48 +00:00
required:
- ID
2024-11-28 00:13:43 +00:00
type: object
properties:
ID:
type: integer
format: int64
2024-11-26 05:56:55 +00:00
Submission:
2024-12-06 00:32:48 +00:00
required:
- ID
- DisplayName
- Creator
- GameID
- Date
- Submitter
- AssetID
- AssetVersion
- Completed
- SubmissionType
# - TargetAssetID
- StatusID
2024-11-26 01:22:45 +00:00
type: object
properties:
ID:
type: integer
format: int64
DisplayName:
type: string
maxLength: 128
2024-11-26 01:22:45 +00:00
Creator:
type: string
maxLength: 128
2024-11-26 01:22:45 +00:00
GameID:
type: integer
format: int32
Date:
type: integer
format: int64
2024-11-26 22:42:22 +00:00
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
2024-11-26 05:56:55 +00:00
SubmissionFilter:
2024-12-06 00:32:48 +00:00
required:
- ID
2024-11-26 01:22:45 +00:00
type: object
2024-11-26 03:06:12 +00:00
properties:
2024-11-26 01:22:45 +00:00
ID:
type: integer
format: int64
2024-11-26 04:45:06 +00:00
DisplayName:
type: string
maxLength: 128
2024-11-26 04:45:06 +00:00
Creator:
type: string
maxLength: 128
2024-11-26 01:22:45 +00:00
GameID:
type: integer
format: int32
2024-11-26 04:45:06 +00:00
Date:
2024-11-26 01:22:45 +00:00
type: integer
format: int64
2024-11-27 23:38:17 +00:00
SubmissionCreate:
2024-12-06 00:32:48 +00:00
required:
- DisplayName
- Creator
- GameID
- AssetID
- AssetVersion
# - TargetAssetID
2024-11-27 23:38:17 +00:00
type: object
properties:
DisplayName:
type: string
maxLength: 128
2024-11-27 23:38:17 +00:00
Creator:
type: string
maxLength: 128
2024-11-27 23:38:17 +00:00
GameID:
type: integer
format: int32
AssetID:
type: integer
format: int64
AssetVersion:
type: integer
format: int64
TargetAssetID:
type: integer
format: int64
2024-12-05 01:27:32 +00:00
Script:
2024-12-06 00:32:48 +00:00
required:
- ID
- Hash
- Source
- SubmissionID
2024-12-05 01:27:32 +00:00
type: object
properties:
ID:
type: integer
format: int64
Hash:
type: string
minLength: 16
maxLength: 16
2024-12-05 01:27:32 +00:00
Source:
type: string
maxLength: 1048576
2024-12-05 01:27:32 +00:00
SubmissionID:
type: integer
format: int64
2024-12-06 00:32:48 +00:00
ScriptCreate:
required:
- Source
# - SubmissionID
type: object
properties:
Source:
type: string
maxLength: 1048576
2024-12-06 00:32:48 +00:00
SubmissionID:
type: integer
format: int64
ScriptUpdate:
required:
- ID
type: object
properties:
ID:
type: integer
format: int64
Source:
type: string
maxLength: 1048576
2024-12-06 00:32:48 +00:00
SubmissionID:
type: integer
format: int64
2024-12-05 01:27:32 +00:00
ScriptPolicy:
2024-12-06 00:32:48 +00:00
required:
- ID
- FromScriptHash
- ToScriptID
- Policy
2024-12-05 01:27:32 +00:00
type: object
properties:
ID:
type: integer
format: int64
2024-12-06 00:32:48 +00:00
FromScriptHash:
2024-12-05 01:27:32 +00:00
type: string
minLength: 16
maxLength: 16
2024-12-06 00:32:48 +00:00
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:
2024-12-05 01:27:32 +00:00
type: integer
format: int64
Policy:
type: integer
format: int32
2024-11-26 01:22:45 +00:00
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
2024-11-26 03:06:12 +00:00
- message