[[xchange-component]]
= XChange Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-xchange/src/main/docs/xchange-component.adoc
:docTitle: XChange
:artifactId: camel-xchange
:description: Access market data and trade on Bitcoin and Altcoin exchanges.
:since: 2.21
:supportLevel: Stable
:component-header: Only producer is supported

*Since Camel {since}*

*{component-header}*

The XChange component uses the https://knowm.org/open-source/xchange/[XChange] Java library to provide access to 60+ Bitcoin and Altcoin exchanges.
It comes with a consistent interface for trading and accessing market data. 

Camel can get crypto currency market data, query historical data, place market orders and much more.

Maven users will need to add the following dependency to their `pom.xml`
for this component:

[source,xml]
------------------------------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-xchange</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------

== URI format

[source,java]
---------------------------------
xchange://exchange?options
---------------------------------

== Options

// component options: START
The XChange component supports 2 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
|===
// component options: END

// endpoint options: START
The XChange endpoint is configured using URI syntax:

----
xchange:name
----

with the following path and query parameters:

=== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *name* | *Required* The exchange to connect to |  | String
|===


=== Query Parameters (7 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *currency* (producer) | The currency |  | Currency
| *currencyPair* (producer) | The currency pair |  | String
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *method* (producer) | *Required* The method to execute. The value can be one of: balances, fundingHistory, wallets, currencies, currencyMetaData, currencyPairs, currencyPairMetaData, ticker |  | XChangeMethod
| *service* (producer) | *Required* The service to call. The value can be one of: marketdata, metadata, account |  | XChangeService
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
|===
// endpoint options: END


== Authentication

This component communicates with supported crypto currency exchanges via REST API. Some API requests use simple unauthenticated GET request. 
For most of the interesting stuff however, you'd need an account with the exchange and have API access keys enabled.

These API access keys need to be guarded tightly, especially so when they also allow for the withdraw functionality. 
In which case, anyone who can get hold of your API keys can easily transfer funds from your account to some other address i.e. steal your money.   

Your API access keys can be strored in an exchange specific properties file in your SSH directory.
For Binance for example this would be: `~/.ssh/binance-secret.keys`

----
##
# This file MUST NEVER be commited to source control. 
# It is therefore added to .gitignore. 
#
apiKey = GuRW0*********
secretKey = nKLki************
----

== Message Headers

[TODO]

== Samples

In this sample we find the current Bitcoin market price in USDT:

[source,java]
---------------------------------------------------------------------------------------------
from("direct:ticker").to("xchange:binance?service=market&method=ticker&currencyPair=BTC/USDT")
---------------------------------------------------------------------------------------------

include::camel-spring-boot::page$xchange-starter.adoc[]
