{
  "$schema": "https://json-structure.org/meta/core/v0/#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/amazon-dms/refs/heads/main/json-structure/amazon-dms-endpoint-structure.json",
  "title": "Endpoint",
  "description": "<p>Describes an endpoint of a database instance in response to operations such as the following:</p> <ul> <li> <p> <code>CreateEndpoint</code> </p> </li> <li> <p> <code>DescribeEndpoint</code> </p> </li> <li> <p> <code>ModifyEndpoint</code> </p> </li> </ul>",
  "type": "object",
  "properties": {
    "EndpointIdentifier": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "The database endpoint identifier. Identifiers must begin with a letter and must contain only ASCII letters, digits, and hyphens. They can't end with a hyphen or contain two consecutive hyphens."
        }
      ]
    },
    "EndpointType": {
      "allOf": [
        {
          "$ref": "#/components/schemas/ReplicationEndpointTypeValue"
        },
        {
          "description": "The type of endpoint. Valid values are <code>source</code> and <code>target</code>."
        }
      ]
    },
    "EngineName": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "The database engine name. Valid values, depending on the EndpointType, include <code>\"mysql\"</code>, <code>\"oracle\"</code>, <code>\"postgres\"</code>, <code>\"mariadb\"</code>, <code>\"aurora\"</code>, <code>\"aurora-postgresql\"</code>, <code>\"redshift\"</code>, <code>\"s3\"</code>, <code>\"db2\"</code>, <code>\"db2-zos\"</code>, <code>\"azuredb\"</code>, <code>\"sybase\"</code>, <code>\"dynamodb\"</code>, <code>\"mongodb\"</code>, <code>\"kinesis\"</code>, <code>\"kafka\"</code>, <code>\"elasticsearch\"</code>, <code>\"documentdb\"</code>, <code>\"sqlserver\"</code>, <code>\"neptune\"</code>, and <code>\"babelfish\"</code>."
        }
      ]
    },
    "EngineDisplayName": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "The expanded name for the engine name. For example, if the <code>EngineName</code> parameter is \"aurora\", this value would be \"Amazon Aurora MySQL\"."
        }
      ]
    },
    "Username": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "The user name used to connect to the endpoint."
        }
      ]
    },
    "ServerName": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "The name of the server at the endpoint."
        }
      ]
    },
    "Port": {
      "allOf": [
        {
          "$ref": "#/components/schemas/IntegerOptional"
        },
        {
          "description": "The port value used to access the endpoint."
        }
      ]
    },
    "DatabaseName": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "The name of the database at the endpoint."
        }
      ]
    },
    "ExtraConnectionAttributes": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "Additional connection attributes used to connect to the endpoint."
        }
      ]
    },
    "Status": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "The status of the endpoint."
        }
      ]
    },
    "KmsKeyId": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "<p>An KMS key identifier that is used to encrypt the connection parameters for the endpoint.</p> <p>If you don't specify a value for the <code>KmsKeyId</code> parameter, then DMS uses your default encryption key.</p> <p>KMS creates the default encryption key for your Amazon Web Services account. Your Amazon Web Services account has a different default encryption key for each Amazon Web Services Region.</p>"
        }
      ]
    },
    "EndpointArn": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "The Amazon Resource Name (ARN) string that uniquely identifies the endpoint."
        }
      ]
    },
    "CertificateArn": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "The Amazon Resource Name (ARN) used for SSL connection to the endpoint."
        }
      ]
    },
    "SslMode": {
      "allOf": [
        {
          "$ref": "#/components/schemas/DmsSslModeValue"
        },
        {
          "description": "The SSL mode used to connect to the endpoint. The default value is <code>none</code>."
        }
      ]
    },
    "ServiceAccessRoleArn": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "The Amazon Resource Name (ARN) used by the service to access the IAM role. The role must allow the <code>iam:PassRole</code> action."
        }
      ]
    },
    "ExternalTableDefinition": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": "The external table definition."
        }
      ]
    },
    "ExternalId": {
      "allOf": [
        {
          "$ref": "#/components/schemas/String"
        },
        {
          "description": " Value returned by a call to CreateEndpoint that can be used for cross-account validation. Use it on a subsequent call to CreateEndpoint to create the endpoint with a cross-account. "
        }
      ]
    },
    "DynamoDbSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/DynamoDbSettings"
        },
        {
          "description": "The settings for the DynamoDB target endpoint. For more information, see the <code>DynamoDBSettings</code> structure."
        }
      ]
    },
    "S3Settings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/S3Settings"
        },
        {
          "description": "The settings for the S3 target endpoint. For more information, see the <code>S3Settings</code> structure."
        }
      ]
    },
    "DmsTransferSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/DmsTransferSettings"
        },
        {
          "description": "The settings for the DMS Transfer type source. For more information, see the DmsTransferSettings structure. "
        }
      ]
    },
    "MongoDbSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/MongoDbSettings"
        },
        {
          "description": "The settings for the MongoDB source endpoint. For more information, see the <code>MongoDbSettings</code> structure."
        }
      ]
    },
    "KinesisSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/KinesisSettings"
        },
        {
          "description": "The settings for the Amazon Kinesis target endpoint. For more information, see the <code>KinesisSettings</code> structure."
        }
      ]
    },
    "KafkaSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/KafkaSettings"
        },
        {
          "description": "The settings for the Apache Kafka target endpoint. For more information, see the <code>KafkaSettings</code> structure."
        }
      ]
    },
    "ElasticsearchSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/ElasticsearchSettings"
        },
        {
          "description": "The settings for the OpenSearch source endpoint. For more information, see the <code>ElasticsearchSettings</code> structure."
        }
      ]
    },
    "NeptuneSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/NeptuneSettings"
        },
        {
          "description": "The settings for the Amazon Neptune target endpoint. For more information, see the <code>NeptuneSettings</code> structure."
        }
      ]
    },
    "RedshiftSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/RedshiftSettings"
        },
        {
          "description": "Settings for the Amazon Redshift endpoint."
        }
      ]
    },
    "PostgreSQLSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/PostgreSQLSettings"
        },
        {
          "description": "The settings for the PostgreSQL source and target endpoint. For more information, see the <code>PostgreSQLSettings</code> structure."
        }
      ]
    },
    "MySQLSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/MySQLSettings"
        },
        {
          "description": "The settings for the MySQL source and target endpoint. For more information, see the <code>MySQLSettings</code> structure."
        }
      ]
    },
    "OracleSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/OracleSettings"
        },
        {
          "description": "The settings for the Oracle source and target endpoint. For more information, see the <code>OracleSettings</code> structure."
        }
      ]
    },
    "SybaseSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/SybaseSettings"
        },
        {
          "description": "The settings for the SAP ASE source and target endpoint. For more information, see the <code>SybaseSettings</code> structure."
        }
      ]
    },
    "MicrosoftSQLServerSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/MicrosoftSQLServerSettings"
        },
        {
          "description": "The settings for the Microsoft SQL Server source and target endpoint. For more information, see the <code>MicrosoftSQLServerSettings</code> structure."
        }
      ]
    },
    "IBMDb2Settings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/IBMDb2Settings"
        },
        {
          "description": "The settings for the IBM Db2 LUW source endpoint. For more information, see the <code>IBMDb2Settings</code> structure. "
        }
      ]
    },
    "DocDbSettings": {
      "$ref": "#/components/schemas/DocDbSettings"
    },
    "RedisSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/RedisSettings"
        },
        {
          "description": "The settings for the Redis target endpoint. For more information, see the <code>RedisSettings</code> structure."
        }
      ]
    },
    "GcpMySQLSettings": {
      "allOf": [
        {
          "$ref": "#/components/schemas/GcpMySQLSettings"
        },
        {
          "description": "Settings in JSON format for the source GCP MySQL endpoint."
        }
      ]
    }
  }
}