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

# TODO: test for value conflicts when both `web` and `web-export` supplied
packages:
    IntegrationTestWebAction:
        actions:
            greeting-web-action:
                annotations:
                    web-export: true
                version: 1.0
                function: src/greeting.js
                runtime: nodejs:default
                inputs:
                    name: string
                    place: string
                outputs:
                    payload: string
            greeting-web-action-1:
                annotations:
                    web-export: yes
                version: 1.0
                function: src/greeting.js
                runtime: nodejs:default
                inputs:
                    name: string
                    place: string
                outputs:
                    payload: string
            greeting-with-raw-http:
                annotations:
                    web-export: raw
                version: 1.0
                function: src/greeting.js
                runtime: nodejs:default
            greeting-web-action-final:
                annotations:
                    web-export: true
                version: 1.0
                function: src/greeting.js
                runtime: nodejs:default
                annotations:
                    final: true
            greeting-web-action-with-custom-options:
                annotations:
                    web-export: true
                version: 1.0
                function: src/greeting.js
                runtime: nodejs:default
                annotations:
                    web-custom-options: true
        triggers:
            webActionTrigger:
        rules:
            webActionRule:
                trigger: webActionTrigger
                action: greeting-web-action
