{
    "additionalProperties": false,
    "description": "Snowplow PostgreSQL storage configuration",
    "properties": {
        "database": {
            "type": "string"
        },
        "host": {
            "type": "string"
        },
        "id": {
            "_format": "uuid",
            "type": "string"
        },
        "name": {
            "type": "string"
        },
        "password": {
            "properties": {
                "ec2ParameterStore": {
                    "properties": {
                        "parameterName": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "parameterName"
                    ],
                    "type": "object"
                }
            },
            "required": [
                "ec2ParameterStore"
            ],
            "type": [
                "string",
                "object"
            ]
        },
        "port": {
            "maximum": 65535,
            "minimum": 1,
            "type": "integer"
        },
        "purpose": {
            "enum": [
                "ENRICHED_EVENTS"
            ],
            "type": "string"
        },
        "schema": {
            "type": "string"
        },
        "sshTunnel": {
            "properties": {
                "bastion": {
                    "properties": {
                        "host": {
                            "type": "string"
                        },
                        "key": {
                            "properties": {
                                "ec2ParameterStore": {
                                    "properties": {
                                        "parameterName": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "parameterName"
                                    ],
                                    "type": "object"
                                }
                            },
                            "required": [
                                "ec2ParameterStore"
                            ],
                            "type": "object"
                        },
                        "passphrase": {
                            "type": "string"
                        },
                        "port": {
                            "maximum": 65535,
                            "minimum": 1,
                            "type": "integer"
                        },
                        "user": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "host",
                        "port",
                        "user"
                    ],
                    "type": "object"
                },
                "destination": {
                    "properties": {
                        "host": {
                            "type": "string"
                        },
                        "port": {
                            "maximum": 65535,
                            "minimum": 1,
                            "type": "integer"
                        }
                    },
                    "required": [
                        "host",
                        "port"
                    ],
                    "type": "object"
                },
                "localPort": {
                    "maximum": 65535,
                    "minimum": 1,
                    "type": "integer"
                }
            },
            "required": [
                "bastion",
                "destination",
                "localPort"
            ],
            "type": [
                "object",
                "null"
            ]
        },
        "sslMode": {
            "enum": [
                "DISABLE",
                "REQUIRE",
                "VERIFY_CA",
                "VERIFY_FULL"
            ],
            "type": "string"
        },
        "username": {
            "type": "string"
        }
    },
    "required": [
        "name",
        "host",
        "database",
        "port",
        "sslMode",
        "schema",
        "username",
        "password",
        "purpose"
    ],
    "self": {
        "format": "jsonschema",
        "name": "postgresql_config",
        "vendor": "com.snowplowanalytics.snowplow.storage",
        "version": "1-1-0"
    },
    "type": "object"
}