= Atmos Component
:doctitle: Atmos
:shortname: atmos
:artifactid: camel-atmos
:description: Integrate with EMC's ViPR object data services using the Atmos Client.
:since: 2.15
:supportlevel: Stable
:component-header: Both producer and consumer are supported
//Manually maintained attributes
:camel-spring-boot-name: atmos

*Since Camel {since}*

*{component-header}*

Camel-Atmos is an http://camel.apache.org/[Apache Camel] component that
allows you to work with ViPR object data services using the
https://github.com/EMCECS/atmos-client-java[Atmos Client].


// component-configure options: START

// component-configure options: END

// component options: START
include::partial$component-configure-options.adoc[]
include::partial$component-endpoint-options.adoc[]
// component options: END

// endpoint options: START

// endpoint options: END

// component headers: START
include::partial$component-endpoint-headers.adoc[]
// component headers: END

== Dependencies

To use Atmos in your camel routes you need to add the dependency
on *camel-atmos* which implements this data format.

If you use maven you could just add the following to your pom.xml,
substituting the version number for the latest & greatest release (see
the download page for the latest versions).

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

== Integrations

When you look at atmos integrations, there is one type of consumer, 
GetConsumer, which is a type of ScheduledPollConsumer. 

* `Get`

Whereas there are 4 types of producers which are 

* `Get` 
* `Del` 
* `Move`
* `Put`

== Operations

Regarding the operations, the following headers are set on camel
exchange

[source,text]
-------------------------------
DOWNLOADED_FILE, DOWNLOADED_FILES, UPLOADED_FILE, UPLOADED_FILES, DELETED_PATH, MOVED_PATH
-------------------------------

== Examples

=== Consumer Example

[source,java]
-------------------------------
from("atmos:foo/get?remotePath=/path")
  .to("mock:test");
-------------------------------

`remotePath` represents the path from where the data will
be read and passes the camel exchange to regarding producer
Underneath, this component uses Atmos client API for this and
every other operations.

=== Producer Example

[source,java]
-------------------------------
from("direct:start")
  .to("atmos://get?remotePath=/dummy/dummy.txt")
-------------------------------

`remotePath` represents the path where the operations occur
on ViPR object data service. In producers, operations(`Get`,`Del`,
`Move`,`Put`) run on ViPR object data services and results are set 
on headers of camel exchange.


include::spring-boot:partial$starter.adoc[]
