# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.

packages:
  validate_json:
    actions:
      validate_json_params:
        function: actions/dump_params.js
        runtime: nodejs:6
        inputs:
          member1:
            type: json
            value: '{ "name": "Sam", "place": "Shire" }'
          member2: { "name": "Sam", "place": "Shire" }
          member3:
            type: json
            value: { "name": "Elrond", "place": "Rivendell" }
          member4:
            type: json
            value: { "name": "Gimli", "place": "Gondor", "age": 139, "children": { "<none>": "<none>" } }
          member5:
            type: json
            value: {
              "name": "Gloin",
              "place": "Gondor",
              "age": 235,
              "children": {
                "Gimli": "Son"
              }
            }
          member6:
            type: json
            value: { "name": "Frodo", "place": "Undying Lands", "items": [ "Sting", "Mithril mail" ] }
          member7:
            type: json
            value: { "name": "${USERNAME}", "password": "${PASSWORD}" }
          member8:
            type: json
            value: { "name": "$${USERNAME}", "password": "$${PASSWORD}" }
        outputs:
            fellowship:
              type: json
