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

project:
    name: HelloWorldEvery12Hours
    packages:
        helloworld:
            actions:
                helloworld:
                    inputs:
                        name: Amy
                        place: Paris
            triggers:
                Every12Hours:
                    inputs:
                        cron: "0 */12 * * *"
        default:
            actions:
                helloworldInDefault:
                    inputs:
                        name: Bob
                        place: London
            triggers:
                Every12HoursInDefault:
                    inputs:
                        cron: "0 */12 * * *"

