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

kind: io.statefun.endpoints.v2/http
spec:
  functions: showcase.fns/*
  urlPathTemplate: http://host-machine:8000/statefun
  transport:
    type: io.statefun.transports.v1/async
---
kind: io.statefun.kafka.v1/ingress
spec:
  id: showcase.io/names
  address: kafka:9092
  consumerGroupId: my-group-id
  startupPosition:
    type: earliest
  topics:
    - topic: logins
      valueType: showcase.types/userlogin
      targets:
        - showcase.fns/user
---
kind: io.statefun.kafka.v1/egress
spec:
  id: showcase.io/greets
  address: kafka:9092
  deliverySemantic:
    type: exactly-once
    transactionTimeout: 15min
