anchor.diff:      }
   }
   ----
  -<1> As This configuration class provide the authentication information. We can type it as `Datastore`,
  -so that it can be validated using services (a kind of _test connection_ feature)
  -or used by Talend studio or web application metadata.
  -<2> This is the UI layout of this configuration.
  -<3> We mark the password as `Credential` to that it can be handled as sensitive data in Talend Studio and web application.
  -xref:tutorial-configuration-sensitive-data.adoc[Read more about sensitive data handling].
  -<4> This method generate a basic authentication token using the username and the password. This token will be used
  -to authenticate our http call to the Search API.
  -
  -Now that we have our data store configuration. that will provide us with the basic authentication token.
  -We need to setup our data set configuration.
  -i.e the search query that will define the records that our input component will provide.
  +<1> This configuration class provides the authentication information. Type it as `Datastore` so that it can be validated using services (similar to connection test) and used by Talend Studio or web application metadata.
  +<2> `@GridLayout` defines the UI layout of this configuration.
  +<3> The password is marked as `Credential` so that it is handled as sensitive data in Talend Studio and web applications. xref:tutorial-configuration-sensitive-data.adoc[Read more about sensitive data handling].
  +<4> This method generates a basic authentication token using the username and the password. This token is used to authenticate the HTTP call on the Search API.
  +
  +The data store is now configured. It provides a basic authentication token.
  +
  +=== Configuring the dataset
  +Once the data store is configured, you can define the dataset by configuring the search query. It is that query that defines the records processed by the input component.
   [source,java,indent=0,subs="verbatim,quotes,attributes",]
   ----
   @Data
  
positive.code: = Create components for REST API
  :page-partial:
  
  [[tutorial-create-components-rest-api]]
  
  In this tutorial we will show how to create components that consume a REST API.
  
  As an example, we will develop an input component that will provide a search functionality for Zendesk using there
  https://developer.zendesk.com/rest_api/docs/core/search[Search API].
  
  NOTE: We use lombok. to get ride of getters, setters and constructors from our classes.
  
  TIP: You can generate a project using the components kit starter as described in
  xref:tutorial-generate-project-using-starter.adoc[this tutorial].
  
  == Http client setup
  As our input component will relay on Zendesk Search API. We will need an http client to consume it.
  
  Zendesk Search API takes the following query parameters on this endpoint `/api/v2/search.json`.
  
  * *query*     : The search query.
  * *sort_by*   : One of `updated_at`, `created_at`, `priority`, `status`, or `ticket_type`. Defaults to sorting by `relevance`.
  * *sort_order*: One of `asc` or `desc`. Defaults to `desc`.
  
  So let's create our http client according to that.
  
  Talend component kit provides a built-in service to create an easy to use http client in a declarative manner using java annotations.
  [source,java,indent=0,subs="verbatim,quotes,attributes",]
  ----
  public interface SearchClient extends HttpClient { <1>
  
negative.code:     private final String sortOrder;
  }
  ----
  <1> The configuration class is marked as a `DataSet`. xref:component-configuration.adoc#_marking_a_configuration_as_a_particular_type_of_data [Read more about configuration types].
  <2> `@GridLayout` defines the UI layout of this configuration.
  <3> A text area widget is bound to the *Search query* field. xref:gallery.adoc[See all the available widgets].
  <4> The `@Documentation` annotation is used to document the component (configuration in this scope).
  A Talend Component Kit Maven plugin can be used to generate the component documentation with all the configuration description and the default values.
  <5> A default value is defined for sorting the query result.
  
  Your component is configured. You can now create the component logic.
  
  == Defining the component mapper
  NOTE: Mappers defined with this tutorial don't implement the split part because HTTP calls are not split on many workers in this case.
  [source,java,indent=0,subs="verbatim,quotes,attributes",]
  ----
  @Version
  