{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/CatalogId"
 ],
 "definitions": {
  "AuthenticationConfigurationInput": {
   "additionalProperties": false,
   "properties": {
    "AuthenticationType": {
     "type": "string"
    },
    "BasicAuthenticationCredentials": {
     "$ref": "#/definitions/BasicAuthenticationCredentials"
    },
    "CustomAuthenticationCredentials": {
     "type": "object"
    },
    "KmsKeyArn": {
     "type": "string"
    },
    "OAuth2Properties": {
     "$ref": "#/definitions/OAuth2PropertiesInput"
    },
    "SecretArn": {
     "type": "string"
    }
   },
   "required": [
    "AuthenticationType"
   ],
   "type": "object"
  },
  "AuthorizationCodeProperties": {
   "additionalProperties": false,
   "properties": {
    "AuthorizationCode": {
     "type": "string"
    },
    "RedirectUri": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "BasicAuthenticationCredentials": {
   "additionalProperties": false,
   "properties": {
    "Password": {
     "type": "string"
    },
    "Username": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "ConnectionInput": {
   "additionalProperties": false,
   "properties": {
    "AthenaProperties": {
     "type": "object"
    },
    "AuthenticationConfiguration": {
     "$ref": "#/definitions/AuthenticationConfigurationInput"
    },
    "ConnectionProperties": {
     "format": "json",
     "type": [
      "object",
      "string"
     ]
    },
    "ConnectionType": {
     "enum": [
      "ADOBEANALYTICS",
      "ASANA",
      "AZURECOSMOS",
      "AZURESQL",
      "BIGQUERY",
      "BLACKBAUD",
      "BLACKBAUDRAISEREDGENXT",
      "CIRCLECI",
      "CLOUDERAHIVE",
      "CLOUDERAIMPALA",
      "CLOUDWATCH",
      "CLOUDWATCHMETRICS",
      "CMDB",
      "CUSTOM",
      "DATADOG",
      "DATALAKEGEN2",
      "DB2",
      "DB2AS400",
      "DOCUMENTDB",
      "DOCUSIGNMONITOR",
      "DOMO",
      "DYNAMODB",
      "DYNATRACE",
      "FACEBOOKADS",
      "FACEBOOKPAGEINSIGHTS",
      "FRESHDESK",
      "FRESHSALES",
      "GITLAB",
      "GOOGLEADS",
      "GOOGLEANALYTICS4",
      "GOOGLECLOUDSTORAGE",
      "GOOGLESEARCHCONSOLE",
      "GOOGLESHEETS",
      "HBASE",
      "HUBSPOT",
      "INSTAGRAMADS",
      "INTERCOM",
      "JDBC",
      "JIRACLOUD",
      "KAFKA",
      "KUSTOMER",
      "LINKEDIN",
      "MAILCHIMP",
      "MARKETO",
      "MARKETPLACE",
      "MICROSOFTDYNAMIC365FINANCEANDOPS",
      "MICROSOFTDYNAMICS365CRM",
      "MICROSOFTTEAMS",
      "MIXPANEL",
      "MONDAY",
      "MONGODB",
      "MYSQL",
      "NETSUITEERP",
      "NETWORK",
      "OKTA",
      "OPENSEARCH",
      "ORACLE",
      "PAYPAL",
      "PENDO",
      "PIPEDIVE",
      "PIPEDRIVE",
      "POSTGRESQL",
      "PRODUCTBOARD",
      "QUICKBOOKS",
      "SALESFORCE",
      "SALESFORCECOMMERCECLOUD",
      "SALESFORCEMARKETINGCLOUD",
      "SALESFORCEPARDOT",
      "SAPCONCUR",
      "SAPHANA",
      "SAPODATA",
      "SENDGRID",
      "SERVICENOW",
      "SFTP",
      "SLACK",
      "SMARTSHEET",
      "SNAPCHATADS",
      "SQLSERVER",
      "STRIPE",
      "SYNAPSE",
      "TERADATA",
      "TERADATANOS",
      "TIMESTREAM",
      "TPCDS",
      "TWILIO",
      "VERTICA",
      "VIEW_VALIDATION_ATHENA",
      "VIEW_VALIDATION_REDSHIFT",
      "WOOCOMMERCE",
      "ZENDESK",
      "ZOHOCRM",
      "ZOOM"
     ],
     "type": "string"
    },
    "Description": {
     "type": "string"
    },
    "MatchCriteria": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    },
    "Name": {
     "type": "string"
    },
    "PhysicalConnectionRequirements": {
     "$ref": "#/definitions/PhysicalConnectionRequirements"
    },
    "PythonProperties": {
     "type": "object"
    },
    "SparkProperties": {
     "type": "object"
    },
    "ValidateCredentials": {
     "type": "boolean"
    },
    "ValidateForComputeEnvironments": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    }
   },
   "required": [
    "ConnectionType"
   ],
   "type": "object"
  },
  "OAuth2ClientApplication": {
   "additionalProperties": false,
   "properties": {
    "AWSManagedClientApplicationReference": {
     "type": "string"
    },
    "UserManagedClientApplicationClientId": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "OAuth2Credentials": {
   "additionalProperties": false,
   "properties": {
    "AccessToken": {
     "type": "string"
    },
    "JwtToken": {
     "type": "string"
    },
    "RefreshToken": {
     "type": "string"
    },
    "UserManagedClientApplicationClientSecret": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "OAuth2PropertiesInput": {
   "additionalProperties": false,
   "properties": {
    "AuthorizationCodeProperties": {
     "$ref": "#/definitions/AuthorizationCodeProperties"
    },
    "OAuth2ClientApplication": {
     "$ref": "#/definitions/OAuth2ClientApplication"
    },
    "OAuth2Credentials": {
     "$ref": "#/definitions/OAuth2Credentials"
    },
    "OAuth2GrantType": {
     "type": "string"
    },
    "TokenUrl": {
     "type": "string"
    },
    "TokenUrlParametersMap": {
     "type": "object"
    }
   },
   "type": "object"
  },
  "PhysicalConnectionRequirements": {
   "additionalProperties": false,
   "properties": {
    "AvailabilityZone": {
     "type": "string"
    },
    "SecurityGroupIdList": {
     "format": "AWS::EC2::SecurityGroup.Ids",
     "items": {
      "format": "AWS::EC2::SecurityGroup.Id",
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    },
    "SubnetId": {
     "format": "AWS::EC2::Subnet.Id",
     "type": "string"
    }
   },
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/Id"
 ],
 "properties": {
  "CatalogId": {
   "type": "string"
  },
  "ConnectionInput": {
   "$ref": "#/definitions/ConnectionInput"
  },
  "Id": {
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/Id"
 ],
 "required": [
  "ConnectionInput",
  "CatalogId"
 ],
 "typeName": "AWS::Glue::Connection"
}
