# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.

# Example: “Hello world” with typed input and output parameter declarations
packages:
  hello_world_package:
    version: 1.0
    license: Apache-2.0
    actions:
      hello_world_typed_parms:
        function: src/hello_plus.js
        inputs:
          name: string
          place: string
          children: integer
          height: float
        outputs:
          greeting: string
          details: string
