#
# 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:
    api-gateway-test:
        version: 1.0
        license: Apache-2.0
        actions:
            greeting:
                web-export: true
                version: 1.0
                function: src/greeting.js
                runtime: nodejs:6
            getBooks:
                function: src/get-books.js
            postBooks:
                function: src/post-books.js
            putBooks:
                function: src/put-books.js
            deleteBooks:
                function: src/delete-books.js
            listMembers:
                function: src/list-members.js
        sequences:
            listAllMembers:
                actions: listMembers
        # new top-level key for defining groups of named APIs
        apis:
            hello-world:
                hello:
                    world:
                        greeting: GET
            book-club:
                club:
                    books:
                        getBooks: GET
                        postBooks: POST
                        putBooks: PUT
                        deleteBooks: DELETE
                    members:
                        listMembers: GET
                        listAllMembers: GET
