Skip to main content
The Confluence recipe retrieves data from an instance of Atlassian’s Confluence corporate wiki system. You can view the configuration details and JSON recipe at the public REST configuration repository on GitHub in addition to this page.
Atlassian removed the Confluence v1 REST API from service on March 31, 2025. The previous recipe named confluence-v1.json relies on this older API and does not work as a result. All users must migrate to confluence.json, which requires the REST V2 connector v1.1.0 or later.

Update your Confluence recipe

If you are using the confluence-v1.json recipe, you must migrate to the confluence.json recipe. You have two options for updating to the confluence.json recipe:
  • Clear an existing datasource and replace the recipe. This is the recommended method.
  • Create a new datasource with the new recipe.
Before choosing a method, make sure you have downloaded the confluence.json recipe file and edited the following values in the file:
  • serviceURL: Your Confluence URL
  • Confluence username and password or API token
  • collection: Your Fusion collection name
  • pipeline: Your Fusion pipeline name
You must have the REST V2 connector installed before performing these steps.
To use the same REST V2 datasource for your updated Confluence recipe:
  • Navigate to Indexing > Datasources and select your existing REST V2 datasource.
  • Click Clear Datasource.
  • Use the Connector Datasources API to replace the datasource configuration. Replace AUTHORIZATION_CREDENTIALS with your Lucidworks login information in Base64:
curl --location --request PUT 'https://FUSION_HOST:FUSION_PORT/api/apps/APP_NAME/connectors/datasources/DATASOURCE_NAME' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic AUTHORIZATION_CREDENTIALS=' \
--data-raw 'FULL_JSON_RECIPE'
  • Return to your datasource in Fusion. Make any additional edits to your configuration and click Save.
  • Click Run, and then click Start to run your datasource.
To use a new datasource for your updated Confluence recipe:
  • Navigate to Indexing > Datasources.
  • Click Add + and select REST (v2) to create a new datasource.
  • Fill out the following required fields:
    • Enter a name for the connector in the Configuration ID field.
    • Enter your Fusion pipeline in the Pipeline ID field.
    • Enter your Confluence URL in the Service URL field.
  • Upload the recipe to Fusion with the Connector Datasources API. Replace AUTHORIZATION_CREDENTIALS with your Lucidworks login information in Base64:
curl --location --request POST 'https://FUSION_HOST:FUSION_PORT/api/apps/APP_NAME/connectors/datasources' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic AUTHORIZATION_CREDENTIALS=' \
--data-raw 'FULL_JSON_RECIPE'
  • Return to your datasource in Fusion. Make any additional edits to your configuration and click Save.
  • Click Run, and then click Start to run your datasource.

Confluence REST configuration

This documentation describes the Confluence REST confluence.json file configuration such as the authentication methods, data crawled and retrieved, pagination information, variables used, and endpoints used. Terminology is also provided as a reference. The list of data the REST connector crawls using the Confluence REST configuration is:
  • Spaces
  • Pages such as Wiki pages
  • Blog posts
  • Page and blog post comments
The REST connector indexes each item as individual Solr documents. The Confluence REST configuration uses hierarchical requests and requires the REST V2 connector v1.1.0 or later. The configuration uses the Confluence API v2.0.

Authentication methods

The Confluence REST configuration supports:
  • Basic Authentication using the username and password from an Atlassian account. For more information, see Basic auth for REST APIs.
  • API Token. For information about how to create a new API token, see API Tokens.

Supported crawl options

The Confluence REST configuration supports the following crawl options:
  • Full crawl
  • Recrawl that relies on the strayContentDeletion parameter

Pagination information

This recipe uses pagination per request. The connector requests the next page’s URL, and Confluence returns the next page’s URL in the response under the _links.next path. When _links.next is not provided in the response, the connector has found no more pages, and the pagination stops. The following code sample shows an example response snippet with a link to a next page:
"_links": {
    "next": "/wiki/api/v2/spaces/<spaceId>/pages?cursor=eyJpZCH6IjQ5ODcyOTR1IiwiY29udGVFdE9yZGVyIjoiaQQiLCJjb250ZW50T3JkZXJWYWx1ZSI6NDk4NzI5MzV9",
    "base": "https://CONFLUENCE_URL/wiki"
}

