#
# 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.
#

project:
    name: TestActionAnnotations
    packages:
        packageActionAnnotations:
            actions:
                helloworld:
                    inputs:
                        name: Amy
                        place: New York
                    annotations:
                        action_annotation_1: this is annotation 1
                        action_annotation_2: this is annotation 2
        packageActionAnnotationsFromDeployment:
            actions:
                helloworld:
                    inputs:
                        name: Amy
                        place: New York
                    annotations:
                        action_annotation_1: this is annotation 1 from deployment
                        action_annotation_2: this is annotation 2 from deployment
        packageActionAnnotationsWithWebAction:
            actions:
                helloworld:
                    inputs:
                        name: Amy
                        place: New York
                    annotations:
                        action_annotation_1: this is annotation 1
                        action_annotation_2: this is annotation 2
                        web-export: true
