---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    funktion.fabric8.io/kind: Connector
  name: facebook
data:
  deployment.yml: |
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        funktion.fabric8.io/kind: Subscription
        connector: facebook
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            funktion.fabric8.io/kind: Subscription
            connector: facebook
        spec:
          containers:
          - image: funktion/connector-facebook:${project.version}
            name: connector
  schema.yml: |
    ---
    component:
      kind: component
      scheme: facebook
      syntax: facebook:methodName
      title: Facebook
      description: The Facebook component provides access to all of the Facebook APIs accessible using Facebook4J.
      label: social
      deprecated: false
      async: false
      javaType: org.apache.camel.component.facebook.FacebookComponent
      groupId: org.apache.camel
      artifactId: camel-facebook
      version: 2.18.3
    componentProperties:
      configuration:
        kind: property
        type: object
        javaType: org.apache.camel.component.facebook.config.FacebookConfiguration
        deprecated: false
        secret: false
        description: To use the shared configuration
        order: 0
    properties:
      methodName:
        kind: path
        group: common
        required: true
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: What operation to perform
        order: 0
      achievementURL:
        kind: parameter
        group: common
        type: string
        javaType: java.net.URL
        deprecated: false
        secret: false
        description: The unique URL of the achievement
        order: 1
      albumId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The album ID
        order: 2
      albumUpdate:
        kind: parameter
        group: common
        type: object
        javaType: facebook4j.AlbumUpdate
        deprecated: false
        secret: false
        description: The facebook Album to be created or updated
        order: 3
      appId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The ID of the Facebook Application
        order: 4
      center:
        kind: parameter
        group: common
        type: object
        javaType: facebook4j.GeoLocation
        deprecated: false
        secret: false
        description: Location latitude and longitude
        order: 5
      checkinId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The checkin ID
        order: 6
      checkinUpdate:
        kind: parameter
        group: common
        type: object
        javaType: facebook4j.CheckinUpdate
        deprecated: true
        secret: false
        description: The checkin to be created. Deprecated instead create a Post with an attached location
        order: 7
      clientURL:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Facebook4J API client URL
        order: 8
      clientVersion:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Facebook4J client API version
        order: 9
      commentId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The comment ID
        order: 10
      commentUpdate:
        kind: parameter
        group: common
        type: object
        javaType: facebook4j.CommentUpdate
        deprecated: false
        secret: false
        description: The facebook Comment to be created or updated
        order: 11
      debugEnabled:
        kind: parameter
        group: common
        type: boolean
        javaType: java.lang.Boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Enables deubg output. Effective only with the embedded logger
        order: 12
      description:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The description text
        order: 13
      distance:
        kind: parameter
        group: common
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        description: Distance in meters
        order: 14
      domainId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The domain ID
        order: 15
      domainName:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The domain name
        order: 16
      domainNames:
        kind: parameter
        group: common
        type: array
        javaType: java.util.List<java.lang.String>
        deprecated: false
        secret: false
        description: The domain names
        order: 17
      eventId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The event ID
        order: 18
      eventUpdate:
        kind: parameter
        group: common
        type: object
        javaType: facebook4j.EventUpdate
        deprecated: false
        secret: false
        description: The event to be created or updated
        order: 19
      friendId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The friend ID
        order: 20
      friendlistId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The friend list ID
        order: 21
      friendlistName:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The friend list Name
        order: 22
      friendUserId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The friend user ID
        order: 23
      groupId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The group ID
        order: 24
      gzipEnabled:
        kind: parameter
        group: common
        type: boolean
        javaType: java.lang.Boolean
        deprecated: false
        secret: false
        defaultValue: true
        description: Use Facebook GZIP encoding
        order: 25
      httpConnectionTimeout:
        kind: parameter
        group: common
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        defaultValue: "20000"
        description: Http connection timeout in milliseconds
        order: 26
      httpDefaultMaxPerRoute:
        kind: parameter
        group: common
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        defaultValue: "2"
        description: HTTP maximum connections per route
        order: 27
      httpMaxTotalConnections:
        kind: parameter
        group: common
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        defaultValue: "20"
        description: HTTP maximum total connections
        order: 28
      httpReadTimeout:
        kind: parameter
        group: common
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        defaultValue: "120000"
        description: Http read timeout in milliseconds
        order: 29
      httpRetryCount:
        kind: parameter
        group: common
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        defaultValue: "0"
        description: Number of HTTP retries
        order: 30
      httpRetryIntervalSeconds:
        kind: parameter
        group: common
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        defaultValue: "5"
        description: HTTP retry interval in seconds
        order: 31
      httpStreamingReadTimeout:
        kind: parameter
        group: common
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        defaultValue: "40000"
        description: HTTP streaming read timeout in milliseconds
        order: 32
      ids:
        kind: parameter
        group: common
        type: array
        javaType: java.util.List<java.lang.String>
        deprecated: false
        secret: false
        description: The ids of users
        order: 33
      inBody:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Sets the name of a parameter to be passed in the exchange In Body
        order: 34
      includeRead:
        kind: parameter
        group: common
        type: boolean
        javaType: java.lang.Boolean
        deprecated: false
        secret: false
        description: Enables notifications that the user has already read in addition to unread ones
        order: 35
      isHidden:
        kind: parameter
        group: common
        type: boolean
        javaType: java.lang.Boolean
        deprecated: false
        secret: false
        description: Whether hidden
        order: 36
      jsonStoreEnabled:
        kind: parameter
        group: common
        type: boolean
        javaType: java.lang.Boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: If set to true raw JSON forms will be stored in DataObjectFactory
        order: 37
      link:
        kind: parameter
        group: common
        type: string
        javaType: java.net.URL
        deprecated: false
        secret: false
        description: Link URL
        order: 38
      linkId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Link ID
        order: 39
      locale:
        kind: parameter
        group: common
        type: object
        javaType: java.util.Locale
        deprecated: false
        secret: false
        description: Desired FQL locale
        order: 40
      mbeanEnabled:
        kind: parameter
        group: common
        type: boolean
        javaType: java.lang.Boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: If set to true Facebook4J mbean will be registerd
        order: 41
      message:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The message text
        order: 42
      messageId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The message ID
        order: 43
      metric:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The metric name
        order: 44
      milestoneId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The milestone id
        order: 45
      name:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Test user name must be of the form 'first last'
        order: 46
      noteId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The note ID
        order: 47
      notificationId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The notification ID
        order: 48
      objectId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The insight object ID
        order: 49
      offerId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The offer id
        order: 50
      optionDescription:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The question's answer option description
        order: 51
      pageId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The page id
        order: 52
      permissionName:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The permission name
        order: 53
      permissions:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Test user permissions in the format perm1perm2...
        order: 54
      photoId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The photo ID
        order: 55
      pictureId:
        kind: parameter
        group: common
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        description: The picture id
        order: 56
      pictureId2:
        kind: parameter
        group: common
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        description: The picture2 id
        order: 57
      pictureSize:
        kind: parameter
        group: common
        type: string
        javaType: facebook4j.PictureSize
        enum:
        - square
        - small
        - normal
        - large
        deprecated: false
        secret: false
        description: The picture size
        order: 58
      placeId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The place ID
        order: 59
      postId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The post ID
        order: 60
      postUpdate:
        kind: parameter
        group: common
        type: object
        javaType: facebook4j.PostUpdate
        deprecated: false
        secret: false
        description: The post to create or update
        order: 61
      prettyDebugEnabled:
        kind: parameter
        group: common
        type: boolean
        javaType: java.lang.Boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Prettify JSON debug output if set to true
        order: 62
      queries:
        kind: parameter
        group: common
        type: object
        javaType: java.util.Map<java.lang.String,java.lang.String>
        deprecated: false
        secret: false
        description: FQL queries
        order: 63
      query:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: FQL query or search terms for search endpoints
        order: 64
      questionId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The question id
        order: 65
      reading:
        kind: parameter
        group: common
        type: object
        javaType: facebook4j.Reading
        deprecated: false
        secret: false
        description: Optional reading parameters. See Reading Options(reading)
        order: 66
      readingOptions:
        kind: parameter
        group: common
        type: object
        javaType: java.util.Map<java.lang.String,java.lang.Object>
        prefix: reading.
        multiValue: true
        deprecated: false
        secret: false
        description: To configure Reading using key/value pairs from the Map.
        order: 67
      restBaseURL:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        defaultValue: https://graph.facebook.com/
        description: API base URL
        order: 68
      scoreValue:
        kind: parameter
        group: common
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        description: The numeric score with value
        order: 69
      size:
        kind: parameter
        group: common
        type: string
        javaType: facebook4j.PictureSize
        enum:
        - square
        - small
        - normal
        - large
        deprecated: false
        secret: false
        description: The picture size one of large normal small or square
        order: 70
      source:
        kind: parameter
        group: common
        type: object
        javaType: facebook4j.Media
        deprecated: false
        secret: false
        description: The media content from either a java.io.File or java.io.Inputstream
        order: 71
      subject:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The note of the subject
        order: 72
      tabId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The tab id
        order: 73
      tagUpdate:
        kind: parameter
        group: common
        type: object
        javaType: facebook4j.TagUpdate
        deprecated: false
        secret: false
        description: Photo tag information
        order: 74
      testUser1:
        kind: parameter
        group: common
        type: object
        javaType: facebook4j.TestUser
        deprecated: false
        secret: false
        description: Test user 1
        order: 75
      testUser2:
        kind: parameter
        group: common
        type: object
        javaType: facebook4j.TestUser
        deprecated: false
        secret: false
        description: Test user 2
        order: 76
      testUserId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The ID of the test user
        order: 77
      title:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The title text
        order: 78
      toUserId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The ID of the user to tag
        order: 79
      toUserIds:
        kind: parameter
        group: common
        type: array
        javaType: java.util.List<java.lang.String>
        deprecated: false
        secret: false
        description: The IDs of the users to tag
        order: 80
      userId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The Facebook user ID
        order: 81
      userId1:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The ID of a user 1
        order: 82
      userId2:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The ID of a user 2
        order: 83
      userIds:
        kind: parameter
        group: common
        type: array
        javaType: java.util.List<java.lang.String>
        deprecated: false
        secret: false
        description: The IDs of users to invite to event
        order: 84
      userLocale:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The test user locale
        order: 85
      useSSL:
        kind: parameter
        group: common
        type: boolean
        javaType: java.lang.Boolean
        deprecated: false
        secret: false
        defaultValue: true
        description: Use SSL
        order: 86
      videoBaseURL:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        defaultValue: https://graph-video.facebook.com/
        description: Video API base URL
        order: 87
      videoId:
        kind: parameter
        group: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The video ID
        order: 88
      bridgeErrorHandler:
        kind: parameter
        group: consumer
        label: consumer
        type: boolean
        javaType: boolean
        optionalPrefix: consumer.
        deprecated: false
        secret: false
        defaultValue: false
        description: Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN/ERROR level and ignored.
        order: 89
      exceptionHandler:
        kind: parameter
        group: consumer (advanced)
        label: consumer,advanced
        type: object
        javaType: org.apache.camel.spi.ExceptionHandler
        optionalPrefix: consumer.
        deprecated: false
        secret: false
        description: To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN/ERROR level and ignored.
        order: 90
      exchangePattern:
        kind: parameter
        group: consumer (advanced)
        label: consumer,advanced
        type: string
        javaType: org.apache.camel.ExchangePattern
        enum:
        - InOnly
        - RobustInOnly
        - InOut
        - InOptionalOut
        - OutOnly
        - RobustOutOnly
        - OutIn
        - OutOptionalIn
        deprecated: false
        secret: false
        description: Sets the exchange pattern when the consumer creates an exchange.
        order: 91
      synchronous:
        kind: parameter
        group: advanced
        label: advanced
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
        order: 92
      httpProxyHost:
        kind: parameter
        group: proxy
        label: proxy
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: HTTP proxy server host name
        order: 93
      httpProxyPassword:
        kind: parameter
        group: proxy
        label: proxy
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: HTTP proxy server password
        order: 94
      httpProxyPort:
        kind: parameter
        group: proxy
        label: proxy
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        description: HTTP proxy server port
        order: 95
      httpProxyUser:
        kind: parameter
        group: proxy
        label: proxy
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: HTTP proxy server user name
        order: 96
      oAuthAccessToken:
        kind: parameter
        group: security
        label: security
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: true
        description: The user access token
        order: 97
      oAuthAccessTokenURL:
        kind: parameter
        group: security
        label: security
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        defaultValue: https://graph.facebook.com/oauth/access_token
        description: OAuth access token URL
        order: 98
      oAuthAppId:
        kind: parameter
        group: security
        label: security
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: true
        description: The application Id
        order: 99
      oAuthAppSecret:
        kind: parameter
        group: security
        label: security
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: true
        description: The application Secret
        order: 100
      oAuthAuthorizationURL:
        kind: parameter
        group: security
        label: security
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        defaultValue: https://www.facebook.com/dialog/oauth
        description: OAuth authorization URL
        order: 101
      oAuthPermissions:
        kind: parameter
        group: security
        label: security
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Default OAuth permissions. Comma separated permission names. See https://developers.facebook.com/docs/reference/login/permissions for the detail
        order: 102
  documentation.adoc: |
    [[Facebook-FacebookComponent]]
    Facebook Component
    ~~~~~~~~~~~~~~~~~~

    *Available as of Camel 2.12*

    The Facebook component provides access to all of the Facebook APIs
    accessible using http://facebook4j.org/en/index.html[Facebook4J]. It
    allows producing messages to retrieve, add, and delete posts, likes,
    comments, photos, albums, videos, photos, checkins, locations, links,
    etc. It also supports APIs that allow polling for posts, users,
    checkins, groups, locations, etc.

    Facebook requires the use of OAuth for all client application
    authentication. In order to use camel-facebook with your account, you'll
    need to create a new application within Facebook at
    https://developers.facebook.com/apps[https://developers.facebook.com/apps]
    and grant the application access to your account. The Facebook
    application's id and secret will allow access to Facebook APIs which do
    not require a current user. A user access token is required for APIs
    that require a logged in user. More information on obtaining a user
    access token can be found at
    https://developers.facebook.com/docs/facebook-login/access-tokens/[https://developers.facebook.com/docs/facebook-login/access-tokens/].

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

    [source,java]
    -----------------------------------------------
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-facebook</artifactId>
            <version>${camel-version}</version>
        </dependency>
    -----------------------------------------------

    [[Facebook-URIformat]]
    URI format
    ^^^^^^^^^^

    [source,java]
    ---------------------------------
      facebook://[endpoint]?[options]
    ---------------------------------

    [[Facebook-FacebookComponent.1]]
    FacebookComponent
    ^^^^^^^^^^^^^^^^^

    The facebook component can be configured with the Facebook account
    settings below, which are mandatory. The values can be provided to the
    component using the bean property *configuration* of type
    *org.apache.camel.component.facebook.config.FacebookConfiguration*. The
    *oAuthAccessToken* option may be ommited but that will only allow access
    to application APIs.




    // component options: START
    The Facebook component supports 1 options which are listed below.



    {% raw %}
    [width="100%",cols="2,1m,7",options="header"]
    |=======================================================================
    | Name | Java Type | Description
    | configuration | FacebookConfiguration | To use the shared configuration
    |=======================================================================
    {% endraw %}
    // component options: END





    // endpoint options: START
    The Facebook component supports 103 endpoint options which are listed below:

    {% raw %}
    [width="100%",cols="2,1,1m,1m,5",options="header"]
    |=======================================================================
    | Name | Group | Default | Java Type | Description
    | methodName | common |  | String | *Required* What operation to perform
    | achievementURL | common |  | URL | The unique URL of the achievement
    | albumId | common |  | String | The album ID
    | albumUpdate | common |  | AlbumUpdate | The facebook Album to be created or updated
    | appId | common |  | String | The ID of the Facebook Application
    | center | common |  | GeoLocation | Location latitude and longitude
    | checkinId | common |  | String | The checkin ID
    | checkinUpdate | common |  | CheckinUpdate | The checkin to be created. Deprecated instead create a Post with an attached location
    | clientURL | common |  | String | Facebook4J API client URL
    | clientVersion | common |  | String | Facebook4J client API version
    | commentId | common |  | String | The comment ID
    | commentUpdate | common |  | CommentUpdate | The facebook Comment to be created or updated
    | debugEnabled | common | false | Boolean | Enables deubg output. Effective only with the embedded logger
    | description | common |  | String | The description text
    | distance | common |  | Integer | Distance in meters
    | domainId | common |  | String | The domain ID
    | domainName | common |  | String | The domain name
    | domainNames | common |  | List | The domain names
    | eventId | common |  | String | The event ID
    | eventUpdate | common |  | EventUpdate | The event to be created or updated
    | friendId | common |  | String | The friend ID
    | friendlistId | common |  | String | The friend list ID
    | friendlistName | common |  | String | The friend list Name
    | friendUserId | common |  | String | The friend user ID
    | groupId | common |  | String | The group ID
    | gzipEnabled | common | true | Boolean | Use Facebook GZIP encoding
    | httpConnectionTimeout | common | 20000 | Integer | Http connection timeout in milliseconds
    | httpDefaultMaxPerRoute | common | 2 | Integer | HTTP maximum connections per route
    | httpMaxTotalConnections | common | 20 | Integer | HTTP maximum total connections
    | httpReadTimeout | common | 120000 | Integer | Http read timeout in milliseconds
    | httpRetryCount | common | 0 | Integer | Number of HTTP retries
    | httpRetryIntervalSeconds | common | 5 | Integer | HTTP retry interval in seconds
    | httpStreamingReadTimeout | common | 40000 | Integer | HTTP streaming read timeout in milliseconds
    | ids | common |  | List | The ids of users
    | inBody | common |  | String | Sets the name of a parameter to be passed in the exchange In Body
    | includeRead | common |  | Boolean | Enables notifications that the user has already read in addition to unread ones
    | isHidden | common |  | Boolean | Whether hidden
    | jsonStoreEnabled | common | false | Boolean | If set to true raw JSON forms will be stored in DataObjectFactory
    | link | common |  | URL | Link URL
    | linkId | common |  | String | Link ID
    | locale | common |  | Locale | Desired FQL locale
    | mbeanEnabled | common | false | Boolean | If set to true Facebook4J mbean will be registerd
    | message | common |  | String | The message text
    | messageId | common |  | String | The message ID
    | metric | common |  | String | The metric name
    | milestoneId | common |  | String | The milestone id
    | name | common |  | String | Test user name must be of the form 'first last'
    | noteId | common |  | String | The note ID
    | notificationId | common |  | String | The notification ID
    | objectId | common |  | String | The insight object ID
    | offerId | common |  | String | The offer id
    | optionDescription | common |  | String | The question's answer option description
    | pageId | common |  | String | The page id
    | permissionName | common |  | String | The permission name
    | permissions | common |  | String | Test user permissions in the format perm1perm2...
    | photoId | common |  | String | The photo ID
    | pictureId | common |  | Integer | The picture id
    | pictureId2 | common |  | Integer | The picture2 id
    | pictureSize | common |  | PictureSize | The picture size
    | placeId | common |  | String | The place ID
    | postId | common |  | String | The post ID
    | postUpdate | common |  | PostUpdate | The post to create or update
    | prettyDebugEnabled | common | false | Boolean | Prettify JSON debug output if set to true
    | queries | common |  | Map | FQL queries
    | query | common |  | String | FQL query or search terms for search endpoints
    | questionId | common |  | String | The question id
    | reading | common |  | Reading | Optional reading parameters. See Reading Options(reading)
    | readingOptions | common |  | Map | To configure Reading using key/value pairs from the Map.
    | restBaseURL | common | https://graph.facebook.com/ | String | API base URL
    | scoreValue | common |  | Integer | The numeric score with value
    | size | common |  | PictureSize | The picture size one of large normal small or square
    | source | common |  | Media | The media content from either a java.io.File or java.io.Inputstream
    | subject | common |  | String | The note of the subject
    | tabId | common |  | String | The tab id
    | tagUpdate | common |  | TagUpdate | Photo tag information
    | testUser1 | common |  | TestUser | Test user 1
    | testUser2 | common |  | TestUser | Test user 2
    | testUserId | common |  | String | The ID of the test user
    | title | common |  | String | The title text
    | toUserId | common |  | String | The ID of the user to tag
    | toUserIds | common |  | List | The IDs of the users to tag
    | userId | common |  | String | The Facebook user ID
    | userId1 | common |  | String | The ID of a user 1
    | userId2 | common |  | String | The ID of a user 2
    | userIds | common |  | List | The IDs of users to invite to event
    | userLocale | common |  | String | The test user locale
    | useSSL | common | true | Boolean | Use SSL
    | videoBaseURL | common | https://graph-video.facebook.com/ | String | Video API base URL
    | videoId | common |  | String | The video ID
    | bridgeErrorHandler | consumer | false | boolean | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN/ERROR level and ignored.
    | exceptionHandler | consumer (advanced) |  | ExceptionHandler | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN/ERROR level and ignored.
    | exchangePattern | consumer (advanced) |  | ExchangePattern | Sets the exchange pattern when the consumer creates an exchange.
    | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
    | httpProxyHost | proxy |  | String | HTTP proxy server host name
    | httpProxyPassword | proxy |  | String | HTTP proxy server password
    | httpProxyPort | proxy |  | Integer | HTTP proxy server port
    | httpProxyUser | proxy |  | String | HTTP proxy server user name
    | oAuthAccessToken | security |  | String | The user access token
    | oAuthAccessTokenURL | security | https://graph.facebook.com/oauth/access_token | String | OAuth access token URL
    | oAuthAppId | security |  | String | The application Id
    | oAuthAppSecret | security |  | String | The application Secret
    | oAuthAuthorizationURL | security | https://www.facebook.com/dialog/oauth | String | OAuth authorization URL
    | oAuthPermissions | security |  | String | Default OAuth permissions. Comma separated permission names. See https://developers.facebook.com/docs/reference/login/permissions for the detail
    |=======================================================================
    {% endraw %}
    // endpoint options: END


    [[Facebook-ProducerEndpoints:]]
    Producer Endpoints:
    ^^^^^^^^^^^^^^^^^^^

    Producer endpoints can use endpoint names and options from the table
    below. Endpoints can also use the short name without the *get* or
    *search* prefix, except *checkin* due to ambiguity between *getCheckin*
    and *searchCheckin*. Endpoint options that are not mandatory are denoted
    by [].

    Producer endpoints can also use a special option **inBody** that in turn
    should contain the name of the endpoint option whose value will be
    contained in the Camel Exchange In message. For example, the facebook
    endpoint in the following route retrieves activities for the user id
    value in the incoming message body.

    [source,java]
    --------------------------------------------------------------------
        from("direct:test").to("facebook://activities?inBody=userId")...
    --------------------------------------------------------------------

    Any of the endpoint options can be provided in either the endpoint URI,
    or dynamically in a message header. The message header name must be of
    the format
    *CamelFacebook.https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=CAMEL&title=option&linkCreation=true&fromPageId=34020899[option]*.
    For example, the *userId* option value in the previous route could
    alternately be provided in the message header *CamelFacebook.userId*.
    Note that the inBody option overrides message header, e.g. the endpoint
    option *inBody=user* would override a *CamelFacebook.userId* header.

    Endpoints that return a String return an Id for the created or modified
    entity, e.g. *addAlbumPhoto* returns the new album Id. Endpoints that
    return a boolean, return true for success and false otherwise. In case
    of Facebook API errors the endpoint will throw a RuntimeCamelException
    with a facebook4j.FacebookException cause.

    [[Facebook-ConsumerEndpoints:]]
    Consumer Endpoints:
    ^^^^^^^^^^^^^^^^^^^

    Any of the producer endpoints that take a
    https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=CAMEL&title=reading&linkCreation=true&fromPageId=34020899[reading#reading]
    parameter can be used as a consumer endpoint. The polling consumer uses
    the *since* and *until* fields to get responses within the polling
    interval. In addition to other reading fields, an initial *since* value
    can be provided in the endpoint for the first poll.

    Rather than the endpoints returning a List (or
    *facebook4j.ResponseList*) through a single route exchange,
    camel-facebook creates one route exchange per returned object. As an
    example, if *"facebook://home"* results in five posts, the route will be
    executed five times (once for each Post).

    [[Facebook-ReadingOptions]]
    Reading Options
    ^^^^^^^^^^^^^^^

    The *reading* option of type *facebook4j.Reading* adds support for
    reading parameters, which allow selecting specific fields, limits the
    number of results, etc. For more information see
    https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=CAMEL&title=Graph+API&linkCreation=true&fromPageId=34020899[Graph
    API#reading] -
    https://developers.facebook.com/docs/reference/api/#reading[Facebook
    Developers].

    It is also used by consumer endpoints to poll Facebook data to avoid
    sending duplicate messages across polls.

    The reading option can be a reference or value of type
    *facebook4j.Reading*, or can be specified using the following reading
    options in either the endpoint URI or exchange header with
    *CamelFacebook.* prefix.

    [[Facebook-Messageheader]]
    Message header
    ^^^^^^^^^^^^^^

    Any of the
    https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=CAMEL&title=URI+options&linkCreation=true&fromPageId=34020899[URI
    options#urioptions] can be provided in a message header for producer
    endpoints with *CamelFacebook.* prefix.

    [[Facebook-Messagebody]]
    Message body
    ^^^^^^^^^^^^

    All result message bodies utilize objects provided by the Facebook4J
    API. Producer endpoints can specify the option name for incoming message
    body in the *inBody* endpoint parameter.

    For endpoints that return an array, or *facebook4j.ResponseList*, or
    *java.util.List*, a consumer endpoint will map every elements in the
    list to distinct messages.

    [[Facebook-Usecases]]
    Use cases
    ^^^^^^^^^

    To create a post within your Facebook profile, send this producer a
    facebook4j.PostUpdate body.

    [source,java]
    ----------------------------------------------------
        from("direct:foo")
            .to("facebook://postFeed/inBody=postUpdate);
    ----------------------------------------------------

    To poll, every 5 sec (You can set the link:polling-consumer.html[polling
    consumer] options by adding a prefix of "consumer"), all statuses on
    your home feed:

    [source,java]
    -----------------------------------------------
        from("facebook://home?consumer.delay=5000")
            .to("bean:blah");
    -----------------------------------------------

    Searching using a producer with dynamic options from header.

    In the bar header we have the Facebook search string we want to execute
    in public posts, so we need to assign this value to the
    CamelFacebook.query header.

    [source,java]
    --------------------------------------------------------
        from("direct:foo")
            .setHeader("CamelFacebook.query", header("bar"))
            .to("facebook://posts");
    --------------------------------------------------------