Configure the pagination by next page URL property

  • Next Page URL Key: _links.next, where _links.next is the key of the response that contains the next page URL

Configure query parameters

  • limit=50, where 50 is the number of items per page
Learn more about Confluence pagination.

Variables used

The Confluence REST configuration uses one variable. ${LW_PARENT_DATA_KEY} is used to access a value of the response from the main request to use in an additional request. The Confluence use case indicates this variable can be added to the URL to execute a GET request to retrieve comments for blog posts and pages.

Endpoints to configure with the Confluence REST connector

The following table describes the Confluence REST connector endpoints. Each request is configured under the property List of Requests Configuration, or under requestConfigurations in the Confluence recipe.
Request typeObjectTypeParent ObjectTypeEndpointQuery parametersDescription
Root RequestSPACEGET /wiki/api/v2/spaceslimit=50&description-format=plain&status=currentReturns the Spaces with status=current from the Atlassian Confluence instance.
Child RequestPAGESPACEGET /wiki/api/v2/spaces/${LW_PARENT_DATA_KEY}/pageslimit=50&body-format=storageReturn the Pages (children) per each Space retrieved with the previous request SPACE. Internally, the variable ${LW_PARENT_DATA_KEY} is replaced with the ‘id’ of the parent ‘space’, which is extracted by setting the property Response Handling -> parentDataKey=id.
Child RequestBLOGSPACEGET /wiki/api/v2/spaces/${LW_PARENT_DATA_KEY}/blogpostslimit=50&body-format=storageReturn the Blogs (children) per each Space retrieved with the previous request SPACE. Internally, the variable ${LW_PARENT_DATA_KEY} is replaced with the ‘id’ of the parent ‘space’, which is extracted by setting the property Response Handling -> parentDataKey=id.
Child RequestCOMMENT_FOOTER_PAGEPAGEGET /wiki/api/v2/pages/${LW_PARENT_DATA_KEY}/footer-commentslimit=50&body-format=storageReturn the Footer-Comments per each Page retrieved with the previous request PAGE. Internally, the variable ${LW_PARENT_DATA_KEY} is replaced with the ‘id’ of the parent ‘page’, which is extracted by setting the property Response Handling -> parentDataKey=id.
Child RequestCOMMENT_REPLY_FOOTER_PAGECOMMENT_FOOTER_PAGEGET /wiki/api/v2/footer-comments/${LW_PARENT_DATA_KEY}/childrenlimit=50&body-format=storageReturn the Replies per each Footer-Comment retrieved with the previous requests COMMENT_FOOTER_PAGE. Internally, the variable ${LW_PARENT_DATA_KEY} is replaced with the ‘id’ of the parent ‘footer-comment’, which is extracted by setting the property Response Handling -> parentDataKey=id. This request enables the property ‘Recursive Request’.
Child RequestCOMMENT_INLINE_PAGEPAGEGET /wiki/api/v2/pages/${LW_PARENT_DATA_KEY}/inline-commentslimit=50&body-format=storageReturn the inline comments per each Page retrieved with the previous request PAGE. Internally, the variable ${LW_PARENT_DATA_KEY} is replaced with the ‘id’ of the parent ‘page’, which is extracted by setting the property Response Handling -> parentDataKey=id.
Child RequestCOMMENT_REPLY_INLINE_PAGECOMMENT_INLINE_PAGEGET /wiki/api/v2/inline-comments/${LW_PARENT_DATA_KEY}/childrenlimit=50&body-format=storageReturn the Replies per each inline comment retrieved with the previous request COMMENT_INLINE_PAGE. Internally, the variable ${LW_PARENT_DATA_KEY} is replaced with the ‘id’ of the parent ‘inline-comment’, which is extracted by setting the property Response Handling -> parentDataKey=id. This request does not need to enable the ‘Recursive Request’
Child RequestCOMMENT_FOOTER_BLOGBLOGGET /wiki/api/v2/blogposts/${LW_PARENT_DATA_KEY}/footer-commentslimit=50&body-format=storageReturn the Footer-Comments per each Blog retrieved with the previous request BLOG. Internally, the variable ${LW_PARENT_DATA_KEY} is replaced with the ‘id’ of the parent ‘blog’, which is extracted by setting the property Response Handling -> parentDataKey=id.
Child RequestCOMMENT_REPLY_FOOTER_BLOGCOMMENT_FOOTER_BLOGGET /wiki/api/v2/footer-comments/${LW_PARENT_DATA_KEY}/childrenlimit=50&body-format=storageReturn the Replies per each Footer-Comment retrieved with the previous requests COMMENT_FOOTER_BLOG. Internally, the variable ${LW_PARENT_DATA_KEY} is replaced with the ‘id’ of the parent ‘footer-comment’, which is extracted by setting the property Response Handling -> parentDataKey=id. This request enables the property ‘Recursive Request’.
Child RequestCOMMENT_INLINE_BLOGBLOGGET /wiki/api/v2/blogposts/${LW_PARENT_DATA_KEY}/inline-commentslimit=50&body-format=storageReturn the inline comments per each Blog retrieved with the previous request BLOG. Internally, the variable ${LW_PARENT_DATA_KEY} is replaced with the ‘id’ of the parent ‘blog’, which is extracted by setting the property Response Handling -> parentDataKey=id.
Child RequestCOMMENT_REPLY_INLINE_BLOGCOMMENT_INLINE_BLOGGET /wiki/api/v2/inline-comments/${LW_PARENT_DATA_KEY}/childrenlimit=50&body-format=storageReturn the Replies per each inline comment retrieved with the previous request COMMENT_INLINE_BLOG. Internally, the variable ${LW_PARENT_DATA_KEY} is replaced with the ‘id’ of the parent ‘inline-comment’, which is extracted by setting the property Response Handling -> parentDataKey=id. This request does not need to enable the ‘Recursive Request’

Notes

  • The requests are linked hierarchically using the properties ObjectType and ParentObjectType.
    • This hierarchy maintains the parent-child relationships between different levels of objects. For instance, a Page is a Space-Child, a Comment is a Page-Child, and a Comment-Reply is a Comment-Child.
    • When objects are indexed, the field _lw_rest_parent_object_ss keeps the list of parents related to an object. For example, for a page, indexes _lw_rest_parent_object_ss: ["/spaces/TestSpaceName", "/spaces/TestSpace/pages/<pageId>/TestPageName"], where <pageId> is a numeric value.
  • With Confluence API v2 endpoints, different requests are needed to retrieve the footer comments and inline comments from pages and blog posts. To maintain the relationship between the comments, replies, and their parents (pages, blog posts, and spaces), there are eight different requests configurations.
    • To retrieve page comments: COMMENT_FOOTER_PAGE and COMMENT_INLINE_PAGE.
    • To retrieve replies of comments: COMMENT_REPLY_FOOTER_PAGE, and COMMENT_REPLY_INLINE_PAGE.
    • To retrieve blog comments: COMMENT_FOOTER_BLOG and COMMENT_INLINE_BLOG.
    • To retrieve replies of blog comments: COMMENT_REPLY_FOOTER_BLOG, and COMMENT_REPLY_INLINE_BLOG.
    • When comments are indexed, the field contains: _lw_rest_parent_object_ss: ["/spaces/TestSpaceName", "/spaces/TestSpace/pages/<pageId>/TestPageName", "<commentId>"].
    • When replies are indexed, the field contains: _lw_rest_parent_object_ss: ["/spaces/TestSpaceName", "/spaces/TestSpace/pages/<pageId>/TestPageName", "<commentId>", "<commentReplyId>"], where <pageId>, <commentId> and <commentReplyId> are numeric values.

Response parsing configuration

Per request, configure the Response Handling property to specify how to parse the response. This field is responseConfiguration in the JSON recipe. The Confluence recipe does not use binary parsing.

Plugin parsing

  • This parsing happens by default. The responses are parsed as a JSON object structure using JsonPath.
  • Plugin parsing applies to all the requests listed in the Endpoints configuration table.
  • The properties Response Handling -> Data ID, Data Path are configured to extract certain values from the objects parsed.
  • The properties Response Handling -> Parent Data Key are configured to extract the ‘id’ of the parent object.

Terminology

