Commit 26f09f93 authored by Gabriel Macena's avatar Gabriel Macena

[API] Adiciona arquivo da api de Admin

parent cf543a25
openapi: 3.0.0
info:
title: Competition Admin API
description: Competition Admin API
version: 0.1.0
paths:
/competifiers:
get:
summary: Retrieves all Competifiers for this competition
description: Retrieves all Competifiers for this competition.
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
oneOf:
- $ref: '#/components/schemas/SoloCompetifier'
- $ref: '#/components/schemas/TeamCompetifier'
post:
summary: Creates a new Competifier for the competition
description: Creates a new Competifier for the competition.
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/SoloCompetifier'
- $ref: '#/components/schemas/TeamCompetifier'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/SoloCompetifier'
- $ref: '#/components/schemas/TeamCompetifier'
/exams:
get:
tags:
- exams
summary: Retrieves all Exams for this competition
description: Retrieves all Exams for this competition.
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Exam'
post:
tags:
- exams
summary: Creates a new Exam for the competition
description: Creates a new Exam for the competition.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Exam'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Exam'
/exams/{examId}:
get:
tags:
- exams
summary: Retrieves the specified Exam
description: Retrieves the specified Exam.
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Exam'
patch:
tags:
- exams
summary: Updates the specified Exam
description: Updates the specified Exam.
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Exam'
parameters:
- name: examId
in: path
description: The unique identifier of the Exam.
required: true
schema:
format: int32
type: integer
'/exams/{examId}/questions':
get:
tags:
- exams
summary: Retrieves all Questions for the specified Exam
description: Retrieves all Questions for the specified Exam.
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
oneOf:
- $ref: '#/components/schemas/ObjectiveQuestion'
- $ref: '#/components/schemas/SubjectiveQuestion'
post:
tags:
- exams
summary: Creates a new Question for the specified Exam
description: Creates a new Question for the specified Exam.
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ObjectiveQuestion'
- $ref: '#/components/schemas/SubjectiveQuestion'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ObjectiveQuestion'
- $ref: '#/components/schemas/SubjectiveQuestion'
parameters:
- name: examId
in: path
description: The unique identifier of the Exam.
required: true
schema:
format: int32
type: integer
'/exams/{examId}/questions/{questionId}':
get:
tags:
- exams
summary: Retrieves the specified Question
description: Retrieves the specified Question of the Exam.
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ObjectiveQuestion'
- $ref: '#/components/schemas/SubjectiveQuestion'
patch:
tags:
- exams
summary: Updates the specific Question
description: Updates the specific Question of the Exam.
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ObjectiveQuestion'
- $ref: '#/components/schemas/SubjectiveQuestion'
parameters:
- name: examId
in: path
description: The unique identifier of the Exam.
required: true
schema:
format: int32
type: integer
- name: questionId
in: path
description: The unique identifier of the Question.
required: true
schema:
format: int32
type: integer
/subscription/applicants:
get:
tags:
- subscription
summary: Retrieves all applicants for this competition
description: Retrieves all applicants for this competition.
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Subscription'
post:
tags:
- subscription
summary: Creates an application for the competition
description: Creates a new application for the competition.
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/SoloSubscription'
- $ref: '#/components/schemas/TeamSubscription'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/SoloSubscription'
- $ref: '#/components/schemas/TeamSubscription'
patch:
tags:
- subscription
summary: Updates multiple Applications
description: Updates multiple Applications.
requestBody:
content:
application/json-schema+json:
schema:
type: array
items:
oneOf:
- $ref: '#/components/schemas/SoloSubscription'
- $ref: '#/components/schemas/TeamSubscription'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
oneOf:
- $ref: '#/components/schemas/SoloSubscription'
- $ref: '#/components/schemas/TeamSubscription'
'/subscription/applicants/{applicantId}':
get:
tags:
- subscription
summary: Retrieves a specific subscription
description: Retrieves a subscription with the given id.
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/SoloSubscription'
- $ref: '#/components/schemas/TeamSubscription'
parameters:
- name: applicantId
in: path
description: The unique identifier of the application.
required: true
schema:
format: int32
type: integer
patch:
tags:
- subscription
summary: Updates the status of a specific application
description: 'Updates a subscription with the given id, setting a new status.'
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/SoloSubscription'
- $ref: '#/components/schemas/TeamSubscription'
/subscription:
get:
tags:
- config
summary: Retrieves the subscription rule
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionRule'
patch:
tags:
- config
summary: Updates the subscription rule
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionRule'
/subscription/template:
get:
tags:
- config
summary: Retrieves all form templates
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FormTemplate'
/subscription/template/team:
get:
tags:
- config
summary: Retrieves the team form template
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/FormTemplate'
patch:
tags:
- config
summary: Updates the team form template
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/FormTemplate'
/subscription/template/participant:
get:
tags:
- config
summary: Retrieves the participant form template
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/FormTemplate'
patch:
tags:
- config
summary: Updates the participant form template
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/FormTemplate'
/phases:
get:
tags:
- phases
summary: Retrieves all phases for the competition
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Phase'
post:
tags:
- phases
summary: Creates a new phase for the competition
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Phase'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Phase'
patch:
tags:
- phases
summary: Updates the phases of this competition
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Phase'
'/phases/{phaseId}':
get:
tags:
- phases
summary: Retrieves a specific phase of this competition
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Phase'
patch:
tags:
- phases
summary: Updates a specific phase of this competition
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Phase'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/rankings':
get:
tags:
- phases
summary: Retrieves all Rankings for the Phase
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Ranking'
post:
tags:
- phases
summary: Creates a new Ranking for the Phase
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Ranking'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Ranking'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/rankings/{rankingId}':
get:
tags:
- phases
summary: Retrieves the specific Ranking
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Ranking'
patch:
tags:
- phases
summary: Updates the specific Ranking
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Ranking'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
- name: rankingId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/participations':
get:
tags:
- phases
summary: Retrieves all Participations for the Phase
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PhaseParticipation'
post:
tags:
- phases
summary: Creates a new Participation for the Phase
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PhaseParticipation'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PhaseParticipation'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/participations/{participationId}':
get:
tags:
- phases
summary: Retrieves the specific Participation
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PhaseParticipation'
patch:
tags:
- phases
summary: Updates the specific Participation
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PhaseParticipation'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
- name: participationId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/events':
get:
tags:
- phases
summary: Retrieves all Events for the Phase
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PhaseEvent'
post:
tags:
- phases
summary: Creates a new Event for the Phase
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PhaseEvent'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PhaseEvent'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/events/{eventId}':
get:
tags:
- phases
summary: Retrieves the specific Event
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PhaseEvent'
patch:
tags:
- phases
summary: Updates the specific Event
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PhaseEvent'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
- name: eventId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/assessments':
get:
tags:
- phases
summary: Retrieves all assessments
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
oneOf:
- $ref: '#/components/schemas/HandmadeAssessment'
- $ref: '#/components/schemas/VirtualAssessment'
post:
tags:
- phases
summary: Creates a new assessment
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/HandmadeAssessment'
- $ref: '#/components/schemas/VirtualAssessment'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/HandmadeAssessment'
- $ref: '#/components/schemas/VirtualAssessment'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/assessments/{assessmentId}':
get:
tags:
- phases
summary: Retrieves the specific assessment
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/HandmadeAssessment'
- $ref: '#/components/schemas/VirtualAssessment'
patch:
tags:
- phases
summary: Updates the specific assessment
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/HandmadeAssessment'
- $ref: '#/components/schemas/VirtualAssessment'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
- name: assessmentId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/assessments/{assessmentId}/questions':
get:
tags:
- phases
summary: Retrieves all Questions of a specific Assessment
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Question'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
- name: assessmentId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/assessments/{assessmentId}/questions/{questionId}':
get:
tags:
- phases
summary: Retrieves the specific Question
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Question'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
- name: assessmentId
in: path
required: true
schema:
format: int32
type: integer
- name: questionId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/assessments/{assessmentId}/submissions':
get:
tags:
- phases
summary: Retrieves all submissions
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/HandmadeAssessmentSubmission'
- $ref: '#/components/schemas/VirtualAssessmentSubmission'
post:
tags:
- phases
summary: Creates a new submission
requestBody:
content:
application/json-patch+json:
schema:
oneOf:
- $ref: '#/components/schemas/HandmadeAssessmentSubmission'
- $ref: '#/components/schemas/VirtualAssessmentSubmission'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/HandmadeAssessmentSubmission'
- $ref: '#/components/schemas/VirtualAssessmentSubmission'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
- name: assessmentId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/assessments/{assessmentId}/submissions/{submissionId}':
get:
tags:
- phases
summary: Retrieves the specific submission
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/HandmadeAssessmentSubmission'
- $ref: '#/components/schemas/VirtualAssessmentSubmission'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
- name: assessmentId
in: path
required: true
schema:
format: int32
type: integer
- name: submissionId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/evaluation':
get:
tags:
- phases
summary: Retrieves the evaluation method for the specified phase
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/EvaluationRule'
patch:
tags:
- phases
summary: Updates the evaluation method for the specified phase
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/EvaluationRule'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
'/phases/{phaseId}/classification':
get:
tags:
- phases
summary: Retrieves the classification method for the specified phase
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/MinimumPerformance'
- $ref: '#/components/schemas/BestRanked'
patch:
tags:
- phases
summary: Updates the classification method for the specified phase
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/MinimumPerformance'
- $ref: '#/components/schemas/BestRanked'
parameters:
- name: phaseId
in: path
required: true
schema:
format: int32
type: integer
components:
schemas:
FormAnswer:
title: Root Type for FormAnswer
description: The root of the FormAnswer type's schema.
required:
- field
- value
type: object
properties:
field:
format: int32
type: integer
value:
type: string
id:
format: int32
type: integer
FormSection:
title: Root Type for FormSection
description: The root of the FormSection type's schema.
required:
- answers
- template
- type
type: object
properties:
template:
format: int32
type: integer
answers:
type: array
items:
$ref: '#/components/schemas/FormAnswer'
id:
format: int32
type: integer
type:
format: int32
type: integer
SoloSubscription:
allOf:
- $ref: '#/components/schemas/Subscription'
- type: object
properties:
participant:
$ref: '#/components/schemas/FormSection'
TeamSubscription:
allOf:
- $ref: '#/components/schemas/Subscription'
- type: object
properties:
team:
$ref: '#/components/schemas/FormSection'
members:
$ref: '#/components/schemas/FormSection'
leader:
$ref: '#/components/schemas/FormSection'
Subscription:
required:
- status
- timestamp
- type
type: object
properties:
timestamp:
format: int64
type: integer
status:
format: int32
description: '{WAITING_REVIEW, ACCEPTED, REJECTED}'
type: integer
id:
format: int32
type: integer
type:
format: int32
description: '{TEAM, SOLO}'
type: integer
discriminator:
propertyName: type
mapping:
'0': '#/components/schemas/TeamSubscription'
'1': '#/components/schemas/SoloSubscription'
JsonPatch:
required:
- op
- path
type: object
properties:
op:
description: >-
The PATCH operation to be performed. Available operations: "add",
"remove", "move", "copy", "replace", "test"
type: string
path:
description: The target location in the JSON
type: string
value:
description: The new value to be added or to replace the old value at the target
from:
description: The source to be copied/moved
type: string
FormTemplate:
required:
- fields
- type
properties:
type:
format: int32
type: integer
fields:
type: array
items:
$ref: '#/components/schemas/FormField'
id:
format: int32
type: integer
FormField:
required:
- label
- required
- type
- unique
properties:
label:
type: string
type:
format: int32
type: integer
unique:
type: boolean
required:
type: boolean
id:
format: int32
type: integer
SubscriptionRule:
required:
- type
- status
properties:
type:
format: int32
description: '{SOLO, TEAM}'
type: integer
status:
format: int32
description: '{PREP, OPEN, CLOSED}'
type: integer
id:
format: int32
type: integer
minMembers:
type: integer
maxMembers:
type: integer
Competition:
required:
- subscriptionConf
- name
- id
properties:
name:
type: string
id:
format: int32
type: integer
subscriptionConf:
$ref: '#/components/schemas/SubscriptionRule'
Phase:
required:
- label
- type
- status
properties:
label:
type: string
order:
type: integer
type:
format: int32
type: integer
status:
format: int32
type: integer
id:
format: int32
type: integer
events:
type: array
items:
$ref: '#/components/schemas/PhaseEvent'
participations:
type: array
items:
$ref: '#/components/schemas/PhaseParticipation'
PhaseEvent:
required:
- type
- timestamp
- descr
properties:
timestamp:
type: integer
format: int64
descr:
type: string
type:
format: int32
description: '{PHASE_CREATED, PHASE_STARTED, EVALUATION_FORMULA_UPDATED, RANKING_EVALUATED, PHASE_CLOSED}'
type: integer
PhaseParticipation:
properties:
rank:
$ref: '#/components/schemas/Rank'
phase:
$ref: '#/components/schemas/Phase'
BestRanked:
required:
- tieBreakCriterias
- number
allOf:
- $ref: '#/components/schemas/ClassificationRule'
- type: object
properties:
number:
type: integer
tieBreakCriterias:
type: array
items:
$ref: '#/components/schemas/TieBreakCriteria'
MinimumPerformance:
required:
- cutOffMark
allOf:
- $ref: '#/components/schemas/ClassificationRule'
- type: object
properties:
cutOffMark:
type: number
ClassificationRule:
required:
- type
properties:
oid:
format: int32
type: integer
type:
format: int32
description: '{BEST_RANKED, MINIMUM_PERFORMANCE}'
type: integer
discriminator:
propertyName: type
mapping:
'0': '#/components/schemas/BestRanked'
'1': '#/components/schemas/MinimumPerformance'
EvaluationRule:
required:
- expression
properties:
oid:
format: int32
type: integer
expression:
type: string
TieBreakCriteria:
required:
- type
properties:
oid:
format: int32
type: integer
type:
format: int32
type: integer
ScheduledEvent:
required:
- oid
- startsAt
- endsAt
properties:
oid:
description: The object identification
type: integer
startsAt:
format: date-time
description: The time of the begining of the assessment
type: string
endsAt:
format: date-time
description: The time of the ending of the assessment
type: string
Assessment:
required:
- status
- type
- oid
- resultAvailable
- answerKeyAvailable
- locationType
- exam
- schedule
properties:
status:
description: '[PREP, SUBMISSION, EVALUATION]'
type: integer
type:
description: '[VIRTUAL, HANDMADE]'
type: integer
schedule:
$ref: '#/components/schemas/ScheduledEvent'
location:
description: Why the fuck is this a string?
type: string
exam:
$ref: '#/components/schemas/Exam'
oid:
description: Object identifier
type: integer
locationType:
type: integer
description: '[ONLINE, ON_SITE]'
resultAvailable:
description:
Boolean indicating if the result is already avialable to exhibition
type: boolean
answerKeyAvailable:
description:
Boolean indicating if the answerKey is already available to exhibition
type: boolean
discriminator:
propertyName: type
mapping:
0: '#/components/schemas/VirtualAssessment'
1: '#/components/schemas/HandmadeAssessment'
VirtualAssessment:
required:
- enforceSequence
allOf:
- $ref: '#/components/schemas/Assessment'
- type: object
properties:
enforceSequence:
type: boolean
description:
Boolean indicating if the assessment must be done in order
HandmadeAssessment:
required:
- submitterType
allOf:
- $ref: '#/components/schemas/Assessment'
- type: object
properties:
submitterType:
type: integer
description: '[ADMIN, ADMIN_OR_COMPETIFIER]'
QuestionGroup:
required:
- oid
- label
- weight
properties:
oid:
type: integer
label:
type: string
weight:
format: float
type: number
QuestionStatement:
required:
- oid
- content
properties:
oid:
type: integer
content:
type: string
Question:
required:
- type
- oid
- group
- order
- weight
- status
properties:
type:
description: Inheritance type identifcation
type: integer
statement:
$ref: '#/components/schemas/QuestionStatement'
oid:
description: object identifier of this Question
type: integer
group:
description: Group for which this given Question belongs in this Exam
type: integer
order:
description: Position of this Question in this Exam
type: integer
weight:
format: float
description: Weight associated with this Question
type: number
status:
description: '{ACTIVE, CANCELED}'
type: integer
discriminator:
propertyName: type
mapping:
0: '#/components/schemas/SubjectiveQuestion'
1: '#/components/schemas/ObjectiveQuestion'
SubjectiveQuestion:
allOf:
- $ref: '#/components/schemas/Question'
- type: object
properties:
answerKey:
format: string
type: string
ObjectiveQuestion:
allOf:
- $ref: '#/components/schemas/Question'
- type: object
properties:
alternatives:
type: array
items:
$ref: '#/components/schemas/Alternative'
answerKey:
type: integer
ExamCover:
required:
- content
- oid
properties:
content:
type: string
oid:
type: integer
Exam:
required:
- type
- title
- groups
- questions
- oid
properties:
type:
description: '{SUBJECTIVE, OBJECTIVE}'
type: integer
title:
type: string
cover:
$ref: '#/components/schemas/ExamCover'
groups:
type: array
items:
$ref: '#/components/schemas/QuestionGroup'
questions:
type: array
items:
oneOf:
- $ref: '#/components/schemas/SubjectiveQuestion'
- $ref: '#/components/schemas/ObjectiveQuestion'
oid:
description: Object identifier
type: integer
Alternative:
required:
- order
- statement
- oid
properties:
order:
title: order
description: position of this alternative to it's question
type: integer
statement:
description: the alternative statement
type: string
oid:
description: Object identifier
type: integer
AssessmentSubmission:
properties:
assessment:
description: The oid assessment that this submission refers to
type: integer
type:
description: '{VIRTUAL, HANDMADE}'
type: integer
lastUpdate:
format: date-time
description: Last time this submission was modified
type: string
competifier:
oneOf:
- $ref: '#/components/schemas/SoloCompetifier'
- $ref: '#/components/schemas/TeamCompetifier'
discriminator:
propertyName: type
HandmadeAssessmentSubmission:
allOf:
- $ref: '#/components/schemas/AssessmentSubmission'
- type: object
properties:
loadUri:
type: string
VirtualAssessmentSubmission:
allOf:
- $ref: '#/components/schemas/AssessmentSubmission'
- type: object
properties:
startedAt:
type: string
format: date-time
finishedAt:
type: string
format: date-time
answers:
type: array
items:
$ref: '#/components/schemas/Answer'
Answer:
properties:
type:
type: integer
freeText:
type: string
choice:
type: integer
question:
type: integer
AssessmentSubmissionEvaluation:
properties:
timestamp:
type: integer
grades:
type: array
items:
$ref: '#/components/schemas/AnswerGrade'
AnswerGrade:
properties:
grade:
format: float
type: number
question:
$ref: '#/components/schemas/Question'
CompetifierEvent:
required:
- timestamp
- descr
- type
properties:
timestamp:
type: integer
format: int64
descr:
type: string
type:
description: ''
type: integer
enum:
- 0
- 1
discriminator:
propertyName: type
Competifier:
properties:
tags:
type: array
items:
$ref: '#/components/schemas/Tag'
type:
description: '[SOLO, TEAM]'
type: integer
enum:
- 0
- 1
events:
type: array
items:
$ref: '#/components/schemas/CompetifierEvent'
discriminator:
propertyName: type
SoloCompetifier:
allOf:
- $ref: '#/components/schemas/Competifier'
- type: object
properties:
firstName:
type: string
lastName:
type: string
TeamCompetifier:
allOf:
- $ref: '#/components/schemas/Competifier'
- type: object
properties:
name:
type: string
leader:
$ref: '#/components/schemas/Participant'
participants:
type: array
items:
$ref: '#/components/schemas/Participant'
Tag:
properties:
label:
type: string
value:
type: string
Participant:
properties:
firstName:
type: string
lastName:
type: string
tags:
type: array
items:
$ref: '#/components/schemas/Tag'
Ranking:
required:
- timestamp
- evaluationRule
properties:
timestamp:
type: integer
format: int64
qualified:
type: array
items:
$ref: '#/components/schemas/Rank'
evaluationRule:
$ref: '#/components/schemas/EvaluationRule'
positions:
type: array
items:
$ref: '#/components/schemas/Rank'
Rank:
required:
- position
- grade
- status
properties:
position:
type: integer
grade:
type: number
status:
description: '[QUALIFIED, DISQUALIFIED]'
type: integer
assessmentEvaluations:
type: array
items:
$ref: '#/components/schemas/AssessmentSubmissionEvaluation'
tags:
- name: config
description: ''
- name: subscription
description: ''
- name: phases
description: ''
- name: exams
description: ''
- name: site
description: ''
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment