The Dynamic Product Feed API is an incredibly flexible and powerful integration mechanism to connect your product database to your Jebbit experience.
Overview
This API allows you to programmatically manage your product feeds. Once you have generated a JSON Web Token (JWT), you can interact with the Dynamic Product Feed (DPF) API. Your DPF API credentials are tied to your Jebbit account, and any experiences within that account can use a feed created via the API.
Key actions you can perform include:
Creating a feed
Checking available fields
Adding custom columns
Adding product rows
Authentication
Like the general Jebbit Integrations API, interactions with the Dynamic Product Feed API require a valid access token obtained from Auth0. You need your account's Auth0 API client_id and client_secret from your Jebbit Customer Success Representative to generate this token. The process involves making a POST request to https://auth.jebbit.com/oauth/token with the client_id, client_secret, audience ("public-api"), and grant_type ("client_credentials") parameters. Generated tokens are valid for 24 hours and can be reused during this time.
All subsequent API requests must include your API key (JWT) in the header in the format Authorization: Bearer YOUR.JWT.HERE.
Using the Dynamic Product Feed API
After generating your JWT, you can interact with the API by making specific HTTP requests. Note that the examples in the source use a staging endpoint; ensure you use the production endpoint for your actual implementation.
Create a Feed: Make a POST request to /api/v1/feeds/. Include your Jebbit account ID in the x-jebbit-business header and the desired feed name in the request body.
Example HTTP Request
POST /api/v1/feeds/ HTTP/1.1 Host: api.jebbx.com Authorization: Bearer <YOUR JWT> x-jebbit-business: bTUIhsye Content-Type: application/vnd.api+json Content-Length: 67{"data":{"type":"feeds","attributes":{"name":"Jebbit Test Feed"}}}
*Note: Example is using the staging endpoint. Please use the production endpoint as detailed in our API documentation here.
Example Response
{ "data": { "id": "3PGSedLJ", "type": "feeds", "attributes": { "name": "Jebbit Test Feed", "version": "1660014811", "active_version": null, "created_at": "2022-08-09T03:13:31.100Z", "updated_at": "2022-08-09T03:13:31.100Z", "item_count": 0, "status": "created", "source": "API" } } }
We have now created our "Jebbit Test Feed" product feed. The response will also contain the ID of your newly created feed (in this case the ID is 3PGSedLJ), which you will need to use in your subsequent API calls for adding elements to the feed.
Check Available Fields: Make a GET request to /api/v1/feeds/{feed_id}/feed_columns/. Use the feed ID obtained from the creation step in the request URL and include your Jebbit business ID in the x-jebbit-business header.
Example HTTP Request
GET /api/v1/feeds/3PGSedLJ/feed_columns/ HTTP/1.1 Host: api.jebbx.com Authorization: Bearer <YOUR JWT> x-jebbit-business: bTUIhsye
*Note: Example is using the staging endpoint. Please use the production endpoint as detailed in our API documentation here.
Example Response
{ "data": [ { "id": "4WG0uSWw", "type": "feed_columns", "attributes": { "name": "price", "created_at": "2022-08-09T03:13:31.108Z", "updated_at": "2022-08-09T03:13:31.108Z", "feed_id": "3PGSedLJ" }, "relationships": { "feed": { "links": { "self": "https://api.jebbx.com/client_api/feed_columns/4WG0uSWw/relationships/feed", "related": "https://api.jebbx.com/client_api/feed_columns/4WG0uSWw/feed" } } } }, { "id": "bTzSj6Lz", "type": "feed_columns", "attributes": { "name": "redirect_url", "created_at": "2022-08-09T03:13:31.108Z", "updated_at": "2022-08-09T03:13:31.108Z", "feed_id": "3PGSedLJ" }, "relationships": { "feed": { "links": { "self": "https://api.jebbx.com/client_api/feed_columns/bTzSj6Lz/relationships/feed", "related": "https://api.jebbx.com/client_api/feed_columns/bTzSj6Lz/feed" } } } }, { "id": "cfXISTJN", "type": "feed_columns", "attributes": { "name": "availability", "created_at": "2022-08-09T03:13:31.108Z", "updated_at": "2022-08-09T03:13:31.108Z", "feed_id": "3PGSedLJ" }, "relationships": { "feed": { "links": { "self": "https://api.jebbx.com/client_api/feed_columns/cfXISTJN/relationships/feed", "related": "https://api.jebbx.com/client_api/feed_columns/cfXISTJN/feed" } } } }, { "id": "g8kqvLPd", "type": "feed_columns", "attributes": { "name": "category", "created_at": "2022-08-09T03:13:31.108Z", "updated_at": "2022-08-09T03:13:31.108Z", "feed_id": "3PGSedLJ" }, "relationships": { "feed": { "links": { "self": "https://api.jebbx.com/client_api/feed_columns/g8kqvLPd/relationships/feed", "related": "https://api.jebbx.com/client_api/feed_columns/g8kqvLPd/feed" } } } }, { "id": "RUcDUDPT", "type": "feed_columns", "attributes": { "name": "description", "created_at": "2022-08-09T03:13:31.108Z", "updated_at": "2022-08-09T03:13:31.108Z", "feed_id": "3PGSedLJ" }, "relationships": { "feed": { "links": { "self": "https://api.jebbx.com/client_api/feed_columns/RUcDUDPT/relationships/feed", "related": "https://api.jebbx.com/client_api/feed_columns/RUcDUDPT/feed" } } } }, { "id": "VuRWG2TC", "type": "feed_columns", "attributes": { "name": "title", "created_at": "2022-08-09T03:13:31.108Z", "updated_at": "2022-08-09T03:13:31.108Z", "feed_id": "3PGSedLJ" }, "relationships": { "feed": { "links": { "self": "https://api.jebbx.com/client_api/feed_columns/VuRWG2TC/relationships/feed", "related": "https://api.jebbx.com/client_api/feed_columns/VuRWG2TC/feed" } } } }, { "id": "vuT8hppX", "type": "feed_columns", "attributes": { "name": "image_url", "created_at": "2022-08-09T03:13:31.108Z", "updated_at": "2022-08-09T03:13:31.108Z", "feed_id": "3PGSedLJ" }, "relationships": { "feed": { "links": { "self": "https://api.jebbx.com/client_api/feed_columns/vuT8hppX/relationships/feed", "related": "https://api.jebbx.com/client_api/feed_columns/vuT8hppX/feed" } } } }, { "id": "YVcbNB21", "type": "feed_columns", "attributes": { "name": "brand", "created_at": "2022-08-09T03:13:31.108Z", "updated_at": "2022-08-09T03:13:31.108Z", "feed_id": "3PGSedLJ" }, "relationships": { "feed": { "links": { "self": "https://api.jebbx.com/client_api/feed_columns/YVcbNB21/relationships/feed", "related": "https://api.jebbx.com/client_api/feed_columns/YVcbNB21/feed" } } } } ] }
You can now see the default feed fields that you can populate with product information.
Add Custom Columns: You can add as many custom columns to the feed as you'd like. To create a column, make a POST request to /api/v1/feed_columns. Include your Jebbit business ID in the x-jebbit-business header and the desired column name and the feed ID in the request body.
Example HTTP Request
POST /api/v1/feed_columns HTTP/1.1 Host: api.jebbx.com Authorization: Bearer <YOUR JWT> x-jebbit-business: bTUIhsye content-type: application/vnd.api+json Content-Length: 93{"data":{"type":"feed_columns","attributes":{"name":"New Feed Column","feed_id":"3PGSedLJ"}}}
*Note: Example is using the staging endpoint. Please use the production endpoint as detailed in our API documentation here.
Example Response
{ "data": { "id": "QIelyJVC", "type": "feed_columns", "attributes": { "name": "New Feed Column", "created_at": "2022-08-09T03:31:11.154Z", "updated_at": "2022-08-09T03:31:11.154Z", "feed_id": "3PGSedLJ" }, "relationships": { "feed": { "links": { "self": "https://api.jebbx.com/client_api/feed_columns/QIelyJVC/relationships/feed", "related": "https://api.jebbx.com/client_api/feed_columns/QIelyJVC/feed" } } } } }
Add a Product Row: To add a product to the feed (which corresponds to a row), make a POST request to /api/v1/feed_rows. Include your Jebbit business ID in the x-jebbit-business header and the product data (including a product_identifier and the feed ID) in the request body.
Example HTTP Request
POST /api/v1/feed_rows HTTP/1.1 Host: api.jebbx.com Authorization: Bearer <YOUR JWT> x-jebbit-business: bTUIhsye content-type: application/vnd.api+json Content-Length: 366{"data":{"type":"feed_rows","attributes":{"product_identifier":"1","feed_id":"3PGSedLJ","data":"{\"title\":\"Sample Product\",\"description\":\"A really good product\",\"price\":10,\"redirect_url\":\"https://google.com\",\"image_url\":\"https://google.com/icon.png\",\"brand\":\"Sample Brand\",\"category\":\"Mens Clothing\",\"New Feed Column\":\"Sample Value\"}"}}}
*Note: Example is using the staging endpoint. Please use the production endpoint as detailed in our API documentation here.
Example Response
{ "data": { "id": "I1QfH6nH", "type": "feed_rows", "attributes": { "created_at": "2022-08-09T03:36:58.571Z", "updated_at": "2022-08-09T03:36:58.571Z", "feed_id": "3PGSedLJ", "product_identifier": "1", "data": { "brand": "Sample Brand", "price": 10, "title": "Sample Product", "category": "Mens Clothing", "image_url": "https://google.com/icon.png", "description": "A really good product", "redirect_url": "https://google.com", "New Feed Column": "Sample Value" } }, "relationships": { "feed": { "links": { "self": "https://api.jebbx.com/client_api/feed_rows/I1QfH6nH/relationships/feed", "related": "https://api.jebbx.com/client_api/feed_rows/I1QfH6nH/feed" } } } } }
We have successfully added a product to the feed with all standard columns filled out as well as our custom column. The Jebbit experiences within your account can access this product feed and associated products.
By following these steps using the Dynamic Product Feed API, you can automate the process of populating and managing your product feeds within Experiences by Jebbit.