type: map mapping:

name:
    type: str
    required: true
    pattern: /^[a-z0-9_-]+$/
    description: |
        The internal identifier for a topic, it should be the same as the folder name.
    _examples:
        - epigenetics
        - sequence-analysis
        - admin
type:
    type: str
    required: true
    enum:
        - admin-dev
        - basics
        - data-science
        - use
        - instructors
    description: |
        The type of topic, some have subtly different behaviours.

        `admin-dev`
        :  should be used for admin and developer topics that are not scientifically focused.

        `basics`
        :  Only used for galaxy-interface type topics

        `data-science`
        :  Topics which are not necessarily Galaxy focused but expand into broader communities

        `use`
        :  These topics use galaxy for some analysis

        `instructors`
        :  Specific to topics related to instruction of Galaxy
topic_type:
    type: str
    required: false
    enum:
        - technology
        - field
    description: |
      These are used to organise the home page tutorials only, not used anywhere else.
title:
    type: str
    required: true
    description: |
        Title of the topic, this is displayed for users to see.
    _examples:
        - Proteomics
        - Variant Analysis
summary:
    type: str
    required: true
    description: |
        A longer description of the contents of this topic
    _examples:
        - Statistical Analyses for omics data and machine learning using Galaxy tools
docker_image:
    type: str
    description: |
        The image ID for an image which contains all of the tools and data for this topic.
    _examples:
        - quay.io/galaxy/sequence-analysis-training
toc:
    type: bool
    required: false
    description:
        For large topics with many subtopics, set this to true to generate a table of contents above the tutorial table to support quickly jumping to a subtopic.
subtopics:
    type: seq
    required: false
    description: |
        For large topics, we can define subtopics and create multiple tutorial lists, which separates the tutorials to help users find content that interests them more quickly.
    sequence:
        - type: map
          mapping:
              id:
                  type: str
                  required: true
                  pattern: /^[A-Za-z0-9_-]+$/
                  description: |
                      Subtopic ID, this should match what is used in tutorials.
                  _examples:
                      - single-cell
              title:
                  type: str
                  required: true
                  description: |
                      Subtopic title, which is displayed for users to see.
                  _examples:
                      - Maintaining a Production Galaxy
                      - Single-cell RNA-seq
              description:
                  type: str
                  required: true
                  description: |
                      A human readable textual description of a subtopic.
                  _examples: |
                    - "Start here if you are new to RNA-Seq analysis in Galaxy"
                    - "These tutorials take you from raw sequencing reads to pathway analysis"
                    - "Tutorials about analysis of single-cell RNA-seq data"
                    - "Tutorials using a single published single-cell RNA-seq dataset for a variety of analyses"
              enable:
                  type: bool
                  description: |
                    `false` to hide your topic from the production GTN. This is useful if you need a topic for a workshop, but have not finished making it up to GTN standards.

editorial_board:
    type: seq
    required: true
    sequence:
        - type: str
          required: true
          description: A contributor's ID in the CONTRIBUTORS.yaml file.
          enum:
          - CONTRIBUTORS
edam_ontology:
    type: seq
    sequence:
      - type: str
        pattern: /^topic_[0-9]+$/
        description: |
            An edam ontology id that describes the resource
        _examples:
            - topic_3173
requirements:
    type: seq
    description: List of resources that the reader of the material should be familiar with before starting this training. The structure is identical to `follow_up_training`.
    _examples:
        - |
            type: internal
            topic_name: statistics
            tutorials:
                - age-prediction-with-ml
    sequence:
        - type: map
          required: true
          mapping:
              type:
                  type: str
                  required: true
                  enum:
                      - internal
                  description: |
                    the type of link
              topic_name:
                  type: str
                  description: |
                    The name of the topic
              tutorials:
                  type: seq
                  sequence:
                      - type: str
                  description: |
                    List of required tutorials inside that topic

references:
    type: seq
    _examples: |
      - |
        authors: "Vaudel M, et al."
        title: "Shedding light on black boxes in protein identification."
        link: "https://www.ncbi.nlm.nih.gov/pubmed/24678044"
        summary: "An extensive tutorial for peptide and protein identification, available at http://compomics.com/bioinformatics-for-proteomics. The material is completely based on freely available and open-source tools."
    sequence:
        - type: map
          required: true
          mapping:
              authors:
                  type: str
                  required: true
              title:
                  type: str
                  required: true
              link:
                  type: str
                  required: true
              summary:
                  type: str
gitter:
    type: str
    description: |
        Link to a gitter channel that is more relevant for this topic than the default. E.g. a single cell topic, you could use `Galaxy-Training-Network/galaxy-single-cell` to link to their specific chat room in all of the child tutorials by default.
    _examples:
        - Galaxy-Training-Network/galaxy-single-cell
        - galaxy-genome-annotation/Lobby
draft:
    type: bool
    description: |
        `true` to hide your tutorial from the topic page (optional). This is useful if you need a tutorial for a workshop, but have not finished making it up to GTN standards.
tag_based:
    type: bool
    required: false
    description: |
        If this is a tag based topic (no tutorials of it's own)
        then you must set this flag to indicate it as such, otherwise you
        will find yourself with an empty topic page.
og_image:
    type: str
    description: |
        A custom image to show on the link preview in external applications (e.g. when the URL is pasted into Twitter)
    pattern: /^\/.*/
    _examples:
        - /assets/images/gat.png
custom_css:
    type: str
    description: |
      Any custom CSS you might want to apply to a specific topic. This could be overriding e.g. the masthead colour (beware, will potentially conflict with themes.)

      This is generally not a recommended property to set on topics, and something that is only used as part of outreach efforts to import content into the GTN.
    _examples: |
      - :root { --brand-color: red; }

logo:
    type: str
    description: |
        A logo identifier (e.g. GTN) should be used by default, but may be swapped out for special logos from the assets folder.
logo_alt:
    type: str
    description: |
      The alt text for the logo (MANDATORY).

learning_path_ctas:
  type: map
  description: |
    The specific learning path you wish to reference as a call-to-action for views who aren't sure where to get started.

    It must be the name of a file in learning-pathways, without the `.md` suffix. This is not validated so, please make sure it's correct :)
  mapping:
    '=':
      type: str
      required: true
  _examples: |
    For Beginners: intro_single_cell
    For Intermediate Users: intermediate_single_cell
    For Coding Enthusiasts: coding_single_cell

community_ctas:
    type: seq
    sequence:
      - type: map
        mapping:
          description:
            type: str
            required: true
            description: "Some text to go along with the call to action"
          link:
            type: str
            required: true
            description: "A link target (full qualified please)"
          link_text:
            type: str
            required: true
            description: What goes on the button
          icon:
            type: str
            description: One of the icons from _config.yml

learning_path_cta:
    type: str
    description: |
      The specific learning path you wish to reference as a call-to-action for views who aren't sure where to get started.

      It must be the name of a file in learning-pathways, without the `.md` suffix. This is not validated so, please make sure it's correct :)
    _examples:
      - intro-to-galaxy-and-genomics
      - admin-training