{
	"components": {
		"examples": {},
		"headers": {},
		"parameters": {},
		"requestBodies": {},
		"responses": {},
		"schemas": {
			"LessonActiveStats": {
				"properties": {
					"progressInPercent": {
						"type": "number",
						"format": "double"
					},
					"nbIncorrectAnswers": {
						"type": "number",
						"format": "double"
					},
					"nbCorrectAnswers": {
						"type": "number",
						"format": "double"
					},
					"success": {
						"type": "boolean"
					},
					"validationThreshold": {
						"type": "number",
						"format": "double"
					}
				},
				"type": "object"
			},
			"ActiveLesson": {
				"properties": {
					"stats": {
						"$ref": "#/components/schemas/LessonActiveStats"
					},
					"version": {
						"type": "number",
						"format": "double"
					},
					"successRate": {
						"type": "number",
						"format": "double"
					},
					"score": {
						"type": "number",
						"format": "double"
					},
					"_ownerId": {
						"type": "string"
					},
					"_userId": {
						"type": "string"
					},
					"_lessonId": {
						"type": "string"
					},
					"timeSpent": {
						"type": "number",
						"format": "double"
					},
					"achieved": {
						"type": "boolean"
					},
					"lastDate": {
						"type": "string",
						"format": "date-time"
					},
					"startDate": {
						"type": "string",
						"format": "date-time"
					},
					"title": {
						"type": "string"
					}
				},
				"type": "object"
			},
			"DomainErrorModel": {
				"properties": {
					"statusCode": {
						"type": "number",
						"format": "double"
					},
					"kind": {
						"type": "string"
					},
					"message": {
						"type": "string"
					}
				},
				"required": [
					"statusCode",
					"kind",
					"message"
				],
				"type": "object"
			},
			"AnswerQuizType": {
				"type": "string",
				"enum": [
					"exit",
					"entry"
				]
			},
			"AnswerResultType": {
				"type": "string",
				"enum": [
					"text",
					"image-base-64",
					"number",
					"choice-ref"
				]
			},
			"AnswerResultPosition": {
				"properties": {
					"left": {
						"type": "number",
						"format": "double"
					},
					"top": {
						"type": "number",
						"format": "double"
					}
				},
				"type": "object"
			},
			"AnswerResult": {
				"properties": {
					"position": {
						"$ref": "#/components/schemas/AnswerResultPosition"
					},
					"labelName": {
						"type": "string"
					},
					"value": {
						"anyOf": [
							{
								"type": "number",
								"format": "double"
							},
							{
								"type": "string"
							}
						]
					},
					"type": {
						"$ref": "#/components/schemas/AnswerResultType"
					}
				},
				"type": "object"
			},
			"AnswerForcedValidationType": {
				"type": "string",
				"enum": [
					"admin",
					"coach"
				]
			},
			"AnswerValidationFeedbackStatus": {
				"type": "string",
				"enum": [
					"pending",
					"valid",
					"invalid"
				]
			},
			"AnswerValidationFeedback": {
				"properties": {
					"status": {
						"$ref": "#/components/schemas/AnswerValidationFeedbackStatus"
					},
					"title": {
						"type": "string"
					}
				},
				"type": "object"
			},
			"AnswerValidation": {
				"properties": {
					"feedback": {
						"$ref": "#/components/schemas/AnswerValidationFeedback"
					},
					"forcedValidationType": {
						"$ref": "#/components/schemas/AnswerForcedValidationType"
					},
					"isForcedValid": {
						"type": "boolean"
					}
				},
				"type": "object"
			},
			"Answer": {
				"properties": {
					"lastDate": {
						"type": "string",
						"format": "date-time"
					},
					"lessonVersion": {
						"type": "number",
						"format": "double"
					},
					"validation": {
						"$ref": "#/components/schemas/AnswerValidation"
					},
					"results": {
						"items": {
							"$ref": "#/components/schemas/AnswerResult"
						},
						"type": "array"
					},
					"endTimeStamp": {
						"type": "number",
						"format": "double"
					},
					"startTimeStamp": {
						"type": "number",
						"format": "double"
					},
					"isValid": {
						"type": "boolean"
					},
					"attemptIndex": {
						"type": "number",
						"format": "double"
					},
					"quizType": {
						"$ref": "#/components/schemas/AnswerQuizType"
					},
					"questionTitle": {
						"type": "string"
					},
					"_questionId": {
						"type": "string"
					},
					"_activeLessonId": {
						"type": "string"
					},
					"_lessonId": {
						"type": "string"
					},
					"_userId": {
						"type": "string"
					}
				},
				"required": [
					"results",
					"attemptIndex",
					"quizType",
					"_activeLessonId",
					"_lessonId",
					"_userId"
				],
				"type": "object"
			},
			"LogoutByIdBody": {
				"properties": {
					"id": {
						"type": "string"
					}
				},
				"required": [
					"id"
				],
				"type": "object"
			},
			"ActiveLessonStatus": {
				"enum": [
					"not-started",
					"in-progress",
					"succeeded",
					"failed"
				],
				"type": "string"
			},
			"ActiveLessonCallback": {
				"properties": {
					"absoluteScore": {
						"type": "number",
						"format": "double"
					},
					"score": {
						"type": "number",
						"format": "double"
					},
					"progress": {
						"type": "number",
						"format": "double"
					},
					"status": {
						"$ref": "#/components/schemas/ActiveLessonStatus"
					},
					"LessonID": {
						"type": "string"
					},
					"UserID": {
						"type": "string"
					}
				},
				"required": [
					"progress",
					"status",
					"LessonID",
					"UserID"
				],
				"type": "object"
			},
			"UpdateActiveLessonBody": {
				"properties": {
					"score": {
						"type": "number",
						"format": "double",
						"description": "score should be an integer number in the range [0;100]"
					},
					"status": {
						"$ref": "#/components/schemas/ActiveLessonStatus"
					},
					"progress": {
						"type": "number",
						"format": "double",
						"description": "progress should be an integer number in the range [0;100]"
					}
				},
				"required": [
					"status",
					"progress"
				],
				"type": "object"
			},
			"Category": {
				"properties": {
					"description": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"ownerID": {
						"type": "string"
					},
					"id": {
						"type": "string"
					}
				},
				"required": [
					"name",
					"ownerID",
					"id"
				],
				"type": "object"
			},
			"UserGroup": {
				"properties": {
					"type": {
						"type": "string"
					},
					"disabled": {
						"type": "boolean"
					},
					"nbActiveUser": {
						"type": "number",
						"format": "double"
					},
					"nbUser": {
						"type": "number",
						"format": "double"
					},
					"description": {
						"type": "string"
					},
					"uniqueName": {
						"type": "string"
					},
					"title": {
						"type": "string"
					},
					"id": {
						"type": "string"
					}
				},
				"required": [
					"title",
					"id"
				],
				"type": "object"
			},
			"User": {
				"properties": {
					"locale": {
						"type": "string"
					},
					"points": {
						"type": "number",
						"format": "double"
					},
					"login": {
						"type": "string"
					},
					"email": {
						"type": "string"
					},
					"firstname": {
						"type": "string"
					},
					"lastname": {
						"type": "string"
					},
					"alias": {
						"type": "string"
					},
					"id": {
						"type": "string"
					}
				},
				"required": [
					"locale",
					"points",
					"login",
					"email",
					"firstname",
					"lastname",
					"alias",
					"id"
				],
				"type": "object"
			},
			"TokenResponse": {
				"properties": {
					"refresh_token": {
						"type": "string"
					},
					"access_token": {
						"type": "string"
					}
				},
				"required": [
					"refresh_token",
					"access_token"
				],
				"type": "object"
			},
			"ExchangeCredentialsForTokenBody": {
				"properties": {
					"appSecret": {
						"type": "string"
					}
				},
				"required": [
					"appSecret"
				],
				"type": "object"
			},
			"refreshTokenBody": {
				"properties": {
					"refreshToken": {
						"type": "string"
					}
				},
				"required": [
					"refreshToken"
				],
				"type": "object"
			},
			"Nullable_string_": {
				"type": "string",
				"nullable": true
			},
			"ILessonSessionUserAttendance": {
				"enum": [
					"attended",
					"absent",
					"none"
				],
				"type": "string"
			},
			"Nullable_Date_": {
				"type": "string",
				"format": "date-time",
				"nullable": true
			},
			"ILessonSessionRegistrationStatus": {
				"enum": [
					"waiting-list",
					"pending-validation",
					"approved",
					"rejected"
				],
				"type": "string"
			},
			"LessonSessionRegistrations": {
				"properties": {
					"status": {
						"$ref": "#/components/schemas/ILessonSessionRegistrationStatus"
					},
					"signatureDate": {
						"$ref": "#/components/schemas/Nullable_Date_"
					},
					"attendance": {
						"$ref": "#/components/schemas/ILessonSessionUserAttendance"
					},
					"registrationDate": {
						"type": "string",
						"format": "date-time"
					},
					"userId": {
						"type": "string"
					}
				},
				"required": [
					"status",
					"signatureDate",
					"userId"
				],
				"type": "object"
			},
			"II18nStringField": {
				"properties": {
					"lang": {
						"type": "string"
					},
					"value": {
						"type": "string"
					}
				},
				"type": "object",
				"additionalProperties": false
			},
			"ILessonSessionLocation": {
				"properties": {
					"lang": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"name_i18n": {
						"items": {
							"$ref": "#/components/schemas/II18nStringField"
						},
						"type": "array"
					},
					"room": {
						"type": "string"
					},
					"description": {
						"type": "string"
					},
					"description_i18n": {
						"items": {
							"$ref": "#/components/schemas/II18nStringField"
						},
						"type": "array"
					},
					"address": {
						"type": "string"
					}
				},
				"type": "object",
				"additionalProperties": false
			},
			"Nullable_ILessonSessionLocation_": {
				"allOf": [
					{
						"$ref": "#/components/schemas/ILessonSessionLocation"
					}
				],
				"nullable": true
			},
			"ILessonSessionCodeType": {
				"enum": [
					"qr",
					"barcode",
					"access"
				],
				"type": "string"
			},
			"ILessonSessionCode": {
				"properties": {
					"type": {
						"$ref": "#/components/schemas/ILessonSessionCodeType"
					},
					"value": {
						"type": "string"
					}
				},
				"type": "object",
				"additionalProperties": false
			},
			"Nullable_ILessonSessionCode-Array_": {
				"items": {
					"$ref": "#/components/schemas/ILessonSessionCode"
				},
				"type": "array",
				"nullable": true
			},
			"ILessionSessionStatus": {
				"enum": [
					"draft",
					"online",
					"cancelled",
					"deleted"
				],
				"type": "string"
			},
			"Nullable_ILessionSessionStatus_": {
				"allOf": [
					{
						"$ref": "#/components/schemas/ILessionSessionStatus"
					}
				],
				"nullable": true
			},
			"ILessonSessionQuotaType": {
				"enum": [
					"none",
					"max",
					"min",
					"min-max"
				],
				"type": "string"
			},
			"ILessonSessionQuota": {
				"properties": {
					"type": {
						"$ref": "#/components/schemas/ILessonSessionQuotaType"
					},
					"min": {
						"type": "number",
						"format": "double"
					},
					"max": {
						"type": "number",
						"format": "double"
					}
				},
				"required": [
					"type"
				],
				"type": "object",
				"additionalProperties": false
			},
			"Nullable_ILessonSessionQuota_": {
				"allOf": [
					{
						"$ref": "#/components/schemas/ILessonSessionQuota"
					}
				],
				"nullable": true
			},
			"LessonSession": {
				"properties": {
					"isLive": {
						"type": "boolean"
					},
					"quotas": {
						"$ref": "#/components/schemas/Nullable_ILessonSessionQuota_"
					},
					"status": {
						"$ref": "#/components/schemas/Nullable_ILessionSessionStatus_"
					},
					"endDate": {
						"$ref": "#/components/schemas/Nullable_Date_"
					},
					"startDate": {
						"$ref": "#/components/schemas/Nullable_Date_"
					},
					"creationDate": {
						"$ref": "#/components/schemas/Nullable_Date_"
					},
					"presenters": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"codes": {
						"$ref": "#/components/schemas/Nullable_ILessonSessionCode-Array_"
					},
					"location": {
						"$ref": "#/components/schemas/Nullable_ILessonSessionLocation_"
					},
					"onSite": {
						"type": "boolean"
					},
					"creatorId": {
						"$ref": "#/components/schemas/Nullable_string_"
					},
					"lessonId": {
						"$ref": "#/components/schemas/Nullable_string_"
					},
					"registrations": {
						"items": {
							"$ref": "#/components/schemas/LessonSessionRegistrations"
						},
						"type": "array"
					},
					"description": {
						"$ref": "#/components/schemas/Nullable_string_"
					},
					"title": {
						"$ref": "#/components/schemas/Nullable_string_"
					},
					"guid": {
						"$ref": "#/components/schemas/Nullable_string_"
					},
					"id": {
						"type": "string"
					}
				},
				"required": [
					"isLive",
					"quotas",
					"status",
					"endDate",
					"startDate",
					"creationDate",
					"presenters",
					"codes",
					"location",
					"onSite",
					"creatorId",
					"lessonId",
					"registrations",
					"description",
					"title",
					"guid",
					"id"
				],
				"type": "object"
			},
			"IRegistrationsPeriod": {
				"properties": {
					"startDate": {
						"type": "string",
						"format": "date-time"
					},
					"endDate": {
						"type": "string",
						"format": "date-time"
					}
				},
				"type": "object",
				"additionalProperties": false
			},
			"ILessonSessionRegistrationGroupType": {
				"enum": [
					"unlimited",
					"one-per-lesson"
				],
				"type": "string",
				"deprecated": true
			},
			"ILessonSessionType": {
				"enum": [
					"fixed-date",
					"open"
				],
				"type": "string"
			},
			"LessonSessionBody": {
				"properties": {
					"title": {
						"type": "string"
					},
					"description": {
						"type": "string"
					},
					"lessonId": {
						"type": "string"
					},
					"presenters": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"status": {
						"$ref": "#/components/schemas/ILessionSessionStatus"
					},
					"type": {
						"$ref": "#/components/schemas/ILessonSessionType"
					},
					"registrationGroupType": {
						"$ref": "#/components/schemas/ILessonSessionRegistrationGroupType"
					},
					"quota": {
						"$ref": "#/components/schemas/ILessonSessionQuota"
					},
					"registrationsPeriod": {
						"$ref": "#/components/schemas/IRegistrationsPeriod"
					},
					"location": {
						"properties": {
							"room": {
								"type": "string"
							},
							"name": {
								"type": "string"
							}
						},
						"type": "object"
					},
					"endDate": {
						"type": "string"
					},
					"startDate": {
						"type": "string"
					},
					"isAttendanceSession": {
						"type": "boolean"
					},
					"isSignedSession": {
						"type": "boolean"
					},
					"hasLive": {
						"type": "boolean"
					},
					"onsite": {
						"type": "boolean"
					},
					"codes": {
						"items": {
							"$ref": "#/components/schemas/ILessonSessionCode"
						},
						"type": "array"
					}
				},
				"required": [
					"title",
					"description",
					"lessonId",
					"presenters",
					"status",
					"type",
					"registrationGroupType"
				],
				"type": "object"
			},
			"Partial_LessonSessionBody_": {
				"properties": {
					"codes": {
						"items": {
							"$ref": "#/components/schemas/ILessonSessionCode"
						},
						"type": "array"
					},
					"onsite": {
						"type": "boolean"
					},
					"hasLive": {
						"type": "boolean"
					},
					"isSignedSession": {
						"type": "boolean"
					},
					"isAttendanceSession": {
						"type": "boolean"
					},
					"startDate": {
						"type": "string"
					},
					"endDate": {
						"type": "string"
					},
					"location": {
						"properties": {
							"room": {
								"type": "string"
							},
							"name": {
								"type": "string"
							}
						},
						"type": "object"
					},
					"registrationsPeriod": {
						"$ref": "#/components/schemas/IRegistrationsPeriod"
					},
					"quota": {
						"$ref": "#/components/schemas/ILessonSessionQuota"
					},
					"registrationGroupType": {
						"$ref": "#/components/schemas/ILessonSessionRegistrationGroupType"
					},
					"type": {
						"$ref": "#/components/schemas/ILessonSessionType"
					},
					"status": {
						"$ref": "#/components/schemas/ILessionSessionStatus"
					},
					"presenters": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"lessonId": {
						"type": "string"
					},
					"description": {
						"type": "string"
					},
					"title": {
						"type": "string"
					}
				},
				"type": "object",
				"description": "Make all properties in T optional"
			},
			"ILessonVisibility": {
				"enum": [
					"public",
					"private"
				],
				"type": "string"
			},
			"ILessonStatus": {
				"enum": [
					"saved",
					"submit",
					"online",
					"refused",
					"deleted",
					"draft"
				],
				"type": "string"
			},
			"IFileType": {
				"enum": [
					"original",
					"site",
					"site-low-res",
					"mobile",
					"small",
					"tiny",
					"specific"
				],
				"type": "string"
			},
			"LessonImages": {
				"properties": {
					"type": {
						"$ref": "#/components/schemas/IFileType",
						"description": "Type of the image used in different resolutions"
					},
					"url": {
						"type": "string",
						"description": "URL of the image"
					}
				},
				"type": "object"
			},
			"LessonNotionContent": {
				"properties": {
					"videoContent": {
						"properties": {
							"thumbnail": {
								"type": "string"
							},
							"url": {
								"type": "string"
							}
						},
						"required": [
							"url"
						],
						"type": "object",
						"description": "Video content of the lesson"
					},
					"flashCardContent": {
						"items": {
							"properties": {
								"backContent": {
									"properties": {
										"images": {
											"items": {
												"$ref": "#/components/schemas/LessonImages"
											},
											"type": "array"
										},
										"image": {
											"type": "string"
										},
										"text": {
											"type": "string"
										}
									},
									"required": [
										"text"
									],
									"type": "object"
								},
								"frontContent": {
									"properties": {
										"images": {
											"items": {
												"$ref": "#/components/schemas/LessonImages"
											},
											"type": "array"
										},
										"image": {
											"type": "string"
										},
										"text": {
											"type": "string"
										}
									},
									"required": [
										"text"
									],
									"type": "object"
								}
							},
							"required": [
								"backContent",
								"frontContent"
							],
							"type": "object"
						},
						"type": "array",
						"description": "Flash card content of the lesson"
					},
					"icons": {
						"items": {
							"$ref": "#/components/schemas/LessonImages"
						},
						"type": "array",
						"description": "Publicly accessible URLs of the images of the lesson"
					},
					"duration": {
						"type": "number",
						"format": "double",
						"description": "Duration of the content"
					},
					"standardContent": {
						"type": "string",
						"description": "Content of the content card (markdown format accepted)"
					},
					"type": {
						"type": "string",
						"enum": [
							"standard",
							"flashCards",
							"video",
							"infographic"
						],
						"description": "Type of the content"
					},
					"name": {
						"type": "string",
						"description": "Name of the content"
					}
				},
				"required": [
					"type",
					"name"
				],
				"type": "object"
			},
			"IQuizzType": {
				"enum": [
					"question-list",
					"evaluation",
					"life",
					"survey",
					"diagnostic",
					"game",
					"iterative",
					"useCase"
				],
				"type": "string"
			},
			"IQuestionType": {
				"enum": [
					"simple",
					"swipecards",
					"image-map",
					"label-matching",
					"multiple",
					"truefalse",
					"checkbox",
					"order",
					"gap-fill",
					"satisfaction",
					"evaluation",
					"free-text",
					"free-text-image-b64",
					"free-number"
				],
				"type": "string"
			},
			"LessonQuizzQuestionChoice": {
				"properties": {
					"value": {
						"type": "number",
						"format": "double",
						"description": "Value of the choice"
					},
					"choiceAnswer": {
						"type": "string",
						"description": "Answer of the choice"
					},
					"good": {
						"type": "boolean",
						"description": "Good choice"
					},
					"title": {
						"type": "string",
						"description": "Title of the choice"
					}
				},
				"type": "object"
			},
			"IQuestionChoicesOrderType": {
				"enum": [
					"ordered",
					"random"
				],
				"type": "string"
			},
			"LessonQuizzQuestion": {
				"properties": {
					"choicesOrderType": {
						"$ref": "#/components/schemas/IQuestionChoicesOrderType",
						"description": "Order type of the choices"
					},
					"choices": {
						"items": {
							"$ref": "#/components/schemas/LessonQuizzQuestionChoice"
						},
						"type": "array",
						"description": "Choices of the question"
					},
					"allowedAttempts": {
						"type": "number",
						"format": "double",
						"description": "Allowed attempts of the question"
					},
					"type": {
						"$ref": "#/components/schemas/IQuestionType",
						"description": "Type of the question"
					},
					"explanation": {
						"type": "string",
						"description": "Explanation of the answer"
					},
					"title": {
						"type": "string",
						"description": "Title of the question"
					}
				},
				"required": [
					"type",
					"explanation",
					"title"
				],
				"type": "object"
			},
			"LessonQuizz": {
				"properties": {
					"questions": {
						"items": {
							"$ref": "#/components/schemas/LessonQuizzQuestion"
						},
						"type": "array",
						"description": "Questions of the quiz"
					},
					"type": {
						"$ref": "#/components/schemas/IQuizzType",
						"description": "Type of the quiz"
					},
					"lifeNumber": {
						"type": "number",
						"format": "double",
						"description": "Number of life of the quiz"
					}
				},
				"type": "object"
			},
			"LessonNotion": {
				"properties": {
					"exitQuizz": {
						"$ref": "#/components/schemas/LessonQuizz",
						"description": "Exit quiz of the notion"
					},
					"entryQuizz": {
						"$ref": "#/components/schemas/LessonQuizz",
						"description": "Entry quiz of the notion"
					},
					"iconsPreview": {
						"items": {
							"$ref": "#/components/schemas/LessonImages"
						},
						"type": "array",
						"description": "Icons preview of the notion"
					},
					"contents": {
						"items": {
							"$ref": "#/components/schemas/LessonNotionContent"
						},
						"type": "array",
						"description": "Contents of the notion"
					},
					"description": {
						"type": "string",
						"description": "Description of the notion"
					},
					"title": {
						"type": "string",
						"description": "Title of the notion"
					}
				},
				"required": [
					"contents",
					"description",
					"title"
				],
				"type": "object"
			},
			"ILessonLevel": {
				"enum": [
					"beginning",
					"intermediary",
					"expert"
				],
				"type": "string"
			},
			"ILessonPlayMode": {
				"enum": [
					"standard",
					"battle",
					"adaptive"
				],
				"type": "string"
			},
			"Lesson": {
				"properties": {
					"playMode": {
						"$ref": "#/components/schemas/ILessonPlayMode",
						"description": "Playmode of the lesson (defaults to 'standard')"
					},
					"categoryIds": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"description": "IDs of the categories this lesson belongs to"
					},
					"trackIds": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"description": "IDs of the tracks this lesson belongs to"
					},
					"level": {
						"$ref": "#/components/schemas/ILessonLevel",
						"description": "Level of the Lesson"
					},
					"images": {
						"items": {
							"$ref": "#/components/schemas/LessonImages"
						},
						"type": "array",
						"description": "Publicly accessible URLs of the images of the lesson"
					},
					"image": {
						"type": "string",
						"description": "Publicly accessible URL of the image of the lesson"
					},
					"notions": {
						"items": {
							"$ref": "#/components/schemas/LessonNotion"
						},
						"type": "array",
						"description": "Notions of the lesson"
					},
					"status": {
						"$ref": "#/components/schemas/ILessonStatus",
						"description": "Status of the lesson"
					},
					"visibility": {
						"$ref": "#/components/schemas/ILessonVisibility",
						"description": "Visibility of the lesson"
					},
					"summary": {
						"type": "string",
						"description": "Summary of the lesson"
					},
					"title": {
						"type": "string",
						"description": "Title of the lesson"
					},
					"id": {
						"type": "string"
					}
				},
				"required": [
					"status",
					"visibility",
					"summary",
					"title"
				],
				"type": "object"
			},
			"Track": {
				"properties": {
					"title": {
						"type": "string"
					},
					"ownerID": {
						"type": "string"
					},
					"id": {
						"type": "string"
					}
				},
				"required": [
					"ownerID",
					"id"
				],
				"type": "object"
			},
			"UserHistoryDestinationType": {
				"enum": [
					"lesson",
					"tips",
					"flux",
					"manager-user-deactivation",
					"manager-multiple-users-deactivation",
					"memorize",
					"track",
					"ranking",
					"default",
					"merge",
					"author-discussion",
					"discussion-mention",
					"discussion-timeline-comment",
					"discussion-lesson-comment",
					"new-discussion-lesson",
					"new-discussion-coaching",
					"new-discussion-feed",
					"new-discussion-lesson-content",
					"new-discussion-tips",
					"new-discussion-timeline",
					"add-author",
					"invite-user-to-join-platform",
					"send-free-email",
					"added-as-manager",
					"create-milestone",
					"evaluate-milestone",
					"new-lessons",
					"added-to-lesson-session",
					"session-will-start",
					"manager-user-request-reactivation",
					"manager-user-request-password-change"
				],
				"type": "string"
			},
			"mongoose.Types.ObjectId": {
				"type": "string"
			},
			"UserHistoryDestination": {
				"properties": {
					"subType": {
						"type": "string"
					},
					"userGroupId": {
						"$ref": "#/components/schemas/mongoose.Types.ObjectId"
					},
					"destinationId": {
						"$ref": "#/components/schemas/mongoose.Types.ObjectId"
					},
					"type": {
						"$ref": "#/components/schemas/UserHistoryDestinationType"
					}
				},
				"type": "object"
			},
			"UserHistory": {
				"properties": {
					"destination": {
						"allOf": [
							{
								"$ref": "#/components/schemas/UserHistoryDestination"
							}
						],
						"nullable": true
					},
					"creationDate": {
						"type": "string",
						"format": "date-time",
						"nullable": true
					},
					"seen": {
						"type": "boolean"
					},
					"body": {
						"type": "string"
					},
					"title": {
						"type": "string"
					},
					"id": {
						"type": "string"
					}
				},
				"required": [
					"destination",
					"creationDate",
					"body",
					"title",
					"id"
				],
				"type": "object"
			}
		},
		"securitySchemes": {
			"jwt": {
				"description": "Jwt bearer authentication",
				"type": "http",
				"scheme": "bearer",
				"bearerFormat": "JWT"
			}
		}
	},
	"info": {
		"title": "Beedeez developers API",
		"version": "1.0",
		"description": "Beedeez developers API",
		"contact": {
			"name": "dev@beedeez.com"
		}
	},
	"openapi": "3.0.0",
	"paths": {
		"/v1/active-lessons": {
			"get": {
				"operationId": "GetActiveLessons",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/ActiveLesson"
									},
									"type": "array"
								}
							}
						}
					},
					"400": {
						"description": "Invalid pagination parameters",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get all `ActiveLessons` for the owner with pagination and optional date filtering.",
				"summary": "Get all ActiveLessons",
				"tags": [
					"Activelessons"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "query",
						"name": "updatedSince",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/users/{USER_ID}/active-lessons": {
			"get": {
				"operationId": "GetActiveLessonsForUser",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/ActiveLesson"
									},
									"type": "array"
								}
							}
						}
					}
				},
				"description": "Get `ActiveLessons` for the User in URL params",
				"summary": "Get ActiveLessons for a User",
				"tags": [
					"Activelessons"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "USER_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/lessons/{LESSON_ID}/active-lessons": {
			"get": {
				"operationId": "GetActiveLessonsForLesson",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/ActiveLesson"
									},
									"type": "array"
								}
							}
						}
					}
				},
				"description": "Get `ActiveLessons` for the Lesson in URL params",
				"summary": "Get ActiveLessons for a Lesson",
				"tags": [
					"Activelessons"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "LESSON_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/users/{USER_ID}/lessons/{LESSON_ID}/active-lessons": {
			"get": {
				"operationId": "GetActiveLessonsForUserAndLesson",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/ActiveLesson"
									},
									"type": "array"
								}
							}
						}
					}
				},
				"description": "Get `ActiveLessons` for the User and Lesson in URL params",
				"summary": "Get ActiveLessons for a User on a Lesson",
				"tags": [
					"Activelessons"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "USER_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "path",
						"name": "LESSON_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/users/{USER_ID}/lessons/{LESSON_ID}/answers": {
			"get": {
				"operationId": "GetAnswersForUserOnLesson",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/Answer"
									},
									"type": "array"
								}
							}
						}
					},
					"400": {
						"description": "Invalid query parameters",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get the per-question `Answers` for the given `USER_ID` on the given `LESSON_ID`.\n\nEach item is a single answer to a single question, flattened from the\nunderlying ActiveLesson record. Includes the question title for visibility.\nUse `includeArchived` to also include answers from previous attempts and\n`includeEntryQuiz` to include entry-quiz answers in addition to the exit quiz.",
				"summary": "Get Answers for a User on a Lesson",
				"tags": [
					"Answers"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "USER_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "path",
						"name": "LESSON_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "includeArchived",
						"required": false,
						"schema": {
							"type": "boolean"
						}
					},
					{
						"in": "query",
						"name": "includeEntryQuiz",
						"required": false,
						"schema": {
							"type": "boolean"
						}
					}
				]
			}
		},
		"/v1/lessons/{LESSON_ID}/answers": {
			"get": {
				"operationId": "GetAnswersForLesson",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/Answer"
									},
									"type": "array"
								}
							}
						}
					},
					"400": {
						"description": "Invalid query parameters",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get the per-question `Answers` for the given `LESSON_ID` across all users.\n\nPagination is applied at the underlying ActiveLesson document level: each\npage covers `pageSize` active-lesson documents and may flatten to many more\nanswer rows in the response. Use `updatedSince` for incremental sync.",
				"summary": "Get Answers for a Lesson",
				"tags": [
					"Answers"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "LESSON_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "updatedSince",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "includeArchived",
						"required": false,
						"schema": {
							"type": "boolean"
						}
					},
					{
						"in": "query",
						"name": "includeEntryQuiz",
						"required": false,
						"schema": {
							"type": "boolean"
						}
					}
				]
			}
		},
		"/v1/users/{USER_ID}/answers": {
			"get": {
				"operationId": "GetAnswersForUser",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/Answer"
									},
									"type": "array"
								}
							}
						}
					},
					"400": {
						"description": "Invalid query parameters",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get the per-question `Answers` for the given `USER_ID` across all lessons.\n\nPagination is applied at the underlying ActiveLesson document level: each\npage covers `pageSize` active-lesson documents and may flatten to many more\nanswer rows in the response. Use `updatedSince` for incremental sync.",
				"summary": "Get Answers for a User",
				"tags": [
					"Answers"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "USER_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "updatedSince",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "includeArchived",
						"required": false,
						"schema": {
							"type": "boolean"
						}
					},
					{
						"in": "query",
						"name": "includeEntryQuiz",
						"required": false,
						"schema": {
							"type": "boolean"
						}
					}
				]
			}
		},
		"/v1/auth/logout-by-id": {
			"post": {
				"operationId": "LogoutUser",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {}
							}
						}
					},
					"404": {
						"description": "User not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"500": {
						"description": "Error deleting the associated token",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Logout a user by the ID given in the body.",
				"summary": "Logout a user by the ID given in the body",
				"tags": [
					"Authentification"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/LogoutByIdBody"
							}
						}
					}
				}
			}
		},
		"/v1/callbacks/update-user-lesson-status/{CALLBACK_TOKEN}": {
			"post": {
				"operationId": "UpdateActiveLessonStatusForUser",
				"responses": {
					"200": {
						"description": "OK - Successfull callback operation",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ActiveLessonCallback"
								}
							}
						}
					},
					"403": {
						"description": "Access denied",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "Not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Update status of a lesson for a specific user.\nThe full url can be obtained as a callback url under certain circumstances, including `CALLBACK_TOKEN`.",
				"summary": "Update User Lesson status",
				"tags": [
					"Callbacks"
				],
				"security": [],
				"parameters": [
					{
						"in": "path",
						"name": "CALLBACK_TOKEN",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UpdateActiveLessonBody"
							}
						}
					}
				}
			},
			"get": {
				"operationId": "UpdateActiveLessonStatusForUserGet",
				"responses": {
					"200": {
						"description": "OK - Successfull callback operation",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ActiveLessonCallback"
								}
							}
						}
					},
					"403": {
						"description": "Access denied",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "Not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Update status of a lesson for a specific user (using GET method).\nThe full url can be obtained as a callback url under certain circumstances, including `CALLBACK_TOKEN`.",
				"summary": "Update User Lesson status - GET",
				"tags": [
					"Callbacks"
				],
				"security": [],
				"parameters": [
					{
						"in": "path",
						"name": "CALLBACK_TOKEN",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/categories": {
			"get": {
				"operationId": "GetCategoriesForOwnerID",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/Category"
									},
									"type": "array"
								}
							}
						}
					}
				},
				"description": "Get all categories for the account present in the jwt access token generated.",
				"summary": "Get Categories",
				"tags": [
					"Category"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": []
			}
		},
		"/v1/groups": {
			"get": {
				"operationId": "GetGroupsForCurrentOwner",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/UserGroup"
									},
									"type": "array"
								}
							}
						}
					},
					"400": {
						"description": "Invalid parameters",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get all `Groups` for the current owner.",
				"summary": "Get Groups for Current Owner",
				"tags": [
					"Groups"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "search",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "includeDisabled",
						"required": false,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/groups/name/{uniqueName}/users": {
			"get": {
				"operationId": "GetUsersByGroupUniqueName",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/User"
									},
									"type": "array"
								}
							}
						}
					},
					"400": {
						"description": "Invalid unique name",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "Group not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get `Users` for a specific group by group unique name.",
				"summary": "Get Users by Group Unique Name",
				"tags": [
					"Groups"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "uniqueName",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "search",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "includeDisabled",
						"required": false,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/groups/name/{uniqueName}": {
			"get": {
				"operationId": "GetGroupByUniqueName",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserGroup"
								}
							}
						}
					},
					"400": {
						"description": "Invalid unique name",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "Group not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get `Group` by unique name.",
				"summary": "Get Group by Unique Name",
				"tags": [
					"Groups"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "uniqueName",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/groups/{groupId}/users": {
			"get": {
				"operationId": "GetUsersByGroupId",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/User"
									},
									"type": "array"
								}
							}
						}
					},
					"400": {
						"description": "Invalid group ID",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "Group not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get `Users` for a specific group by group ID.",
				"summary": "Get Users by Group ID",
				"tags": [
					"Groups"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "groupId",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "search",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "includeDisabled",
						"required": false,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/groups/{groupId}": {
			"get": {
				"operationId": "GetGroupById",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserGroup"
								}
							}
						}
					},
					"400": {
						"description": "Invalid group ID",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "Group not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get `Group` by ID.",
				"summary": "Get Group by ID",
				"tags": [
					"Groups"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "groupId",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/token": {
			"post": {
				"operationId": "IssueTokenForApiCredentials",
				"responses": {
					"200": {
						"description": "OK - The jwt token to be included in the headers of the following requests.",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/TokenResponse"
								}
							}
						}
					}
				},
				"description": "Exchange an `app_secret` for a json web token to authenticate further call.",
				"summary": "Issue JWT Token",
				"tags": [
					"Token"
				],
				"security": [],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ExchangeCredentialsForTokenBody"
							}
						}
					}
				}
			}
		},
		"/v1/token/refresh": {
			"post": {
				"operationId": "RefreshToken",
				"responses": {
					"200": {
						"description": "OK - The jwt token to be included in the headers of the following requests.",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/TokenResponse"
								}
							}
						}
					}
				},
				"description": "Refresh an `access_token` by using your `refresh_token`.",
				"summary": "Refresh JWT Token",
				"tags": [
					"Token"
				],
				"security": [],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/refreshTokenBody"
							}
						}
					}
				}
			}
		},
		"/v1/lesson-session": {
			"get": {
				"operationId": "GetLessonSessions",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/LessonSession"
									},
									"type": "array"
								}
							}
						}
					}
				},
				"description": "Get `LessonSessions` for the current account.",
				"summary": "Get LessonSessions",
				"tags": [
					"Lesson Session"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": []
			},
			"post": {
				"operationId": "CreateLessonSession",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/LessonSession"
								}
							}
						}
					},
					"400": {
						"description": "Invalid payload",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Create a `LessonSession` with the given parameters",
				"summary": "Create LessonSession",
				"tags": [
					"Lesson Session"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/LessonSessionBody"
							}
						}
					}
				}
			}
		},
		"/v1/lesson-session/{LESSON_ID}": {
			"get": {
				"operationId": "GetLessonSession",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/LessonSession"
								}
							}
						}
					},
					"400": {
						"description": "Invalid payload",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"403": {
						"description": "Lesson Session not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get a `LessonSession` by it's ID",
				"summary": "Get LessonSession",
				"tags": [
					"Lesson Session"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "LESSON_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/lesson-session/{ID}": {
			"put": {
				"operationId": "UpdateLessonSession",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/LessonSession"
								}
							}
						}
					},
					"400": {
						"description": "Invalid payload",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "Lesson Session not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Update a `LessonSession` with the given parameters",
				"summary": "Update LessonSession",
				"tags": [
					"Lesson Session"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Partial_LessonSessionBody_"
							}
						}
					}
				}
			}
		},
		"/v1/lesson-session/{LESSON_SESSION_ID}/register/{USER_ID}": {
			"post": {
				"operationId": "RegisterLessonSession",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/LessonSession"
								}
							}
						}
					},
					"400": {
						"description": "Invalid payload",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "Lesson Session not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Register the `userID` to the provided `LESSON_SESSION_ID`",
				"summary": "Register user to LessonSession",
				"tags": [
					"Lesson Session"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "LESSON_SESSION_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "path",
						"name": "USER_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/lesson-session/{LESSON_SESSION_ID}/unregister/{USER_ID}": {
			"delete": {
				"operationId": "UnregisterLessonSession",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/LessonSession"
								}
							}
						}
					},
					"400": {
						"description": "Invalid payload",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "Lesson Session not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Unregister the `userID` to the provided `LESSON_SESSION_ID`",
				"summary": "Unregister user to LessonSession",
				"tags": [
					"Lesson Session"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "LESSON_SESSION_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "path",
						"name": "USER_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/lesson-session/{USER_ID}/registrations": {
			"get": {
				"operationId": "GetUserRegisteredLessonSessions",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/LessonSession"
									},
									"type": "array"
								}
							}
						}
					},
					"400": {
						"description": "Invalid payload",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get a list of `LessonSessions` where the user is registered",
				"summary": "Get Registered Users",
				"tags": [
					"Lesson Session"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "USER_ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/lessons": {
			"get": {
				"operationId": "GetActiveLessonsForOwner",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/Lesson"
									},
									"type": "array"
								}
							}
						}
					},
					"400": {
						"description": "Invalid pagination parameters",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get `Lessons` for the account present in the jwt access token generated.",
				"summary": "Get Lessons",
				"tags": [
					"Lesson"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/lessons/{ID}": {
			"get": {
				"operationId": "GetLessonsByID",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Lesson"
								}
							}
						}
					},
					"404": {
						"description": "Lesson not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get a `Lesson` by it's ID",
				"summary": "Get Lesson",
				"tags": [
					"Lesson"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/lessons/{ID}/ranking": {
			"get": {
				"operationId": "GetLessonRankingByID",
				"responses": {
					"200": {
						"description": "SuccessResponse description",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					}
				},
				"description": "Get a `Lesson` ranking by it's ID",
				"summary": "Get Lesson ranking",
				"tags": [
					"Lesson"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "ID",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/lessons/create": {
			"post": {
				"operationId": "CreateLesson",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Lesson"
								}
							}
						}
					}
				},
				"description": "Create a `Lesson`",
				"summary": "Create Lesson",
				"tags": [
					"Lesson"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Lesson"
							}
						}
					}
				}
			}
		},
		"/v1/tracks": {
			"get": {
				"operationId": "GetTracksForOwnerID",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/Track"
									},
									"type": "array"
								}
							}
						}
					}
				},
				"description": "Get all tracks for the account present in the jwt access token generated.",
				"summary": "Get Tracks",
				"tags": [
					"Track"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": []
			}
		},
		"/v1/users": {
			"get": {
				"operationId": "GetUsers",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/User"
									},
									"type": "array"
								}
							}
						}
					}
				},
				"description": "Get `Users` for the account present in the jwt access token generated.",
				"summary": "Get Users",
				"tags": [
					"Users"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "search",
						"required": false,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/users/email/{email}": {
			"get": {
				"operationId": "GetUserByEmail",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/User"
								}
							}
						}
					},
					"400": {
						"description": "Invalid email",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "User not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get `User` by email.",
				"summary": "Get User by email",
				"tags": [
					"Users"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "email",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/users/externalId/{externalId}": {
			"get": {
				"operationId": "GetUserByExternalId",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/User"
								}
							}
						}
					},
					"400": {
						"description": "Invalid externalId",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "User not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get `User` by external ID.",
				"summary": "Get User by external ID",
				"tags": [
					"Users"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "externalId",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/users/{userId}/notifications": {
			"get": {
				"operationId": "GetUserNotifications",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/UserHistory"
									},
									"type": "array"
								}
							}
						}
					}
				},
				"description": "Get User `Notifications` given a user ID.",
				"summary": "Get User Notifications",
				"tags": [
					"Users"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "userId",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageSize",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "pageNumber",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "since",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "seen",
						"required": false,
						"schema": {
							"type": "string"
						}
					},
					{
						"in": "query",
						"name": "includeBackOffice",
						"required": false,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/v1/users/{userId}/groups": {
			"get": {
				"operationId": "GetUserGroups",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/UserGroup"
									},
									"type": "array"
								}
							}
						}
					},
					"400": {
						"description": "Invalid user ID",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					},
					"404": {
						"description": "User not found",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DomainErrorModel"
								}
							}
						}
					}
				},
				"description": "Get `Groups` for a specific user.",
				"summary": "Get User Groups",
				"tags": [
					"Users"
				],
				"security": [
					{
						"jwt": [
							"admin"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "userId",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		}
	},
	"servers": [
		{
			"url": "https://api.developers.beedeez.com",
			"description": "production server"
		}
	]
}