maps-service/openapi.yaml
2024-12-03 19:29:50 -08:00

455 lines
11 KiB
YAML

openapi: 3.1.0
info:
title: StrafesNET Submissions - OpenAPI 3.1
description: Browse and manage map submissions in the staging pipeline.
version: 0.1.0
servers:
- url: https://submissions.strafes.net/v1
tags:
- name: Submissions
description: Submission operations
security:
- cookieAuth: []
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"
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:
content:
application/json:
schema:
$ref: '#/components/schemas/SubmissionCreate'
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"
/submissions/{SubmissionID}:
get:
summary: Retrieve map with ID
operationId: getSubmission
tags:
- Submissions
parameters:
- name: SubmissionID
in: path
required: true
schema:
type: integer
format: int64
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:
patch:
summary: Update model following role restrictions
operationId: patchSubmissionModel
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:
patch:
summary: Retrieve map with ID
operationId: patchSubmissionCompleted
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/submit:
patch:
summary: Role Submitter changes status from UnderConstruction|ChangesRequested -> Submitted
operationId: actionSubmissionSubmit
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/revoke:
patch:
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:
patch:
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:
patch:
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:
patch:
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:
patch:
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:
patch:
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:
patch:
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"
components:
securitySchemes:
cookieAuth:
type: apiKey
in: cookie
name: SESSIONID
schemas:
Id:
type: object
properties:
ID:
type: integer
format: int64
User:
type: object
properties:
ID:
type: integer
format: int64
Username:
type: string
StateID:
type: integer
format: int32
Submission:
type: object
properties:
ID:
type: integer
format: int64
DisplayName:
type: string
Creator:
type: string
GameID:
type: integer
format: int32
Date:
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:
type: object
properties:
ID:
type: integer
format: int64
DisplayName:
type: string
Creator:
type: string
GameID:
type: integer
format: int32
Date:
type: integer
format: int64
SubmissionCreate:
type: object
properties:
DisplayName:
type: string
Creator:
type: string
GameID:
type: integer
format: int32
Submitter:
type: integer
format: int64
AssetID:
type: integer
format: int64
AssetVersion:
type: integer
format: int64
SubmissionType:
type: integer
format: int32
TargetAssetID:
type: integer
format: int64
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