{
  "schema_version": "1.0",
  "nodes": [
    {
      "id": "school",
      "type": "input/text",
      "label": "School",
      "parameters": {
        "required": true,
        "text": "Bottega Scuola Ferraris · Torino",
        "multiline": false
      }
    },
    {
      "id": "course_title",
      "type": "input/text",
      "label": "Course",
      "parameters": {
        "required": true,
        "text": "Restauro del mobile antico",
        "multiline": false
      }
    },
    {
      "id": "edition",
      "type": "input/text",
      "label": "Edition",
      "parameters": {
        "required": true,
        "text": "Edizione di primavera 2026",
        "multiline": false
      }
    },
    {
      "id": "dates",
      "type": "input/text",
      "label": "Dates",
      "parameters": {
        "required": true,
        "text": "dal 9 marzo al 29 maggio 2026",
        "multiline": false
      }
    },
    {
      "id": "course_hours",
      "type": "input/number",
      "label": "Course hours",
      "parameters": {
        "required": true,
        "value": 120
      }
    },
    {
      "id": "director",
      "type": "input/text",
      "label": "Director",
      "parameters": {
        "required": true,
        "text": "Giulia Ferraris",
        "multiline": false
      }
    },
    {
      "id": "issue_date",
      "type": "input/text",
      "label": "Place and date of issue",
      "parameters": {
        "required": true,
        "text": "Torino, 5 giugno 2026",
        "multiline": false
      }
    },
    {
      "id": "modules",
      "type": "input/json_value",
      "label": "Programme (modules and hours)",
      "parameters": {
        "required": true
      }
    },
    {
      "id": "participants",
      "type": "input/json_value",
      "label": "Participants (registry export)",
      "parameters": {
        "required": true
      }
    },
    {
      "id": "cover",
      "type": "document/pdf",
      "label": "Cover of the registry",
      "parameters": {
        "template_id": "__COVER_TEMPLATE_ID__",
        "template_revision": "__TEMPLATE_REVISION__"
      }
    },
    {
      "id": "people",
      "type": "enumerate/json",
      "label": "One participant at a time",
      "parameters": {
        "jsonConfig": {
          "arrayPath": "(root)",
          "properties": [
            {
              "sourcePath": "name",
              "outputPort": "participant",
              "outputType": "text",
              "selected": true,
              "label": "Participant"
            },
            {
              "sourcePath": "hours",
              "outputPort": "hours_attended",
              "outputType": "number",
              "selected": true,
              "label": "Hours attended"
            },
            {
              "sourcePath": "distinction",
              "outputPort": "distinction",
              "outputType": "boolean",
              "selected": true,
              "label": "Distinction"
            },
            {
              "sourcePath": "project",
              "outputPort": "project",
              "outputType": "text",
              "selected": true,
              "label": "Final project"
            }
          ]
        },
        "emptyBehavior": "fail"
      }
    },
    {
      "id": "certificates",
      "type": "aggregate/pdf",
      "label": "Cover + one certificate per participant",
      "parameters": {
        "template_id": "__CERTIFICATE_TEMPLATE_ID__",
        "template_revision": "__TEMPLATE_REVISION__",
        "outputName": "attestati"
      }
    },
    {
      "id": "certificates_pdf",
      "type": "output/pdf",
      "label": "Certificates — PDF",
      "parameters": {
        "output_name": "certificates_pdf"
      }
    }
  ],
  "connections": [
    {
      "from_node": "school",
      "from_output": "text",
      "to_node": "cover",
      "to_input": "school"
    },
    {
      "from_node": "course_title",
      "from_output": "text",
      "to_node": "cover",
      "to_input": "course_title"
    },
    {
      "from_node": "edition",
      "from_output": "text",
      "to_node": "cover",
      "to_input": "edition"
    },
    {
      "from_node": "dates",
      "from_output": "text",
      "to_node": "cover",
      "to_input": "dates"
    },
    {
      "from_node": "course_hours",
      "from_output": "number",
      "to_node": "cover",
      "to_input": "course_hours"
    },
    {
      "from_node": "director",
      "from_output": "text",
      "to_node": "cover",
      "to_input": "director"
    },
    {
      "from_node": "modules",
      "from_output": "json",
      "to_node": "cover",
      "to_input": "modules"
    },
    {
      "from_node": "participants",
      "from_output": "json",
      "to_node": "people",
      "to_input": "json"
    },
    {
      "from_node": "people",
      "from_output": "participant",
      "to_node": "certificates",
      "to_input": "participant"
    },
    {
      "from_node": "people",
      "from_output": "hours_attended",
      "to_node": "certificates",
      "to_input": "hours_attended"
    },
    {
      "from_node": "people",
      "from_output": "distinction",
      "to_node": "certificates",
      "to_input": "distinction"
    },
    {
      "from_node": "people",
      "from_output": "project",
      "to_node": "certificates",
      "to_input": "project"
    },
    {
      "from_node": "school",
      "from_output": "text",
      "to_node": "certificates",
      "to_input": "school"
    },
    {
      "from_node": "course_title",
      "from_output": "text",
      "to_node": "certificates",
      "to_input": "course_title"
    },
    {
      "from_node": "dates",
      "from_output": "text",
      "to_node": "certificates",
      "to_input": "dates"
    },
    {
      "from_node": "course_hours",
      "from_output": "number",
      "to_node": "certificates",
      "to_input": "course_hours"
    },
    {
      "from_node": "director",
      "from_output": "text",
      "to_node": "certificates",
      "to_input": "director"
    },
    {
      "from_node": "issue_date",
      "from_output": "text",
      "to_node": "certificates",
      "to_input": "issue_date"
    },
    {
      "from_node": "cover",
      "from_output": "pdf",
      "to_node": "certificates",
      "to_input": "introPdf"
    },
    {
      "from_node": "certificates",
      "from_output": "result",
      "to_node": "certificates_pdf",
      "to_input": "pdf"
    }
  ],
  "layout": {
    "nodes": {
      "school": {
        "x": 0,
        "y": 0
      },
      "course_title": {
        "x": 0,
        "y": 160
      },
      "edition": {
        "x": 0,
        "y": 320
      },
      "dates": {
        "x": 0,
        "y": 480
      },
      "course_hours": {
        "x": 0,
        "y": 640
      },
      "director": {
        "x": 0,
        "y": 800
      },
      "issue_date": {
        "x": 0,
        "y": 960
      },
      "modules": {
        "x": 0,
        "y": 1120
      },
      "participants": {
        "x": 0,
        "y": 1280
      },
      "cover": {
        "x": 460,
        "y": 400
      },
      "people": {
        "x": 460,
        "y": 1200
      },
      "certificates": {
        "x": 920,
        "y": 800
      },
      "certificates_pdf": {
        "x": 1380,
        "y": 800
      }
    }
  }
}
