[[iota-component]]
= IOTA Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-iota/src/main/docs/iota-component.adoc
:docTitle: IOTA
:artifactId: camel-iota
:description: Manage financial transactions using IOTA distributed ledger.
:since: 2.23
:supportLevel: Stable
:component-header: Only producer is supported

*Since Camel {since}*

*{component-header}*

According to IOTA Official site: "IOTA is the first open-source distributed ledger that is being built to power the future of the Internet of Things with feeless microtransactions and data integrity for machines."

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-iota</artifactId>
    <version>x.y.z</version>
    <!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------

== Options

// component options: START
The IOTA 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 IOTA endpoint is configured using URI syntax:

----
iota: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* Component name |  | String
|===


=== Query Parameters (9 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *depth* (producer) | The depth determines how deep the tangle is analysed for getting Tips | 9 | Integer
| *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
| *minWeightMagnitude* (producer) | The minWeightMagnitude is the minimum number of zeroes that a proof-of-work output/transaction hash must end with to be considered valid by full nodes | 14 | Integer
| *operation* (producer) | *Required* Which operation to perform, one of: sendTransfer, getNewAddress, getTransfers. The value can be one of: sendTransfer, getNewAddress, getTransfers |  | String
| *tag* (producer) | TAG |  | String
| *url* (producer) | *Required* Node url |  | String
| *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
| *securityLevel* (security) | Address security level | 1 | Integer
|===
// endpoint options: END


== Sample route

The following route defined in Spring XML send a message to tangle

*Send message to tangle*

[source,xml]
----
<route>
  <from uri="direct:start" />
  <setMessage>
  	<constant>Hello world!</constant>
  </setMessage>
  <setHeader name="CamelIOTASeed">
  	<constant>MYSEEDHERE</constant>
  </setHeader>
  <setHeader name="CamelIOTAValue">
  	<constant>1</constant>
  </setHeader>
  <setHeader name="CamelIOTAToAddress">
  	<constant>RECIPIENTADDRESS</constant>
  </setHeader>
  <setHeader name="CamelIOTAToAddress">
  	<constant>RECIPIENTADDRESS</constant>
  </setHeader>
  <to uri="iota:good?url=https://node.iota.org:443&amp;operation=sendTransfer" />
  <to uri="direct:result" />
</route>
----

The following route defined in Spring XML create a new address

*Create a new address*

[source,xml]
----
<route>
  <from uri="direct:start" />
  <setHeader name="CamelIOTASeed">
  	<constant>MYSEEDHERE</constant>
  </setHeader>
  <setHeader name="CamelIOTAAddressIndex">
  	<constant>1</constant>
  </setHeader>
  <to uri="iota:good?url=https://node.iota.org:443&amp;operation=getNewAddress" />
  <to uri="direct:result" />
</route>
----

The following route defined in Spring XML retrieve transfers data

*Retrieve transfers*

[source,xml]
----
<route>
  <from uri="direct:start" />
  <setHeader name="CamelIOTASeed">
  	<constant>MYSEEDHERE</constant>
  </setHeader>
  <setHeader name="CamelIOTAAddressStartIndex">
  	<constant>1</constant>
  </setHeader>
  <setHeader name="CamelIOTAAddressEndIndex">
  	<constant>10</constant>
  </setHeader>
  <to uri="iota:good?url=https://node.iota.org:443&amp;operation=getTransfers" />
  <to uri="direct:result" />
</route>
----


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