Toucan 3.0
YouPrep documentationHelp centerGet a demo
  • Welcome
    • ๐Ÿ‘‹Welcome to Toucan
    • โš™๏ธTechnical resources
      • โš™๏ธToucan stack
      • Setup mode
        • Toucan SaaS mode
      • โš™๏ธSecurity
        • Application Security
        • Source Code Quality
        • Global Security Practices
        • Security of Docker Images
  • TUTORIALS
    • ๐Ÿ“ŠGetting Started : Embedded Analytics
    • ๐Ÿค“Advanced tutorials
      • Embedding a story with user attributes
        • Dynamic filter with user attributes
        • Dynamic Tables
        • Dynamic Database
        • Dynamic Host
      • Using the HTTP API connector in advanced use cases
      • Using advanced syntax for SQL queries
      • Merging filters with our tool
      • Deep customization chart (CSS)
        • Homepage customization
        • Chart customization
        • Dashboard customization
  • Data Management
    • ๐ŸงฎOverview of Data In Toucan
    • ๐Ÿ“กDatasources in Toucan
      • ๐Ÿ”ŒManaging Connectors
        • ๐Ÿ”ŒCreating, editing and deleting a connector
        • ๐Ÿ”ŒSet up OAuth2 credentials for your platform
        • ๐Ÿ”ŒSetting up a connector
          • ๐Ÿ”ŒGeneric Connectors
            • ๐Ÿ”ŒSetting up an HTTP API connector
            • ๐Ÿ”ŒSetting up an ODBC Connector
          • ๐Ÿ”ŒDatabase and data warehouse Connectors
            • ๐Ÿ”ŒSetting up an AWS Redshift Connector
            • ๐Ÿ”ŒSetting up a Snowflake Connector
            • ๐Ÿ”ŒSetting up a PostgreSQL Connector
            • ๐Ÿ”ŒSetting up a Google Big Query Connector
            • ๐Ÿ”ŒSetting up an AWS Athena connector
            • ๐Ÿ”ŒSetting up a MySQL connector
            • ๐Ÿ”ŒSetting up a MongoDB connector
            • ๐Ÿ”ŒSetting up a Microsoft SQL Server connector
            • ๐Ÿ”ŒSetting up an Azure SQL connector
            • ๐Ÿ”ŒSetting a Databricks Connector
            • ๐Ÿ”ŒSetting up a ElasticSearch Connector
            • ๐Ÿ”ŒSetting up a Clickhouse Connector
          • ๐Ÿ”ŒOnline services connectors
            • ๐Ÿ”ŒSetting up a Sharepoint Connector
            • ๐Ÿ”ŒSetting up a Google Sheets Connector
            • ๐Ÿ”ŒSetting up a Salesforce Connector
            • ๐Ÿ”ŒSetting up a Hubspot Connector
          • ๐Ÿ”ŒSetting up an AWS S3 connector
      • ๐Ÿ“Managing Files
        • ๐Ÿ“Adding, editing and deleting local files
        • ๐Ÿ“‚Using advanced file settings
        • ๐Ÿ“Adding and combining remote files in Toucan
    • ๐Ÿ”ขDatasets in Toucan
      • ๐Ÿ”ขStored and Live Datasets
      • ๐Ÿ’ฟManaging datasets
        • ๐Ÿ”ขCreating datasets
        • ๐Ÿ”ขEditing, Duplicating and Deleting a dataset
        • ๐Ÿ”ขRefreshing and Publishing Datasets
        • ๐Ÿ“ˆOptimize data performance
        • ๐Ÿ—‚๏ธAdding indexes to stored datasets
        • ๐Ÿ‘ฉโ€๐Ÿ’ปCode mode and single mode
      • ๐Ÿ›‘Setting permissions on dataset
      • ๐Ÿ—ƒ๏ธMaintaining Data
        • ๐Ÿ—ƒ๏ธTagging datasets
        • ๐Ÿ—ƒ๏ธIdentifying datasets dependencies
        • ๐Ÿ—ƒ๏ธSet validation rules
    • ๐Ÿง‘โ€๐ŸณPreparing data
      • Overview of YouPrepโ„ข
        • ๐ŸŽนColumn header
          • Rename column
          • Duplicate column
          • Fill null values
          • Replace values
          • Sort values
          • Convert columns data types
        • Add
          • Add text column
          • Add formula column
          • Add conditional column
        • Filter
          • Delete columns
          • Keep columns
          • Filter rows
          • Top N rows
          • ArgMax
          • ArgMin
        • Aggregate
          • Group by
          • Add total rows
          • Hierarchical rollup
          • Get unique groups/values
        • Compute
          • Compute evolution
          • Cumulated sum
          • Percentage of total
          • Rank
          • Moving average
          • Compute statistics
          • Absolute value
        • Text
          • Concatenate
          • Split column
          • Extract substring
          • To lowercase
          • To uppercase
          • Compare text columns
          • Trim spaces
          • Replace text
        • Date
          • Convert text to date
          • Convert date to text
          • Extract date information
          • Add missing dates
          • Compute duration
        • Reshape
          • Pivot
          • Unpivot
          • Waterfall
        • Combine
          • Append datasets
          • Join datasets
        • Geo
          • Geographic dissolve
          • Geographic hierarchy
          • Geographic simplify
          • Prepare geo data (with basemap)
      • YouPrepโ„ข Native SQL
      • Hybrid pipeline
    • โžฟManaging variables in Toucan
      • โžฟVariables hub
      • โ™ˆUse variables in YouPrepโ„ข
      • โžฟEasy reference to variables
    • ๐ŸงžUsing advanced data concepts
      • ๐ŸงžData personnalisation with user attributes
        • Connector setup with a user attribute
        • Database selection with a user attribute
        • YouPrep data filtering with a user attribute
        • Filter data in SQL with a user attribute
      • ๐ŸงžAdvanced syntax for variables
      • ๐ŸงžData cache
  • Visualizations and Layouts
    • ๐Ÿ“บApps
      • ๐Ÿ“บManaging Apps
        • โž•Creating Apps
        • ๐Ÿ“„Duplicating Apps
        • ๐Ÿ–จ๏ธPublishing Apps
        • ๐ŸšฎDeleting Apps
        • โœ๏ธEditing within an App
      • ๐Ÿ–Œ๏ธCustomizing Apps
        • Customizing chart color elements
        • Customizing the app's font
        • Adding Assets
        • Adding Glossary
        • Setting up, Managing and testing custom visibilities
        • Customizing the "no data error" message
        • Creating a dynamic background based on an Filter's column
      • ๐Ÿ Home
        • Creating the Home
        • Creating Tiles
          • Tile Dynamic Value
          • Tile Leaderboard
          • Tile Line
          • Tile Scorecard
          • Tile Bullet
          • Tile Heatmap
          • Tile PDF
          • Tile Video
          • Tile Image
          • Tile Text
          • Tile HTML
          • Tile Separator
      • โœจStories
        • Creating a Story
        • KPIs
        • Narrative
        • Crossfilter
      • ๐Ÿ“ฝ๏ธFilters
        • Managing Filters
          • Creating, reusing and editing Filters
          • Applying Filters
          • Unpinning and deleting Filters
        • Type of Filters
          • Dropdown
          • Checkboxes
          • Buttons
          • Date Range
          • Hierarchical
          • Slider
        • Templating from Filters' values
        • Dependant Filters
      • ๐Ÿ“ˆPDF Report
      • ๐ŸŽกDatawall
      • ๐Ÿ—๏ธDashboard Builder
        • Create a Dashboard Builder
        • Embed a Dashboard Builder
        • Dashboard export options
      • ๐ŸŒŸMyFavorites
    • ๐Ÿ“ŠCreating Visualizations
      • ๐ŸคฉViz Gallery
        • Barchart
        • Barlinechart
        • Bubblechart
        • Bulletchart
        • Circularchart
        • Funnelchart
        • Gantt chart
        • Heatmap
        • HTML
        • Leaderboard
        • Leaderboard Centered Average
        • Linechart
        • Mapchart
          • Configure a drill
        • Mediachart
        • Radarchart
        • Tablechart
        • Timeline
        • Versuschart
        • Waterfallchart
        • Score Card
        • Stacked Barchart
      • ๐Ÿง Common Chart Configuration
      • ๐Ÿ’…Customizing chart colors
      • ๐Ÿงžโ€โ™‚๏ธAdvanced chart configuration
        • Templating from chart's dataset
        • Add units, precisions and sentiments
        • Adding Tutorials
        • Add sparklines
        • Navigate with stories
        • Group informations in your stories
        • Multiple charts in one story
        • Manage dates
        • Customize tiles' sources
        • Add stars to tiles' title
        • Manage data order in your tiles
        • Navigate with tiles
    • ๐Ÿ‘ฉโ€๐Ÿ’ปEmbedding
      • ๐Ÿ”Authentication
      • ๐Ÿ–‡๏ธIntegration
        • Generate and manage embeds
        • Customize embeds
        • Embedding a Toucan App Using iFrames
        • Passing Extra Variables to Your Toucan Embed
      • โš™๏ธEmbed SDK
        • Embed SDK Authentication
      • โ“FAQ
    • ๐Ÿ™‹Self-Service
      • Self-Service Dashboard
      • Self-service PDF Report
  • Collaboration
    • โฐCreating alerts
    • ๐Ÿ“งManaging notifications
    • โž•Enriching a story with descriptions
    • ๐Ÿ’ŒSharing content
    • ๐Ÿ’ฌAdding comments to stories
  • Administration
    • Page
    • โš™๏ธInstance Management
      • โš™๏ธManaging operations in SaaS
      • โš™๏ธCustomizing your instance (whitelabel)
    • ๐Ÿ‘ฅManaging Users
      • ๐Ÿ‘ฅUsers
      • ๐Ÿ‘ฅManaging user groups
      • ๐Ÿ‘ฅManaging user properties
      • ๐Ÿ‘ฅSetting up permissions and visibilities
    • ๐ŸŒManaging languages in Toucan (internationalisation)
    • ๐Ÿ“ˆMonitoring Engagement with User Analytics
      • ๐ŸŽ›๏ธHow to Filter your User Analytics?
      • ๐Ÿ–ฅ๏ธUnderstanding your User Analytics Dashboards
  • Additional Ressources
    • ๐Ÿ“šExternal documentation
    • ๐ŸšSupport for App-builders
    • ๐Ÿ†•Latest releases
      • ๐ŸŽ2025 Releases
      • ๐ŸŽ2024 Releases
      • ๐ŸŽ2023 Releases
    • ๐Ÿ”งTroubleshooting
      • Troubleshoot:: DataHub
      • Cross-Site Cookies
      • How to :: read the inspector error
      • How to :: troubleshoot the toucan way
