{
  "description": "IntegrationSink sends events to generic event sink",
  "type": "object",
  "properties": {
    "spec": {
      "description": "Spec defines the desired state of the IntegrationSink.",
      "type": "object",
      "properties": {
        "log": {
          "type": "object",
          "properties": {
            "loggerName": {
              "type": "string",
              "title": "Logger Name",
              "description": "Name of the logging category to use",
              "default": "log-sink"
            },
            "level": {
              "type": "string",
              "title": "Log Level",
              "description": "Logging level to use",
              "default": "INFO"
            },
            "logMask": {
              "type": "boolean",
              "title": "Log Mask",
              "description": "Mask sensitive information like password or passphrase in the log",
              "default": false
            },
            "marker": {
              "type": "string",
              "title": "Marker",
              "description": "An optional Marker name to use"
            },
            "multiline": {
              "type": "boolean",
              "title": "Multiline",
              "description": "If enabled then each information is outputted on a newline",
              "default": false
            },
            "showAllProperties": {
              "type": "boolean",
              "title": "Show All Properties",
              "description": "Show all of the exchange properties (both internal and custom)",
              "default": false
            },
            "showBody": {
              "type": "boolean",
              "title": "Show Body",
              "description": "Show the message body",
              "default": true
            },
            "showBodyType": {
              "type": "boolean",
              "title": "Show Body Type",
              "description": "Show the body Java type",
              "default": true
            },
            "showExchangePattern": {
              "type": "boolean",
              "title": "Show Exchange Pattern",
              "description": "Shows the Message Exchange Pattern (or MEP for short)",
              "default": true
            },
            "showHeaders": {
              "type": "boolean",
              "title": "Show Headers",
              "description": "Show the headers received",
              "default": false
            },
            "showProperties": {
              "type": "boolean",
              "title": "Show Properties",
              "description": "Show the exchange properties (only custom). Use showAllProperties to show both internal and custom properties.",
              "default": false
            },
            "showStreams": {
              "type": "boolean",
              "title": "Show Streams",
              "description": "Show the stream bodies (they may not be available in following steps)",
              "default": false
            },
            "showCachedStreams": {
              "type": "boolean",
              "title": "Show Cached Streams",
              "description": "Whether Camel should show cached stream bodies or not.",
              "default": true
            }
          },
          "additionalProperties": false
        },
        "aws": {
          "type": "object",
          "properties": {
            "s3": {
              "type": "object",
              "properties": {
                "arn": {
                  "type": "string",
                  "title": "Bucket Name",
                  "description": "The S3 Bucket name or Amazon Resource Name (ARN)."
                },
                "deleteAfterRead": {
                  "type": "boolean",
                  "title": "Auto-delete Objects",
                  "description": "Specifies to delete objects after consuming them.",
                  "default": true
                },
                "moveAfterRead": {
                  "type": "boolean",
                  "title": "Move Objects After Delete",
                  "description": "Move objects from S3 bucket to a different bucket after they have been retrieved.",
                  "default": false
                },
                "destinationBucket": {
                  "type": "string",
                  "title": "Destination Bucket",
                  "description": "Define the destination bucket where an object must be moved when moveAfterRead is set to true."
                },
                "destinationBucketPrefix": {
                  "type": "string",
                  "title": "Destination Bucket Prefix",
                  "description": "Define the destination bucket prefix to use when an object must be moved, and moveAfterRead is set to true."
                },
                "destinationBucketSuffix": {
                  "type": "string",
                  "title": "Destination Bucket Suffix",
                  "description": "Define the destination bucket suffix to use when an object must be moved, and moveAfterRead is set to true."
                },
                "region": {
                  "type": "string",
                  "title": "AWS Region",
                  "description": "The AWS region to access."
                },
                "autoCreateBucket": {
                  "type": "boolean",
                  "title": "Autocreate Bucket",
                  "description": "Specifies to automatically create the S3 bucket.",
                  "default": false
                },
                "prefix": {
                  "type": "string",
                  "title": "Prefix",
                  "description": "The AWS S3 bucket prefix to consider while searching.",
                  "example": "folder/"
                },
                "ignoreBody": {
                  "type": "boolean",
                  "title": "Ignore Body",
                  "description": "If true, the S3 Object body is ignored. Setting this to true overrides any behavior defined by the `includeBody` option. If false, the S3 object is put in the body.",
                  "default": false
                },
                "uriEndpointOverride": {
                  "type": "string",
                  "title": "Overwrite Endpoint URI",
                  "description": "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
                },
                "overrideEndpoint": {
                  "type": "boolean",
                  "title": "Endpoint Overwrite",
                  "description": "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.",
                  "default": false
                },
                "forcePathStyle": {
                  "type": "boolean",
                  "title": "Force Path Style",
                  "description": "Forces path style when accessing AWS S3 buckets.",
                  "default": false
                },
                "delay": {
                  "type": "integer",
                  "title": "Delay",
                  "description": "The number of milliseconds before the next poll of the selected bucket.",
                  "default": 500
                },
                "maxMessagesPerPoll": {
                  "type": "integer",
                  "title": "Max Messages Per Poll",
                  "description": "Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as unlimited.",
                  "default": 10
                }
              },
              "additionalProperties": false
            },
            "sqs": {
              "type": "object",
              "properties": {
                "arn": {
                  "type": "string",
                  "title": "Queue Name",
                  "description": "The SQS Queue Name or ARN"
                },
                "deleteAfterRead": {
                  "type": "boolean",
                  "title": "Auto-delete Messages",
                  "description": "Delete messages after consuming them",
                  "default": true
                },
                "region": {
                  "type": "string",
                  "title": "AWS Region",
                  "description": "The AWS region to access."
                },
                "autoCreateQueue": {
                  "type": "boolean",
                  "title": "Autocreate Queue",
                  "description": "Setting the autocreation of the SQS queue.",
                  "default": false
                },
                "host": {
                  "type": "string",
                  "title": "AWS Host",
                  "description": "The hostname of the Amazon AWS cloud.",
                  "default": "amazonaws.com"
                },
                "protocol": {
                  "type": "string",
                  "title": "Protocol",
                  "description": "The underlying protocol used to communicate with SQS",
                  "default": "https",
                  "example": "http or https"
                },
                "queueURL": {
                  "type": "string",
                  "title": "Queue URL",
                  "description": "The full SQS Queue URL (required if using KEDA)"
                },
                "uriEndpointOverride": {
                  "type": "string",
                  "title": "Overwrite Endpoint URI",
                  "description": "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
                },
                "overrideEndpoint": {
                  "type": "boolean",
                  "title": "Endpoint Overwrite",
                  "description": "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.",
                  "default": false
                },
                "delay": {
                  "type": "integer",
                  "title": "Delay",
                  "description": "The number of milliseconds before the next poll of the selected stream",
                  "default": 500
                },
                "greedy": {
                  "type": "boolean",
                  "title": "Greedy Scheduler",
                  "description": "If greedy is enabled, then the polling will happen immediately again, if the previous run polled 1 or more messages.",
                  "default": false
                },
                "maxMessagesPerPoll": {
                  "type": "integer",
                  "title": "Max Messages Per Poll",
                  "description": "The maximum number of messages to return. Amazon SQS never returns more messages than this value (however, fewer messages might be returned). Valid values 1 to 10. Default 1.",
                  "default": 1
                },
                "waitTimeSeconds": {
                  "type": "integer",
                  "title": "Wait Time Seconds",
                  "description": "The duration (in seconds) for which the call waits for a message to arrive in the queue before returning. If a message is available, the call returns sooner than WaitTimeSeconds. If no messages are available and the wait time expires, the call does not return a message list."
                },
                "visibilityTimeout": {
                  "type": "integer",
                  "title": "Visibility Timeout",
                  "description": "The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request."
                }
              },
              "additionalProperties": false
            },
            "sns": {
              "type": "object",
              "properties": {
                "arn": {
                  "type": "string",
                  "title": "Topic Name",
                  "description": "The SNS topic name name or Amazon Resource Name (ARN)."
                },
                "region": {
                  "type": "string",
                  "title": "AWS Region",
                  "description": "The AWS region to access."
                },
                "autoCreateTopic": {
                  "type": "boolean",
                  "title": "Autocreate Topic",
                  "description": "Setting the autocreation of the SNS topic.",
                  "default": false
                },
                "uriEndpointOverride": {
                  "type": "string",
                  "title": "Overwrite Endpoint URI",
                  "description": "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option."
                },
                "overrideEndpoint": {
                  "type": "boolean",
                  "title": "Endpoint Overwrite",
                  "description": "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.",
                  "default": false
                }
              },
              "additionalProperties": false
            },
            "auth": {
              "description": "Auth configurations",
              "type": "object",
              "properties": {
                "secret": {
                  "description": "Auth secret",
                  "type": "object",
                  "properties": {
                    "ref": {
                      "description": "Secret reference.\n",
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "properties": {
                        "name": {
                          "description": "Secret name",
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                },
                "serviceAccountName": {
                  "description": "Optional ServiceAccount to assign to pod. This enables the pod default credentials to be used instead of the auth secret.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "status": {
      "description": "Status represents the current state of the IntegrationSink. This data may be out of date.",
      "type": "object",
      "properties": {
        "address": {
          "description": "IntegrationSink is Addressable. It exposes the endpoints as URIs to get events delivered into the used Kamelet.",
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "CACerts": {
              "type": "string"
            },
            "audience": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "addresses": {
          "description": "IntegrationSink is Addressable. It exposes the endpoints as URIs to get events delivered into the used Kamelet.",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "CACerts": {
                "type": "string"
              },
              "audience": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "annotations": {
          "description": "Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.",
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        },
        "policies": {
          "description": "List of applied EventPolicies",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "apiVersion": {
                "description": "The API version of the applied EventPolicy. This indicates, which version of EventPolicy is supported by the resource.",
                "type": "string"
              },
              "name": {
                "description": "The name of the applied EventPolicy",
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "conditions": {
          "description": "Conditions the latest available observations of a resource's current state.",
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "type",
              "status"
            ],
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).",
                "type": "string"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "severity": {
                "description": "Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type of condition.",
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.",
          "type": "integer",
          "format": "int64"
        }
      },
      "additionalProperties": false
    }
  }
}
