<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.springframework.org/schema/integration/http" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
			xmlns:tool="http://www.springframework.org/schema/tool"
			xmlns:integration="http://www.springframework.org/schema/integration"
			targetNamespace="http://www.springframework.org/schema/integration/http" elementFormDefault="qualified">

	<xsd:import namespace="http://www.springframework.org/schema/beans"/>
	<xsd:import namespace="http://www.springframework.org/schema/tool"/>
	<xsd:import namespace="http://www.springframework.org/schema/integration"
				schemaLocation="https://www.springframework.org/schema/integration/spring-integration.xsd"/>

	<xsd:annotation>
		<xsd:documentation><![CDATA[
	Defines the configuration elements for Spring Integration's HTTP adapters.
		]]></xsd:documentation>
	</xsd:annotation>

	<xsd:element name="inbound-channel-adapter">
		<xsd:annotation>
			<xsd:documentation>
				Configures a Message Producing Endpoint for the
				'org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport' that
				receives HTTP requests and doesn't produce responses.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="request-mapping" type="requestMappingType" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>
							Defines configuration for org.springframework.integration.http.inbound.RequestMapping
							as RESTFul attributes for Spring Integration HTTP Inbound Endpoints.
						</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="cross-origin" type="crossOriginType" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>
							Marks this endpoint as permitting cross origin requests (CORS).
						</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="header" type="headerType" minOccurs="0" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation>
							Specifies a Message header as a result of expression evaluation
							against ServletRequest and URI Variables.
						</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:sequence>
			<xsd:attributeGroup ref="integration:channelAdapterAttributes"/>
			<xsd:attribute name="send-timeout" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
						Maximum amount of time in milliseconds to wait when sending
						a message to the channel if such channel may block.
						For example, a Queue Channel can block until space
						is available if its maximum capacity has been reached.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="status-code-expression" type="xsd:string">
				<xsd:annotation>
					<xsd:documentation>
						A SpEL expression that resolves to an 'HttpStatus' code when rendering a response.
						The expression must return an object which can be converted to a
						'org.springframework.http.HttpStatus' enum value.
						The 'evaluationContext' has a 'BeanResolver' but no variables, so the usage of this attribute
						is somewhat limited.
						An example might be to resolve, at runtime, some scoped Bean that returns an
						'HttpStatus' value, or use a literal expression e.g. "201".
						By default 'status-code-expression' is null, meaning that the default '200 OK' response status
						will be returned.
						The 'http:inbound-gateway' resolves the 'status code' from the 'http_statusCode' header of the
						reply Message.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attributeGroup ref="inboundCommonAttributes"/>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="inbound-gateway">
		<xsd:annotation>
			<xsd:documentation>
				Configures a Messaging Gateway Endpoint for the
				'org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport' that
				receives HTTP requests and produces responses.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="gatewayType">
					<xsd:sequence>
						<xsd:element name="request-mapping" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>
									Defines configuration for
									org.springframework.integration.http.inbound.RequestMapping
									as RESTFul attributes for Spring Integration HTTP Inbound Endpoints.
								</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:complexContent>
									<xsd:extension base="requestMappingType">
										<xsd:attribute name="produces" type="xsd:string">
											<xsd:annotation>
												<xsd:documentation>
													The producible media types of the mapped request, narrowing the
													primary mapping.
													The format is a sequence of media types ("text/plain",
													"application/*),
													with a request only mapped if the Accept matches one of these media
													types.
													Expressions can be negated by using the "!" operator, as in
													"!text/plain", which matches
													all requests with a Accept other than "text/plain".
												</xsd:documentation>
											</xsd:annotation>
										</xsd:attribute>
									</xsd:extension>
								</xsd:complexContent>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="cross-origin" type="crossOriginType" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>
									Marks this endpoint as permitting cross origin requests (CORS).
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="header" type="headerType" minOccurs="0" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>
									Specifies a Message header as a result of expression evaluation
									against ServletRequest and URI Variables.
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
					<xsd:attribute name="request-channel" type="xsd:string" use="required">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.messaging.MessageChannel"/>
								</tool:annotation>
							</xsd:appinfo>
							<xsd:documentation>
								The receiving Message Channel of this endpoint.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attributeGroup ref="inboundCommonAttributes"/>
					<xsd:attribute name="extract-reply-payload" type="xsd:string" default="true">
						<xsd:annotation>
							<xsd:documentation>
								Specify whether only the reply Message's payload should be passed in the response.
								If this is set to 'false', the entire Message will be used to generate the response.
								The default is 'true'.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="convert-exceptions" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
								In the case that a view-name is not specified this attribute can be used to
								override the default behaviour when there is a message handling exception (which
								is to rethrow). If this flag is true then the normal conversion process will be
								applied to the exception and written out to the response body.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="mapped-response-headers" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Comma-separated list of names of MessageHeaders to be mapped into the HttpHeaders of the HTTP response.
	This can only be provided if the 'header-mapper' reference is not being set directly. The values in
	this list can also be simple patterns to be matched against the header names (e.g. "foo*" or "*foo").
	The String "HTTP_RESPONSE_HEADERS" will match against any of the standard HTTP Response headers.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="reply-key" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
								In the case that a view-name is specified this attribute can be used to
								override the default key of the MVC Controller's ModelAndView attribute
								to keep a reply from underlying message flow.
								Default is 'reply'.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="request-timeout" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Used to set the sendTimeout on the underlying MessagingTemplate instance
	(org.springframework.integration.core.MessagingTemplate) for sending messages
	to the request channel. If not specified this property will default to "1000"
	(1 second).
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="reply-timeout" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Used to set the receiveTimeout on the underlying MessagingTemplate instance
	(org.springframework.integration.core.MessagingTemplate) for receiving messages
	from the reply channel. If not specified this property will default to "1000"
	(1 second).
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="reply-timeout-status-code-expression" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
								A SpEL expression that resolves to an 'HttpStatus' code when rendering a response after
								a 'reply-timeout'.
								The expression must return an object which can be converted to a
								'org.springframework.http.HttpStatus' enum value.
								The 'evaluationContext' has a 'BeanResolver' but no variables, so the usage of this
								attribute
								is somewhat limited.
								An example might be to resolve, at runtime, some scoped Bean that returns an
								'HttpStatus' value, or use a literal expression e.g. "504".
								By default 'status-code-expression' is null, meaning that the default
								'500 Internal Server Error' response status will be returned after a timeout.
								When a timeout is not encountered,
								the 'http:inbound-gateway' resolves the 'status code' from the 'http_statusCode' header
								of the reply
								Message.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:attributeGroup name="inboundCommonAttributes">
		<xsd:attribute name="path" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					Comma-separated URI paths (e.g., /orderId/{order}).
					Ant-style path patterns are also supported (e.g. /myPath/*.do).
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="supported-methods">
			<xsd:annotation>
				<xsd:documentation>
					Comma-separated HTTP Method names. Determines which types of Request are
					allowed with this Endpoint.
				</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:union memberTypes="httpMethodEnumeration xsd:string"/>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="view-name" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					View name to be resolved when rendering a response.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="view-expression" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					SpEL expression that resolves to a view to be resolved when rendering a response.
					The expression can resolve to a view name or View object.
					In the case of 'inbound-gateway' the root object of the evaluation context is the reply message.
					In the case of 'inbound-channel-adapter' the 'evaluationContext' for this expression
					is rather lightweight, because there is no reply message, it has a
					'BeanResolver' but no variables,
					so the usage of this attribute is somewhat limited.
					An example might be to resolve, at runtime, some scoped Bean that returns a
					view name or View object.
					This attribute is not allowed if there is a 'view-name' attribute.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="error-code" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					In the case that a view-name is specified this attribute can be used to
					override the default error code under which the handling exception is exposed.
					Defaults to "spring.integration.http.handler.error" and is supplied with 3
					parameters: the exception itself, its message and its stack trace as a String.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="errors-key" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					In the case that a view-name is specified this attribute can be used to
					override the default key of the Errors (if the request cannot be handled).
					Defaults to "errors" (similar to normal MVC usage).
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="request-payload-type" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					Target type for payload that is the conversion result of the request.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="payload-expression" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					Allows you to specify SpEL expression to construct a Message payload
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="message-converters" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					List of HttpMessageConverters for this Channel Adapter.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="merge-with-default-converters" type="xsd:boolean" default="false">
			<xsd:annotation>
				<xsd:documentation>
					Flag to indicate if the default converters should be registered after any custom
					converters. This flag is used only if message-converters
					are provided, otherwise all default converters will be registered.

					Defaults to "false"
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="header-mapper" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.integration.mapping.HeaderMapper"/>
					</tool:annotation>
				</xsd:appinfo>
				<xsd:documentation>
					Specifies a reference to org.springframework.integration.mapping.HeaderMapper
					implementation bean. Only one of 'header-mapper' or 'mapped-request-headers' attributes
					can be provided.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="mapped-request-headers" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Comma-separated list of names of HttpHeaders to be mapped from the HTTP request into the MessageHeaders.
	This can only be provided if the 'header-mapper' reference is not being set directly. The values in
	this list can also be simple patterns to be matched against the header names (e.g. "foo*" or "*foo").
	The String "HTTP_REQUEST_HEADERS" will match against any of the standard HTTP Request headers.
							]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="error-channel" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.messaging.MessageChannel"/>
					</tool:annotation>
				</xsd:appinfo>
				<xsd:documentation>
					The MessagingGateway's 'error-channel' where to send an ErrorMessage in case
					of Exception is caused from original message flow.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="validator" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.validation.Validator"/>
					</tool:annotation>
				</xsd:appinfo>
				<xsd:documentation>
					A 'Validator' bean reference to validate a payload converted from the HTTP request.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:attributeGroup>

	<xsd:element name="outbound-channel-adapter">
		<xsd:annotation>
			<xsd:documentation>
				Configures a Consumer Endpoint for the
				'org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler'
				with 'expectReply = false' that sends HTTP requests based on incoming messages.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:choice minOccurs="0" maxOccurs="3">
				<xsd:element name="uri-variable" type="uriVariableType" minOccurs="0" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation>
							Specify an expression for URI variable placeholder within 'url'.
							This element is mutually exclusive with 'uri-variables-expression' attribute.
						</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="request-handler-advice-chain" type="integration:handlerAdviceChainType" minOccurs="0"
							 maxOccurs="1"/>
				<xsd:element ref="integration:poller" minOccurs="0" maxOccurs="1"/>
			</xsd:choice>
			<xsd:attributeGroup ref="integration:channelAdapterAttributes"/>
			<xsd:attributeGroup ref="httpOutboundCommonAttributes"/>
			<xsd:attributeGroup ref="syncHttpOutboundCommonAttributes"/>
			<xsd:attribute name="extract-payload" type="xsd:string" default="true">
				<xsd:annotation>
					<xsd:documentation>
						Specify whether the outbound message's payload should be extracted
						when preparing the request body. Otherwise, the Message instance itself
						will be serialized.
						The default value is 'true'.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
			<xsd:attribute name="trusted-spel">
				<xsd:annotation>
					<xsd:documentation>
						Set to 'true' if you trust SpEL expressions that might be evaluated to generate
						URI variables.
						The default value is 'false'.
					</xsd:documentation>
				</xsd:annotation>
				<xsd:simpleType>
					<xsd:union memberTypes="xsd:boolean xsd:string"/>
				</xsd:simpleType>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="outbound-gateway">
		<xsd:annotation>
			<xsd:documentation>
				Configures a Consumer Endpoint for the
				'org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler'
				that sends HTTP requests based on incoming messages and expects HTTP responses.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="gatewayType">
					<xsd:choice minOccurs="0" maxOccurs="3">
						<xsd:element name="uri-variable" type="uriVariableType" minOccurs="0" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>
									Specify an expression for URI variable placeholder within 'url'.
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="transactional" type="integration:transactionalType" minOccurs="0"
									 maxOccurs="1"/>
						<xsd:element name="request-handler-advice-chain" type="integration:handlerAdviceChainType"
									 minOccurs="0" maxOccurs="1"/>
						<xsd:element ref="integration:poller" minOccurs="0" maxOccurs="1"/>
					</xsd:choice>
					<xsd:attribute name="request-channel" type="xsd:string">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="org.springframework.messaging.MessageChannel"/>
								</tool:annotation>
							</xsd:appinfo>
							<xsd:documentation>
								The receiving Message Channel of this endpoint.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="mapped-response-headers" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	Comma-separated list of names of HttpHeaders to be mapped from the HTTP response into the MessageHeaders.
	This can only be provided if the 'header-mapper' reference is not being set directly. The values in
	this list can also be simple patterns to be matched against the header names (e.g. "foo*" or "*foo").
	The String "HTTP_RESPONSE_HEADERS" will match against any of the standard HTTP Response headers.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="extract-request-payload" type="xsd:string">
						<xsd:annotation>
							<xsd:documentation>
								Specifies whether the outbound message's payload should be extracted
								when preparing the request body. Otherwise, the Message instance itself
								will be serialized.
								The default value is 'true'.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="transfer-cookies" type="xsd:string" default="false">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
	When set to "true", if a response contains a 'Set-Cookie' header, it will be mapped to a 'Cookie' header.
	This enables simple cookie handling where subsequent HTTP interactions in the same message flow can use a cookie
	supplied by the server. Default is "false".
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="reply-timeout" type="xsd:string" default="30000">
						<xsd:annotation>
							<xsd:documentation><![CDATA[
								Allows you to specify how long this gateway will wait for
								the reply message to be sent successfully to the reply channel
								before throwing an exception. This attribute only applies when the
								channel might block, for example when using a bounded queue channel that
								is currently full.

								Also, keep in mind that when sending to a DirectChannel, the
								invocation will occur in the sender's thread. Therefore,
								the failing of the send operation may be caused by other
								components further downstream.

								The "reply-timeout" attribute maps to the "sendTimeout" property of the
								underlying 'MessagingTemplate' instance (org.springframework.integration.core.MessagingTemplate).

								The value is specified in milliseconds.
							]]></xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attributeGroup ref="httpOutboundCommonAttributes"/>
					<xsd:attributeGroup ref="syncHttpOutboundCommonAttributes"/>
					<xsd:attribute name="trusted-spel">
						<xsd:annotation>
							<xsd:documentation>
								Set to 'true' if you trust SpEL expressions that might be evaluated to generate
								URI variables.
								The default value is 'false'.
							</xsd:documentation>
						</xsd:annotation>
						<xsd:simpleType>
							<xsd:union memberTypes="xsd:boolean xsd:string"/>
						</xsd:simpleType>
					</xsd:attribute>
					<xsd:attribute name="extract-response-body" default="true">
						<xsd:annotation>
							<xsd:documentation>
								Set to 'false' to return the whole 'ResponseEntity' in the reply message payload.
								The default value is 'true'.
							</xsd:documentation>
						</xsd:annotation>
						<xsd:simpleType>
							<xsd:union memberTypes="xsd:boolean xsd:string"/>
						</xsd:simpleType>
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="graph-controller">
		<xsd:annotation>
			<xsd:documentation>
				Configures a
				'org.springframework.integration.http.management.IntegrationGraphController' bean
				to expose a REST API for the
				'org.springframework.integration.support.management.graph.IntegrationGraphServer' bean.
				Note: Spring Web MVC must be present in the application to enable and register this component.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:attribute name="path" type="xsd:string" default="/integration">
				<xsd:annotation>
					<xsd:documentation>
						The root request mapping path for the 'IntegrationGraphController'.
						Defaults to /integration.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>

	<xsd:complexType name="uriVariableType">
		<xsd:annotation>
			<xsd:documentation><![CDATA[
				Expression to be evaluated against the Message to replace a URI {placeholder} with the evaluation result.
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="name" use="required">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
					Name of the placeholder to be replaced.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="expression" use="required">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
					Expression to be evaluated to determine the replacement value.
					The Message is the root object of the expression, therefore
					the 'payload' and 'headers' are available directly. Any bean
					may be resolved if the bean name is preceded with '@'.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="headerType">
		<xsd:annotation>
			<xsd:documentation><![CDATA[
				Expression to be evaluated against the ServletRequest(makes BODY and Headers available)
				as well as URI Variables (e.g., foo/bar/{id}).
			]]></xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="name" use="required">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
					Name of the Message Header
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="expression" use="required">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
					Expression to be evaluated to determine the value of the header.
				]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:simpleType name="httpMethodEnumeration">
		<xsd:restriction base="xsd:token">
			<xsd:enumeration value="GET"/>
			<xsd:enumeration value="POST"/>
			<xsd:enumeration value="HEAD"/>
			<xsd:enumeration value="OPTIONS"/>
			<xsd:enumeration value="PUT"/>
			<xsd:enumeration value="DELETE"/>
			<xsd:enumeration value="TRACE"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="gatewayType">
		<xsd:annotation>
			<xsd:documentation>
				Defines common configuration for gateway adapters.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="id" type="xsd:string"/>
		<xsd:attribute name="reply-channel" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.messaging.MessageChannel"/>
					</tool:annotation>
				</xsd:appinfo>
				<xsd:documentation>
					Identifies the channel to which this gateway will subscribe, to receive(send) reply Messages.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attributeGroup ref="integration:smartLifeCycleAttributeGroup"/>
	</xsd:complexType>

	<xsd:complexType name="requestMappingType">
		<xsd:annotation>
			<xsd:documentation>
				Defines configuration for org.springframework.integration.http.inbound.RequestMapping
				as RESTFul attributes for Spring Integration HTTP Inbound Endpoints.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="params" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					The parameters of the mapped request, narrowing the primary mapping.
					A sequence of "myParam=myValue" style
					expressions, with a request only mapped if each such parameter is found
					to have the given value.
					Expressions can be negated by using the "!=" operator,
					as in "myParam!=myValue".
					"myParam" style expressions are also supported,
					with such parameters having to be present in the request (allowed to have
					any value).
					"!myParam" style expressions indicate that the
					specified parameter is not supposed to be present in the request.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="headers" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					The headers of the mapped request, narrowing the primary mapping.
					A sequence of "My-Header=myValue" style
					expressions, with a request only mapped if each such header is found
					to have the given value.
					Expressions can be negated by using the "!=" operator,
					as in "My-Header!=myValue".
					"My-Header" style expressions are also supported,
					with such headers having to be present in the request (allowed to have
					any value).
					"!My-Header" style expressions indicate that the
					specified header is not supposed to be present in the request.
					Also supports media type wildcards (*), for headers such as Accept
					and Content-Type. For instance, headers = "content-type=text/*"
					will match requests with a Content-Type of "text/html", "text/plain", etc.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="consumes" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					The consumable media types of the mapped request, narrowing the primary mapping.
					The format is a sequence of media types ("text/plain", "application/*),
					with a request only mapped if the Content-Type matches one of these media types.
					Expressions can be negated by using the "!" operator, as in "!text/plain", which matches
					all requests with a Content-Type other than "text/plain".
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="crossOriginType">
		<xsd:annotation>
			<xsd:documentation>
				Defines configuration for org.springframework.web.cors.CorsConfiguration.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="origin" type="xsd:string" default="*">
			<xsd:annotation>
				<xsd:documentation>
					List of allowed origins. "*" means that all origins are allowed. These values
					are placed in the 'Access-Control-Allow-Origin' header of both the pre-flight
					and actual responses. Default value is "*".
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="allowed-headers" type="xsd:string" default="*">
			<xsd:annotation>
				<xsd:documentation>
					Indicates which request headers can be used during the actual request. "*" means
					that all headers asked by the client are allowed. This property controls the value of
					pre-flight response's 'Access-Control-Allow-Headers' header.
					Default value is "*".
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="exposed-headers" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					List of response headers that the user-agent will allow the client to access. This property
					controls the value of actual response's 'Access-Control-Expose-Headers' header.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="method">
			<xsd:annotation>
				<xsd:documentation>
					The HTTP request methods to allow: GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE.
					Methods specified here overrides 'supported-methods' ones.
				</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:union memberTypes="httpMethodEnumeration xsd:string"/>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="allow-credentials" default="true">
			<xsd:annotation>
				<xsd:documentation>
					Set to "true" if the browser should include any cookies associated to the domain
					of the request being annotated, or "false" if it should not. Empty string "" means undefined.
					If true, the pre-flight response will include the header
					'Access-Control-Allow-Credentials=true'. Default value is "true".
				</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:union memberTypes="xsd:boolean xsd:string"/>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="max-age" default="1800">
			<xsd:annotation>
				<xsd:documentation>
					Controls the cache duration for pre-flight responses. Setting this to a reasonable
					value can reduce the number of pre-flight request/response interaction required by
					the browser. This property controls the value of the 'Access-Control-Max-Age' header
					in the pre-flight response. Value set to '-1' means undefined.
					Default value is 1800 seconds, or 30 minutes.
				</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:union memberTypes="xsd:long xsd:string"/>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:attributeGroup name="syncHttpOutboundCommonAttributes">
		<xsd:attribute name="rest-template" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.web.client.RestTemplate"/>
					</tool:annotation>
				</xsd:appinfo>
				<xsd:documentation>
					The reference to org.springframework.web.client.RestTemplate bean to send the HTTP Request.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="request-factory" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Reference to a ClientHttpRequestFactory to be used by the underlying RestTemplate.
					]]></xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.http.client.ClientHttpRequestFactory"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="error-handler" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					Reference to a ResponseErrorHandler to be used by the underlying RestTemplate.
				</xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.web.client.ResponseErrorHandler"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="message-converters" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					Provide a reference to a list of HttpMessageConverter instances. If specified,
					these converters will replace all default converters that would normally
					be present on the underlying RestTemplate.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:attributeGroup>

	<xsd:attributeGroup name="httpOutboundCommonAttributes">
		<xsd:attribute name="url" type="xsd:string" use="optional">
			<xsd:annotation>
				<xsd:documentation>
					<![CDATA[
	URL to which the requests should be sent. It may include {placeholders} for
	evaluation against uri-variables.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="url-expression" type="xsd:string" use="optional">
			<xsd:annotation>
				<xsd:documentation>
					<![CDATA[
	SpEL Expression resolving to a URL to which the requests should be sent. The resolved
	value may include {placeholders} for further evaluation against uri-variables.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="encoding-mode">
			<xsd:annotation>
				<xsd:documentation>
					Set the encoding mode during URI building.
					Defaults to 'TEMPLATE_AND_VALUES'
				</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:union memberTypes="encodingModeEnumeration xsd:string"/>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="http-method">
			<xsd:annotation>
				<xsd:documentation>
					The HTTP method to use when executing requests with this adapter Default is POST.
					This attribute cannot be provided if http-method-expression has a value.
				</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:union memberTypes="httpMethodEnumeration xsd:string"/>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="http-method-expression" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					The SpEL expression to determine HTTP method, use when executing requests with this adapter,
					dynamically. This attribute cannot be provided if http-method has a value.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="charset" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					Specify the charset name to use for converting String-typed payloads to bytes.
					The default is 'UTF-8'
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="expected-response-type" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					The expected type to which the response body should be converted.
					Default is 'null' - no body expected.
					This attribute cannot be provided if expected-response-type-expression has a value
				</xsd:documentation>
				<xsd:appinfo>
					<tool:annotation kind="direct">
						<tool:expected-type type="java.lang.Class"/>
					</tool:annotation>
				</xsd:appinfo>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="expected-response-type-expression" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation>
					SpEL expression to determine the type for the expected response to which the response body should be
					converted
					The returned value of the expression could be an instance of java.lang.Class or
					java.lang.String representing a fully qualified class name.
					This attribute cannot be provided if expected-response-type has a value
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="header-mapper" type="xsd:string">
			<xsd:annotation>
				<xsd:appinfo>
					<tool:annotation kind="ref">
						<tool:expected-type type="org.springframework.integration.mapping.HeaderMapper"/>
					</tool:annotation>
				</xsd:appinfo>
				<xsd:documentation>
					Specify a reference to org.springframework.integration.mapping.HeaderMapper
					implementation bean. Only one of 'header-mapper' or 'mapped-request-headers' attributes
					can be provided.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="mapped-request-headers" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Comma-separated list of names of MessageHeaders to be mapped into the HttpHeaders of the HTTP request.
	This can only be provided if the 'header-mapper' reference is not being set directly. The values in
	this list can also be simple patterns to be matched against the header names (e.g. "foo*" or "*foo").
	The String "HTTP_REQUEST_HEADERS" will match against any of the standard HTTP Request headers.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="order" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Specifies the order for invocation when this adapter is connected as a subscriber to a SubscribableChannel.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="uri-variables-expression" type="xsd:string">
			<xsd:annotation>
				<xsd:documentation><![CDATA[
	Specifies the SpEL expression to be evaluated as a Map for URI variable placeholders within 'url'.
	This attribute is mutually exclusive with 'uri-variable' sub-elements.
					]]></xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:attributeGroup>

	<xsd:simpleType name="encodingModeEnumeration">
		<xsd:restriction base="xsd:token">
			<xsd:enumeration value="TEMPLATE_AND_VALUES"/>
			<xsd:enumeration value="VALUES_ONLY"/>
			<xsd:enumeration value="URI_COMPONENT"/>
			<xsd:enumeration value="NONE"/>
		</xsd:restriction>
	</xsd:simpleType>

</xsd:schema>