Powered by GitBook
On this page
  • Overview
  • Configuring the connector
  • Responsetype
  • Retrypolicy
  • Certificate
  • Auth
  • Authentication
  • Template
  • Selecting data from the API
  • Pagination
  • Example of connection to Open Data Paris
  • Setting up the connection to Open Data Paris
  • Selecting data from Open Data Paris

Was this helpful?

  1. Data Management
  2. Datasources in Toucan
  3. Managing Connectors
  4. Setting up a connector
  5. Generic Connectors

Setting up an HTTP API connector

Last updated 2 months ago

Was this helpful?

Overview

This is a generic connector to get data from any HTTP APIs (REST style APIs). Itโ€™s really customizable and versatile but it implies a more complex configuration.

This type of data source combines the features of Pythonโ€™s library to get data from any API with the filtering langage for flexible transformations of the responses. Optionally, an string can be provided to first parse the XML response and then the jq filter is be applied to get the data in tabular format.

Configuring the connector

To configure this connector you will need to use the documentation of the API you need to connect to

Responsetype

The type of response the connector has to expect from the queried API.

Make sure you use the correct responsetype, based on the queried APIโ€™s documentation. Currently JSON & XML are supported, the default being JSON.

Retrypolicy

Defines how the connector should behave when the network is unreachable:

  • MAX ATTEMPTS: number of attempts to do before aborting the connexion

  • MAX DELAY: total time to wait before aborting the connexion

  • WAIT TIME: time to wait between each attempt

Certificate

If the connector must use a certificate to establish the connexion, you can provide the path to the certificate.

Auth

The authentication method that the connector should use to query the data. AUTHTYPE Can be:

  • basic: username password, you can provide them in

    • positional arguments: input your username and password in the right order

    • named arguments: input them this way {โ€œusernameโ€:โ€myusernameโ€, โ€œpasswordโ€:โ€mypasswordโ€}

  • digest: same as above

  • oAuth1:

    • positional arguments: input client_id (sometimes named client_key) and client_secret. Both are provided by the service you are trying to access

    • named arguments: input {โ€œclient_idโ€:your_client_id, โ€œclient_secretโ€: your_client_secret}.

  • oAuth2: (deprecated)

    • named arguments: input {โ€œclient_idโ€:your_client_id, โ€œclient_secretโ€: your_client_secret}.

  • CustomTokenServer: provides a flexible mechanism for authenticating API requests using a custom token server. the token you get is then sent in the the Authorization header prefixed with "Bearer {{your_token}}" . In the named arguments section you have to fill as a json dict the required elements to get your token:

    • method: The HTTP method to use when requesting the token (e.g., 'GET', 'POST').

    • url: The URL to get the token server.

    • params (optional): Query parameters to include in the token request.

    • data (optional): Form data to include in the token request body.

    • headers (optional): Additional headers to include in the token request.

    • json (optional): JSON payload to include in the token request body.

    • token_header_name: allows to override the default Authorization header.

    • filter (optional): A JQ-style filter to extract the token from the response. Defaults to "." (root of the JSON response).

Authentication

For now we only support the Grant Type: Authorization Code. This section outlines the fiels available for configuring this method

  • Configuration Type (dropdown list) : AuthorizationCodeOauth2 (only option available for now)

    • Authentication URL (mandatory): the URL used to initiate the OAuth2.0 authorization process. For example:https://auth.api-acme.com/oauth/authorize

    • Token URL (mandatory): The URL used to exchange the authorization code for an access token. For example: https://auth.api-acme.com/oauth/token

    • Scope (mandatory): The permissions requested from the OAuth2.0 provider. For example: read write profile

    • Additional authentication params (optional): a JSON object containing additional URL parameters to be included in the authentication request . For example:{"add_param1": "value_2", "add_param2": "value_2"}

    • Client Id (mandatory): The unique identifier for your application, provided by the OAuth2.0 service. For example: client_abc123

    • Client Secret (mandatory): The secret key associated with your client ID. For example: secret_xyz789

Redirect URL

Make sure you authorize this URL in your OAuth2.0 provider, it is necessary to complete the OAuth2.0 process of exchanging information

Additional authentication params

Some OAuth2.0 providers can ask for additional parameters in the request. By default we only send the following fields

  • client id (for example client_abc123)

  • redirect_uri (for example https://api-{{my-workspace}}.toucantoco.guru/{{my-app}}/connectors/http/authentication/redirect)

  • response_type (for example code)

  • scope (for example read write profile)

  • state (for example xyz123securestate which is a random string for CSRF protection)

{

"prompt": "consent",

"access_type": "offline",

"response_type": "code"

}

Template

You can use this object to avoid repetition in data sources. The values of the three attributes will be used or overridden by all data sources using this connector.

  • json: a JSON object of parameters to send in the body of every HTTP request made using the configured connector. Example: { โ€œoffsetโ€: 100, โ€œlimitโ€: 50 }

  • headers: a JSON object of parameters to send in the header of every HTTP request made using the configured connector. Example: { โ€œcontent-typeโ€: โ€œapplication/xmlโ€ }

  • params: a JSON object of parameters to send in the query string of every HTTP request made using the configured connector. Example: { โ€œoffsetโ€: 100, โ€œlimitโ€: 50}

  • proxies: JSON object expressing a mapping of protocol or host to corresponding proxy. Example {โ€œhttpโ€: โ€œfoo.bar:3128โ€, โ€œhttp://host.nameโ€: โ€œfoo.bar:4012โ€}

Selecting data from the API

Endpoint URL

Endpoint parameters

  • Method: Defines the http method you want the datasource to perfom, GET, POST or PUT. Default is GET. You can find the method you need in the documentation of the API you want to query

  • headers: a JSON object of parameters to send in the header of every HTTP request made using the configured connector. Example: { โ€œcontent-typeโ€: โ€œapplication/xmlโ€ }. Overwrites the headerโ€™s parameter in Template

  • URL params: a JSON object of parameters to send in the query string of every HTTP request made using the configured connector. Example: { โ€œoffsetโ€: 100, โ€œlimitโ€: 50} Overwrites the params parameter in Template

  • Body: a JSON object of parameters to send in the body of every HTTP request made using the configured connector. Example: { โ€œdataโ€: โ€œmy_parametersโ€ }.

Advanced

  • parameters: A JSON object that will be used for variables interpolation in the query string. For testing purpose only. In production mode, it should be left blank as variable interpolation will be handled by the app requester.

  • json: a JSON object of parameters to send in the body of every HTTP request made using the configured connector. Example: { โ€œoffsetโ€: 100, โ€œlimitโ€: 50 } Overwrites the JSON parameter in Template

  • proxies: JSON object expressing a mapping of protocol or host to corresponding proxy. Example {โ€œhttpโ€: โ€œfoo.bar:3128โ€, โ€œhttp://host.nameโ€: โ€œfoo.bar:4012โ€} Overwrites the proxies parameter in Template

  • flatten column: optional field where you can specify the name of a column that contains nested rows. the column names in the resulting DataFrame will be prefixed with the original column name. Specified more parameters using a , delimiter. If specified, the nested rows will be flattened into separate columns in the resulting data frame. Example if you have a column orders: [{"id": 3, "product": "Notebook", "price": 5.99}] results will be separated in orders_id, orders_product and orders_price

  • data: Two options, Type1 for a simple string, Type2 for a JSON field. ๐Ÿ’ก you can send XML data with Type1 option

  • <?xml version="1.0" encoding="UTF-8"?>
    <result>
    <bookstore>
        <book>
            <title>Harry Potter</title>
            <price>29.99</price>
        </book>
        <book>
            <title>Learning XML</title>
            <price>39.95</price>
        </book>
    </bookstore>
    </result>

In the connector weโ€™ll have a response like this:

{"bookstore": {"book": [{"title":"Harry Potter", "price": "29.99"}, {"title": "Learning XML", "price":"39.95"}]}}

And we can then apply a:

  • filter: ".bookstore.book[]"

Letโ€™s take the JSON defined above

{"bookstore": {"book": [{"title":"Harry Potter", "price": "29.99"}, {"title": "Learning XML", "price":"39.95"}]}}

We apply the filter โ€œ.bookstore.book[]โ€ which means that it will extract the book list from the bookstore So we end up with a table of results looking like this:

title
price

Harry Potter

29.99

Learning XML

39.95

Note: the reason to have a filter option is to allow you to take any API response and transform it into something that fits into a column based data frame.

Pagination

This section presents the pagination support of Toucan. Pagination options allows to setup a configuration which will loop the results of a query until all results are retrieved.

Throttling and large datasets Throttling

We do not support throttling meaning that we do not have a speed limit feature when we request an API. This means we cannot control how quickly requests are sent. As a result, if too many requests are made too quickly, it might trigger an error message saying the system is overloaded. Large datasets Toucan execution preview calls are synchronous, which means that we only have 30 seconds to fetch and transform data. Depending in the query, it could be an issue if you are working on live data, prefer store datasets if it is the case.

Pagination configuration types

Offset Limit (OffsetLimitPaginationConfig)

This configuration type implements the offset/limit pagination pattern.

Parameters

  • offset_name: (string) Parameter name for offset (default: offset)

  • limit_name: (string) Parameter name for limit (default: "limit")

  • limit: (int) mandatory Number of items per request

  • data_filter: (string) mandatory offset pagination config field to determine which part of data must be used to compute the data length in the form of a JQ filter

Use case: APIs using offset/limit style pagination.

offset-limit example

Let's take the following configuration

  • "offset_name": "custom_offset"

  • "limit_name": "custom_limit"

  • "limit": 50

  • "data filter": ".items"

We will perform the following calls:

  • https://my-api.com/data?custom_limit=50&custom_offset=0

  • https://my-api.com/data?custom_limit=50&custom_offset=49

  • https://my-api.com/data?custom_limit=50&custom_offset=99

  • https://my-api.com/data?custom_limit=50&custom_offset=149 ...

until there is no more page to access to.

Page-based pagination (PageBasedPaginationConfig)

This configuration implements page-based pagination

Parameters:

  • page_name: (string) Parameter name for the page (default: page)

  • page: (int) mandatory Current page number

  • per_page_name: (string) Parameter name for items per page

  • per_page: (int) Number of items per page

  • max_page_filter: (string) JQ filter to extract maximum page number

  • can_raise_not_found: (boolean) Whether 404 errors should be treated as end of pagination, must be set if no max_page_filter is available

Use case: Traditional APIs using page numbers where the information can be found in the response body.

page-based example

Let's take the following configuration

  • "page_name": "custom_page"

  • "page": 1

  • "per_page_name": "custom_per_page"

  • "per_page": 100

  • "max_page_filter": ".infos.last_page"

  • "Can Raise Not Found": False

We will perform the following calls:

  • https://my-api.com/data?custom_page=1&custom_per_page=100

  • https://my-api.com/data?custom_page=2&custom_per_page=100

Until we reach the last page indicated in max_page_filter and stop the data fetching.

For a configuration as below, where there is no per_page parameter to set and no information related to the last page in the response body. The configuration will look like this:

  • "page_name": "page"

  • "page": 1

  • "per_page_name": ""

  • "per_page":

  • "max_page_filter": ""

  • Can Raise Not Found: True

We will perform the following calls:

  • https://my-api.com/data?page=1

  • https://my-api.com/data?page=2

Until we reach a 404 when no page will return us then we will stop the data fetching.

Cursor based pagination (CursorBasedPaginationConfig)

This configuration implements cursor-based pagination

Parameters:

  • cursor_name: (string) mandatory Parameter name for the cursor (default: cursor)

  • cursor_filter: (string) mandatory JQ filter to extract next cursor

Use case: APIs using cursors/tokens for pagination.

cursor-based example

Let's take the following configuration

  • "cursor_name": "token"

  • "cursor_filter": ".metadata.next_cursor"

We will perform the following call:

  • https://my-api.com/data

{

"data": [

... // API data

],

"metadata": {

"next_cursor": "abcde12345"

}

}

  • https://my-api.com/data?token=abcde12345

Until the next cursor is null

Hyper Media Pagination (HyperMediaPaginationConfig)

This configuration implements HATEOAS-style pagination using next links.

For this pagination type, all URLs need to have the same base_url configured. if the configured base_url is https://my-api.com/data then all next page urls must be at least https://my-api.com/data/_whatever

Parameters:

  • next_link_filter: mandatory (string) JQ filter to extract next page URL

  • next_link: mandatory (string) field which bears the next link URL

Use case: RESTful APIs following HATEOAS principles.

Hyper Media pagination example

Let's take the following configuration:

  • "next_link_filter": ".metadata.next_page"

  • "next_link": "next"

We will perform the following call:

  • GET https://my-api.com/data

// response example

{

"data": [

... // API data

],

"metadata": {

"next_page": "https://my-api.com/data/next/page/2?auth_token=4321"

}

}

  • GET https://my-api.com/data/next/page/2?auth_token=4321

Until the next page URL is null

Example of connection to Open Data Paris

Setting up the connection to Open Data Paris

name: open-data-paris
baseroute: https://opendata.paris.fr/api/

Selecting data from Open Data Paris

Dataset: books
Method: GET
URL: records/1.0/search/
Dataset: les-1000-titres-les-plus-reserves-dans-les-bibliotheques-de-pret
Facet: auteur
Filter: .records[].fields

The JSON response looks like this:

json   {     "nhits": 1000,     "parameters": { ... },     "records": [       {         "datasetid": "les-1000-titres-les-plus-reserves-dans-les-bibliotheques-de-pret",         "recordid": "4b950c1ac5459379633d74ed2ef7f1c7f5cc3a10",         "fields": {           "nombre_de_reservations": 1094,           "url_de_la_fiche_de_l_oeuvre": "https://bibliotheques.paris.fr/Default/doc/SYRACUSE/1009613",           "url_de_la_fiche_de_l_auteur": "https://bibliotheques.paris.fr/Default/doc/SYRACUSE/1009613",           "support": "indรฉterminรฉ",           "auteur": "Enders, Giulia",           "titre": "Le charme discret de l'intestin [Texte imprimรฉ] : tout sur un organe mal aimรฉ"         },         "record_timestamp": "2017-01-26T11:17:33+00:00"       },       {         "datasetid":"les-1000-titres-les-plus-reserves-dans-les-bibliotheques-de-pret",         "recordid":"3df76bd20ab5dc902d0c8e5219dbefe9319c5eef",         "fields":{           "nombre_de_reservations":746,           "url_de_la_fiche_de_l_oeuvre":"https://bibliotheques.paris.fr/Default/doc/SYRACUSE/1016593",           "url_de_la_fiche_de_l_auteur":"https://bibliotheques.paris.fr/Default/doc/SYRACUSE/1016593",           "support":"Bande dessinรฉe pour adulte",           "auteur":"Sattouf, Riad",           "titre":"L'Arabe du futur [Texte imprimรฉ]. 2. Une jeunesse au Moyen-Orient, 1984-1985"         },         "record_timestamp":"2017-01-26T11:17:33+00:00"       },       ...     ]   }

We apply the filter .records[].fields which means that for every entry in the records property, it will extract all the properties of the fields object. So we end up with a table of results looking like this (Iโ€™m skipping columns in this example, but you see the point):

nombre_de_reservations
auteur
skipped columnsโ€ฆ

1094

Enders, Giulia

โ€ฆ

746

Sattouf, Riad

โ€ฆ

Note: the reason to have a filter option is to allow you to take any API response and transform it into something that fits into a column-based data frame. jq is designed to be concise and easy for simple tasks, but if you dig a little deeper, youโ€™ll find a feature functional programming language hiding underneath.

Performance If the HTTP API connector is used in a live context, make sure that the API is performant enough and is able to retrieve data fast. In order to have suitable performance, make sure to retrieve a limited amount of data since its need additional transformation in order to unnest the data (in the case of json response).

positional arguments: enter one by one (in the right order), the URL to access to the authentication endpoint (e.g. ), the โ€œclient_IDโ€ (sometimes named โ€œclient_keyโ€) and the โ€œclient_secretโ€. These informations are provided by the service you are trying to access

We have added a dedicated section to manage OAuth 2.0 authentication for REST APIs. This authentication method enables users to authenticate with a third-party service (an OAuth 2.0 provider). Upon request from our backend, the provider issues a token with a specific scope. This token is then used in the Authorization header with the Bearer scheme to authenticate and access your data on the API. For more detailed information, please refer to the .

Google as an requires other parameters, to access to Google API that requires OAuth2.0 as a mean of authentication you will have to fill the Additional authentication params with the following json

url: The APIโ€™s endpoint you want to query, it will be appended to the baseroute URL defined in the connector โš ๏ธ as it cannot be empty in the case when the API doesnโ€™t have endpoint, you can split the baseroute url defined in the connector and put the last part in the datasource. Ex: in connector and /v1 in datasource

xpath: If the reply from the API contains XML data you can parse it with an xpath string. See documentation: Example:

filter: String containing a jq filter applied to the data to get them in tabular format. See documentation: Example:

After selecting data from your connector you will be able to create a dataset thanks to using the selection as "source step".

๐Ÿ“ก
๐Ÿ”Œ
๐Ÿ”Œ
๐Ÿ”Œ
๐Ÿ”Œ
requests
jq
xpath
https://login.mywebsite.com/oauth2/token
OAuth2.0 standards
https://api-{{my-workspace}}.toucantoco.guru/{{my-app}}/connectors/http/authentication/redirect
OAuth2.0 provider
https://example.com/API
xpath
jq
YouPrep