Commit 3ef06011 authored by bernardosunderhus's avatar bernardosunderhus

Modulariza os arquivos de declaração de esquemas das API's

parent 2a1a6c45
**/node_modules/
**/package.json
**/yarn.lock
...@@ -3,6 +3,15 @@ info: ...@@ -3,6 +3,15 @@ info:
title: Competition Admin API title: Competition Admin API
description: Competition Admin API description: Competition Admin API
version: 0.1.0 version: 0.1.0
tags:
- name: config
description: 'Subscription configuration operations'
- name: subscription
description: 'Subscription operations'
- name: phases
description: 'Phase operations'
- name: exams
description: 'Exam operations'
paths: paths:
/competifiers: /competifiers:
get: get:
...@@ -307,6 +316,8 @@ paths: ...@@ -307,6 +316,8 @@ paths:
content: content:
application/json-patch+json: application/json-patch+json:
schema: schema:
type: array
items:
$ref: '#/components/schemas/JsonPatch' $ref: '#/components/schemas/JsonPatch'
required: true required: true
responses: responses:
...@@ -1069,673 +1080,102 @@ paths: ...@@ -1069,673 +1080,102 @@ paths:
type: integer type: integer
components: components:
schemas: 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: ScheduledEvent:
required: $ref: './schemas/Assessment.yaml/#/ScheduledEvent'
- 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: Assessment:
required: $ref: './schemas/Assessment.yaml/#/Assessment'
- 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: VirtualAssessment:
required: $ref: './schemas/Assessment.yaml/#/VirtualAssessment'
- enforceSequence
allOf:
- $ref: '#/components/schemas/Assessment'
- type: object
properties:
enforceSequence:
type: boolean
description:
Boolean indicating if the assessment must be done in order
HandmadeAssessment: HandmadeAssessment:
required: $ref: './schemas/Assessment.yaml/#/HandmadeAssessment'
- submitterType AssessmentEvent:
allOf: $ref: './schemas/Assessment.yaml/#/AssessmentEvent'
- $ref: '#/components/schemas/Assessment'
- type: object
properties:
submitterType:
type: integer
description: '[ADMIN, ADMIN_OR_COMPETIFIER]'
QuestionGroup: QuestionGroup:
required: $ref: './schemas/Exam.yaml/#/QuestionGroup'
- oid
- label
- weight
properties:
oid:
type: integer
label:
type: string
weight:
format: float
type: number
QuestionStatement: QuestionStatement:
required: $ref: './schemas/Exam.yaml/#/QuestionStatement'
- oid
- content
properties:
oid:
type: integer
content:
type: string
Question: Question:
required: $ref: './schemas/Exam.yaml/#/Question'
- 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: SubjectiveQuestion:
allOf: $ref: './schemas/Exam.yaml/#/SubjectiveQuestion'
- $ref: '#/components/schemas/Question'
- type: object
properties:
answerKey:
format: string
type: string
ObjectiveQuestion: ObjectiveQuestion:
allOf: $ref: './schemas/Exam.yaml/#/ObjectiveQuestion'
- $ref: '#/components/schemas/Question'
- type: object
properties:
alternatives:
type: array
items:
$ref: '#/components/schemas/Alternative'
answerKey:
type: integer
ExamCover: ExamCover:
required: $ref: './schemas/Exam.yaml/#/ExamCover'
- content
- oid
properties:
content:
type: string
oid:
type: integer
Exam: Exam:
required: $ref: './schemas/Exam.yaml/#/Exam'
- 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: Alternative:
required: $ref: './schemas/Exam.yaml/#/Alternative'
- order ExamQuestionComplaint:
- statement $ref: './schemas/Exam.yaml/#/ExamQuestionComplaint'
- 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: AssessmentSubmission:
properties: $ref: './schemas/Submission.yaml/#/AssessmentSubmission'
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: HandmadeAssessmentSubmission:
allOf: $ref: './schemas/Submission.yaml/#/HandmadeAssessmentSubmission'
- $ref: '#/components/schemas/AssessmentSubmission'
- type: object
properties:
loadUri:
type: string
VirtualAssessmentSubmission: VirtualAssessmentSubmission:
allOf: $ref: './schemas/Submission.yaml/#/VirtualAssessmentSubmission'
- $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: Answer:
properties: $ref: './schemas/Submission.yaml/#/Answer'
type:
type: integer
freeText:
type: string
choice:
type: integer
question:
type: integer
AssessmentSubmissionEvaluation: AssessmentSubmissionEvaluation:
properties: $ref: './schemas/Submission.yaml/#/AssessmentSubmissionEvaluation'
timestamp:
type: integer
grades:
type: array
items:
$ref: '#/components/schemas/AnswerGrade'
AnswerGrade: AnswerGrade:
properties: $ref: './schemas/Submission.yaml/#/AnswerGrade'
grade: VirtualAssessmentSubmissionDraft:
format: float $ref: './schemas/Submission.yaml/#/VirtualAssessmentSubmissionDraft'
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: Competifier:
properties: $ref: './schemas/Competifier.yaml/#/Competifier'
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: SoloCompetifier:
allOf: $ref: './schemas/Competifier.yaml/#/SoloCompetifier'
- $ref: '#/components/schemas/Competifier'
- type: object
properties:
firstName:
type: string
lastName:
type: string
TeamCompetifier: TeamCompetifier:
allOf: $ref: './schemas/Competifier.yaml/#/TeamCompetifier'
- $ref: '#/components/schemas/Competifier' CompetifierEvent:
- type: object $ref: './schemas/Competifier.yaml/#/CompetifierEvent'
properties:
name:
type: string
leader:
$ref: '#/components/schemas/Participant'
participants:
type: array
items:
$ref: '#/components/schemas/Participant'
Tag: Tag:
properties: $ref: './schemas/Competifier.yaml/#/Tag'
label:
type: string
value:
type: string
Participant: Participant:
properties: $ref: './schemas/Competifier.yaml/#/Participant'
firstName: Message:
type: string $ref: './schemas/Competifier.yaml/#/Message'
lastName: JsonPatch:
type: string $ref: './schemas/JsonPatch.yaml'
tags: Competition:
type: array $ref: './schemas/Phase.yaml/#/Competition'
items: Phase:
$ref: '#/components/schemas/Tag' $ref: './schemas/Phase.yaml/#/Phase'
PhaseEvent:
$ref: './schemas/Phase.yaml/#/PhaseEvent'
PhaseParticipation:
$ref: './schemas/Phase.yaml/#/PhaseParticipation'
BestRanked:
$ref: './schemas/Phase.yaml/#/BestRanked'
MinimumPerformance:
$ref: './schemas/Phase.yaml/#/MinimumPerformance'
ClassificationRule:
$ref: './schemas/Phase.yaml/#/ClassificationRule'
EvaluationRule:
$ref: './schemas/Phase.yaml/#/EvaluationRule'
TieBreakCriteria:
$ref: './schemas/Phase.yaml/#/TieBreakCriteria'
Ranking: Ranking:
required: $ref: './schemas/Phase.yaml/#/Ranking'
- 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: Rank:
required: $ref: './schemas/Phase.yaml/#/Rank'
- position SubscriptionRule:
- grade $ref: './schemas/Subscription.yaml/#/SubscriptionRule'
- status Subscription:
properties: $ref: './schemas/Subscription.yaml/#/Subscription'
position: SoloSubscription:
type: integer $ref: './schemas/Subscription.yaml/#/SoloSubscription'
grade: TeamSubscription:
type: number $ref: './schemas/Subscription.yaml/#/TeamSubscription'
status: FormTemplate:
description: '[QUALIFIED, DISQUALIFIED]' $ref: './schemas/Subscription.yaml/#/FormTemplate'
type: integer FormField:
assessmentEvaluations: $ref: './schemas/Subscription.yaml/#/FormField'
type: array FormAnswer:
items: $ref: './schemas/Subscription.yaml/#/FormAnswer'
$ref: '#/components/schemas/AssessmentSubmissionEvaluation' FormSection:
tags: $ref: './schemas/Subscription.yaml/#/FormSection'
- name: config
description: ''
- name: subscription
description: ''
- name: phases
description: ''
- name: exams
description: ''
- name: site
description: ''
...@@ -503,401 +503,100 @@ paths: ...@@ -503,401 +503,100 @@ paths:
components: components:
schemas: schemas:
ScheduledEvent: ScheduledEvent:
required: $ref: './schemas/Assessment.yaml/#/ScheduledEvent'
- 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: Assessment:
required: $ref: './schemas/Assessment.yaml/#/Assessment'
- status
- type
- oid
- resultAvailable
- answerKeyAvailable
- locationType
- 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: VirtualAssessment:
required: $ref: './schemas/Assessment.yaml/#/VirtualAssessment'
- enforceSequence
allOf:
- $ref: '#/components/schemas/Assessment'
- type: object
properties:
enforceSequence:
type: boolean
description:
Boolean indicating if the assessment must be done in order
HandmadeAssessment: HandmadeAssessment:
required: $ref: './schemas/Assessment.yaml/#/HandmadeAssessment'
- submitterType AssessmentEvent:
allOf: $ref: './schemas/Assessment.yaml/#/AssessmentEvent'
- $ref: '#/components/schemas/Assessment'
- type: object
properties:
submitterType:
type: integer
description: '[ADMIN, ADMIN_OR_COMPETIFIER]'
QuestionGroup: QuestionGroup:
required: $ref: './schemas/Exam.yaml/#/QuestionGroup'
- oid
- label
- weight
properties:
oid:
type: integer
label:
type: string
weight:
format: float
type: number
QuestionStatement: QuestionStatement:
required: $ref: './schemas/Exam.yaml/#/QuestionStatement'
- oid
- content
properties:
oid:
type: integer
content:
type: string
Question: Question:
required: $ref: './schemas/Exam.yaml/#/Question'
- 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: SubjectiveQuestion:
allOf: $ref: './schemas/Exam.yaml/#/SubjectiveQuestion'
- $ref: '#/components/schemas/Question'
- type: object
properties:
answerKey:
format: string
type: string
ObjectiveQuestion: ObjectiveQuestion:
allOf: $ref: './schemas/Exam.yaml/#/ObjectiveQuestion'
- $ref: '#/components/schemas/Question'
- type: object
properties:
alternatives:
type: array
items:
$ref: '#/components/schemas/Alternative'
answerKey:
type: integer
ExamCover: ExamCover:
required: $ref: './schemas/Exam.yaml/#/ExamCover'
- content
- oid
properties:
content:
type: string
oid:
type: integer
Exam: Exam:
required: $ref: './schemas/Exam.yaml/#/Exam'
- 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: Alternative:
required: $ref: './schemas/Exam.yaml/#/Alternative'
- order ExamQuestionComplaint:
- statement $ref: './schemas/Exam.yaml/#/ExamQuestionComplaint'
- 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: AssessmentSubmission:
properties: $ref: './schemas/Submission.yaml/#/AssessmentSubmission'
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: HandmadeAssessmentSubmission:
allOf: $ref: './schemas/Submission.yaml/#/HandmadeAssessmentSubmission'
- $ref: '#/components/schemas/AssessmentSubmission'
- type: object
properties:
loadUri:
type: string
VirtualAssessmentSubmission: VirtualAssessmentSubmission:
allOf: $ref: './schemas/Submission.yaml/#/VirtualAssessmentSubmission'
- $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: Answer:
properties: $ref: './schemas/Submission.yaml/#/Answer'
type:
type: integer
freeText:
type: string
choice:
type: integer
question:
type: integer
AssessmentSubmissionEvaluation: AssessmentSubmissionEvaluation:
properties: $ref: './schemas/Submission.yaml/#/AssessmentSubmissionEvaluation'
timestamp:
type: integer
grades:
type: array
items:
$ref: '#/components/schemas/AnswerGrade'
AnswerGrade: AnswerGrade:
properties: $ref: './schemas/Submission.yaml/#/AnswerGrade'
grade: VirtualAssessmentSubmissionDraft:
format: float $ref: './schemas/Submission.yaml/#/VirtualAssessmentSubmissionDraft'
type: number
question:
$ref: '#/components/schemas/Question'
Competifier: Competifier:
properties: $ref: './schemas/Competifier.yaml/#/Competifier'
tags:
type: array
items:
$ref: '#/components/schemas/Tag'
type:
description: '[SOLO, TEAM]'
type: integer
enum:
- 0
- 1
discriminator:
propertyName: type
SoloCompetifier: SoloCompetifier:
allOf: $ref: './schemas/Competifier.yaml/#/SoloCompetifier'
- $ref: '#/components/schemas/Competifier'
- type: object
properties:
firstName:
type: string
lastName:
type: string
TeamCompetifier: TeamCompetifier:
allOf: $ref: './schemas/Competifier.yaml/#/TeamCompetifier'
- $ref: '#/components/schemas/Competifier' CompetifierEvent:
- type: object $ref: './schemas/Competifier.yaml/#/CompetifierEvent'
properties:
name:
type: string
leader:
$ref: '#/components/schemas/Participant'
participants:
type: array
items:
$ref: '#/components/schemas/Participant'
Tag: Tag:
properties: $ref: './schemas/Competifier.yaml/#/Tag'
label:
type: string
value:
type: string
Participant: Participant:
properties: $ref: './schemas/Competifier.yaml/#/Participant'
firstName:
type: string
lastName:
type: string
tags:
type: array
items:
$ref: '#/components/schemas/Tag'
JsonPatch:
title: Root Type for JsonPatch
description: The root of the JsonPatch type's schema.
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
VirtualAssessmentSubmissionDraft:
properties:
createdAt:
format: date-time
type: string
updatedAt:
format: date-time
type: string
content:
type: string
assessment:
format: int32
type: integer
Message: Message:
properties: $ref: './schemas/Competifier.yaml/#/Message'
timestamp: JsonPatch:
format: date-time $ref: './schemas/JsonPatch.yaml'
type: string
title:
type: string
body:
type: string
read:
type: boolean
ExamQuestionComplaint:
properties:
timestamp:
format: date-time
type: string
text:
type: string
question:
$ref: '#/components/schemas/Question'
Competition: Competition:
properties: $ref: './schemas/Phase.yaml/#/Competition'
name:
type: string
description:
type: string
Phase: Phase:
properties: $ref: './schemas/Phase.yaml/#/Phase'
type: PhaseEvent:
description: '{CLASSIFICATORY, FINAL}' $ref: './schemas/Phase.yaml/#/PhaseEvent'
type: integer PhaseParticipation:
enum: $ref: './schemas/Phase.yaml/#/PhaseParticipation'
- 0 BestRanked:
- 1 $ref: './schemas/Phase.yaml/#/BestRanked'
status: MinimumPerformance:
description: '{PREP, ONGOING, EVALUATION, CLOSED}' $ref: './schemas/Phase.yaml/#/MinimumPerformance'
type: integer ClassificationRule:
assessment: $ref: './schemas/Phase.yaml/#/ClassificationRule'
$ref: '#/components/schemas/Assessment' EvaluationRule:
$ref: './schemas/Phase.yaml/#/EvaluationRule'
TieBreakCriteria:
$ref: './schemas/Phase.yaml/#/TieBreakCriteria'
Ranking:
$ref: './schemas/Phase.yaml/#/Ranking'
Rank:
$ref: './schemas/Phase.yaml/#/Rank'
SubscriptionRule:
$ref: './schemas/Subscription.yaml/#/SubscriptionRule'
Subscription:
$ref: './schemas/Subscription.yaml/#/Subscription'
SoloSubscription:
$ref: './schemas/Subscription.yaml/#/SoloSubscription'
TeamSubscription:
$ref: './schemas/Subscription.yaml/#/TeamSubscription'
FormTemplate:
$ref: './schemas/Subscription.yaml/#/FormTemplate'
FormField:
$ref: './schemas/Subscription.yaml/#/FormField'
FormAnswer:
$ref: './schemas/Subscription.yaml/#/FormAnswer'
FormSection:
$ref: './schemas/Subscription.yaml/#/FormSection'
interface Persistent {
oid: number
}
export enum QuestionType {
SUBJECTIVE,
OBJECTIVE
}
export enum ExamQuestionStatus {
ACTIVE,
CANCELED
}
export enum ExamType {
SUBJECTIVE_ONLY,
OBJECTIVE_ONLY,
MIXED
}
export enum ExamDeploymentStatus {}
export enum ExamDeploymentType {
ONLINE,
ON_SITE
}
export interface QuestionCategory extends Persistent {
label: string
questions: Question[] | number[]
}
export interface QuestionAlternative extends Persistent {
order: number
statement: string
}
export interface Question extends Persistent {
type: QuestionType
statement: string
categories: QuestionCategory[] | number[]
}
export interface SubjectiveQuestion extends Question {
answerKey: string
}
export interface ObjectiveQuestion extends Question {
answerKey: QuestionAlternative | number
alternatives: QuestionAlternative[] | number[]
}
export interface ExamQuestionGroup extends Persistent {
label: string
weight: number
}
export interface ExamQuestion extends Persistent {
question: Question | number
order: number
weight: number
status: ExamQuestionStatus
}
export interface Exam extends Persistent {
cover: string
date: string
label: string
questions: ExamQuestion[] | number[]
groups: ExamQuestionGroup[] | number[]
type: ExamType
}
export interface ExamDeployment extends Persistent {
date: string
status: ExamDeploymentStatus
type: ExamDeploymentType
exam: Exam | number
}
export interface OnlineExamDeployment extends ExamDeployment {
enforceSequence: boolean
}
export interface OnSiteExamDeployment extends ExamDeployment {
local: string
}
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
- schedule
properties:
status:
description: '[PREP, SUBMISSION, EVALUATION]'
type: integer
type:
description: '[VIRTUAL, HANDMADE]'
type: integer
schedule:
$ref: '#/ScheduledEvent'
location:
description: Why the fuck is this a string?
type: string
exam:
$ref: '/schemas/Exam.yaml/#/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: '#/VirtualAssessment'
1: '#/HandmadeAssessment'
VirtualAssessment:
required:
- enforceSequence
allOf:
- $ref: '#/Assessment'
- type: object
properties:
enforceSequence:
type: boolean
description:
Boolean indicating if the assessment must be done in order
HandmadeAssessment:
required:
- submitterType
allOf:
- $ref: '#/Assessment'
- type: object
properties:
submitterType:
type: integer
description: '[ADMIN, ADMIN_OR_COMPETIFIER]'
AssessmentEvent:
properties:
timestamp:
type: string
desc:
type: string
Competifier:
properties:
tags:
type: array
items:
$ref: '#/Tag'
type:
description: '[SOLO, TEAM]'
type: integer
enum:
- 0
- 1
events:
type: array
items:
$ref: '#/CompetifierEvent'
discriminator:
propertyName: type
SoloCompetifier:
allOf:
- $ref: '#/Competifier'
- type: object
properties:
firstName:
type: string
lastName:
type: string
TeamCompetifier:
allOf:
- $ref: '#/Competifier'
- type: object
properties:
name:
type: string
leader:
$ref: '#/Participant'
participants:
type: array
items:
$ref: '#/Participant'
Tag:
properties:
label:
type: string
value:
type: string
Participant:
properties:
firstName:
type: string
lastName:
type: string
tags:
type: array
items:
$ref: '#/Tag'
Message:
properties:
timestamp:
format: date-time
type: string
title:
type: string
body:
type: string
read:
type: boolean
CompetifierEvent:
required:
- timestamp
- descr
- type
properties:
timestamp:
type: integer
descr:
type: string
type:
type: integer
enum:
- 0
- 1
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: '#/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: '#/SubjectiveQuestion'
1: '#/ObjectiveQuestion'
SubjectiveQuestion:
allOf:
- $ref: '#/Question'
- type: object
properties:
answerKey:
format: string
type: string
ObjectiveQuestion:
allOf:
- $ref: '#/Question'
- type: object
properties:
alternatives:
type: array
items:
$ref: '#/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: '#/ExamCover'
groups:
type: array
items:
$ref: '#/QuestionGroup'
questions:
type: array
items:
oneOf:
- $ref: '#/SubjectiveQuestion'
- $ref: '#/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
ExamQuestionComplaint:
properties:
timestamp:
format: date-time
type: string
text:
type: string
question:
$ref: '#/Question'
description: The root of the JsonPatch type's schema.
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
Competition:
required:
- subscriptionConf
- name
- oid
properties:
name:
type: string
oid:
format: int32
type: integer
subscriptionConf:
$ref: '#/SubscriptionRule'
Phase:
required:
- label
- type
- status
properties:
label:
type: string
order:
type: integer
type:
format: int32
type: integer
status:
format: int32
type: integer
oid:
format: int32
type: integer
events:
type: array
items:
$ref: '#/PhaseEvent'
participations:
type: array
items:
$ref: '#/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: '#/Rank'
phase:
$ref: '#/Phase'
BestRanked:
required:
- tieBreakCriterias
- number
allOf:
- $ref: '#/ClassificationRule'
- type: object
properties:
number:
type: integer
tieBreakCriterias:
type: array
items:
$ref: '#/TieBreakCriteria'
MinimumPerformance:
required:
- cutOffMark
allOf:
- $ref: '#/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': '#/BestRanked'
'1': '#/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
Ranking:
required:
- timestamp
- evaluationRule
properties:
timestamp:
type: integer
format: int64
qualified:
type: array
items:
$ref: '#/Rank'
evaluationRule:
$ref: '#/EvaluationRule'
positions:
type: array
items:
$ref: '#/Rank'
Rank:
required:
- position
- grade
- status
properties:
position:
type: integer
grade:
type: number
status:
description: '[QUALIFIED, DISQUALIFIED]'
type: integer
assessmentEvaluations:
type: array
items:
$ref: '#/AssessmentSubmissionEvaluation'
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:
type: integer
description: The oid of the competifier that this submission refers to
discriminator:
propertyName: type
HandmadeAssessmentSubmission:
allOf:
- $ref: '#/AssessmentSubmission'
- type: object
properties:
loadUri:
type: string
VirtualAssessmentSubmission:
allOf:
- $ref: '#/AssessmentSubmission'
- type: object
properties:
startedAt:
type: string
format: date-time
finishedAt:
type: string
format: date-time
answers:
type: array
items:
$ref: '#/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: '#/AnswerGrade'
AnswerGrade:
properties:
grade:
format: float
type: number
question:
type: integer
VirtualAssessmentSubmissionDraft:
properties:
createdAt:
format: date-time
type: string
updatedAt:
format: date-time
type: string
content:
type: string
assessment:
format: int32
type: integer
SubscriptionRule:
required:
- type
- status
properties:
type:
description: '{SOLO, TEAM}'
type: integer
status:
description: '{PREP, OPEN, CLOSED}'
type: integer
oid:
type: integer
minMembers:
type: integer
maxMembers:
type: integer
Subscription:
required:
- status
- timestamp
- type
type: object
properties:
timestamp:
type: integer
status:
description: '{WAITING_REVIEW, ACCEPTED, REJECTED}'
type: integer
oid:
type: integer
type:
description: '{TEAM, SOLO}'
type: integer
discriminator:
propertyName: type
mapping:
'0': '#/TeamSubscription'
'1': '#/SoloSubscription'
SoloSubscription:
allOf:
- $ref: '#/Subscription'
- type: object
properties:
participant:
$ref: '#/FormSection'
TeamSubscription:
allOf:
- $ref: '#/Subscription'
- type: object
properties:
team:
$ref: '#/FormSection'
members:
$ref: '#/FormSection'
leader:
$ref: '#/FormSection'
FormTemplate:
required:
- fields
- type
properties:
type:
type: integer
fields:
type: array
items:
$ref: '#/FormField'
oid:
type: integer
FormField:
required:
- label
- required
- type
- unique
properties:
label:
type: string
type:
type: integer
unique:
type: boolean
required:
type: boolean
oid:
type: integer
FormAnswer:
title: Root Type for FormAnswer
description: The root of the FormAnswer type's schema.
required:
- field
- value
type: object
properties:
field:
type: integer
value:
type: string
oid:
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:
type: integer
answers:
type: array
items:
$ref: '#/FormAnswer'
oid:
type: integer
type:
type: integer
...@@ -11324,7 +11324,7 @@ ...@@ -11324,7 +11324,7 @@
}, },
"visibility": "public", "visibility": "public",
"navigable": false, "navigable": false,
"aggregation": "none", "aggregation": "composite",
"multiplicity": "1", "multiplicity": "1",
"isReadOnly": false, "isReadOnly": false,
"isOrdered": false, "isOrdered": false,
...@@ -66141,7 +66141,7 @@ ...@@ -66141,7 +66141,7 @@
"visible": false, "visible": false,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -66166,7 +66166,7 @@ ...@@ -66166,7 +66166,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;1", "font": "Arial;13;1",
"showShadow": true, "showShadow": true,
...@@ -66192,7 +66192,7 @@ ...@@ -66192,7 +66192,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -66218,7 +66218,7 @@ ...@@ -66218,7 +66218,7 @@
"visible": false, "visible": false,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -66238,7 +66238,7 @@ ...@@ -66238,7 +66238,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -66284,7 +66284,7 @@ ...@@ -66284,7 +66284,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -66313,7 +66313,7 @@ ...@@ -66313,7 +66313,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -66334,7 +66334,7 @@ ...@@ -66334,7 +66334,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -66358,7 +66358,7 @@ ...@@ -66358,7 +66358,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -66382,7 +66382,7 @@ ...@@ -66382,7 +66382,7 @@
"visible": false, "visible": false,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -66406,7 +66406,7 @@ ...@@ -66406,7 +66406,7 @@
"visible": false, "visible": false,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -66422,7 +66422,7 @@ ...@@ -66422,7 +66422,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ff8056",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -67585,7 +67585,7 @@ ...@@ -67585,7 +67585,7 @@
"containerExtending": false, "containerExtending": false,
"left": 421, "left": 421,
"top": 327, "top": 327,
"width": 115, "width": 108,
"height": 13, "height": 13,
"autoResize": false, "autoResize": false,
"underline": false, "underline": false,
...@@ -67657,7 +67657,7 @@ ...@@ -67657,7 +67657,7 @@
"containerExtending": false, "containerExtending": false,
"left": 416, "left": 416,
"top": 320, "top": 320,
"width": 125, "width": 118,
"height": 25, "height": 25,
"autoResize": false, "autoResize": false,
"stereotypeLabel": { "stereotypeLabel": {
...@@ -67682,6 +67682,37 @@ ...@@ -67682,6 +67682,37 @@
"model": { "model": {
"$ref": "AAAAAAFjIjRYomFvs+g=" "$ref": "AAAAAAFjIjRYomFvs+g="
}, },
"subViews": [
{
"_type": "UMLAttributeView",
"_id": "AAAAAAFjOpb6QL2t16g=",
"_parent": {
"$ref": "AAAAAAFjIjRYoF/rXmA="
},
"model": {
"$ref": "AAAAAAFjOpb6Cb2nDUI="
},
"visible": true,
"enabled": true,
"lineColor": "#000000",
"fillColor": "#a1ecdf",
"fontColor": "#000000",
"font": "Arial;13;0",
"showShadow": true,
"containerChangeable": false,
"containerExtending": false,
"left": 421,
"top": 350,
"width": 108,
"height": 13,
"autoResize": false,
"underline": false,
"text": "+requestReview",
"horizontalAlignment": 0,
"verticalAlignment": 5,
"wordWrap": false
}
],
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
...@@ -67693,8 +67724,8 @@ ...@@ -67693,8 +67724,8 @@
"containerExtending": false, "containerExtending": false,
"left": 416, "left": 416,
"top": 345, "top": 345,
"width": 125, "width": 118,
"height": 10, "height": 23,
"autoResize": false "autoResize": false
}, },
{ {
...@@ -67716,8 +67747,8 @@ ...@@ -67716,8 +67747,8 @@
"containerChangeable": false, "containerChangeable": false,
"containerExtending": false, "containerExtending": false,
"left": 416, "left": 416,
"top": 355, "top": 368,
"width": 125, "width": 118,
"height": 10, "height": 10,
"autoResize": false "autoResize": false
}, },
...@@ -67781,8 +67812,8 @@ ...@@ -67781,8 +67812,8 @@
"containerExtending": false, "containerExtending": false,
"left": 416, "left": 416,
"top": 320, "top": 320,
"width": 125, "width": 118,
"height": 73, "height": 58,
"autoResize": false, "autoResize": false,
"stereotypeDisplay": "label", "stereotypeDisplay": "label",
"showVisibility": true, "showVisibility": true,
...@@ -72874,7 +72905,7 @@ ...@@ -72874,7 +72905,7 @@
"showShadow": true, "showShadow": true,
"containerChangeable": false, "containerChangeable": false,
"containerExtending": false, "containerExtending": false,
"left": 565, "left": 558,
"top": 307, "top": 307,
"width": 0, "width": 0,
"height": 13, "height": 13,
...@@ -72908,7 +72939,7 @@ ...@@ -72908,7 +72939,7 @@
"showShadow": true, "showShadow": true,
"containerChangeable": false, "containerChangeable": false,
"containerExtending": false, "containerExtending": false,
"left": 568, "left": 561,
"top": 293, "top": 293,
"width": 0, "width": 0,
"height": 13, "height": 13,
...@@ -72942,7 +72973,7 @@ ...@@ -72942,7 +72973,7 @@
"showShadow": true, "showShadow": true,
"containerChangeable": false, "containerChangeable": false,
"containerExtending": false, "containerExtending": false,
"left": 559, "left": 552,
"top": 331, "top": 331,
"width": 22, "width": 22,
"height": 13, "height": 13,
...@@ -73128,7 +73159,7 @@ ...@@ -73128,7 +73159,7 @@
"$ref": "AAAAAAFjIjRYoF/vx2o=" "$ref": "AAAAAAFjIjRYoF/vx2o="
}, },
"lineStyle": 0, "lineStyle": 0,
"points": "540:328;680:328;680:166;816:166", "points": "533:328;680:328;680:166;816:166",
"stereotypeDisplay": "label", "stereotypeDisplay": "label",
"showVisibility": true, "showVisibility": true,
"showProperty": true, "showProperty": true,
...@@ -73197,7 +73228,7 @@ ...@@ -73197,7 +73228,7 @@
"containerChangeable": false, "containerChangeable": false,
"containerExtending": false, "containerExtending": false,
"left": 852, "left": 852,
"top": 361, "top": 335,
"width": 0, "width": 0,
"height": 13, "height": 13,
"autoResize": false, "autoResize": false,
...@@ -73231,7 +73262,7 @@ ...@@ -73231,7 +73262,7 @@
"containerChangeable": false, "containerChangeable": false,
"containerExtending": false, "containerExtending": false,
"left": 837, "left": 837,
"top": 361, "top": 335,
"width": 0, "width": 0,
"height": 13, "height": 13,
"autoResize": false, "autoResize": false,
...@@ -73265,7 +73296,7 @@ ...@@ -73265,7 +73296,7 @@
"containerChangeable": false, "containerChangeable": false,
"containerExtending": false, "containerExtending": false,
"left": 882, "left": 882,
"top": 362, "top": 336,
"width": 0, "width": 0,
"height": 13, "height": 13,
"autoResize": false, "autoResize": false,
...@@ -73298,8 +73329,8 @@ ...@@ -73298,8 +73329,8 @@
"showShadow": true, "showShadow": true,
"containerChangeable": false, "containerChangeable": false,
"containerExtending": false, "containerExtending": false,
"left": 565, "left": 558,
"top": 347, "top": 321,
"width": 0, "width": 0,
"height": 13, "height": 13,
"autoResize": false, "autoResize": false,
...@@ -73332,8 +73363,8 @@ ...@@ -73332,8 +73363,8 @@
"showShadow": true, "showShadow": true,
"containerChangeable": false, "containerChangeable": false,
"containerExtending": false, "containerExtending": false,
"left": 568, "left": 561,
"top": 333, "top": 307,
"width": 0, "width": 0,
"height": 13, "height": 13,
"autoResize": false, "autoResize": false,
...@@ -73366,8 +73397,8 @@ ...@@ -73366,8 +73397,8 @@
"showShadow": true, "showShadow": true,
"containerChangeable": false, "containerChangeable": false,
"containerExtending": false, "containerExtending": false,
"left": 550, "left": 543,
"top": 380, "top": 354,
"width": 22, "width": 22,
"height": 13, "height": 13,
"autoResize": false, "autoResize": false,
...@@ -73552,7 +73583,7 @@ ...@@ -73552,7 +73583,7 @@
"$ref": "AAAAAAFjIjRYoF/vx2o=" "$ref": "AAAAAAFjIjRYoF/vx2o="
}, },
"lineStyle": 0, "lineStyle": 0,
"points": "540:368;867:368;867:188", "points": "533:342;867:342;867:188",
"stereotypeDisplay": "label", "stereotypeDisplay": "label",
"showVisibility": true, "showVisibility": true,
"showProperty": true, "showProperty": true,
...@@ -73721,7 +73752,7 @@ ...@@ -73721,7 +73752,7 @@
"$ref": "AAAAAAFjIjRYoGAcfN8=" "$ref": "AAAAAAFjIjRYoGAcfN8="
}, },
"lineStyle": 0, "lineStyle": 0,
"points": "432:488;432:448;496:448;496:392", "points": "432:488;432:448;496:448;496:377",
"stereotypeDisplay": "label", "stereotypeDisplay": "label",
"showVisibility": true, "showVisibility": true,
"showProperty": true, "showProperty": true,
...@@ -73864,7 +73895,7 @@ ...@@ -73864,7 +73895,7 @@
"$ref": "AAAAAAFjIjRYoGASWe8=" "$ref": "AAAAAAFjIjRYoGASWe8="
}, },
"lineStyle": 0, "lineStyle": 0,
"points": "568:488;568:448;496:448;496:392", "points": "568:488;568:448;496:448;496:377",
"stereotypeDisplay": "label", "stereotypeDisplay": "label",
"showVisibility": true, "showVisibility": true,
"showProperty": true, "showProperty": true,
...@@ -79134,7 +79165,7 @@ ...@@ -79134,7 +79165,7 @@
"visible": false, "visible": false,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -79159,7 +79190,7 @@ ...@@ -79159,7 +79190,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;1", "font": "Arial;13;1",
"showShadow": true, "showShadow": true,
...@@ -79185,7 +79216,7 @@ ...@@ -79185,7 +79216,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -79211,7 +79242,7 @@ ...@@ -79211,7 +79242,7 @@
"visible": false, "visible": false,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -79231,7 +79262,7 @@ ...@@ -79231,7 +79262,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -79277,7 +79308,7 @@ ...@@ -79277,7 +79308,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -79306,7 +79337,7 @@ ...@@ -79306,7 +79337,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -79327,7 +79358,7 @@ ...@@ -79327,7 +79358,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -79351,7 +79382,7 @@ ...@@ -79351,7 +79382,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -79375,7 +79406,7 @@ ...@@ -79375,7 +79406,7 @@
"visible": false, "visible": false,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -79399,7 +79430,7 @@ ...@@ -79399,7 +79430,7 @@
"visible": false, "visible": false,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -79415,7 +79446,7 @@ ...@@ -79415,7 +79446,7 @@
"visible": true, "visible": true,
"enabled": true, "enabled": true,
"lineColor": "#000000", "lineColor": "#000000",
"fillColor": "#a1ecdf", "fillColor": "#ffadd6",
"fontColor": "#000000", "fontColor": "#000000",
"font": "Arial;13;0", "font": "Arial;13;0",
"showShadow": true, "showShadow": true,
...@@ -80987,6 +81018,25 @@ ...@@ -80987,6 +81018,25 @@
} }
], ],
"visibility": "public", "visibility": "public",
"attributes": [
{
"_type": "UMLAttribute",
"_id": "AAAAAAFjOpb6Cb2nDUI=",
"_parent": {
"$ref": "AAAAAAFjIjRYomFvs+g="
},
"name": "requestReview",
"visibility": "public",
"isStatic": false,
"isLeaf": false,
"isReadOnly": false,
"isOrdered": false,
"isUnique": false,
"isDerived": false,
"aggregation": "none",
"isID": false
}
],
"isAbstract": false, "isAbstract": false,
"isFinalSpecialization": false, "isFinalSpecialization": false,
"isLeaf": false, "isLeaf": false,
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