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