662 lines
16 KiB
GraphQL
662 lines
16 KiB
GraphQL
type Query {
|
|
learning_path(id: ID, slug: String, course_id: ID, course_slug: String): LearningPathObjectType
|
|
learning_content_media_library: LearningContentMediaLibraryObjectType
|
|
learning_content_assignment: LearningContentAssignmentObjectType
|
|
learning_content_attendance_course: LearningContentAttendanceCourseObjectType
|
|
learning_content_feedback: LearningContentFeedbackObjectType
|
|
learning_content_learning_module: LearningContentLearningModuleObjectType
|
|
learning_content_placeholder: LearningContentPlaceholderObjectType
|
|
learning_content_rich_text: LearningContentRichTextObjectType
|
|
learning_content_test: LearningContentEdoniqTestObjectType
|
|
learning_content_video: LearningContentVideoObjectType
|
|
learning_content_document_list: LearningContentDocumentListObjectType
|
|
course_session_attendance_course(id: ID!, assignment_user_id: ID): CourseSessionAttendanceCourseObjectType
|
|
course(id: ID): CourseObjectType
|
|
course_session(id: ID): CourseSessionObjectType
|
|
competence_certificate(id: ID, slug: String): CompetenceCertificateObjectType
|
|
competence_certificate_list(id: ID, slug: String, course_id: ID, course_slug: String): CompetenceCertificateListObjectType
|
|
assignment(id: ID, slug: String): AssignmentObjectType
|
|
assignment_completion(assignment_id: ID!, course_session_id: ID!, learning_content_page_id: ID, assignment_user_id: UUID): AssignmentCompletionObjectType
|
|
}
|
|
|
|
type LearningPathObjectType implements CoursePageInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
topics: [TopicObjectType!]!
|
|
}
|
|
|
|
interface CoursePageInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
}
|
|
|
|
type CourseObjectType {
|
|
id: ID!
|
|
title: String!
|
|
category_name: String!
|
|
slug: String!
|
|
}
|
|
|
|
type TopicObjectType implements CoursePageInterface {
|
|
is_visible: Boolean!
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
circles: [CircleObjectType!]!
|
|
}
|
|
|
|
type CircleObjectType implements CoursePageInterface {
|
|
description: String!
|
|
goals: String!
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
learning_sequences: [LearningSequenceObjectType!]!
|
|
}
|
|
|
|
type LearningSequenceObjectType implements CoursePageInterface {
|
|
icon: String!
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
learning_units: [LearningUnitObjectType!]!
|
|
}
|
|
|
|
type LearningUnitObjectType implements CoursePageInterface {
|
|
title_hidden: Boolean!
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
learning_contents: [LearningContentInterface!]!
|
|
performance_criteria: [PerformanceCriteriaObjectType!]!
|
|
evaluate_url: String!
|
|
}
|
|
|
|
interface LearningContentInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
minutes: Int
|
|
description: String!
|
|
content_url: String!
|
|
can_user_self_toggle_course_completion: Boolean!
|
|
circle: CircleLightObjectType
|
|
}
|
|
|
|
type CircleLightObjectType {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
}
|
|
|
|
type PerformanceCriteriaObjectType implements CoursePageInterface {
|
|
competence_id: String!
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
}
|
|
|
|
type LearningContentMediaLibraryObjectType implements CoursePageInterface & LearningContentInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
minutes: Int
|
|
description: String!
|
|
content_url: String!
|
|
can_user_self_toggle_course_completion: Boolean!
|
|
circle: CircleLightObjectType
|
|
}
|
|
|
|
type LearningContentAssignmentObjectType implements CoursePageInterface & LearningContentInterface {
|
|
content_assignment: AssignmentObjectType!
|
|
assignment_type: LearnpathLearningContentAssignmentAssignmentTypeChoices!
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
minutes: Int
|
|
description: String!
|
|
content_url: String!
|
|
can_user_self_toggle_course_completion: Boolean!
|
|
circle: CircleLightObjectType
|
|
competence_certificate: CompetenceCertificateObjectType
|
|
}
|
|
|
|
type AssignmentObjectType implements CoursePageInterface {
|
|
assignment_type: AssignmentAssignmentAssignmentTypeChoices!
|
|
|
|
"""
|
|
Muss der Auftrag durch eine Expertin oder einen Experten beurteilt werden?
|
|
"""
|
|
needs_expert_evaluation: Boolean!
|
|
competence_certificate: CompetenceCertificateObjectType
|
|
|
|
"""Erläuterung der Ausgangslage"""
|
|
intro_text: String!
|
|
|
|
"""Zeitaufwand als Text"""
|
|
effort_required: String!
|
|
|
|
"""Beschreibung der Bewertung"""
|
|
evaluation_description: String!
|
|
|
|
"""URL zum Beurteilungsinstrument"""
|
|
evaluation_document_url: String!
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
tasks: JSONStreamField
|
|
evaluation_tasks: JSONStreamField
|
|
performance_objectives: JSONStreamField
|
|
max_points: Int
|
|
learning_content: LearningContentInterface
|
|
completion(course_session_id: ID!, learning_content_page_id: ID, assignment_user_id: UUID): AssignmentCompletionObjectType
|
|
}
|
|
|
|
"""An enumeration."""
|
|
enum AssignmentAssignmentAssignmentTypeChoices {
|
|
"""CASEWORK"""
|
|
CASEWORK
|
|
|
|
"""PREP_ASSIGNMENT"""
|
|
PREP_ASSIGNMENT
|
|
|
|
"""REFLECTION"""
|
|
REFLECTION
|
|
|
|
"""CONDITION_ACCEPTANCE"""
|
|
CONDITION_ACCEPTANCE
|
|
|
|
"""EDONIQ_TEST"""
|
|
EDONIQ_TEST
|
|
}
|
|
|
|
type CompetenceCertificateObjectType implements CoursePageInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
assignments: [AssignmentObjectType!]!
|
|
}
|
|
|
|
scalar JSONStreamField
|
|
|
|
type AssignmentCompletionObjectType {
|
|
id: UUID!
|
|
created_at: DateTime!
|
|
updated_at: DateTime!
|
|
submitted_at: DateTime
|
|
evaluation_submitted_at: DateTime
|
|
evaluation_user: UserObjectType
|
|
evaluation_points: Float
|
|
evaluation_max_points: Float
|
|
evaluation_passed: Boolean
|
|
edoniq_extended_time_flag: Boolean!
|
|
assignment_user: UserObjectType!
|
|
assignment: AssignmentObjectType!
|
|
course_session: CourseSessionObjectType!
|
|
completion_status: AssignmentAssignmentCompletionCompletionStatusChoices!
|
|
completion_data: GenericScalar
|
|
additional_json_data: JSONString!
|
|
task_completion_data: GenericScalar
|
|
learning_content_page_id: ID
|
|
}
|
|
|
|
"""
|
|
Leverages the internal Python implementation of UUID (uuid.UUID) to provide native UUID objects
|
|
in fields, resolvers and input.
|
|
"""
|
|
scalar UUID
|
|
|
|
"""
|
|
The `DateTime` scalar type represents a DateTime
|
|
value as specified by
|
|
[iso8601](https://en.wikipedia.org/wiki/ISO_8601).
|
|
"""
|
|
scalar DateTime
|
|
|
|
type UserObjectType {
|
|
"""
|
|
Erforderlich. 150 Zeichen oder weniger. Nur Buchstaben, Ziffern und @/./+/-/_.
|
|
"""
|
|
username: String!
|
|
first_name: String!
|
|
last_name: String!
|
|
id: UUID!
|
|
avatar_url: String!
|
|
email: String!
|
|
language: CoreUserLanguageChoices!
|
|
}
|
|
|
|
"""An enumeration."""
|
|
enum CoreUserLanguageChoices {
|
|
"""Deutsch"""
|
|
DE
|
|
|
|
"""Français"""
|
|
FR
|
|
|
|
"""Italiano"""
|
|
IT
|
|
}
|
|
|
|
type CourseSessionObjectType {
|
|
id: ID!
|
|
created_at: DateTime!
|
|
updated_at: DateTime!
|
|
course: CourseObjectType!
|
|
title: String!
|
|
start_date: Date
|
|
end_date: Date
|
|
attendance_courses: [CourseSessionAttendanceCourseObjectType!]!
|
|
assignments: [CourseSessionAssignmentObjectType!]!
|
|
edoniq_tests: [CourseSessionEdoniqTestObjectType!]!
|
|
users: [CourseSessionUserObjectsType!]!
|
|
}
|
|
|
|
"""
|
|
The `Date` scalar type represents a Date
|
|
value as specified by
|
|
[iso8601](https://en.wikipedia.org/wiki/ISO_8601).
|
|
"""
|
|
scalar Date
|
|
|
|
type CourseSessionAttendanceCourseObjectType {
|
|
id: ID!
|
|
learning_content: LearningContentAttendanceCourseObjectType!
|
|
due_date: DueDateObjectType
|
|
location: String!
|
|
trainer: String!
|
|
course_session_id: ID
|
|
learning_content_id: ID
|
|
attendance_user_list: [AttendanceUserObjectType]
|
|
}
|
|
|
|
type LearningContentAttendanceCourseObjectType implements CoursePageInterface & LearningContentInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
minutes: Int
|
|
description: String!
|
|
content_url: String!
|
|
can_user_self_toggle_course_completion: Boolean!
|
|
circle: CircleLightObjectType
|
|
}
|
|
|
|
type DueDateObjectType {
|
|
id: ID!
|
|
|
|
"""Startdatum ist Pflicht"""
|
|
start: DateTime
|
|
|
|
"""Enddatum ist optional"""
|
|
end: DateTime
|
|
|
|
"""Nur aktivieren, wenn man die Felder manuell überschreiben will"""
|
|
manual_override_fields: Boolean!
|
|
|
|
"""Title wird standarmässig vom LearningContent übernommen"""
|
|
title: String!
|
|
|
|
"""Translation Key aus dem Frontend"""
|
|
assignment_type_translation_key: String!
|
|
|
|
"""Translation Key aus dem Frontend"""
|
|
date_type_translation_key: String!
|
|
|
|
"""
|
|
Überschreibt den Untertitel bei `assignment_type_translation_key` und `date_type_translation_key`
|
|
"""
|
|
subtitle: String!
|
|
|
|
"""
|
|
URL wird vom LearningContent übernommen (sichtbar für Member/Teilnehmer)
|
|
"""
|
|
url: String!
|
|
course_session: CourseSessionObjectType!
|
|
}
|
|
|
|
type AttendanceUserObjectType {
|
|
user_id: UUID!
|
|
status: AttendanceUserStatus!
|
|
first_name: String
|
|
last_name: String
|
|
email: String
|
|
}
|
|
|
|
"""An enumeration."""
|
|
enum AttendanceUserStatus {
|
|
PRESENT
|
|
ABSENT
|
|
}
|
|
|
|
type CourseSessionAssignmentObjectType {
|
|
id: ID!
|
|
learning_content: LearningContentAssignmentObjectType!
|
|
submission_deadline: DueDateObjectType
|
|
evaluation_deadline: DueDateObjectType
|
|
course_session_id: ID!
|
|
learning_content_id: ID!
|
|
}
|
|
|
|
type CourseSessionEdoniqTestObjectType {
|
|
id: ID!
|
|
learning_content: LearningContentEdoniqTestObjectType!
|
|
deadline: DueDateObjectType
|
|
course_session_id: ID!
|
|
learning_content_id: ID!
|
|
}
|
|
|
|
type LearningContentEdoniqTestObjectType implements CoursePageInterface & LearningContentInterface {
|
|
checkbox_text: String!
|
|
content_assignment: AssignmentObjectType
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
minutes: Int
|
|
description: String!
|
|
content_url: String!
|
|
can_user_self_toggle_course_completion: Boolean!
|
|
circle: CircleLightObjectType
|
|
competence_certificate: CompetenceCertificateObjectType
|
|
}
|
|
|
|
type CourseSessionUserObjectsType {
|
|
id: UUID!
|
|
role: CourseCourseSessionUserRoleChoices!
|
|
user_id: UUID!
|
|
first_name: String!
|
|
last_name: String!
|
|
email: String!
|
|
avatar_url: String!
|
|
circles: [CourseSessionUserExpertCircleType!]!
|
|
}
|
|
|
|
"""An enumeration."""
|
|
enum CourseCourseSessionUserRoleChoices {
|
|
"""Teilnehmer"""
|
|
MEMBER
|
|
|
|
"""Experte/Trainer"""
|
|
EXPERT
|
|
|
|
"""Lernbegleitung"""
|
|
TUTOR
|
|
}
|
|
|
|
type CourseSessionUserExpertCircleType {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
}
|
|
|
|
"""An enumeration."""
|
|
enum AssignmentAssignmentCompletionCompletionStatusChoices {
|
|
"""IN_PROGRESS"""
|
|
IN_PROGRESS
|
|
|
|
"""SUBMITTED"""
|
|
SUBMITTED
|
|
|
|
"""EVALUATION_IN_PROGRESS"""
|
|
EVALUATION_IN_PROGRESS
|
|
|
|
"""EVALUATION_SUBMITTED"""
|
|
EVALUATION_SUBMITTED
|
|
}
|
|
|
|
"""
|
|
The `GenericScalar` scalar type represents a generic
|
|
GraphQL scalar value that could be:
|
|
String, Boolean, Int, Float, List or Object.
|
|
"""
|
|
scalar GenericScalar
|
|
|
|
"""
|
|
Allows use of a JSON String for input / output from the GraphQL schema.
|
|
|
|
Use of this type is *not recommended* as you lose the benefits of having a defined, static
|
|
schema (one of the key benefits of GraphQL).
|
|
"""
|
|
scalar JSONString
|
|
|
|
"""An enumeration."""
|
|
enum LearnpathLearningContentAssignmentAssignmentTypeChoices {
|
|
"""CASEWORK"""
|
|
CASEWORK
|
|
|
|
"""PREP_ASSIGNMENT"""
|
|
PREP_ASSIGNMENT
|
|
|
|
"""REFLECTION"""
|
|
REFLECTION
|
|
|
|
"""CONDITION_ACCEPTANCE"""
|
|
CONDITION_ACCEPTANCE
|
|
|
|
"""EDONIQ_TEST"""
|
|
EDONIQ_TEST
|
|
}
|
|
|
|
type LearningContentFeedbackObjectType implements CoursePageInterface & LearningContentInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
minutes: Int
|
|
description: String!
|
|
content_url: String!
|
|
can_user_self_toggle_course_completion: Boolean!
|
|
circle: CircleLightObjectType
|
|
}
|
|
|
|
type LearningContentLearningModuleObjectType implements CoursePageInterface & LearningContentInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
minutes: Int
|
|
description: String!
|
|
content_url: String!
|
|
can_user_self_toggle_course_completion: Boolean!
|
|
circle: CircleLightObjectType
|
|
}
|
|
|
|
type LearningContentPlaceholderObjectType implements CoursePageInterface & LearningContentInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
minutes: Int
|
|
description: String!
|
|
content_url: String!
|
|
can_user_self_toggle_course_completion: Boolean!
|
|
circle: CircleLightObjectType
|
|
}
|
|
|
|
type LearningContentRichTextObjectType implements CoursePageInterface & LearningContentInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
minutes: Int
|
|
description: String!
|
|
content_url: String!
|
|
can_user_self_toggle_course_completion: Boolean!
|
|
circle: CircleLightObjectType
|
|
}
|
|
|
|
type LearningContentVideoObjectType implements CoursePageInterface & LearningContentInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
minutes: Int
|
|
description: String!
|
|
content_url: String!
|
|
can_user_self_toggle_course_completion: Boolean!
|
|
circle: CircleLightObjectType
|
|
}
|
|
|
|
type LearningContentDocumentListObjectType implements CoursePageInterface & LearningContentInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
minutes: Int
|
|
description: String!
|
|
content_url: String!
|
|
can_user_self_toggle_course_completion: Boolean!
|
|
circle: CircleLightObjectType
|
|
}
|
|
|
|
type CompetenceCertificateListObjectType implements CoursePageInterface {
|
|
id: ID!
|
|
title: String!
|
|
slug: String!
|
|
content_type: String!
|
|
live: Boolean!
|
|
translation_key: String!
|
|
frontend_url: String!
|
|
course: CourseObjectType
|
|
competence_certificates: [CompetenceCertificateObjectType!]!
|
|
}
|
|
|
|
type Mutation {
|
|
send_feedback(course_session_id: ID!, data: GenericScalar, learning_content_page_id: ID!, submitted: Boolean = false): SendFeedbackMutation
|
|
update_course_session_attendance_course_users(attendance_user_list: [AttendanceUserInputType]!, id: ID!): AttendanceCourseUserMutation
|
|
upsert_assignment_completion(assignment_id: ID!, assignment_user_id: UUID, completion_data_string: String, completion_status: AssignmentCompletionStatus, course_session_id: ID!, evaluation_passed: Boolean, evaluation_points: Float, initialize_completion: Boolean, learning_content_page_id: ID): AssignmentCompletionMutation
|
|
}
|
|
|
|
type SendFeedbackMutation {
|
|
feedback_response: FeedbackResponseObjectType
|
|
|
|
"""May contain more than one error for same field."""
|
|
errors: [ErrorType]
|
|
}
|
|
|
|
type FeedbackResponseObjectType {
|
|
id: UUID!
|
|
data: GenericScalar
|
|
submitted: Boolean!
|
|
}
|
|
|
|
type ErrorType {
|
|
field: String!
|
|
messages: [String!]!
|
|
}
|
|
|
|
type AttendanceCourseUserMutation {
|
|
course_session_attendance_course: CourseSessionAttendanceCourseObjectType
|
|
}
|
|
|
|
input AttendanceUserInputType {
|
|
user_id: UUID!
|
|
status: AttendanceUserStatus!
|
|
}
|
|
|
|
type AssignmentCompletionMutation {
|
|
assignment_completion: AssignmentCompletionObjectType
|
|
}
|
|
|
|
"""An enumeration."""
|
|
enum AssignmentCompletionStatus {
|
|
IN_PROGRESS
|
|
SUBMITTED
|
|
EVALUATION_IN_PROGRESS
|
|
EVALUATION_SUBMITTED
|
|
} |