The following terms are provided as a reference.
TermDescription
List of Requests ConfigurationConfigure List of Requests to extract data from the REST source. Requests are linked hierarchically using the properties Parent-Child Request Link -> ObjectType and ParentObjectType.
Object TypeThe unique name to identify the request.
Parent Object TypeReference an existent Object Type. Create a parent-child hierarchy, where the current request becomes the child of the specified Parent Object Type. If blank, the current request is considered a Root-Request.
Root RequestThe type of request-configuration to retrieve the initial parent objects.
Child RequestThe type of request-configuration to retrieve children objects per each parent object. A child-request can be a parent of another child-request. As an example, a Footer-Comment is a child of a Page.
Recursive RequestWhen enabled, recursively performs the same ObjectType request configuration to retrieve all the nested objects under an object. This is particularly useful when the nesting depth is unknown. For example, the request ObjectType=COMMENT_REPLY_FOOTER_BLOG first retrieves only the direct replies from a comment (parent). When recursive requests are enabled, COMMENT_REPLY_FOOTER_BLOG executes recursively until no more replies are found.
Response HandlingThe responseConfiguration defines the mapping between the response and data objects to be indexed.
Data PathThe path to access a specific data object within a response. For example, to access a list of elements named with key objects, the data path is objects. If not provided, the entire response body is indexed. This property accepts JsonPath expressions such as objects, objects[*], or results to extract the list of Confluence objects.
Data IDThe identifier key for the data objects extracted with ‘Data Path’. This value is used to build the Solr document’s ID. If not provided, a random UUID is used. This property accepts JsonPath expressions such as _links.webui to extract the unique path of a Page.
Parent Data KeyRequired for all Child Requests. Map to a key from the parent object, whose value is used to replace the ${LW_PARENT_DATA_KEY} variable in the child request configuration (endpoint, query parameters or body). For example, /wiki/api/v2/spaces/${LW_PARENT_DATA_KEY}/blogposts
_lw_rest_object_type_sAll objects index this field, whose value is the ‘ObjectType’ of the request that retrieved the object.
_lw_rest_object_sAll objects index this field, whose value contains the objectId extracted with the property ‘Data ID’. For example, for a space, indexes _lw_rest_object_s: "/spaces/TestSpace". For a page, indexes _lw_rest_object_s: "/spaces/TestSpace/pages/<pageId>/TestPage", where <pageId> is a numeric value.
_lw_rest_parent_object_ssAll objects index this field, whose value is a list of the objectIds inherited from all their parents, and the objectId from the object itself. For example, for a space, indexes _lw_rest_parent_object_ss: ["/spaces/TestSpace"]. For a comment, indexes _lw_rest_parent_object_ss: ["/spaces/TestSpace", "/spaces/TestSpace/pages/<pageId>/TestPage", "<commentId>"], where <commentId> is a numeric value.

Recipe

Replace the following values in the recipe:
  • pipeline with your Fusion pipeline
  • collection with your Fusion collection
  • id with the name of a Fusion datasource if you want to use a different name than the one provided
  • serviceURL with your Confluence URL
  • password with your Confluence password or API token
  • user with your Confluence email address
{
  "parserId": "_system",
  "pipeline": "{add pipeline here}",
  "connector": "lucidworks.rest",
  "coreProperties": {},
  "id": "rest-confluence",
  "type": "lucidworks.rest",
  "properties": {
    "collection": "{add collection here}",
    "serviceURL": "{add confluence url}",
    "authenticationMode": {
      "basicAuth": {
        "password": "{EXAMPLE_PASSWORD_OR_API_TOKEN}",
        "user": "{EXAMPLE_USER_EMAIL}"
      }
    },
    "requestConfigurations": [
      {
        "request": {
          "recursiveRequest": false,
          "linkRequest": {
            "objectType": "SPACE"
          },
          "skipIndexation": false,
          "requestConfiguration": {
            "endpoint": "/wiki/api/v2/spaces",
            "pagination": {
              "paginationByNextUrl": {
                "paginationKey": "_links.next"
              }
            },
            "httpMethod": "GET",
            "queries": [
              {
                "queryKey": "limit",
                "queryValue": "50"
              },
              {
                "queryKey": "description-format",
                "queryValue": "plain"
              },
              {
                "queryKey": "status",
                "queryValue": "current"
              }
            ]
          },
          "responseConfiguration": {
            "dataId": "_links.webui",
            "binaryResponse": false,
            "dataPath": "results"
          }
        }
      },
      {
        "request": {
          "recursiveRequest": false,
          "linkRequest": {
            "parentObjectType": "SPACE",
            "objectType": "PAGE"
          },
          "skipIndexation": false,
          "requestConfiguration": {
            "endpoint": "/wiki/api/v2/spaces/${LW_PARENT_DATA_KEY}/pages",
            "pagination": {
              "paginationByNextUrl": {
                "paginationKey": "_links.next"
              }
            },
            "httpMethod": "GET",
            "queries": [
              {
                "queryKey": "limit",
                "queryValue": "50"
              },
              {
                "queryKey": "body-format",
                "queryValue": "storage"
              }
            ]
          },
          "responseConfiguration": {
            "dataId": "_links.webui",
            "binaryResponse": false,
            "dataPath": "results",
            "parentIdKey": "id"
          }
        }
      },
      {
        "request": {
          "recursiveRequest": false,
          "linkRequest": {
            "parentObjectType": "SPACE",
            "objectType": "BLOG"
          },
          "skipIndexation": false,
          "requestConfiguration": {
            "endpoint": "/wiki/api/v2/spaces/${LW_PARENT_DATA_KEY}/blogposts",
            "pagination": {
              "paginationByNextUrl": {
                "paginationKey": "_links.next"
              }
            },
            "httpMethod": "GET",
            "queries": [
              {
                "queryKey": "limit",
                "queryValue": "50"
              },
              {
                "queryKey": "body-format",
                "queryValue": "storage"
              }
            ]
          },
          "responseConfiguration": {
            "dataId": "_links.webui",
            "binaryResponse": false,
            "dataPath": "results",
            "parentIdKey": "id"
          }
        }
      },
      {
        "request": {
          "recursiveRequest": false,
          "linkRequest": {
            "parentObjectType": "PAGE",
            "objectType": "COMMENT_FOOTER_PAGE"
          },
          "skipIndexation": false,
          "requestConfiguration": {
            "endpoint": "/wiki/api/v2/pages/${LW_PARENT_DATA_KEY}/footer-comments",
            "pagination": {
              "paginationByNextUrl": {
                "paginationKey": "_links.next"
              }
            },
            "httpMethod": "GET",
            "queries": [
              {
                "queryKey": "limit",
                "queryValue": "50"
              },
              {
                "queryKey": "body-format",
                "queryValue": "storage"
              }
            ]
          },
          "responseConfiguration": {
            "dataId": "id",
            "binaryResponse": false,
            "dataPath": "results",
            "parentIdKey": "id"
          }
        }
      },
      {
        "request": {
          "recursiveRequest": true,
          "linkRequest": {
            "parentObjectType": "COMMENT_FOOTER_PAGE",
            "objectType": "COMMENT_REPLY_FOOTER_PAGE"
          },
          "skipIndexation": false,
          "requestConfiguration": {
            "endpoint": "/wiki/api/v2/footer-comments/${LW_PARENT_DATA_KEY}/children",
            "pagination": {
              "paginationByNextUrl": {
                "paginationKey": "_links.next"
              }
            },
            "httpMethod": "GET",
            "queries": [
              {
                "queryKey": "body-format",
                "queryValue": "storage"
              },
              {
                "queryKey": "limit",
                "queryValue": "50"
              }
            ]
          },
          "responseConfiguration": {
            "dataId": "id",
            "binaryResponse": false,
            "dataPath": "results",
            "parentIdKey": "id"
          }
        }
      },
      {
        "request": {
          "recursiveRequest": false,
          "linkRequest": {
            "parentObjectType": "PAGE",
            "objectType": "COMMENT_INLINE_PAGE"
          },
          "skipIndexation": false,
          "requestConfiguration": {
            "endpoint": "/wiki/api/v2/pages/${LW_PARENT_DATA_KEY}/inline-comments",
            "pagination": {
              "paginationByNextUrl": {
                "paginationKey": "_links.next"
              }
            },
            "httpMethod": "GET",
            "queries": [
              {
                "queryKey": "limit",
                "queryValue": "50"
              },
              {
                "queryKey": "body-format",
                "queryValue": "storage"
              }
            ]
          },
          "responseConfiguration": {
            "dataId": "id",
            "binaryResponse": false,
            "dataPath": "results",
            "parentIdKey": "id"
          }
        }
      },
      {
        "request": {
          "recursiveRequest": false,
          "linkRequest": {
            "parentObjectType": "COMMENT_INLINE_PAGE",
            "objectType": "COMMENT_REPLY_INLINE_PAGE"
          },
          "skipIndexation": false,
          "requestConfiguration": {
            "endpoint": "/wiki/api/v2/inline-comments/${LW_PARENT_DATA_KEY}/children",
            "pagination": {
              "paginationByNextUrl": {
                "paginationKey": "_links.next"
              }
            },
            "httpMethod": "GET",
            "queries": [
              {
                "queryKey": "limit",
                "queryValue": "50"
              },
              {
                "queryKey": "body-format",
                "queryValue": "storage"
              }
            ]
          },
          "responseConfiguration": {
            "dataId": "id",
            "binaryResponse": false,
            "dataPath": "results",
            "parentIdKey": "id"
          }
        }
      },
      {
        "request": {
          "recursiveRequest": false,
          "linkRequest": {
            "parentObjectType": "BLOG",
            "objectType": "COMMENT_FOOTER_BLOG"
          },
          "skipIndexation": false,
          "requestConfiguration": {
            "endpoint": "/wiki/api/v2/blogposts/${LW_PARENT_DATA_KEY}/footer-comments",
            "pagination": {
              "paginationByNextUrl": {
                "paginationKey": "_links.next"
              }
            },
            "httpMethod": "GET",
            "queries": [
              {
                "queryKey": "limit",
                "queryValue": "50"
              },
              {
                "queryKey": "body-format",
                "queryValue": "storage"
              }
            ]
          },
          "responseConfiguration": {
            "dataId": "id",
            "binaryResponse": false,
            "dataPath": "results",
            "parentIdKey": "id"
          }
        }
      },
      {
        "request": {
          "recursiveRequest": true,
          "linkRequest": {
            "parentObjectType": "COMMENT_FOOTER_BLOG",
            "objectType": "COMMENT_REPLY_FOOTER_BLOG"
          },
          "skipIndexation": false,
          "requestConfiguration": {
            "endpoint": "/wiki/api/v2/footer-comments/${LW_PARENT_DATA_KEY}/children",
            "pagination": {
              "paginationByNextUrl": {
                "paginationKey": "_links.next"
              }
            },
            "httpMethod": "GET",
            "queries": [
              {
                "queryKey": "body-format",
                "queryValue": "storage"
              },
              {
                "queryKey": "limit",
                "queryValue": "50"
              }
            ]
          },
          "responseConfiguration": {
            "dataId": "id",
            "binaryResponse": false,
            "dataPath": "results",
            "parentIdKey": "id"
          }
        }
      },
      {
        "request": {
          "recursiveRequest": false,
          "linkRequest": {
            "parentObjectType": "BLOG",
            "objectType": "COMMENT_INLINE_BLOG"
          },
          "skipIndexation": false,
          "requestConfiguration": {
            "endpoint": "/wiki/api/v2/blogposts/${LW_PARENT_DATA_KEY}/inline-comments",
            "pagination": {
              "paginationByNextUrl": {
                "paginationKey": "_links.next"
              }
            },
            "httpMethod": "GET",
            "queries": [
              {
                "queryKey": "limit",
                "queryValue": "50"
              },
              {
                "queryKey": "body-format",
                "queryValue": "storage"
              }
            ]
          },
          "responseConfiguration": {
            "dataId": "id",
            "binaryResponse": false,
            "dataPath": "results",
            "parentIdKey": "id"
          }
        }
      },
      {
        "request": {
          "recursiveRequest": false,
          "linkRequest": {
            "parentObjectType": "COMMENT_INLINE_BLOG",
            "objectType": "COMMENT_REPLY_INLINE_BLOG"
          },
          "skipIndexation": false,
          "requestConfiguration": {
            "endpoint": "/wiki/api/v2/inline-comments/${LW_PARENT_DATA_KEY}/children",
            "pagination": {
              "paginationByNextUrl": {
                "paginationKey": "_links.next"
              }
            },
            "httpMethod": "GET",
            "queries": [
              {
                "queryKey": "limit",
                "queryValue": "50"
              },
              {
                "queryKey": "body-format",
                "queryValue": "storage"
              }
            ]
          },
          "responseConfiguration": {
            "dataId": "id",
            "binaryResponse": false,
            "dataPath": "results",
            "parentIdKey": "id"
          }
        }
      }
    ]
  }
}