Add staff application feature with API integration and frontend form implementation

This commit is contained in:
2025-09-24 22:26:17 +02:00
parent 2a0f38aa28
commit f886609a0e
13 changed files with 992 additions and 28 deletions
+2
View File
@@ -55,6 +55,8 @@ paths:
$ref: './schemas/forms/appeal/appeal.yml#/MinecraftAppeal'
/api/appeal/discord-appeal:
$ref: './schemas/forms/appeal/appeal.yml#/DiscordAppeal'
/api/apply/staff-application:
$ref: './schemas/forms/staff_apply/staff_apply.yml#/StaffApply'
/api/login/requestNewUserLogin/{uuid}:
$ref: './schemas/login/login.yml#/RequestNewUserLogin'
/api/login/userLogin/{code}:
@@ -23,7 +23,7 @@ UpdateMail:
content:
application/json:
schema:
$ref: '#/components/schemas/AppealResponse'
$ref: '../../generic/components.yml#/components/schemas/FormResponse'
default:
description: Unexpected error
content:
@@ -49,7 +49,7 @@ MinecraftAppeal:
content:
application/json:
schema:
$ref: '#/components/schemas/AppealResponse'
$ref: '../../generic/components.yml#/components/schemas/FormResponse'
default:
description: Unexpected error
content:
@@ -75,7 +75,7 @@ DiscordAppeal:
content:
application/json:
schema:
$ref: '#/components/schemas/AppealResponse'
$ref: '../../generic/components.yml#/components/schemas/FormResponse'
default:
description: Unexpected error
content:
@@ -136,22 +136,6 @@ components:
appeal:
type: string
description: Appeal text explaining why the punishment should be reconsidered
AppealResponse:
type: object
required:
- id
- message
- verified_mail
properties:
id:
type: string
description: Unique identifier for the submitted appeal for referring to it later
message:
type: string
description: Confirmation message
verified_mail:
type: boolean
description: If this user has verified their mail already
UpdateMail:
type: object
required:
@@ -0,0 +1,104 @@
StaffApply:
post:
tags:
- applications
summary: Submit a Staff appeal
description: Submit an staff application
operationId: submitStaffApplication
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/StaffApplication'
responses:
'201':
description: Application created please verify email
content:
application/json:
schema:
$ref: '../../generic/components.yml#/components/schemas/FormResponse'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '../../generic/errors.yml#/components/schemas/ApiError'
components:
schemas:
StaffApplication:
type: object
description: Schema for staff application
required:
- email
- age
- discordUsername
- meetsRequirements
- pronouns
- joinDate
- weeklyPlaytime
- availableDays
- availableTimes
- previousExperience
- pluginExperience
- moderatorExpectations
- additionalInfo
properties:
email:
type: string
format: email
maxLength: 320
description: Email address of the applicant
age:
type: integer
minimum: 13
description: Age of the applicant, must be 13 or older
discordUsername:
type: string
maxLength: 32
description: Discord username of the applicant
meetsRequirements:
type: boolean
description: Confirmation that the applicant meets all requirements
pronouns:
type: string
maxLength: 32
description: Preferred pronouns of the applicant
joinDate:
type: string
maxLength: 256
format: date
description: Date when the applicant joined the service
weeklyPlaytime:
type: integer
minimum: 1
description: Average weekly playtime in hours
availableDays:
type: array
items:
type: string
maxLength: 256
description: Days of the week when the applicant is available
availableTimes:
type: string
maxLength: 1000
description: Time ranges when the applicant is available
previousExperience:
type: string
minLength: 10
maxLength: 4000
description: Description of previous relevant experience
pluginExperience:
type: string
minLength: 10
maxLength: 4000
description: Description of experience with plugins
moderatorExpectations:
type: string
minLength: 10
maxLength: 4000
description: Applicant's expectations and understanding of moderator responsibilities
additionalInfo:
type: string
maxLength: 4000
description: Any additional information the applicant wishes to provide
@@ -0,0 +1,18 @@
components:
schemas:
FormResponse:
type: object
required:
- id
- message
- verified_mail
properties:
id:
type: string
description: Unique identifier for the submitted form for referring to it later
message:
type: string
description: Confirmation message
verified_mail:
type: boolean
description: If this user has verified their mail already