#
# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements.  See the NOTICE file distributed with this work for additional
# information regarding copyright ownership.  The ASF licenses this file to you
# under the Apache License, Version 2.0 (the # "License"); you may not use this
# file except in compliance with the License.  You may obtain a copy of the License
# at:
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations under the License.
#

packages:
  ValidateYAMLExtension:
      actions:
        # helloworld action in NodeJS
        helloworld:
          function: actions/hello.js
          runtime: nodejs:6
          inputs:
            name:
              type: string
              description: name of a person
            place:
              type: string
              description: location of a person
          outputs:
            payload:
              type: string
              description: a simple greeting message, Hello World!
      triggers:
        # trigger to activate helloworld action
        trigger-for-valid-manifest-yaml:
      rules:
        # rule associating trigger with helloworld action
        rule-for-valid-manifest-yaml:
          trigger: trigger-for-valid-manifest-yaml
          action: helloworld
