Skip to content
Snippets Groups Projects
Commit 10bca5a3 authored by Martin Juhás's avatar Martin Juhás
Browse files

Merge branch 'citadel-updates' into 'citadel'

Citadel updates

See merge request inject/inject-docs!61
parents bbbaccce bed20acb
No related branches found
No related tags found
No related merge requests found
Showing with 1359 additions and 347 deletions
# mkdocs documentation
site/
docs/tech/architecture/definitions.md
docs/tech/architecture/CHANGELOG.md
docs/tech/api/openapi.yml
# python
.python-version
......
......@@ -5,7 +5,6 @@ variables:
stages:
- setup
- commit
- build
- deploy
......@@ -18,27 +17,7 @@ setup:
before_script:
- apt-get update
script:
- ./utilities.sh # Running the script to setup directories and copy files
artifacts:
paths:
- docs/tech
- files-from-repos
commit_zip:
stage: commit
when: manual
allow_failure: true
script:
- git config --global user.email "ci@gitlab.com"
- git config --global user.name "CI Bot"
- git add files-from-repos/intro-definition.zip
- git add files-from-repos/showcase-definition.zip
- git commit -m "Add automatically deployment-files.zip"
- git push https://oauth2:${GITLAB_TOKEN}@gitlab.fi.muni.cz/inject/inject-docs.git HEAD:"$CI_PIPELINE_ID" -o ci.skip
dependencies:
- setup
only:
- citadel
- echo "updating"
build:
stage: build
......
......@@ -83,7 +83,6 @@ However, there is an alternative option available: you can prepare content direc
If the corespondent is expected to react a certain way to certain situations, use templates.
These give instructor pre-scripted email choices
n.
??? "Editor"
The INJECT Exercise Platform now includes a new tool - the Editor - that makes exercise creation more accessible and guided. While it's still in development, it offers a user-friendly alternative to manual YAML editing.
......
......@@ -25,79 +25,89 @@ As we indicated at the beginning of the section describing [Learning objectives]
- The second type: **process-technical exercises** - based on an attempt to simulate the course of a process. The main input is e.g. a document describing the response to incidents, etc. injects here are primarily via emails, it is possible to use abstraction of specific tools or measures and at the end there is a reflexive part containing questionnaires or open questions. **Beware, if you don't have the actual organization and process as a basis**, you will be in a very difficult situation as a designer. In fact, if the organisation does not exist, you have to create it completely - a task that exceeds the contribution of TTX in its complexity.
??? "How to specify a strategic decision-making exercise"
### What do these exercises look like off the platform?
Trainees usually receive a paper assignment where the individual injects are presented, structured into phases or blocks.
The injects are most often in the form of text, but sometimes pictures are also added. Each inject is accompanied by questions. Depending on the type of target group, trainees work either in small teams or all together. Often a facilitator is involved.
### Modes of presentation in the platform:
- It is recommended to divide trainees into smaller teams (3-5 members). It is best if everyone has a laptop with access to the platform, and they designate that only one of them will interact with it. Alternatively, they will divide their roles in some way.
- If a screen or larger screen is available, the exercise can be presented to a larger group (the discussion will be influenced by the dominant members). It is useful to have a facilitator.
- If the trainees cannot control the platform, one of the instructors can do so.
- The exercise can theoretically be run for one trainee. However, without discussion it becomes more of an interactive training. Each team can go at its own speed
### How to use different types of injects
- Inject type: email - not used in this type of exercise.
- Inject type: execise information - suitable for instructions and outlining the general context at the beginning of the exercise.
- Injects of the type: document - strategic briefs, reports, etc. Consider sending before the exercise.
- Inject type: questionnaire / scale - recommended.
- Decision point - recommended.
- Inject type: free form - the main variant of inject for this type of exercise.
- Media injects - suitable for adding context or as a direct part of the script.
- Inject type: An off-platform activity - a spice up of the scenario, use is not necessary.
- Hint - as needed.
### Use of tools
- No tools are necessary for this type of exercise. If we want to use them, we recommend them for specific processes or actions that you want to highlight for the trainees.
- Examples: The tool can substitute a supervisor's decisions such as issuing a press release, conducting a legal analysis, contacting the police, etc.
### Possible scenario structures:
#### A) Coherent story - individual injects are interconnected. Everything relates to one storyline that unfolds gradually. Example:
- The exercise starts with a document type inject - with a report from a national authority describing the current serious situation. This is followed by a combination of inject type:
- Free form - activities: propose, argue, summarize ...
– Scale/questionnaire - evaluate, select, determine
– The exercise is complemented first by injects in the social media channel that express the public's perception of the situation
– The following is also article in major medium.
- The exercise proceeds to a serious decision - decision point type inject - we have an alternative conditional inject for each of the variants.
- Adding several injects to reflect on the actions taken (free form or questionnaire).
- Exercise is otherwise more or less linear, hints do not need to be prepared in advance.
#### B) A sets of situations
The trainees deals with different situations, which are not connected and are only briefly indicated, inspiration: https://x.com/badthingsdaily?lang=cs
- The exercise starts with a general introduction in exercise information.
- The first block follows with a description of the situation within the free form inject and a request for a description of the possible response.
- Followed by 2-3 interactive injects.
- The exercise continues in this way with a few more, tightened or slightly altered blocks.
- At the end there is space for more general reflection.
- The exercise can be improved by conditioning some of the responses in the free form injects.
### What do these exercises look like off the platform?
The trainees usually receive a paper assignment where the individual injects are presented, structured into phases or blocks.
The injects are most often in the form of text, but sometimes pictures are also added. Each inject is accompanied by questions. Depending on the type of target group, trainees work either in small teams or all together. Often a facilitator is involved.
### Modes of presentation in the platform:
- It is recommended to divide trainees into smaller teams (3-5 members). It is best if everyone has a laptop with access to the platform, and they designate that only one of them will interact with it. Alternatively, they will divide their roles in some way
- If a screen or larger screen is available, the exercise can be presented to a larger group (the discussion will be influenced by the dominant members). It is useful to have a facilitator
- If the trainees cannot control the platform, one of the instructors can do so
- The exercise can theoretically be run for one trainee. However, without discussion it becomes more of an interactive training. Each team can go at its own speed
### How to use different types of injects
- Inject type: email - not used in this type of exercise
- Inject type: execise information - suitable for instructions and outlining the general context at the beginning of the exercise
- Injects of the type: document - strategic briefs, reports, etc. Consider sending before the exercise
- Inject type: questionnaire / scale - recommended
- Decision point - recommended
- Inject type: free form - the main variant of inject for this type of exercise
- Media injects - suitable for adding context or as a direct part of the script
- Inject type: An off-platform activity - a spice up of the scenario, use is not necessary
- Hint - as needed
### Use of tools
No tools are necessary for this type of exercise. If we want to use them, we recommend them for specific processes or actions that you want to highlight for the trainees.
Examples: The tool can substitute a supervisor's decisions such as issuing a press release, conducting a legal analysis, contacting the police, etc.
### Possible scenario structures:
#### A) Coherent story - individual injects are interconnected
Everything relates to one storyline that unfolds gradually. Example:
- The exercise starts with a document type inject - with a report from a national authority describing the current serious situation. This is followed by a combination of inject type:
- Free form - activities: propose, argue, summarize...
- Scale/questionnaire - evaluate, select, determine
- The exercise is complemented first by injects in the social media channel that express the public's perception of the situation
- The following is also article in major medium
- The exercise proceeds to a serious decision - decision point type inject - we have an alternative conditional inject for each of the variants
- Adding several injects to reflect on the actions taken (free form or questionnaire)
- Exercise is otherwise more or less linear, hints do not need to be prepared in advance
#### B) A sets of situations
The trainees deals with different situations, which are not connected and are only briefly indicated
- The exercise starts with a general introduction in exercise information
- The first block follows with a description of the situation within the free form inject and a request for a description of the possible response
- Followed by 2-3 interactive injects
- The exercise continues in this way with a few more, tightened or slightly altered blocks
- At the end there is space for more general reflection
- The exercise can be improved by conditioning some of the responses in the free form injects
??? "How to specify a process-technical exercise"
### What do these exercises look like on the platform?
Trainees usually receive a paper assignment where individual injects are presented, structured into phases or blocks. The injects are most often in the form of text, but sometimes pictures are also added. Each inject is accompanied by questions. Trainees work in teams. It is assumed that the exercise relates to a process with which the trainees are familiar.
### Modes of presentation in the platform:
- It is recommended to divide trainees into smaller teams (3-5 members). It is best if each person has a laptop with access to the platform, and designates that only one of them will interact with it.
- The exercise can be completed even if only one of the trainees has a computer.
### How to use different types of injects
- Inject type: Email - the main type of inject for this type of exercise.
- Inject type: Execise information - intro inject, identity, tasks, context etc.
- Inject type: Document - politics, structures, manuals, guides
- Inject type: questionnaire / scale - reflection, propability
- Decision point - usually not used (decisions are made in an email communication)
- Inject type: free form - gathering opinions or more speicific reflections.
- Medial injects - context, impact of the actions
- Inject type: Hint - response to wrong action, action that wass missed or stuck in the exercise.
### Use of tools
- For this type of exercise, the tools are absolutely essential. They usually try to mimic real tools that would be available to the trainee in a real situation and that could be used to resolve the incident. Most often these will be tools that are not too complex, such as IP blocking, network traffic dump, logging service logging, or creating a backup.
### Possible scenario structure:
- Exercises most often start with an introductory inject in exercise information, which includes a description of the organisation concerned, the tasks of the exercisers and, if necessary, important contact details or documents to work with.
- The following 2 options are available, either the trainees will learn about the problem or incident, for example through a notification they receive by email, or they can be tasked to be proactive and use, for example, a system scanning tool to detect a problem in the system (a very technical exercise).
- The tools that the trainee is tasked with using to resolve the incident or support the process play a significant role here. However, the whole scenario does not revolve only around the tools, but combines extensively with elements from the strategic decision-making exercises, where trainees are also guided through questionnaires, either in the form of scales or free form.
- Many processes are also heavily based on communication with actors in the organization, which implies the possibility of abundantly involving communication via email with fictional characters (careful reduces automation and keeps the instructor more busy).
- The exercise is very much based on the actions of the trainee and only if they perform the anticipated actions can they move towards the goal of resolving the incident.
- Very often, hints are implemented to prevent the team from getting completely
- In the end, send reflective questionnaires
### What do these exercises look like on the platform?
Trainees usually receive a paper assignment where individual injects are presented, structured into phases or blocks. The injects are most often in the form of text, but sometimes pictures are also added. Each inject is accompanied by questions. Trainees work in teams. It is assumed that the exercise relates to a process with which the trainees are familiar.
### Modes of presentation in the platform:
- It is recommended to divide trainees into smaller teams (3-5 members). It is best if each person has a laptop with access to the platform, and designates that only one of them will interact with it.
- The exercise can be completed even if only one of the trainees has a computer.
### How to use different types of injects
- Inject type: Email - the main type of inject for this type of exercise.
- Inject type: Execise information - intro inject, identity, tasks, context etc.
- Inject type: Document - politics, structures, manuals, guides
- Inject type: questionnaire / scale - reflection, propability
- Decision point - usually not used (decisions are made in an email communication)
- Inject type: free form - gathering opinions or more speicific reflections.
- Medial injects - context, impact of the actions
- Inject type: Hint - response to wrong action, action that wass missed or stuck in the exercise.
### Use of tools
- For this type of exercise, the tools are absolutely essential. They usually try to mimic real tools that would be available to the trainee in a real situation and that could be used to resolve the incident. Most often these will be tools that are not too complex, such as IP blocking, network traffic dump, logging service logging, or creating a backup.
### Possible scenario structure:
- Exercises most often start with an introductory inject in exercise information, which includes a description of the organisation concerned, the tasks of the exercisers and, if necessary, important contact details or documents to work with.
- The following 2 options are available, either the trainees will learn about the problem or incident, for example through a notification they receive by email, or they can be tasked to be proactive and use, for example, a system scanning tool to detect a problem in the system (a very technical exercise).
- The tools that the trainee is tasked with using to resolve the incident or support the process play a significant role here. However, the whole scenario does not revolve only around the tools, but combines extensively with elements from the strategic decision-making exercises, where trainees are also guided through questionnaires, either in the form of scales or free form.
- Many processes are also heavily based on communication with actors in the organization, which implies the possibility of abundantly involving communication via email with fictional characters (careful reduces automation and keeps the instructor more busy).
- The exercise is very much based on the actions of the trainee and only if they perform the anticipated actions can they move towards the goal of resolving the incident.
- Very often, hints are implemented to prevent the team from getting completely
- In the end, send reflective questionnaires
<div class="navigation" markdown>
[&larr; Tools](../specify/tools.md){ .md-button }
......
This diff is collapsed.
openapi: 3.0.0
info:
title: Inject API
version: 0.4.0
servers:
- url: http://api.example.com/inject/api/v1
description: Example API URL
paths:
/version:
get:
tags:
- Version
summary: Retrieve the backend and definition versions
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
version:
type: string
description: Backend version
definition_version:
type: string
description: Definition version supported by the backend
required:
- version
- definition_version
'500':
$ref: "#/components/responses/Error"
/user/create-users:
post:
tags:
- user
summary: Upload a list of users in CSV format
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
required:
- file
responses:
'201':
$ref: "#/components/responses/Success"
'500':
$ref: "#/components/responses/Error"
/export_import:
get:
tags:
- export_import
summary: Export database
description: ""
responses:
'200':
description: Exported file
content:
application/zip:
schema:
type: string
format: binary
'500':
$ref: "#/components/responses/Error"
post:
tags:
- export_import
summary: Import database
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
required:
- file
responses:
'200':
$ref: "#/components/responses/Success"
'500':
$ref: "#/components/responses/Error"
/exercise_definition/upload-definition:
post:
tags:
- upload_definition
description: Upload a definition
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
name:
type: string
description: Name of the definition
file:
type: string
format: binary
description: Definition file
required:
- name
- file
responses:
'200':
$ref: "#/components/responses/Success"
'500':
$ref: "#/components/responses/Error"
/exercise_definition/validate:
post:
tags:
- validate-definition
description: Validate the uploaded definition
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: Definition file
required:
- file
responses:
'200':
$ref: "#/components/responses/Success"
'500':
$ref: "#/components/responses/Error"
/running_exercise/get_exercise_logs/{exercise_id}:
get:
tags:
- get_exercise_logs
description: Retrieve logs for the specific exercise
parameters:
- name: anonymize
in: query
description: Set to true for user anonymization otherwise leave empty
schema:
type: boolean
allowEmptyValue: true
- name: exercise_id
in: path
description: Id of the exercise
required: true
schema:
type: integer
responses:
'200':
description: Exported file
content:
application/zip:
schema:
type: string
format: binary
'500':
$ref: "#/components/responses/Error"
/running_exercise/upload/{team_id}/:
post:
tags:
- team_upload_file
description: Upload a file as the specified team
parameters:
- name: team_id
in: path
description: Team id
required: true
schema:
type: integer
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: File to upload
required:
- file
responses:
'200':
$ref: "#/components/responses/Success"
'500':
$ref: "#/components/responses/Error"
/running_exercise/{team_id}/{file_id}/:
get:
tags:
- team_download_file
parameters:
- name: team_id
in: path
required: true
schema:
type: integer
- name: file_id
in: path
required: true
schema:
type: string
responses:
'200':
description: File
content:
application/*:
schema:
type: string
format: binary
text/*:
schema:
type: string
format: binary
image/*:
schema:
type: string
format: binary
'500':
$ref: "#/components/responses/Error"
/auth/login/:
post:
tags:
- auth
description: Login a user based on the credentials
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
username:
type: string
password:
type: string
required:
- username
- password
responses:
'200':
description: Login successful
$ref: "#/components/responses/AuthResponse"
'403':
$ref: "#/components/responses/Error"
/auth/logout/:
post:
tags:
- auth
description: Logout a user
responses:
'200':
$ref: "#/components/responses/AuthResponse"
'500':
$ref: "#/components/responses/Error"
/auth/session:
get:
tags:
- auth
description: Check whether the session is still valid
responses:
'200':
$ref: "#/components/responses/AuthResponse"
'500':
$ref: "#/components/responses/Error"
components:
schemas:
JsonResponse:
type: object
properties:
status:
type: string
enum:
- ok
- error
detail:
type: string
description: Message with extra details
required:
- status
- detail
AuthResponse:
type: object
properties:
sessionid:
type: string
nullable: true
description: session id
required:
- sessionid
responses:
Success:
description: Operation successful
content:
application/json:
schema:
$ref: "#/components/schemas/JsonResponse"
Error:
description: "Error"
content:
application/json:
schema:
$ref: "#/components/schemas/JsonResponse"
AuthResponse:
description: "Response to auth endpoints"
content:
application/json:
schema:
$ref: "#/components/schemas/AuthResponse"
## 0.18.1
Add note to questions. inject/backend#373
### questionnaires.yml
- add optional field `note` to question
## 0.18.0
Add option to tools to signify that they don't require an input. inject/backend#194
Change the type of `default_response` field. inject/backend#368
### tools.yml
- add optional field `requires_input` to tool
- change the type of `default_response` to content
## 0.17.2
Fixed embedding in email templates
No format changes
## 0.17.1
Allow embedding images and videos. inject/backend#359
All `content` type fields now allow for embedding images/audio/video by using special syntax.
See readme for more information.
## 0.17.0
Add support for markdown in questionnaires. inject/backend#361
Add missing field from tools. inject/backend#297
### questionnaires.yml
- remove field `description` from questionnaire
- add field `content` to questionnaire
### tools.yml
- add field `category` to tool
## 0.16.0
More definition enhancements. inject/backend#357
### config.yml
- add field `target_audience`
- add field `prerequisites`
### objectives.yml
- add field `order` to objectives
- add field `milestones` to activities
### milestones.yml
- remove field `activity`
### email.yml
- add field `subject` to email templates
## 0.15.2
Allow exercise designers to add more information to the definition. inject/backend#353
### config.yml
- add field `description`
### objectives.yml
- add field `description` to both objectives and activities
### channels.yml
- add field `display_name`
- add field `description`
### milestones.yml
- add field `display_name`
- add field `description`
- add field `tags`
### roles.yml
- add field `display_name`
- add field `description`
### questionnaires.yml
- add field `description` to questionnaire
## 0.15.1
Add confirmation button to info alternatives. inject/backend#351
### injects.yml
- add field `confirmation` to info alternatives
## 0.15.0
Allow specifying open-ended questions in questionnaires. inject/backend#340
### questionnaires.yml
- add field `type` to questions
- add field `related_milestones` to `free-form` type questions
- add field `multiline` to `free-form` type questions
## 0.14.0
Allow multiple info channels in a definition. #336
### injects.yml
- add field `target` that specifies info channel for the info injects
### channels.yml
- allow occurrence of multiple `info` channels
## 0.13.0
Enabled a more fine-grained control over milestone modifications for
scale-based questions. #315
### questionnaires.yml
- remove field `control` in question objects
- added field `controls` in question objects,
which is a mapping of `choice number` to `control`.
See [readme](README.md#questionnairesyml) for more details.
## 0.12.1
Enable specification of `roles` in `email` type injects.
### injects.yml
- allow specifying `roles` in control blocks inside `email` type injects
## 0.12.0
Replace `text` field by `content` in `Questionnaire` questions.
From now, the questions of questionnaires can be formatted via `content`. #251
### questionnaires.yml
- remove field `text` of questions
- add field `content` to questions
## 0.11.0
Change the behavior of `delay` on injects.
Whenever an alternative is delayed, the condition is now checked throughout the duration.
If the condition becomes false, the inject is cancelled and a new alternative can be selected. #266
### injects.yml
- change behavior of `delay` field
## 0.10.0
Change the behavior of `info` alternatives.
When an alternative contains no `content`, it will not create an action log. #264
### injects.yml
- change behavior of `content` field in `info` injects
## 0.9.1
Add option to specify initial state for milestones. #263
### milestones.yml
- add optional field `initial_state`
## 0.9.0
Removed manual injects. #228
All injects are now considered to be **automatic injects**.
### injects.yml
- remove field `auto`
## 0.8.0
Add a new required concept called `learning objectives`.
This concept _must_ be included in all exercise definition. #170
### objectives.yml
- added new file
### milestones.yml
- add field `activity`
## 0.7.0
Add simple questionnaires. #165
### channels.yml
- add new channel type `form`
### questionnaires.yml
- added new file
## 0.6.1
Add overlay to injects. #153
### injects.yml
- add field `overlay` to `info` and `email` injects
## 0.6.0
Added a new concept called `channels` #151. This concept is saved in a new `channels.yml` file.
See [readme](README.md#channelsyml) for details.
### config.yml
- remove `enable_email` field
- remove `team_visible_milestones` field, team visible milestones can now be specified without this flag
### channels.yml
- added this new required file
### injects.yml
- remove field `hidden`
- rename field `injects` to `alternatives`
- add field `type` to inject
- specify new types of alternatives, see [readme](README.md#alternatives-_info_)
### tools.yml
- remove old `content`, `content_path`, `file_name` fields
- remove old `milestone_condition`, `activate_milestone`, `deactivate_milestone`, `roles` fields
- add new fields `content` and `control`, see [readme](README.md#common-definitions) for details
### email.yml
- remove `activate_milestone`, `deactivate_milestone` fields from email address
- add `control` field to email address
- remove old `content`, `content_path`, `file_name` templates from email templates
- remove `activate_milestone`, `deactivate_milestone` fields from templates
- add new fields `content` and `control` to email templates,
see [readme](README.md#common-definitions) for details
## 0.5.1
Allow using directories of files instead of single YAML files inside the definition #128
## 0.5.0
### injects.yml
- add inject field `subject`
## 0.4.1
### config.yml
- remove `team_file_upload` field, the feature is now always enabled
- remove `custom_team_names` field, team names have been removed from the definition, it is now
a parameter when creating an exercise
- remove `team_count` field, it is now a parameter when creating an exercise
### teams.yml
- temporarily removed from the definition
## 0.4.0
Introduce simplified syntax for `activate_milestone` and `deactivate_milestone`,
which replaced the old field `reach_milestone`. #98
Instead of the old syntax from `reach_milestone` reminding logical condition,
the new fields `(de)activate_milestone` have a simple enumeration of milestones,
which could be separated by a comma, space, or comma followed by space.
### injects.yml
- inject field `reach_milestone` is replaced by fields `activate_milestone` and `deactivate_milestone`
### tools.yml
- response field `reach_milestone` is replaced by fields `activate_milestone` and `deactivate_milestone`
### email.yml
- email and template field `reach_milestone` is replaced by fields `activate_milestone` and `deactivate_milestone`
## 0.3.0
### milestones.yml
- add field `final` to milestones #74
## 0.2.0
Introduce support for markdown content in `injects`, `tool responses` and `email templates`. #84
Add new optional folder `content` to the definition file structure.
This folder should contain markdown files which will be pointed to by `content_path` fields.
Only one of the `content`, `content_path` fields can be set at the same time.
If neither field is set, then the content is considered to be empty.
### tools.yml
- rename response field `answer` to `content`
- add field `content_path` to responses
### inject.yml
- add field `content_path` to injects
### email.yml
- add field `content_path` to emails
## 0.1.1
### email.yml
- Add `organization` field to email addresses #83
### injects.yml
- Add `organization` field to inject categories #83
## 0.1.0
Initial version, no changes.
This diff is collapsed.
......@@ -35,27 +35,6 @@ Many of the fields described here are also described
in the definition format which can be found
[here](https://gitlab.fi.muni.cz/inject/backend/-/blob/main/definitions/README.md?ref_type=heads).
### Quick list:
**Exercise files**:
- [exercise.jsonl](#exercisejsonl)
- [teams.jsonl](#teamsjsonl)
- [instructors.jsonl](#instructorsjsonl)
- [exercise_injects.jsonl](#exercise_injectsjsonl)
- [exercise_milestones.jsonl](#exercise_milestonesjsonl)
- [exercise_tools.jsonl](#exercise_toolsjsonl)
- [exercise_questionnaires.jsonl](#exercise_questionnairesjsonl)
- [exercise_learning_objectives.jsonl](#exercise_learning_objectivesjsonl)
- [email_participants.jsonl](#email_participantsjsonl)
- [file_infos.jsonl](#file_infosjsonl)
**Individual team files**:
- [inject_states.jsonl](#inject_statesjsonl)
- [questionnaire_states.jsonl](#questionnaire_statesjsonl)
- [action_logs.jsonl](#action_logsjsonl)
- [milestones.jsonl](#milestonesjsonl)
- [emails.jsonl](#emailsjsonl)
### Timestamps
All fields with the `timestamp` type are timestamps in `ISO 8601` format.
......
No preview for this file type
No preview for this file type
Subproject commit 2e76a590840b633aa6ffa4b84311667c8b75009c
Subproject commit 22f416c4db54e0e3ee18e274231ab0f820f5fd5b
......@@ -48,7 +48,7 @@
<option value="/bastion/">Version 2.0</option>
</select>
</div>
-->
{% if config.theme.palette %}
{% if not config.theme.palette is mapping %}
{% include "partials/palette.html" %}
......
Subproject commit d8d877da2081db9cf6f63785d833484cde49a4d5
Subproject commit c97edaec330722fd4e257c3671282ebaddeaee05
#!/usr/bin/env bash
# Initialize and update git submodules
git submodule init
git submodule update --remote
# Check the status of the git submodules
git submodule status
# Create necessary directories
mkdir -p docs/tech
mkdir -p files-from-repos
# Copy files to the respective directories
cp ./backend/definitions/README.md ./docs/tech/architecture/definitions/README.md
cp ./backend/definitions/CHANGELOG.md ./docs/tech/architecture/definitions/CHANGELOG.md
cp ./backend/openapi.yml ./docs/tech/api/openapi.yml
cp ./showcase-definition/assets/definition.zip ./files-from-repos/showcase-definition.zip
cp ./introductory-definition/assets/definition.zip ./files-from-repos/intro-definition.zip
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment