@kudobuzz/reviews-schema v2.3.6
Overview
Exposes apis to:
- Validate any type of review accepted by Kudobuzz. This includes Yelp, Facebook, and Google+ reviews, etc
- Transform any type of external review to a Kudobuzz review
Installation
npm install @kudobuzz/reviews-schema
Usage
Validating External Reviews
Supported platforms - facebook
, google
, yelp
, etsy
const {validate} = require('@kudobuzz/reviews-schema')
const reviews = validate(transformedReviews)
Transforming Reviews
Supported platforms - facebook
'use strict'
const {transformToKudobuzzReview} = require('@kudobuzz/reviews-schema')
transformToKudobuzzReview(review)
See [Facebook transformer example]('example/transformers/facebook.js') for Facebook post, comment and rating
transformation example
(WIP) Review Schema
Below is the general schema that external reviews should conform to before they are saved
{ external_id: String, external_parent_id: String, external_link: url external_unique_id:String, thirdparty_account:{ external_id : String, name: String, platform: String, 'facebook', 'twitter', 'instagram', 'yelp', sub_account:{ external_id: String, name: String, handle: String, } }, platform: String // 'facebook', 'instagram', 'twitter', 'kudobuzz', 'google', 'yelp', 'import’ source:String // 'facebook_post', 'facebook_comment', 'facebook_review', 'instagram_post', 'instagram_comment', 'twitter', 'twitter_favourite', 'twitter_mention', 'custom', 'widget', 'apm', 'sharePage', 'yelp', 'google', 'import', title: String, message: String, rating: Number, images: { thumbnail: String, standard: String, original: String }, reviewer: { external_reviewer_id:String, channel: 'email', 'facebook', 'twitter', 'instagram', 'linkedin', 'yahoo', 'google', 'yelp' display_name:String, first_name:String, last_name:String, email:String, profile_url:String, }, created_at_platform: Date, updated_at_platform: Date }
Validation Terms
value | Description |
---|---|
not-needed | This means they are and excepted field in the overall schema but not needed for a specific external review |
date | Date and required |
string | String and required |
optional | Optional |
Facebook post
field | Validation | Description |
---|---|---|
external_id | string | This should be the post id |
external_link | url | This url links back to the post |
rating | not-needed | None. A post does not have any rating |
external_unique_id | not-needed | A post doesnot need an external_unique_id |
message | string, optional. Some post dont come with messages but images | The post message |
created_at_platform | date in seconds | The time the post was created on the platform |
updated_at_platform | date in seconds | The time the post was updated on the platform |
title | string and optional | The title of the post |
images | array of Objects. It can any of the following thumbnail, original and standard | The images attached to a post |
platform | ||
source | facebook_post | |
reviewer.email | not-needed | This would have been cool but we cannot get the email of the person that made the post.Not yet |
reviewer.display_name | string | The reviewers name |
reviewer.last_name | not-needed | The reviewers last_name |
reviewer.first_name | not-needed | The reviewers first name |
reviewer.email | not-needed | The reviewers email |
reviewer.external_reviewer_id | String | The reviewers id |
thirdparty_account.external_id | not needed | The account id of the post |
thirdparty_account.name | not-needed | The name of the page |
thirdparty_account.platform | String | |
thirdparty_account.sub_account.external_id | String | The id of the page |
thirdparty_account.sub_account.name | not-needed | The id of the page |
thirdparty_account.sub_account.handle | not-needed | The id of the page |
Facebook comment
field | Validation | Description |
---|---|---|
external_id | string | This should be the post id |
external_link | url | This url links back to the post |
external_parent_id | string | This should be the parent comment id |
rating | not-needed | None. A comment does not have any rating |
external_unique_id | not-needed | A comment doesnot need an external_unique_id |
message | string, optional. Some post dont come with messages but images | The post message |
created_at_platform | date in seconds | The time the comment was created on the platform |
updated_at_platform | date in seconds | The time the comment was updated on the platform |
title | string and optional | The title of the comment |
images | array of Objects. It can any of the following thumbnail, original and standard | The images attached to a post |
platform | ||
source | facebook_comment | |
reviewer.email | not-needed | This would have been cool but we cannot get the email of the person that made the post.Not yet |
reviewer.display_name | string | The reviewers name |
reviewer.last_name | not-needed | The reviewers last_name |
reviewer.first_name | not-needed | The reviewers first name |
reviewer.email | not-needed | The reviewers email |
reviewer.external_reviewer_id | String | The reviewers id |
thirdparty_account.external_id | not needed | The account id of the post |
thirdparty_account.name | not-needed | The name of the page |
thirdparty_account.platform | String | |
thirdparty_account.sub_account.external_id | String | The id of the page |
thirdparty_account.sub_account.name | not-needed | The id of the page |
thirdparty_account.sub_account.handle | not-needed | The id of the page |
facebook review
field | Validation | Description |
---|---|---|
external_id | string | This should be the post id |
external_link | url | This url links back to the post |
rating | Number | Rating should be between 1 to 5 only |
external_unique_id | not-needed | A post doesnot need an external_unique_id |
message | string | The review message |
created_at_platform | date in seconds | The time the review was created on the platform |
updated_at_platform | date in seconds | The time the review was updated on the platform |
title | string and optional | The title of the post |
images | array of Objects. It can have any of the following thumbnail, original and standard | The images attached to a post |
platform | ||
source | facebook_review | |
reviewer.email | not-needed | This would have been cool but we cannot get the email of the person that made the post.Not yet |
reviewer.display_name | string | The reviewers name |
reviewer.last_name | not-needed | The reviewers last_name |
reviewer.first_name | not-needed | The reviewers first name |
reviewer.email | not-needed | The reviewers email |
reviewer.external_reviewer_id | String | The reviewers id |
thirdparty_account.external_id | not needed | The account id of the post |
thirdparty_account.name | not-needed | The name of the page |
thirdparty_account.platform | String | |
thirdparty_account.sub_account.external_id | String | The id of the page |
thirdparty_account.sub_account.name | not-needed | The id of the page |
thirdparty_account.sub_account.handle | not-needed | The id of the page |
yelp
field | Validation | Description |
---|---|---|
external_id | string | This is an internally generated ID |
external_link | url | This is the Yelp page url |
rating | Number | Rating should be between 1 to 5 only |
message | string | The review message |
created_at_platform | date in seconds | The time the review was created on the platform |
updated_at_platform | date in seconds | The time the review was updated on the platform |
images | array of Objects. It can have any of the following thumbnail, original and standard | The images attached to a post |
platform | yelp | |
source | yelp | |
reviewer.display_name | string | The reviewer's name |
reviewer.external_reviewer_id | String | The reviewer's id |
reviewer.image.profile_url | String | The reviewer's image url |
thirdparty_account.external_id | url | This is the Yelp page url |
thirdparty_account.platform | String | yelp |
field | Validation | Description | |
---|---|---|---|
external_id | string | This is an internally generated ID | |
external_link | url | This is a unique url to find that specific review | |
rating | Number, optional | Rating should be between 1 to 5 only | |
message | string, optinal | The review message | |
created_at_platform | date in seconds | The time the review was created on the platform | |
updated_at_platform | date in seconds | The time the review was updated on the platform. If we dont know the recent update we can use the craeted date to replace this | |
images | array of Objects,optional | It can have any of the following thumbnail, original and standard | The images attached to a post |
platform | |||
source | google_review | ||
reviewer.display_name | string, optional | The reviewer's name | |
reviewer.external_reviewer_id | String | The reviewer's id | |
reviewer.profile_url | String | A link to the profile url of the reviewer | |
reviewer.image.profile_url | String | Image link to reviewer | |
reviewer.channel | |||
thirdparty_acccount.google_places_id | url,optional | ||
thirdparty_account.external_id | url | Sample google maps url. eg https://www.google.com/maps/place/Sky+Bar+25/@5.5937815,-0.22513,13z/data=!4m8!1m2!2m1!1sRestaurants!3m4!1s0xfdf9b0dedfd9c33:0x5631471f9ad654e7!8m2!3d5.619905!4d-0.18044?hl=en-GH | |
thirdparty_account.platform | String |
Etsy
field | Validation | Description | |
---|---|---|---|
external_id | string | This is an internally generated ID | |
external_link | url | This is a unique url to etsy.eg. https://www.etsy.com/shop/lolka/reviews?page=3. If we can find a unique url for the review that will be ok | |
rating | Number, optional | Rating should be between 1 to 5 only | |
message | string, optinal | The review message | |
created_at_platform | date in seconds | The time the review was created on the platform | |
updated_at_platform | date in seconds | The time the review was updated on the platform. If we dont know the recent update we can use the craeted date to replace this | |
images | array of Objects,optional | It can have any of the following thumbnail, original and standard | The images attached to a post |
platform | etsy | ||
source | etsy_review | ||
reviewer.display_name | string, optional | The reviewer's name | |
reviewer.external_reviewer_id | String | The reviewer's id | |
reviewer.profile_url | String | A link to the profile url of the reviewer | |
reviewer.image.profile_url | String | Image link to reviewer | |
reviewer.channel | etsy | ||
thirdparty_account.external_id | url | Sample google maps url. eg https://www.etsy.com/shop/lolka/reviews | |
thirdparty_account.platform | String |
Amazon
field | Validation | Description | |
---|---|---|---|
external_id | string | This is an internally generated ID | |
external_link | url | This is a unique url to amazon.eg. https://www.amazon.com/WinSpin-Tabletop-Spinning-Prize-Fortune/product-reviews/B00OZH6EPO/ref=cm_cr_getr_d_paging_btm_2?ie=UTF8&reviewerType=all_reviews&sortBy=recent&filterByStar=all_stars&pageNumber=2#R3J4K2F5ZJLYG0 | |
rating | Number, optional | Rating should be between 1 to 5 only | |
message | string, optinal | The review message | |
created_at_platform | date in seconds | The time the review was created on the platform | |
updated_at_platform | date in seconds | The time the review was updated on the platform. If we dont know the recent update we can use the craeted date to replace this | |
images | array of Objects,optional | It can have any of the following thumbnail, original and standard | The images attached to a post |
platform | amazon | ||
source | amazon_review | ||
reviewer.display_name | string, optional | The reviewer's name | |
reviewer.external_reviewer_id | String | The reviewer's id | |
reviewer.profile_url | String | A link to the profile url of the reviewer | |
reviewer.image.profile_url | String | Image link to reviewer | |
reviewer.channel | amazon | ||
thirdparty_account.external_id | url | Sample amazon product url with reviews. eg https://www.amazon.com/WinSpin-Tabletop-Spinning-Prize-Fortune/dp/B00OZH6EPO/ref=cm_cr_arp_d_product_top?ie=UTF8 | |
thirdparty_account.platform | String | amazon |
10 months ago
10 months ago
6 months ago
10 months ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago